mirror of
https://github.com/smogon/pokemon-showdown-client.git
synced 2026-10-01 15:22:35 -05:00
Add teambuilder support for Metronome Battle (#1443)
This commit is contained in:
@@ -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':
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user