{ "version": 3, "sources": ["../../../../../data/mods/gen2/rulesets.ts"], "sourcesContent": ["export const Rulesets: {[k: string]: ModdedFormatData} = {\r\n\tobtainablemoves: {\r\n\t\tinherit: true,\r\n\t\tbanlist: [\r\n\t\t\t// https://www.smogon.com/forums/threads/implementing-all-old-gens-in-ps-testers-required.3483261/post-5420130\r\n\t\t\t// confirmed by Marty\r\n\t\t\t'Kakuna + Poison Sting + Harden', 'Kakuna + String Shot + Harden',\r\n\t\t\t'Beedrill + Poison Sting + Harden', 'Beedrill + String Shot + Harden',\r\n\r\n\t\t\t// https://www.smogon.com/forums/threads/rby-and-gsc-illegal-movesets.78638/\r\n\t\t\t'Nidoking + Fury Attack + Thrash',\r\n\t\t\t'Exeggutor + Poison Powder + Stomp', 'Exeggutor + Sleep Powder + Stomp', 'Exeggutor + Stun Spore + Stomp',\r\n\t\t\t'Eevee + Tackle + Growl',\r\n\t\t\t'Vaporeon + Tackle + Growl',\r\n\t\t\t'Jolteon + Tackle + Growl', 'Jolteon + Focus Energy + Thunder Shock',\r\n\t\t\t'Flareon + Tackle + Growl', 'Flareon + Focus Energy + Ember',\r\n\r\n\t\t\t// https://github.com/smogon/pokemon-showdown/pull/8869\r\n\t\t\t'Rapidash + Pay Day + Growl',\r\n\t\t\t'Rapidash + Pay Day + Tail Whip',\r\n\t\t\t'Fearow + Pay Day + Peck',\r\n\t\t\t'Fearow + Pay Day + Mirror Move',\r\n\t\t\t'Magikarp + Dragon Rage + Tackle',\r\n\t\t],\r\n\t},\r\n\tstandard: {\r\n\t\teffectType: 'ValidatorRule',\r\n\t\tname: 'Standard',\r\n\t\truleset: ['Obtainable', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Species Clause', 'OHKO Clause', 'Evasion Items Clause', 'Evasion Moves Clause', 'Endless battle Clause', 'HP Percentage Mod', 'Cancel Mod'],\r\n\t\tbanlist: [\r\n\t\t\t'Hypnosis + Mean Look',\r\n\t\t\t'Hypnosis + Spider Web',\r\n\t\t\t'Lovely Kiss + Mean Look',\r\n\t\t\t'Lovely Kiss + Spider Web',\r\n\t\t\t'Sing + Mean Look',\r\n\t\t\t'Sing + Spider Web',\r\n\t\t\t'Sleep Powder + Mean Look',\r\n\t\t\t'Sleep Powder + Spider Web',\r\n\t\t\t'Spore + Mean Look',\r\n\t\t\t'Spore + Spider Web',\r\n\t\t],\r\n\t},\r\n\tnintendocup2000movelegality: {\r\n\t\teffectType: 'ValidatorRule',\r\n\t\tname: 'Nintendo Cup 2000 Move Legality',\r\n\t\tdesc: \"Prevents Pok\\u00e9mon from having moves that would only be obtainable in Pok\\u00e9mon Crystal.\",\r\n\t\tonValidateSet(set) {\r\n\t\t\tconst illegalCombos: {[speciesid: string]: {[moveid: string]: 'E' | 'L' | 'S'}} = {\r\n\t\t\t\tarbok: {crunch: 'E'},\r\n\t\t\t\tsandslash: {metalclaw: 'E'},\r\n\t\t\t\tgolduck: {crosschop: 'E'},\r\n\t\t\t\tmarowak: {swordsdance: 'E'},\r\n\t\t\t\telectabuzz: {crosschop: 'E'},\r\n\t\t\t\tmagmar: {crosschop: 'E'},\r\n\t\t\t\tjolteon: {batonpass: 'L'},\r\n\t\t\t\tvaporeon: {batonpass: 'L'},\r\n\t\t\t\tflareon: {batonpass: 'L'},\r\n\t\t\t\tespeon: {batonpass: 'L'},\r\n\t\t\t\tumbreon: {batonpass: 'L'},\r\n\t\t\t\tdragonite: {extremespeed: 'S'},\r\n\t\t\t\tmeganium: {swordsdance: 'E'},\r\n\t\t\t\ttyphlosion: {submission: 'E'},\r\n\t\t\t\tariados: {agility: 'L'},\r\n\t\t\t\tyanma: {wingattack: 'L'},\r\n\t\t\t\tmurkrow: {skyattack: 'E'},\r\n\t\t\t\tqwilfish: {spikes: 'L'},\r\n\t\t\t\tsneasel: {metalclaw: 'L'},\r\n\t\t\t\tursaring: {metalclaw: 'E'},\r\n\t\t\t\tpiloswine: {amnesia: 'L'},\r\n\t\t\t\tskarmory: {skyattack: 'E'},\r\n\t\t\t\tdonphan: {watergun: 'E'},\r\n\t\t\t\tsuicune: {aurorabeam: 'L'},\r\n\t\t\t\tdugtrio: {triattack: 'L'},\r\n\t\t\t\tmagneton: {triattack: 'L'},\r\n\t\t\t\tcloyster: {spikes: 'L'},\r\n\t\t\t};\r\n\t\t\tconst notUsableAsTM = ['icebeam', 'flamethrower', 'thunderbolt'];\r\n\t\t\tconst species = this.dex.species.get(set.species || set.name);\r\n\t\t\tconst learnsetData = {...(this.dex.data.Learnsets[species.id]?.learnset || {})};\r\n\t\t\tconst legalityList = illegalCombos[species.id];\r\n\t\t\tconst problems = [];\r\n\t\t\tlet prevo = species.prevo;\r\n\t\t\twhile (prevo) {\r\n\t\t\t\tconst prevoSpecies = this.dex.species.get(prevo);\r\n\t\t\t\tconst prevoLsetData = this.dex.data.Learnsets[prevoSpecies.id]?.learnset || {};\r\n\t\t\t\tfor (const moveid in prevoLsetData) {\r\n\t\t\t\t\tif (!(moveid in learnsetData)) {\r\n\t\t\t\t\t\tlearnsetData[moveid] = prevoLsetData[moveid];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlearnsetData[moveid].push(...prevoLsetData[moveid]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tprevo = prevoSpecies.prevo;\r\n\t\t\t}\r\n\t\t\tfor (const moveid of set.moves.map(this.toID)) {\r\n\t\t\t\t// Diglett Magnemite Shellder\r\n\t\t\t\tif (!learnsetData[moveid]) continue;\r\n\t\t\t\tif (legalityList) {\r\n\t\t\t\t\tconst list = learnsetData[moveid].filter(x => !x.includes(legalityList[moveid]));\r\n\t\t\t\t\tif (!list.length) {\r\n\t\t\t\t\t\tswitch (legalityList[moveid]) {\r\n\t\t\t\t\t\tcase 'L':\r\n\t\t\t\t\t\t\t// Converted to a set to remove duplicate entries\r\n\t\t\t\t\t\t\tconst levels = new Set(learnsetData[moveid].filter(x => x.includes(legalityList[moveid])).map(x => x.slice(2)));\r\n\t\t\t\t\t\t\tproblems.push(\r\n\t\t\t\t\t\t\t\t`${species.name} can't learn ${this.dex.moves.get(moveid).name}.`,\r\n\t\t\t\t\t\t\t\t`(It learns ${this.dex.moves.get(moveid).name} in Pok\\u00e9mon Crystal at the following levels: ${[...levels].join(', ')})`\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'S':\r\n\t\t\t\t\t\t\tproblems.push(\r\n\t\t\t\t\t\t\t\t`${species.name} can't learn ${this.dex.moves.get(moveid).name}.`,\r\n\t\t\t\t\t\t\t\t`(It only learns ${this.dex.moves.get(moveid).name} in Pok\\u00e9mon Crystal via special in-game events.)`\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'E':\r\n\t\t\t\t\t\t\tproblems.push(\r\n\t\t\t\t\t\t\t\t`${species.name} can't learn ${this.dex.moves.get(moveid).name}.`,\r\n\t\t\t\t\t\t\t\t`(It only learns ${this.dex.moves.get(moveid).name} as an egg move in Pok\\u00e9mon Crystal.)`\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfor (const id of notUsableAsTM) {\r\n\t\t\t\t\tif (moveid === id && learnsetData[id] && !learnsetData[id].filter(x => !x.includes('2T')).length) {\r\n\t\t\t\t\t\tproblems.push(`${species.name} can't learn ${this.dex.moves.get(id).name}.`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (problems.some(x => notUsableAsTM.map(y => this.dex.moves.get(y).name).some(z => x.includes(z)))) {\r\n\t\t\t\tproblems.push(\r\n\t\t\t\t\t`(${notUsableAsTM.map(y => this.dex.moves.get(y).name).join(' / ')} aren't learnable outside of Pok\\u00e9mon Crystal.)`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn problems;\r\n\t\t},\r\n\t},\r\n};\r\n"], "mappings": "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", "names": [] }