Minecraft-STC-Modpack/showdown/data/mods/gen2/rulesets.js
2023-08-14 21:45:09 -04:00

167 lines
6.6 KiB
JavaScript

"use strict";
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", "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"
]
},
nintendocup2000movelegality: {
effectType: "ValidatorRule",
name: "Nintendo Cup 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 notUsableAsTM = ["icebeam", "flamethrower", "thunderbolt"];
const species = this.dex.species.get(set.species || set.name);
const learnsetData = { ...this.dex.data.Learnsets[species.id]?.learnset || {} };
const legalityList = illegalCombos[species.id];
const problems = [];
let prevo = species.prevo;
while (prevo) {
const prevoSpecies = this.dex.species.get(prevo);
const prevoLsetData = this.dex.data.Learnsets[prevoSpecies.id]?.learnset || {};
for (const moveid in prevoLsetData) {
if (!(moveid in learnsetData)) {
learnsetData[moveid] = prevoLsetData[moveid];
} else {
learnsetData[moveid].push(...prevoLsetData[moveid]);
}
}
prevo = prevoSpecies.prevo;
}
for (const moveid of set.moves.map(this.toID)) {
if (!learnsetData[moveid])
continue;
if (legalityList) {
const list = learnsetData[moveid].filter((x) => !x.includes(legalityList[moveid]));
if (!list.length) {
switch (legalityList[moveid]) {
case "L":
const levels = new Set(learnsetData[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 && learnsetData[id] && !learnsetData[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