diff --git a/config/formats.ts b/config/formats.ts index c8ba02592e..c43a77f988 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -142,6 +142,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen9', bestOfDefault: true, ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Limit Two Restricted'], + banlist: ['Raichu-Alola + Volt Tackle'], restricted: ['Restricted Legendary'], }, { @@ -150,6 +151,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, bestOfDefault: true, ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Limit Two Restricted'], + banlist: ['Raichu-Alola + Volt Tackle'], restricted: ['Restricted Legendary', 'Mythical'], }, { diff --git a/data/learnsets.ts b/data/learnsets.ts index 4beed5d48c..a7c4b8298c 100644 --- a/data/learnsets.ts +++ b/data/learnsets.ts @@ -2798,7 +2798,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { upperhand: ["9M"], uproar: ["8M"], voltswitch: ["9M", "8M", "7M"], - volttackle: ["8S1", "7T"], + volttackle: ["9R", "8S1", "7T"], wildcharge: ["9M", "8M", "7M", "7L50"], wish: ["8E"], }, @@ -2893,7 +2893,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { upperhand: ["9M"], uproar: ["8M"], voltswitch: ["9M", "8M", "7M"], - volttackle: ["8S1", "7T"], + volttackle: ["9R", "8S1", "7T"], wildcharge: ["9M", "8M", "7M", "7L50"], wish: ["8E"], }, @@ -2988,7 +2988,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { upperhand: ["9M"], uproar: ["8M"], voltswitch: ["9M", "8M", "7M"], - volttackle: ["8S1", "7T", "7S0"], + volttackle: ["9R", "8S1", "7T", "7S0"], wildcharge: ["9M", "8M", "7M", "7L50"], wish: ["8E"], }, @@ -3083,7 +3083,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { upperhand: ["9M"], uproar: ["8M"], voltswitch: ["9M", "8M", "7M"], - volttackle: ["8S1", "7T", "7S0"], + volttackle: ["9R", "8S1", "7T", "7S0"], wildcharge: ["9M", "8M", "7M", "7L50"], wish: ["8E"], }, @@ -3178,7 +3178,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { upperhand: ["9M"], uproar: ["8M"], voltswitch: ["9M", "8M", "7M"], - volttackle: ["8S1", "7T"], + volttackle: ["9R", "8S1", "7T"], wildcharge: ["9M", "8M", "7M", "7L50"], wish: ["8E"], }, @@ -3273,7 +3273,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { upperhand: ["9M"], uproar: ["8M"], voltswitch: ["9M", "8M", "7M"], - volttackle: ["8S1", "7T"], + volttackle: ["9R", "8S1", "7T"], wildcharge: ["9M", "8M", "7M", "7L50"], wish: ["8E"], }, @@ -3368,7 +3368,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { upperhand: ["9M"], uproar: ["8M"], voltswitch: ["9M", "8M", "7M"], - volttackle: ["8S1", "7T"], + volttackle: ["9R", "8S1", "7T"], wildcharge: ["9M", "8M", "7M", "7L50"], wish: ["8E"], }, diff --git a/sim/team-validator.ts b/sim/team-validator.ts index 02cea0039b..533a0636a0 100644 --- a/sim/team-validator.ts +++ b/sim/team-validator.ts @@ -2721,6 +2721,8 @@ export class TeamValidator { // available as long as the source gen was or was before this gen if (learned.charAt(1) === 'R') { moveSources.restrictedMove = moveid; + // Gen 9 is not the actual source for Volt Tackle on Cap Pikachu + if (learnedGen === 9 && species.baseSpecies === "Pikachu") continue; } limit1 = false; moveSources.addGen(learnedGen); @@ -2786,17 +2788,17 @@ export class TeamValidator { if (canUseHomeRelearner) { const fullSources = []; let learnsetData = this.getExternalLearnsetData(species.id, 'gen8bdsp'); - if (!['nincada', 'spinda'].includes(species.id) && learnsetData?.learnset?.[move.id]) { - fullSources.push(...learnsetData.learnset[move.id]); + if (!['nincada', 'spinda'].includes(species.id) && learnsetData?.learnset?.[moveid]) { + fullSources.push(...learnsetData.learnset[moveid]); } learnsetData = this.getExternalLearnsetData(species.id, 'gen8legends'); - if (learnsetData?.learnset?.[move.id]) { - fullSources.push(...learnsetData.learnset[move.id]); + if (baseSpecies.id !== 'raichualola' && learnsetData?.learnset?.[moveid]) { + fullSources.push(...learnsetData.learnset[moveid]); } for (const source of fullSources) { // Non-event sources from BDSP/LA should always be legal through HOME relearner, // assuming the Pokemon's level is high enough - if (source.charAt(1) === 'S') continue; + if ('RS'.includes(source.charAt(1))) continue; if (source.charAt(1) === 'L' && level < parseInt(source.substr(2))) continue; return null; } diff --git a/test/sim/team-validator/misc.js b/test/sim/team-validator/misc.js index 47abd892b1..2cd300e567 100644 --- a/test/sim/team-validator/misc.js +++ b/test/sim/team-validator/misc.js @@ -249,6 +249,7 @@ describe('Team Validator', () => { // Darkrai from Pokemon GO with Dream Eater learned via BDSP TM { species: 'darkrai', level: 15, ability: 'baddreams', moves: ['dreameater'], evs: { hp: 1 } }, { species: 'phione', level: 46, ability: 'hydration', moves: ['takeheart'], evs: { hp: 1 } }, + { species: 'raichualola', ability: 'surgesurfer', moves: ['volttackle'], evs: { hp: 1 } }, ]; assert.legalTeam(team, 'gen9ubers'); });