Add teambuilder support for Metronome Battle (#1443)

This commit is contained in:
Kris Johnson
2020-02-19 17:11:50 -07:00
committed by GitHub
parent 9d561a987a
commit ad5b8abd2e
2 changed files with 53 additions and 6 deletions

View File

@@ -286,8 +286,9 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
let buf = '// DO NOT EDIT - automatically built with build-tools/build-indexes\n\n';
// process.stdout.write("\n ");
for (const genIdent of [8.1, 8, -8, 7.1, 7, -7.5, -7, 6, -6, 5, -5, 4, -4, 3, 2, 1]) {
for (const genIdent of [8.2, 8.1, 8, -8, 7.1, 7, -7.5, -7, 6, -6, 5, -5, 4, -4, 3, 2, 1]) {
const isLetsGo = (genIdent === 7.1);
const isMetBattle = (genIdent === 8.2);
const isNatDex = (genIdent === 8.1);
const isDoubles = (genIdent < 0);
const isVGC = (genIdent === -7.5);
@@ -304,9 +305,6 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
const template = Dex.mod(gen).getTemplate(id);
if (template.gen > genNum) continue;
const tier = (() => {
if (template.tier === 'CAP' || template.tier === 'CAP NFE' || template.tier === 'CAP LC') {
return template.tier;
}
if (isNatDex) {
let tier = template.tier;
if (template.tier === 'Illegal' || template.isNonstandard === 'Past' || template.isUnreleased === 'Past') tier = Dex.mod('gen7').getTemplate(template.species).tier;
@@ -318,6 +316,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
['Zygarde-Complete', 'Necrozma-Ultra'].includes(template.species)
) {
tier = 'Uber';
if (template.species === 'Eternatus-Eternamax') tier = 'Illegal';
return tier;
} else if (tier === 'Uber' && !template.isGigantamax) { // This check is for Pokemon tiered as Uber but aren't in the banlist for National Dex
tier = 'OU';
@@ -327,6 +326,35 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
if (template.isGigantamax) tier = 'Uber';
return tier;
}
if (isMetBattle) {
let tier = template.tier;
if (template.isNonstandard) {
if (template.isNonstandard === 'Past') {
tier = Dex.mod('gen7').getTemplate(template.species).tier;
} else {
tier = 'OU';
}
}
if (template.tier === 'CAP LC') tier = 'LC';
if (template.tier === 'CAP NFE') tier = 'NFE';
if (template.tier === 'CAP') tier = 'OU';
if (template.isUnreleased) {
if (template.isUnreleased === 'Past') {
tier = Dex.mod('gen7').getTemplate(template.species).tier;
} else {
tier = 'Unreleased';
}
}
let banlist = Dex.getFormat('gen8metronomebattle').banlist;
let bst = 0;
for (const stat of Object.values(template.baseStats)) {
bst += stat;
}
if (bst > 625) tier = 'Illegal';
if (banlist.includes(template.species) || banlist.includes(template.species + '-Base')) tier = 'Illegal';
if (template.types.includes('Steel')) tier = 'Illegal';
return tier;
}
if (isLetsGo) {
let baseTemplate = Dex.mod(gen).getTemplate(template.baseSpecies);
let validNum = (baseTemplate.num <= 151 && baseTemplate.num >= 1) || [808, 809].includes(baseTemplate.num);
@@ -346,6 +374,9 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
}
return 'Regular';
}
if (template.tier === 'CAP' || template.tier === 'CAP NFE' || template.tier === 'CAP LC') {
return template.tier;
}
if (isDoubles) {
return template.doublesTier;
}
@@ -430,6 +461,11 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
BattleTeambuilderTable['natdex'].tiers = tiers;
BattleTeambuilderTable['natdex'].items = items;
BattleTeambuilderTable['natdex'].formatSlices = formatSlices;
} else if (isMetBattle) {
BattleTeambuilderTable['metronome'] = {};
BattleTeambuilderTable['metronome'].tiers = tiers;
BattleTeambuilderTable['metronome'].items = items;
BattleTeambuilderTable['metronome'].formatSlices = formatSlices;
} else if (isLetsGo) {
BattleTeambuilderTable['letsgo'] = {};
BattleTeambuilderTable['letsgo'].learnsets = {};
@@ -536,7 +572,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
if (item.gen > genNum) {
continue;
}
if (item.isNonstandard) {
if (item.isNonstandard && !isMetBattle) {
if (isNatDex) {
if (item.isNonstandard !== "Past") continue;
if (!item.itemUser && !item.zMove) continue;
@@ -544,6 +580,10 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
continue;
}
}
if (isMetBattle) {
const banlist = Dex.getFormat('gen8metronomebattle').banlist;
if (banlist.includes(item.name)) continue;
}
switch (id) {
case 'leftovers':
case 'lifeorb':

View File

@@ -807,6 +807,8 @@
this.mod = 'natdex';
if (!format) format = 'ou';
}
var isMetBattle = format.includes('metronome');
if (isMetBattle) this.mod = 'natdex';
var requirePentagon = (format === 'battlespotsingles' || format === 'battledoubles' || format.slice(0, 3) === 'vgc');
var requireGalar = (format.indexOf('battlestadium') >= 0 || (format.slice(0, 3) === 'vgc' && this.gen === 8));
var template;
@@ -835,6 +837,8 @@
table = table['letsgo'];
} else if (isNatDex) {
table = table['natdex'];
} else if (isMetBattle) {
table = table['metronome'];
}
if (!table.tierSet) {
@@ -904,6 +908,8 @@
table = table['gen' + this.gen];
} else if (isNatDex) {
table = table['natdex'];
} else if (isMetBattle) {
table = table['metronome'];
}
if (!table.itemSet) {
@@ -935,7 +941,7 @@
abilitySet.push(['header', "Special Event Ability"]);
abilitySet.push(['ability', toID(template.abilities['S'])]);
}
if (format === 'almostanyability' || isBH) {
if (format === 'almostanyability' || isBH || isMetBattle) {
template = Dex.getTemplate(set.species);
var abilities = [];
if (template.isMega) {
@@ -1001,6 +1007,7 @@
}
learnsetid = this.nextLearnsetid(learnsetid, template.id);
}
if (isMetBattle) moves = ['metronome'];
if (sketch || isBH) {
if (isBH) moves = [];
for (var i in BattleMovedex) {