208 lines
7.1 KiB
JavaScript
208 lines
7.1 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 = {
|
|
standard: {
|
|
inherit: true,
|
|
ruleset: [
|
|
"Obtainable",
|
|
"Team Preview",
|
|
"Sleep Clause Mod",
|
|
"Species Clause",
|
|
"Nickname Clause",
|
|
"OHKO Clause",
|
|
"Evasion Items Clause",
|
|
"Evasion Moves Clause",
|
|
"Endless Battle Clause",
|
|
"HP Percentage Mod",
|
|
"Cancel Mod"
|
|
]
|
|
},
|
|
standarddoubles: {
|
|
inherit: true,
|
|
ruleset: [
|
|
"Obtainable",
|
|
"Team Preview",
|
|
"Species Clause",
|
|
"Nickname Clause",
|
|
"OHKO Clause",
|
|
"Evasion Moves Clause",
|
|
"Gravity Sleep Clause",
|
|
"Endless Battle Clause",
|
|
"HP Percentage Mod",
|
|
"Cancel Mod"
|
|
]
|
|
},
|
|
standardoms: {
|
|
inherit: true,
|
|
ruleset: [
|
|
"Obtainable",
|
|
"Team Preview",
|
|
"Species Clause",
|
|
"Nickname Clause",
|
|
"OHKO Clause",
|
|
"Evasion Moves Clause",
|
|
"Endless Battle Clause",
|
|
"Dynamax Clause",
|
|
"HP Percentage Mod",
|
|
"Cancel Mod",
|
|
"Overflow Stat Mod"
|
|
]
|
|
},
|
|
teampreview: {
|
|
inherit: true,
|
|
onTeamPreview() {
|
|
this.add("clearpoke");
|
|
for (const pokemon of this.getAllPokemon()) {
|
|
const details = pokemon.details.replace(", shiny", "").replace(/(Arceus|Greninja|Gourgeist|Pumpkaboo|Xerneas|Silvally|Urshifu|Dudunsparce)(-[a-zA-Z?-]+)?/g, "$1-*").replace(/(Zacian|Zamazenta)(?!-Crowned)/g, "$1-*");
|
|
this.add("poke", pokemon.side.id, details, "");
|
|
}
|
|
this.makeRequest("teampreview");
|
|
}
|
|
},
|
|
tiershiftmod: {
|
|
inherit: true,
|
|
desc: `Pokémon below OU get their stats, excluding HP, boosted. UU/RUBL get +10, RU/NUBL get +20, NU/PUBL get +30, and PU or lower get +40.`,
|
|
onModifySpecies(species, target, source, effect) {
|
|
if (!species.baseStats)
|
|
return;
|
|
const boosts = {
|
|
uu: 10,
|
|
rubl: 10,
|
|
ru: 20,
|
|
nubl: 20,
|
|
nu: 30,
|
|
publ: 30,
|
|
pu: 40,
|
|
zubl: 40,
|
|
zu: 40,
|
|
nfe: 40,
|
|
lc: 40
|
|
};
|
|
let tier = this.toID(species.tier);
|
|
if (!(tier in boosts))
|
|
return;
|
|
if (target) {
|
|
if (target.set.item === "lightclay")
|
|
return;
|
|
if (["drizzle", "drought", "slushrush"].includes(target.set.ability) && boosts[tier] > 20)
|
|
tier = "nubl";
|
|
}
|
|
const pokemon = this.dex.deepClone(species);
|
|
pokemon.bst = pokemon.baseStats["hp"];
|
|
const boost = boosts[tier];
|
|
let statName;
|
|
for (statName in pokemon.baseStats) {
|
|
if (statName === "hp")
|
|
continue;
|
|
pokemon.baseStats[statName] = this.clampIntRange(pokemon.baseStats[statName] + boost, 1, 255);
|
|
pokemon.bst += pokemon.baseStats[statName];
|
|
}
|
|
return pokemon;
|
|
}
|
|
},
|
|
bonustypemod: {
|
|
inherit: true,
|
|
desc: `Pokémon can be nicknamed the name of a type to have that type added onto their current ones.`,
|
|
onBegin() {
|
|
this.add("rule", "Bonus Type Mod: Pok\xE9mon can be nicknamed the name of a type to have that type added onto their current ones.");
|
|
},
|
|
onModifySpecies(species, target, source, effect) {
|
|
if (!target)
|
|
return;
|
|
if (effect && ["imposter", "transform"].includes(effect.id))
|
|
return;
|
|
const typesSet = new Set(species.types);
|
|
const bonusType = this.dex.types.get(target.set.name);
|
|
if (bonusType.exists)
|
|
typesSet.add(bonusType.name);
|
|
return { ...species, types: [...typesSet] };
|
|
}
|
|
},
|
|
godlygiftmod: {
|
|
inherit: true,
|
|
onValidateTeam(team) {
|
|
const gods = /* @__PURE__ */ new Set();
|
|
for (const set of team) {
|
|
let species = this.dex.species.get(set.species);
|
|
if (typeof species.battleOnly === "string")
|
|
species = this.dex.species.get(species.battleOnly);
|
|
if (["Zacian", "Zamazenta"].includes(species.baseSpecies) && this.toID(set.item).startsWith("rusted")) {
|
|
species = this.dex.species.get(set.species + "-Crowned");
|
|
}
|
|
if (set.item && this.dex.items.get(set.item).megaStone) {
|
|
const item = this.dex.items.get(set.item);
|
|
if (item.megaEvolves === species.baseSpecies) {
|
|
species = this.dex.species.get(item.megaStone);
|
|
}
|
|
}
|
|
if (["ag", "uber"].includes(this.toID(this.ruleTable.has("standardnatdex") ? species.natDexTier : species.tier)) || this.toID(set.ability) === "powerconstruct") {
|
|
gods.add(species.name);
|
|
}
|
|
}
|
|
if (gods.size > 1) {
|
|
return [`You have too many Gods.`, `(${Array.from(gods).join(", ")} are Gods.)`];
|
|
}
|
|
},
|
|
onModifySpeciesPriority: 3,
|
|
onModifySpecies(species, target, source) {
|
|
if (source || !target?.side)
|
|
return;
|
|
const god = target.side.team.find((set) => {
|
|
let godSpecies2 = this.dex.species.get(set.species);
|
|
const isNatDex = this.format.ruleTable?.has("standardnatdex");
|
|
const validator = this.dex.formats.getRuleTable(
|
|
this.dex.formats.get(`gen${this.gen}${isNatDex && this.gen >= 8 ? "nationaldex" : "ou"}`)
|
|
);
|
|
if (this.toID(set.ability) === "powerconstruct") {
|
|
return true;
|
|
}
|
|
if (set.item) {
|
|
const item = this.dex.items.get(set.item);
|
|
if (item.megaEvolves === set.species)
|
|
godSpecies2 = this.dex.species.get(item.megaStone);
|
|
if (["Zacian", "Zamazenta"].includes(godSpecies2.baseSpecies) && item.id.startsWith("rusted")) {
|
|
godSpecies2 = this.dex.species.get(set.species + "-Crowned");
|
|
}
|
|
}
|
|
const isBanned = validator.isBannedSpecies(godSpecies2);
|
|
return isBanned;
|
|
}) || target.side.team[0];
|
|
const stat = Dex.stats.ids()[target.side.team.indexOf(target.set)];
|
|
const newSpecies = this.dex.deepClone(species);
|
|
let godSpecies = this.dex.species.get(god.species);
|
|
if (typeof godSpecies.battleOnly === "string") {
|
|
godSpecies = this.dex.species.get(godSpecies.battleOnly);
|
|
}
|
|
newSpecies.bst -= newSpecies.baseStats[stat];
|
|
newSpecies.baseStats[stat] = godSpecies.baseStats[stat];
|
|
if (this.gen === 1 && (stat === "spa" || stat === "spd")) {
|
|
newSpecies.baseStats["spa"] = newSpecies.baseStats["spd"] = godSpecies.baseStats[stat];
|
|
}
|
|
newSpecies.bst += newSpecies.baseStats[stat];
|
|
return newSpecies;
|
|
}
|
|
}
|
|
};
|
|
//# sourceMappingURL=rulesets.js.map
|