"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);
var import_lib = require("../lib");
var import_pokemon = require("../sim/pokemon");
var import_teams = require("../sim/teams");
const Rulesets = {
// Rulesets
///////////////////////////////////////////////////////////////////
standard: {
effectType: "ValidatorRule",
name: "Standard",
desc: "The standard ruleset for all offical Smogon singles tiers (Ubers, OU, etc.)",
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",
"Min Source Gen = 9"
]
},
standardnext: {
effectType: "ValidatorRule",
name: "Standard NEXT",
desc: "The standard ruleset for the NEXT mod",
ruleset: [
"+Unreleased",
"Sleep Clause Mod",
"Species Clause",
"Nickname Clause",
"OHKO Clause",
"HP Percentage Mod",
"Cancel Mod"
],
banlist: ["Soul Dew"]
},
flatrules: {
effectType: "ValidatorRule",
name: "Flat Rules",
desc: "The in-game Flat Rules: Adjust Level Down 50, Species Clause, Item Clause, -Mythical, -Restricted Legendary, Bring 6 Pick 3-6 depending on game type.",
ruleset: ["Obtainable", "Team Preview", "Species Clause", "Nickname Clause", "Item Clause", "Adjust Level Down = 50", "Picked Team Size = Auto", "Cancel Mod"],
banlist: ["Mythical", "Restricted Legendary"]
},
limittworestricted: {
effectType: "ValidatorRule",
name: "Limit Two Restricted",
desc: "Limit two restricted Pok\xE9mon (flagged with * in the rules list)",
onValidateTeam(team) {
const restrictedSpecies = [];
for (const set of team) {
const species = this.dex.species.get(set.species);
if (this.ruleTable.isRestrictedSpecies(species))
restrictedSpecies.push(species.name);
}
if (restrictedSpecies.length > 2) {
return [`You can only use up to two restricted Pok\xE9mon (you have: ${restrictedSpecies.join(", ")})`];
}
}
},
limitonerestricted: {
effectType: "ValidatorRule",
name: "Limit One Restricted",
desc: "Limit one restricted Pok\xE9mon (flagged with * in the rules list)",
onValidateTeam(team) {
const restrictedSpecies = [];
for (const set of team) {
const species = this.dex.species.get(set.species);
if (this.ruleTable.isRestrictedSpecies(species))
restrictedSpecies.push(species.name);
}
if (restrictedSpecies.length > 1) {
return [`You can only use one restricted Pok\xE9mon (you have: ${restrictedSpecies.join(", ")})`];
}
}
},
standarddoubles: {
effectType: "ValidatorRule",
name: "Standard Doubles",
desc: "The standard ruleset for all official Smogon doubles tiers",
ruleset: [
"Obtainable",
"Team Preview",
"Species Clause",
"Nickname Clause",
"OHKO Clause",
"Evasion Moves Clause",
"Gravity Sleep Clause",
"Endless Battle Clause",
"HP Percentage Mod",
"Cancel Mod",
"Min Source Gen = 9"
]
},
standardoms: {
effectType: "ValidatorRule",
name: "Standard OMs",
desc: "The standard ruleset for all Smogon OMs (Almost Any Ability, STABmons, etc.)",
ruleset: [
"Obtainable",
"Team Preview",
"Species Clause",
"Nickname Clause",
"OHKO Clause",
"Evasion Moves Clause",
"Endless Battle Clause",
"HP Percentage Mod",
"Cancel Mod",
"Overflow Stat Mod"
// 'Min Source Gen = 9', - crashes for some reason
]
},
standardnatdex: {
effectType: "ValidatorRule",
name: "Standard NatDex",
desc: "The standard ruleset for all National Dex tiers",
ruleset: [
"Obtainable",
"+Unobtainable",
"+Past",
"Sketch Post-Gen 7 Moves",
"Team Preview",
"Nickname Clause",
"HP Percentage Mod",
"Cancel Mod",
"Endless Battle Clause"
],
unbanlist: ["Adamant Crystal", "Griseous Core", "Lustrous Globe", "Bleakwind Storm", "Lunar Blessing", "Mystical Power", "Sandsear Storm", "Wildbolt Storm"],
onValidateSet(set) {
const species = this.dex.species.get(set.species);
if (species.natDexTier === "Illegal") {
if (this.ruleTable.has(`+pokemon:${species.id}`))
return;
return [`${set.name || set.species} does not exist in the National Dex.`];
}
const requireObtainable = this.ruleTable.has("obtainable");
if (requireObtainable) {
if (species.natDexTier === "Unreleased") {
const basePokemon = this.toID(species.baseSpecies);
if (this.ruleTable.has(`+pokemon:${species.id}`) || this.ruleTable.has(`+basepokemon:${basePokemon}`)) {
return;
}
return [`${set.name || set.species} does not exist in the National Dex.`];
}
for (const moveid of set.moves) {
const move = this.dex.moves.get(moveid);
if (move.isNonstandard === "Unobtainable" && move.gen === this.dex.gen || move.id === "lightofruin") {
if (this.ruleTable.has(`+move:${move.id}`))
continue;
const problem = `${set.name}'s move ${move.name} does not exist in the National Dex.`;
if (this.ruleTable.has("omunobtainablemoves")) {
const outOfBattleSpecies = this.getValidationSpecies(set)[0];
if (!this.omCheckCanLearn(move, outOfBattleSpecies, this.allSources(outOfBattleSpecies), set, problem))
continue;
}
return [problem];
}
}
}
if (!set.item)
return;
let item = this.dex.items.get(set.item);
let gen = this.dex.gen;
while (item.isNonstandard && gen >= 7) {
item = this.dex.forGen(gen).items.get(item.id);
gen--;
}
if (requireObtainable && item.isNonstandard) {
if (this.ruleTable.has(`+item:${item.id}`))
return;
return [`${set.name}'s item ${item.name} does not exist in Gen ${this.dex.gen}.`];
}
}
},
draft: {
effectType: "ValidatorRule",
name: "Draft",
desc: "The custom Draft League ruleset",
ruleset: [
"Obtainable",
"+Unreleased",
"+CAP",
"Sketch Post-Gen 7 Moves",
"Team Preview",
"Sleep Clause Mod",
"OHKO Clause",
"Evasion Clause",
"Endless Battle Clause",
"HP Percentage Mod",
"Cancel Mod"
]
// timer: {starting: 60 * 60, grace: 0, addPerTurn: 10, maxPerTurn: 100, timeoutAutoChoose: true},
},
obtainable: {
effectType: "ValidatorRule",
name: "Obtainable",
desc: "Makes sure the team is possible to obtain in-game.",
ruleset: ["Obtainable Moves", "Obtainable Abilities", "Obtainable Formes", "EV Limit = Auto", "Obtainable Misc"],
banlist: ["Unreleased", "Unobtainable", "Nonexistent"],
// Mostly hardcoded in team-validator.ts
onValidateTeam(team, format) {
let kyuremCount = 0;
let necrozmaDMCount = 0;
let necrozmaDWCount = 0;
let calyrexCount = 0;
for (const set of team) {
if (set.species === "Kyurem-White" || set.species === "Kyurem-Black") {
if (kyuremCount > 0) {
return [
`You cannot have more than one Kyurem-Black/Kyurem-White.`,
`(It's untradeable and you can only make one with the DNA Splicers.)`
];
}
kyuremCount++;
}
if (set.species === "Necrozma-Dusk-Mane") {
if (necrozmaDMCount > 0) {
return [
`You cannot have more than one Necrozma-Dusk-Mane`,
`(It's untradeable and you can only make one with the N-Solarizer.)`
];
}
necrozmaDMCount++;
}
if (set.species === "Necrozma-Dawn-Wings") {
if (necrozmaDWCount > 0) {
return [
`You cannot have more than one Necrozma-Dawn-Wings`,
`(It's untradeable and you can only make one with the N-Lunarizer.)`
];
}
necrozmaDWCount++;
}
if (set.species === "Calyrex-Ice" || set.species === "Calyrex-Shadow") {
if (calyrexCount > 0) {
return [
`You cannot have more than one Calyrex-Ice/Calyrex-Shadow.`,
`(It's untradeable and you can only make one with the Reins of Unity.)`
];
}
calyrexCount++;
}
}
return [];
}
},
obtainablemoves: {
effectType: "ValidatorRule",
name: "Obtainable Moves",
desc: "Makes sure moves are learnable by the species."
// Hardcoded in team-validator.ts
},
obtainableabilities: {
effectType: "ValidatorRule",
name: "Obtainable Abilities",
desc: "Makes sure abilities match the species."
// Hardcoded in team-validator.ts
},
obtainableformes: {
effectType: "ValidatorRule",
name: "Obtainable Formes",
desc: "Makes sure in-battle formes only appear in-battle."
// Hardcoded in team-validator.ts
},
obtainablemisc: {
effectType: "ValidatorRule",
name: "Obtainable Misc",
desc: "Validate all obtainability things that aren't moves/abilities (Hidden Power type, gender, IVs, events, duplicate moves).",
// Mostly hardcoded in team-validator.ts
onChangeSet(set) {
const species = this.dex.species.get(set.species);
if (species.gender) {
if (set.gender !== species.gender) {
set.gender = species.gender;
}
} else {
if (set.gender !== "M" && set.gender !== "F") {
set.gender = "";
}
}
if (set.moves) {
const hasMove = {};
for (const moveId of set.moves) {
const move = this.dex.moves.get(moveId);
const moveid = move.id;
if (hasMove[moveid])
return [`${species.baseSpecies} has multiple copies of ${move.name}.`];
hasMove[moveid] = true;
}
}
}
},
hoennpokedex: {
effectType: "ValidatorRule",
name: "Hoenn Pokedex",
desc: "Only allows Pokémon native to the Hoenn region (OR/AS)",
onValidateSet(set, format) {
const hoennDex = [
"Abra",
"Absol",
"Aggron",
"Alakazam",
"Altaria",
"Anorith",
"Armaldo",
"Aron",
"Azumarill",
"Azurill",
"Bagon",
"Baltoy",
"Banette",
"Barboach",
"Beautifly",
"Beldum",
"Bellossom",
"Blaziken",
"Breloom",
"Budew",
"Cacnea",
"Cacturne",
"Camerupt",
"Carvanha",
"Cascoon",
"Castform",
"Chimecho",
"Chinchou",
"Chingling",
"Clamperl",
"Claydol",
"Combusken",
"Corphish",
"Corsola",
"Cradily",
"Crawdaunt",
"Crobat",
"Delcatty",
"Dodrio",
"Doduo",
"Donphan",
"Dusclops",
"Dusknoir",
"Duskull",
"Dustox",
"Electrike",
"Electrode",
"Exploud",
"Feebas",
"Flygon",
"Froslass",
"Gallade",
"Gardevoir",
"Geodude",
"Girafarig",
"Glalie",
"Gloom",
"Golbat",
"Goldeen",
"Golduck",
"Golem",
"Gorebyss",
"Graveler",
"Grimer",
"Grovyle",
"Grumpig",
"Gulpin",
"Gyarados",
"Hariyama",
"Heracross",
"Horsea",
"Huntail",
"Igglybuff",
"Illumise",
"Jigglypuff",
"Kadabra",
"Kecleon",
"Kingdra",
"Kirlia",
"Koffing",
"Lairon",
"Lanturn",
"Latias",
"Latios",
"Lileep",
"Linoone",
"Lombre",
"Lotad",
"Loudred",
"Ludicolo",
"Lunatone",
"Luvdisc",
"Machamp",
"Machoke",
"Machop",
"Magcargo",
"Magikarp",
"Magnemite",
"Magneton",
"Magnezone",
"Makuhita",
"Manectric",
"Marill",
"Marshtomp",
"Masquerain",
"Mawile",
"Medicham",
"Meditite",
"Metagross",
"Metang",
"Mightyena",
"Milotic",
"Minun",
"Mudkip",
"Muk",
"Natu",
"Nincada",
"Ninetales",
"Ninjask",
"Nosepass",
"Numel",
"Nuzleaf",
"Oddish",
"Pelipper",
"Phanpy",
"Pichu",
"Pikachu",
"Pinsir",
"Plusle",
"Poochyena",
"Probopass",
"Psyduck",
"Raichu",
"Ralts",
"Regice",
"Regirock",
"Registeel",
"Relicanth",
"Rhydon",
"Rhyhorn",
"Rhyperior",
"Roselia",
"Roserade",
"Sableye",
"Salamence",
"Sandshrew",
"Sandslash",
"Sceptile",
"Seadra",
"Seaking",
"Sealeo",
"Seedot",
"Seviper",
"Sharpedo",
"Shedinja",
"Shelgon",
"Shiftry",
"Shroomish",
"Shuppet",
"Silcoon",
"Skarmory",
"Skitty",
"Slaking",
"Slakoth",
"Slugma",
"Snorunt",
"Solrock",
"Spheal",
"Spinda",
"Spoink",
"Starmie",
"Staryu",
"Surskit",
"Swablu",
"Swalot",
"Swampert",
"Swellow",
"Taillow",
"Tentacool",
"Tentacruel",
"Torchic",
"Torkoal",
"Trapinch",
"Treecko",
"Tropius",
"Vibrava",
"Vigoroth",
"Vileplume",
"Volbeat",
"Voltorb",
"Vulpix",
"Wailmer",
"Wailord",
"Walrein",
"Weezing",
"Whiscash",
"Whismur",
"Wigglytuff",
"Wingull",
"Wobbuffet",
"Wurmple",
"Wynaut",
"Xatu",
"Zangoose",
"Zigzagoon",
"Zubat"
];
const species = this.dex.species.get(set.species || set.name);
if (!hoennDex.includes(species.baseSpecies) && !this.ruleTable.has("+" + species.id)) {
return [species.baseSpecies + " is not in the Hoenn Pok\xE9dex."];
}
}
},
sinnohpokedex: {
effectType: "ValidatorRule",
name: "Sinnoh Pokedex",
desc: "Only allows Pokémon native to the Sinnoh region (Platinum)",
onValidateSet(set, format) {
const sinnohDex = [
"Turtwig",
"Grotle",
"Torterra",
"Chimchar",
"Monferno",
"Infernape",
"Piplup",
"Prinplup",
"Empoleon",
"Starly",
"Staravia",
"Staraptor",
"Bidoof",
"Bibarel",
"Kricketot",
"Kricketune",
"Shinx",
"Luxio",
"Luxray",
"Abra",
"Kadabra",
"Alakazam",
"Magikarp",
"Gyarados",
"Budew",
"Roselia",
"Roserade",
"Zubat",
"Golbat",
"Crobat",
"Geodude",
"Graveler",
"Golem",
"Onix",
"Steelix",
"Cranidos",
"Rampardos",
"Shieldon",
"Bastiodon",
"Machop",
"Machoke",
"Machamp",
"Psyduck",
"Golduck",
"Burmy",
"Wormadam",
"Mothim",
"Wurmple",
"Silcoon",
"Beautifly",
"Cascoon",
"Dustox",
"Combee",
"Vespiquen",
"Pachirisu",
"Buizel",
"Floatzel",
"Cherubi",
"Cherrim",
"Shellos",
"Gastrodon",
"Heracross",
"Aipom",
"Ambipom",
"Drifloon",
"Drifblim",
"Buneary",
"Lopunny",
"Gastly",
"Haunter",
"Gengar",
"Misdreavus",
"Mismagius",
"Murkrow",
"Honchkrow",
"Glameow",
"Purugly",
"Goldeen",
"Seaking",
"Barboach",
"Whiscash",
"Chingling",
"Chimecho",
"Stunky",
"Skuntank",
"Meditite",
"Medicham",
"Bronzor",
"Bronzong",
"Ponyta",
"Rapidash",
"Bonsly",
"Sudowoodo",
"Mime Jr.",
"Mr. Mime",
"Happiny",
"Chansey",
"Blissey",
"Cleffa",
"Clefairy",
"Clefable",
"Chatot",
"Pichu",
"Pikachu",
"Raichu",
"Hoothoot",
"Noctowl",
"Spiritomb",
"Gible",
"Gabite",
"Garchomp",
"Munchlax",
"Snorlax",
"Unown",
"Riolu",
"Lucario",
"Wooper",
"Quagsire",
"Wingull",
"Pelipper",
"Girafarig",
"Hippopotas",
"Hippowdon",
"Azurill",
"Marill",
"Azumarill",
"Skorupi",
"Drapion",
"Croagunk",
"Toxicroak",
"Carnivine",
"Remoraid",
"Octillery",
"Finneon",
"Lumineon",
"Tentacool",
"Tentacruel",
"Feebas",
"Milotic",
"Mantyke",
"Mantine",
"Snover",
"Abomasnow",
"Sneasel",
"Weavile",
"Uxie",
"Mesprit",
"Azelf",
"Dialga",
"Palkia",
"Manaphy",
"Rotom",
"Gligar",
"Gliscor",
"Nosepass",
"Probopass",
"Ralts",
"Kirlia",
"Gardevoir",
"Gallade",
"Lickitung",
"Lickilicky",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Swablu",
"Altaria",
"Togepi",
"Togetic",
"Togekiss",
"Houndour",
"Houndoom",
"Magnemite",
"Magneton",
"Magnezone",
"Tangela",
"Tangrowth",
"Yanma",
"Yanmega",
"Tropius",
"Rhyhorn",
"Rhydon",
"Rhyperior",
"Duskull",
"Dusclops",
"Dusknoir",
"Porygon",
"Porygon2",
"Porygon-Z",
"Scyther",
"Scizor",
"Elekid",
"Electabuzz",
"Electivire",
"Magby",
"Magmar",
"Magmortar",
"Swinub",
"Piloswine",
"Mamoswine",
"Snorunt",
"Glalie",
"Froslass",
"Absol",
"Giratina"
];
const species = this.dex.species.get(set.species || set.name);
if ((!sinnohDex.includes(species.baseSpecies) || species.gen > 4) && !this.ruleTable.has("+" + species.id)) {
return [`${species.name} is not in the Sinnoh Pok\xE9dex.`];
}
}
},
oldunovapokedex: {
effectType: "ValidatorRule",
name: "Old Unova Pokedex",
desc: "Only allows Pokémon native to the Unova region as of the original Black/White games",
onValidateSet(set, format) {
const species = this.dex.species.get(set.species || set.name);
const isUnova = species.num >= 494 && species.num <= 649 && !["Black", "White", "Therian", "Resolute"].includes(species.forme) && species.gen <= 5;
if (!isUnova && !this.ruleTable.has("+" + species.id)) {
return [`${species.baseSpecies} is not in the Old Unova Pok\xE9dex.`];
}
}
},
newunovapokedex: {
effectType: "ValidatorRule",
name: "New Unova Pokedex",
desc: "Only allows Pokémon native to the Unova region as of the Black 2/White 2 games",
onValidateSet(set, format) {
const unovaDex = [
"Victini",
"Snivy",
"Servine",
"Serperior",
"Tepig",
"Pignite",
"Emboar",
"Oshawott",
"Dewott",
"Samurott",
"Patrat",
"Watchog",
"Purrloin",
"Liepard",
"Pidove",
"Tranquill",
"Unfezant",
"Unfezant",
"Sewaddle",
"Swadloon",
"Leavanny",
"Sunkern",
"Sunflora",
"Lillipup",
"Herdier",
"Stoutland",
"Mareep",
"Flaaffy",
"Ampharos",
"Psyduck",
"Golduck",
"Azurill",
"Marill",
"Azumarill",
"Riolu",
"Lucario",
"Dunsparce",
"Audino",
"Pansage",
"Simisage",
"Pansear",
"Simisear",
"Panpour",
"Simipour",
"Venipede",
"Whirlipede",
"Scolipede",
"Koffing",
"Weezing",
"Magnemite",
"Magneton",
"Magnezone",
"Growlithe",
"Arcanine",
"Magby",
"Magmar",
"Magmortar",
"Elekid",
"Electabuzz",
"Electivire",
"Rattata",
"Raticate",
"Zubat",
"Golbat",
"Crobat",
"Grimer",
"Muk",
"Woobat",
"Swoobat",
"Roggenrola",
"Boldore",
"Gigalith",
"Onix",
"Steelix",
"Timburr",
"Gurdurr",
"Conkeldurr",
"Drilbur",
"Excadrill",
"Skitty",
"Delcatty",
"Buneary",
"Lopunny",
"Cottonee",
"Whimsicott",
"Petilil",
"Lilligant",
"Munna",
"Musharna",
"Cleffa",
"Clefairy",
"Clefable",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Sandile",
"Krokorok",
"Krookodile",
"Darumaka",
"Darmanitan",
"Basculin",
"Basculin",
"Trubbish",
"Garbodor",
"Minccino",
"Cinccino",
"Rufflet",
"Braviary",
"Vullaby",
"Mandibuzz",
"Sandshrew",
"Sandslash",
"Dwebble",
"Crustle",
"Scraggy",
"Scrafty",
"Maractus",
"Sigilyph",
"Trapinch",
"Vibrava",
"Flygon",
"Yamask",
"Cofagrigus",
"Tirtouga",
"Carracosta",
"Archen",
"Archeops",
"Klink",
"Klang",
"Klinklang",
"Budew",
"Roselia",
"Roserade",
"Gothita",
"Gothorita",
"Gothitelle",
"Solosis",
"Duosion",
"Reuniclus",
"Combee",
"Vespiquen",
"Emolga",
"Heracross",
"Pinsir",
"Blitzle",
"Zebstrika",
"Buizel",
"Floatzel",
"Zorua",
"Zoroark",
"Ducklett",
"Swanna",
"Karrablast",
"Escavalier",
"Shelmet",
"Accelgor",
"Deerling",
"Sawsbuck",
"Foongus",
"Amoonguss",
"Castform",
"Nosepass",
"Probopass",
"Aron",
"Lairon",
"Aggron",
"Baltoy",
"Claydol",
"Larvesta",
"Volcarona",
"Joltik",
"Galvantula",
"Ferroseed",
"Ferrothorn",
"Tynamo",
"Eelektrik",
"Eelektross",
"Frillish",
"Jellicent",
"Alomomola",
"Axew",
"Fraxure",
"Haxorus",
"Zangoose",
"Seviper",
"Elgyem",
"Beheeyem",
"Litwick",
"Lampent",
"Chandelure",
"Heatmor",
"Durant",
"Cubchoo",
"Beartic",
"Cryogonal",
"Tornadus",
"Thundurus",
"Landorus",
"Skorupi",
"Drapion",
"Skarmory",
"Numel",
"Camerupt",
"Spoink",
"Grumpig",
"Drifloon",
"Drifblim",
"Shuppet",
"Banette",
"Wingull",
"Pelipper",
"Lunatone",
"Solrock",
"Absol",
"Tangela",
"Tangrowth",
"Mienfoo",
"Mienshao",
"Gligar",
"Gliscor",
"Pawniard",
"Bisharp",
"Cobalion",
"Terrakion",
"Virizion",
"Tympole",
"Palpitoad",
"Seismitoad",
"Stunfisk",
"Shuckle",
"Mantyke",
"Mantine",
"Remoraid",
"Octillery",
"Corsola",
"Staryu",
"Starmie",
"Wailmer",
"Wailord",
"Lapras",
"Spheal",
"Sealeo",
"Walrein",
"Swablu",
"Altaria",
"Vulpix",
"Ninetales",
"Bronzor",
"Bronzong",
"Sneasel",
"Weavile",
"Delibird",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Swinub",
"Piloswine",
"Mamoswine",
"Ditto",
"Beldum",
"Metang",
"Metagross",
"Seel",
"Dewgong",
"Throh",
"Sawk",
"Bouffalant",
"Druddigon",
"Golett",
"Golurk",
"Deino",
"Zweilous",
"Hydreigon",
"Slakoth",
"Vigoroth",
"Slaking",
"Corphish",
"Crawdaunt",
"Igglybuff",
"Jigglypuff",
"Wigglytuff",
"Lickitung",
"Lickilicky",
"Yanma",
"Yanmega",
"Tropius",
"Carnivine",
"Croagunk",
"Toxicroak",
"Larvitar",
"Pupitar",
"Tyranitar",
"Reshiram",
"Zekrom",
"Kyurem",
"Keldeo",
"Meloetta",
"Genesect"
];
const species = this.dex.species.get(set.species || set.name);
const isUnova = unovaDex.includes(species.baseSpecies) && species.gen <= 5;
if (!isUnova && !this.ruleTable.has("+" + species.id)) {
return [`${species.baseSpecies} is not in the New Unova Pok\xE9dex.`];
}
}
},
kalospokedex: {
effectType: "ValidatorRule",
name: "Kalos Pokedex",
desc: "Only allows Pokémon native to the Kalos region (XY)",
onValidateSet(set, format) {
const kalosDex = [
"Chespin",
"Quilladin",
"Chesnaught",
"Fennekin",
"Braixen",
"Delphox",
"Froakie",
"Frogadier",
"Greninja",
"Bunnelby",
"Diggersby",
"Zigzagoon",
"Linoone",
"Fletchling",
"Fletchinder",
"Talonflame",
"Pidgey",
"Pidgeotto",
"Pidgeot",
"Scatterbug",
"Spewpa",
"Vivillon",
"Caterpie",
"Metapod",
"Butterfree",
"Weedle",
"Kakuna",
"Beedrill",
"Pansage",
"Simisage",
"Pansear",
"Simisear",
"Panpour",
"Simipour",
"Pichu",
"Pikachu",
"Raichu",
"Bidoof",
"Bibarel",
"Dunsparce",
"Azurill",
"Marill",
"Azumarill",
"Burmy",
"Wormadam",
"Mothim",
"Surskit",
"Masquerain",
"Magikarp",
"Gyarados",
"Corphish",
"Crawdaunt",
"Goldeen",
"Seaking",
"Carvanha",
"Sharpedo",
"Litleo",
"Pyroar",
"Psyduck",
"Golduck",
"Farfetch\u2019d",
"Riolu",
"Lucario",
"Ralts",
"Kirlia",
"Gardevoir",
"Gallade",
"Flabe\u0301be\u0301",
"Floette",
"Florges",
"Budew",
"Roselia",
"Roserade",
"Ledyba",
"Ledian",
"Combee",
"Vespiquen",
"Skitty",
"Delcatty",
"Bulbasaur",
"Ivysaur",
"Venusaur",
"Charmander",
"Charmeleon",
"Charizard",
"Squirtle",
"Wartortle",
"Blastoise",
"Skiddo",
"Gogoat",
"Pancham",
"Pangoro",
"Furfrou",
"Doduo",
"Dodrio",
"Plusle",
"Minun",
"Gulpin",
"Swalot",
"Scraggy",
"Scrafty",
"Abra",
"Kadabra",
"Alakazam",
"Oddish",
"Gloom",
"Vileplume",
"Bellossom",
"Sentret",
"Furret",
"Nincada",
"Ninjask",
"Shedinja",
"Espurr",
"Meowstic",
"Kecleon",
"Honedge",
"Doublade",
"Aegislash",
"Venipede",
"Whirlipede",
"Scolipede",
"Audino",
"Smeargle",
"Croagunk",
"Toxicroak",
"Ducklett",
"Swanna",
"Spritzee",
"Aromatisse",
"Swirlix",
"Slurpuff",
"Volbeat",
"Illumise",
"Hoppip",
"Skiploom",
"Jumpluff",
"Munchlax",
"Snorlax",
"Whismur",
"Loudred",
"Exploud",
"Meditite",
"Medicham",
"Zubat",
"Golbat",
"Crobat",
"Axew",
"Fraxure",
"Haxorus",
"Diancie",
"Hoopa",
"Volcanion",
"Drifloon",
"Drifblim",
"Mienfoo",
"Mienshao",
"Zangoose",
"Seviper",
"Spoink",
"Grumpig",
"Absol",
"Inkay",
"Malamar",
"Lunatone",
"Solrock",
"Bagon",
"Shelgon",
"Salamence",
"Wingull",
"Pelipper",
"Taillow",
"Swellow",
"Binacle",
"Barbaracle",
"Dwebble",
"Crustle",
"Tentacool",
"Tentacruel",
"Wailmer",
"Wailord",
"Luvdisc",
"Skrelp",
"Dragalge",
"Clauncher",
"Clawitzer",
"Staryu",
"Starmie",
"Shellder",
"Cloyster",
"Qwilfish",
"Horsea",
"Seadra",
"Kingdra",
"Relicanth",
"Sandile",
"Krokorok",
"Krookodile",
"Helioptile",
"Heliolisk",
"Hippopotas",
"Hippowdon",
"Rhyhorn",
"Rhydon",
"Rhyperior",
"Onix",
"Steelix",
"Woobat",
"Swoobat",
"Machop",
"Machoke",
"Machamp",
"Cubone",
"Marowak",
"Kangaskhan",
"Mawile",
"Tyrunt",
"Tyrantrum",
"Amaura",
"Aurorus",
"Aerodactyl",
"Ferroseed",
"Ferrothorn",
"Snubbull",
"Granbull",
"Electrike",
"Manectric",
"Houndour",
"Houndoom",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Sylveon",
"Emolga",
"Yanma",
"Yanmega",
"Hawlucha",
"Sigilyph",
"Golett",
"Golurk",
"Nosepass",
"Probopass",
"Makuhita",
"Hariyama",
"Throh",
"Sawk",
"Starly",
"Staravia",
"Staraptor",
"Stunky",
"Skuntank",
"Nidoran-F",
"Nidorina",
"Nidoqueen",
"Nidoran-M",
"Nidorino",
"Nidoking",
"Dedenne",
"Chingling",
"Chimecho",
"Mime Jr.",
"Mr. Mime",
"Solosis",
"Duosion",
"Reuniclus",
"Wynaut",
"Wobbuffet",
"Roggenrola",
"Boldore",
"Gigalith",
"Sableye",
"Carbink",
"Tauros",
"Miltank",
"Mareep",
"Flaaffy",
"Ampharos",
"Pinsir",
"Heracross",
"Pachirisu",
"Slowpoke",
"Slowbro",
"Slowking",
"Exeggcute",
"Exeggutor",
"Chatot",
"Mantyke",
"Mantine",
"Clamperl",
"Huntail",
"Gorebyss",
"Remoraid",
"Octillery",
"Corsola",
"Chinchou",
"Lanturn",
"Alomomola",
"Lapras",
"Articuno",
"Zapdos",
"Moltres",
"Diglett",
"Dugtrio",
"Trapinch",
"Vibrava",
"Flygon",
"Gible",
"Gabite",
"Garchomp",
"Geodude",
"Graveler",
"Golem",
"Slugma",
"Magcargo",
"Shuckle",
"Skorupi",
"Drapion",
"Wooper",
"Quagsire",
"Goomy",
"Sliggoo",
"Goodra",
"Karrablast",
"Escavalier",
"Shelmet",
"Accelgor",
"Bellsprout",
"Weepinbell",
"Victreebel",
"Carnivine",
"Gastly",
"Haunter",
"Gengar",
"Poliwag",
"Poliwhirl",
"Poliwrath",
"Politoed",
"Ekans",
"Arbok",
"Stunfisk",
"Barboach",
"Whiscash",
"Purrloin",
"Liepard",
"Poochyena",
"Mightyena",
"Patrat",
"Watchog",
"Pawniard",
"Bisharp",
"Klefki",
"Murkrow",
"Honchkrow",
"Foongus",
"Amoonguss",
"Lotad",
"Lombre",
"Ludicolo",
"Buizel",
"Floatzel",
"Basculin",
"Phantump",
"Trevenant",
"Pumpkaboo",
"Gourgeist",
"Litwick",
"Lampent",
"Chandelure",
"Rotom",
"Magnemite",
"Magneton",
"Magnezone",
"Voltorb",
"Electrode",
"Trubbish",
"Garbodor",
"Swinub",
"Piloswine",
"Mamoswine",
"Bergmite",
"Avalugg",
"Cubchoo",
"Beartic",
"Smoochum",
"Jynx",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Snover",
"Abomasnow",
"Delibird",
"Sneasel",
"Weavile",
"Timburr",
"Gurdurr",
"Conkeldurr",
"Torkoal",
"Sandshrew",
"Sandslash",
"Aron",
"Lairon",
"Aggron",
"Larvitar",
"Pupitar",
"Tyranitar",
"Heatmor",
"Durant",
"Spinarak",
"Ariados",
"Spearow",
"Fearow",
"Cryogonal",
"Skarmory",
"Noibat",
"Noivern",
"Gligar",
"Gliscor",
"Hoothoot",
"Noctowl",
"Igglybuff",
"Jigglypuff",
"Wigglytuff",
"Shuppet",
"Banette",
"Zorua",
"Zoroark",
"Gothita",
"Gothorita",
"Gothitelle",
"Bonsly",
"Sudowoodo",
"Spinda",
"Teddiursa",
"Ursaring",
"Lickitung",
"Lickilicky",
"Scyther",
"Scizor",
"Ditto",
"Swablu",
"Altaria",
"Druddigon",
"Deino",
"Zweilous",
"Hydreigon",
"Dratini",
"Dragonair",
"Dragonite",
"Xerneas",
"Yveltal",
"Zygarde",
"Mewtwo"
];
const species = this.dex.species.get(set.species || set.name);
if ((!kalosDex.includes(species.baseSpecies) || species.gen > 6) && !this.ruleTable.has("+" + species.id)) {
return [`${species.name} is not in the Kalos Pok\xE9dex.`];
}
}
},
oldalolapokedex: {
effectType: "ValidatorRule",
name: "Old Alola Pokedex",
desc: "Only allows Pokémon native to the Alola region (SUMO)",
banlist: ["Pikachu-Partner", "Marowak-Alola-Totem", "Ribombee-Totem", "Araquanid-Totem", "Lycanroc-Dusk", "Necrozma-Dusk-Mane", "Necrozma-Dawn-Wings"],
onValidateSet(set, format) {
const alolaDex = [
"Rowlet",
"Dartrix",
"Decidueye",
"Litten",
"Torracat",
"Incineroar",
"Popplio",
"Brionne",
"Primarina",
"Pikipek",
"Trumbeak",
"Toucannon",
"Yungoos",
"Gumshoos",
"Rattata-Alola",
"Raticate-Alola",
"Caterpie",
"Metapod",
"Butterfree",
"Ledyba",
"Ledian",
"Spinarak",
"Ariados",
"Pichu",
"Pikachu",
"Raichu-Alola",
"Grubbin",
"Charjabug",
"Vikavolt",
"Bonsly",
"Sudowoodo",
"Happiny",
"Chansey",
"Blissey",
"Munchlax",
"Snorlax",
"Slowpoke",
"Slowbro",
"Slowking",
"Wingull",
"Pelipper",
"Abra",
"Kadabra",
"Alakazam",
"Meowth-Alola",
"Persian-Alola",
"Magnemite",
"Magneton",
"Magnezone",
"Grimer-Alola",
"Muk-Alola",
"Growlithe",
"Arcanine",
"Drowzee",
"Hypno",
"Makuhita",
"Hariyama",
"Smeargle",
"Crabrawler",
"Crabominable",
"Gastly",
"Haunter",
"Gengar",
"Drifloon",
"Drifblim",
"Misdreavus",
"Mismagius",
"Zubat",
"Golbat",
"Crobat",
"Diglett-Alola",
"Dugtrio-Alola",
"Spearow",
"Fearow",
"Rufflet",
"Braviary",
"Vullaby",
"Mandibuzz",
"Mankey",
"Primeape",
"Delibird",
"Oricorio",
"Cutiefly",
"Ribombee",
"Petilil",
"Lilligant",
"Cottonee",
"Whimsicott",
"Psyduck",
"Golduck",
"Magikarp",
"Gyarados",
"Barboach",
"Whiscash",
"Machop",
"Machoke",
"Machamp",
"Roggenrola",
"Boldore",
"Gigalith",
"Carbink",
"Sableye",
"Rockruff",
"Lycanroc",
"Spinda",
"Tentacool",
"Tentacruel",
"Finneon",
"Lumineon",
"Wishiwashi",
"Luvdisc",
"Corsola",
"Mareanie",
"Toxapex",
"Shellder",
"Cloyster",
"Bagon",
"Shelgon",
"Salamence",
"Lillipup",
"Herdier",
"Stoutland",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Sylveon",
"Mudbray",
"Mudsdale",
"Igglybuff",
"Jigglypuff",
"Wigglytuff",
"Tauros",
"Miltank",
"Surskit",
"Masquerain",
"Dewpider",
"Araquanid",
"Fomantis",
"Lurantis",
"Morelull",
"Shiinotic",
"Paras",
"Parasect",
"Poliwag",
"Poliwhirl",
"Poliwrath",
"Politoed",
"Goldeen",
"Seaking",
"Feebas",
"Milotic",
"Alomomola",
"Fletchling",
"Fletchinder",
"Talonflame",
"Salandit",
"Salazzle",
"Cubone",
"Marowak-Alola",
"Kangaskhan",
"Magby",
"Magmar",
"Magmortar",
"Stufful",
"Bewear",
"Bounsweet",
"Steenee",
"Tsareena",
"Comfey",
"Pinsir",
"Oranguru",
"Passimian",
"Goomy",
"Sliggoo",
"Goodra",
"Castform",
"Wimpod",
"Golisopod",
"Staryu",
"Starmie",
"Sandygast",
"Palossand",
"Cranidos",
"Rampardos",
"Shieldon",
"Bastiodon",
"Archen",
"Archeops",
"Tirtouga",
"Carracosta",
"Phantump",
"Trevenant",
"Nosepass",
"Probopass",
"Pyukumuku",
"Chinchou",
"Lanturn",
"Type: Null",
"Silvally",
"Zygarde",
"Trubbish",
"Garbodor",
"Skarmory",
"Ditto",
"Cleffa",
"Clefairy",
"Clefable",
"Minior",
"Beldum",
"Metang",
"Metagross",
"Porygon",
"Porygon2",
"Porygon-Z",
"Pancham",
"Pangoro",
"Komala",
"Torkoal",
"Turtonator",
"Togedemaru",
"Elekid",
"Electabuzz",
"Electivire",
"Geodude-Alola",
"Graveler-Alola",
"Golem-Alola",
"Sandile",
"Krokorok",
"Krookodile",
"Trapinch",
"Vibrava",
"Flygon",
"Gible",
"Gabite",
"Garchomp",
"Klefki",
"Mimikyu",
"Bruxish",
"Drampa",
"Absol",
"Snorunt",
"Glalie",
"Froslass",
"Sneasel",
"Weavile",
"Sandshrew-Alola",
"Sandslash-Alola",
"Vulpix-Alola",
"Ninetales-Alola",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Snubbull",
"Granbull",
"Shellos",
"Gastrodon",
"Relicanth",
"Dhelmise",
"Carvanha",
"Sharpedo",
"Wailmer",
"Wailord",
"Lapras",
"Exeggcute",
"Exeggutor-Alola",
"Jangmo-o",
"Hakamo-o",
"Kommo-o",
"Emolga",
"Scyther",
"Scizor",
"Murkrow",
"Honchkrow",
"Riolu",
"Lucario",
"Dratini",
"Dragonair",
"Dragonite",
"Aerodactyl",
"Tapu Koko",
"Tapu Lele",
"Tapu Bulu",
"Tapu Fini",
"Cosmog",
"Cosmoem",
"Solgaleo",
"Lunala",
"Nihilego",
"Buzzwole",
"Pheromosa",
"Xurkitree",
"Celesteela",
"Kartana",
"Guzzlord",
"Necrozma",
"Magearna",
"Marshadow"
];
const species = this.dex.species.get(set.species || set.name);
if (!alolaDex.includes(species.baseSpecies) && !alolaDex.includes(species.name) && !this.ruleTable.has("+" + species.id)) {
return [`${species.baseSpecies} is not in the Old Alola Pok\xE9dex.`];
}
}
},
newalolapokedex: {
effectType: "ValidatorRule",
name: "New Alola Pokedex",
desc: "Only allows Pokémon native to the Alola region (US/UM)",
onValidateSet(set, format) {
const alolaDex = [
"Rowlet",
"Dartrix",
"Decidueye",
"Litten",
"Torracat",
"Incineroar",
"Popplio",
"Brionne",
"Primarina",
"Pikipek",
"Trumbeak",
"Toucannon",
"Yungoos",
"Gumshoos",
"Rattata-Alola",
"Raticate-Alola",
"Caterpie",
"Metapod",
"Butterfree",
"Ledyba",
"Ledian",
"Spinarak",
"Ariados",
"Buneary",
"Lopunny",
"Inkay",
"Malamar",
"Zorua",
"Zoroark",
"Furfrou",
"Pichu",
"Pikachu",
"Raichu-Alola",
"Grubbin",
"Charjabug",
"Vikavolt",
"Bonsly",
"Sudowoodo",
"Happiny",
"Chansey",
"Blissey",
"Munchlax",
"Snorlax",
"Slowpoke",
"Slowbro",
"Slowking",
"Wingull",
"Pelipper",
"Abra",
"Kadabra",
"Alakazam",
"Meowth-Alola",
"Persian-Alola",
"Magnemite",
"Magneton",
"Magnezone",
"Grimer-Alola",
"Muk-Alola",
"Mime Jr.",
"Mr. Mime",
"Ekans",
"Arbok",
"Dunsparce",
"Growlithe",
"Arcanine",
"Drowzee",
"Hypno",
"Makuhita",
"Hariyama",
"Smeargle",
"Crabrawler",
"Crabominable",
"Gastly",
"Haunter",
"Gengar",
"Drifloon",
"Drifblim",
"Murkrow",
"Honchkrow",
"Zubat",
"Golbat",
"Crobat",
"Noibat",
"Noivern",
"Diglett-Alola",
"Dugtrio-Alola",
"Spearow",
"Fearow",
"Rufflet",
"Braviary",
"Vullaby",
"Mandibuzz",
"Mankey",
"Primeape",
"Delibird",
"Hawlucha",
"Oricorio",
"Cutiefly",
"Ribombee",
"Flabe\u0301be\u0301",
"Floette",
"Florges",
"Petilil",
"Lilligant",
"Cottonee",
"Whimsicott",
"Psyduck",
"Golduck",
"Smoochum",
"Jynx",
"Magikarp",
"Gyarados",
"Barboach",
"Whiscash",
"Seal",
"Dewgong",
"Machop",
"Machoke",
"Machamp",
"Roggenrola",
"Boldore",
"Gigalith",
"Carbink",
"Sableye",
"Mawile",
"Rockruff",
"Lycanroc",
"Spinda",
"Tentacool",
"Tentacruel",
"Finneon",
"Lumineon",
"Wishiwashi",
"Luvdisc",
"Corsola",
"Mareanie",
"Toxapex",
"Shellder",
"Cloyster",
"Clamperl",
"Huntail",
"Gorebyss",
"Remoraid",
"Octillery",
"Mantyke",
"Mantine",
"Bagon",
"Shelgon",
"Salamence",
"Lillipup",
"Herdier",
"Stoutland",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Sylveon",
"Mareep",
"Flaaffy",
"Ampharos",
"Mudbray",
"Mudsdale",
"Igglybuff",
"Jigglypuff",
"Wigglytuff",
"Tauros",
"Miltank",
"Surskit",
"Masquerain",
"Dewpider",
"Araquanid",
"Fomantis",
"Lurantis",
"Morelull",
"Shiinotic",
"Paras",
"Parasect",
"Poliwag",
"Poliwhirl",
"Poliwrath",
"Politoed",
"Goldeen",
"Seaking",
"Basculin",
"Feebas",
"Milotic",
"Alomomola",
"Fletchling",
"Fletchinder",
"Talonflame",
"Salandit",
"Salazzle",
"Cubone",
"Marowak-Alola",
"Kangaskhan",
"Magby",
"Magmar",
"Magmortar",
"Larvesta",
"Volcarona",
"Stufful",
"Bewear",
"Bounsweet",
"Steenee",
"Tsareena",
"Comfey",
"Pinsir",
"Hoothoot",
"Noctowl",
"Kecleon",
"Oranguru",
"Passimian",
"Goomy",
"Sliggoo",
"Goodra",
"Castform",
"Wimpod",
"Golisopod",
"Staryu",
"Starmie",
"Sandygast",
"Palossand",
"Omanyte",
"Omastar",
"Kabuto",
"Kabutops",
"Lileep",
"Cradily",
"Anorith",
"Armaldo",
"Cranidos",
"Rampardos",
"Shieldon",
"Bastiodon",
"Tirtouga",
"Carracosta",
"Archen",
"Archeops",
"Tyrunt",
"Tyrantrum",
"Amaura",
"Aurorus",
"Pupitar",
"Larvitar",
"Tyranitar",
"Phantump",
"Trevenant",
"Natu",
"Xatu",
"Nosepass",
"Probopass",
"Pyukumuku",
"Chinchou",
"Lanturn",
"Type: Null",
"Silvally",
"Poipole",
"Naganadel",
"Zygarde",
"Trubbish",
"Garbodor",
"Minccino",
"Cinccino",
"Pineco",
"Forretress",
"Skarmory",
"Ditto",
"Cleffa",
"Clefairy",
"Clefable",
"Elgyem",
"Beheeyem",
"Minior",
"Beldum",
"Metang",
"Metagross",
"Porygon",
"Porygon2",
"Porygon-Z",
"Pancham",
"Pangoro",
"Komala",
"Torkoal",
"Turtonator",
"Houndour",
"Houndoom",
"Dedenne",
"Togedemaru",
"Electrike",
"Manectric",
"Elekid",
"Electabuzz",
"Electivire",
"Geodude-Alola",
"Graveler-Alola",
"Golem-Alola",
"Sandile",
"Krokorok",
"Krookodile",
"Trapinch",
"Vibrava",
"Flygon",
"Gible",
"Gabite",
"Garchomp",
"Baltoy",
"Claydol",
"Golett",
"Golurk",
"Klefki",
"Mimikyu",
"Shuppet",
"Banette",
"Frillish",
"Jellicent",
"Bruxish",
"Drampa",
"Absol",
"Snorunt",
"Glalie",
"Froslass",
"Sneasel",
"Weavile",
"Sandshrew-Alola",
"Sandslash-Alola",
"Vulpix-Alola",
"Ninetales-Alola",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Scraggy",
"Scrafty",
"Pawniard",
"Bisharp",
"Snubbull",
"Granbull",
"Shellos",
"Gastrodon",
"Relicanth",
"Dhelmise",
"Carvanha",
"Sharpedo",
"Skrelp",
"Dragalge",
"Clauncher",
"Clawitzer",
"Wailmer",
"Wailord",
"Lapras",
"Tropius",
"Exeggcute",
"Exeggutor-Alola",
"Corphish",
"Crawdaunt",
"Mienfoo",
"Mienshao",
"Jangmo-o",
"Hakamo-o",
"Kommo-o",
"Emolga",
"Scyther",
"Scizor",
"Heracross",
"Aipom",
"Ampibom",
"Litleo",
"Pyroar",
"Misdreavus",
"Mismagius",
"Druddigon",
"Lickitung",
"Lickilicky",
"Riolu",
"Lucario",
"Dratini",
"Dragonair",
"Dragonite",
"Aerodactyl",
"Tapu Koko",
"Tapu Lele",
"Tapu Bulu",
"Tapu Fini",
"Cosmog",
"Cosmoem",
"Solgaleo",
"Lunala",
"Nihilego",
"Stakataka",
"Blacephalon",
"Buzzwole",
"Pheromosa",
"Xurkitree",
"Celesteela",
"Kartana",
"Guzzlord",
"Necrozma",
"Magearna",
"Marshadow",
"Zeraora"
];
const species = this.dex.species.get(set.species || set.name);
if (!alolaDex.includes(species.baseSpecies) && !alolaDex.includes(species.name) && !this.ruleTable.has("+" + species.id)) {
return [`${species.baseSpecies} is not in the New Alola Pok\xE9dex.`];
}
}
},
galarpokedex: {
effectType: "ValidatorRule",
name: "Galar Pokedex",
desc: "Only allows Pokémon native to the Galar region (Sw/Sh)",
banlist: ["Raichu-Alola", "Weezing-Base"],
onValidateSet(set, format) {
const galarDex = [
"Grookey",
"Thwackey",
"Rillaboom",
"Scorbunny",
"Raboot",
"Cinderace",
"Sobble",
"Drizzile",
"Inteleon",
"Blipbug",
"Dottler",
"Orbeetle",
"Caterpie",
"Metapod",
"Butterfree",
"Grubbin",
"Charjabug",
"Vikavolt",
"Hoothoot",
"Noctowl",
"Rookidee",
"Corvisquire",
"Corviknight",
"Skwovet",
"Greedent",
"Pidove",
"Tranquill",
"Unfezant",
"Nickit",
"Thievul",
"Zigzagoon",
"Linoone",
"Obstagoon",
"Wooloo",
"Dubwool",
"Lotad",
"Lombre",
"Ludicolo",
"Seedot",
"Nuzleaf",
"Shiftry",
"Chewtle",
"Drednaw",
"Purrloin",
"Liepard",
"Yamper",
"Boltund",
"Bunnelby",
"Diggersby",
"Minccino",
"Cinccino",
"Bounsweet",
"Steenee",
"Tsareena",
"Oddish",
"Gloom",
"Vileplume",
"Bellossom",
"Budew",
"Roselia",
"Roserade",
"Wingull",
"Pelipper",
"Joltik",
"Galvantula",
"Electrike",
"Manectric",
"Vulpix",
"Ninetales",
"Growlithe",
"Arcanine",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Swinub",
"Piloswine",
"Mamoswine",
"Delibird",
"Snorunt",
"Glalie",
"Froslass",
"Baltoy",
"Claydol",
"Mudbray",
"Mudsdale",
"Dwebble",
"Crustle",
"Golett",
"Golurk",
"Munna",
"Musharna",
"Natu",
"Xatu",
"Stufful",
"Bewear",
"Snover",
"Abomasnow",
"Krabby",
"Kingler",
"Wooper",
"Quagsire",
"Corphish",
"Crawdaunt",
"Nincada",
"Ninjask",
"Shedinja",
"Tyrogue",
"Hitmonlee",
"Hitmonchan",
"Hitmontop",
"Pancham",
"Pangoro",
"Klink",
"Klang",
"Klinklang",
"Combee",
"Vespiquen",
"Bronzor",
"Bronzong",
"Ralts",
"Kirlia",
"Gardevoir",
"Gallade",
"Drifloon",
"Drifblim",
"Gossifleur",
"Eldegoss",
"Cherubi",
"Cherrim",
"Stunky",
"Skuntank",
"Tympole",
"Palpitoad",
"Seismitoad",
"Duskull",
"Dusclops",
"Dusknoir",
"Machop",
"Machoke",
"Machamp",
"Gastly",
"Haunter",
"Gengar",
"Magikarp",
"Gyarados",
"Goldeen",
"Seaking",
"Remoraid",
"Octillery",
"Shellder",
"Cloyster",
"Feebas",
"Milotic",
"Basculin",
"Wishiwashi",
"Pyukumuku",
"Trubbish",
"Garbodor",
"Sizzlipede",
"Centiskorch",
"Rolycoly",
"Carkol",
"Coalossal",
"Diglett",
"Dugtrio",
"Drilbur",
"Excadrill",
"Roggenrola",
"Boldore",
"Gigalith",
"Timburr",
"Gurdurr",
"Conkeldurr",
"Woobat",
"Swoobat",
"Noibat",
"Noivern",
"Onix",
"Steelix",
"Arrokuda",
"Barraskewda",
"Meowth",
"Perrserker",
"Persian",
"Milcery",
"Alcremie",
"Cutiefly",
"Ribombee",
"Ferroseed",
"Ferrothorn",
"Pumpkaboo",
"Gourgeist",
"Pichu",
"Pikachu",
"Raichu",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Sylveon",
"Applin",
"Flapple",
"Appletun",
"Espurr",
"Meowstic",
"Swirlix",
"Slurpuff",
"Spritzee",
"Aromatisse",
"Dewpider",
"Araquanid",
"Wynaut",
"Wobbuffet",
"Farfetch\u2019d",
"Sirfetch\u2019d",
"Chinchou",
"Lanturn",
"Croagunk",
"Toxicroak",
"Scraggy",
"Scrafty",
"Stunfisk",
"Shuckle",
"Barboach",
"Whiscash",
"Shellos",
"Gastrodon",
"Wimpod",
"Golisopod",
"Binacle",
"Barbaracle",
"Corsola",
"Cursola",
"Impidimp",
"Morgrem",
"Grimmsnarl",
"Hatenna",
"Hattrem",
"Hatterene",
"Salandit",
"Salazzle",
"Pawniard",
"Bisharp",
"Throh",
"Sawk",
"Koffing",
"Weezing",
"Bonsly",
"Sudowoodo",
"Cleffa",
"Clefairy",
"Clefable",
"Togepi",
"Togetic",
"Togekiss",
"Munchlax",
"Snorlax",
"Cottonee",
"Whimsicott",
"Rhyhorn",
"Rhydon",
"Rhyperior",
"Gothita",
"Gothorita",
"Gothitelle",
"Solosis",
"Duosion",
"Reuniclus",
"Karrablast",
"Escavalier",
"Shelmet",
"Accelgor",
"Elgyem",
"Beheeyem",
"Cubchoo",
"Beartic",
"Rufflet",
"Braviary",
"Vullaby",
"Mandibuzz",
"Skorupi",
"Drapion",
"Litwick",
"Lampent",
"Chandelure",
"Inkay",
"Malamar",
"Sneasel",
"Weavile",
"Sableye",
"Mawile",
"Maractus",
"Sigilyph",
"Riolu",
"Lucario",
"Torkoal",
"Mimikyu",
"Cufant",
"Copperajah",
"Qwilfish",
"Frillish",
"Jellicent",
"Mareanie",
"Toxapex",
"Cramorant",
"Toxel",
"Toxtricity",
"Toxtricity-Low-Key",
"Silicobra",
"Sandaconda",
"Hippopotas",
"Hippowdon",
"Durant",
"Heatmor",
"Helioptile",
"Heliolisk",
"Hawlucha",
"Trapinch",
"Vibrava",
"Flygon",
"Axew",
"Fraxure",
"Haxorus",
"Yamask",
"Runerigus",
"Cofagrigus",
"Honedge",
"Doublade",
"Aegislash",
"Ponyta",
"Rapidash",
"Sinistea",
"Polteageist",
"Indeedee",
"Phantump",
"Trevenant",
"Morelull",
"Shiinotic",
"Oranguru",
"Passimian",
"Morpeko",
"Falinks",
"Drampa",
"Turtonator",
"Togedemaru",
"Snom",
"Frosmoth",
"Clobbopus",
"Grapploct",
"Pincurchin",
"Mantyke",
"Mantine",
"Wailmer",
"Wailord",
"Bergmite",
"Avalugg",
"Dhelmise",
"Lapras",
"Lunatone",
"Solrock",
"Mime Jr.",
"Mr. Mime",
"Mr. Rime",
"Darumaka",
"Darmanitan",
"Stonjourner",
"Eiscue",
"Duraludon",
"Rotom",
"Ditto",
"Dracozolt",
"Arctozolt",
"Dracovish",
"Arctovish",
"Charmander",
"Charmeleon",
"Charizard",
"Type: Null",
"Silvally",
"Larvitar",
"Pupitar",
"Tyranitar",
"Deino",
"Zweilous",
"Hydreigon",
"Goomy",
"Sliggoo",
"Goodra",
"Jangmo-o",
"Hakamo-o",
"Kommo-o",
"Dreepy",
"Drakloak",
"Dragapult"
];
const species = this.dex.species.get(set.species || set.name);
if (!galarDex.includes(species.baseSpecies) && !galarDex.includes(species.name) && !this.ruleTable.has("+" + species.id)) {
return [`${species.baseSpecies} is not in the Galar Pok\xE9dex.`];
}
}
},
isleofarmorpokedex: {
effectType: "ValidatorRule",
name: "Isle of Armor Pokedex",
desc: "Only allows Pokémon native to the Isle of Armor in the Galar Region (Sw/Sh DLC1)",
onValidateSet(set, format) {
const ioaDex = [
"Slowpoke",
"Slowbro",
"Slowking",
"Buneary",
"Lopunny",
"Happiny",
"Chansey",
"Blissey",
"Skwovet",
"Greedent",
"Igglybuff",
"Jigglypuff",
"Wigglytuff",
"Blipbug",
"Dottler",
"Fomantis",
"Lurantis",
"Applin",
"Flapple",
"Appletun",
"Fletchling",
"Fletchinder",
"Talonflame",
"Shinx",
"Luxio",
"Luxray",
"Klefki",
"Pawniard",
"Bisharp",
"Abra",
"Kadabra",
"Alakazam",
"Ralts",
"Kirlia",
"Gardevoir",
"Gallade",
"Krabby",
"Kingler",
"Tentacool",
"Tentacruel",
"Magikarp",
"Gyarados",
"Remoraid",
"Octillery",
"Mantyke",
"Mantine",
"Wingull",
"Pelipper",
"Skorupi",
"Drapion",
"Dunsparce",
"Bouffalant",
"Lickitung",
"Lickilicky",
"Chewtle",
"Drednaw",
"Wooper",
"Quagsire",
"Goomy",
"Sliggoo",
"Goodra",
"Druddigon",
"Shelmet",
"Accelgor",
"Karrablast",
"Escavalier",
"Bulbasaur",
"Ivysaur",
"Venusaur",
"Squirtle",
"Wartortle",
"Blastoise",
"Venipede",
"Whirlipede",
"Scolipede",
"Foongus",
"Amoonguss",
"Comfey",
"Tangela",
"Tangrowth",
"Croagunk",
"Toxicroak",
"Pichu",
"Pikachu",
"Raichu",
"Zorua",
"Zoroark",
"Oranguru",
"Passimian",
"Corphish",
"Crawdaunt",
"Cramorant",
"Goldeen",
"Seaking",
"Arrokuda",
"Barraskewda",
"Staryu",
"Starmie",
"Kubfu",
"Urshifu",
"Emolga",
"Dedenne",
"Morpeko",
"Magnemite",
"Magneton",
"Magnezone",
"Inkay",
"Malamar",
"Wishiwashi",
"Carvanha",
"Sharpedo",
"Lillipup",
"Herdier",
"Stoutland",
"Tauros",
"Miltank",
"Scyther",
"Scizor",
"Pinsir",
"Heracross",
"Dwebble",
"Crustle",
"Wimpod",
"Golisopod",
"Pincurchin",
"Mareanie",
"Toxapex",
"Clobbopus",
"Grapploct",
"Shellder",
"Cloyster",
"Sandygast",
"Palossand",
"Drifloon",
"Drifblim",
"Barboach",
"Whiscash",
"Azurill",
"Marill",
"Azumarill",
"Poliwag",
"Poliwhirl",
"Poliwrath",
"Politoed",
"Psyduck",
"Golduck",
"Whismur",
"Loudred",
"Exploud",
"Woobat",
"Swoobat",
"Skarmory",
"Roggenrola",
"Boldore",
"Gigalith",
"Rockruff",
"Lycanroc",
"Salandit",
"Salazzle",
"Scraggy",
"Scrafty",
"Mienfoo",
"Mienshao",
"Jangmo-o",
"Hakamo-o",
"Kommo-o",
"Sandshrew",
"Sandslash",
"Cubone",
"Marowak",
"Kangaskhan",
"Torkoal",
"Silicobra",
"Sandaconda",
"Sandile",
"Krokorok",
"Krookodile",
"Rufflet",
"Braviary",
"Vullaby",
"Mandibuzz",
"Rhyhorn",
"Rhydon",
"Rhyperior",
"Larvesta",
"Volcarona",
"Chinchou",
"Lanturn",
"Wailmer",
"Wailord",
"Frillish",
"Jellicent",
"Skrelp",
"Dragalge",
"Clauncher",
"Clawitzer",
"Horsea",
"Seadra",
"Kingdra",
"Petilil",
"Lilligant",
"Combee",
"Vespiquen",
"Exeggcute",
"Exeggutor",
"Ditto",
"Porygon",
"Porygon2",
"Porygon-Z"
];
const species = this.dex.species.get(set.species || set.name);
if (!ioaDex.includes(species.baseSpecies) && !ioaDex.includes(species.name) && !this.ruleTable.has("+" + species.id)) {
return [`${species.baseSpecies} is not in the Isle of Armor Pok\xE9dex.`];
}
}
},
crowntundrapokedex: {
effectType: "ValidatorRule",
name: "Crown Tundra Pokedex",
desc: "Only allows Pokémon native to the Crown Tundra in the Galar Region (Sw/Sh DLC2)",
onValidateSet(set, format) {
const tundraDex = [
"Nidoran-F",
"Nidorina",
"Nidoqueen",
"Nidoran-M",
"Nidorino",
"Nidoking",
"Clefairy",
"Clefable",
"Zubat",
"Golbat",
"Ponyta",
"Rapidash",
"Mr. Mime",
"Jynx",
"Electabuzz",
"Magmar",
"Magikarp",
"Gyarados",
"Lapras",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Omanyte",
"Omastar",
"Kabuto",
"Kabutops",
"Aerodactyl",
"Snorlax",
"Articuno",
"Zapdos",
"Moltres",
"Dratini",
"Dragonair",
"Dragonite",
"Crobat",
"Cleffa",
"Espeon",
"Umbreon",
"Shuckle",
"Sneasel",
"Swinub",
"Piloswine",
"Delibird",
"Smoochum",
"Elekid",
"Magby",
"Larvitar",
"Pupitar",
"Tyranitar",
"Zigzagoon",
"Linoone",
"Sableye",
"Mawile",
"Aron",
"Lairon",
"Aggron",
"Swablu",
"Altaria",
"Barboach",
"Whiscash",
"Baltoy",
"Claydol",
"Lileep",
"Cradily",
"Anorith",
"Armaldo",
"Feebas",
"Milotic",
"Absol",
"Snorunt",
"Glalie",
"Spheal",
"Sealeo",
"Walrein",
"Relicanth",
"Bagon",
"Shelgon",
"Salamence",
"Beldum",
"Metang",
"Metagross",
"Regirock",
"Regice",
"Registeel",
"Bronzor",
"Bronzong",
"Spiritomb",
"Gible",
"Gabite",
"Garchomp",
"Munchlax",
"Riolu",
"Lucario",
"Snover",
"Abomasnow",
"Weavile",
"Electivire",
"Magmortar",
"Leafeon",
"Glaceon",
"Mamoswine",
"Froslass",
"Audino",
"Timburr",
"Gurdurr",
"Conkeldurr",
"Cottonee",
"Whimsicott",
"Basculin",
"Darumaka",
"Darmanitan",
"Tirtouga",
"Carracosta",
"Archen",
"Archeops",
"Gothita",
"Gothorita",
"Gothitelle",
"Solosis",
"Duosion",
"Reuniclus",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Karrablast",
"Escavalier",
"Joltik",
"Galvantula",
"Ferroseed",
"Ferrothorn",
"Litwick",
"Lampent",
"Chandelure",
"Cubchoo",
"Beartic",
"Cryogonal",
"Shelmet",
"Accelgor",
"Druddigon",
"Golett",
"Golurk",
"Heatmor",
"Durant",
"Deino",
"Zweilous",
"Hydreigon",
"Cobalion",
"Terrakion",
"Virizion",
"Tyrunt",
"Tyrantrum",
"Amaura",
"Aurorus",
"Sylveon",
"Carbink",
"Phantump",
"Trevenant",
"Bergmite",
"Avalugg",
"Noibat",
"Noivern",
"Dewpider",
"Araquanid",
"Mimikyu",
"Dhelmise",
"Skwovet",
"Greedent",
"Rookidee",
"Corvisquire",
"Corviknight",
"Gossifleur",
"Eldegoss",
"Wooloo",
"Dubwool",
"Yamper",
"Boltund",
"Rolycoly",
"Carkol",
"Coalossal",
"Sizzlipede",
"Centiskorch",
"Sinistea",
"Polteageist",
"Hatenna",
"Hattrem",
"Hatterene",
"Impidimp",
"Morgrem",
"Grimmsnarl",
"Obstagoon",
"Mr. Rime",
"Pincurchin",
"Snom",
"Frosmoth",
"Stonjourner",
"Eiscue",
"Indeedee",
"Morpeko",
"Cufant",
"Copperajah",
"Dreepy",
"Drakloak",
"Dragapult",
"Regieleki",
"Regidrago",
"Glastrier",
"Spectrier"
];
const species = this.dex.species.get(set.species || set.name);
if (!tundraDex.includes(species.baseSpecies) && !tundraDex.includes(species.name)) {
return [`${species.baseSpecies} is not in the Crown Tundra Pok\xE9dex.`];
}
}
},
galarexpansionpokedex: {
effectType: "ValidatorRule",
name: "Galar Expansion Pokedex",
desc: "Only allows Pokémon native to the Galar region, Isle of Armor, or Crown Tundra (Sw/Sh + Expansion Pass)",
onValidateSet(set, format) {
const galarDex = [
"Grookey",
"Thwackey",
"Rillaboom",
"Scorbunny",
"Raboot",
"Cinderace",
"Sobble",
"Drizzile",
"Inteleon",
"Blipbug",
"Dottler",
"Orbeetle",
"Caterpie",
"Metapod",
"Butterfree",
"Grubbin",
"Charjabug",
"Vikavolt",
"Hoothoot",
"Noctowl",
"Rookidee",
"Corvisquire",
"Corviknight",
"Skwovet",
"Greedent",
"Pidove",
"Tranquill",
"Unfezant",
"Nickit",
"Thievul",
"Zigzagoon",
"Linoone",
"Obstagoon",
"Wooloo",
"Dubwool",
"Lotad",
"Lombre",
"Ludicolo",
"Seedot",
"Nuzleaf",
"Shiftry",
"Chewtle",
"Drednaw",
"Purrloin",
"Liepard",
"Yamper",
"Boltund",
"Bunnelby",
"Diggersby",
"Minccino",
"Cinccino",
"Bounsweet",
"Steenee",
"Tsareena",
"Oddish",
"Gloom",
"Vileplume",
"Bellossom",
"Budew",
"Roselia",
"Roserade",
"Wingull",
"Pelipper",
"Joltik",
"Galvantula",
"Electrike",
"Manectric",
"Vulpix",
"Ninetales",
"Growlithe",
"Arcanine",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Swinub",
"Piloswine",
"Mamoswine",
"Delibird",
"Snorunt",
"Glalie",
"Froslass",
"Baltoy",
"Claydol",
"Mudbray",
"Mudsdale",
"Dwebble",
"Crustle",
"Golett",
"Golurk",
"Munna",
"Musharna",
"Natu",
"Xatu",
"Stufful",
"Bewear",
"Snover",
"Abomasnow",
"Krabby",
"Kingler",
"Wooper",
"Quagsire",
"Corphish",
"Crawdaunt",
"Nincada",
"Ninjask",
"Shedinja",
"Tyrogue",
"Hitmonlee",
"Hitmonchan",
"Hitmontop",
"Pancham",
"Pangoro",
"Klink",
"Klang",
"Klinklang",
"Combee",
"Vespiquen",
"Bronzor",
"Bronzong",
"Ralts",
"Kirlia",
"Gardevoir",
"Gallade",
"Drifloon",
"Drifblim",
"Gossifleur",
"Eldegoss",
"Cherubi",
"Cherrim",
"Stunky",
"Skuntank",
"Tympole",
"Palpitoad",
"Seismitoad",
"Duskull",
"Dusclops",
"Dusknoir",
"Machop",
"Machoke",
"Machamp",
"Gastly",
"Haunter",
"Gengar",
"Magikarp",
"Gyarados",
"Goldeen",
"Seaking",
"Remoraid",
"Octillery",
"Shellder",
"Cloyster",
"Feebas",
"Milotic",
"Basculin",
"Wishiwashi",
"Pyukumuku",
"Trubbish",
"Garbodor",
"Sizzlipede",
"Centiskorch",
"Rolycoly",
"Carkol",
"Coalossal",
"Diglett",
"Dugtrio",
"Drilbur",
"Excadrill",
"Roggenrola",
"Boldore",
"Gigalith",
"Timburr",
"Gurdurr",
"Conkeldurr",
"Woobat",
"Swoobat",
"Noibat",
"Noivern",
"Onix",
"Steelix",
"Arrokuda",
"Barraskewda",
"Meowth",
"Perrserker",
"Persian",
"Milcery",
"Alcremie",
"Cutiefly",
"Ribombee",
"Ferroseed",
"Ferrothorn",
"Pumpkaboo",
"Gourgeist",
"Pichu",
"Pikachu",
"Raichu",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Sylveon",
"Applin",
"Flapple",
"Appletun",
"Espurr",
"Meowstic",
"Swirlix",
"Slurpuff",
"Spritzee",
"Aromatisse",
"Dewpider",
"Araquanid",
"Wynaut",
"Wobbuffet",
"Farfetch\u2019d",
"Sirfetch\u2019d",
"Chinchou",
"Lanturn",
"Croagunk",
"Toxicroak",
"Scraggy",
"Scrafty",
"Stunfisk",
"Shuckle",
"Barboach",
"Whiscash",
"Shellos",
"Gastrodon",
"Wimpod",
"Golisopod",
"Binacle",
"Barbaracle",
"Corsola",
"Cursola",
"Impidimp",
"Morgrem",
"Grimmsnarl",
"Hatenna",
"Hattrem",
"Hatterene",
"Salandit",
"Salazzle",
"Pawniard",
"Bisharp",
"Throh",
"Sawk",
"Koffing",
"Weezing",
"Bonsly",
"Sudowoodo",
"Cleffa",
"Clefairy",
"Clefable",
"Togepi",
"Togetic",
"Togekiss",
"Munchlax",
"Snorlax",
"Cottonee",
"Whimsicott",
"Rhyhorn",
"Rhydon",
"Rhyperior",
"Gothita",
"Gothorita",
"Gothitelle",
"Solosis",
"Duosion",
"Reuniclus",
"Karrablast",
"Escavalier",
"Shelmet",
"Accelgor",
"Elgyem",
"Beheeyem",
"Cubchoo",
"Beartic",
"Rufflet",
"Braviary",
"Vullaby",
"Mandibuzz",
"Skorupi",
"Drapion",
"Litwick",
"Lampent",
"Chandelure",
"Inkay",
"Malamar",
"Sneasel",
"Weavile",
"Sableye",
"Mawile",
"Maractus",
"Sigilyph",
"Riolu",
"Lucario",
"Torkoal",
"Mimikyu",
"Cufant",
"Copperajah",
"Qwilfish",
"Frillish",
"Jellicent",
"Mareanie",
"Toxapex",
"Cramorant",
"Toxel",
"Toxtricity",
"Toxtricity-Low-Key",
"Silicobra",
"Sandaconda",
"Hippopotas",
"Hippowdon",
"Durant",
"Heatmor",
"Helioptile",
"Heliolisk",
"Hawlucha",
"Trapinch",
"Vibrava",
"Flygon",
"Axew",
"Fraxure",
"Haxorus",
"Yamask",
"Runerigus",
"Cofagrigus",
"Honedge",
"Doublade",
"Aegislash",
"Ponyta",
"Rapidash",
"Sinistea",
"Polteageist",
"Indeedee",
"Phantump",
"Trevenant",
"Morelull",
"Shiinotic",
"Oranguru",
"Passimian",
"Morpeko",
"Falinks",
"Drampa",
"Turtonator",
"Togedemaru",
"Snom",
"Frosmoth",
"Clobbopus",
"Grapploct",
"Pincurchin",
"Mantyke",
"Mantine",
"Wailmer",
"Wailord",
"Bergmite",
"Avalugg",
"Dhelmise",
"Lapras",
"Lunatone",
"Solrock",
"Mime Jr.",
"Mr. Mime",
"Mr. Rime",
"Darumaka",
"Darmanitan",
"Stonjourner",
"Eiscue",
"Duraludon",
"Rotom",
"Ditto",
"Dracozolt",
"Arctozolt",
"Dracovish",
"Arctovish",
"Charmander",
"Charmeleon",
"Charizard",
"Type: Null",
"Silvally",
"Larvitar",
"Pupitar",
"Tyranitar",
"Deino",
"Zweilous",
"Hydreigon",
"Goomy",
"Sliggoo",
"Goodra",
"Jangmo-o",
"Hakamo-o",
"Kommo-o",
"Dreepy",
"Drakloak",
"Dragapult",
"Slowpoke",
"Slowbro",
"Slowking",
"Buneary",
"Lopunny",
"Happiny",
"Chansey",
"Blissey",
"Skwovet",
"Greedent",
"Igglybuff",
"Jigglypuff",
"Wigglytuff",
"Blipbug",
"Dottler",
"Fomantis",
"Lurantis",
"Applin",
"Flapple",
"Appletun",
"Fletchling",
"Fletchinder",
"Talonflame",
"Shinx",
"Luxio",
"Luxray",
"Klefki",
"Pawniard",
"Bisharp",
"Abra",
"Kadabra",
"Alakazam",
"Ralts",
"Kirlia",
"Gardevoir",
"Gallade",
"Krabby",
"Kingler",
"Tentacool",
"Tentacruel",
"Magikarp",
"Gyarados",
"Remoraid",
"Octillery",
"Mantyke",
"Mantine",
"Wingull",
"Pelipper",
"Skorupi",
"Drapion",
"Dunsparce",
"Bouffalant",
"Lickitung",
"Lickilicky",
"Chewtle",
"Drednaw",
"Wooper",
"Quagsire",
"Goomy",
"Sliggoo",
"Goodra",
"Druddigon",
"Shelmet",
"Accelgor",
"Karrablast",
"Escavalier",
"Bulbasaur",
"Ivysaur",
"Venusaur",
"Squirtle",
"Wartortle",
"Blastoise",
"Venipede",
"Whirlipede",
"Scolipede",
"Foongus",
"Amoonguss",
"Comfey",
"Tangela",
"Tangrowth",
"Croagunk",
"Toxicroak",
"Pichu",
"Pikachu",
"Raichu",
"Zorua",
"Zoroark",
"Oranguru",
"Passimian",
"Corphish",
"Crawdaunt",
"Cramorant",
"Goldeen",
"Seaking",
"Arrokuda",
"Barraskewda",
"Staryu",
"Starmie",
"Kubfu",
"Urshifu",
"Emolga",
"Dedenne",
"Morpeko",
"Magnemite",
"Magneton",
"Magnezone",
"Inkay",
"Malamar",
"Wishiwashi",
"Carvanha",
"Sharpedo",
"Lillipup",
"Herdier",
"Stoutland",
"Tauros",
"Miltank",
"Scyther",
"Scizor",
"Pinsir",
"Heracross",
"Dwebble",
"Crustle",
"Wimpod",
"Golisopod",
"Pincurchin",
"Mareanie",
"Toxapex",
"Clobbopus",
"Grapploct",
"Shellder",
"Cloyster",
"Sandygast",
"Palossand",
"Drifloon",
"Drifblim",
"Barboach",
"Whiscash",
"Azurill",
"Marill",
"Azumarill",
"Poliwag",
"Poliwhirl",
"Poliwrath",
"Politoed",
"Psyduck",
"Golduck",
"Whismur",
"Loudred",
"Exploud",
"Woobat",
"Swoobat",
"Skarmory",
"Roggenrola",
"Boldore",
"Gigalith",
"Rockruff",
"Lycanroc",
"Salandit",
"Salazzle",
"Scraggy",
"Scrafty",
"Mienfoo",
"Mienshao",
"Jangmo-o",
"Hakamo-o",
"Kommo-o",
"Sandshrew",
"Sandslash",
"Cubone",
"Marowak",
"Kangaskhan",
"Torkoal",
"Silicobra",
"Sandaconda",
"Sandile",
"Krokorok",
"Krookodile",
"Rufflet",
"Braviary",
"Vullaby",
"Mandibuzz",
"Rhyhorn",
"Rhydon",
"Rhyperior",
"Larvesta",
"Volcarona",
"Chinchou",
"Lanturn",
"Wailmer",
"Wailord",
"Frillish",
"Jellicent",
"Skrelp",
"Dragalge",
"Clauncher",
"Clawitzer",
"Horsea",
"Seadra",
"Kingdra",
"Petilil",
"Lilligant",
"Combee",
"Vespiquen",
"Exeggcute",
"Exeggutor",
"Ditto",
"Porygon",
"Porygon2",
"Porygon-Z",
"Nidoran-F",
"Nidorina",
"Nidoqueen",
"Nidoran-M",
"Nidorino",
"Nidoking",
"Clefairy",
"Clefable",
"Zubat",
"Golbat",
"Ponyta",
"Rapidash",
"Mr. Mime",
"Jynx",
"Electabuzz",
"Magmar",
"Magikarp",
"Gyarados",
"Lapras",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Omanyte",
"Omastar",
"Kabuto",
"Kabutops",
"Aerodactyl",
"Snorlax",
"Articuno",
"Zapdos",
"Moltres",
"Dratini",
"Dragonair",
"Dragonite",
"Crobat",
"Cleffa",
"Espeon",
"Umbreon",
"Shuckle",
"Sneasel",
"Swinub",
"Piloswine",
"Delibird",
"Smoochum",
"Elekid",
"Magby",
"Larvitar",
"Pupitar",
"Tyranitar",
"Zigzagoon",
"Linoone",
"Sableye",
"Mawile",
"Aron",
"Lairon",
"Aggron",
"Swablu",
"Altaria",
"Barboach",
"Whiscash",
"Baltoy",
"Claydol",
"Lileep",
"Cradily",
"Anorith",
"Armaldo",
"Feebas",
"Milotic",
"Absol",
"Snorunt",
"Glalie",
"Spheal",
"Sealeo",
"Walrein",
"Relicanth",
"Bagon",
"Shelgon",
"Salamence",
"Beldum",
"Metang",
"Metagross",
"Regirock",
"Regice",
"Registeel",
"Bronzor",
"Bronzong",
"Spiritomb",
"Gible",
"Gabite",
"Garchomp",
"Munchlax",
"Riolu",
"Lucario",
"Snover",
"Abomasnow",
"Weavile",
"Electivire",
"Magmortar",
"Leafeon",
"Glaceon",
"Mamoswine",
"Froslass",
"Audino",
"Timburr",
"Gurdurr",
"Conkeldurr",
"Cottonee",
"Whimsicott",
"Basculin",
"Darumaka",
"Darmanitan",
"Tirtouga",
"Carracosta",
"Archen",
"Archeops",
"Gothita",
"Gothorita",
"Gothitelle",
"Solosis",
"Duosion",
"Reuniclus",
"Vanillite",
"Vanillish",
"Vanilluxe",
"Karrablast",
"Escavalier",
"Joltik",
"Galvantula",
"Ferroseed",
"Ferrothorn",
"Litwick",
"Lampent",
"Chandelure",
"Cubchoo",
"Beartic",
"Cryogonal",
"Shelmet",
"Accelgor",
"Druddigon",
"Golett",
"Golurk",
"Heatmor",
"Durant",
"Deino",
"Zweilous",
"Hydreigon",
"Cobalion",
"Terrakion",
"Virizion",
"Tyrunt",
"Tyrantrum",
"Amaura",
"Aurorus",
"Sylveon",
"Carbink",
"Phantump",
"Trevenant",
"Bergmite",
"Avalugg",
"Noibat",
"Noivern",
"Dewpider",
"Araquanid",
"Mimikyu",
"Dhelmise",
"Skwovet",
"Greedent",
"Rookidee",
"Corvisquire",
"Corviknight",
"Gossifleur",
"Eldegoss",
"Wooloo",
"Dubwool",
"Yamper",
"Boltund",
"Rolycoly",
"Carkol",
"Coalossal",
"Sizzlipede",
"Centiskorch",
"Sinistea",
"Polteageist",
"Hatenna",
"Hattrem",
"Hatterene",
"Impidimp",
"Morgrem",
"Grimmsnarl",
"Obstagoon",
"Mr. Rime",
"Pincurchin",
"Snom",
"Frosmoth",
"Stonjourner",
"Eiscue",
"Indeedee",
"Morpeko",
"Cufant",
"Copperajah",
"Dreepy",
"Drakloak",
"Dragapult",
"Regieleki",
"Regidrago",
"Glastrier",
"Spectrier"
];
const species = this.dex.species.get(set.species || set.name);
if (!galarDex.includes(species.baseSpecies) && !galarDex.includes(species.name)) {
return [`${species.baseSpecies} is not in the Galar, Isle of Armor, or Crown Tundra Pok\xE9dexes.`];
}
}
},
paldeapokedex: {
effectType: "ValidatorRule",
name: "Paldea Pokedex",
desc: "Only allows Pokémon native to the Paldea region (SV)",
banlist: ["Meowth-Galar", "Tauros-Base", "Wooper-Base", "Zorua-Hisui", "Zoroark-Hisui"],
onValidateSet(set, format) {
const paldeaDex = [
"Sprigatito",
"Floragato",
"Meowscarada",
"Fuecoco",
"Crocalor",
"Skeledirge",
"Quaxly",
"Quaxwell",
"Quaquaval",
"Lechonk",
"Oinkologne",
"Tarountula",
"Spidops",
"Nymble",
"Lokix",
"Hoppip",
"Skiploom",
"Jumpluff",
"Fletchling",
"Fletchinder",
"Talonflame",
"Pawmi",
"Pawmo",
"Pawmot",
"Houndour",
"Houndoom",
"Yungoos",
"Gumshoos",
"Skwovet",
"Greedent",
"Sunkern",
"Sunflora",
"Kricketot",
"Kricketune",
"Scatterbug",
"Spewpa",
"Vivillon",
"Combee",
"Vespiquen",
"Rookidee",
"Corvisquire",
"Corviknight",
"Happiny",
"Chansey",
"Blissey",
"Azurill",
"Marill",
"Azumarill",
"Surskit",
"Masquerain",
"Buizel",
"Floatzel",
"Wooper",
"Clodsire",
"Psyduck",
"Golduck",
"Chewtle",
"Drednaw",
"Igglybuff",
"Jigglypuff",
"Wigglytuff",
"Ralts",
"Kirlia",
"Gardevoir",
"Gallade",
"Drowzee",
"Hypno",
"Gastly",
"Haunter",
"Gengar",
"Tandemaus",
"Maushold",
"Pichu",
"Pikachu",
"Raichu",
"Fidough",
"Dachsbun",
"Slakoth",
"Vigoroth",
"Slaking",
"Bounsweet",
"Steenee",
"Tsareena",
"Smoliv",
"Dolliv",
"Arboliva",
"Bonsly",
"Sudowoodo",
"Rockruff",
"Lycanroc",
"Rolycoly",
"Carkol",
"Coalossal",
"Shinx",
"Luxio",
"Luxray",
"Starly",
"Staravia",
"Staraptor",
"Oricorio",
"Mareep",
"Flaaffy",
"Ampharos",
"Petilil",
"Lilligant",
"Shroomish",
"Breloom",
"Applin",
"Flapple",
"Appletun",
"Spoink",
"Grumpig",
"Squawkabilly",
"Misdreavus",
"Mismagius",
"Makuhita",
"Hariyama",
"Crabrawler",
"Crabominable",
"Salandit",
"Salazzle",
"Phanpy",
"Donphan",
"Cufant",
"Copperajah",
"Gible",
"Gabite",
"Garchomp",
"Nacli",
"Naclstack",
"Garganacl",
"Wingull",
"Pelipper",
"Magikarp",
"Gyarados",
"Arrokuda",
"Barraskewda",
"Basculin",
"Gulpin",
"Swalot",
"Meowth",
"Persian",
"Drifloon",
"Drifblim",
"Flabe\u0301be\u0301",
"Floette",
"Florges",
"Diglett",
"Dugtrio",
"Torkoal",
"Numel",
"Camerupt",
"Bronzor",
"Bronzong",
"Axew",
"Fraxure",
"Haxorus",
"Mankey",
"Primeape",
"Annihilape",
"Meditite",
"Medicham",
"Riolu",
"Lucario",
"Charcadet",
"Armarouge",
"Ceruledge",
"Barboach",
"Whiscash",
"Tadbulb",
"Bellibolt",
"Goomy",
"Sliggoo",
"Goodra",
"Croagunk",
"Toxicroak",
"Wattrel",
"Kilowattrel",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Espeon",
"Umbreon",
"Leafeon",
"Glaceon",
"Sylveon",
"Dunsparce",
"Dudunsparce",
"Deerling",
"Sawsbuck",
"Girafarig",
"Farigiraf",
"Grimer",
"Muk",
"Maschiff",
"Mabosstiff",
"Toxel",
"Toxtricity",
"Dedenne",
"Pachirisu",
"Shroodle",
"Grafaiai",
"Stantler",
"Foongus",
"Amoonguss",
"Voltorb",
"Electrode",
"Magnemite",
"Magneton",
"Magnezone",
"Ditto",
"Growlithe",
"Arcanine",
"Teddiursa",
"Ursaring",
"Zangoose",
"Seviper",
"Swablu",
"Altaria",
"Skiddo",
"Gogoat",
"Tauros",
"Litleo",
"Pyroar",
"Stunky",
"Skuntank",
"Zorua",
"Zoroark",
"Sneasel",
"Weavile",
"Murkrow",
"Honchkrow",
"Gothita",
"Gothorita",
"Gothitelle",
"Sinistea",
"Polteageist",
"Mimikyu",
"Klefki",
"Indeedee",
"Bramblin",
"Brambleghast",
"Toedscool",
"Toedscruel",
"Tropius",
"Fomantis",
"Lurantis",
"Klawf",
"Capsakid",
"Scovillain",
"Cacnea",
"Cacturne",
"Rellor",
"Rabsca",
"Venonat",
"Venomoth",
"Pineco",
"Forretress",
"Scyther",
"Scizor",
"Heracross",
"Flittle",
"Espathra",
"Hippopotas",
"Hippowdon",
"Sandile",
"Krokorok",
"Krookodile",
"Silicobra",
"Sandaconda",
"Mudbray",
"Mudsdale",
"Larvesta",
"Volcarona",
"Bagon",
"Shelgon",
"Salamence",
"Tinkatink",
"Tinkatuff",
"Tinkaton",
"Hatenna",
"Hattrem",
"Hatterene",
"Impidimp",
"Morgrem",
"Grimmsnarl",
"Wiglett",
"Wugtrio",
"Bombirdier",
"Finizen",
"Palafin",
"Varoom",
"Revavroom",
"Cyclizar",
"Orthworm",
"Sableye",
"Shuppet",
"Banette",
"Falinks",
"Hawlucha",
"Spiritomb",
"Noibat",
"Noivern",
"Dreepy",
"Drakloak",
"Dragapult",
"Glimmet",
"Glimmora",
"Rotom",
"Greavard",
"Houndstone",
"Oranguru",
"Passimian",
"Komala",
"Larvitar",
"Pupitar",
"Tyranitar",
"Stonjourner",
"Eiscue",
"Pincurchin",
"Sandygast",
"Palossand",
"Slowpoke",
"Slowbro",
"Slowking",
"Shellos",
"Gastrodon",
"Shellder",
"Cloyster",
"Qwilfish",
"Luvdisc",
"Finneon",
"Lumineon",
"Bruxish",
"Alomomola",
"Skrelp",
"Dragalge",
"Clauncher",
"Clawitzer",
"Tynamo",
"Eelektrik",
"Eelektross",
"Mareanie",
"Toxapex",
"Flamigo",
"Dratini",
"Dragonair",
"Dragonite",
"Snom",
"Frosmoth",
"Snover",
"Abomasnow",
"Delibird",
"Cubchoo",
"Beartic",
"Snorunt",
"Glalie",
"Froslass",
"Cryogonal",
"Cetoddle",
"Cetitan",
"Bergmite",
"Avalugg",
"Rufflet",
"Braviary",
"Pawniard",
"Bisharp",
"Kingambit",
"Deino",
"Zweilous",
"Hydreigon",
"Veluza",
"Dondozo",
"Tatsugiri",
"Great Tusk",
"Scream Tail",
"Brute Bonnet",
"Flutter Mane",
"Slither Wing",
"Sandy Shocks",
"Iron Treads",
"Iron Bundle",
"Iron Hands",
"Iron Jugulis",
"Iron Moth",
"Iron Thorns",
"Frigibax",
"Arctibax",
"Baxcalibur",
"Gimmighoul",
"Gholdengo",
"Wo-Chien",
"Chien-Pao",
"Ting-Lu",
"Chi-Yu",
"Roaring Moon",
"Iron Valiant",
"Koraidon",
"Miraidon"
];
const species = this.dex.species.get(set.species || set.name);
if (!paldeaDex.includes(species.baseSpecies) && !paldeaDex.includes(species.name) && !this.ruleTable.has("+" + species.id)) {
return [`${species.baseSpecies} is not in the Paldea Pok\xE9dex.`];
}
}
},
potd: {
effectType: "Rule",
name: "PotD",
desc: "Forces the Pokemon of the Day onto every random team.",
onBegin() {
if (global.Config && global.Config.potd) {
this.add("rule", "Pokemon of the Day: " + this.dex.species.get(Config.potd).name);
}
}
},
forcemonotype: {
effectType: "ValidatorRule",
name: "Force Monotype",
desc: `Forces all teams to have the same type. Usage: Force Monotype = [Type], e.g. "Force Monotype = Water"`,
hasValue: true,
onValidateRule(value) {
const type = this.dex.types.get(value);
if (!type.exists)
throw new Error(`Misspelled type "${value}"`);
if (["Dark", "Steel"].includes(type.name) && this.dex.gen < 2 || type.name === "Fairy" && this.dex.gen < 6) {
throw new Error(`Invalid type "${type.name}" in Generation ${this.dex.gen}`);
}
},
onValidateSet(set) {
const species = this.dex.species.get(set.species);
const type = this.dex.types.get(this.ruleTable.valueRules.get("forcemonotype"));
if (!species.types.map(this.toID).includes(type.id)) {
return [`${set.species} must have ${type.name} type.`];
}
}
},
forceselect: {
effectType: "ValidatorRule",
name: "Force Select",
desc: `Forces a Pokemon to be on the team and selected at Team Preview. Usage: Force Select = [Pokemon], e.g. "Force Select = Magikarp"`,
hasValue: true,
onValidateRule(value) {
if (!this.dex.species.get(value).exists)
throw new Error(`Misspelled Pokemon "${value}"`);
},
onValidateTeam(team) {
let hasSelection = false;
const species = this.dex.species.get(this.ruleTable.valueRules.get("forceselect"));
for (const set of team) {
if (species.name === set.species) {
hasSelection = true;
break;
}
}
if (!hasSelection) {
return [`Your team must contain ${species.name}.`];
}
}
// hardcoded in sim/side
},
evlimits: {
effectType: "ValidatorRule",
name: "EV Limits",
desc: 'Require EVs to be in specific ranges, such as: "EV Limits = Atk 0-124 / Def 100-252"',
hasValue: true,
onValidateRule(value) {
if (!value)
throw new Error(`To remove EV limits, use "! EV Limits"`);
const slashedParts = value.split("/");
const UINT_REGEX = /^[0-9]{1,4}$/;
return slashedParts.map((slashedPart) => {
const parts = slashedPart.replace("-", " - ").replace(/ +/g, " ").trim().split(" ");
const [stat, low, hyphen, high] = parts;
if (parts.length !== 4 || !UINT_REGEX.test(low) || hyphen !== "-" || !UINT_REGEX.test(high)) {
throw new Error(`EV limits should be in the format "EV Limits = Atk 0-124 / Def 100-252"`);
}
const statid = this.dex.toID(stat);
if (!this.dex.stats.ids().includes(statid)) {
throw new Error(`Unrecognized stat name "${stat}" in "${value}"`);
}
return `${statid} ${low}-${high}`;
}).join(" / ");
},
onValidateSet(set) {
const limits = this.ruleTable.valueRules.get("evlimits");
const problems = [];
for (const limit of limits.split(" / ")) {
const [statid, range] = limit.split(" ");
const [low, high] = range.split("-").map((num) => parseInt(num));
const ev = set.evs[statid];
if (ev < low || ev > high) {
problems.push(`${set.name || set.species}'s ${this.dex.stats.names[statid]} EV (${ev}) must be ${low}-${high}`);
}
}
return problems;
}
},
teampreview: {
effectType: "Rule",
name: "Team Preview",
desc: "Allows each player to see the Pokémon on their opponent's team before they choose their lead Pokémon",
onBegin() {
if (this.ruleTable.has(`teratypepreview`)) {
this.add("rule", "Tera Type Preview: Tera Types are shown at Team Preview");
}
},
onTeamPreview() {
this.add("clearpoke");
for (const pokemon of this.getAllPokemon()) {
const details = pokemon.details.replace(", shiny", "").replace(/(Arceus|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");
if (this.ruleTable.has(`teratypepreview`)) {
for (const side of this.sides) {
let buf = ``;
for (const pokemon of side.pokemon) {
buf += buf ? ` / ` : `raw|${side.name}'s Tera Types:
`;
buf += `