Spaces:
Paused
Paused
| ; | |
| var __defProp = Object.defineProperty; | |
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
| var __getOwnPropNames = Object.getOwnPropertyNames; | |
| var __hasOwnProp = Object.prototype.hasOwnProperty; | |
| var __export = (target, all) => { | |
| for (var name in all) | |
| __defProp(target, name, { get: all[name], enumerable: true }); | |
| }; | |
| var __copyProps = (to, from, except, desc) => { | |
| if (from && typeof from === "object" || typeof from === "function") { | |
| for (let key of __getOwnPropNames(from)) | |
| if (!__hasOwnProp.call(to, key) && key !== except) | |
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
| } | |
| return to; | |
| }; | |
| var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |
| var rulesets_exports = {}; | |
| __export(rulesets_exports, { | |
| Rulesets: () => Rulesets | |
| }); | |
| module.exports = __toCommonJS(rulesets_exports); | |
| const Rulesets = { | |
| obtainablemoves: { | |
| inherit: true, | |
| banlist: [ | |
| // https://www.smogon.com/forums/threads/implementing-all-old-gens-in-ps-testers-required.3483261/post-5420130 | |
| // confirmed by Marty | |
| "Kakuna + Poison Sting + Harden", | |
| "Kakuna + String Shot + Harden", | |
| "Beedrill + Poison Sting + Harden", | |
| "Beedrill + String Shot + Harden", | |
| // https://www.smogon.com/forums/threads/rby-and-gsc-illegal-movesets.78638/ | |
| "Nidoking + Fury Attack + Thrash", | |
| "Exeggutor + Poison Powder + Stomp", | |
| "Exeggutor + Sleep Powder + Stomp", | |
| "Exeggutor + Stun Spore + Stomp", | |
| "Eevee + Tackle + Growl", | |
| "Vaporeon + Tackle + Growl", | |
| "Jolteon + Tackle + Growl", | |
| "Jolteon + Focus Energy + Thunder Shock", | |
| "Flareon + Tackle + Growl", | |
| "Flareon + Focus Energy + Ember", | |
| // https://github.com/smogon/pokemon-showdown/pull/8869 | |
| "Rapidash + Pay Day + Growl", | |
| "Rapidash + Pay Day + Tail Whip", | |
| "Fearow + Pay Day + Peck", | |
| "Fearow + Pay Day + Mirror Move", | |
| "Magikarp + Dragon Rage + Tackle" | |
| ] | |
| }, | |
| standard: { | |
| effectType: "ValidatorRule", | |
| name: "Standard", | |
| ruleset: ["Obtainable", "Sleep Clause Mod", "Freeze Clause Mod", "Species Clause", "Nickname Clause", "OHKO Clause", "Evasion Items Clause", "Evasion Moves Clause", "Endless battle Clause", "HP Percentage Mod", "Cancel Mod"], | |
| banlist: [ | |
| "Hypnosis + Mean Look", | |
| "Hypnosis + Spider Web", | |
| "Lovely Kiss + Mean Look", | |
| "Lovely Kiss + Spider Web", | |
| "Sing + Mean Look", | |
| "Sing + Spider Web", | |
| "Sleep Powder + Mean Look", | |
| "Sleep Powder + Spider Web", | |
| "Spore + Mean Look", | |
| "Spore + Spider Web" | |
| ] | |
| }, | |
| nc2000movelegality: { | |
| effectType: "ValidatorRule", | |
| name: "NC 2000 Move Legality", | |
| desc: "Prevents Pok\xE9mon from having moves that would only be obtainable in Pok\xE9mon Crystal.", | |
| onValidateSet(set) { | |
| const illegalCombos = { | |
| arbok: { crunch: "E" }, | |
| sandslash: { metalclaw: "E" }, | |
| golduck: { crosschop: "E" }, | |
| marowak: { swordsdance: "E" }, | |
| electabuzz: { crosschop: "E" }, | |
| magmar: { crosschop: "E" }, | |
| jolteon: { batonpass: "L" }, | |
| vaporeon: { batonpass: "L" }, | |
| flareon: { batonpass: "L" }, | |
| espeon: { batonpass: "L" }, | |
| umbreon: { batonpass: "L" }, | |
| dragonite: { extremespeed: "S" }, | |
| meganium: { swordsdance: "E" }, | |
| typhlosion: { submission: "E" }, | |
| ariados: { agility: "L" }, | |
| yanma: { wingattack: "L" }, | |
| murkrow: { skyattack: "E" }, | |
| qwilfish: { spikes: "L" }, | |
| sneasel: { metalclaw: "L" }, | |
| ursaring: { metalclaw: "E" }, | |
| piloswine: { amnesia: "L" }, | |
| skarmory: { skyattack: "E" }, | |
| donphan: { watergun: "E" }, | |
| suicune: { aurorabeam: "L" }, | |
| dugtrio: { triattack: "L" }, | |
| magneton: { triattack: "L" }, | |
| cloyster: { spikes: "L" } | |
| }; | |
| const moveSources = Object.fromEntries( | |
| set.moves.map((move) => [this.toID(move), []]) | |
| ); | |
| const species = this.dex.species.get(set.species); | |
| for (const { learnset } of this.dex.species.getFullLearnset(species.id)) { | |
| for (const moveid in moveSources) { | |
| moveSources[moveid].push(...learnset[moveid] || []); | |
| } | |
| } | |
| const notUsableAsTM = ["icebeam", "flamethrower", "thunderbolt"]; | |
| const legalityList = illegalCombos[species.id]; | |
| const problems = []; | |
| for (const moveid of set.moves.map(this.toID)) { | |
| if (!moveSources[moveid]) | |
| continue; | |
| if (legalityList) { | |
| const list = moveSources[moveid].filter((x) => !x.includes(legalityList[moveid])); | |
| if (!list.length) { | |
| switch (legalityList[moveid]) { | |
| case "L": | |
| const levels = new Set(moveSources[moveid].filter((x) => x.includes(legalityList[moveid])).map((x) => x.slice(2))); | |
| problems.push( | |
| `${species.name} can't learn ${this.dex.moves.get(moveid).name}.`, | |
| `(It learns ${this.dex.moves.get(moveid).name} in Pok\xE9mon Crystal at the following levels: ${[...levels].join(", ")})` | |
| ); | |
| break; | |
| case "S": | |
| problems.push( | |
| `${species.name} can't learn ${this.dex.moves.get(moveid).name}.`, | |
| `(It only learns ${this.dex.moves.get(moveid).name} in Pok\xE9mon Crystal via special in-game events.)` | |
| ); | |
| break; | |
| case "E": | |
| problems.push( | |
| `${species.name} can't learn ${this.dex.moves.get(moveid).name}.`, | |
| `(It only learns ${this.dex.moves.get(moveid).name} as an egg move in Pok\xE9mon Crystal.)` | |
| ); | |
| break; | |
| } | |
| } | |
| } | |
| for (const id of notUsableAsTM) { | |
| if (moveid === id && moveSources[id] && !moveSources[id].filter((x) => !x.includes("2T")).length) { | |
| problems.push(`${species.name} can't learn ${this.dex.moves.get(id).name}.`); | |
| } | |
| } | |
| } | |
| if (problems.some((x) => notUsableAsTM.map((y) => this.dex.moves.get(y).name).some((z) => x.includes(z)))) { | |
| problems.push( | |
| `(${notUsableAsTM.map((y) => this.dex.moves.get(y).name).join(" / ")} aren't learnable outside of Pok\xE9mon Crystal.)` | |
| ); | |
| } | |
| return problems; | |
| } | |
| } | |
| }; | |
| //# sourceMappingURL=rulesets.js.map | |