diff --git a/config/formats-README.md b/config/formats-README.md new file mode 100644 index 0000000000..bb1f565cc3 --- /dev/null +++ b/config/formats-README.md @@ -0,0 +1,9 @@ +Format storage + +PS imports a `formats.ts` for their tiers. We ignore it. + +`official-formats.ts` is the location that we store Smogon/PS formats, it's effectively just the replacement for `formats.ts`. We keep the format data in there. + +`petmod-formats.ts` is the bulk of our custom tiers. Because of how much work is done to various Petmods, we seperate the actual formats into their mod folders. These are stored in `data\mods`, most are under a `format.ts`, but mods with multiple formats have one file for each tier info. They are called with an ID in the beginning of `petmods-formats.ts`, then referenced to create the actual mod list. + +Feb 2026 - @iforgetwhyimhere \ No newline at end of file diff --git a/config/official-formats.ts b/config/official-formats.ts new file mode 100644 index 0000000000..aa4afe1402 --- /dev/null +++ b/config/official-formats.ts @@ -0,0 +1,305 @@ +// Official formats from Smogon +// Keep seperate from formats.ts +// Refactor 02.--.26 @iforgetwhyimhere + +export const Formats: FormatList = [ +{ + section: "Smogon OU", + column: 4, + // name: "smogonofficials", +}, + { + name: "[Gen 9] OU", + threads: [ + `• SV OU Metagame Discussion`, + `• SV OU Sample Teams`, + `• SV OU Viability Rankings`, + ], + mod: 'gen9', + ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }, + { + name: "[Gen 8] OU", + threads: [ + `• SS OU Metagame Discussion`, + `• SS OU Sample Teams`, + `• SS OU Viability Rankings`, + ], + + mod: 'gen8', + ruleset: ['Standard', 'Dynamax Clause'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass'], + }, + { + name: "[Gen 7] OU", + threads: [ + `• USM OU Metagame Discussion`, + `• USM OU Sample Teams`, + `• USM OU Viability Rankings`, + ], + + mod: 'gen7', + ruleset: ['Standard'], + banlist: ['Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass'], + }, + { + name: "[Gen 6] OU", + threads: [ + `• ORAS OU Metagame Discussion`, + `• ORAS OU Sample Teams`, + `• ORAS OU Viability Rankings`, + ], + + mod: 'gen6', + ruleset: ['Standard', 'Swagger Clause'], + banlist: ['Uber', 'Arena Trap', 'Shadow Tag', 'Soul Dew', 'Baton Pass'], + }, + { + name: "[Gen 5] OU", + threads: [ + `• BW2 OU Metagame Discussion`, + `• BW2 OU Sample Teams`, + `• BW2 OU Viability Rankings`, + ], + + mod: 'gen5', + ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Swagger Clause', 'Gems Clause', 'Baton Pass Stat Clause'], + banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist'], + }, + { + name: "[Gen 4] OU", + threads: [ + `• DPP OU Metagame Discussion`, + `• DPP OU Sample Teams`, + `• DPP OU Viability Rankings`, + ], + + mod: 'gen4', + ruleset: ['Standard', 'Evasion Abilities Clause', 'Baton Pass Stat Trap Clause', 'Freeze Clause Mod'], + banlist: ['AG', 'Uber', 'Arena Trap', 'Quick Claw', 'Soul Dew', 'Swagger'], + }, + { + name: "[Gen 3] OU", + threads: [ + `• ADV OU Metagame Discussion`, + `• ADV OU Sample Teams`, + `• ADV OU Viability Rankings`, + ], + + mod: 'gen3', + ruleset: ['Standard', 'One Boost Passer Clause', 'Freeze Clause Mod'], + banlist: ['Uber', 'Smeargle + Ingrain', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Swagger'], + }, + { + name: "[Gen 2] OU", + threads: [ + `• GSC OU Metagame Discussion`, + `• GSC OU Sample Teams`, + `• GSC OU Viability Rankings`, + ], + + mod: 'gen2', + ruleset: ['Standard'], + banlist: ['Uber', 'Mean Look + Baton Pass', 'Spider Web + Baton Pass'], + }, + { + name: "[Gen 1] OU", + threads: [ + `• RBY OU Metagame Discussion`, + `• RBY OU Sample Teams`, + `• RBY OU Viability Rankings`, + ], + + mod: 'gen1', + ruleset: ['Standard'], + banlist: ['Uber'], + }, + { + section: "Custom Game", + column: 4, + // name: 'customgame', + }, + { + name: "[Gen 9] Custom Game", + mod: 'gen9', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 8] Custom Game", + mod: 'gen8', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 7] Custom Game", + mod: 'gen7', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 6] Custom Game", + mod: 'gen6', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 5] Custom Game", + mod: 'gen5', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 4] Custom Game", + mod: 'gen4', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 3] Custom Game", + mod: 'gen3', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Desync Clause Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 2] Custom Game", + + mod: 'gen2', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 1] Custom Game", + mod: 'gen1', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + section: "PS! Misc", + column: 4, + // name: 'showdowntiers', + }, + { + name: "[Gen 9] LC", + mod: 'gen9', + ruleset: ['Little Cup', 'Standard'], + banlist: [ + 'Aipom', 'Basculin-White-Striped', 'Cutiefly', 'Diglett-Base', 'Dunsparce', 'Duraludon', 'Flittle', 'Gastly', 'Girafarig', 'Gligar', + 'Meditite', 'Misdreavus', 'Murkrow', 'Porygon', 'Qwilfish-Hisui', 'Rufflet', 'Scraggy', 'Scyther', 'Sneasel', 'Sneasel-Hisui', + 'Snivy', 'Stantler', 'Vulpix', 'Vulpix-Alola', 'Yanma', 'Moody', 'Baton Pass', 'Sticky Web', + ], + }, + { + name: "[Gen 9] Anything Goes", + threads: [ + `• AG Metagame Discussion`, + ], + + mod: 'gen9', + ruleset: ['Min Source Gen = 9', 'Obtainable', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause'], + }, + { + name: "[Gen 9] Triples", + mod: 'gen9', + gameType: 'triples', + searchShow: false, + ruleset: ['Standard Doubles', 'Evasion Abilities Clause'], + banlist: [ + 'Annihilape', 'Arceus', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darkrai', 'Dialga', 'Dialga-Origin', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', + 'Groudon', 'Ho-Oh', 'Indeedee', 'Indeedee-F', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', + 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Terapagos', 'Urshifu', 'Urshifu-Rapid-Strike', + 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Shadow Tag', 'Bright Powder', 'King\'s Rock', 'Razor Fang', + ], + }, + { + name: "[Gen 9] Doubles OU", + threads: [ + `• Doubles OU Sample Teams`, + ], + + mod: 'gen9', + gameType: 'doubles', + ruleset: ['Standard Doubles'], + banlist: ['DUber', 'Shadow Tag'], + }, + { + name: "[Gen 9] Doubles Custom Game", + + mod: 'gen9', + gameType: 'doubles', + searchShow: false, + battle: {trunc: Math.trunc}, + debug: true, + // another CG but its doubles, really could be in either spot + ruleset: ['Team Preview', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + }, + { + name: "[Gen 9] National Dex", + threads: [ + `• National Dex Metagame Discussion`, + ], + + mod: 'gen9', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause'], + banlist: [ + 'ND Uber', 'ND AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', + 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', + ], + }, + { + name: "[Gen 9] National Dex AG", + threads: [ + `• National Dex AG`, + ], + + mod: 'gen9', + ruleset: ['Standard NatDex'], + }, + { + name: "[Gen 9] Bad 'n Boosted", + desc: `Base stats of 70 and lower get doubled.`, + mod: 'badnboosted', + ruleset: ['Standard'], + banlist: ['AG', 'Moody', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Eviolite', 'Huge Power', 'Pure Power', 'Espathra', 'Cyclizar', 'Polteageist', 'Shadow Tag', 'Pawmot'], + onBegin() { + this.add('-message', "Welcome to Bad 'n Boosted!"); + this.add('-message', "This is a Generation 9 Pet Mod where Pokemon's base stats of 70 or lower get doubled!"); + this.add('-message', `You can join our Discord now:`); + this.add('-message', `https://discord.gg/vYdSwRreNd`); + }, + }, + { + name: "[Gen 3] Orre Colosseum", + mod: 'gen3colosseum', + gameType: 'doubles', + ruleset: [ + 'Obtainable', 'Team Preview', 'Species Clause', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Max Team Size = 6', 'VGC Timer', + 'Nickname Clause', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Exact HP Mod', 'Item Clause', 'Open Team Sheets', + ], + banlist: ['Soul Dew', 'Deoxys-Defense', 'Deoxys-Attack', 'Deoxys-Speed', 'Restricted Legendary', 'Mythical'], + unbanlist: ['Latios', 'Latias', 'Wobbuffet', 'Wynaut'], + bestOfDefault: true, + onBegin() { + this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect, you will lose the battle'); + }, + }, +]; \ No newline at end of file diff --git a/config/formats.ts b/config/petmod-formats.ts similarity index 64% rename from config/formats.ts rename to config/petmod-formats.ts index 5e48c265a0..3fb5f48972 100644 --- a/config/formats.ts +++ b/config/petmod-formats.ts @@ -1,23 +1,298 @@ // Note: This is the list of formats -// The rules that formats use are stored in data/rulesets.ts -/* -If you want to add custom formats, create a file in this folder named: "custom-formats.ts" +// Refactor: Import from mod folders (@iforgetwhyimhere, 02.--.26) +// DO NOT DELETE THE IMPORTS. -Paste the following code into the file and add your desired formats and their sections between the brackets: --------------------------------------------------------------------------------- -// Note: This is the list of formats -// The rules that formats use are stored in data/rulesets.ts +// Imports all formats from their folder, to be used as aliases. +import { format as AlternatiumEX } from '../data/mods/alternatiumex/format'; +import { format as Gen533Valuemons } from '../data/mods/gen5valuemons/format'; +import { format as abilitypos } from '../data/mods/abilitypos/format'; +import { format as agoldenexperience } from '../data/mods/agoldenexperience/format'; +import { format as alternatium } from '../data/mods/alternatium/format'; +import { format as animemons } from '../data/mods/animemons/format'; +import { format as BackToSinnogh } from '../data/mods/backtosinnoh/format'; +import { format as BadNBoosted } from '../data/mods/badnboosted/format'; +import { format as balls } from '../data/mods/balls/format'; +import { format as BanHammersC3 } from '../data/mods/banhammersc3/format'; +import { format as beaftopia } from '../data/mods/beaftopia/format'; +import { format as BearticPhone } from '../data/mods/bearticphone/format'; +import { format as blackmarket } from '../data/mods/blackmarket/format'; +import { format as BlankCanvasA } from '../data/mods/blankcanvas/format-meta-a'; +import { format as BlankCanvasB } from '../data/mods/blankcanvas/format-meta-b'; +import { format as BlankCanvasC } from '../data/mods/blankcanvas/format-meta-c'; +import { format as BookOfEnigmas } from '../data/mods/bookofenigmas/format'; +import { format as breedingvariants } from '../data/mods/breedingvariants/format'; +import { format as breedingvariantsnatdex } from '../data/mods/breedingvariantsnatdex/format'; +import { format as bustamove } from '../data/mods/bustamove/format'; +import { format as ccapm2022 } from '../data/mods/ccapm2022/format'; +import { format as ccapm2024 } from '../data/mods/ccapm2024/format'; +import { format as ccapm2024rands } from '../data/mods/ccapm2024/format-randoms'; +import { format as chatbats } from '../data/mods/chatbats/format'; +import { format as clubmonsrequiem } from '../data/mods/clubmonsrequiem/format'; +import { format as communityused2 } from '../data/mods/communityused2/format'; +import { format as conquestdex } from '../data/mods/conquestdex/format'; +import { format as CleanSlateMicro2 } from '../data/mods/csm2/format'; +import { format as denseaf } from '../data/mods/denseaf/format'; +import { format as DLCmons } from '../data/mods/dlcmons/format'; +import { format as DLCmonsVGC } from '../data/mods/dlcmons/format-vgc'; +import { format as Dollhouse } from '../data/mods/dollhouse/format'; +import { format as dondozo } from '../data/mods/dondozo/format'; +import { format as donotuse } from '../data/mods/donotuse/format'; +import { format as DoNotUsetPMtM } from '../data/mods/donotusetmptm/format'; +import { format as donotuseuu } from '../data/mods/donotuseuu/format'; +import { format as donotusevgc } from '../data/mods/donotusevgc/format'; +import { format as doubletrouble } from '../data/mods/doubletrouble/format'; +import { format as duomod } from '../data/mods/duomod/format'; +import { format as earthsky } from '../data/mods/earthsky/format'; +import { format as EbbAndFlow } from '../data/mods/ebbandflow/format'; +import { format as EliminationWar } from '../data/mods/eliminationwar/format'; +import { format as emamod } from '../data/mods/emamod/format'; +import { format as Eramons } from '../data/mods/eramons/format'; +import { format as EternalPokemon } from '../data/mods/eternalpokemon/format'; +import { format as evolutionproject } from '../data/mods/evolutionproject/format'; +import { format as extremereboot } from '../data/mods/extremereboot/format'; +import { format as fakemonfrontier } from '../data/mods/fakemonfrontier/format'; +import { format as fecc } from '../data/mods/fecc/format'; +import { format as forgottenmons } from '../data/mods/forgottenmons/format'; +import { format as furfrou } from '../data/mods/furfrou/format'; +import { format as BlindsidedA } from '../data/mods/g9blindsided/format-group-a'; +import { format as BlindsidedB } from '../data/mods/g9blindsided/format-group-b'; +import { format as BlindsidedC } from '../data/mods/g9blindsided/format-group-c'; +import { format as BlindsidedDraft } from '../data/mods/g9blindsided/format-draft'; +import { format as g9duomod } from '../data/mods/g9duomod/format'; +import { format as gen1 } from '../data/mods/gen1/format'; +import { format as gen1Azure } from '../data/mods/gen1azure/format'; +import { format as gen1BacktothePast } from '../data/mods/gen1backtothepast/format'; +import { format as gen1Burgundy } from '../data/mods/gen1burgundy/format'; +import { format as gen1expansionpack } from '../data/mods/gen1expansionpack/format'; +import { format as gen1futureproofing } from '../data/mods/gen1futureproofing/format'; +import { format as gen1johtomons } from '../data/mods/gen1johtomons/format'; +import { format as gen1jumpstarted } from '../data/mods/gen1jumpstarted/format'; +import { format as gen1metronome } from '../data/mods/gen1metronome/format'; +import { format as gen1moonside } from '../data/mods/gen1moonside/format'; +import { format as gen1rbycap } from '../data/mods/gen1rbycap/format'; +import { format as gen1recolored } from '../data/mods/gen1recolored/format'; +import { format as gen1stadium } from '../data/mods/gen1stadium/format'; +import { format as gen1tradebacksexpanded } from '../data/mods/gen1tradebacksexpanded/format'; +import { format as gen1violetversion } from '../data/mods/gen1violetversion/format'; +import { format as gen2 } from '../data/mods/gen2/format'; +import { format as gen2crystallegacy } from '../data/mods/gen2crystallegacy/format'; +import { format as gen2crystalseviiislands } from '../data/mods/gen2crystalseviiislands/format'; +import { format as gen2doubles } from '../data/mods/gen2doubles/format'; +import { format as gen2expansionpack } from '../data/mods/gen2expansionpack/format'; +import { format as gen2stadium2 } from '../data/mods/gen2stadium2/format'; +import { format as gen2teracrystal } from '../data/mods/gen2teracrystal/format'; +import { format as gen3 } from '../data/mods/gen3/format'; +import { format as gen3advdx } from '../data/mods/gen3advdx/format'; +import { format as gen3advplus } from '../data/mods/gen3advplus/format'; +import { format as gen3advttp } from '../data/mods/gen3advttp/format'; +import { format as gen3colosseum } from '../data/mods/gen3colosseum/format'; +import { format as gen3HoennEchoes } from '../data/mods/gen3hoennechoes/format'; +import { format as gen3HoennGaiden } from '../data/mods/gen3hoenngaiden/format'; +import { format as gen3ourstb } from '../data/mods/gen3ourstb/format'; +import { format as gen3shadowcolosseum } from '../data/mods/gen3shadowcolosseum/format'; +import { format as gen3tradebacks } from '../data/mods/gen3tradebacks/format'; +import { format as gen3uuhoenngaiden } from '../data/mods/gen3uuhoenngaiden/format'; +import { format as gen4 } from '../data/mods/gen4/format'; +import { format as gen4pt } from '../data/mods/gen4pt/format'; +import { format as gen5 } from '../data/mods/gen5/format'; +import { format as gen5bw1 } from '../data/mods/gen5bw1/format'; +import { format as gen5unovayb } from '../data/mods/gen5unovayb/format'; +import { format as gen6 } from '../data/mods/gen6/format'; +import { format as gen6megasrevisited } from '../data/mods/gen6megasrevisited/format'; +import { format as gen6mixandmegasrevisited } from '../data/mods/gen6mixandmegasrevisited/format'; +import { format as gen6xy } from '../data/mods/gen6xy/format'; +import { format as gen7 } from '../data/mods/gen7/format'; +import { format as gen7letsgo } from '../data/mods/gen7letsgo/format'; +import { format as gen7sm } from '../data/mods/gen7sm/format'; +import { format as gen8 } from '../data/mods/gen8/format'; +import { format as gen8bdsp } from '../data/mods/gen8bdsp/format'; +import { format as gen8dlc1 } from '../data/mods/gen8dlc1/format'; +import { format as gen8feuu } from '../data/mods/gen8feuu/format'; +import { format as gen8haxmeters } from '../data/mods/gen8haxmeters/format'; +import { format as gen8lucklessplay } from '../data/mods/gen8lucklessplay/format'; +import { format as gen8maxmeter } from '../data/mods/gen8maxmeter/format'; +import { format as gen9 } from '../data/mods/gen9/format'; +import { format as gen9crossoverchaos } from '../data/mods/gen9crossoverchaos/format'; +import { format as gen9crossoverchaosc } from '../data/mods/gen9crossoverchaosc/format'; +import { format as gen9dlc1 } from '../data/mods/gen9dlc1/format'; +import { format as gen9evolutionproject } from '../data/mods/gen9evolutionproject/format'; +import { format as gen9FusionEvolution } from '../data/mods/gen9fe/format'; +import { format as gen9FusionEvolutionRands } from "../data/mods/gen9fe/format-randoms" +import { format as gen9FusionEvolutionUU } from "../data/mods/gen9fe/format-uu"; +import { format as gen9FusionEvolutionR } from '../data/mods/gen9ferestrictions/format'; +import { format as gen9FusionEvolutionVGC } from '../data/mods/gen9fevgc/format'; +import { format as gen9multiverse } from '../data/mods/gen9multiverse/format'; +import { format as gen9predlc } from '../data/mods/gen9predlc/format'; +import { format as gen9ssb } from '../data/mods/gen9ssb/format'; +import { format as gen9strong } from '../data/mods/gen9strong/format'; +import { format as gen9ubermons } from '../data/mods/gen9ubermons/format'; +import { format as gen9vaporemons } from '../data/mods/gen9vaporemons/format'; +import { format as gen9vgc20xx } from '../data/mods/gen9vgc20xx/format'; +import { format as gennext } from '../data/mods/gennext/format'; +import { format as genXBrunicaOU } from '../data/mods/genxdesvega/format-ou'; +import { format as genXBrunicaUber } from '../data/mods/genxbrunica/format-uber'; +import { format as genXDesvegaOU } from '../data/mods/genxdesvega/format-ou'; +import { format as genXDesvegaUber } from '../data/mods/genxdesvega/format-uber'; +import { format as genxloria } from '../data/mods/genxloria/format'; +import { format as Glacemons } from '../data/mods/glacemons/format'; +import { format as GlacemonsUber } from '../data/mods/glacemonsuber/format'; +import { format as haxmeters } from '../data/mods/haxmeters/format'; +import { format as hiddengems } from '../data/mods/hiddengems/format'; +import { format as hideandseaking } from '../data/mods/hideandseaking/format'; +import { format as hideandseakingslate5clauses } from '../data/mods/hideandseakingslate5clauses/format'; +import { format as iforgor } from '../data/mods/iforgor/format'; +import { format as imando } from '../data/mods/imando/format'; +import { format as ironfist } from '../data/mods/ironfist/format'; +import { format as Ironmons } from '../data/mods/ironmons/format'; +import { format as jollymod } from '../data/mods/jollymod/format'; +import { format as joltemons } from '../data/mods/joltemons/format'; +import { format as kaensdex } from '../data/mods/kaensdex/format'; +import { format as kitchen } from '../data/mods/kitchen/format'; +import { format as legendshoopa } from '../data/mods/legendshoopa/format'; +import { format as letsgo } from '../data/mods/letsgo/format'; +import { format as LittleColosseum } from '../data/mods/littlecolosseum/format'; +import { format as littleestcup } from '../data/mods/littleestcup/format'; +import { format as littlestcup } from '../data/mods/littlestcup/format'; +import { format as lucklessplay } from '../data/mods/lucklessplay/format'; +import { format as lukemod } from '../data/mods/lukemod/format'; +import { format as gen9MegasForAll } from '../data/mods/m4ag9/format'; +import { format as MegasForAllKalos } from '../data/mods/m4akalos/format'; +import { format as MegasForAllPaldea } from '../data/mods/m4apaldea/format'; +import { format as MegasForAllPaldeaVGC } from '../data/mods/m4apaldea/format-vgc'; +import { format as m4asandbox } from '../data/mods/m4asandbox/format'; +import { format as gen8MegasForAllv6 } from '../data/mods/m4av6/format'; +import { format as gen8MegasForAllv6VGC } from '../data/mods/m4av6/format-vgc'; +import { format as maadowr } from '../data/mods/maadowr/format'; +import { format as maadowrlostzone } from '../data/mods/maadowrlostzone/format'; +import { format as Masquerade } from '../data/mods/masquerade/format'; +import { format as megamania } from '../data/mods/megamania/format'; +import { format as metamons } from '../data/mods/metamons/format'; +import { format as mixandmega } from '../data/mods/mixandmega/format'; +import { format as mixandmegaballs } from '../data/mods/mixandmegaballs/format'; +import { format as mixandmegasforall } from '../data/mods/mixandmegasforall/format'; +import { format as MicrometaMafia2 } from '../data/mods/mmm2/format'; +import { format as MicrometaMafia3 } from '../data/mods/mmm3/format'; +import { format as moderngen1 } from '../data/mods/moderngen1/format'; +import { format as moderngen2 } from '../data/mods/moderngen2/format'; +import { format as moderngen2birds } from '../data/mods/moderngen2birds/format'; +import { format as moderngen3 } from '../data/mods/moderngen3/format'; +import { format as moderngen4 } from '../data/mods/moderngen4/format'; +// Monster Hunter +import { format as monsterhunterag } from '../data/mods/monsterhunter/formats/format-ag'; +import { format as monsterhunter } from '../data/mods/monsterhunter/formats/format-ou'; +import { format as monsterhunteruu } from '../data/mods/monsterhunter/formats/format-uu'; +import { format as monsterhunterru } from '../data/mods/monsterhunter/formats/format-ru'; +import { format as monsterhunterdubs } from '../data/mods/monsterhunter/formats/format-doubles'; +import { format as monsterhunterffa } from '../data/mods/monsterhunter/formats/format-freeforall'; +import { format as monsterhunterffarands } from '../data/mods/monsterhunter/formats/format-ffarands'; +import { format as monsterhunterdubsrands } from '../data/mods/monsterhunter/formats/format-randoms-dubs'; +import { format as monsterhuntervgc } from '../data/mods/monsterhunter/formats/format-vgc'; +import { format as monsterhunterrandoms } from '../data/mods/monsterhunter/formats/format-randoms'; +// Enough Monster Hunter +import { format as monsterhunterousolopliii } from '../data/mods/monsterhuntersl/format-solopliii'; +// Fuck +import { format as morebalancedhackmons } from '../data/mods/morebalancedhackmons/format'; +import { format as naturalselection } from '../data/mods/naturalselection/format'; +import { format as notmytype } from '../data/mods/notmytype/format'; +import { format as outheorymons } from '../data/mods/outheorymons/format'; +import { format as paleomons } from '../data/mods/paleomons/format'; +import { format as patratdex } from '../data/mods/patratdex/format'; +import { format as placeholder } from '../data/mods/placeholder/format'; +import { format as plza } from '../data/mods/plza/format'; +import { format as pokebilities } from '../data/mods/pokebilities/format'; +import { format as pokebilitiesbanhammers } from '../data/mods/pokebilitiesbanhammers/format'; +import { format as pokemonorthsoutheastwest } from '../data/mods/pokemonorthsoutheastwest/format'; +import { format as pokemorty } from '../data/mods/pokemorty/format'; +import { format as poketypos } from '../data/mods/poketypos/format'; +import { format as ponymonshowdown } from '../data/mods/ponymonshowdown/format'; +import { format as publicdomain } from '../data/mods/publicdomain/format'; +import { format as randomtandem } from '../data/mods/randomtandem/format'; +import { format as regeneration } from '../data/mods/regeneration/format'; +import { format as regionalevolutions } from '../data/mods/regionalevolutions/format'; +import { format as restrictions } from '../data/mods/restrictions/format'; +import { format as returntoorretercera } from '../data/mods/returntoorretercera/format'; +import { format as rockbottom } from '../data/mods/rockbottom/format'; +import { format as roulettemons } from '../data/mods/roulettemons/format'; +import { format as roulettemons2 } from '../data/mods/roulettemons2/format'; +import { format as scootopia } from '../data/mods/scootopia/format'; +import { format as scootopiav4 } from '../data/mods/scootopiav4/format'; +import { format as secretsanta } from '../data/mods/secretsanta/format'; +import { format as setinstone } from '../data/mods/setinstone/format'; +import { format as sharedpower } from '../data/mods/sharedpower/format'; +import { format as SharedPowerIronFist } from '../data/mods/sharedpowerironfist/format'; +import { format as shinymons } from '../data/mods/shinymons/format'; +import { format as signaturemons } from '../data/mods/signaturemons/format'; +import { format as signaturerestrictions } from '../data/mods/signaturerestrictions/format'; +import { format as sixbysix } from '../data/mods/sixbysix/format'; +import { format as smashmodsbrawl } from '../data/mods/smashmodsbrawl/format'; +import { format as smashmodsmelee } from '../data/mods/smashmodsmelee/format'; +import { format as smashstereotypes } from '../data/mods/smashstereotypes/format'; +import { format as solopet } from '../data/mods/solopet/format'; +import { format as spookymod } from '../data/mods/spookymod/format'; +import { format as stadium } from '../data/mods/stadium/format'; +import { format as stadiumyb } from '../data/mods/stadiumyb/format'; +import { format as stereotypes } from '../data/mods/stereotypes/format'; +import { format as supersmashoms } from '../data/mods/supersmashoms/format'; +import { format as supertypesou } from '../data/mods/supertypesou/format'; +import { format as sylvemonstest } from '../data/mods/sylvemonstest/format'; +import { format as tamagotchi } from '../data/mods/tamagotchi/format'; +import { format as teraforming } from '../data/mods/teraforming/format'; +import { format as teramax } from '../data/mods/teramax/format'; +import { format as the331typechartg9 } from '../data/mods/the331typechartg9/format'; +import { format as thebore } from '../data/mods/thebore/format'; +import { format as tiersovereign } from '../data/mods/tiersovereign/format'; +import { format as toho } from '../data/mods/toho/format'; +import { format as tpdp } from '../data/mods/tpdp/format'; +import { format as tradingpost } from '../data/mods/tradingpost/format'; +import { format as trainersupport } from '../data/mods/trainersupport/format'; +import { format as triplethreat } from '../data/mods/triplethreat/format'; +import { format as twostepmonsv3 } from '../data/mods/twostepmonsv3/format'; +import { format as upsidedown } from '../data/mods/upsidedown/format'; +import { format as weatherwar } from '../data/mods/weatherwar/format'; +import { format as weedmons } from '../data/mods/weedmons/format'; +import { format as whitetusk } from '../data/mods/whitetusk/format'; +import { format as Woomod } from '../data/mods/woomod/format'; +import { format as worldbuilding } from '../data/mods/worldbuilding/format'; +// import can't hurt you anymore -export const Formats: FormatList = [ -]; --------------------------------------------------------------------------------- +// Example tier +/* + { + name: "", + mod: '', + desc: ``, + ruleset: ['Standard', 'Data Mod'], + // teambuilderFormat: 'National Dex', (uncomment if your mod is natdex) + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in the format.']; + } + } + }, + }, +*/ +// This goes in mods/yourmod/format.ts +/* If you specify a section that already exists, your format will be added to the bottom of that section. New sections will be added to the bottom of the specified column. The column value will be ignored for repeat sections. */ export const Formats: FormatList = [ + + { + section: "PMotM", + column: 1, + // name: "Pet Mod of the Month" + }, + + sixbysix, + /////////////////////////////////////////////////////////////// ///////////////////// Gen 9 Pet Mods ////////////////////////// /////////////////////////////////////////////////////////////// @@ -27,118 +302,69 @@ export const Formats: FormatList = [ // name: "gen9petmods", }, { - name: "[Gen 9] Alternatium EX", - desc: `Alternatium EX: A metagame made up of only Pokemon with alternate forms exist, with all of them being seperate and unique Pokemon.`, + name: "[Gen 9] Monoletter", + mod: "gen9", + desc: `A National Dex OU mod where you can only use teams consisting of the same starting letter.`, + threads: [ + `• Smogon Thread`, + '• Sample Teams', + '• Discord' + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'Same Letter Rule'], + banlist: ['ND Uber', 'ND AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail'], + unbanlist: ['Yveltal','Walking Wake','Ursaluna-Bloodmoon','Ogerpon-Hearthflame','Urshifu-Single-Strike','Naganadel'], + teambuilderFormat: "National Dex", + }, + { + name: "[Gen 6] NEXT OU", + mod: 'gennext', + searchShow: false, + challengeShow: false, + ruleset: ['Obtainable', 'Standard NEXT', 'Team Preview'], + banlist: ['Uber'], + }, + { + name: "[Gen 9] Not My Type", + desc: `Not My Type, a tier with user-submitted Fakemon only that's built around three of the eighteen types being removed. These three types are Electric, Ground, Rock.`, threads: [ - `• Alternatium EX on Smogon Forums`, - `• Spreadsheet`, - ], - mod: 'alternatiumex', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Min Source Gen = 3', 'Terastal Clause'], - banlist: ['All Pokemon', 'Baton Pass'], - unbanlist: [ - 'Decidueye-Hermit', 'Decidueye-Autumn', 'Typhlosion-Explosive', 'Typhlosion-Warlock', 'Samurott-Foamy', 'Samurott-Rogue', - 'Oricorio', 'Oricorio-Cheerleader','Oricorio-Pa\u2019u', 'Horrorcorio', - 'Pikachu-Kanto', 'Pikachu-Hoenn', 'Pikachu-Sinnoh', 'Pikachu-Unova', 'Pikachu-Tactic', 'Pikachu-Alola', 'Pikachu-World', - 'Ribombee', 'Ribombee-Totem', 'Araquanid', 'Araquanid-Totem', 'Vikavolt', 'Vikavolt-Totem', - 'Urshifu', 'Urshifu-Erosion', 'Calyrex-Mythic', 'Calyrex-Glacier','Calyrex-Midnight', - 'Kommo-o', 'Rockmo-o', 'Salazzle', 'Salazzle-Ruler', 'Lurantis', 'Lurantio', - 'Mr. Mime', 'Mr. Mime-Prance', 'Stunfisk', 'Stunfisk-Trap', - 'Necrozma', 'Necrozma-Lionheart', 'Necrozma-Batwing', 'Necrozma-Dragon', - 'Braviary-Patriot', 'Braviary-Hisui', 'Lilligant-Bard', 'Mistlegant', 'Electrode-Screwball','Electrode-Ringo', - 'Persian-Bandit', 'Persian-Omen', 'Meowstic-Untethered', 'Meowstic-TwoTales', - "Indeedee-Devil", "Indeedee-Angel", "Polteageist", "Polteageist-Antique", "Toxtricity-Rock-Star", "Toxtricity-Low-Key", - "Articuno-Mistral", "Articuno-Tsunami", "Zapdos", "Charpados", "Moltres", "Bennutres", - "Marowak", "Alolawak", "Marowak-Alola-Totem", "Enamorus", "Violentine", - "Dialga", "Archronos", "Palkia", "Palkia-Origin", - "Basculin-Hot-Headed","Basculectric", "Basculin-Skyship", "Basculegion", "Basculagoon", - "Magearna", "Magearna-Prototype", "Zarude", "Zarude-Hero", - "Qwilfish", "Aquattack", "Zoroark-Jorogumo", "Zoroark-Hoarfrost", "Goodra-Tsunade", "Goodra-Symbiotic", - "Maushold-Raider", "Maushold-Extended", "Oinkologne", "Oinkologne-F", "Dudunsparce", "Dududunsparce", - "Greninja", "Greninja-Ronin", "Imperil", "Hoopa-Ifrit", - "Kyurem", "Kyurem-Black", "Kyurem-White", "Xerneas-Dormant", "Xerneas-Justice", - "Arcanine-Water Balloon", "Arcanine-Noble", "Avalugg-Prism", "Avalugg-Plated", - "Squawkabilly", "Squawkabiluck", "Squawkalone", "Squawkabilly-Yellow", - "Wishiwashi-Lonesome", "Winardin", "Palafin", "Hercuphin", - 'Gumshoos', 'Gumshoos-Totem', 'Togedemaru', 'Totemaru', - 'Tauros', 'Bravatoro', 'Tauros-Steam', 'Tauros-Azul', - 'Raichu', 'Raichu-Soft', 'Rapidash', 'Rapidash-Galar', 'Golem-Berserker', 'Golem-Alola', - 'Cherrim', 'Cherrine', 'Minior', 'Minior-Meteor', 'Eevee', 'Eevee-Starter', + `Gen 9 Not My Type`, ], + mod: 'notmytype', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Moves Clause', 'Terastal Clause', 'Z-Move Clause'], + banlist: [], onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['NMT']; for (const set of team) { let template = this.dex.species.get(set.species); - if (speciesTable[template.id]) { - return ["You are limited to one of each Pokémon by Species Clause (except for different formes). ", "You have more than one " + template.id + "."]; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Not My Type.']; } - speciesTable[template.id] = true; } }, }, { - name: "[Gen 1] Azure Version", - threads: [ - `• [Gen 1] Azure Version`, + name: "[Gen 9] OU Theorymons", + desc: '[Gen 9] OU Theorymons: Fixing niche and unseen Pokemon in the SV OU Metagame with small buffs.', + threads: [ + `• OU Theorymon on Smogon Forums`, ], - - mod: 'gen1azure', - ruleset: ['Standard'], - banlist: ['Uber'], + mod: 'outheorymons', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], }, { - name: "[Gen 4] Back to Sinnoh", - desc: `Recreation of Gen 4 OU, with a lot of new Fakemons, moves, and abilities! No vanilla Gen 4 Pokemon allowed!`, - threads: [], - mod: 'backtosinnoh', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber', 'Arena Trap', 'Sand Veil', 'Quick Claw', 'Soul Dew', 'Baton Pass'], - }, - { - name: "[Gen 1] Back to the Past", - desc: `[Gen 1] Back to the Past: Adapting future gen moves and Pokemon into RBY`, - threads: [ - `• Back to the Past on Smogon Forums`, - ], - mod: 'gen1backtothepast', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber'], - unbanlist: ['Seismitoad', 'Masquerain', 'Cursola', 'Skitter Smack', 'Burn Up', 'Drain Punch', 'Sappy Seed', "Focus Punch", 'Mud Shot', - ], - }, - { - name: "[Gen 9] Banhammers Cycle 3", - desc: `Banhammers: A metagame where players are allowed to ban Pokemon, Moves, Items, and Abilities through earning points in room tournaments.`, - threads: [ - `• Banhammers on Smogon Forums`, - `• Spreadsheet`, - ], - mod: 'banhammersc3', - ruleset: ['Standard', 'Sleep Moves Clause', 'Data Mod', '!Sleep Clause Mod'], - banlist: [ - 'Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', - 'Last Respects', 'Shed Tail', 'Barraskewda', 'Cinderace', 'Clodsire', 'Dragapult', 'Enamorus-Base', 'Gholdengo', 'Gliscor', 'Hatterene', - 'Iron Treads', 'Kingambit', 'Ogerpon-Wellspring', 'Pelipper', 'Rillaboom', 'Walking Wake', 'Zamazenta', 'Earth Power', 'Flip Turn', - 'Freeze-Dry', 'Ice Beam', 'Knock Off', 'Spikes', 'Taunt', 'Thunder Wave', 'Toxic', 'Volt Switch', 'Booster Energy', 'Light Clay', - 'Protosynthesis', 'Clefable', 'Corviknight', 'Darkrai', 'Dragonite', 'Maushold', 'Primarina', 'Samurott-Hisui', 'Slowking-Galar', - 'Weavile', 'Focus Blast', 'Glare', 'Sticky Web', 'Unaware', 'Quark Drive', 'Blissey', 'Ceruledge', 'Chansey', 'Garchomp', 'Garganacl', - 'Glimmora', 'Hydreigon', 'Ogerpon-Cornerstone', 'Ting-Lu', 'Close Combat', 'Dragon Dance', 'Meteor Beam', 'Roost', 'Scale Shot', 'Stealth Rock', - 'Tera Blast', 'Heavy-Duty-Boots', 'Chlorophyll', 'Swift Swim', 'Regenerator', 'Draco Meteor', 'Intimidate', 'Levitate', - 'Focus Sash', 'Leftovers', 'Life Orb', 'Belly Drum', 'Calm Mind', 'Nasty Plot', 'Azumarill', 'Blaziken', 'Deoxys-Defense', 'Greninja', - 'Heatran', 'Kleavor', 'Kommo-o', 'Meowscarada', 'Moltres-Galar', 'Ninetales-Alola', 'Pecharunt', 'Politoed', 'Sinistcha', 'Skarmory', - 'Ursaluna', 'Zapdos-Base', - ], - }, - { - name: "[Gen 9] Beartic Phone", - desc: '[Gen 9] Beartic Phone: A group of 5 people unknowingly work together to create a fakemon, very similar to the online game "Gartic Phone".', + name: "[Gen 9] Paleomons", + desc: '[Gen 9] Paleomons: In this mod, we will be creating an SV OU-based micrometa of Pokémon based on real critters from the Paleozoic, Mesozoic, and Cenozoic eras.', threads: [ - '• Beartic Phone', - 'https://docs.google.com/spreadsheets/d/1-Hfz-p0nomMLVFa4-4nGbLKaoWSl0xFTZA5Aiapw-Ko/edit#gid=1161734506">Spreadsheet', + '• Paleomons', + // '• Spreadsheet', ], - mod: 'bearticphone', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod'], + mod: 'paleomons', + teambuilderFormat: "National Dex", + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', '!! Min Source Gen = 8'], banlist: [ 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', ], @@ -147,1183 +373,1046 @@ export const Formats: FormatList = [ let speciesTable = {}; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'bear') { - return [set.species + ' is not usable in Beartic Phone.']; + if (template.tier !== 'Paleomons') { + return [set.species + ' is not usable in Paleomons.']; } } }, }, { - name: "[Gen 9] Blank Canvas Meta A", + name: "[Gen 9] Poketypos", + desc: `[Gen 9] Poketypos: A NatDex metagame that alters the names of Pokemon and change said Pokemon to fit their new name.`, threads: [ - `Blank Canvas`, + `• Poketypos on Smogon Forums`, ], - mod: 'blankcanvas', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + mod: 'poketypos', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Terastal Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], banlist: [ - 'AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', - 'Actaniathan', 'Flarenheit', 'Groundead', 'Deadward', 'Obaki', 'Sylravage', 'Twinkaton', 'Fausteil', 'Geoporka', - 'Porcupyre', 'Plasmage', 'Seaode', 'Bellolysk', 'Tryonite', 'Scarachnid', 'Serpvoltidae', 'Maldractice', 'Geigeramp', - 'Bufferfly', 'Dastard', 'Sheepquake', 'Cottentration', 'Sorrowcean', 'Psyllapse', 'Haarstorm', 'Borealis', 'Bazhigangquan', - 'Leechmonner', 'Iron Crest', 'Odonata', 'Hebicikuga', 'Devestial', 'Lundicare', 'Razor Fang', 'Light Clay', 'Lyvamp', - 'Treatmint', 'Turvarpega', 'Goodjur', 'Liftaton', 'Triceracotta', 'Woolverine', 'Combustoad', 'Hearthind', 'Koiryu', - 'Pestiligy', 'Saxum', 'Sascratch', 'Guttergar', 'Rakasa', 'Thermostatic', 'Formaldehydra', 'Strumorthio', 'Iron Mike', - 'Whalestro', 'Urslag', 'Centaghoul', 'Noirwark', 'Metarachne', 'Monsnooze', 'Oreamoss', 'Sucrillon', 'Taranferno', - 'Armie', 'Bunnyumi', 'Parfae', 'Siltworm', 'Ptoxidactyl', 'Staroboros' , 'Kodiacomb', 'Pyrelli', 'Boreetle', 'Hyakutari', - 'Kaovern', 'Zhuguo', 'Shinobomi', 'Prionice', 'Tiaratron', 'Lianzhao', 'Psyrex', 'Phantamp', 'Waroach', 'Wyldemoer', + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', ], onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['BC UU']; + let allowedTiers = ['Poketypos', 'Poketypos NFE', 'Poketypos LC']; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Blank Canvas Meta A.']; + if (template.tier !== 'Poketypos' && template.tier !== 'Poketypos NFE' && template.tier !== 'Poketypos LC') { + return [set.species + ' is not legal in the Poketypos format.']; } } }, }, { - name: "[Gen 9] Blank Canvas Meta B", + name: "[Gen 9] Public Domain", + desc: `[Gen 9] Public Domain:, a fakemon meta where .`, threads: [ - `Blank Canvas`, - ], - mod: 'blankcanvas', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: [ - 'AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Razor Fang', - 'Lyvamp', 'Treatmint', 'Turvarpega', 'Goodjur', 'Liftaton', 'Triceracotta', 'Woolverine', 'Combustoad', 'Hearthind', 'Koiryu', - 'Pestiligy', 'Saxum', 'Sascratch', 'Guttergar', 'Rakasa', 'Thermostatic', 'Formaldehydra', 'Strumorthio', 'Iron Mike', - 'Whalestro', 'Urslag', 'Centaghoul', 'Noirwark', 'Metarachne', 'Monsnooze', 'Oreamoss', 'Sucrillon', 'Taranferno', - 'Armie', 'Bunnyumi', 'Parfae', 'Siltworm', 'Ptoxidactyl', 'Staroboros' , 'Kodiacomb', 'Pyrelli', 'Boreetle', 'Hyakutari', - 'Kaovern', 'Zhuguo', 'Shinobomi', 'Prionice', 'Tiaratron', 'Lianzhao', 'Psyrex', 'Phantamp', 'Waroach', 'Wyldemoer', + `Pet Mod - Public Domain`, ], + mod: 'publicdomain', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Mega Data Mod', 'Z-Move Clause'], onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['BC OU', 'BC UU']; + let allowedTiers = ['PD']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Blank Canvas Meta B.']; + return [set.species + ' is not legal in Public Domain.']; } } }, }, { - name: "[Gen 9] Blank Canvas Meta C", + name: "[Gen 9] Random Tandem", threads: [ - `Blank Canvas`, - ], - mod: 'blankcanvas', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Razor Fang', - 'Actaniathan', 'Flarenheit', 'Groundead', 'Deadward', 'Obaki', 'Sylravage', 'Twinkaton', 'Fausteil', 'Geoporka', - 'Porcupyre', 'Plasmage', 'Seaode', 'Bellolysk', 'Tryonite', 'Scarachnid', 'Serpvoltidae', 'Maldractice', 'Geigeramp', - 'Bufferfly', 'Dastard', 'Sheepquake', 'Cottentration', 'Sorrowcean', 'Psyllapse', 'Haarstorm', 'Borealis', 'Bazhigangquan', - 'Leechmonner', 'Iron Crest', 'Odonata', 'Hebicikuga', 'Devestial', 'Lundicare', 'Arachnode', 'Arsenstorm', 'Badjur', 'Blobbiam', - 'Brasspecter', 'Bugswarm', 'Bulionage', 'Capricorrie', 'Copperhead', 'Craggon', 'Crystuit', 'Drakkannon', 'Eolikopter', 'Faeruin', - 'Fettogre', 'Florustitia', 'Freightmare', 'Frostengu', 'Goblantern', 'Hippaint', 'Jackoswarm', 'Jokerpent', 'Kadraoke', 'Karmalice', - 'Lavalisk', 'Llanfairwyrm', 'Martorse', 'Massassin', 'Mohawtter', 'Mon Mothra', 'Parasike', 'Pinaturbo', 'Piss', 'Primordialith', - 'Reversadusa', 'Sculptera', 'Searytch', 'Sleet Shell', 'Snabterra', 'Socknbuskn', 'Thaumaton', 'Versalyre', 'Vipult', 'Wizhazard', - 'Yamateraph'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['BC C']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Blank Canvas Meta C.']; - } - } - }, - }, - { - name: "[Gen 9] Gen 9 Blindsided", - desc: `[Gen 9] Blindsided: the monkey has awoken`, - threads: [ - `• spreadsheet`, - ], - mod: 'g9blindsided', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], - banlist: [ - 'Chelperela', 'Terrapollo', 'Dualifer', - 'Shed Tail', 'Last Respects', - - // i apologize - - 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', - 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', - 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Conversion', 'Sketch', 'Triple Kick', 'Spider Web', 'Mind Reader', - 'Nightmare', 'Conversion 2', 'Aeroblast', 'Feint Attack', 'Octazooka', 'Foresight', 'Return', 'Frustration', 'Sacred Fire', 'Magnitude', 'Pursuit', - 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', - 'Camouflage', 'Tail Glow', 'Luster Purge', 'Mist Ball', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', - 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Doom Desire', 'Psycho Boost', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', - 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', - 'Captivate', 'Chatter', 'Heal Order', 'Crush Grip', 'Dark Void', 'Seed Flare', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', - 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', - 'Techno Blast', 'Secret Sword', 'Glaciate', 'Bolt Strike', 'Blue Flare', 'Freeze Shock', 'Ice Burn', 'Fusion Flare', 'Fusion Bolt', 'Mat Block', 'Rototiller', - 'Trick-or-Treat', 'Ion Deluge', 'Forest\'s Curse', 'Topsy-Turvy', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', - 'Geomancy', 'Power-Up Punch', 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', - 'Spotlight', 'Toxic Thread', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', 'Core Enforcer', 'Beak Blast', 'Clanging Scales', 'Dragon Hammer', - 'Shell Trap', 'Shadow Bone', 'Prismatic Laser', 'Spectral Thief', 'Sunsteel Strike', 'Moongeist Beam', 'Nature\'s Madness', 'Multi-Attack', - 'Mind Blown', 'Plasma Fists', 'Photon Geyser', 'Double Iron Bash', 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Clangorous Soul', 'Decorate', - 'Snap Trap', 'Aura Wheel', 'Strange Steam', 'Obstruct', 'Meteor Assault', 'Eternabeam', - ], - - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['hi']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'hi') { - return [set.species + ' is not legal in [Gen 9] Blindsided.']; - } - } - }, - }, - { - name: "[Gen 9] Gen 9 Blindsided Group B", - desc: `[Gen 9] Blindsided: the monkey has awoken part 2`, - threads: [ - `• spreadsheet`, - ], - mod: 'g9blindsided', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], - banlist: [ - 'All Pokemon', - 'Shed Tail', 'Last Respects', - - // i apologize - - 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', - 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', - 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Conversion', 'Sketch', 'Triple Kick', 'Spider Web', 'Mind Reader', - 'Nightmare', 'Conversion 2', 'Aeroblast', 'Feint Attack', 'Octazooka', 'Foresight', 'Return', 'Frustration', 'Sacred Fire', 'Magnitude', 'Pursuit', - 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', - 'Camouflage', 'Tail Glow', 'Luster Purge', 'Mist Ball', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', - 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Doom Desire', 'Psycho Boost', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', - 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', - 'Captivate', 'Chatter', 'Heal Order', 'Crush Grip', 'Dark Void', 'Seed Flare', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', - 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', - 'Techno Blast', 'Secret Sword', 'Glaciate', 'Bolt Strike', 'Blue Flare', 'Freeze Shock', 'Ice Burn', 'Fusion Flare', 'Fusion Bolt', 'Mat Block', 'Rototiller', - 'Trick-or-Treat', 'Ion Deluge', 'Forest\'s Curse', 'Topsy-Turvy', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', - 'Geomancy', 'Power-Up Punch', 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', - 'Spotlight', 'Toxic Thread', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', 'Core Enforcer', 'Beak Blast', 'Clanging Scales', 'Dragon Hammer', - 'Shell Trap', 'Shadow Bone', 'Prismatic Laser', 'Spectral Thief', 'Sunsteel Strike', 'Moongeist Beam', 'Nature\'s Madness', 'Multi-Attack', - 'Mind Blown', 'Plasma Fists', 'Photon Geyser', 'Double Iron Bash', 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Clangorous Soul', 'Decorate', - 'Snap Trap', 'Aura Wheel', 'Strange Steam', 'Obstruct', 'Meteor Assault', 'Eternabeam', - ], - unbanlist: [ - "Agonette", "Alchevul", "Androimatide", "Armaruin", "Awesdruk", "Baashful", "Basilud", "Brasshopper", "Bruined", "Caddismith", "Caeruleto", "Capanopy", "Cardborg", "Carecrow", "Cavvage", "Chitana", "Chloravage", "Chubee", "Cloconstruct", "Covloris", "Croakast", "Cryosaurite", "Diabol", "Draatle", "Dreampunk", "Faeraith", "Falstiletto", "Fendeerie", "Ferticotta", "Flumflare", "Fridgeate", "Frozalisk", "Fulmineus", "Funera", "Gachacha", "Gastrel", "Gnomeush", "Gorilax", "Harmadillo", "Hydrongea", "IronRailgun", "Jamborai", "Kaledzi", "Kepa-ying", "Klimausion", "Kurayami", "Lepwozectur", "Libuble", "Lizhaman", "Locustab", "Marshwift", "Matitrick", "Melethyst", "Mochiknight", "Mon-Chi", "Mustank", "Neuranium", "Ohlmagoon", "Orbitgami", "Origyrant", "Phantasail", "Phanthazem", "Plasmacaw", "Pompadork", "Possabomb", "Pyrelic", "Pyroccult", "Pyrove", "Ralirulero", "Rexxon", "Roquack", "Roseaphot", "Sail-Goshi", "Sapparine", "Scorjester", "Scorpdyceps", "Searberus", "Shockatrice", "Snowpea", "Spectache", "Spirem", "Spongimney", "Squwhirrl", "Sundon", "Surchin", "Thorbarage", "Tiramitzu", "Tometex", "Tusquoka-Agent", "Tyrannyan", "Vamperilico", "Velvittle", "Vesquadron", "Vulchar", "Wiifii", "Wildemyst", "Zassansa", "Zauryo", "Zenoise", "Zunowy" - ], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['hi']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'hi') { - return [set.species + ' is not legal in [Gen 9] Blindsided.']; - } - } - }, - }, - { - name: "[Gen 9] Gen 9 Blindsided Group C", - desc: `[Gen 9] Blindsided: the monkey has awoken part 3`, - threads: [ - `• spreadsheet`, - ], - mod: 'g9blindsided', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], - banlist: [ - 'All Pokemon', - 'Shed Tail', 'Last Respects', 'Baton Pass', - - // i apologize - - 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', - 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', - 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Conversion', 'Sketch', 'Triple Kick', 'Spider Web', 'Mind Reader', - 'Nightmare', 'Conversion 2', 'Aeroblast', 'Feint Attack', 'Octazooka', 'Foresight', 'Return', 'Frustration', 'Sacred Fire', 'Magnitude', 'Pursuit', - 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', - 'Camouflage', 'Tail Glow', 'Luster Purge', 'Mist Ball', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', - 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Doom Desire', 'Psycho Boost', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', - 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', - 'Captivate', 'Chatter', 'Heal Order', 'Crush Grip', 'Dark Void', 'Seed Flare', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', - 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', - 'Techno Blast', 'Secret Sword', 'Glaciate', 'Bolt Strike', 'Blue Flare', 'Freeze Shock', 'Ice Burn', 'Fusion Flare', 'Fusion Bolt', 'Mat Block', 'Rototiller', - 'Trick-or-Treat', 'Ion Deluge', 'Forest\'s Curse', 'Topsy-Turvy', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', - 'Geomancy', 'Power-Up Punch', 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', - 'Spotlight', 'Toxic Thread', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', 'Core Enforcer', 'Beak Blast', 'Clanging Scales', 'Dragon Hammer', - 'Shell Trap', 'Shadow Bone', 'Prismatic Laser', 'Spectral Thief', 'Sunsteel Strike', 'Moongeist Beam', 'Nature\'s Madness', 'Multi-Attack', - 'Mind Blown', 'Plasma Fists', 'Photon Geyser', 'Double Iron Bash', 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Clangorous Soul', 'Decorate', - 'Snap Trap', 'Aura Wheel', 'Strange Steam', 'Obstruct', 'Meteor Assault', 'Eternabeam', - ], - unbanlist: [ - "ExPl0r3REx3", "Androimatide", "Aparism", "Armaruin", "Averse", "Baashful", "Bardisco", "Bonnetform", "Bruined", "Capanopy", "Cardborg", "Chalquine", "Champimimus", "Chinchimra", "Chitana", "Cloconstruct", "Croakast", "Crushave", "Cryosaurite", "Diabol", "Draatle", "Driveel", "Drukrackoon", "Dynamantis", "Electhog", "Elyctron", "Faeraith", "Falstiletto", "Fendeerie", "Fridgeate", "Frozalisk", "Gachacha", "Gastrel", "Gnomeush", "Grrilla", "Harmadillo", "Heacluster", "Helmekh", "Hydrongea", "Iron Aspis", "Iron Rebel", "Jerboulda", "Kaledzi", "Kepa-ying", "Klimausion", "Kurayami", "Lizhaman", "Luxsectus", "Majestapis", "Marshwift", "Matryocha", "Melethyst", "Mochiknight", "Molar Bear", "Mon-Chi", "Moriwarty", "Mustank", "Neuranium", "Notfly", "Obbyplex", "Offendage", "Onion Wings", "Orbitgami", "Pestispine", "Phantasail", "Phanthazem", "Plasmacaw", "Plasmelion", "Polarpants", "Pompadork", "Possabomb", "Potatron", "Ralirulero", "Rexxon", "Rockick", "Rodendrain", "Roquack", "Roseaphot", "Sail-Goshi", "Scorjester", "Scorpdyceps", "Searberus", "Serprizius", "Shadellisk", "Shockatrice", "Skullpion", "Spectache", "Spirem", "Squwhirrl", "Stringle", "Sundon", "Surchin", "Terralauri", "Thorbarage", "Tiramitzu", "Tusquoka-Agent", "Twirlava", "Tyrannyan", "Vamperilico", "Velocipastor", "Velvittle", "Vesquadron", "Vulchar", "Wellowish", "Wyvking", "Zassansa", "Zauryo", "Zenoise", "Cucurbella" + `• RBY CAP on Smogon Forums`, ], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['hi', 'C']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if ((template.tier !== 'hi') && (template.tier !== 'C')) { - return [set.species + ' is not legal in [Gen 9] Blindsided.']; - } - } - }, - }, - { - name: "[Gen 9] Blindsided Draft", - mod: "g9blindsided", - desc: `[Gen 9] Blindsided: the monkey has awoken part draft`, - threads: [ - `• spreadsheet`, - ], - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause', 'Terastal Clause'], - banlist: [ - 'Shed Tail', 'Last Respects', 'Baton Pass', - - // i apologize - - 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', - 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', - 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Spider Web', 'Mind Reader', 'Nightmare', 'Feint Attack', 'Octazooka', - 'Foresight', 'Return', 'Frustration', 'Magnitude', 'Pursuit', 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', - 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', 'Camouflage', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', - 'Grass Whistle', 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', 'Trump Card', - 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Magnet Bomb', 'Captivate', 'Chatter', - 'Heal Order', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', - 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', 'Techno Blast', 'Mat Block', 'Rototiller', 'Trick-or-Treat', - 'Ion Deluge', 'Forest\'s Curse', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', 'Geomancy', 'Power-Up Punch', - 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Spotlight', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', - 'Core Enforcer', 'Shell Trap', 'Shadow Bone', 'Spectral Thief', 'Nature\'s Madness', 'Multi-Attack', 'Mind Blown', 'Plasma Fists', 'Double Iron Bash', - 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Snap Trap', 'Aura Wheel', 'Obstruct', 'Meteor Assault', 'Eternabeam', - - 'Aparism', 'Chalquine', 'Driveel', 'Drukrackoon', 'Jerboulda', 'Molar Bear', 'Moriwarty', 'Notfly', 'Polarpants', 'Shadellisk', 'Stringle', - ], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['hi', 'C']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if ((template.tier !== 'hi') && (template.tier !== 'C')) { - return [set.species + ' is not legal in [Gen 9] Blindsided.']; - } - } - }, + mod: 'randomtandem', + ruleset: ['Standard', 'Data Mod', '!Species Clause', 'Random Tandem Rule'], }, { - name: "[Gen 1] Burgundy Version", - desc: `[Gen 1] Burgundy Version: An expansion of the Gen 1 OU metagame that changes some mechanics and adds new Pokemon and moves, both original and from later gens.`, + name: "[Gen 1] RBY CAP", threads: [ - `• Burgundy Version on Smogon Forums`, + `• RBY CAP on Smogon Forums`, ], - mod: 'gen1burgundy', - ruleset: ['Standard With Dig and Fly', 'Data Mod', 'Allow Tradeback'], - banlist: ['Uber'], - unbanlist: ['Anorith', 'Armaldo', 'Meditite', 'Medicham', 'Fletchling', 'Fletchinder', 'Talonflame', 'Sneasel-Hisui', 'Sneasler', 'Snover', 'Abomasnow', - ], - }, + mod: 'gen1rbycap', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber', 'Camouflage'], + }, { - name: "[Gen 9] Book of Enigmas", - desc: [ - "Book of Enigmas: A Pet Mod that aims to create new Paradox Pokemon based on Ho-oh and Lugia - the sky and the sea, respectively.", - ], + name: "[Gen 9] Roulettemons 2", + desc: `[Gen 9] Roulettemons 2: A meta where the only legal Pokemon are randomly-generated Fakemon.`, threads: [ - `&bullet: Thread on Smogon.`, + `• Roulettemons 2 on Smogon Forums`, ], - ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause'], + mod: 'roulettemons2', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], banlist: [ 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', - 'Sceptilite', 'Blazikenite', 'Swampertite', 'Gardevoirite', 'Galladite', 'Alakazite', 'Gyaradosite', - 'Sablenite', 'Mawilite', 'Aggronite', 'Medichamite', 'Manectite', 'Sharpedonite', 'Cameruptite', - 'Altarianite', 'Absolite', 'Glalitite', 'Salamencite', 'Metagrossite', 'Latiasite', 'Latiosite', - 'Garchompite', 'Steelixite', 'Beedrillite', 'Pidgeotite', - 'Blue Orb', 'Red Orb', //this is just copied from ANL's lol - 'Beedrill-Mega', 'Pidgeot-Mega', //????? ], onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['BoE OU', "BoE NFE", "BoE LC"]; + let allowedTiers = ['R2']; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Book of Enigmas OU.']; + if (template.tier !== 'R2') { + return [set.species + ' is not legal in [Gen 9] Roulettemons 2.']; } } }, - mod: 'bookofenigmas', }, { - name: "[Gen 9] Breeding Variants V4", - desc: `A NatDex format that adds alternate forms for Pokemon based around inheriting elements from a possible breeding partner.`, + name: "[Gen 9] Roulettemons 2 Ubers", + desc: `[Gen 9] Roulettemons 2 Ubers: A broken meta where the only legal Pokemon are randomly-generated Fakemon.`, threads: [ - `• Breeding Variants V4`, + `• Roulettemons 2 on Smogon Forums`, ], - mod: 'breedingvariantsnatdex', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Mega Data Mod'], + mod: 'roulettemons2', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], banlist: [ - 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', - 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', - ], - }, - { - name: "[Gen 9] CCAPM 2024", - threads: [ - `• Community Create-A-Pet Mod 2024`, + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', ], - mod: 'ccapm2024', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Sleep Clause Mod', 'Data Mod', 'Terastal Clause'], - banlist: [], onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['CCAPM2024']; + let allowedTiers = ['R2', 'R2Ubers']; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in CCAPM 2024.']; + if (template.tier !== 'R2' && template.tier !== 'R2Ubers') { + return [set.species + ' is not legal in [Gen 9] Roulettemons 2.']; } } }, }, { - name: "[Gen 9] CCAPM 2024 Random Battle", - threads: [ - `• Community Create-A-Pet Mod 2024`, + name: "[Gen 9] ReGeneration", + desc: [ + "In this Pet Mod, we will redesign the competitive functions of the Kantonian Pokemon after a Paldean counterpart.", ], - mod: 'ccapm2024', - team: 'random', - ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Cancel Mod', 'Data Mod'], - }, - { - name: "[Gen 9] Clean Slate Micro 2", - desc: `Clean Slate.`, threads: [ - `Clean Slate Micro 2`, + '• ReGeneration', + '• Spreadsheet', + ], + mod: 'regeneration', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'], + banlist: [ + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + 'Aerodactylite', 'Alakazite', 'Beedrillite', 'Blastoisinite', 'Charizardite X', 'Charizardite Y', 'Gengarite', + 'Gyaradosite', 'Kangaskhanite', 'Mewtwonite X', 'Mewtwonite Y', 'Pidgeotite', 'Pinsirite', 'Slowbronite', 'Venusaurite' ], - mod: 'csm2', - ruleset: ['Standard', 'Dynamax Clause'], - // onSwitchIn(pokemon) { - // this.add('-start', pokemon, 'typechange', pokemon.types.join('/'), '[silent]'); - // }, onValidateTeam(team, format) { /**@type {{[k: string]: true}} */ let speciesTable = {}; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'CSM2') { - return [set.species + ' is not useable in Clean Slate Micro 2.']; + if (template.tier !== 'ReGeneration' && template.tier !== 'ReGeneration NFE' && template.tier !== 'ReGeneration LC') { + return [set.species + ' is not usable in ReGeneration.']; } } }, }, { - name: "[Gen 9] Crossover Chaos [Ver. C]", - desc: `Crossover Chaos, a micrometa designed to crossover characters from video game titles.`, - threads: [ - `Gen 9 Crossover Chaos (Ver. C)`, - ], - mod: 'gen9crossoverchaosc', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Moves Clause', 'Terastal Clause', 'Mega Data Mod'], - banlist: ["Buginium Z", "Darkinium Z", "Dragonium Z", "Electrium Z", "Fairium Z", "Fightinium Z", "Firium Z", "Flyinium Z", "Ghostium Z", - "Grassium Z", "Groundium Z", "Icium Z", "Normalium Z", "Poisonium Z", "Psychium Z", "Rockium Z", "Steelium Z", "Waterium Z"], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ + name: "[Gen 9] Regional Evolutions", + desc: 'A NatDex micrometa, with only new regional forms and regional evolutions!', + threads: [], + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], + banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Baton Pass'], + teambuilderFormat: 'National Dex', + onValidateTeam(team, format) { let speciesTable = {}; - let allowedTiers = ['CC OU']; + let allowedTiers = ['RegEvo', 'RegEvo NFE']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Crossover Chaos Version C.']; + return [set.species + ' is not legal in RegEvo.']; } } }, + mod: 'regionalevolutions', }, { - name: "[Gen 6] DLCmons V3", - desc: ["DLCmons: This Pet Mods aims at creating DLCs for Pokemon games, like how the Expansion Pass worked for Galar. This will include adding existing Pokemon that are not in the chosen regional Pokedex, adding new ones, creating regional formes, items, moves... This will be a pretty diverse project!", - ], + name: "[Gen 9] Return to Orre: Tercera", + desc: [ + "This is a micrometa that only uses Pokemon obtainable in Colosseum and XD.", + ], threads: [ - `• DLCmons v3 on Smogon Forums`, - `• Spreadsheet`, - ], - ruleset: ['Standard', 'Data Mod', 'Mega Data Mod'], + '• RTO: Tercera', + ], + mod: 'returntoorretercera', + ruleset: ['Standard NatDex', 'Terastal Clause', 'Picked Team Size = 3', 'Adjust Level = 50', 'VGC Timer'], banlist: [ - 'AG', 'Uber', - 'Arena Trap', 'Power Construct', 'Shadow Tag', - 'Baton Pass', - 'King\'s Rock', 'Razor Fang', 'Quick Claw', + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + 'Aerodactylite', 'Alakazite', 'Beedrillite', 'Blastoisinite', 'Charizardite X', 'Charizardite Y', 'Gengarite', + 'Gyaradosite', 'Kangaskhanite', 'Mewtwonite X', 'Mewtwonite Y', 'Pidgeotite', 'Pinsirite', 'Slowbronite', 'Venusaurite', + 'Lugia', 'Ho-Oh', 'All Items' ], onValidateTeam(team, format) { /**@type {{[k: string]: true}} */ let speciesTable = {}; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'Kalos OU' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)' && template.tier !== 'Kalos (LC)' && template.tier !== 'Kalos Uber') { - return [set.species + ' is not a part of the Kalos Pokédex.']; - } - else if (template.tier === 'Kalos Uber') { - return [set.species + ' is banned from DLCmons.']; + if (template.tier !== 'TERCERA' && template.tier !== 'TERCERA NFE') { + return [set.species + ' is not usable in Return to Orre: Tercera.']; } } }, - mod: 'dlcmons', }, { - name: "[Gen 6] DLCmons V3 VGC", - desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, - threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'dlcmons', - gameType: 'doubles', - ruleset: ['Adjust Level = 50', 'VGC Timer', 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'Mewtwo', 'Mew', - 'Lugia', 'Ho-Oh', 'Celebi', - 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', - 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', - 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', - 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', - 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', - 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', - 'Koraidon', 'Miraidon', + name: "[Gen 9] Set in Stone", + desc: [ + "Set in Stone: A micrometa where Pokemon are customized based on a combination of two player's set ideas.", ], + threads: [ + `• Set in Stone on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], + banlist: [], onValidateTeam(team, format) { /**@type {{[k: string]: true}} */ let speciesTable = {}; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'Kalos OU' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)' && template.tier !== 'Kalos (LC)') { - return [set.species + ' is not a part of the Kalos Pokédex.']; + if ( template.tier !== 'SS') { + return [set.species + ' is not usable in Set in Stone.']; } } }, + mod: 'setinstone', }, { - name: "[Gen 9] Dollhouse", - desc: [ - "Dollhouse: An OU-based mod where, instead of bans, Pokemon are removed from the metagame by being turned into held items.", - ], + name: "[Gen 9] Secret Santa", + desc: '[Gen 9] Secret Santa: One person sets restrictions for another to follow in the creation of a fakemon".', threads: [ - `• Thread on the Smogon Forums`, - ], - mod: 'dollhouse', - ruleset: ['Standard', 'Terastal Clause'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 9] Do Not Use: The Pet Mod: The Musical", - desc: [ - "Do Not Use: The Pet Mod: The Musical: A National Dex Pet Mod where only Pokemon with 280 BST or less, with some exception, are allowed. New Pokemon are added and edited into the existing DNU metagame." + '• Secret Santa', + 'https://docs.google.com/spreadsheets/d/1IPFlVP4osQhGtjNRheycCX0AnZiUVipumGwqKdhOS2s/edit#gid=1272593335">Spreadsheet', ], - threads: [ - `• Do Not Use: The Pet Mod: The Musical`, + mod: 'secretsanta', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', '+Past'], + banlist: [ + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', ], - mod: 'donotusetmptm', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause', 'Data Mod'], - teambuilderFormat: 'National Dex', - banlist: ['Huge Power', 'Pure Power', 'Shadow Tag', 'Arena Trap', 'Baton Pass', 'Moody', 'Cute Charm'], - unbanlist: ['Assist'], onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['DoNU', 'DoNU UUBL', 'DoNU UU', 'DoNU RUBL', 'DoNU RU']; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in [Gen 9] Do Not Use: The Pet Mod: The Musical.']; + if (template.tier !== 'santa') { + return [set.species + ' is not usable in Secret Santa.']; } } }, }, { - name: "[Gen 9] Ebb and Flow", + name: "[Gen 3] Shadow Colosseum", + mod: 'gen3shadowcolosseum', + gameType: 'doubles', + desc: [ + `[Gen 3] Shadow Colosseum: A Gen 3 Orre Colosseum (Gen 3 VGC) metagame that adds Shadow Pokemon and moves to the game.`, + ], threads: [ - `Ebb and Flow`, + `• Shadow Colosseum on the Smogon Forums`, + ], + ruleset: [ + 'Obtainable', 'Team Preview', 'Species Clause', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Max Team Size = 6', 'VGC Timer', + 'Nickname Clause', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Exact HP Mod', 'Item Clause', 'Open Team Sheets', + 'Shadow Mechanic', 'Data Preview', + ], + banlist: ['Soul Dew', 'Deoxys-Defense', 'Deoxys-Attack', 'Deoxys-Speed', 'Restricted Legendary', 'Mythical'], + unbanlist: ['Latios', 'Latias', 'Wobbuffet', 'Wynaut'], + bestOfDefault: true, + onBegin() { + this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect, you will lose the battle'); + }, + }, + { + name: "[Gen 3] Shadow Colosseum Custom Game", + mod: 'gen3shadowcolosseum', + gameType: 'doubles', + searchShow: false, + debug: true, + battle: {trunc: Math.trunc}, + ruleset: [ + 'HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', + 'Default Level = 100', 'Shadow Mechanic', 'Data Preview', 'Exact HP Mod', 'Open Team Sheets', 'Team Preview', ], - mod: 'ebbandflow', - ruleset: ['Standard', 'Terastal Clause'], - banlist: ['Uber', 'AG', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody'], }, { - name: "[Gen 9] Elimination War", - mod: 'eliminationwar', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], + name: "[Gen 9] Six by Six", + desc: [ + `Six by Six: A Gen 9 micrometa featuring only 6 Pokemon, each with 6 forms.`, + ], + threads: [ + `• Six by Six on the Smogon Forums`, + ], + mod: 'sixbysix', + ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Terastal Clause', 'Data Mod'], + banlist: ['King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], onValidateTeam(team, format) { let speciesTable = {}; - let allowedTiers = ['Legal'/*, 'Eliminated'*/]; + let allowedTiers = ['King', 'Queen', 'Bishop', 'Knight', 'Rook', 'Pawn']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Elimination War']; + return [set.species + ' is not legal in Six by Six.']; } } }, }, { - name: "[Gen 9] Eternal Pokémon", - mod: 'eternalpokemon', - desc: 'A Pet Mod that aims to give Eternal Floette-like formes to other NFE Pokémon.', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Moves Clause', 'Z-Move Clause', 'Data Mod', 'Terastal Clause', 'Picked Team Size = 6'], // temporarily asks for team order until Magikarp-Eternal situation is solved + name: "[Gen 9] Super Smash Mods Brawl", + desc: [ + "Super Smash Mods Brawl: The third in the Super Smash Mods series, creating a micrometa using Pokemon from other Pet Mods and Solomods.", + ], threads: [ - `• Eternal Pokémon on Smogon Forums`, + `• Super Smash Mods Brawl on Smogon Forums`, + ], + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'Sleep Moves Clause', 'Terastal Clause', /*'Z-Move Clause',*/ 'Data Mod', 'Mega Data Mod'], + banlist: [ + 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', + 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', + 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Houndoominite', + 'Zinogrite', + /*'Wishing Stone',*/ 'Epic Beam', // temp bans ], - banlist: ['Aegislash', 'Aerodactylite', 'Gardevoirite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Power Construct', 'Salamencite', 'Zygarde', 'Arena Trap', 'Baton Pass', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Quick Claw'], - teambuilderFormat: 'National Dex', onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['FE', '1x NFE', '2x NFE']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier == 'Banned') return [set.species + ' is banned in Eteral Pokémon']; - if (template.tier == 'WIP') return [set.species + ' has some coding challenges, so it\'s not allowed yet!']; - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not available in Eternal Pokémon.']; + if ( template.tier !== 'SSB') { + return [set.species + ' is not usable in Super Smash Mods Brawl.']; } } }, + mod: 'smashmodsbrawl', }, { - name: "[Gen 9] Eramons", + name: "[Gen 9] Super Smash OMs", desc: [ - `Eramons: A Gen 9 Pet Mod based on broad strokes of real-life historical time periods.`, + "Super Smash OMs: A project that aims to create a micrometa containing Pokemon from different Gen 9 OMs.", ], threads: [ - `• Gen 9 Eramons`, - ], - - mod: 'eramons', - ruleset: ['Standard', 'Terastal Clause'], - banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], - onValidateTeam(team, format, teamHas) { - /**@type {{[k: string]: true}} */ + `• Super Smash Mods Melee on Smogon Forums`, + ], + ruleset: ['Standard', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', + 'Move Legality', 'Revelationmons Mod Modded', '!Obtainable Abilities'], + banlist: ['Baton Pass', 'Last Respects', 'Shed Tail'], + onValidateTeam(team, format) { + // @type {{[k: string]: true}} let speciesTable = {}; - let era : string[] = []; - let allowedTiers = ['ECiv', 'Med', 'PrDay', 'FFut']; for (const set of team) { let template = this.dex.species.get(set.species); - let tier = template.tier; + let allowedTiers = ['Flipped', 'Tier Shift', 'Convergence', 'Mix and Mega', 'STABmons', 'Inheritance', 'Re-Evolution', 'Pokebilities', 'Sketchmons', 'Cross Evolution', 'Almost Any Ability', '350 Cup', 'Frantic Fusions', 'Bonus Type', 'Revelationmons', 'Nature Swap','Formemons']; if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Eramons.']; + return [set.species + ' is not usable in Super Smash OMs.']; } - if (!(era.includes(tier))) { - era.push(tier) + } + }, + onValidateSet(set) { + const STABList = ["Arboliva", "Porygon2", "Terrakion"]; + const SketchList = ["Garchomp", "Registeel"]; + const ConvList = ["Greninja", "Ogerpon", "Zarude"]; + const STABbanlist = ["Acupressure", "Astral Barrage", "Belly Drum", "Ceaseless Edge", "Clangorous Soul", "Dire Claw", "Dragon Energy", "Electro Shot", + "Extreme Speed", "Fillet Away", "Final Gambit", "Flower Trick", "Gigaton Hammer", "No Retreat", "Rage Fist", "Revival Blessing", "Shell Smash", "Shift Gear", + "Triple Arrows", "V-Create", "Victory Dance", "Water Shuriken", "Wicked Blow", "Wicked Torque"]; + const Convbanlist = ["Boomburst", "Extreme Speed", "Population Bomb", "Rage Fist", "Shell Smash", "Spore", "Quiver Dance"]; + for (const move of set.moves) { + let species = this.dex.species.get(set.species); + if (STABList.includes(species.name) && STABbanlist.includes(move)) { + return [`${set.name || set.species} has restricted move ${move}.`]; + } + if (ConvList.includes(species.name) && Convbanlist.includes(move)) { + return [`${set.name || set.species} has restricted move ${move}.`]; } } - if (era.length > 1) return ['Each Pokemon needs to be from the same era.']; }, + mod: 'supersmashoms', }, { - name: "[Gen 9] Fakemon Frontier OU", - desc: `[Gen 9] Fakemon Frontier OU: A meta where the only legal Pokemon are community-made Fakemon that follow two of four predetermined "rules."`, - threads: [ - `• Fakemon Frontier on Smogon Forums`, - ], - mod: 'fakemonfrontier', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - banlist: [ - 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Sonic Boom', 'Submission', - 'Dragon Rage', 'Meditate', 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', - 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', - 'Hyper Fang', 'Sharpen', 'Triple Kick', 'Spider Web', 'Mind Reader', 'Nightmare', 'Feint Attack', 'Octazooka', 'Foresight', - 'Return', 'Frustration', 'Magnitude', 'Pursuit', 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', - 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', 'Camouflage', 'Mud Sport', 'Ice Ball', - 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', 'Signal Beam', 'Sky Uppercut', 'Water Sport', - 'Miracle Eye', 'WakeUp Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', - 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', 'Captivate', 'Dark Void', - 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', - 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Rototiller', 'Ion Deluge', 'Crafty Shield', 'Flower Shield', 'Electrify', - 'Venom Drench', 'Powder', 'PowerUp Punch', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', 'Laser Focus', 'Gear Up', 'Aura Wheel', - 'Last Respects', 'Shed Tail', 'Baton Pass' + name: "[Gen 9] Super Smash Stereotypes", + desc: [ + "Super Smash Stereotypes: A project that aims to create a micrometa containing a Pokemon from other mods for all 171 possible types.", ], + threads: [ + `• Super Smash Mods Melee on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], + banlist: ['Gardevoirite', 'Chillytite', 'Bisharpite', 'Baton Pass'], onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['FFOU']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'FFOU') { - return [set.species + ' is not legal in [Gen 9] Fakemon Frontier OU.']; + if ( template.tier !== 'SSS') { + return [set.species + ' is not usable in Super Smash Stereotypes.']; } } }, + mod: 'smashstereotypes', }, { - name: "[Gen 9] Fusion Evolution Random Battle", - mod: 'gen9fe', - team: 'random', - desc: `gen9fe`, - ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Z-Move Clause', 'OU Terastal Clause'], + name: "[Gen 9] TeraForming", + threads: [ + `• Spreadsheet`, + ], + mod: 'teraforming', + ruleset: ['Standard', 'Terastal Clause', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Stellar Orb'], }, { - name: "[Gen 9] Fusion Evolution", - threads: [ - `Gen 9 Fusion Evolution`, + name: "[Gen 9] TeraMax", + mod: 'teramax', + ruleset: ['Standard', 'Data Mod'], + banlist: [ + 'Arena Trap', 'Power Construct', 'Moody', 'Shadow Tag', 'Stellar Shift', 'Stellar Shell', 'King\'s Rock', 'Baton Pass', + 'Last Respects', 'Shed Tail', 'Wishing Stone > 1', 'Light Clay', ], - mod: 'gen9fe', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'OU Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - banlist: ['Metagrossite', 'Revival Blessing', 'Shed Tail', 'Last Respects', 'Gengarite', 'Ampharosite', 'Salamencite', 'Baton Pass', 'Light Clay', 'Absolite', 'Medichamite'], onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['FEOU', 'FEUUBL', 'FEUU', 'FENFE', "FELC"]; + let allowedTiers = ['TMOU', 'TMFE', 'TMNFE', "TMLC"]; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; + return [set.species + ' is not legal in TeraMax.']; } } }, + onSwitchOut(pokemon) { + const isTeraStellar = pokemon.terastallized === 'Stellar'; + if (isTeraStellar) { + pokemon.stellarBoostedTypes = []; + } + }, }, { - name: "[Gen 9] Fusion Evolution UU", - threads: [ - `Gen 9 Fusion Evolution UU`, - ], - mod: 'gen9fe', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - //While the first users of the mega stone will be made illegal with them if the respective megas are banned and not the stones, - //banning other megas accessed through said stone will not ban the use of said mega stone on the base forms - banlist: ['Altarianite', 'Revival Blessing', 'Shed Tail', 'Last Respects', 'Mawilite', 'Alakazite', 'Baton Pass', 'Light Clay', - 'Aero Wake', 'Amigotrio-Alola', 'Amphamence', 'Anoraidon', 'Arbolosion-Hisui', 'Baxgeist-Large', 'Bellikiss', 'Bouffa-Lu', 'Brambleswine', - 'Celedos', 'Cresserace', 'Crygargonal', 'Deciperior-Hisui', 'Deliraidon', 'Deoxyslash-Speed', 'Drampiclus', 'Druddizor', - 'Floatzera', 'Florgerouge', 'Gargamise', 'Garpyuku', 'Great Kleav', 'Icekrai', 'Iron Dirge', 'Iron Legion', 'Iron Matcha', 'Medichamite', - 'Iron Meta', 'Iron Mimic', 'Iron Tornado', 'Lelecuno-Galar', 'Meowscorio-Sensu', 'Necrotrik-Dawn-Wings', 'Necrotrik-Ultra', 'Primeleo', - 'Relishadow', 'Revarantis', 'Roaring Sal', 'Rotoghold', 'Samuraiai-Hisui', 'Scream Cormorant', 'Sol Valiant', 'Stargrowth', 'Tapu Titan', 'Tinkovish', 'Toedieleki', - 'Urshiluxe-Rapid-Strike', 'Varantis', 'Vikadrago', 'Weezaluna-Bloodmoon', 'Whimsy Sands', 'Wopple', 'Yu-Clod', 'Yveltox', 'Slither King', - 'Muktaria-Alola-Mega', 'Mawlakazam-Mega-X', 'Mawlakazam-Mega-Y', 'Goopert-Hisui-Mega', 'Scizorite', 'Tentazor-Mega', 'Zoroshark-Hisui-Mega' + name: "[Gen 9] Tier Sovereign", + desc: [ + "Tier Sovereign: A micrometa where Lindwallow rules.", ], - //Just slapping "FEOU" in the banlist exclude these mons from the teambuilder... but an error ('Nothing matches "FEOU"') was thrown in dex-formats on the server side - //Hence why bans were done manually + threads: [ + `• Tier Sovereign on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod','Tier Sovereign Mod','Terastal Clause'], + banlist: [], onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['FEUU', 'FENFE', "FELC"]; + let allowedTiers = ['Tier Sovereign', 'TSOU'] for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution UU.']; + return [set.species + ' is not usable in Tier Sovereign.']; } } }, + mod: 'tiersovereign', }, { - name: "[Gen 9] Fusion Evolution Restrictions", - threads: [ - `Fusion Evolution Restrictions`, + name: "[Gen 9] Trading Post", + mod: 'tradingpost', + ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', '!Evasion Items Clause'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }, + { + name: "[Gen 9] Trainer Support", + mod: 'trainersupport', + ruleset: ['Standard', 'Trainer Support Rule', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }, + { + name: "[Gen 9] Triple Threat", + desc: [ + "Triple Threat: A micrometa where Pokemon are allowed to have up to three types.", ], - mod: 'gen9ferestrictions', - ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Terastal Clause', 'Mega Rayquaza Clause', 'Mega Data Mod', 'Data Mod'], - banlist: ['Revival Blessing', 'Shed Tail', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Altarianite'], + threads: [ + `• Triple Threat on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], + banlist: [], onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['FERE', 'FERENFE', 'FERELC', 'Silverade']; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution Restricted.']; + if ( template.tier !== 'TT') { + return [set.species + ' is not usable in Triple Threat.']; } } }, + mod: 'triplethreat', }, { - name: "[Gen 9] Generation X: Brunica [Uber]", - desc: ["Generation X: A pet mod that aims to develop new regions with brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Brunica, the mod's second region in Generation 9 after Desvega and fourth overall."], - threads: [ - `Gen 9 Generation X`, - `Announcement of Generation X's fourth iteration`, - ], - mod: 'genxbrunica', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - banlist: [], - unbanlist: ['Last Respects', 'Shed Tail', 'Bright Powder', 'Razor Fang', 'Arena Trap', 'Moody', 'Shadow Tag'], //Uber unbans + name: "[Gen 9] Two-Step Mons v3", + mod: 'twostepmonsv3', + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], + banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + teambuilderFormat: "National Dex", onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['Brunica Uber', 'Brunica OU', 'Brunica NFE', "Brunica LC"]; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not available in Generation X\'s Brunica formats.']; - } - } - },/* - onChangeSet(set) { - if (set.species.startsWith('Lutakon')) { - const item = this.toID(set.item); - if (item === 'awakeningseed') { - set.species = 'Lutakon-Awakened'; - set.ability = 'Guardian of Nature'; - let synthesis = set.moves.indexOf('Synthesis'); - if (synthesis < 0) { - synthesis = set.moves.indexOf('synthesis'); - } - if (synthesis >= 0) { - let gaiaRecoveryIndex = set.moves.indexOf('gaiarecovery'); - if (gaiaRecoveryIndex < 0) { - gaiaRecoveryIndex = set.moves.indexOf('Gaia Recovery'); - } - if (gaiaRecoveryIndex >= 0) { - delete set.moves[synthesis]; - } - else { - set.moves[synthesis] = 'gaiarecovery'; - } - } - } else { - set.species = 'Lutakon'; + if ( template.tier !== 'TSMv3') { + return [set.species + ' is not usable in Two-Step Mons v3.']; } } - },*/ + }, }, { - name: "[Gen 9] Generation X: Brunica [OU]", - desc: ["Generation X: A pet mod that aims to develop new regions with brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Brunica, the mod's second region in Generation 9 after Desvega and fourth overall."], + name: "[Gen 9] Ubermons", threads: [ - `Gen 9 Generation X`, - `Announcement of Generation X's fourth iteration`, + `• Ubermons Thread`, ], - mod: 'genxbrunica', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - banlist: ['Akulut', 'Kaiwakaw', 'Lutakon', 'Lutakon-Awakened', 'Tinozous'], //Ubers - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Brunica OU', 'Brunica NFE', "Brunica LC"]; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier === 'Brunica Uber') { - return [set.species + ' is banned in Generation X\'s OU format for Brunica.']; - } - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not available in Generation X\'s Brunica formats.']; - } - } - }, + + mod: 'gen9ubermons', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause'], + banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass'], + teambuilderFormat: "National Dex", }, { - name: "[Gen 9] Generation X: Desvega [Uber]", - desc: ["Generation X: A pet mod that aims to develop new regions with brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Desvega, the mod's first region in Generation 9 and third region overall, as the successor to Loria from Generation 8."], + name: "[Gen 9] VaporeMons", + desc: [ + "VaporeMons: The third mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + ], threads: [ - `Gen 9 Generation X`, + `• Thread on the Smogon Forums`, + `• Spreadsheet`, ], - mod: 'genxdesvega', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - banlist: [], - unbanlist: ['Last Respects', 'Shed Tail', 'Bright Powder', 'Razor Fang', 'Arena Trap', 'Moody', 'Shadow Tag'], //Uber unbans + mod: 'gen9vaporemons', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Light Clay', 'Fling + Segin Star Shard', /*'Damp Rock'*/], + }, + { + name: "[Gen 9] Worldbuilding", + threads: [ + `Worldbuilding`, + ], + mod: 'worldbuilding', + ruleset: ['Standard NatDex', 'Evasion Moves Clause', 'Evasion Items Clause', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause'], + banlist: ['AG', 'Uber', 'Assist', 'Baton Pass'], onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['Desvega Uber', 'Desvega OU', 'Desvega NFE', "Desvega LC"]; + let allowedTiers = ['WLB']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not available in Generation X\'s Desvega formats.']; + return [set.species + ' is not legal in Worldbuilding.']; } } }, }, + // Start { - name: "[Gen 9] Generation X: Desvega [OU]", - desc: ["Generation X: A pet mod that aims to develop new regions with both brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Desvega, the mod's first region in Generation 9 and third region overall, as the successor to Loria from Generation 8."], + name: "[Gen 9] VGC 20xx", + desc: ["Custom VGC format by sugarbear", + ], threads: [ - `Gen 9 Generation X`, - ], - mod: 'genxdesvega', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], - banlist: ['Ursaluna-Bloodmoon', 'Naganadel', 'Arcognition', 'Janutcher', 'Virulope'], //Ubers + `• VGC 20xx on Smogon Forums`, + `• Spreadsheet New Stuff`, + `• Spreadsheet Returning Stuff and Changes`, + ], + // searchShow: false, + gameType: 'doubles', + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Terastal Clause', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], + mod: 'gen9vgc20xx', onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['Desvega OU', 'Desvega NFE', "Desvega LC"]; + let allowedTiers = ['VGC', 'VGC NFE']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier === 'Brunica Uber') { - return [set.species + ' is banned in Generation X\'s OU format for Desvega.']; - } if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not available in Generation X\'s Desvega formats.']; + return [set.species + ' is not legal in VGC 20xx.']; } } }, }, + // End + /////////////////////////////////////////////////////////////// + ///////////////////// Gen 8 Pet Mods ////////////////////////// + /////////////////////////////////////////////////////////////// + { + section: "Gen 8 Pet Mods", + column: 1, + // name: "gen8petmods", + }, { - name: "[Gen 9] GlaceMons", - desc: [ - "GlaceMons: The fourth mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for Gen 9 NatDex OU (and new items, abilities and moves are added) without changing base stats.", - ], + name: "[Gen 8] Abilitypos", + desc: `Abilitypos: In this Pet Mod, your goal is to take an ability and change a few letters in its name to make it brand new. `, threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'glacemons', - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], - banlist: ['AG', 'Uber', 'Power Construct', 'Berserk Gene', 'Arena Trap', 'Sand Veil', 'Snow Cloak', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', - // 'Blastoise + Parallel Mega Orb', 'Salamence + Parallel Mega Orb', 'Gengar + Parallel Mega Orb', 'Alakazam + Parallel Mega Orb', 'Blaziken + Parallel Mega Orb', 'Lucario + Parallel Mega Orb', 'Gallade + Parallel Mega Orb', - 'Special Tera Orb', - // stupid dungeon's looplet - 'Dungeon\s Looplet + Zygarde-10%', - 'Dungeon\s Looplet + Diglett', 'Dungeon\s Looplet + Dugtrio', 'Dungeon\s Looplet + Trapinch', - 'Dungeon\s Looplet + Sandshrew', 'Dungeon\s Looplet + Sandslash', 'Dungeon\s Looplet + Diglett-Alola', 'Dungeon\s Looplet + Dugtrio-Alola', 'Dungeon\s Looplet + Geodude', 'Dungeon\s Looplet + Graveler', 'Dungeon\s Looplet + Golem', 'Dungeon\s Looplet + Phanpy', 'Dungeon\s Looplet + Donphan', 'Dungeon\s Looplet + Gligar', 'Dungeon\s Looplet + Gliscor', 'Dungeon\s Looplet + Larvitar', 'Dungeon\s Looplet + Cacnea', 'Dungeon\s Looplet + Cacturne', 'Dungeon\s Looplet + Gible', 'Dungeon\s Looplet + Gabite', 'Dungeon\s Looplet + Helioptile', 'Dungeon\s Looplet + Heliolisk', 'Dungeon\s Looplet + Sandygast','Dungeon\s Looplet + Palossand', 'Dungeon\s Looplet + Silicobra', 'Dungeon\s Looplet + Sandaconda', 'Dungeon\s Looplet + Wiglett', 'Dungeon\s Looplet + Wugtrio', 'Dungeon\s Looplet + Orthworm', - 'Dungeon\s Looplet + Sandshrew-Alola', 'Dungeon\s Looplet + Sandslash-Alola', 'Dungeon\s Looplet + Vulpix-Alola', 'Dungeon\s Looplet + Ninetales-Alola', 'Dungeon\s Looplet + Swinub', 'Dungeon\s Looplet + Piloswine', 'Dungeon\s Looplet + Froslass', 'Dungeon\s Looplet + Vanillite', 'Dungeon\s Looplet + Vanillish', 'Dungeon\s Looplet + Cetoddle', - 'Dungeon\s Looplet + Wobbuffet', 'Dungeon\s Looplet + Wynaut', 'Dungeon\s Looplet + Gothita', 'Dungeon\s Looplet + Gothorita', 'Dungeon\s Looplet + Gothitelle', - // will free later on - 'Parallel Mega Orb', + `• Abilitypos on Smogon Forums`, + `• Spreadsheet`, ], - unbanlist: ['Light of Ruin'], - teambuilderFormat: 'National Dex', + ruleset: ['Standard NatDex'], + banlist: ['All Pokemon'], + unbanlist: ['Sceptile', 'Charizard', 'Inteleon', 'Lanturn', 'Larvesta', 'Aggron', 'Sableye', 'Carbink', 'Entei', 'Hatterene', 'Raticate-Alola', 'Lapras'], + mod: "abilitypos", }, { - name: "[Gen 9] GlaceMons Uber", - desc: [ - "GlaceMons: The fourth mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for Gen 9 NatDex OU (and new items, abilities and moves are added) without changing base stats.", - ], + name: "[Gen 8] Alternatium", + desc: `Alternatium: A metagame made up of only Pokemon with alternate forms exist, with all of them being seperate and unique Pokemon.`, threads: [ - `• Spreadsheet for the mod`, + `• Alternatium on Smogon Forums`, + `• Spreadsheet`, ], - mod: 'glacemonsuber', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], - banlist: ['AG', 'Berserk Gene', 'Sand Veil', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', // 'Gengar + Parallel Mega Orb', - 'Dungeon\s Looplet + Sandshrew', 'Dungeon\s Looplet + Sandslash', 'Dungeon\s Looplet + Diglett-Alola', 'Dungeon\s Looplet + Dugtrio-Alola', 'Dungeon\s Looplet + Geodude', 'Dungeon\s Looplet + Graveler', 'Dungeon\s Looplet + Golem', 'Dungeon\s Looplet + Phanpy', 'Dungeon\s Looplet + Donphan', 'Dungeon\s Looplet + Gligar', 'Dungeon\s Looplet + Gliscor', 'Dungeon\s Looplet + Larvitar', 'Dungeon\s Looplet + Cacnea', 'Dungeon\s Looplet + Cacturne', 'Dungeon\s Looplet + Gible', 'Dungeon\s Looplet + Gabite', 'Dungeon\s Looplet + Helioptile', 'Dungeon\s Looplet + Heliolisk', 'Dungeon\s Looplet + Sandygast','Dungeon\s Looplet + Palossand', 'Dungeon\s Looplet + Silicobra', 'Dungeon\s Looplet + Sandaconda', 'Dungeon\s Looplet + Wiglett', 'Dungeon\s Looplet + Wugtrio', 'Dungeon\s Looplet + Orthworm', - 'Dungeon\s Looplet + Sandshrew-Alola', 'Dungeon\s Looplet + Sandslash-Alola', 'Dungeon\s Looplet + Vulpix-Alola', 'Dungeon\s Looplet + Ninetales-Alola', 'Dungeon\s Looplet + Swinub', 'Dungeon\s Looplet + Piloswine', 'Dungeon\s Looplet + Froslass', 'Dungeon\s Looplet + Vanillite', 'Dungeon\s Looplet + Vanillish', 'Dungeon\s Looplet + Cetoddle', + mod: 'alternatium', + ruleset: ['Standard NatDex', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause'], + banlist: ['All Pokemon', 'Slowbronite', 'Red Orb', 'Blue Orb'], + unbanlist: [ + 'Silvally', 'Silvally-Bug', 'Silvally-Dark', 'Silvally-Dragon', 'Silvally-Electric', 'Silvally-Fairy', 'Silvally-Fighting', 'Silvally-Fire', 'Silvally-Flying', 'Silvally-Ghost', + 'Silvally-Grass', 'Silvally-Ground', 'Silvally-Ice', 'Silvally-Poison', 'Silvally-Psychic', 'Silvally-Rock', 'Silvally-Steel', 'Silvally-Water', 'Pikachu', 'Pikachu-Rock-Star', + 'Pikachu-Belle', 'Pikachu-Idol', 'Pikachu-PhD', 'Pikachu-Libre', 'Pikachu-Partner', 'Pikachu-Starter', 'Darmanitan', 'Darmanitan-Zen', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen', + 'Aegishield', 'Aegislash', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Rotom', 'Rotom-Heat', 'Rotom-Wash', 'Rotom-Frost', 'Rotom-Fan', 'Rotom-Mow', 'Dugtrio', + 'Dugtrio-Alola', 'Muk', 'Muk-Oilslick', 'Slowbro', 'Slowbro-Galar', 'Slowking', 'Slowking-Galar', 'Tornadus', 'Cummulus', 'Thundurus', 'Thundurus-Therian', 'Landorus', 'Landorus-Bengal', + 'Vivillon-Fancy', 'Vivillon-Spirit', 'Vivillon-Combat', 'Genesect', 'Genesect-Douse', 'Genesect-Molten', 'Genesect-Freezer', 'Genesect-Type-Delta', 'Groudon', 'Groudon-Primal', 'Kyogre', + 'Kyogre-Primal', 'Deoxys-Wood', 'Deoxys-Gem', 'Deoxys-Tank', 'Deoxys-Speed', 'Sandslash-Lustrous', 'Sandslash-Alola', 'Ninetales-Steamwork', 'Ninetales-Alola', 'Giratina', 'Giratina-Shadow', + 'Eternatus', 'Manustorm', 'Exeggutor', 'Exeggutor-Lighthouse', 'Weezing', 'Weezing-King', 'Raticate', 'Raticate-Alola', 'Linoone', 'Linoone-Punk', 'Castform', 'Castform-Firestorm', + 'Castform-Thunderstorm', 'Castform-Snowy', 'Wormadam', 'Wormadam-Sandy', 'Fibormadam', 'Farfetch\u2019d', 'Farfetch\u2019d-Galar', 'Corsola', 'Corsoul', 'Shaymin', 'Shaymin-Sky', 'Keldeo', + 'Swordeo', 'Meloetta', 'Meloetta-Fighter', 'Lycanday', 'Lycanroc-Spectre', 'Lycanroc-Dusk', 'Gourgeist', 'Gourgeist-Fae', 'Gourgeist-Pulpy', 'Supergeist', 'Cramorant', 'Cramorant-Swimmer', + 'Cramorant-Gorging', 'Eiscue', 'Eiscue-Noice', 'Mimikyu', 'Mimikyu-Sparkstone', 'Morpeko-Marsh', 'Morvilant', 'Zygarde-Wyrm', 'Zygarde-Canid', 'Zygarde-Goliath', ], - unbanlist: ['Light of Ruin'], - teambuilderFormat: 'National Dex Uber', - onModifySpeciesPriority: 2, - onModifySpecies(species, target, source, effect) { - if (source?.forme && source.forme.startsWith('Mega') && source.hasItem('parallelmegaorb')) { - let newAbility = source.set.ability - const oldAbility = source.setAbility(newAbility); + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (speciesTable[template.id]) { + return ["You are limited to one of each Pokémon by Species Clause (except for different formes). ", "You have more than one " + template.id + "."]; + } + speciesTable[template.id] = true; } - return {...species}; }, }, { - name: "[Gen 9] Hide and Seaking", + name: "[Gen 8] Black Market", + mod: "blackmarket", + desc: [ + `Black Market: A Pet Mod where users build Fakemon over the span of a tournament.` + ], threads: [ - `Hide and Seaking`, + `• Black Market on Smogon Forums`, + `• Spreadsheet`, ], - teambuilderFormat: "National Dex", - mod: 'littleestcup', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'big dog Clause', 'Moniker Clause'], + ruleset: ['Standard NatDex'], + unbanlist: ['Dragapult', 'Tornadus-Therian', 'Blaziken', 'Greninja-Ash', 'Kyurem'], banlist: [ - 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', - 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Houndoominite', + 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken', 'Darkrai', 'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', + 'Eternatus', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', + 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', + 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Tornadus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', + 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass', + 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z' ], }, { - name: "[Gen 9] Hidden Gems", + name: "[Gen 8] Bust A Move", + desc: [ + "Bust A Move: A Pet Mod where previously competitively useless moves are given much needed makeovers.", + ], threads: [ - `Hidden Gems`, + `• Bust A Move on Smogon Forums`, + `• Spreadsheet`, + ], + mod: 'bustamove', + ruleset: ['Standard NatDex'], + banlist: [ + 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai', 'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', + 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', + 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Magearna', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', + 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', + 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass', ], - mod: 'hiddengems', - ruleset: ['Standard', 'Terastal Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], + teambuilderFormat: "OU", }, { - name: "[Gen 3] Hoenn Echoes", - mod: 'gen3hoennechoes', - ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod'], - banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'], - desc: `A mod based on Generation 3 Ubers which aims to breathe some life into the tier by reducing RNG elements, increasing Pokemon diversity, and balancing the tier around the Pokemon that are already strong.`, + name: "[Gen 8] CCaPM 2022", + desc: `ccapm: ccapm `, + mod: "ccapm2022", + ruleset: ['Standard', 'Data Mod', 'Godly Gift Mod'], + banlist: ['AG', 'Uber', + 'Blissey', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Nidoking', 'Nidoqueen', 'Pikachu', 'Toxapex', + 'Focus Band', 'King\'s Rock', 'Quick Claw', 'Razor Fang', + 'Huge Power', 'Moody', 'Arena Trap', 'Pure Power', 'Shadow Tag', + 'Baton Pass'], + restricted: ['Unicorn', 'Platypus', 'Power Plant', 'Druddigod', 'Snek', 'Ghost Car', 'Trapjaw Fireant', 'Duck', 'groundpoison', 'groundpoison-Crystallized', 'Metal Snek', 'Roc With Ram Horns', 'ghostnormal', 'Cartesian Plane Dragon', 'better than cinderace as soccer', 'Statue'], }, { - name: "[Gen 3] Hoenn Gaiden OU", - desc: ["Hoenn Gaiden: A Gen 3 pet mod that aims to devamp Gen 4-8 Pokemon, moves and items into the Gen 3 mechanics."], + name: "[Gen 2] Crystal: Sevii Islands", + desc: ["Crystal: Sevii Islands- A Gen 2 pet mod that aims to create new Pokemon, items, and moves for the GSC OU Metagame."], threads: [ - `• Hoenn Gaiden on Smogon Forums`, - ], - mod: 'gen3hoenngaiden', - ruleset: ['HG Standard', 'Data Mod', 'Freeze Clause Mod'], + `• Crystal: Sevii Islands on Smogon Forums`, + `• Crystal: Sevii Islands spreadsheet`, + ], + mod: 'gen2crystalseviiislands', + ruleset: ['Standard', 'Data Mod', 'Crystal: Sevii Islands Mod'], banlist: ['Uber'], - unbanlist: ['Sand Veil'], }, { - name: "[Gen 9] Iron Fist", + name: "[Gen 8] Extreme Reboot", + desc: `A metagame where the types, statuses, moves, abilities, and pokemon are rebooted.`, threads: [ - `Iron Fist`, + `Extreme Reboot`, ], - mod: 'sharedpowerironfist', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Species Clause', 'Mega Rayquaza Clause', 'Big Button Rule', 'MILF Rule', 'Ohmyrod Rule', 'Serious Rule', 'Mario Kart Wii Clause', 'I Love Hisui Rule', 'Circall Rule'], - banlist: ['Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', - 'Buginium Z', 'Darkinium Z', 'Dragonium Z', 'Electrium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Normalium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Waterium Z', - 'Absolite', 'Houndoominite', 'Blue Orb', 'Fish', 'Diamond Hand', 'Hoenn', 'Bird', 'Trans'], - unbanlist: ['Light of Ruin', 'Baddy Bad'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Viable', 'Unviable', 'Untested']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Iron Fist.']; - } - if (set.species === 'Mario Kart Wii' && set.ability !== 'Gorilla Tactics') { - return [set.species + ' must use Gorilla Tactics.']; - } - } + + mod: 'extremereboot', + ruleset: ['Standard', 'Dynamax Clause', 'Data Mod',], + banlist: ['All Pokemon', 'All Items'], + unbanlist: [ + 'Extreme Ribbit', 'Baobloss', 'Tenquarrel', 'Tradituki', 'Hibarrage', 'Pumking', 'Carboneichus', 'Calmengo', 'Paciphal', 'Hullacane', 'Cylindrake', + 'Efflor', 'Rantler', 'Zeploom', 'Terraphi', 'Stratophi', 'Pelaphi', 'Sunmola', 'Phantahawk', 'Memilifyy', 'Plantadiomicrisa', 'Terrahephas', 'Parvualias', + 'Rancicoon', 'Meditoid', 'Yukinooh', 'Misausmia', 'Pavronin', 'Kraklone', 'Crustair', 'Yulisse', 'Totodem', 'Persebloom', 'Persebloom-Frost', 'Hawkmorph', + 'Gallurise', 'Hensomnia', 'Protectonic', 'Crowbotic', 'Sponjourner', 'Emajanaja', 'Zenphin', 'Technophin', 'Beavair', 'Gyozumo', 'Gyozumo-Summer', + 'Onlaxy', 'Infinistar', 'Guareye', 'Curuprowl', 'Fertiri', 'Ruinne', 'Tantton', 'Crimsoil', 'Stakstok', 'Lychy', 'Onigashiba', 'Lunsura', 'Galactagon', + 'Axolacred', 'Dimetrogem', 'Anhaflara', 'Stormanos', 'Alchemeel', 'Alchemeel-Offense', 'Rasteal', 'Nailberg', 'Hoolican', 'Anchorage', 'Nosferanguis', + 'Pontiac', 'Sclam', 'Cicaguren', /*'Bozunami', 'Cryptice',*/ 'Mekangiras', 'Mononokero', 'Surfright', 'Potsworth', 'Cloudim', 'Salamoon', 'Salamoon-Allegro', + 'Gokaeru', 'Himekuji', 'Guroteserp', 'Galaxea', 'Galaxea-Complete', 'Pegathemum', 'Pegathemum-Complete', 'Cyrome-Book', 'Cyrome-Scribe', 'Cyrome-Author', + 'Darkira', 'Darkira-Ancient', 'Lakera', 'Lakera-Ancient', 'Mew 3.0', 'Solamateru', 'Jirachi-Extreme', + 'Blood Vial', 'Calming Salt', 'Cursed Orb', 'Emblematic Scarf', 'Enigmatic Shield', 'Fell Scythe', 'Gospel Notes', 'Life Gem', 'Maid Dress', 'Metalmorph', + 'Pokemon Standard', 'Power Stone', 'Seasons Gem', 'Tricky Hourglass', 'Platinum Orb', 'Iridescent Orb', 'Frosted Seed', + ], + onModifySpeciesPriority: 2, + onModifySpecies(species, target, source, effect) { + if (!target) return; // Chat command + if (effect && ['imposter', 'transform'].includes(effect.id)) return; + if (species.id !== 'extremeribbit') return; + const types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.moves.get(move.id).type))]; + return {...species, types: types}; + }, + onSwitchIn(pokemon) { + if (pokemon.species.id === 'extremeribbit') return; + this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]'); }, }, { - name: "[Gen 9] Ironmons", - desc: ["Ironmons: A OU based Pet Mod that aims to create new Paradox forms for existing Pokemon, both past and future.", - ], - threads: [ - `• Ironmons on Smogon Forums` - ], - mod: 'ironmons', - ruleset: ['Standard'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass'], - }, - { - name: "[Gen 9] Little Colosseum LC", - desc: ["Little Colosseum: A Gen 9 Little Cup Pet Mod that aims to buff weaker LC Pokemon and nerf LC Ubers to create a more diverse metagame."], + name: "[Gen 8] Fusion Evolution UU", + mod: "gen8feuu", + desc: [ + `Fusion Evolution Under Used: A micrometa Pet Mod aiming to create more-balanced-than-usual "Pokemon Fusions" with unique abilities.` + ], threads: [ - `• Little Colosseum on Smogon Forums`, + `• Fusion Evolution Under Used on Smogon Forums`, + `• Spreadsheet`, ], - mod: 'littlecolosseum', - teambuilderFormat: "LC", - ruleset: ['Little Cup', 'Standard', 'Data Mod'], + ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], banlist: [ - 'Aipom', 'Basculin-White-Striped', 'Diglett-Base', 'Dunsparce', 'Duraludon', 'Girafarig', 'Gligar', - 'Meditite', 'Misdreavus', 'Murkrow', 'Porygon', 'Qwilfish-Hisui', 'Rufflet', 'Scraggy', 'Sneasel', 'Sneasel-Hisui', - 'Snivy', 'Stantler', 'Vulpix', 'Vulpix-Alola', 'Yanma', 'Moody', 'Baton Pass', 'Sticky Web', 'Heat Rock', - ], - }, - { - name: "[Gen 9] Masquerade", - desc: 'Masquerade: A micrometa where every Pokemon has at least one Ogerpon-like Mask form that can Terastalize to change its ability.', - threads: [ - `• Masquerade on Smogon Forums`, + 'All Pokemon', 'Red Orb', 'Baton Pass', 'Ninjacross + Heracronite', 'Kokovoir + Gardevoirite', 'Salamencite', 'Charizardite Y', 'Blue Orb', 'Wishirupti + Cameruptite', 'Mawilite', 'Gastrocham + Medichamite', 'Manectite', 'Herasir + Heracronite', 'Herasir + Pinsirite', 'Light Ball', 'Gengarite', 'Sablemime + Sablenite', + ], + unbanlist: [ + 'Volquag', 'Toxalure', 'Kingtsar', 'Tanette', 'Slowton', + 'Flaant', 'Umbat', 'Chomplim', 'Chomplim-Mega', 'Xotalion', 'Miemie', 'Dusking', 'Jelliswine', + 'Pigapult', 'Lycanserker-Dusk', 'Tapu Lop', 'Tapu Lop-Mega', 'Dragontler', 'Eternabat', + 'Grimmlurk', 'Manicuno-Galar', 'Yacian-Crowned', 'Cryogolem', 'Stoudrago', + 'Grousle', 'Dongoro', 'Slurpum', + 'Corveot', 'Corveot-Mega', 'Igglyzenta-Crowned', 'Arctres-Galar', 'Garborude', 'Noicity', 'Ferros', + 'Landmaldo-Therian', 'Tentoxys-Defense', 'Strikados-Galar', 'Hooporant', + 'Brontun', 'Mesflame', 'Thornbro-Galar', 'Glidol', 'Pincurchitar', 'Pincurchitar-Mega', 'Snortine', 'Flygalge', + 'Absable', 'Absable-Mega-X', 'Absable-Mega-Y', 'Scolisharp', 'Ninjacross', 'Gossephalon', 'Dracodoom', + 'Dracodoom-Mega', 'Toucosta', 'Weezlord-Galar', 'Sableior', 'Sableior-Mega', 'Sableior-Meteor', 'Sableior-Meteor-Mega', + 'Eeluk', 'Maroligatr-Alola', 'Frozerade', + 'Hattaka', 'Glasnow', 'Glasnow-Mega', 'Kokovoir', 'Kyottler', 'Clawliwrath', + 'Meloslash', 'Meloslash-Melee', 'Tornachamp', 'Cofazor', 'Cofazor-Mega', 'Talonsyl', 'Heatki', + 'Sirsola', 'Noze-Dawn-Wings', 'Noze-Ultra', 'Bruxray', 'Kingdeedee', 'Tapu Koma', 'Hawlazzle', + 'Whimsilotic', 'Vullacham', 'Vullacham-Mega', 'Dracolix', 'Dracolix-Mega', 'Serpanadel', 'Accelest', 'Buzzeggutor-Alola', + 'Roaramp', 'Roaramp-Mega', 'Glakiss', 'Glakiss-Mega', 'Leafdon', + 'Crustboar', 'Paracoal', 'Arctovic', 'Altarizard', 'Altarizard-Mega-X', 'Altarizard-Mega', 'Sandamar-Alola', + 'Jirachonator', 'Dredvul', 'Druddifini', 'Swannamence', 'Tyranette-Eternal', + 'Lurodactyl', 'Lurodactyl-Mega', 'Ninelands-Alola', 'Aurorona', 'Monferpa-Unbound', 'Gigacrab', 'Rosenaught', 'Keclyrex-Shadow', + 'Regibee', 'Regibee-Mega', 'Sigileye', 'Darmearna', 'Mr. Ace', 'Deciduskorch', 'Hypnakart', 'Zerclef', + 'Exeggutor-Prime', 'Porygrigus', 'Golisotops', + 'Avarupt', 'Avarupt-Mega', 'Goatitar', 'Goatitar-Mega', 'Fraxshadow', 'Pherogonga', 'Crawmise', 'Wishirupti', + + 'Torranadus-Therian', 'Togetops', 'Toxicargo', 'Claylamar', 'Vishitomb', 'Swampflora', 'Swampflora-Mega', 'Swalurchin', 'Serpeblim', + 'Azekrow', 'Trapeino', 'Goodevoir', 'Goodevoir-Mega', 'Duramaw', 'Rhybite', 'Oricolyph-Sensu', + 'Grapplor', 'Masquerajah', 'Litleesect', 'Bearyx', 'Fetchey', 'Audiyem', 'Audiyem-Mega', + 'Eelektoad', 'Dialgast', 'Galsola', 'Galsola-Mega', 'Genebro-Galar', 'Hatterune', + 'Deodon-Attack', 'Sharpiskorch', "Sharpiskorch-Mega", "Gourninja", "Cleracross", "Cleracross-Mega", "Aromarel", "Lycansian", + 'Landowak-Alola', 'Emolggron', 'Emolggron-Mega', 'Metagon', 'Hoopagigas-Unbound', 'Nashifu', 'Cramotricity', 'Raibat', 'Darmanitan-Prime', + 'Zarapex', 'Pingar', 'Pingar-Mega', 'Kommo-tot', 'Rotokyu', 'Krookogatr', 'Venuroar', 'Venuroar-Mega', 'Klefilego', 'Rhychomp-Mega', 'Rhychomp', + 'Mr. Basc', 'Gastrocham', 'Manditop', 'Mienpa', 'Vikadrill', + 'Venoqueen', 'Arcalie', 'Yangarde', + 'Xurkirat', 'Golneton', 'Alakannon', 'Alakannon-Mega', 'Kingfezant', 'Googersby', + 'Dhelarina', 'Flychu-Alola', 'Haxel', 'Frossharp', 'Tyrantricity-Low-Key', + 'Champlume', 'Pyraskewda', 'Rotofable', 'Harisect', 'Tapu Pilo', 'Appletom-Wash', 'Phancrozma-Dawn-Wings', 'Phancrozma-Ultra', + 'Toxislash-Alola', 'Tentaterra', 'Minimie', 'Tsarant', 'Golevish-Alola', + 'Manecpig', 'Herasir', 'Magmovire', 'Giga Fini', + 'Impert-Female', 'Impert-Female-Mega', 'Koalicuno-Galar', 'Weezking-Galar', 'Ferrocario', 'Ferrocario-Mega', 'Mukremie', 'Acceldrill', + + 'Silvino-Bug', 'Silvino-Dark', 'Silvino-Dragon', 'Silvino-Electric', 'Silvino-Fairy', 'Silvino-Fighting', + 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Ghost', 'Silvino-Grass', 'Silvino-Ground', 'Silvino-Ice', + 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino-Steel', 'Silvino-Water', 'Silvino', + + /*'Silvino-Bug-Mega', 'Silvino-Dark-Mega', 'Silvino-Dragon-Mega', + 'Silvino-Electric-Mega', 'Silvino-Fairy-Mega', 'Silvino-Fighting-Mega', + 'Silvino-Fire-Mega', 'Silvino-Flying-Mega', 'Silvino-Ghost-Mega', + 'Silvino-Grass-Mega', 'Silvino-Ground-Mega', 'Silvino-Ice-Mega', + 'Silvino-Poison-Mega', 'Silvino-Psychic-Mega', 'Silvino-Rock-Mega', + 'Silvino-Steel-Mega', 'Silvino-Water-Mega',*/ 'Silvino-Mega', + + 'Litleesect-Douse', 'Litleesect-Shock', 'Litleesect-Burn', 'Litleesect-Chill', + 'Genebro-Galar-Douse', 'Genebro-Galar-Shock', 'Genebro-Galar-Burn', 'Genebro-Galar-Chill', + + + 'Appledam', 'Regidurr', 'Duskoma', 'Fraxblade', 'Igglycian-Crowned', + 'Eiscudile', 'Carcannon', 'Lapfisk', 'Whisdur', 'Emposerker', 'Salasian-Alola', 'Salasian-Alola-Mega', + "Pelilicky", "Zaponaw-Galar", "Yandos", "Mudscash", "Woopquaza-Mega", "Woopquaza", "Qwilsimian", "Buzzvine", "Solabat", + "Jellopod", "Jellopod-F", "Espetops", "Regigoss", "Nihitrio", + "Ferropion", "Scytic", "Dragancie", "Dragancie-Mega", "Yanturne", "Emberajah", + "Tornett-Alola", "Togelot", "Aegix", "Dugflame", "Mr. Gar", "Spewtwo", "Spewtwo-Mega-X", "Spewtwo-Mega-Y", + "Krowtom", "Sablemime", "Lycaking-Dusk", + "Victreegeist-Small", "Dragerigus", "Drudlinks", "Oricroak", "Deciduvolt", + + 'Corveotto', 'Torraaffy', 'Rosadin', 'Mr. Boot-Galar', 'Palpitrik', 'Pikabat', 'Krokocroco', 'Ivycat', 'Tranquorino', 'Kadabeak', 'Vibrachu', 'Chokloom', 'Magmabuzz', 'Mr. Haunt-Galar', "Dartbug", + 'Mariwick', 'Krabsweet', 'Slowmite', 'Eebat', 'Gibloon', 'Mieyu', 'Duspoke', 'Frillnub', 'Dreepig', 'Meowruff-Galar', 'Golidimp', 'Panchanpy', 'Shroolix', 'Noixel', 'Pidgeidee', 'Bronlin', 'Seedpoke-Galar', 'Glitoy', 'Munchyke', 'Venipawn', 'Krelpinch', 'Tirtipek', 'Grinamo', 'Cubodile', 'Snodew', 'Claunchiwag', 'Scymask', 'Fletchee', 'Farsola-Galar', 'Cottonas', 'Snipole', 'Maritten', 'Snogepi', 'Hippee', 'Dwepig', 'Parycoly', 'Charblu', 'Inkshrew-Alola', 'Chewkit', 'Duckgon', 'Larvaura', 'Crabrola', 'Chespew', 'Rowlipede', 'Scor Jr.', 'Porymask', 'Wimbuto', 'Larkiddo', 'Bergmel', + 'Croagma', 'Inktoy', 'Sunkip', 'Sniloon', 'Rhyble', 'Goolts', 'Clobbgar', 'Sursfant', 'Hatamask-Galar', 'Tynapole', "Meowruff", "Carvipede", "Froakaboo", "Spritdoof", "Beldino", "Pibat", "Darumaka-Prime", "Totosand", "Bulbalit", 'Vullarogue', 'Grubbur', 'Purrlithe', 'Venoran-F', 'Zubnemite', 'Abripek', 'Nidove-M', 'Gooby', 'Pinchu', 'Buixew', 'Pawnrunt', 'Tyrunxel', 'Shellitite', 'Oddchop', 'Makuras', 'Litlokuda', 'Croagshrew-Alola', 'Tentatwig', 'Magkid', 'Elecoink', 'Ferrolu', 'Koffipoke-Galar', 'Shelbur', 'Grimcery', + 'Burmlin', 'Axedge', 'Rolypek', 'Piplouth-Galar', 'Bagouth-Alola', "Mudboach", "Lickigull", "Frillopod", "Frillopod-F", "Eevuto", "Yannea", "Cupig", "Digling", "Gas Jr.", "Rockoran-M", "Rowbbin", "Maskrelp", "Bellaboo-Small", + 'Exeggcute', ], - mod: 'masquerade', - ruleset: ['Standard', 'Data Mod', 'Terastal Clause'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', - 'Baton Pass', 'Last Respects', 'Shed Tail', 'Cornerstone Mask'], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['MSQ']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'MSQ') { - return [set.species + ' is not legal in [Gen 9] Masquerade.']; - } - } - }, }, { - name: "[Gen 9] Megas for All: Paldea", - desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Current season is focused on the Paldea dex, pre DLC!", - ], + name: "[Gen 8] Fusion Evolution RU", + mod: "gen8feuu", + desc: [ + `Fusion Evolution Rarely Used: A micrometa Pet Mod aiming to create even-more-balanced-than-usual "Pokemon Fusions" with unique abilities.` + ], threads: [ - `• Megas for All v7 on Smogon Forums`, - `• Spreadsheet`, - `• Wiki` - ], - ruleset: ['Standard', 'Z-Move Clause', 'Terastal Clause', 'Mega Data Mod'], + `• Fusion Evolution Rarely Used on Smogon Forums`, + `• Spreadsheet`, + ], + ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], banlist: [ - 'AG', 'Uber', - 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', - 'Baton Pass', 'Last Respects', 'Shed Tail', - 'King\'s Rock', 'Razor Fang', 'Quick Claw', + 'All Pokemon', 'Baton Pass', 'Gardevoirite', 'Mawilite', 'Cameruptite', 'Scizorite', 'Glalitite', 'Sablenite', 'Lopunnite', 'Garchompite', 'Venusaurite', 'Pinsirite', 'Medichamite', 'Alakazite', 'Beedrillite', 'Manectite', 'Herasir + Heracronite', 'Charizardite Y', 'Charizardite X', 'Lucarionite', 'Swannamence + Salamencite', 'Diancite', 'Gengarite', 'Sablemime + Sablenite', ], - onValidateSet(set) { - const problems: string[] = []; - const setHas: {[k: string]: true} = {}; - let species = this.dex.species.get(set.species); - let item = this.dex.items.get(set.item); - let tierSpecies = species; + unbanlist: [ + 'Torranadus-Therian', 'Togetops', 'Toxicargo', 'Claylamar', 'Vishitomb', 'Swampflora', 'Swampflora-Mega', 'Swalurchin', 'Serpeblim', + 'Azekrow', 'Trapeino', 'Goodevoir', 'Duramaw', 'Rhybite', 'Oricolyph-Sensu', + 'Grapplor', 'Masquerajah', 'Litleesect', 'Bearyx', 'Fetchey', 'Audiyem', 'Audiyem-Mega', + 'Eelektoad', 'Dialgast', 'Galsola', 'Galsola-Mega', 'Hatterune', + 'Deodon-Attack', 'Sharpiskorch', "Sharpiskorch-Mega", "Gourninja", "Cleracross", "Cleracross-Mega", "Aromarel", "Lycansian", + 'Landowak-Alola', 'Emolggron', 'Emolggron-Mega', 'Metagon', 'Hoopagigas-Unbound', 'Nashifu', 'Cramotricity', 'Raibat', 'Darmanitan-Prime', + 'Zarapex', 'Pingar', 'Kommo-tot', 'Rotokyu', 'Krookogatr', 'Venuroar', 'Klefilego', 'Rhychomp', + 'Mr. Basc', 'Gastrocham', 'Manditop', 'Mienpa', 'Vikadrill', + 'Venoqueen', 'Arcalie', 'Yangarde', + 'Xurkirat', 'Golneton', 'Alakannon', 'Kingfezant', 'Googersby', + 'Dhelarina', 'Flychu-Alola', 'Haxel', 'Frossharp', 'Tyrantricity-Low-Key', + 'Champlume', 'Pyraskewda', 'Rotofable', 'Harisect', 'Tapu Pilo', 'Appletom-Wash', 'Phancrozma-Dawn-Wings', 'Phancrozma-Ultra', + 'Toxislash-Alola', 'Tentaterra', 'Minimie', 'Tsarant', 'Golevish-Alola', + 'Manecpig', 'Herasir', 'Magmovire', 'Giga Fini', + 'Impert-Female', 'Impert-Female-Mega', 'Koalicuno-Galar', 'Weezking-Galar', 'Ferrocario', 'Mukremie', 'Acceldrill', - if (item.megaEvolves === species.name) { - if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; - } - }, - onHitPriority: 1, - onHit(target, source, move) { - const forte = source.m.forte; - if (move?.category !== 'Status' && forte) { - this.singleEvent('Hit', forte, {}, target, source, move); - if (forte.self) this.singleEvent('Hit', forte.self, {}, source, source, move); - this.singleEvent('AfterHit', forte, {}, target, source, move); - } - }, - onAfterSubDamage(damage, target, source, move) { - const forte = source.m.forte; - if (move?.category !== 'Status' && forte) { - this.singleEvent('AfterSubDamage', forte, null, target, source, move, damage); - } - }, - onModifySecondaries(secondaries, target, source, move) { - if (secondaries.some(s => !!s.self)) move.selfDropped = false; - }, - onAfterMoveSecondaryPriority: 1, - onAfterMoveSecondarySelf(source, target, move) { - const forte = source.m.forte; - if (move?.category !== 'Status' && forte) { - this.singleEvent('AfterMoveSecondarySelf', forte, null, source, target, move); - } - }, - onBasePowerPriority: 1, - onBasePower(basePower, source, target, move) { - const forte = source.m.forte; - if (move.category !== 'Status' && forte?.onBasePower) { - forte.onBasePower.call(this, basePower, source, target, move); - } - }, - pokemon: { - getItem() { - const move = this.battle.dex.moves.get(this.m.forte); - if (!move.exists) return Object.getPrototypeOf(this).getItem.call(this); - return { - ...this.battle.dex.items.get('mail'), - name: move.name, id: move.id, ignoreKlutz: true, onTakeItem: false, - }; - }, - }, - mod: 'm4apaldea', + 'Tapu Lop', 'Absable', 'Absable-Mega-X', 'Cofazor', 'Lurodactyl', 'Lurodactyl-Mega', 'Wishirupti', 'Hypnakart', 'Talonsyl', 'Paracoal', 'Avarupt', 'Pherogonga', + 'Hawlazzle', 'Glakiss', 'Glasnow', 'Glasnow-Mega', 'Dusking', 'Strikados-Galar', 'Regibee', + 'Toxalure', 'Pigapult', 'Eternabat', 'Goatitar', 'Goatitar-Mega', 'Altarizard', 'Serpanadel', 'Crustboar', 'Flaant', 'Keclyrex-Shadow', 'Frozerade', 'Sirsola', 'Snortine', + 'Swannamence', 'Vullacham', + + 'Silvino-Bug', 'Silvino-Dark', 'Silvino-Dragon', 'Silvino-Electric', 'Silvino-Fairy', 'Silvino-Fighting', + 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Ghost', 'Silvino-Grass', 'Silvino-Ground', 'Silvino-Ice', + 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino-Steel', 'Silvino-Water', 'Silvino', 'Silvino-Mega', + 'Litleesect-Douse', 'Litleesect-Shock', 'Litleesect-Burn', 'Litleesect-Chill', + + 'Appledam', 'Regidurr', 'Duskoma', 'Fraxblade', 'Igglycian-Crowned', + 'Eiscudile', 'Carcannon', 'Lapfisk', 'Whisdur', 'Emposerker', 'Salasian-Alola', 'Salasian-Alola-Mega', + "Pelilicky", "Zaponaw-Galar", "Yandos", "Mudscash", "Woopquaza-Mega", "Woopquaza", "Qwilsimian", "Buzzvine", "Solabat", + "Jellopod", "Jellopod-F", "Espetops", "Regigoss", "Nihitrio", + "Ferropion", "Scytic", "Dragancie", "Yanturne", "Emberajah", + "Tornett-Alola", "Togelot", "Aegix", "Dugflame", "Mr. Gar", "Spewtwo", "Spewtwo-Mega-X", "Spewtwo-Mega-Y", + "Krowtom", "Sablemime", "Lycaking-Dusk", + "Victreegeist-Small", "Dragerigus", "Drudlinks", "Oricroak", "Deciduvolt", + + 'Corveotto', 'Torraaffy', 'Rosadin', 'Mr. Boot-Galar', 'Palpitrik', 'Pikabat', 'Krokocroco', 'Ivycat', 'Tranquorino', 'Kadabeak', 'Vibrachu', 'Chokloom', 'Magmabuzz', 'Mr. Haunt-Galar', "Dartbug", + 'Mariwick', 'Krabsweet', 'Slowmite', 'Eebat', 'Gibloon', 'Mieyu', 'Duspoke', 'Frillnub', 'Dreepig', 'Meowruff-Galar', 'Golidimp', 'Panchanpy', 'Shroolix', 'Noixel', 'Pidgeidee', 'Bronlin', 'Seedpoke-Galar', 'Glitoy', 'Munchyke', 'Venipawn', 'Krelpinch', 'Tirtipek', 'Grinamo', 'Cubodile', 'Snodew', 'Claunchiwag', 'Scymask', 'Fletchee', 'Farsola-Galar', 'Cottonas', 'Snipole', 'Maritten', 'Snogepi', 'Hippee', 'Dwepig', 'Parycoly', 'Charblu', 'Inkshrew-Alola', 'Chewkit', 'Duckgon', 'Larvaura', 'Crabrola', 'Chespew', 'Rowlipede', 'Scor Jr.', 'Porymask', 'Wimbuto', 'Larkiddo', 'Bergmel', + 'Croagma', 'Inktoy', 'Sunkip', 'Sniloon', 'Rhyble', 'Goolts', 'Clobbgar', 'Sursfant', 'Hatamask-Galar', 'Tynapole', "Meowruff", "Carvipede", "Froakaboo", "Spritdoof", "Beldino", "Pibat", "Darumaka-Prime", "Totosand", "Bulbalit", 'Vullarogue', 'Grubbur', 'Purrlithe', 'Venoran-F', 'Zubnemite', 'Abripek', 'Nidove-M', 'Gooby', 'Pinchu', 'Buixew', 'Pawnrunt', 'Tyrunxel', 'Shellitite', 'Oddchop', 'Makuras', 'Litlokuda', 'Croagshrew-Alola', 'Tentatwig', 'Magkid', 'Elecoink', 'Ferrolu', 'Koffipoke-Galar', 'Shelbur', 'Grimcery', + 'Burmlin', 'Axedge', 'Rolypek', 'Piplouth-Galar', 'Bagouth-Alola', "Mudboach", "Lickigull", "Frillopod", "Frillopod-F", "Eevuto", "Yannea", "Cupig", "Digling", "Gas Jr.", "Rockoran-M", "Rowbbin", "Maskrelp", "Bellaboo-Small", + 'Exeggcute', + ], }, { - name: "[Gen 9] M4A Paldea VGC", - desc: ["Megas for All v7 but it's a VGC format", - ], + name: "[Gen 8] Fusion Evolution NU", + mod: "gen8feuu", + desc: [ + `Fusion Evolution Never Used: A micrometa Pet Mod aiming to create excessively-more-balanced-than-usual "Pokemon Fusions" with unique abilities.` + ], threads: [ - `• Megas for All v7 on Smogon Forums`, - `• Spreadsheet`, - `• Wiki` - ], - gameType: 'doubles', - ruleset: ['Team Preview', 'Species Clause', 'Nickname Clause', 'Item Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Mega Data Mod', 'Terastal Clause'], + `• Fusion Evolution Never Used on Smogon Forums`, + `• Spreadsheet`, + ], + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], banlist: [ - 'Mewtwo', 'Mew', - 'Lugia', 'Ho-Oh', 'Celebi', - 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', - 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', - 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', - 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', - 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', - 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', - 'Koraidon', 'Miraidon', 'Pecharunt', - ], - mod: 'm4apaldea', - onValidateSet(set) { - const problems: string[] = []; - const setHas: {[k: string]: true} = {}; - let species = this.dex.species.get(set.species); - let item = this.dex.items.get(set.item); - let tierSpecies = species; + 'All Pokemon', 'Baton Pass', 'Salamencite', 'Abomasite', 'Absolite', 'Medichamite', 'Lopunnite', 'Diancite', 'Gengarite', 'Sablemime + Sablenite', + ], + unbanlist: [ + 'Rhybite', + 'Appledam', 'Regidurr', 'Duskoma', 'Fraxblade', 'Igglycian-Crowned', + 'Eiscudile', 'Carcannon', 'Lapfisk', 'Whisdur', 'Emposerker', 'Salasian-Alola', + "Pelilicky", "Zaponaw-Galar", "Yandos", "Mudscash", "Woopquaza-Mega", "Woopquaza", "Qwilsimian", "Buzzvine", "Solabat", + "Jellopod", "Jellopod-F", "Espetops", "Regigoss", "Nihitrio", + "Ferropion", "Scytic", "Dragancie", "Yanturne", "Emberajah", + "Tornett-Alola", "Togelot", "Aegix", "Dugflame", "Mr. Gar", "Spewtwo", "Spewtwo-Mega-X", "Spewtwo-Mega-Y", + "Victreegeist-Small", "Dragerigus", "Drudlinks", "Oricroak", "Deciduvolt", - if (item.megaEvolves === species.name) { - if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; - } - }, + 'Claylamar', 'Vishitomb', 'Swampflora', 'Swampflora-Mega', 'Azekrow', 'Trapeino', 'Bearyx', 'Fetchey', "Aromarel", 'Googersby', 'Harisect', + 'Absable', 'Tapu Lop', 'Hypnakart', 'Hawlazzle', 'Glasnow', 'Paracoal', + 'Swannamence', 'Vullacham', + "Krowtom", "Sablemime", "Lycaking-Dusk", + + 'Silvino-Bug', 'Silvino-Electric', 'Silvino-Fighting', + 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Grass', 'Silvino-Ice', + 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino', 'Silvino-Mega', + + 'Corveotto', 'Torraaffy', 'Rosadin', 'Mr. Boot-Galar', 'Palpitrik', 'Pikabat', 'Krokocroco', 'Ivycat', 'Tranquorino', 'Kadabeak', 'Vibrachu', 'Chokloom', 'Magmabuzz', 'Mr. Haunt-Galar', "Dartbug", + 'Mariwick', 'Krabsweet', 'Slowmite', 'Eebat', 'Gibloon', 'Mieyu', 'Duspoke', 'Frillnub', 'Dreepig', 'Meowruff-Galar', 'Golidimp', 'Panchanpy', 'Shroolix', 'Noixel', 'Pidgeidee', 'Bronlin', 'Seedpoke-Galar', 'Glitoy', 'Munchyke', 'Venipawn', 'Krelpinch', 'Tirtipek', 'Grinamo', 'Cubodile', 'Snodew', 'Claunchiwag', 'Scymask', 'Fletchee', 'Farsola-Galar', 'Cottonas', 'Snipole', 'Maritten', 'Snogepi', 'Hippee', 'Dwepig', 'Parycoly', 'Charblu', 'Inkshrew-Alola', 'Chewkit', 'Duckgon', 'Larvaura', 'Crabrola', 'Chespew', 'Rowlipede', 'Scor Jr.', 'Porymask', 'Wimbuto', 'Larkiddo', 'Bergmel', + 'Croagma', 'Inktoy', 'Sunkip', 'Sniloon', 'Rhyble', 'Goolts', 'Clobbgar', 'Sursfant', 'Hatamask-Galar', 'Tynapole', "Meowruff", "Carvipede", "Froakaboo", "Spritdoof", "Beldino", "Pibat", "Darumaka-Prime", "Totosand", "Bulbalit", 'Vullarogue', 'Grubbur', 'Purrlithe', 'Venoran-F', 'Zubnemite', 'Abripek', 'Nidove-M', 'Gooby', 'Pinchu', 'Buixew', 'Pawnrunt', 'Tyrunxel', 'Shellitite', 'Oddchop', 'Makuras', 'Litlokuda', 'Croagshrew-Alola', 'Tentatwig', 'Magkid', 'Elecoink', 'Ferrolu', 'Koffipoke-Galar', 'Shelbur', 'Grimcery', + 'Burmlin', 'Axedge', 'Rolypek', 'Piplouth-Galar', 'Bagouth-Alola', "Mudboach", "Lickigull", "Frillopod", "Frillopod-F", "Eevuto", "Yannea", "Cupig", "Digling", "Gas Jr.", "Rockoran-M", "Rowbbin", "Maskrelp", "Bellaboo-Small", + 'Exeggcute', + ], }, { - name: "[Gen 9] M4A OU NatDex", - desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Plays like National Dex, just with more Megas.", - ], + name: "[Gen 1] FutureProofing", + desc: `[Gen 1] FutureProofing: Adapting Dark, Steel, and Fairy-type moves and Pokemon to the Gen 1 OU metagame.`, + threads: [ + `• FutureProofing on Smogon Forums`, + ], + mod: 'gen1futureproofing', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber'], + unbanlist: ['Tyranitar', 'Gardevoir', 'Escavalier', 'Karrablast', 'Ralts', 'Kirlia', 'Pupitar', 'Larvitar', + 'Snarl', 'Steel Wing', 'Strange Steam', + 'Deino', 'Zweilous', 'Hydreigon', 'Scizor', 'Cottonee', 'Whimsicott', + 'Nature\'s Madness', 'Fake Tears', 'Gear Up', + 'Steelix', 'Spiritomb', 'Swablu', 'Altaria', + 'Fleur Cannon', 'Taunt', 'Heavy Slam', + 'Yveltal', 'Skarmory', 'Tapu Koko', + 'Lash Out', 'Crafty Shield', 'Sunsteel Strike', + 'Cacnea', 'Cacturne', 'Duraludon', 'Milcery', 'Alcremie', + 'Zigzagoon-Galar', 'Linoone-Galar', 'Obstagoon', 'Stunfisk-Galar', 'Mimikyu', 'Mimikyu-Busted', + 'Oshawott', 'Dewott', 'Samurott-Hisui', 'Riolu', 'Lucario', 'Popplio', 'Brionne', 'Primarina', + 'Grimmsnarl', 'Impidimp', 'Morgrem', 'Sylveon', 'Diglett-Alola', 'Dugtrio-Alola', + 'Magnezone', 'Houndour', 'Houndoom', 'Cutiefly', 'Ribombee', + 'Zarude', 'Zarude-Dada', 'Vulpix-Alola', 'Ninetales-Alola', 'Piplup', 'Prinplup', 'Empoleon', + ], + }, + { + name: "[Gen 8] JolteMons", + desc: [ + "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + ], threads: [ - `• Megas for All v7 on Smogon Forums`, - `• Spreadsheet`, - `• Wiki` - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], - mod: 'm4ag9', - banlist: ['Slowking-Galar-Mega', 'Slowking-Galar + Slowkinite', 'Uber', 'AG', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', - 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Snow Cloak', 'Sand Veil' + `• Thread on the Smogon Forums`, + `• Spreadsheet`, ], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['Mega of the Day!', 'Popular', 'Popular Megas', 'Other Megas', 'Heat!', 'NFE']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in M4A OU NatDex.']; - } - } - }, + mod: 'joltemons', + teambuilderFormat: 'OU', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], + unbanlist: ['Dragapult', 'Tornadus-Therian', 'Blaziken', 'Greninja-Ash', 'Moody', 'Shaymin-Sky', 'Kangaskhan-Mega', 'Darmanitan-Galar', 'Metagross-Mega'], + banlist: ['Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', + 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', + 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], }, { - name: "[Gen 8] M4A OU NatDex", - desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Plays like National Dex, just with more Megas.", + name: "[Gen 8] JolteMons UU", + desc: [ + "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + ], + threads: [ + `• Thread on the Smogon Forums`, + `• Spreadsheet`, + `• Banlist`, + ], + mod: 'joltemons', + teambuilderFormat: 'UU', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], + unbanlist: ['Moody', 'Kangaskhan-Mega', 'Darmanitan-Galar'], + banlist: ['OU', 'UUBL', 'Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lucarionite', 'Lugia', 'Lunala', 'Marshadow', 'Metagrossite', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', + 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', + 'Chill Pill G', 'Lopunnite', 'Scizorite', 'Gyaradosite', 'Charizardite Y', 'Charizardite X', 'Pinsirite', 'Heracronite', 'Aerodactylite', 'Alakazite', 'Galladite', 'Gardevoirite', 'Medichamite', 'Diancite', 'Mawilite', 'Beedrillite', 'Swampertite', 'Latiasite', 'Latiosite', 'Tyranitarite', 'Venusaurite', 'Graduation Scale', 'Sablenite', + 'Light Clay', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], + }, + { + name: "[Gen 8] JolteMons RU", + desc: [ + "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + ], + threads: [ + `• Thread on the Smogon Forums`, + `• Spreadsheet`, + `• Banlist`, + ], + mod: 'joltemons', + teambuilderFormat: 'RU', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], + unbanlist: ['Moody', 'Kangaskhan-Mega'], + banlist: ['OU', 'UUBL', 'RUBL', 'UU', 'Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lucarionite', 'Lugia', 'Lunala', 'Marshadow', 'Metagrossite', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', + 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', + 'Chill Pill G', 'Lopunnite', 'Scizorite', 'Gyaradosite', 'Charizardite Y', 'Charizardite X', 'Pinsirite', 'Heracronite', 'Aerodactylite', 'Alakazite', 'Galladite', 'Gardevoirite', 'Medichamite', 'Diancite', 'Mawilite', 'Beedrillite', 'Swampertite', 'Latiasite', 'Latiosite', 'Tyranitarite', 'Venusaurite', 'Graduation Scale', 'Sablenite', + 'Altarianite', 'Chill Pill', 'Relic Charm', 'Drizzle', 'Ampharosite', 'Manectite', 'Pidgeotite', 'Steelixite', 'Aggronite', 'Banettite', 'Sharpedonite', + 'Light Clay', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], + }, + { + name: "[Gen 8] JolteMons NU", + desc: [ + "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + ], + threads: [ + `• Thread on the Smogon Forums`, + `• Spreadsheet`, + `• Banlist`, + ], + mod: 'joltemons', + teambuilderFormat: 'NU', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], + unbanlist: ['Moody'], + banlist: ['OU', 'UUBL', 'RUBL', 'UU', 'Uber', 'RU', 'NUBL', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lucarionite', 'Lugia', 'Lunala', 'Marshadow', 'Metagrossite', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', + 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', + 'Chill Pill G', 'Lopunnite', 'Scizorite', 'Gyaradosite', 'Charizardite Y', 'Charizardite X', 'Pinsirite', 'Heracronite', 'Aerodactylite', 'Alakazite', 'Galladite', 'Gardevoirite', 'Medichamite', 'Diancite', 'Mawilite', 'Beedrillite', 'Swampertite', 'Latiasite', 'Latiosite', 'Tyranitarite', 'Venusaurite', 'Graduation Scale', 'Sablenite', + 'Altarianite', 'Chill Pill', 'Relic Charm', 'Drizzle', 'Ampharosite', 'Manectite', 'Pidgeotite', 'Steelixite', 'Aggronite', 'Banettite', 'Sharpedonite', + 'Absolite', 'Audinite', 'Kangaskhanite', 'Sceptilite', 'Cameruptite', 'Ghost Memory', + 'Light Clay', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], + }, + { + name: "[Gen 8] Megas for All: Kalos", + desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Current season is focused on the Kalos dex!", ], threads: [ - `• Megas for All v7 on Smogon Forums`, + `• Megas for All v7 on Smogon Forums`, `• Spreadsheet`, `• Wiki` ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], - mod: 'm4av6', - banlist: ['Slowking-Galar-Mega', 'Slowking-Galar + Slowkinite', 'Uber', 'AG', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', - 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Snow Cloak', 'Sand Veil' + ruleset: ['Standard NatDex', 'Z-Move Clause', 'Dynamax Clause', 'Mega Data Mod'], + banlist: [ + 'AG', 'Uber', + 'Aegislash', 'Hoopa-Unbound', 'Greninja', + 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', + 'Baton Pass', + 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Quick Claw', ], onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ let speciesTable = {}; - let allowedTiers = ['Mega of the Day!', 'Popular', 'Popular Megas', 'Other Megas', 'Heat!', 'NFE']; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in M4A OU NatDex.']; + if (template.tier !== 'Mega' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)') { + return [set.species + ' is not a part of the Kalos Pokédex.']; } } }, - }, - { - name: "[Gen 9] M4A VGC", - desc: ["Megas for All v7 but it's a VGC format", - ], - threads: [ - `• Megas for All v7 on Smogon Forums`, - `• Spreadsheet`, - `• Wiki` - ], - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Dynamax Clause', 'Mega Data Mod', 'Terastal Clause'], - banlist: [ - 'Mewtwo', 'Mew', - 'Lugia', 'Ho-Oh', 'Celebi', - 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', - 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', - 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', - 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', - 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', - 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', - 'Koraidon', 'Miraidon', 'Pecharunt', - ], - mod: 'm4ag9', onValidateSet(set) { - // These Pokemon are still unobtainable - const unobtainables = [ - 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', - 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', - ]; - const species = this.dex.species.get(set.species); - if (unobtainables.includes(species.name)) { - if (this.ruleTable.has(`+pokemon:${species.id}`)) return; - return [`${set.name || set.species} does not exist in the National Dex.`]; - } - if (species.tier === "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.`]; + const problems: string[] = []; + const setHas: {[k: string]: true} = {}; + let species = this.dex.species.get(set.species); + let item = this.dex.items.get(set.item); + let tierSpecies = species; + + if (item.megaEvolves === species.name) { + if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; } }, + mod: 'm4akalos', }, { - name: "[Gen 8] M4A VGC", - desc: ["Megas for All v7 but it's a VGC format", + name: "[Gen 8] M4A Kalos VGC", + desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Current season is focused on the Kalos dex!", ], threads: [ `• Megas for All v7 on Smogon Forums`, @@ -1331,4418 +1420,2410 @@ export const Formats: FormatList = [ `• Wiki` ], gameType: 'doubles', - ruleset: ['Standard NatDex', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Dynamax Clause', 'Mega Data Mod'], + ruleset: ['Standard NatDex', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod'], banlist: [ - 'Mewtwo', 'Mew', - 'Lugia', 'Ho-Oh', 'Celebi', - 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', - 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', - 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', - 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', - 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', - 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', - ], - mod: 'm4av6', - onValidateSet(set) { - // These Pokemon are still unobtainable - const unobtainables = [ - 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', - 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', - ]; - const species = this.dex.species.get(set.species); - if (unobtainables.includes(species.name)) { - if (this.ruleTable.has(`+pokemon:${species.id}`)) return; - return [`${set.name || set.species} does not exist in the National Dex.`]; - } - if (species.tier === "Unreleased") { - const basePokemon = this.toID(species.baseSpecies); - if (this.ruleTable.has(`+pokemon:${species.id}`) || this.ruleTable.has(`+basepokemon:${basePokemon}`)) { - return; + 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa-Unbound', 'Volcanion', + // legalizes Hoopa-Confined, and only Hoopa-Confined, because it has a Mega specific to this season! (confirmed by Blue) + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'Mega' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)') { + return [set.species + ' is not a part of the Kalos Pokédex.']; } - return [`${set.name || set.species} does not exist in the National Dex.`]; } }, + onValidateSet(set) { + const problems: string[] = []; + const setHas: {[k: string]: true} = {}; + let species = this.dex.species.get(set.species); + let item = this.dex.items.get(set.item); + let tierSpecies = species; + + if (item.megaEvolves === species.name) { + if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; + } + }, + mod: 'm4akalos', }, - // Added Bo3 Formats for both M4A VGC formats, but commented them out for now in case M4A's leaders decide that they don't want them - /* - { - name: "[Gen 8] M4A VGC (Bo3)", - desc: ["Megas for All v7 but it's a VGC format", + /*{ + name: "[Gen 8] M4A Sandbox", + desc: ["Megas for All v7 but it's Custom Game. Add custom typings and stats via Sandbox Mod!", ], threads: [ - `• Megas for All v7 on Smogon Forums`, + `• Sandbox Mod Usage Guide`, + `• Megas for All v7 on Smogon Forums`, `• Spreadsheet`, `• Wiki` ], - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Dynamax Clause', 'Mega Data Mod', 'Best of = 3'], - banlist: [ - 'Mewtwo', 'Mew', - 'Lugia', 'Ho-Oh', 'Celebi', - 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', - 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', - 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', - 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', - 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', - 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', - ], - mod: 'm4av6', - onValidateSet(set) { - // These Pokemon are still unobtainable - const unobtainables = [ - 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', - 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', - ]; - const species = this.dex.species.get(set.species); - if (unobtainables.includes(species.name)) { - if (this.ruleTable.has(`+pokemon:${species.id}`)) return; - return [`${set.name || set.species} does not exist in the National Dex.`]; - } - if (species.tier === "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.`]; - } - }, + searchShow: false, + // now intended as a custom game-esque format with more freedom for testing + ruleset: ['Team Preview', 'Cancel Mod', 'HP Percentage Mod', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Data Mod', 'Mega Data Mod', 'Sandbox Mod', 'Overflow Stat Mod'], + mod: 'm4asandbox', + },*/ + // { + // name: "[Gen 8] OU Theorymon", + // desc: [ + // "OU Theorymon: A Sword and Shield OU metagame where low-ranked Pokemon are improved to become more viable.", + // ], + // threads: [ + // `• OU Theorymon on Smogon Forums`, + // ], + + // mod: 'outheorymons', + // ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], + // banlist: ['Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass'], + // }, + // { + // name: "[Gen 8] Paleomons", + // desc: [ + // "Paleomons: A Sword and Shield metagame that aims to create a micrometa full of ancient Pokemon." + // ], + // threads: [ + // `• Paleomons on Smogon Forums`, + // ], + + // mod: 'paleomons', + // ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], + // banlist: [ + // 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + // ], + // onValidateTeam(team, format) { + // /**@type {{[k: string]: true}} */ + // let speciesTable = {}; + // let allowedTiers = ['Paleomons', 'Paleomons NFE', 'Paleomons LC']; + // for (const set of team) { + // let template = this.dex.species.get(set.species); + // if (template.tier !== 'Paleomons' && template.tier !== 'Paleomons NFE' && template.tier !== 'Paleomons LC') { + // return [set.species + ' is not legal in the Paleomons format.']; + // } + // } + // }, + // }, + { + name: "[Gen 8] Restrictions", + desc: `Restrictions: A metagame made up of brand new Pokémon that are made according to various random and non-random restrictions.`, + threads: [ + `• Restrictions on Smogon Forums`, + `• Spreadsheet`, + ], + mod: 'restrictions', + ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], + banlist: ['uber', 'ou', 'uubl', 'uu', 'rubl', 'ru', 'nubl', 'nu', 'publ', 'pu', 'zu', 'nfe', /*'lcuber',*/ 'lc', 'cap', 'caplc', 'capnfe', 'ag','past', 'future', 'lgpe'], + teambuilderBans: ['unreleased'], }, - */ { - name: "[Gen 6] Megas Revisited", + name: "[Gen 8] Signature Restrictions", + desc: `Singature Restrictions: A metagame made up of brand new Pokémon that are made according to various restrictions provided by Pet Mod Users.`, threads: [ - `• Megas Revisited on Smogon Forums`, - `• Spreadsheet`, + `• Singature Restrictions on Smogon Forums`, + `• Spreadsheet`, ], - mod: 'gen6megasrevisited', - ruleset: ['Standard', 'Swagger Clause', 'Mega Data Mod'], - banlist: ['Uber', 'Arena Trap', 'Shadow Tag', 'Soul Dew', 'Baton Pass', 'Blaziken + Speed Boost'], + mod: 'signaturerestrictions', + ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], + banlist: ['uber', 'ou', 'uubl', 'uu', 'rubl', 'ru', 'nubl', 'nu', 'publ', 'pu', 'zu', 'nfe', 'lc', 'cap', 'caplc', 'capnfe', 'ag','past', 'future', 'lgpe'], + teambuilderBans: ['unreleased'], }, { - name: "[Gen 9] MetaMons", + name: "[Gen 8] Stereotypes", + mod: "stereotypes", desc: [ - "In this Pet Mod, we will aim to create a decently-sized micrometa that will expand in the unique niches of some Pokémon, giving them the spotlight after all the time they have been waiting.", + "Stereotypes: A project that aims to create a micrometa containing a unique new Pokemon for all 171 possible types, with the hope that each mon will use its typing and the options that typing affords well, while still being balanced and interesting.", ], threads: [ - '• MetaMons', - '• Spreadsheet', - ], - mod: 'metamons', - ruleset:['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Beedrillite' + `• Stereotypes on Smogon Forums`, + `• Spreadsheet`, ], - teambuilderFormat: "National Dex", + ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], + banlist: ['Conversion', 'Conversion2', 'Libero', 'Protean', 'Transistor', 'Dragon\'s Maw', 'Steelworker', 'Steely Spirit', 'Color Change', 'Arena Trap', 'Shadow Tag', 'Moody'], onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ let speciesTable = {}; + let allowedTiers = ['ST', 'ST NFE', 'ST LC']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'MetaMons') { - return [set.species + ' is not usable in MetaMons.']; + if ( !allowedTiers.includes(template.tier) ) { + return [set.species + ' is not useable in Stereotypes.']; } } }, }, + /////////////////////////////////////////////////////////////// + //////////////////////// Solomods ///////////////////////////// + /////////////////////////////////////////////////////////////// { - name: "[Gen 9] Micrometa Mafia 2", - desc: [ - "micrometa mafia 2", - ], - threads: [ - `• Micrometa Mafia 2 on Smogon Forums`, - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], - banlist: [], - teambuilderFormat: "National Dex", - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'MMM2') { - return [set.species + ' is not usable in Micrometa Mafia 2.']; - } - } - }, - mod: 'mmm2', - }, + section: "Solomods", + column: 2, + }, + gen5valuemons, { - name: "[Gen 9] Micrometa Mafia 3", - desc: [ - "micrometa mafia 3", - ], - threads: [ - `• Micrometa Mafia 3 on Smogon Forums`, - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], - banlist: ['Baton Pass', 'Assist', 'Last Respects', 'Shed Tail', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag'], - teambuilderFormat: "National Dex", - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'MMM3') { - return [set.species + ' is not usable in Micrometa Mafia 3.']; - } - } - }, - mod: 'mmm3', - }, + name: "[Gen 9] A Golden Experience", + desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'agoldenexperience', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], + banlist: [ + 'Uber', 'AG', 'Moody', 'Power Construct', 'King\'s Rock', + 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', + ], + unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], + teambuilderFormat: 'National Dex', + }, { - name: "[Gen 9] More Balanced Hackmons v4", - desc: `Balanced Hackmons with National Dex elements mixed in.`, + name: "[Gen 9] A Golden Experience UU", + desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, threads: [ - `• More Balanced Hackmons v4`, + `• Spreadsheet for the mod`, ], - mod: 'morebalancedhackmons', - // debug: true, - ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', 'Ability Clause = 2', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', 'Terastal Clause', '!Obtainable'], + mod: 'agoldenexperience', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], + banlist: [ + 'Uber', 'AG', 'OU', 'UUBL', 'Moody', 'Power Construct', 'King\'s Rock', + 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', + 'Drizzle', 'Drought', 'Light Clay', + ], + unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], + teambuilderFormat: 'National Dex UU', + }, + { + name: "[Gen 9] A Golden Experience RU", + desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'agoldenexperience', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], banlist: [ - 'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Arena Trap', - 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Magnet Pull', 'Moody', 'Parental Bond', - 'Stakeout', 'Wonder Guard', 'Gengarite', 'Belly Drum', 'Chatter', 'Double Iron Bash', 'Electrify', - 'Last Respects', 'Octolock', 'Revival Blessing', 'Shed Tail', 'Shell Smash', 'Comatose + Sleep Talk', 'Imprison + Transform', + 'Uber', 'AG', 'OU', 'UUBL', 'UU', 'RUBL', 'Moody', 'Power Construct', 'King\'s Rock', + 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', + 'Drizzle', 'Drought', 'Light Clay', ], - restricted: ['Arceus'], + unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], + teambuilderFormat: 'National Dex RU', + }, + { + name: "[Gen 9] A Golden Experience NU", + desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'agoldenexperience', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], + banlist: [ + 'Uber', 'AG', 'OU', 'UUBL', 'UU', 'RUBL', 'RU', 'NUBL', 'Moody', 'Power Construct', 'King\'s Rock', + 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', + 'Drizzle', 'Drought', 'Light Clay', + 'Dante\'s Inferno', 'Happy Dance', 'Sticky Web', + ], + unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], + teambuilderFormat: 'National Dex RU', + }, + { + name: "[Gen 9] A Golden Experience Doubles", + desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'agoldenexperience', + gameType: 'doubles', + teambuilderFormat: 'National Dex Doubles', + ruleset: ['Standard NatDex', 'Terastal Clause', 'Dynamax Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], + banlist: [ + 'DUber', 'Commander', 'Power Construct', 'Coaching', 'Dark Void', 'Swagger', + ], + unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], + }, + /* { + name: "[Gen 3] ADV+", + mod: 'gen3advplus', + ruleset: ['Standard', 'Baton Pass Mod', 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod'], + banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain', 'Drizzle', 'Drought', 'Starf Berry', 'Speed Boost + Blaziken'], + }, */ + { + name: "[Gen 3] ADV DX OU", + mod: 'gen3advdx', + ruleset: ['Standard', 'Freeze Clause Mod', 'Data Mod'], + banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain', 'Soul Dew', 'Sand Attack', 'Flash', 'Mud-Slap', 'Kinesis', 'Smokescreen'], + }, + { + name: "[Gen 3] ADV DX Doubles", + mod: 'gen3advdx', + gameType: 'doubles', + ruleset: ['Standard', 'Freeze Clause Mod', 'Data Mod', '!Switch Priority Clause Mod'], + banlist: ['Uber', 'Quick Claw', 'Soul Dew', 'Explosion', 'Self-Destruct', 'Swagger', 'Sand Attack', 'Flash', 'Mud-Slap', 'Kinesis', 'Smokescreen'], + unbanlist: ['Wobbuffet', 'Wynaut'], + }, + { + name: "[Gen 3] ADV Tradebacks", + mod: 'gen3tradebacks', + ruleset: ['Standard', /*'Baton Pass Mod',*/ 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod'], + banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'], + }, + { + name: "[Gen 3] ADV To The Past", + mod: 'gen3advttp', + ruleset: ['Standard', 'One Boost Passer Clause', 'Freeze Clause Mod'], + banlist: ['Uber', 'Smeargle + Ingrain', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Swagger', 'Metal Powder'], + desc: `ADV TTP is a rebalancing of ADV OU with Move buffs, Stat buffs, and different abilities. The aim of this metagame is to create an ADV OU metagame that is even more diverse and fun than it is already. It is limited to Pokemon found in Kanto-Hoenn. Moreover, all Gen 3 mechanics are unchanged.`, + }, + { + name: "[Gen 9] Animemons", + teambuilderFormat: 'National Dex', + desc: `A micrometa full of anime characters.`, + mod: 'animemons', + ruleset: ['Standard NatDex', 'Terastal Clause', 'Data Mod'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z'], onValidateTeam(team, format) { - // baseSpecies:count - const restrictedPokemonCount = new Map(); + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['AOU', 'AWIP']; for (const set of team) { - const species = this.dex.species.get(set.species); - if (!this.ruleTable.isRestrictedSpecies(species)) continue; - restrictedPokemonCount.set(species.baseSpecies, (restrictedPokemonCount.get(species.baseSpecies) || 0) + 1); - } - for (const [baseSpecies, count] of restrictedPokemonCount) { - if (count > 1) { - return [ - `You are limited to one ${baseSpecies} forme.`, - `(You have ${count} ${baseSpecies} forme${count === 1 ? '' : 's'}.)`, - ]; + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not in this format.']; } } }, }, { - name: "[Gen 9] Multiverse", - threads: [ - '• Multiverse', - '• Spreadsheet', - ], - mod: 'gen9multiverse', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod'], - banlist: ['Moody', 'Baton Pass'], + name: "[Gen 9] Balls", + mod: 'mixandmegaballs', + desc: `A hilarious metagame filled with nothing but balls.`, + ruleset: ['Standard', 'Data Mod'], onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['MV']; + let allowedTiers = ['Balls', 'Guns']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Multiverse.']; + return [set.species + ' doesnt exist.']; } } }, }, - { - name: "[Gen 9] Natural Selection", - desc: 'Natural Selection: A micrometa where Pokemon actively evolve, fill new niches, and go extinct based on usage stats.', - threads: [ - `• Natural Selection on Smogon Forums`, + /* { + name: "[Gen 9] Bare Bones", + desc: 'bare bones micrometa', + mod: 'barebones', + ruleset: [ + 'Team Preview', 'Nickname Clause', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'Terastal Clause', 'Data Mod', 'Camomons Mod', + ], + banlist: ['All Items', 'All Abilities'], + unbanlist: [ + 'Pinch Berry', 'Tsersi Berry', 'Leftovers', 'Silk Scarf', 'Charcoal', 'Mystic Water', 'Miracle Seed', 'Magnet', 'Never-Melt Ice', 'Black Belt', 'Poison Barb', + 'Soft Sand', 'Sharp Beak', 'Twisted Spoon', 'Silver Powder', 'Hard Stone', 'Spell Tag', 'Dragon Fang', 'Black Glasses', 'Metal Coat', 'Fairy Feather', 'Muscle Band', + 'Wise Glasses', 'Exchanger', 'Focus Sash', + + 'Desperation', 'Last Stand', 'Appraisal', 'Rejuvenate', 'Recycler', 'Somewhat Reckless', 'Tinted Tactics', 'Intimidate', 'Sceptic', ], - mod: 'naturalselection', - ruleset: ['Standard', 'Data Mod', 'Terastal Clause'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], onValidateTeam(team, format) { let speciesTable = {}; - let allowedTiers = ['NS']; + let allowedTiers = ['bbones']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'NS') { - return [set.species + ' is not legal in [Gen 9] Natural Selection.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not in Bare Bones.']; } } - }, - }, - { - name: "[Gen 6] NEXT OU", - mod: 'gennext', - searchShow: false, - challengeShow: false, - ruleset: ['Obtainable', 'Standard NEXT', 'Team Preview'], - banlist: ['Uber'], - }, - { - name: "[Gen 9] Not My Type", - desc: `Not My Type, a tier with user-submitted Fakemon only that's built around three of the eighteen types being removed. These three types are Electric, Ground, Rock.`, + } + }, */ + { + name: "[Gen 9] Beaftopia", + desc: `[Gen 9] Beaftopia: A meta where the only legal Pokemon are made by Beaf Cultist, the greatest Pet Modder.`, threads: [ - `Gen 9 Not My Type`, + `• Post in Solomods Megathread`, ], - mod: 'notmytype', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Moves Clause', 'Terastal Clause', 'Z-Move Clause'], - banlist: [], + mod: 'beaftopia', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod', 'Status Mod'], + banlist: ['King\'s Rock', 'Razor Fang'], + teambuilderFormat: 'National Dex', onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['NMT']; + let allowedTiers = ['OU']; for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Not My Type.']; + if (template.tier !== 'BT OU') { + return [set.species + ' is not legal in [Gen 9] Beaftopia.']; } } }, }, { - name: "[Gen 9] OU Theorymons", - desc: '[Gen 9] OU Theorymons: Fixing niche and unseen Pokemon in the SV OU Metagame with small buffs.', - threads: [ - `• OU Theorymon on Smogon Forums`, + name: "[Gen 5] Best Wishes from YB", + desc: [ + "Best Wishes from YB: A Gen 5 Solomod where are only Unovan Pokemon are allowed, with them getting many changes.", ], - mod: 'outheorymons', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 9] Paleomons", - desc: '[Gen 9] Paleomons: In this mod, we will be creating an SV OU-based micrometa of Pokémon based on real critters from the Paleozoic, Mesozoic, and Cenozoic eras.', threads: [ - '• Paleomons', - // '• Spreadsheet', + `• Post in Solomods Megathread`, ], - mod: 'paleomons', - teambuilderFormat: "National Dex", - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', '!! Min Source Gen = 8'], - banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'Paleomons') { - return [set.species + ' is not usable in Paleomons.']; + mod: 'gen5unovayb', + ruleset: ['Standard', 'Sleep Moves Clause', 'Swagger Clause', 'Data Mod'], + banlist: ['Uber', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist', 'Hidden Power', 'Baton Pass'], + }, + { + name: "[Gen 9] ChatBats", + desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`, + mod: 'chatbats', + team: 'random', + ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Cancel Mod'], + onSwitchIn(pokemon) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + }, + // Dachsbun causes Koraidon to generate on enemy team. Implemented here. + onBegin() { + this.add(`raw|
Need help with all of the new moves, abilities, and adjustments?
Then make sure to use the ChatBats thread or use /dt!
`); + this.add('-message', `Welcome to ChatBats!`); + this.add('-message', `ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`); + this.add('-message', `If you want to help create new sets, we will host events periodically in the Pet Mods room!`); + this.add('-message', `Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`); + this.add('-message', `yes working`); + for (const side of this.sides) { + for (const pokemon of side.pokemon) { + if (pokemon.species.id === 'dachsbun') { + // Get the opposing side + const foeSide = side.foe; + // Filter out Dachsbun from opponent's team + const foeTeamNoDog = foeSide.pokemon.filter(p => p.species.id !== 'dachsbun'); + // Pick a random foe + const randomFoe = this.sample(foeTeamNoDog); + const rawSpecies = this.dex.species.get('koraidon'); + randomFoe.setSpecies(rawSpecies, pokemon); + randomFoe.baseSpecies = rawSpecies; + randomFoe.details = randomFoe.getUpdatedDetails(); + randomFoe.setAbility('Orichalcum Pulse', null, true); + randomFoe.baseAbility = randomFoe.ability; + if (this.randomChance(1, 2)) { + const randomFoeItem = (this.randomChance(1, 2) ? 'choicescarf' : 'choiceband'); + randomFoe.item = randomFoeItem; + randomFoe.itemState = { id: randomFoeItem, target: randomFoe }; + // Define new moves + const newMoves = ['closecombat', 'flareblitz', 'outrage', 'uturn']; + + // Update move slots + randomFoe.moveSlots = newMoves.map(move => { + const moveData = this.dex.moves.get(move); + return { + move: moveData.name, + id: moveData.id, + pp: moveData.pp, + maxpp: moveData.pp, + target: moveData.target, + disabled: false, + used: false, + }; + }); + } + else { + const randomFoeItem = 'loadeddice'; + randomFoe.item = randomFoeItem; + randomFoe.itemState = { id: randomFoeItem, target: randomFoe }; + // Define new moves + const newMoves = ['collisioncourse', 'flareblitz', 'scaleshot', 'swordsdance']; + + // Update move slots + randomFoe.moveSlots = newMoves.map(move => { + const moveData = this.dex.moves.get(move); + return { + move: moveData.name, + id: moveData.id, + pp: moveData.pp, + maxpp: moveData.pp, + target: moveData.target, + disabled: false, + used: false, + }; + }); + } + // this forces the UI to update move slots visually + randomFoe.baseMoveSlots = randomFoe.moveSlots.slice(); + randomFoe.teraType = 'fire' + } } } - }, + } }, { - name: "[Gen 9] Poketypos", - desc: `[Gen 9] Poketypos: A NatDex metagame that alters the names of Pokemon and change said Pokemon to fit their new name.`, + name: "[Gen 9] Climate Change", + desc: [ + "weather war", + ], + threads: [ + `• Climate Change on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], + banlist: ['Sunny Day', 'Rain Dance', 'Sandstorm', 'Hail', 'Snowscape', 'Chilly Reception', 'Charizardite X'], + teambuilderFormat: "National Dex", + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'CC') { + return [set.species + ' is not usable in Climate Change.']; + } + } + }, + mod: 'weatherwar', + }, + { + name: "[Gen 9] Clubmons: Requiem", + mod: 'clubmonsrequiem', + desc: `A micrometagame focused on accessibility and teambuilder diversity.`, + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], threads: [ - `• Poketypos on Smogon Forums`, - ], - mod: 'poketypos', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Terastal Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + `• Clubmons on Smogon Forums`, ], + banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Baton Pass', 'Shed Tail', 'Last Respects', 'Hidden Power', 'Absolite', 'Sablenite'], + teambuilderFormat: 'National Dex', onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['Poketypos', 'Poketypos NFE', 'Poketypos LC']; + let allowedTiers = ['CM', 'CM (NFE)']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'Poketypos' && template.tier !== 'Poketypos NFE' && template.tier !== 'Poketypos LC') { - return [set.species + ' is not legal in the Poketypos format.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Clubmons.']; } } }, }, { - name: "[Gen 9] Public Domain", - desc: `[Gen 9] Public Domain:, a fakemon meta where .`, + name: "[Gen 9] CommunityUsed 2: Regional Dex", + mod: 'communityused2', + desc: `A micrometa that combines secret santa with Generation X.`, + ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause', 'Z-Move Clause', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod'], + teambuilderFormat: 'National Dex', + banlist: ['Baton Pass'], threads: [ - `Pet Mod - Public Domain`, + `• CU2 on Smogon Forums`, ], - mod: 'publicdomain', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Mega Data Mod', 'Z-Move Clause'], onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['PD']; + let allowedTiers = ['CU2 OU', 'CU2 NFE']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Public Domain.']; + return [set.species + ' is not legal in CommunityUsed 2.']; } } }, }, { - name: "[Gen 9] Random Tandem", + name: "[Gen 9] CU2 Random Battle", + desc: `A micrometa that combines secret santa with Generation X.`, threads: [ - `• RBY CAP on Smogon Forums`, + `• CU2 on Smogon Forums`, ], - mod: 'randomtandem', - ruleset: ['Standard', 'Data Mod', '!Species Clause', 'Random Tandem Rule'], + mod: 'communityused2', + team: 'random', + ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Cancel Mod'], }, { - name: "[Gen 1] RBY CAP", + name: "[Gen 9] Conquest Dex", + mod: 'conquestdex', + desc: `A metagame based on the pokemon side game pokemon conquest`, + ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause', 'Z-Move Clause', 'Mega Stone Clause'], + banlist: ['Arceus', 'Dialga', 'Rayquaza', 'Zekrom', 'Reshiram', 'Mewtwo', 'Groudon'], threads: [ - `• RBY CAP on Smogon Forums`, + `• Conquest Dex on Smogon Forums`, ], - mod: 'gen1rbycap', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber', 'Camouflage'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['Conq']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Conquest Dex.']; + } + } + }, }, { - name: "[Gen 9] Roulettemons 2", - desc: `[Gen 9] Roulettemons 2: A meta where the only legal Pokemon are randomly-generated Fakemon.`, + name: "[Gen 2] Crystal Legacy", + mod: 'gen2crystallegacy', + desc: `A Solomod centered around Crystal Legacy.`, + ruleset: ['Standard', 'Data Mod', 'VGC Timer'], + }, + /* { + name: "[Gen 9] Dex Reversal", threads: [ - `• Roulettemons 2 on Smogon Forums`, + `Dex Reversal`, ], - mod: 'roulettemons2', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + teambuilderFormat: "National Dex", + mod: 'dexreversal', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause', 'Mega Data Mod', 'Data Mod', 'Terastal Clause', 'Z-Move Clause'], + banlist: ['Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', 'Smeargle', 'Shell Smash', 'Shadow Tag', 'Calyrex-Ice', 'Eternatus-Eternamax', 'Medichamite'], + }, */ + { + name: "[Gen 9] Dense AF", + desc: 'experimental format with few things and things that are smooshed together', + mod: 'denseaf', + ruleset: [ + 'Nickname Clause', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'Terastal Clause', 'Dense AF Mod', + ], + banlist: ['All Items'], + unbanlist: [ + 'Pinch Berry', 'Tsersi Berry', 'Nota Berry', 'Soft Silver Magnet', 'Miracle Stone Belt', 'Big Neutral Energy', 'Twisted Mystic Coal', 'Black Ice Coat', + 'Sharp Feather Barb', 'Focus Sash', 'Adrenaline Orb', 'Shed Shell', ], onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['R2']; + let allowedTiers = ['DAF']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'R2') { - return [set.species + ' is not legal in [Gen 9] Roulettemons 2.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not DenseAF.']; + } + } + } + }, + { + name: "[Gen 9] Double Trouble", + mod: 'doubletrouble', + desc: `A Fakemons meta made by a few friends`, + ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod'], + teambuilderFormat: 'National Dex', + banlist: ['Baton Pass'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['DT OU', 'DT NFE']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Double Trouble.']; } } }, }, { - name: "[Gen 9] Roulettemons 2 Ubers", - desc: `[Gen 9] Roulettemons 2 Ubers: A broken meta where the only legal Pokemon are randomly-generated Fakemon.`, + name: "[Gen 9] Do Not Use", + desc: [ + "Do Not Use: A National Dex metagame where only Pokemon with 280 BST or less are allowed." + ], threads: [ - `• Roulettemons 2 on Smogon Forums`, - ], - mod: 'roulettemons2', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + `• Do Not Use`, ], + mod: 'donotuse', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause'], + teambuilderFormat: 'National Dex', + banlist: ['Huge Power', 'Pure Power', 'Shadow Tag', 'Arena Trap', 'Baton Pass', 'Moody', 'Cute Charm', 'Hustle', 'Sand Veil', 'Snow Cloak'], + unbanlist: ['Assist'], onValidateTeam(team, format) { let speciesTable = {}; - let allowedTiers = ['R2', 'R2Ubers']; + let allowedTiers = ['DoNU', 'DoNU UUBL', 'DoNU UU', 'DoNU RUBL', 'DoNU RU']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'R2' && template.tier !== 'R2Ubers') { - return [set.species + ' is not legal in [Gen 9] Roulettemons 2.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in [Gen 9] Do Not Use.']; } } }, }, { - name: "[Gen 9] ReGeneration", - desc: [ - "In this Pet Mod, we will redesign the competitive functions of the Kantonian Pokemon after a Paldean counterpart.", + name: "[Gen 9] Do Not Use UU", + desc: [ + "Do Not Use: A National Dex metagame where only Pokemon with 280 BST or less are allowed." ], threads: [ - '• ReGeneration', - '• Spreadsheet', - ], - mod: 'regeneration', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod'], - banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', - 'Aerodactylite', 'Alakazite', 'Beedrillite', 'Blastoisinite', 'Charizardite X', 'Charizardite Y', 'Gengarite', - 'Gyaradosite', 'Kangaskhanite', 'Mewtwonite X', 'Mewtwonite Y', 'Pidgeotite', 'Pinsirite', 'Slowbronite', 'Venusaurite' + `• Do Not Use`, ], + mod: 'donotuseuu', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause'], + teambuilderFormat: 'National Dex', + banlist: ['Huge Power', 'Pure Power', 'Shadow Tag', 'Arena Trap', 'Baton Pass', 'Moody', 'Cute Charm', 'Hustle', 'Sand Veil', 'Snow Cloak'], + unbanlist: ['Assist'], onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ let speciesTable = {}; + let allowedTiers = ['DoNU UU', 'DoNU RUBL', 'DoNU RU']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'ReGeneration' && template.tier !== 'ReGeneration NFE' && template.tier !== 'ReGeneration LC') { - return [set.species + ' is not usable in ReGeneration.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in [Gen 9] Do Not Use UU.']; } } }, }, { - name: "[Gen 9] Regional Evolutions", - desc: 'A NatDex micrometa, with only new regional forms and regional evolutions!', - threads: [], - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], - banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Baton Pass'], - teambuilderFormat: 'National Dex', + name: "[Gen 9] Do Not Use VGC", + desc: [ + "Do Not Use: A National Dex VGC metagame where only Pokemon with 280 BST or less are allowed. Certain Pokemon have been added as restricteds." + ], + threads: [ + `• Do Not Use`, + ], + mod: 'donotusevgc', + + gameType: 'doubles', + teambuilderFormat: 'National Dex Doubles', + ruleset: ['Standard NatDex', 'Item Clause', 'Adjust Level = 50', 'Picked Team Size = 4', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Terastal Clause', 'Z-Move Clause', 'Best of = 3', 'Limit One Restricted'], + restricted: ['Cottonee', 'Dewpider', 'Diglett-Alola', 'Flittle', 'Nidoran-M', 'Wattrel', 'Wingull', 'Zigzagoon', 'Shedinja'], + banlist: ['Huge Power', 'Pure Power', 'Smeargle', 'Wishiwashi', 'Goomy'], + unbanlist: ['Assist'], onValidateTeam(team, format) { let speciesTable = {}; - let allowedTiers = ['RegEvo', 'RegEvo NFE']; + let allowedTiers = ['Restricted', 'DDoNU']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in RegEvo.']; + return [set.species + ' is not legal in [Gen 9] Do Not Use VGC.']; } } }, - mod: 'regionalevolutions', }, { - name: "[Gen 9] Return to Orre: Tercera", - desc: [ - "This is a micrometa that only uses Pokemon obtainable in Colosseum and XD.", - ], + name: "[Gen 9] DNU Random Battle", + desc: `Do Not Use: A National Dex metagame where only Pokemon with 280 BST or less are allowed.`, threads: [ - '• RTO: Tercera', + `• Do Not Use`, ], - mod: 'returntoorretercera', - ruleset: ['Standard NatDex', 'Terastal Clause', 'Picked Team Size = 3', 'Adjust Level = 50', 'VGC Timer'], + mod: 'donotuse', + team: 'random', + ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Cancel Mod'], + }, + { + name: "[Gen 9] Earth & Sky Horizons OU", + desc: `The metagame based on Pokémon Earth & Sky, a set of theoretical games created by En Passant, with the Horizons Expansion for Gen 9.`, + threads: [ + `• Competitive Cheat Sheet`, + ], + mod: 'earthsky', + ruleset: [ 'Earth & Sky', 'Restricted Rules'], + banlist: [ + 'Alakazam-Mega', 'Arceus', 'Blaziken-Mega', 'Blastoise-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Darkrai', + 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Eternatus', 'Flutter Mane', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', + 'Ho-Oh', 'Kartana', 'Koraidon', 'Kyogre', 'Kyurem', 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Miraidon', + 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Robo Bundle', + 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', + 'Oceides', 'Hatar', 'Zuros', 'Norphaval', 'Khatrophys', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Stellar Tera Shard' + ], + }, + { + name: "[Gen 9] Earth & Sky Horizons Triples", + threads: [ + `• Competitive Cheat Sheet`, + ], + mod: 'earthsky', + gameType: 'triples', + ruleset: [ 'Earth & Sky', 'Restricted Rules', 'Gravity Sleep Clause'], + banlist: [ + 'Arceus', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', + 'Dialga', 'Eternatus', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Koraidon', 'Kyogre', 'Kyurem', 'Landorus-Base', + 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Miraidon', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', + 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', + 'Oceides', 'Hatar', 'Zuros', 'Norphaval', 'Khatrophys', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Stellar Tera Shard' + ], + }, + { + name: "[Gen 9] Earth & Sky Horizons Dex", + threads: [ + `• Competitive Cheat Sheet`, + ], + mod: 'earthsky', + ruleset: [ '[Gen 9] Earth & Sky Horizons OU', 'Horizons Pokedex',], banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', - 'Aerodactylite', 'Alakazite', 'Beedrillite', 'Blastoisinite', 'Charizardite X', 'Charizardite Y', 'Gengarite', - 'Gyaradosite', 'Kangaskhanite', 'Mewtwonite X', 'Mewtwonite Y', 'Pidgeotite', 'Pinsirite', 'Slowbronite', 'Venusaurite', - 'Lugia', 'Ho-Oh', 'All Items' + 'Manaphy', 'Meloetta-Pirouette', 'Diancie-Mega', 'Melmetal', 'Enamorus-Base', 'Latias-Mega', 'Latios-Mega', 'Zygarde-Base', 'Hoopa-Unbound', + 'Spectrier', 'Roaring Moon', 'Valiant Droid', 'Terapagos-Terastal'], + }, + { + name: "[Gen 9] Earth & Sky Horizons Ubers", + threads: [ + `• Competitive Cheat Sheet`, + ], + mod: 'earthsky', + ruleset: [ 'Earth & Sky',], + banlist: ['Baton Pass'], + }, + { + name: "[Gen 8] Evolution Project", + desc: [ + `Evolution Project: A small group's creative exercise.`, + ], + ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], + banlist: [ + 'Alakazam', 'Excadrill-Base', 'Exploud', 'Lycanroc-Dusk', 'Naganadel-Base', 'Reuniclus-Base', 'Scizor', 'Scolipede-Base', 'Starmie-Base', 'Polteageist-Base', + 'Polteageist-Antique', 'Volcarona', 'Aegislash-Base', 'Gyarados', 'Moody', 'Baton Pass' ], onValidateTeam(team, format) { /**@type {{[k: string]: true}} */ let speciesTable = {}; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'TERCERA' && template.tier !== 'TERCERA NFE') { - return [set.species + ' is not usable in Return to Orre: Tercera.']; + if (template.tier !== 'Evo!' && template.tier !== 'Evo (NFE)' && template.tier !== "Evo NFE!") { + return [set.species + ' is not legal in the Evolution Project format.']; } } }, + onValidateSet(set) { + const item = this.dex.items.get(set.item); + if (item.megaStone) return [`${set.name || set.species} is not currently allowed to Mega Evolve.`]; + }, + mod: 'evolutionproject', + searchShow: false, }, { - name: "[Gen 9] Set in Stone", + name: "[Gen 8] Evolution Project VGC", desc: [ - "Set in Stone: A micrometa where Pokemon are customized based on a combination of two player's set ideas.", + `Evolution Project: A small group's creative exercise.`, ], - threads: [ - `• Set in Stone on Smogon Forums`, - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: [], + gameType: 'doubles', + banlist: ['Aegislash-Base', 'Scizor'], + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'VGC Timer', '+Unobtainable', '+Past', 'Dynamax Clause', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], onValidateTeam(team, format) { /**@type {{[k: string]: true}} */ let speciesTable = {}; for (const set of team) { let template = this.dex.species.get(set.species); - if ( template.tier !== 'SS') { - return [set.species + ' is not usable in Set in Stone.']; + if (template.tier !== 'Evo!' && template.tier !== 'Evo (NFE)' && template.tier !== "Evo NFE!") { + return [set.species + ' is not legal in the Evolution Project format.']; } } }, - mod: 'setinstone', + onValidateSet(set) { + const unobtainables = [ + 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', + 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', + ]; + const species = this.dex.species.get(set.species); + if (unobtainables.includes(species.name)) { + if (this.ruleTable.has(`+pokemon:${species.id}`)) return; + return [`${set.name || set.species} does not exist in the National Dex.`]; + } + if (species.tier === "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.`]; + } + // Items other than Z-Crystals and Pokémon-specific items should be illegal + if (!set.item) return; + const item = this.dex.items.get(set.item); + if (item.megaStone) return [`${set.name || set.species} is not currently allowed to Mega Evolve.`]; + if (!item.isNonstandard) return; + if (['Past', 'Unobtainable'].includes(item.isNonstandard) && !item.zMove && !item.itemUser && !item.forcedForme) { + if (this.ruleTable.has(`+item:${item.id}`)) return; + return [`${set.name}'s item ${item.name} does not exist in Gen ${this.dex.gen}.`]; + } + }, + mod: 'evolutionproject', + searchShow: false, }, - { - name: "[Gen 9] Secret Santa", - desc: '[Gen 9] Secret Santa: One person sets restrictions for another to follow in the creation of a fakemon".', - threads: [ - '• Secret Santa', - 'https://docs.google.com/spreadsheets/d/1IPFlVP4osQhGtjNRheycCX0AnZiUVipumGwqKdhOS2s/edit#gid=1272593335">Spreadsheet', + { + name: "[Gen 9] Evolution Project 2", + desc: [ + `Evolution Project: A small group's creative exercise.`, ], - mod: 'secretsanta', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', '+Past'], + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Dynamax Clause', 'Data Mod'], banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + 'Toxapex-Base', 'Noivern-Variant', 'Chandelure', 'Corviknight-Base', 'Darmanitan-Base', 'Darmanitan-Galar', 'Excadrill-Base', 'Hawlucha-Base', + 'Garchomp', 'Velocinobi', 'Dragonite', + 'Tapu Koko', 'Tapu Lele', 'Tapu Bulu', 'Tapu Fini', 'Zacian', 'Zamazenta', 'Deoxys', + 'Moody', 'Baton Pass', 'Shed Tail', 'Last Respects', ], onValidateTeam(team, format) { /**@type {{[k: string]: true}} */ let speciesTable = {}; + const customTiers = ['Pokémon of the Day!', 'Evo!', '(Prevo)']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'santa') { - return [set.species + ' is not usable in Secret Santa.']; + if (!customTiers.includes(template.tier)) { + return [set.species + ' is not legal in the Evolution Project format.']; } } }, + onValidateSet(set) { + const item = this.dex.items.get(set.item); + if (item.megaStone) return [`${set.name || set.species} is not allowed to Mega Evolve.`]; + }, + mod: 'gen9evolutionproject', + searchShow: false, }, { - name: "[Gen 3] Shadow Colosseum", - mod: 'gen3shadowcolosseum', - gameType: 'doubles', + name: "[Gen 9] Evolution Project 2 VGC", desc: [ - `[Gen 3] Shadow Colosseum: A Gen 3 Orre Colosseum (Gen 3 VGC) metagame that adds Shadow Pokemon and moves to the game.`, - ], - threads: [ - `• Shadow Colosseum on the Smogon Forums`, + `Evolution Project: A small group's creative exercise. Tera Blast is universal in VGC.`, ], - ruleset: [ - 'Obtainable', 'Team Preview', 'Species Clause', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Max Team Size = 6', 'VGC Timer', - 'Nickname Clause', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Exact HP Mod', 'Item Clause', 'Open Team Sheets', - 'Shadow Mechanic', 'Data Preview', + gameType: 'doubles', + teambuilderFormat: "National Dex", + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'VGC Timer', '+Unobtainable', '+Past', 'Open Team Sheets', 'Dynamax Clause', 'Z-Move Clause', 'Data Mod'], + banlist: [ + 'Dragonite', + 'Tapu Koko', 'Tapu Lele', 'Tapu Bulu', 'Tapu Fini', 'Zacian', 'Zamazenta', 'Deoxys', ], - banlist: ['Soul Dew', 'Deoxys-Defense', 'Deoxys-Attack', 'Deoxys-Speed', 'Restricted Legendary', 'Mythical'], - unbanlist: ['Latios', 'Latias', 'Wobbuffet', 'Wynaut'], - bestOfDefault: true, - onBegin() { - this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect, you will lose the battle'); + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + const customTiers = ['Pokémon of the Day!', 'Evo!', '(Prevo)']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!customTiers.includes(template.tier)) { + return [set.species + ' is not legal in the Evolution Project format.']; + } + } }, - }, - { - name: "[Gen 3] Shadow Colosseum Custom Game", - mod: 'gen3shadowcolosseum', - gameType: 'doubles', + checkCanLearn(move, species, lsetData, set) { // Tera Blast is universal in VGC, but not in singles + const problem = this.checkCanLearn(move, this.dex.species.get(set.species)); + if (problem && move.name !== 'Tera Blast') return problem; + return null; + }, + onValidateSet(set) { + const unobtainables = [ + 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', + 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', + ]; + const species = this.dex.species.get(set.species); + if (unobtainables.includes(species.name)) { + if (this.ruleTable.has(`+pokemon:${species.id}`)) return; + return [`${set.name || set.species} does not exist in the National Dex.`]; + } + if (species.tier === "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.`]; + } + // Items other than Z-Crystals and Pokémon-specific items should be illegal + if (!set.item) return; + const item = this.dex.items.get(set.item); + if (item.megaStone) return [`${set.name || set.species} is not allowed to Mega Evolve.`]; + if (!item.isNonstandard) return; + if (['Past', 'Unobtainable'].includes(item.isNonstandard) && !item.zMove && !item.itemUser && !item.forcedForme) { + if (this.ruleTable.has(`+item:${item.id}`)) return; + return [`${set.name}'s item ${item.name} does not exist in Gen ${this.dex.gen}.`]; + } + }, + mod: 'gen9evolutionproject', searchShow: false, - debug: true, - battle: {trunc: Math.trunc}, - ruleset: [ - 'HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', - 'Default Level = 100', 'Shadow Mechanic', 'Data Preview', 'Exact HP Mod', 'Open Team Sheets', 'Team Preview', - ], }, { - name: "[Gen 9] Six by Six", - desc: [ - `Six by Six: A Gen 9 micrometa featuring only 6 Pokemon, each with 6 forms.`, - ], + name: "[Gen 9] Forgottenmons", + desc: `A National Dex metagame featuring only Pokemon not in Gen 9.`, threads: [ - `• Six by Six on the Smogon Forums`, + `• Forgottenmons in the Solomods Megathread`, + ], + mod: 'forgottenmons', + teambuilderFormat: 'National Dex', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Stone Clause'], + banlist: [ + 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', + 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', ], - mod: 'sixbysix', - ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Terastal Clause', 'Data Mod'], - banlist: ['King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['King', 'Queen', 'Bishop', 'Knight', 'Rook', 'Pawn']; + let allowedTiers = ['Forgottenmons','Forgottenmons NFE','Forgottenmons LC']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Six by Six.']; + return [set.species + ' is not legal in Forgottenmons.']; } } }, }, { - name: "[Gen 9] Super Smash Mods Brawl", - desc: [ - "Super Smash Mods Brawl: The third in the Super Smash Mods series, creating a micrometa using Pokemon from other Pet Mods and Solomods.", - ], - threads: [ - `• Super Smash Mods Brawl on Smogon Forums`, - ], - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'Sleep Moves Clause', 'Terastal Clause', /*'Z-Move Clause',*/ 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', - 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', - 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Houndoominite', - 'Zinogrite', - /*'Wishing Stone',*/ 'Epic Beam', // temp bans - ], + name: "[Gen 9] Fusion Evolution Corrupt Council", + mod: 'fecc', + team: 'random', + desc: `fecc`, + ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Z-Move Clause', 'Intro Mod'], + }, + /* + { + name: "[Gen 9] Fusion Evolution Corrupt Council 2", + mod: 'fecc', + desc: `fecc`, + ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Z-Move Clause'], + }, + */ + { + name: "[Gen 9] Fusion Evolution Dondozo", + mod: 'dondozo', + desc: `dondozo`, + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Z-Move Clause', /* 'Mega Data Mod' */], + banlist: ['Shed Tail'], onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['Dondozo','FEDD']; for (const set of team) { let template = this.dex.species.get(set.species); - if ( template.tier !== 'SSB') { - return [set.species + ' is not usable in Super Smash Mods Brawl.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Fusion Evolution.']; } } }, - mod: 'smashmodsbrawl', }, { - name: "[Gen 9] Super Smash OMs", - desc: [ - "Super Smash OMs: A project that aims to create a micrometa containing Pokemon from different Gen 9 OMs.", - ], + name: "[Gen 9] Fusion Evolution VGC Reg A", + desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", + ], threads: [ - `• Super Smash Mods Melee on Smogon Forums`, + `• FEVGC on Smogon Forums`, + `• Spreadsheet`, ], - ruleset: ['Standard', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', - 'Move Legality', 'Revelationmons Mod Modded', '!Obtainable Abilities'], - banlist: ['Baton Pass', 'Last Respects', 'Shed Tail'], + searchShow: false, + gameType: 'doubles', + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], + mod: 'gen9fevgc', onValidateTeam(team, format) { - // @type {{[k: string]: true}} + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['Reg A', 'Reg A NFE', 'Reg A LC']; for (const set of team) { let template = this.dex.species.get(set.species); - let allowedTiers = ['Flipped', 'Tier Shift', 'Convergence', 'Mix and Mega', 'STABmons', 'Inheritance', 'Re-Evolution', 'Pokebilities', 'Sketchmons', 'Cross Evolution', 'Almost Any Ability', '350 Cup', 'Frantic Fusions', 'Bonus Type', 'Revelationmons', 'Nature Swap','Formemons']; if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not usable in Super Smash OMs.']; - } - } - }, - onValidateSet(set) { - const STABList = ["Arboliva", "Porygon2", "Terrakion"]; - const SketchList = ["Garchomp", "Registeel"]; - const ConvList = ["Greninja", "Ogerpon", "Zarude"]; - const STABbanlist = ["Acupressure", "Astral Barrage", "Belly Drum", "Ceaseless Edge", "Clangorous Soul", "Dire Claw", "Dragon Energy", "Electro Shot", - "Extreme Speed", "Fillet Away", "Final Gambit", "Flower Trick", "Gigaton Hammer", "No Retreat", "Rage Fist", "Revival Blessing", "Shell Smash", "Shift Gear", - "Triple Arrows", "V-Create", "Victory Dance", "Water Shuriken", "Wicked Blow", "Wicked Torque"]; - const Convbanlist = ["Boomburst", "Extreme Speed", "Population Bomb", "Rage Fist", "Shell Smash", "Spore", "Quiver Dance"]; - for (const move of set.moves) { - let species = this.dex.species.get(set.species); - if (STABList.includes(species.name) && STABbanlist.includes(move)) { - return [`${set.name || set.species} has restricted move ${move}.`]; - } - if (ConvList.includes(species.name) && Convbanlist.includes(move)) { - return [`${set.name || set.species} has restricted move ${move}.`]; + return [set.species + ' is not legal in Fusion Evolution.']; } } }, - mod: 'supersmashoms', }, { - name: "[Gen 9] Super Smash Stereotypes", - desc: [ - "Super Smash Stereotypes: A project that aims to create a micrometa containing a Pokemon from other mods for all 171 possible types.", - ], + name: "[Gen 9] Fusion Evolution VGC Reg A (Bo3)", + desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", + ], threads: [ - `• Super Smash Mods Melee on Smogon Forums`, + `• FEVGC on Smogon Forums`, + `• Spreadsheet`, ], - ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: ['Gardevoirite', 'Chillytite', 'Bisharpite', 'Baton Pass'], + searchShow: false, + gameType: 'doubles', + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], + mod: 'gen9fevgc', onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['Reg A', 'Reg A NFE', 'Reg A LC']; for (const set of team) { let template = this.dex.species.get(set.species); - if ( template.tier !== 'SSS') { - return [set.species + ' is not usable in Super Smash Stereotypes.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Fusion Evolution.']; } } }, - mod: 'smashstereotypes', }, { - name: "[Gen 9] TeraForming", + name: "[Gen 9] Fusion Evolution VGC Reg B", + desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", + ], threads: [ - `• Spreadsheet`, - ], - mod: 'teraforming', - ruleset: ['Standard', 'Terastal Clause', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Stellar Orb'], - }, - { - name: "[Gen 9] TeraMax", - mod: 'teramax', - ruleset: ['Standard', 'Data Mod'], - banlist: [ - 'Arena Trap', 'Power Construct', 'Moody', 'Shadow Tag', 'Stellar Shift', 'Stellar Shell', 'King\'s Rock', 'Baton Pass', - 'Last Respects', 'Shed Tail', 'Wishing Stone > 1', 'Light Clay', - ], + `• FEVGC on Smogon Forums`, + `• Spreadsheet`, + ], + gameType: 'doubles', + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], + mod: 'gen9fevgc', onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['TMOU', 'TMFE', 'TMNFE', "TMLC"]; + let allowedTiers = ['Reg A', 'Reg B', 'Reg A NFE', 'Reg A LC', 'Reg B LC']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in TeraMax.']; + return [set.species + ' is not legal in Fusion Evolution.']; } } }, - onSwitchOut(pokemon) { - const isTeraStellar = pokemon.terastallized === 'Stellar'; - if (isTeraStellar) { - pokemon.stellarBoostedTypes = []; - } - }, }, { - name: "[Gen 9] Tier Sovereign", - desc: [ - "Tier Sovereign: A micrometa where Lindwallow rules.", - ], + name: "[Gen 9] Fusion Evolution VGC Reg B (Bo3)", + desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", + ], threads: [ - `• Tier Sovereign on Smogon Forums`, + `• FEVGC on Smogon Forums`, + `• Spreadsheet`, ], - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod','Tier Sovereign Mod','Terastal Clause'], - banlist: [], + gameType: 'doubles', + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], + mod: 'gen9fevgc', onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['Tier Sovereign', 'TSOU'] + let allowedTiers = ['Reg A', 'Reg B', 'Reg A NFE', 'Reg A LC', 'Reg B LC']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not usable in Tier Sovereign.']; + return [set.species + ' is not legal in Fusion Evolution.']; } } }, - mod: 'tiersovereign', - }, - { - name: "[Gen 9] Trading Post", - mod: 'tradingpost', - ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', '!Evasion Items Clause'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Baton Pass', 'Last Respects', 'Shed Tail'], }, { - name: "[Gen 9] Trainer Support", - mod: 'trainersupport', - ruleset: ['Standard', 'Trainer Support Rule', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 9] Triple Threat", - desc: [ - "Triple Threat: A micrometa where Pokemon are allowed to have up to three types.", - ], + name: "[Gen 9] Fusion Evolution VGC Reg C", + desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", + ], threads: [ - `• Triple Threat on Smogon Forums`, + `• FEVGC on Smogon Forums`, + `• Spreadsheet`, ], - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: [], + gameType: 'doubles', + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], + mod: 'gen9fevgc', onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['Reg A', 'Reg B', 'Reg C', 'Reg A NFE', 'Reg A LC', 'Reg B LC', 'Reg C LC']; for (const set of team) { let template = this.dex.species.get(set.species); - if ( template.tier !== 'TT') { - return [set.species + ' is not usable in Triple Threat.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Fusion Evolution.']; } } }, - mod: 'triplethreat', }, { - name: "[Gen 9] Two-Step Mons v3", - mod: 'twostepmonsv3', - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], - teambuilderFormat: "National Dex", + name: "[Gen 9] Fusion Evolution VGC Reg C (Bo3)", + desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", + ], + threads: [ + `• FEVGC on Smogon Forums`, + `• Spreadsheet`, + ], + gameType: 'doubles', + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], + mod: 'gen9fevgc', onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['Reg A', 'Reg B', 'Reg C', 'Reg A NFE', 'Reg A LC', 'Reg B LC', 'Reg C LC']; for (const set of team) { let template = this.dex.species.get(set.species); - if ( template.tier !== 'TSMv3') { - return [set.species + ' is not usable in Two-Step Mons v3.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Fusion Evolution.']; } } }, }, + /* { + name: "[Gen 1] Glitch OU", + mod: 'gen1glitch', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber', 'Agility + Wrap', 'Agility + Fire Spin', 'Agility + Bind', 'Agility + Clamp', 'Amnesia', 'Sleep Powder', 'Self-Destruct', 'Explosion'], + }, */ { - name: "[Gen 9] Ubermons", + name: "[Gen 2] GSC Doubles Ubers", threads: [ - `• Ubermons Thread`, + `• Thread on Smogon`, ], - mod: 'gen9ubermons', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause'], - banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass'], - teambuilderFormat: "National Dex", + mod: 'gen2doubles', + gameType: 'doubles', + ruleset: ['Standard Doubles', 'Swagger Clause'], + banlist: ['Bright Powder', 'King\'s Rock', 'Quick Claw'], }, { - name: "[Gen 9] VaporeMons", - desc: [ - "VaporeMons: The third mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + name: "[Gen 2] GSC Doubles OU", + threads: [ + `• Thread on Smogon`, ], + + mod: 'gen2doubles', + gameType: 'doubles', + ruleset: ['Standard Doubles', 'Swagger Clause'], + banlist: ['Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], + }, + { + name: "[Gen 2] GSC Doubles UU", threads: [ - `• Thread on the Smogon Forums`, - `• Spreadsheet`, + `• Thread on Smogon`, ], - mod: 'gen9vaporemons', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Light Clay', 'Fling + Segin Star Shard', /*'Damp Rock'*/], + + mod: 'gen2doubles', + gameType: 'doubles', + ruleset: ['Standard Doubles', 'Swagger Clause'], + banlist: ['OU', 'Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], }, { - name: "[Gen 9] Worldbuilding", + name: "[Gen 2] GSC Doubles Random Battle", threads: [ - `Worldbuilding`, + `• Thread on Smogon`, ], - mod: 'worldbuilding', - ruleset: ['Standard NatDex', 'Evasion Moves Clause', 'Evasion Items Clause', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause'], - banlist: ['AG', 'Uber', 'Assist', 'Baton Pass'], + + mod: 'gen2doubles', + gameType: 'doubles', + team: 'random', + ruleset: ['Standard Doubles', 'Swagger Clause'], + banlist: ['Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], + }, + { + name: "[Gen 9] Hax Meters OU", + mod: 'haxmeters', + ruleset: ['Standard', '!Sleep Clause Mod', 'Sleep Moves Clause', '!Evasion Items Clause', 'Hax Meter Rule'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }, + { + name: "[Gen 9] Hax Meters Doubles OU", + mod: 'haxmeters', + gameType: 'doubles', + ruleset: ['Standard Doubles', 'Hax Meter Rule'], + banlist: ['DUber', 'Shadow Tag'], + }, + { + name: "[Gen 8] Hax Meters OU", + mod: 'gen8haxmeters', + ruleset: ['Standard', '!Evasion Items Clause', 'Dynamax Clause', 'Hax Meter Rule'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass'], + }, + { + name: "[Gen 8] Hax Meters Doubles OU", + mod: 'gen8haxmeters', + gameType: 'doubles', + ruleset: ['Standard Doubles', 'Dynamax Clause', 'Hax Meter Rule'], + banlist: ['DUber', 'Power Construct', 'Shadow Tag', 'Swagger'], + }, + { + name: "[Gen 9] Luckless Play OU", + mod: 'lucklessplay', + ruleset: ['Standard', '!Sleep Clause Mod', 'Sleep Moves Clause', '!Evasion Items Clause', 'Hax Meter Rule'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }, + { + name: "[Gen 8] Luckless Play OU", + mod: 'gen8lucklessplay', + ruleset: ['Standard', '!Evasion Items Clause', 'Dynamax Clause', 'Hax Meter Rule'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass'], + }, + /* { + name: "[Gen 3] Hoennification", + mod: 'gen3hoennification', + ruleset: ['Standard', 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod', 'Baton Pass Mod'], + banlist: ['Uber', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain', 'Starf Berry', 'Speed Boost + Blaziken', 'Drizzle', 'Drought'], + }, + { + name: "[Gen 9] i forgor OU", + mod: 'iforgor', + desc: `i forgor`, + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Mega Data Mod'], onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['WLB']; + let allowedTiers = ['IDK']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Worldbuilding.']; + return ['you forgor ' + set.species + ' doesnt exist.']; } } }, }, - // Start { - name: "[Gen 9] VGC 20xx", - desc: ["Custom VGC format by sugarbear", - ], - threads: [ - `• VGC 20xx on Smogon Forums`, - `• Spreadsheet New Stuff`, - `• Spreadsheet Returning Stuff and Changes`, - ], - // searchShow: false, - gameType: 'doubles', - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Terastal Clause', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], - mod: 'gen9vgc20xx', + name: "[Gen 9] i forgor Ubers", + mod: 'iforgor', + desc: `i forgor`, + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Mega Data Mod'], onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['VGC', 'VGC NFE']; + let allowedTiers = ['EF', 'IDK']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in VGC 20xx.']; + return ['you forgor ' + set.species + ' doesnt exist.']; } } }, - }, - // End - /////////////////////////////////////////////////////////////// - ///////////////////// Gen 8 Pet Mods ////////////////////////// - /////////////////////////////////////////////////////////////// + }, */ { - section: "Gen 8 Pet Mods", - column: 1, - // name: "gen8petmods", - }, + name: "[Gen 1] JohtoMons", + desc: '[Gen 1] JohtoMons: Adding the Johto mons to RBY', + threads: [ + `• FutureProofing on Smogon Forums`, + ], + mod: 'gen1johtomons', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber'], + unbanlist: ['Aeroblast', 'Sacred Fire', 'Sketch', 'Present', 'Megahorn', 'Steel Wing', 'Milk Drink', 'Metal Claw', 'Spider Web', 'Hidden Power', 'Octazooka', 'Triple Kick', 'Vital Throw', 'Extreme Speed', 'Mach Punch', 'Outrage', 'Morning Sun', + 'Chikorita', 'Bayleef', 'Meganium', 'Cyndaquil', 'Quilava', 'Typhlosion', 'Sentret', 'Furret', 'Hoothoot', 'Noctowl', 'Ledyba', 'Ledian', 'Spinarak', 'Ariados', 'Crobat', 'Chinchou', 'Lanturn', 'Pichu', 'Cleffa', 'Igglybuff', 'Togepi', 'Togetic', + 'Natu', 'Xatu', 'Mareep', 'Flaaffy', 'Ampharos', 'Bellossom', 'Marill', 'Azumarill', 'Sudowoodo', 'Politoed', 'Hoppip', 'Skiploom', 'Jumpluff', 'Aipom', 'Sunkern', 'Sunflora', 'Yanma', 'Wooper', 'Quagsire', 'Espeon', 'Umbreon', 'Murkrow', 'Slowking', + 'Misdreavus', 'Unown', 'Wobbuffet', 'Girafarig', 'Pineco', 'Forretress', 'Dunsparce', 'Gligar', 'Steelix', 'Snubbull', 'Granbull', 'Qwilfish', 'Scizor', 'Shuckle', 'Heracross', 'Sneasel', 'Teddiursa', 'Ursaring', 'Slugma', 'Magcargo', 'Swinub', + 'Piloswine', 'Corsola', 'Remoraid', 'Octillery', 'Delibird', 'Mantine', 'Skarmory', 'Houndour', 'Houndoom', 'Kingdra', 'Phanpy', 'Donphan', 'Porygon2', 'Stantler', 'Smeargle', 'Tyrogue', 'Hitmontop', 'Smoochum', 'Elekid', 'Magby', 'Miltank', + 'Blissey', 'Raikou', 'Entei', 'Suicune', 'Larvitar', 'Pupitar', 'Tyranitar', 'Lugia', 'Ho-Oh', 'Celebi', + ], + }, { - name: "[Gen 8] Abilitypos", - desc: `Abilitypos: In this Pet Mod, your goal is to take an ability and change a few letters in its name to make it brand new. `, + name: "[Gen 2] Johto Expansion Pak (Alpha) OU", threads: [ - `• Abilitypos on Smogon Forums`, - `• Spreadsheet`, + `• Post in Solomods Megathread`, + `• Spreadsheet`, ], - ruleset: ['Standard NatDex'], - banlist: ['All Pokemon'], - unbanlist: ['Sceptile', 'Charizard', 'Inteleon', 'Lanturn', 'Larvesta', 'Aggron', 'Sableye', 'Carbink', 'Entei', 'Hatterene', 'Raticate-Alola', 'Lapras'], - mod: "abilitypos", + mod: 'gen2expansionpack', + ruleset: ['Standard', 'Data Mod', 'Welcome Message'], + banlist: ['Uber'], }, { - name: "[Gen 8] Alternatium", - desc: `Alternatium: A metagame made up of only Pokemon with alternate forms exist, with all of them being seperate and unique Pokemon.`, + name: "[Gen 2] Johto Expansion Pak Ubers", threads: [ - `• Alternatium on Smogon Forums`, - `• Spreadsheet`, - ], - mod: 'alternatium', - ruleset: ['Standard NatDex', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause'], - banlist: ['All Pokemon', 'Slowbronite', 'Red Orb', 'Blue Orb'], - unbanlist: [ - 'Silvally', 'Silvally-Bug', 'Silvally-Dark', 'Silvally-Dragon', 'Silvally-Electric', 'Silvally-Fairy', 'Silvally-Fighting', 'Silvally-Fire', 'Silvally-Flying', 'Silvally-Ghost', - 'Silvally-Grass', 'Silvally-Ground', 'Silvally-Ice', 'Silvally-Poison', 'Silvally-Psychic', 'Silvally-Rock', 'Silvally-Steel', 'Silvally-Water', 'Pikachu', 'Pikachu-Rock-Star', - 'Pikachu-Belle', 'Pikachu-Idol', 'Pikachu-PhD', 'Pikachu-Libre', 'Pikachu-Partner', 'Pikachu-Starter', 'Darmanitan', 'Darmanitan-Zen', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen', - 'Aegishield', 'Aegislash', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Rotom', 'Rotom-Heat', 'Rotom-Wash', 'Rotom-Frost', 'Rotom-Fan', 'Rotom-Mow', 'Dugtrio', - 'Dugtrio-Alola', 'Muk', 'Muk-Oilslick', 'Slowbro', 'Slowbro-Galar', 'Slowking', 'Slowking-Galar', 'Tornadus', 'Cummulus', 'Thundurus', 'Thundurus-Therian', 'Landorus', 'Landorus-Bengal', - 'Vivillon-Fancy', 'Vivillon-Spirit', 'Vivillon-Combat', 'Genesect', 'Genesect-Douse', 'Genesect-Molten', 'Genesect-Freezer', 'Genesect-Type-Delta', 'Groudon', 'Groudon-Primal', 'Kyogre', - 'Kyogre-Primal', 'Deoxys-Wood', 'Deoxys-Gem', 'Deoxys-Tank', 'Deoxys-Speed', 'Sandslash-Lustrous', 'Sandslash-Alola', 'Ninetales-Steamwork', 'Ninetales-Alola', 'Giratina', 'Giratina-Shadow', - 'Eternatus', 'Manustorm', 'Exeggutor', 'Exeggutor-Lighthouse', 'Weezing', 'Weezing-King', 'Raticate', 'Raticate-Alola', 'Linoone', 'Linoone-Punk', 'Castform', 'Castform-Firestorm', - 'Castform-Thunderstorm', 'Castform-Snowy', 'Wormadam', 'Wormadam-Sandy', 'Fibormadam', 'Farfetch\u2019d', 'Farfetch\u2019d-Galar', 'Corsola', 'Corsoul', 'Shaymin', 'Shaymin-Sky', 'Keldeo', - 'Swordeo', 'Meloetta', 'Meloetta-Fighter', 'Lycanday', 'Lycanroc-Spectre', 'Lycanroc-Dusk', 'Gourgeist', 'Gourgeist-Fae', 'Gourgeist-Pulpy', 'Supergeist', 'Cramorant', 'Cramorant-Swimmer', - 'Cramorant-Gorging', 'Eiscue', 'Eiscue-Noice', 'Mimikyu', 'Mimikyu-Sparkstone', 'Morpeko-Marsh', 'Morvilant', 'Zygarde-Wyrm', 'Zygarde-Canid', 'Zygarde-Goliath', + `• Post in Solomods Megathread`, + `• Spreadsheet`, ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (speciesTable[template.id]) { - return ["You are limited to one of each Pokémon by Species Clause (except for different formes). ", "You have more than one " + template.id + "."]; - } - speciesTable[template.id] = true; - } - }, + mod: 'gen2expansionpack', + ruleset: ['Standard', 'Data Mod', 'Welcome Message'], }, { - name: "[Gen 8] Black Market", - mod: "blackmarket", - desc: [ - `Black Market: A Pet Mod where users build Fakemon over the span of a tournament.` - ], + name: "[Gen 9] Jollymod", + desc: [ + "jumpscaare", + ], + threads: [ + `• Jollymod on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Jolly'], + banlist: ['Avalanche'], + teambuilderFormat: "National Dex", + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'JM') { + return [set.species + ' is not usable in Jollymod.']; + } + } + }, + mod: 'jollymod', + }, + { + name: "[Gen 1] Jumpstarted", threads: [ - `• Black Market on Smogon Forums`, - `• Spreadsheet`, - ], - ruleset: ['Standard NatDex'], - unbanlist: ['Dragapult', 'Tornadus-Therian', 'Blaziken', 'Greninja-Ash', 'Kyurem'], - banlist: [ - 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken', 'Darkrai', 'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', - 'Eternatus', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', - 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', - 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Tornadus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', - 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass', - 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z' + ], + mod: 'gen1jumpstarted', + ruleset: ['Standard', 'Data Mod', 'Allow Tradeback'], + banlist: ['Uber'], }, { - name: "[Gen 8] Bust A Move", - desc: [ - "Bust A Move: A Pet Mod where previously competitively useless moves are given much needed makeovers.", - ], + name: "[Gen 1] Kanto Expansion Pak OU", threads: [ - `• Bust A Move on Smogon Forums`, - `• Spreadsheet`, - ], - mod: 'bustamove', - ruleset: ['Standard NatDex'], - banlist: [ - 'Alakazam-Mega', 'Arceus', 'Blastoise-Mega', 'Blaziken', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cinderace', 'Darkrai', 'Darmanitan-Galar', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', - 'Dialga', 'Dracovish', 'Dragapult', 'Eternatus', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Kangaskhan-Mega', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', - 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Magearna', 'Metagross-Mega', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', - 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Spectrier', 'Tornadus-Therian', 'Urshifu-Base', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', - 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass', + `• Post in Solomods Megathread`, + `• Spreadsheet`, ], - teambuilderFormat: "OU", + mod: 'gen1expansionpack', + ruleset: ['Standard', 'Data Mod', 'Welcome Message', 'Allow Tradeback'], + banlist: ['Uber'], }, - { - name: "[Gen 8] CCaPM 2022", - desc: `ccapm: ccapm `, - mod: "ccapm2022", - ruleset: ['Standard', 'Data Mod', 'Godly Gift Mod'], - banlist: ['AG', 'Uber', - 'Blissey', 'Chansey', 'Dragapult', 'Hawlucha', 'Marowak-Alola', 'Melmetal', 'Nidoking', 'Nidoqueen', 'Pikachu', 'Toxapex', - 'Focus Band', 'King\'s Rock', 'Quick Claw', 'Razor Fang', - 'Huge Power', 'Moody', 'Arena Trap', 'Pure Power', 'Shadow Tag', - 'Baton Pass'], - restricted: ['Unicorn', 'Platypus', 'Power Plant', 'Druddigod', 'Snek', 'Ghost Car', 'Trapjaw Fireant', 'Duck', 'groundpoison', 'groundpoison-Crystallized', 'Metal Snek', 'Roc With Ram Horns', 'ghostnormal', 'Cartesian Plane Dragon', 'better than cinderace as soccer', 'Statue'], + { + name: "[Gen 1] Kanto Expansion Pak Ubers", + threads: [ + `• Post in Solomods Megathread`, + `• Spreadsheet`, + ], + mod: 'gen1expansionpack', + ruleset: ['Standard', 'Data Mod', 'Welcome Message', 'Allow Tradeback'], }, { - name: "[Gen 2] Crystal: Sevii Islands", - desc: ["Crystal: Sevii Islands- A Gen 2 pet mod that aims to create new Pokemon, items, and moves for the GSC OU Metagame."], + name: "[Gen 8] Kaen's Dex", + mod: "kaensdex", + ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod'], + banlist: ['All Pokemon'], + unbanlist: ['Luvdisc', 'Hypno','Arbok','Shuckle','Woodite','Manteaf','Fasmiwood','Smice','Ratevil','Burstrat', 'Doplash','Makid','Merdolph','Princeguin', + 'Kinguin','Ekidna','Porcusquill','Mop','Mopper','Puppessum','Grimssum','Spiball','Scopiball','Navird','Peckbeard','Bask','Peayes','Weaworm', + 'Lilfly','Koafly','Puptwin','Duog','Bureep','Parllama','Debi','Deecrust','Pickynest','Vulcdor','Buroach','Bugler','Roamai','Rack','Mountse', + 'Lacorn','Antney','Hairpu','Sockorm','Kibaion','Kibasol','Gnodog','Dressog','Tigle','Biitora','Psyguana','Forguana','Timk','Dynabite','Positt', + 'Frogassin','Jaklove','Wospark','Ravesp','Cabbitt','Haresprout','Seerd','Evialden','Ostranch','Pasuragu','Grussgu','Orvenom','Nerdium','Smartish', + 'Higarden','Unimount','Birnal','Yeagle','Flysh','Seaplane','Airpier','Likaba','Sucabra','Mousse','Donter','Melops','Harvetops','Pentamelop', + 'Scarferret','Lovefume','Smolle','Molvel','Toxtaur','Venotauro','Helmdillo','Rescurer','Crimske','Snagant','Zhulong','Yufo','Spavader','Grichick', + 'Grileo','Sbusho','Pangearth','Ankylonite','Champkylo','Slomoss','Milomoss','Rampeck','Terroccer','Tifrost','Smilofrost','Vizcachu','Paramer', + 'Toolsaur','Neuro','Brancell','Freezegon','Snoak','Coldrake','Capowt','Capoedar','Warcon','Istrebitel','Voltcro','Wirechomp','Thungator', + 'Scalpick','Roostlax','Eagatrice','Theri','Theriscyno','Ghoca','Moclaw','Jawlusk','Tumbna','Plesioskul','Laveel','Thermaque','Thermandril', + 'Tamantula','Spideth','Abomigo','Chillma','Wintber','Evergrowl','Stontler','Balatone','Coayena','Pherosmoke','Octovase','Cthulhurn','Shahood', + 'Karakasa','Grag','Kimokus','Toknight','Cowpy','Cowork','Barbecow','Hoorel','Baishark','Luviu','Shucklony','Dreamer','Nohtyp'] + }, +// start: Ma'adowr +{ + name: "[Gen 9] Ma'adowr Singles", + desc: 'Solomod mainly based on Ancient Egypt and run by BlueRay', threads: [ - `• Crystal: Sevii Islands on Smogon Forums`, - `• Crystal: Sevii Islands spreadsheet`, + `• Spreadsheet`, ], - mod: 'gen2crystalseviiislands', - ruleset: ['Standard', 'Data Mod', 'Crystal: Sevii Islands Mod'], - banlist: ['Uber'], + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], + banlist: ['Arena Trap', 'Ill Wind', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Baton Pass', 'Baxcalibur', 'Espathra', 'Gengarite', 'Lucarionite', 'Mawilite', 'Metagrossite', 'Sablenite', 'Chantyrus Engraving', 'Frustration', 'Hail', 'Hidden Power', 'Last Respects', 'Magic Powder', 'Pursuit', 'Return'], + teambuilderFormat: 'National Dex', + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['MD', 'MD NFE']; // 'EXP' + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Maadowr.']; + } + } + }, + /*onValidateSet(set) { + const problems: string[] = []; + const setHas: {[k: string]: true} = {}; + let species = this.dex.species.get(set.species); + let item = this.dex.items.get(set.item); + let tierSpecies = species; + + if (item.megaEvolves === species.name) { + if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; + } + }, */ + mod: 'maadowr', }, { - name: "[Gen 8] Extreme Reboot", - desc: `A metagame where the types, statuses, moves, abilities, and pokemon are rebooted.`, + name: "[Gen 9] Ma'adowr VGC", + desc: 'Solomod mainly based on Ancient Egypt and run by BlueRay', threads: [ - `Extreme Reboot`, - ], - - mod: 'extremereboot', - ruleset: ['Standard', 'Dynamax Clause', 'Data Mod',], - banlist: ['All Pokemon', 'All Items'], - unbanlist: [ - 'Extreme Ribbit', 'Baobloss', 'Tenquarrel', 'Tradituki', 'Hibarrage', 'Pumking', 'Carboneichus', 'Calmengo', 'Paciphal', 'Hullacane', 'Cylindrake', - 'Efflor', 'Rantler', 'Zeploom', 'Terraphi', 'Stratophi', 'Pelaphi', 'Sunmola', 'Phantahawk', 'Memilifyy', 'Plantadiomicrisa', 'Terrahephas', 'Parvualias', - 'Rancicoon', 'Meditoid', 'Yukinooh', 'Misausmia', 'Pavronin', 'Kraklone', 'Crustair', 'Yulisse', 'Totodem', 'Persebloom', 'Persebloom-Frost', 'Hawkmorph', - 'Gallurise', 'Hensomnia', 'Protectonic', 'Crowbotic', 'Sponjourner', 'Emajanaja', 'Zenphin', 'Technophin', 'Beavair', 'Gyozumo', 'Gyozumo-Summer', - 'Onlaxy', 'Infinistar', 'Guareye', 'Curuprowl', 'Fertiri', 'Ruinne', 'Tantton', 'Crimsoil', 'Stakstok', 'Lychy', 'Onigashiba', 'Lunsura', 'Galactagon', - 'Axolacred', 'Dimetrogem', 'Anhaflara', 'Stormanos', 'Alchemeel', 'Alchemeel-Offense', 'Rasteal', 'Nailberg', 'Hoolican', 'Anchorage', 'Nosferanguis', - 'Pontiac', 'Sclam', 'Cicaguren', /*'Bozunami', 'Cryptice',*/ 'Mekangiras', 'Mononokero', 'Surfright', 'Potsworth', 'Cloudim', 'Salamoon', 'Salamoon-Allegro', - 'Gokaeru', 'Himekuji', 'Guroteserp', 'Galaxea', 'Galaxea-Complete', 'Pegathemum', 'Pegathemum-Complete', 'Cyrome-Book', 'Cyrome-Scribe', 'Cyrome-Author', - 'Darkira', 'Darkira-Ancient', 'Lakera', 'Lakera-Ancient', 'Mew 3.0', 'Solamateru', 'Jirachi-Extreme', - 'Blood Vial', 'Calming Salt', 'Cursed Orb', 'Emblematic Scarf', 'Enigmatic Shield', 'Fell Scythe', 'Gospel Notes', 'Life Gem', 'Maid Dress', 'Metalmorph', - 'Pokemon Standard', 'Power Stone', 'Seasons Gem', 'Tricky Hourglass', 'Platinum Orb', 'Iridescent Orb', 'Frosted Seed', - ], - onModifySpeciesPriority: 2, - onModifySpecies(species, target, source, effect) { - if (!target) return; // Chat command - if (effect && ['imposter', 'transform'].includes(effect.id)) return; - if (species.id !== 'extremeribbit') return; - const types = [...new Set(target.baseMoveSlots.slice(0, 2).map(move => this.dex.moves.get(move.id).type))]; - return {...species, types: types}; + `• Spreadsheet`, + ], + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod'], + banlist: ['Frustration', 'Hail', 'Hidden Power', 'Magic Powder', 'Pursuit', 'Return'], + teambuilderFormat: 'National Dex', + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['MD', 'MD NFE']; // 'EXP' + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Maadowr.']; + } + } }, - onSwitchIn(pokemon) { - if (pokemon.species.id === 'extremeribbit') return; - this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]'); + /*onValidateSet(set) { + const problems: string[] = []; + const setHas: {[k: string]: true} = {}; + let species = this.dex.species.get(set.species); + let item = this.dex.items.get(set.item); + let tierSpecies = species; + + if (item.megaEvolves === species.name) { + if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; + } + }, */ + mod: 'maadowr', + }, + { + name: "[Gen 9] Ma'adowr VGC Restricted", + desc: 'Solomod mainly based on Ancient Egypt and run by BlueRay', + threads: [ + `• Spreadsheet`, + ], + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod', 'Limit Two Restricted'], + banlist: ['Frustration', 'Hail', 'Hidden Power', 'Magic Powder', 'Pursuit', 'Return'], + restricted: ['Restricted Legendary'], + teambuilderFormat: 'National Dex', + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['MD', 'MD NFE', 'MD Ubers', 'EXP2']; // 'EXP' + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Maadowr.']; + } + } }, + mod: 'maadowr', }, + // start: Lost Zone { - name: "[Gen 8] Fusion Evolution UU", - mod: "gen8feuu", - desc: [ - `Fusion Evolution Under Used: A micrometa Pet Mod aiming to create more-balanced-than-usual "Pokemon Fusions" with unique abilities.` - ], + name: "[Gen 9] Ma'adowr VGC Lost Zone", + desc: 'Solomod mainly based on cryptids, myths, and spiritualism and run by BlueRay', threads: [ - `• Fusion Evolution Under Used on Smogon Forums`, - `• Spreadsheet`, - ], - ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'All Pokemon', 'Red Orb', 'Baton Pass', 'Ninjacross + Heracronite', 'Kokovoir + Gardevoirite', 'Salamencite', 'Charizardite Y', 'Blue Orb', 'Wishirupti + Cameruptite', 'Mawilite', 'Gastrocham + Medichamite', 'Manectite', 'Herasir + Heracronite', 'Herasir + Pinsirite', 'Light Ball', 'Gengarite', 'Sablemime + Sablenite', - ], - unbanlist: [ - 'Volquag', 'Toxalure', 'Kingtsar', 'Tanette', 'Slowton', - 'Flaant', 'Umbat', 'Chomplim', 'Chomplim-Mega', 'Xotalion', 'Miemie', 'Dusking', 'Jelliswine', - 'Pigapult', 'Lycanserker-Dusk', 'Tapu Lop', 'Tapu Lop-Mega', 'Dragontler', 'Eternabat', - 'Grimmlurk', 'Manicuno-Galar', 'Yacian-Crowned', 'Cryogolem', 'Stoudrago', - 'Grousle', 'Dongoro', 'Slurpum', - 'Corveot', 'Corveot-Mega', 'Igglyzenta-Crowned', 'Arctres-Galar', 'Garborude', 'Noicity', 'Ferros', - 'Landmaldo-Therian', 'Tentoxys-Defense', 'Strikados-Galar', 'Hooporant', - 'Brontun', 'Mesflame', 'Thornbro-Galar', 'Glidol', 'Pincurchitar', 'Pincurchitar-Mega', 'Snortine', 'Flygalge', - 'Absable', 'Absable-Mega-X', 'Absable-Mega-Y', 'Scolisharp', 'Ninjacross', 'Gossephalon', 'Dracodoom', - 'Dracodoom-Mega', 'Toucosta', 'Weezlord-Galar', 'Sableior', 'Sableior-Mega', 'Sableior-Meteor', 'Sableior-Meteor-Mega', - 'Eeluk', 'Maroligatr-Alola', 'Frozerade', - 'Hattaka', 'Glasnow', 'Glasnow-Mega', 'Kokovoir', 'Kyottler', 'Clawliwrath', - 'Meloslash', 'Meloslash-Melee', 'Tornachamp', 'Cofazor', 'Cofazor-Mega', 'Talonsyl', 'Heatki', - 'Sirsola', 'Noze-Dawn-Wings', 'Noze-Ultra', 'Bruxray', 'Kingdeedee', 'Tapu Koma', 'Hawlazzle', - 'Whimsilotic', 'Vullacham', 'Vullacham-Mega', 'Dracolix', 'Dracolix-Mega', 'Serpanadel', 'Accelest', 'Buzzeggutor-Alola', - 'Roaramp', 'Roaramp-Mega', 'Glakiss', 'Glakiss-Mega', 'Leafdon', - 'Crustboar', 'Paracoal', 'Arctovic', 'Altarizard', 'Altarizard-Mega-X', 'Altarizard-Mega', 'Sandamar-Alola', - 'Jirachonator', 'Dredvul', 'Druddifini', 'Swannamence', 'Tyranette-Eternal', - 'Lurodactyl', 'Lurodactyl-Mega', 'Ninelands-Alola', 'Aurorona', 'Monferpa-Unbound', 'Gigacrab', 'Rosenaught', 'Keclyrex-Shadow', - 'Regibee', 'Regibee-Mega', 'Sigileye', 'Darmearna', 'Mr. Ace', 'Deciduskorch', 'Hypnakart', 'Zerclef', - 'Exeggutor-Prime', 'Porygrigus', 'Golisotops', - 'Avarupt', 'Avarupt-Mega', 'Goatitar', 'Goatitar-Mega', 'Fraxshadow', 'Pherogonga', 'Crawmise', 'Wishirupti', - - 'Torranadus-Therian', 'Togetops', 'Toxicargo', 'Claylamar', 'Vishitomb', 'Swampflora', 'Swampflora-Mega', 'Swalurchin', 'Serpeblim', - 'Azekrow', 'Trapeino', 'Goodevoir', 'Goodevoir-Mega', 'Duramaw', 'Rhybite', 'Oricolyph-Sensu', - 'Grapplor', 'Masquerajah', 'Litleesect', 'Bearyx', 'Fetchey', 'Audiyem', 'Audiyem-Mega', - 'Eelektoad', 'Dialgast', 'Galsola', 'Galsola-Mega', 'Genebro-Galar', 'Hatterune', - 'Deodon-Attack', 'Sharpiskorch', "Sharpiskorch-Mega", "Gourninja", "Cleracross", "Cleracross-Mega", "Aromarel", "Lycansian", - 'Landowak-Alola', 'Emolggron', 'Emolggron-Mega', 'Metagon', 'Hoopagigas-Unbound', 'Nashifu', 'Cramotricity', 'Raibat', 'Darmanitan-Prime', - 'Zarapex', 'Pingar', 'Pingar-Mega', 'Kommo-tot', 'Rotokyu', 'Krookogatr', 'Venuroar', 'Venuroar-Mega', 'Klefilego', 'Rhychomp-Mega', 'Rhychomp', - 'Mr. Basc', 'Gastrocham', 'Manditop', 'Mienpa', 'Vikadrill', - 'Venoqueen', 'Arcalie', 'Yangarde', - 'Xurkirat', 'Golneton', 'Alakannon', 'Alakannon-Mega', 'Kingfezant', 'Googersby', - 'Dhelarina', 'Flychu-Alola', 'Haxel', 'Frossharp', 'Tyrantricity-Low-Key', - 'Champlume', 'Pyraskewda', 'Rotofable', 'Harisect', 'Tapu Pilo', 'Appletom-Wash', 'Phancrozma-Dawn-Wings', 'Phancrozma-Ultra', - 'Toxislash-Alola', 'Tentaterra', 'Minimie', 'Tsarant', 'Golevish-Alola', - 'Manecpig', 'Herasir', 'Magmovire', 'Giga Fini', - 'Impert-Female', 'Impert-Female-Mega', 'Koalicuno-Galar', 'Weezking-Galar', 'Ferrocario', 'Ferrocario-Mega', 'Mukremie', 'Acceldrill', - - 'Silvino-Bug', 'Silvino-Dark', 'Silvino-Dragon', 'Silvino-Electric', 'Silvino-Fairy', 'Silvino-Fighting', - 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Ghost', 'Silvino-Grass', 'Silvino-Ground', 'Silvino-Ice', - 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino-Steel', 'Silvino-Water', 'Silvino', - - /*'Silvino-Bug-Mega', 'Silvino-Dark-Mega', 'Silvino-Dragon-Mega', - 'Silvino-Electric-Mega', 'Silvino-Fairy-Mega', 'Silvino-Fighting-Mega', - 'Silvino-Fire-Mega', 'Silvino-Flying-Mega', 'Silvino-Ghost-Mega', - 'Silvino-Grass-Mega', 'Silvino-Ground-Mega', 'Silvino-Ice-Mega', - 'Silvino-Poison-Mega', 'Silvino-Psychic-Mega', 'Silvino-Rock-Mega', - 'Silvino-Steel-Mega', 'Silvino-Water-Mega',*/ 'Silvino-Mega', - - 'Litleesect-Douse', 'Litleesect-Shock', 'Litleesect-Burn', 'Litleesect-Chill', - 'Genebro-Galar-Douse', 'Genebro-Galar-Shock', 'Genebro-Galar-Burn', 'Genebro-Galar-Chill', - - - 'Appledam', 'Regidurr', 'Duskoma', 'Fraxblade', 'Igglycian-Crowned', - 'Eiscudile', 'Carcannon', 'Lapfisk', 'Whisdur', 'Emposerker', 'Salasian-Alola', 'Salasian-Alola-Mega', - "Pelilicky", "Zaponaw-Galar", "Yandos", "Mudscash", "Woopquaza-Mega", "Woopquaza", "Qwilsimian", "Buzzvine", "Solabat", - "Jellopod", "Jellopod-F", "Espetops", "Regigoss", "Nihitrio", - "Ferropion", "Scytic", "Dragancie", "Dragancie-Mega", "Yanturne", "Emberajah", - "Tornett-Alola", "Togelot", "Aegix", "Dugflame", "Mr. Gar", "Spewtwo", "Spewtwo-Mega-X", "Spewtwo-Mega-Y", - "Krowtom", "Sablemime", "Lycaking-Dusk", - "Victreegeist-Small", "Dragerigus", "Drudlinks", "Oricroak", "Deciduvolt", - - 'Corveotto', 'Torraaffy', 'Rosadin', 'Mr. Boot-Galar', 'Palpitrik', 'Pikabat', 'Krokocroco', 'Ivycat', 'Tranquorino', 'Kadabeak', 'Vibrachu', 'Chokloom', 'Magmabuzz', 'Mr. Haunt-Galar', "Dartbug", - 'Mariwick', 'Krabsweet', 'Slowmite', 'Eebat', 'Gibloon', 'Mieyu', 'Duspoke', 'Frillnub', 'Dreepig', 'Meowruff-Galar', 'Golidimp', 'Panchanpy', 'Shroolix', 'Noixel', 'Pidgeidee', 'Bronlin', 'Seedpoke-Galar', 'Glitoy', 'Munchyke', 'Venipawn', 'Krelpinch', 'Tirtipek', 'Grinamo', 'Cubodile', 'Snodew', 'Claunchiwag', 'Scymask', 'Fletchee', 'Farsola-Galar', 'Cottonas', 'Snipole', 'Maritten', 'Snogepi', 'Hippee', 'Dwepig', 'Parycoly', 'Charblu', 'Inkshrew-Alola', 'Chewkit', 'Duckgon', 'Larvaura', 'Crabrola', 'Chespew', 'Rowlipede', 'Scor Jr.', 'Porymask', 'Wimbuto', 'Larkiddo', 'Bergmel', - 'Croagma', 'Inktoy', 'Sunkip', 'Sniloon', 'Rhyble', 'Goolts', 'Clobbgar', 'Sursfant', 'Hatamask-Galar', 'Tynapole', "Meowruff", "Carvipede", "Froakaboo", "Spritdoof", "Beldino", "Pibat", "Darumaka-Prime", "Totosand", "Bulbalit", 'Vullarogue', 'Grubbur', 'Purrlithe', 'Venoran-F', 'Zubnemite', 'Abripek', 'Nidove-M', 'Gooby', 'Pinchu', 'Buixew', 'Pawnrunt', 'Tyrunxel', 'Shellitite', 'Oddchop', 'Makuras', 'Litlokuda', 'Croagshrew-Alola', 'Tentatwig', 'Magkid', 'Elecoink', 'Ferrolu', 'Koffipoke-Galar', 'Shelbur', 'Grimcery', - 'Burmlin', 'Axedge', 'Rolypek', 'Piplouth-Galar', 'Bagouth-Alola', "Mudboach", "Lickigull", "Frillopod", "Frillopod-F", "Eevuto", "Yannea", "Cupig", "Digling", "Gas Jr.", "Rockoran-M", "Rowbbin", "Maskrelp", "Bellaboo-Small", - 'Exeggcute', - ], + `• Spreadsheet`, + ], + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod'], + banlist: ['Frustration', 'Hail', 'Hidden Power', 'Magic Powder', 'Pursuit', 'Return'], + teambuilderFormat: 'National Dex', + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['LZ', 'LZ NFE']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Lost Zone.']; + } + } + }, + mod: 'maadowrlostzone', }, + // end: Ma'adowr { - name: "[Gen 8] Fusion Evolution RU", - mod: "gen8feuu", - desc: [ - `Fusion Evolution Rarely Used: A micrometa Pet Mod aiming to create even-more-balanced-than-usual "Pokemon Fusions" with unique abilities.` - ], - threads: [ - `• Fusion Evolution Rarely Used on Smogon Forums`, - `• Spreadsheet`, - ], - ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'All Pokemon', 'Baton Pass', 'Gardevoirite', 'Mawilite', 'Cameruptite', 'Scizorite', 'Glalitite', 'Sablenite', 'Lopunnite', 'Garchompite', 'Venusaurite', 'Pinsirite', 'Medichamite', 'Alakazite', 'Beedrillite', 'Manectite', 'Herasir + Heracronite', 'Charizardite Y', 'Charizardite X', 'Lucarionite', 'Swannamence + Salamencite', 'Diancite', 'Gengarite', 'Sablemime + Sablenite', - ], - unbanlist: [ - 'Torranadus-Therian', 'Togetops', 'Toxicargo', 'Claylamar', 'Vishitomb', 'Swampflora', 'Swampflora-Mega', 'Swalurchin', 'Serpeblim', - 'Azekrow', 'Trapeino', 'Goodevoir', 'Duramaw', 'Rhybite', 'Oricolyph-Sensu', - 'Grapplor', 'Masquerajah', 'Litleesect', 'Bearyx', 'Fetchey', 'Audiyem', 'Audiyem-Mega', - 'Eelektoad', 'Dialgast', 'Galsola', 'Galsola-Mega', 'Hatterune', - 'Deodon-Attack', 'Sharpiskorch', "Sharpiskorch-Mega", "Gourninja", "Cleracross", "Cleracross-Mega", "Aromarel", "Lycansian", - 'Landowak-Alola', 'Emolggron', 'Emolggron-Mega', 'Metagon', 'Hoopagigas-Unbound', 'Nashifu', 'Cramotricity', 'Raibat', 'Darmanitan-Prime', - 'Zarapex', 'Pingar', 'Kommo-tot', 'Rotokyu', 'Krookogatr', 'Venuroar', 'Klefilego', 'Rhychomp', - 'Mr. Basc', 'Gastrocham', 'Manditop', 'Mienpa', 'Vikadrill', - 'Venoqueen', 'Arcalie', 'Yangarde', - 'Xurkirat', 'Golneton', 'Alakannon', 'Kingfezant', 'Googersby', - 'Dhelarina', 'Flychu-Alola', 'Haxel', 'Frossharp', 'Tyrantricity-Low-Key', - 'Champlume', 'Pyraskewda', 'Rotofable', 'Harisect', 'Tapu Pilo', 'Appletom-Wash', 'Phancrozma-Dawn-Wings', 'Phancrozma-Ultra', - 'Toxislash-Alola', 'Tentaterra', 'Minimie', 'Tsarant', 'Golevish-Alola', - 'Manecpig', 'Herasir', 'Magmovire', 'Giga Fini', - 'Impert-Female', 'Impert-Female-Mega', 'Koalicuno-Galar', 'Weezking-Galar', 'Ferrocario', 'Mukremie', 'Acceldrill', - - 'Tapu Lop', 'Absable', 'Absable-Mega-X', 'Cofazor', 'Lurodactyl', 'Lurodactyl-Mega', 'Wishirupti', 'Hypnakart', 'Talonsyl', 'Paracoal', 'Avarupt', 'Pherogonga', - 'Hawlazzle', 'Glakiss', 'Glasnow', 'Glasnow-Mega', 'Dusking', 'Strikados-Galar', 'Regibee', - 'Toxalure', 'Pigapult', 'Eternabat', 'Goatitar', 'Goatitar-Mega', 'Altarizard', 'Serpanadel', 'Crustboar', 'Flaant', 'Keclyrex-Shadow', 'Frozerade', 'Sirsola', 'Snortine', - 'Swannamence', 'Vullacham', - - 'Silvino-Bug', 'Silvino-Dark', 'Silvino-Dragon', 'Silvino-Electric', 'Silvino-Fairy', 'Silvino-Fighting', - 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Ghost', 'Silvino-Grass', 'Silvino-Ground', 'Silvino-Ice', - 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino-Steel', 'Silvino-Water', 'Silvino', 'Silvino-Mega', - 'Litleesect-Douse', 'Litleesect-Shock', 'Litleesect-Burn', 'Litleesect-Chill', - - 'Appledam', 'Regidurr', 'Duskoma', 'Fraxblade', 'Igglycian-Crowned', - 'Eiscudile', 'Carcannon', 'Lapfisk', 'Whisdur', 'Emposerker', 'Salasian-Alola', 'Salasian-Alola-Mega', - "Pelilicky", "Zaponaw-Galar", "Yandos", "Mudscash", "Woopquaza-Mega", "Woopquaza", "Qwilsimian", "Buzzvine", "Solabat", - "Jellopod", "Jellopod-F", "Espetops", "Regigoss", "Nihitrio", - "Ferropion", "Scytic", "Dragancie", "Yanturne", "Emberajah", - "Tornett-Alola", "Togelot", "Aegix", "Dugflame", "Mr. Gar", "Spewtwo", "Spewtwo-Mega-X", "Spewtwo-Mega-Y", - "Krowtom", "Sablemime", "Lycaking-Dusk", - "Victreegeist-Small", "Dragerigus", "Drudlinks", "Oricroak", "Deciduvolt", - - 'Corveotto', 'Torraaffy', 'Rosadin', 'Mr. Boot-Galar', 'Palpitrik', 'Pikabat', 'Krokocroco', 'Ivycat', 'Tranquorino', 'Kadabeak', 'Vibrachu', 'Chokloom', 'Magmabuzz', 'Mr. Haunt-Galar', "Dartbug", - 'Mariwick', 'Krabsweet', 'Slowmite', 'Eebat', 'Gibloon', 'Mieyu', 'Duspoke', 'Frillnub', 'Dreepig', 'Meowruff-Galar', 'Golidimp', 'Panchanpy', 'Shroolix', 'Noixel', 'Pidgeidee', 'Bronlin', 'Seedpoke-Galar', 'Glitoy', 'Munchyke', 'Venipawn', 'Krelpinch', 'Tirtipek', 'Grinamo', 'Cubodile', 'Snodew', 'Claunchiwag', 'Scymask', 'Fletchee', 'Farsola-Galar', 'Cottonas', 'Snipole', 'Maritten', 'Snogepi', 'Hippee', 'Dwepig', 'Parycoly', 'Charblu', 'Inkshrew-Alola', 'Chewkit', 'Duckgon', 'Larvaura', 'Crabrola', 'Chespew', 'Rowlipede', 'Scor Jr.', 'Porymask', 'Wimbuto', 'Larkiddo', 'Bergmel', - 'Croagma', 'Inktoy', 'Sunkip', 'Sniloon', 'Rhyble', 'Goolts', 'Clobbgar', 'Sursfant', 'Hatamask-Galar', 'Tynapole', "Meowruff", "Carvipede", "Froakaboo", "Spritdoof", "Beldino", "Pibat", "Darumaka-Prime", "Totosand", "Bulbalit", 'Vullarogue', 'Grubbur', 'Purrlithe', 'Venoran-F', 'Zubnemite', 'Abripek', 'Nidove-M', 'Gooby', 'Pinchu', 'Buixew', 'Pawnrunt', 'Tyrunxel', 'Shellitite', 'Oddchop', 'Makuras', 'Litlokuda', 'Croagshrew-Alola', 'Tentatwig', 'Magkid', 'Elecoink', 'Ferrolu', 'Koffipoke-Galar', 'Shelbur', 'Grimcery', - 'Burmlin', 'Axedge', 'Rolypek', 'Piplouth-Galar', 'Bagouth-Alola', "Mudboach", "Lickigull", "Frillopod", "Frillopod-F", "Eevuto", "Yannea", "Cupig", "Digling", "Gas Jr.", "Rockoran-M", "Rowbbin", "Maskrelp", "Bellaboo-Small", - 'Exeggcute', - ], + name: "[Gen 9] Mega Mania", + mod: "megamania", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod'], + banlist: ['ND Uber', 'ND AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Kings Rock', 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail'], }, { - name: "[Gen 8] Fusion Evolution NU", - mod: "gen8feuu", + name: "[Gen 1] Metronome Battle", + mod: "gen1metronome", + ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Desync Clause Mod', 'Sleep Clause Mod', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Endless Battle Clause', 'Max Team Size = 1'], + banlist: [`Mewtwo`, 'Unreleased', 'Unobtainable', 'Nonexistent'], + unbanlist: [`Mew`, `MissingNo.`], + onValidateSet(set) { + if (set.moves.length !== 1 || this.dex.moves.get(set.moves[0]).id !== 'metronome') { + return [`${set.name || set.species} has illegal moves.`, `(Pok\u00e9mon can only have one Metronome in their moveset)`]; + } + }, + }, + { + name: "[Gen 9] Monopet", desc: [ - `Fusion Evolution Never Used: A micrometa Pet Mod aiming to create excessively-more-balanced-than-usual "Pokemon Fusions" with unique abilities.` + `Monopet: A Gen 9 Solomod where you can only use teams consisting of the same kind of pet.`, ], threads: [ - `• Fusion Evolution Never Used on Smogon Forums`, - `• Spreadsheet`, + `• Post in the Solomods Megathread`, + `• Spreadsheet`, ], - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], + mod: 'solopet', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod'], banlist: [ - 'All Pokemon', 'Baton Pass', 'Salamencite', 'Abomasite', 'Absolite', 'Medichamite', 'Lopunnite', 'Diancite', 'Gengarite', 'Sablemime + Sablenite', - ], - unbanlist: [ - 'Rhybite', - 'Appledam', 'Regidurr', 'Duskoma', 'Fraxblade', 'Igglycian-Crowned', - 'Eiscudile', 'Carcannon', 'Lapfisk', 'Whisdur', 'Emposerker', 'Salasian-Alola', - "Pelilicky", "Zaponaw-Galar", "Yandos", "Mudscash", "Woopquaza-Mega", "Woopquaza", "Qwilsimian", "Buzzvine", "Solabat", - "Jellopod", "Jellopod-F", "Espetops", "Regigoss", "Nihitrio", - "Ferropion", "Scytic", "Dragancie", "Yanturne", "Emberajah", - "Tornett-Alola", "Togelot", "Aegix", "Dugflame", "Mr. Gar", "Spewtwo", "Spewtwo-Mega-X", "Spewtwo-Mega-Y", - "Victreegeist-Small", "Dragerigus", "Drudlinks", "Oricroak", "Deciduvolt", - - 'Claylamar', 'Vishitomb', 'Swampflora', 'Swampflora-Mega', 'Azekrow', 'Trapeino', 'Bearyx', 'Fetchey', "Aromarel", 'Googersby', 'Harisect', - 'Absable', 'Tapu Lop', 'Hypnakart', 'Hawlazzle', 'Glasnow', 'Paracoal', - 'Swannamence', 'Vullacham', - "Krowtom", "Sablemime", "Lycaking-Dusk", - - 'Silvino-Bug', 'Silvino-Electric', 'Silvino-Fighting', - 'Silvino-Fire', 'Silvino-Flying', 'Silvino-Grass', 'Silvino-Ice', - 'Silvino-Poison', 'Silvino-Psychic', 'Silvino-Rock', 'Silvino', 'Silvino-Mega', - - 'Corveotto', 'Torraaffy', 'Rosadin', 'Mr. Boot-Galar', 'Palpitrik', 'Pikabat', 'Krokocroco', 'Ivycat', 'Tranquorino', 'Kadabeak', 'Vibrachu', 'Chokloom', 'Magmabuzz', 'Mr. Haunt-Galar', "Dartbug", - 'Mariwick', 'Krabsweet', 'Slowmite', 'Eebat', 'Gibloon', 'Mieyu', 'Duspoke', 'Frillnub', 'Dreepig', 'Meowruff-Galar', 'Golidimp', 'Panchanpy', 'Shroolix', 'Noixel', 'Pidgeidee', 'Bronlin', 'Seedpoke-Galar', 'Glitoy', 'Munchyke', 'Venipawn', 'Krelpinch', 'Tirtipek', 'Grinamo', 'Cubodile', 'Snodew', 'Claunchiwag', 'Scymask', 'Fletchee', 'Farsola-Galar', 'Cottonas', 'Snipole', 'Maritten', 'Snogepi', 'Hippee', 'Dwepig', 'Parycoly', 'Charblu', 'Inkshrew-Alola', 'Chewkit', 'Duckgon', 'Larvaura', 'Crabrola', 'Chespew', 'Rowlipede', 'Scor Jr.', 'Porymask', 'Wimbuto', 'Larkiddo', 'Bergmel', - 'Croagma', 'Inktoy', 'Sunkip', 'Sniloon', 'Rhyble', 'Goolts', 'Clobbgar', 'Sursfant', 'Hatamask-Galar', 'Tynapole', "Meowruff", "Carvipede", "Froakaboo", "Spritdoof", "Beldino", "Pibat", "Darumaka-Prime", "Totosand", "Bulbalit", 'Vullarogue', 'Grubbur', 'Purrlithe', 'Venoran-F', 'Zubnemite', 'Abripek', 'Nidove-M', 'Gooby', 'Pinchu', 'Buixew', 'Pawnrunt', 'Tyrunxel', 'Shellitite', 'Oddchop', 'Makuras', 'Litlokuda', 'Croagshrew-Alola', 'Tentatwig', 'Magkid', 'Elecoink', 'Ferrolu', 'Koffipoke-Galar', 'Shelbur', 'Grimcery', - 'Burmlin', 'Axedge', 'Rolypek', 'Piplouth-Galar', 'Bagouth-Alola', "Mudboach", "Lickigull", "Frillopod", "Frillopod-F", "Eevuto", "Yannea", "Cupig", "Digling", "Gas Jr.", "Rockoran-M", "Rowbbin", "Maskrelp", "Bellaboo-Small", - 'Exeggcute', + 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', + 'Shed Tail', 'Power Construct', 'Sneasler', 'Mewtwo', 'Zacian', 'Zamazenta', 'Naganadel', 'Palkia-Origin', 'Spectrier', 'Chi-Yu', + 'Dracovish', 'Dragapult', 'Roaring Moon', 'Groudon', 'Miraidon', 'Koraidon', 'Zygarde-Base', 'Rayquaza', 'Battle Bond', 'Greninja-Bond', ], + onValidateTeam(team, format, teamHas) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + let era : string[] = []; + let allowedTiers = ['Birds', 'Cats', 'Dogs', 'Farm', 'Fish', 'Fox', 'Frog', 'Lizard', 'Rock', 'Rodent', 'Turtle']; + for (const set of team) { + let template = this.dex.species.get(set.species); + let tier = template.tier; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Solopet.']; + } + if (!(era.includes(tier))) { + era.push(tier) + } + } + if (era.length > 1) return ['Each Pokemon needs to be from the same category.']; + }, }, { - name: "[Gen 1] FutureProofing", - desc: `[Gen 1] FutureProofing: Adapting Dark, Steel, and Fairy-type moves and Pokemon to the Gen 1 OU metagame.`, - threads: [ - `• FutureProofing on Smogon Forums`, - ], - mod: 'gen1futureproofing', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber'], - unbanlist: ['Tyranitar', 'Gardevoir', 'Escavalier', 'Karrablast', 'Ralts', 'Kirlia', 'Pupitar', 'Larvitar', - 'Snarl', 'Steel Wing', 'Strange Steam', - 'Deino', 'Zweilous', 'Hydreigon', 'Scizor', 'Cottonee', 'Whimsicott', - 'Nature\'s Madness', 'Fake Tears', 'Gear Up', - 'Steelix', 'Spiritomb', 'Swablu', 'Altaria', - 'Fleur Cannon', 'Taunt', 'Heavy Slam', - 'Yveltal', 'Skarmory', 'Tapu Koko', - 'Lash Out', 'Crafty Shield', 'Sunsteel Strike', - 'Cacnea', 'Cacturne', 'Duraludon', 'Milcery', 'Alcremie', - 'Zigzagoon-Galar', 'Linoone-Galar', 'Obstagoon', 'Stunfisk-Galar', 'Mimikyu', 'Mimikyu-Busted', - 'Oshawott', 'Dewott', 'Samurott-Hisui', 'Riolu', 'Lucario', 'Popplio', 'Brionne', 'Primarina', - 'Grimmsnarl', 'Impidimp', 'Morgrem', 'Sylveon', 'Diglett-Alola', 'Dugtrio-Alola', - 'Magnezone', 'Houndour', 'Houndoom', 'Cutiefly', 'Ribombee', - 'Zarude', 'Zarude-Dada', 'Vulpix-Alola', 'Ninetales-Alola', 'Piplup', 'Prinplup', 'Empoleon', - ], + name: "[Gen 1] Moonside", + desc: `[Gen 1] Moonside: Welcome to the otherside of RBY.`, + threads: [ + `• Fuzzy Pickles!`, + ], + mod: 'gen1moonside', + ruleset: ['Data Mod'], + banlist: [], + unbanlist: ['Mewtwo', 'Mew'], }, { - name: "[Gen 8] JolteMons", - desc: [ - "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", - ], + name: "[Gen 9] NatDex The Bore", threads: [ - `• Thread on the Smogon Forums`, - `• Spreadsheet`, ], - mod: 'joltemons', - teambuilderFormat: 'OU', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], - unbanlist: ['Dragapult', 'Tornadus-Therian', 'Blaziken', 'Greninja-Ash', 'Moody', 'Shaymin-Sky', 'Kangaskhan-Mega', 'Darmanitan-Galar', 'Metagross-Mega'], - banlist: ['Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', - 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', - 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], + + mod: 'thebore', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause', 'Z-Move Clause', 'Terastal Clause'], + banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'Zen Mode', 'King\'s Rock', 'Light Clay', 'Quick Claw', 'Razor Fang', 'Baton Pass'], + teambuilderFormat: 'National Dex', }, { - name: "[Gen 8] JolteMons UU", - desc: [ - "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", - ], + name: "[Gen 9] NatDex The Bore UU", threads: [ - `• Thread on the Smogon Forums`, - `• Spreadsheet`, - `• Banlist`, ], - mod: 'joltemons', - teambuilderFormat: 'UU', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], - unbanlist: ['Moody', 'Kangaskhan-Mega', 'Darmanitan-Galar'], - banlist: ['OU', 'UUBL', 'Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lucarionite', 'Lugia', 'Lunala', 'Marshadow', 'Metagrossite', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', - 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', - 'Chill Pill G', 'Lopunnite', 'Scizorite', 'Gyaradosite', 'Charizardite Y', 'Charizardite X', 'Pinsirite', 'Heracronite', 'Aerodactylite', 'Alakazite', 'Galladite', 'Gardevoirite', 'Medichamite', 'Diancite', 'Mawilite', 'Beedrillite', 'Swampertite', 'Latiasite', 'Latiosite', 'Tyranitarite', 'Venusaurite', 'Graduation Scale', 'Sablenite', - 'Light Clay', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], + + mod: 'thebore', + ruleset: ['[Gen 9] NatDex The Bore'], + banlist: ['OU', 'UUBL'], + teambuilderFormat: 'National Dex UU', }, { - name: "[Gen 8] JolteMons RU", - desc: [ - "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", - ], - threads: [ - `• Thread on the Smogon Forums`, - `• Spreadsheet`, - `• Banlist`, - ], - mod: 'joltemons', - teambuilderFormat: 'RU', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], - unbanlist: ['Moody', 'Kangaskhan-Mega'], - banlist: ['OU', 'UUBL', 'RUBL', 'UU', 'Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lucarionite', 'Lugia', 'Lunala', 'Marshadow', 'Metagrossite', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', - 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', - 'Chill Pill G', 'Lopunnite', 'Scizorite', 'Gyaradosite', 'Charizardite Y', 'Charizardite X', 'Pinsirite', 'Heracronite', 'Aerodactylite', 'Alakazite', 'Galladite', 'Gardevoirite', 'Medichamite', 'Diancite', 'Mawilite', 'Beedrillite', 'Swampertite', 'Latiasite', 'Latiosite', 'Tyranitarite', 'Venusaurite', 'Graduation Scale', 'Sablenite', - 'Altarianite', 'Chill Pill', 'Relic Charm', 'Drizzle', 'Ampharosite', 'Manectite', 'Pidgeotite', 'Steelixite', 'Aggronite', 'Banettite', 'Sharpedonite', - 'Light Clay', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], + name: "[Gen 9] Patratdex", + desc: `Patratdex: Galvantic's Solomod, containing a new regional dex with a bunch of new stuff, notably 151 Fakemon.`, + mod: 'patratdex', + ruleset: ['Standard NatDex', 'Dynamax Clause', 'Sleep Clause Mod', 'Species Clause', 'Moody Clause', 'Evasion Moves Clause', 'Swagger Clause', 'Baton Pass Clause', 'OHKO Clause', 'Realmon Clause'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z',], + onSwitchIn(pokemon) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + }, }, { - name: "[Gen 8] JolteMons NU", - desc: [ - "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", - ], - threads: [ - `• Thread on the Smogon Forums`, - `• Spreadsheet`, - `• Banlist`, - ], - mod: 'joltemons', - teambuilderFormat: 'NU', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod'], - unbanlist: ['Moody'], - banlist: ['OU', 'UUBL', 'RUBL', 'UU', 'Uber', 'RU', 'NUBL', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Arceus', 'Blazikenite', 'Blastoisinite', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Gengarite', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lucarionite', 'Lugia', 'Lunala', 'Marshadow', 'Metagrossite', 'Mewtwo', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Salamencite', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', 'Zygarde-Base', 'Berserk Gene', 'Eevee-Starter', 'Pikachu-Starter', 'Moody', 'Magearna', 'Spectrier', 'Dracovish', 'Urshifu-Base', - 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Decidium Z', 'Kommonium Z', - 'Chill Pill G', 'Lopunnite', 'Scizorite', 'Gyaradosite', 'Charizardite Y', 'Charizardite X', 'Pinsirite', 'Heracronite', 'Aerodactylite', 'Alakazite', 'Galladite', 'Gardevoirite', 'Medichamite', 'Diancite', 'Mawilite', 'Beedrillite', 'Swampertite', 'Latiasite', 'Latiosite', 'Tyranitarite', 'Venusaurite', 'Graduation Scale', 'Sablenite', - 'Altarianite', 'Chill Pill', 'Relic Charm', 'Drizzle', 'Ampharosite', 'Manectite', 'Pidgeotite', 'Steelixite', 'Aggronite', 'Banettite', 'Sharpedonite', - 'Absolite', 'Audinite', 'Kangaskhanite', 'Sceptilite', 'Cameruptite', 'Ghost Memory', - 'Light Clay', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang'], + name: "[Gen 9] Patratdex Doubles", + desc: `Patratdex: Galvantic's Solomod, containing a new regional dex with a bunch of new stuff, notably 151 Fakemon.`, + mod: 'patratdex', + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Dynamax Clause', 'Sleep Clause Mod', 'Species Clause', 'Moody Clause', 'Evasion Moves Clause', 'Swagger Clause', 'Baton Pass Clause', 'OHKO Clause', 'Realmon Clause'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z',], + onSwitchIn(pokemon) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + }, }, { - name: "[Gen 8] Megas for All: Kalos", - desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Current season is focused on the Kalos dex!", - ], + name: "[Gen 9] Pokémon North, South, East, West", + teambuilderFormat: "National Dex", + desc: 'The largest sprite project ever is now the largest Solomod ever...eventually. Content gradually releases in waves!', threads: [ - `• Megas for All v7 on Smogon Forums`, - `• Spreadsheet`, - `• Wiki` - ], - ruleset: ['Standard NatDex', 'Z-Move Clause', 'Dynamax Clause', 'Mega Data Mod'], - banlist: [ - 'AG', 'Uber', - 'Aegislash', 'Hoopa-Unbound', 'Greninja', - 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', - 'Baton Pass', - 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Quick Claw', + `• `, ], + mod: 'pokemonorthsoutheastwest', + ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause'], onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['NSEW','NSEW2','NSEW3', 'NSEW4', 'NSEW5', 'NSEW6','NSEW7','NSEW8', 'NSEW9', 'NSEW10', 'NSEW11', 'NSEW12', 'NSEW13', 'NSEW14', 'NSEW15']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'Mega' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)') { - return [set.species + ' is not a part of the Kalos Pokédex.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Pokémon North, South, East, and West.']; } } }, - onValidateSet(set) { - const problems: string[] = []; - const setHas: {[k: string]: true} = {}; - let species = this.dex.species.get(set.species); - let item = this.dex.items.get(set.item); - let tierSpecies = species; - - if (item.megaEvolves === species.name) { - if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; - } - }, - mod: 'm4akalos', }, { - name: "[Gen 8] M4A Kalos VGC", - desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Current season is focused on the Kalos dex!", - ], + name: "[Gen 9] Pokémon Go! Go! Tamagotchi!", + desc: 'They did not deserve to be forgotten to Digimon...a Solomod that contains three hundred adult form Tamagotchi!', threads: [ - `• Megas for All v7 on Smogon Forums`, - `• Spreadsheet`, - `• Wiki` - ], - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod'], - banlist: [ - 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa-Unbound', 'Volcanion', - // legalizes Hoopa-Confined, and only Hoopa-Confined, because it has a Mega specific to this season! (confirmed by Blue) + `• `, ], + mod: 'tamagotchi', + ruleset: ['Standard', 'Data Mod', 'Terastal Clause'], onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['Go! Go! Tamagotchi!']; for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'Mega' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)') { - return [set.species + ' is not a part of the Kalos Pokédex.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not a Tamagotchi.']; } } }, - onValidateSet(set) { - const problems: string[] = []; - const setHas: {[k: string]: true} = {}; - let species = this.dex.species.get(set.species); - let item = this.dex.items.get(set.item); - let tierSpecies = species; - - if (item.megaEvolves === species.name) { - if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; - } - }, - mod: 'm4akalos', }, - /*{ - name: "[Gen 8] M4A Sandbox", - desc: ["Megas for All v7 but it's Custom Game. Add custom typings and stats via Sandbox Mod!", - ], - threads: [ - `• Sandbox Mod Usage Guide`, - `• Megas for All v7 on Smogon Forums`, - `• Spreadsheet`, - `• Wiki` - ], - searchShow: false, - // now intended as a custom game-esque format with more freedom for testing - ruleset: ['Team Preview', 'Cancel Mod', 'HP Percentage Mod', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Data Mod', 'Mega Data Mod', 'Sandbox Mod', 'Overflow Stat Mod'], - mod: 'm4asandbox', - },*/ - // { - // name: "[Gen 8] OU Theorymon", - // desc: [ - // "OU Theorymon: A Sword and Shield OU metagame where low-ranked Pokemon are improved to become more viable.", - // ], - // threads: [ - // `• OU Theorymon on Smogon Forums`, - // ], - - // mod: 'outheorymons', - // ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], - // banlist: ['Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass'], - // }, - // { - // name: "[Gen 8] Paleomons", - // desc: [ - // "Paleomons: A Sword and Shield metagame that aims to create a micrometa full of ancient Pokemon." - // ], - // threads: [ - // `• Paleomons on Smogon Forums`, - // ], - - // mod: 'paleomons', - // ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - // banlist: [ - // 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', - // ], - // onValidateTeam(team, format) { - // /**@type {{[k: string]: true}} */ - // let speciesTable = {}; - // let allowedTiers = ['Paleomons', 'Paleomons NFE', 'Paleomons LC']; - // for (const set of team) { - // let template = this.dex.species.get(set.species); - // if (template.tier !== 'Paleomons' && template.tier !== 'Paleomons NFE' && template.tier !== 'Paleomons LC') { - // return [set.species + ' is not legal in the Paleomons format.']; - // } - // } - // }, - // }, { - name: "[Gen 8] Restrictions", - desc: `Restrictions: A metagame made up of brand new Pokémon that are made according to various random and non-random restrictions.`, + name: "[Gen 9] Ponymon", + mod: 'ponymonshowdown', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Data Mod'], + banlist: ['Darkrai', 'ND Uber', 'ND AG'], + unbanlist: ['Gholdengo', 'Kingambit', 'Melmetal', 'Regieleki', 'Roaring Moon', 'Shedinja', 'Terapagos', 'Walking Wake'], + teambuilderFormat: 'National Dex', + }, + { + name: "[Gen 9] Ponymon Ubers", + mod: 'ponymonshowdown', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Ubers Terastal Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Rayquaza Clause'], + banlist: ['Calyrex-Shadow', 'Gengarite'], + teambuilderFormat: 'National Dex Ubers', + }, + { + name: "[Gen 9] Ponymon UU", + mod: 'ponymonshowdown', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Data Mod'], + banlist: ['NDOU', 'UUBL', 'ND Uber', 'ND AG'], + unbanlist: ['Regieleki', 'Shedinja', 'Banette-Mega', 'Ceruledge', 'Clodsire', 'Corviknight', 'Dondozo', 'Garganacl', 'Glimmora', 'Gyarados', 'Iron Crown', 'Iron Hands', 'Latios', 'Pinsir-Mega', 'Tapu Lele', 'Thundurus-Therian', 'Zapdos-Galar'], + teambuilderFormat: 'National Dex UU', + }, + { + name: "[Gen 9] National Dex Strongest State", threads: [ - `• Restrictions on Smogon Forums`, - `• Spreadsheet`, ], - mod: 'restrictions', - ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], - banlist: ['uber', 'ou', 'uubl', 'uu', 'rubl', 'ru', 'nubl', 'nu', 'publ', 'pu', 'zu', 'nfe', /*'lcuber',*/ 'lc', 'cap', 'caplc', 'capnfe', 'ag','past', 'future', 'lgpe'], - teambuilderBans: ['unreleased'], + + mod: 'gen9strong', + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause'/*, 'Para Moves Clause'*/], + banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', + 'Blizzard', 'Explosion', 'Self-Destruct', 'Drizzle', 'Drought', 'Sand Stream', 'Aguav Berry', 'Figy Berry', 'Iapapa Berry', 'Mago Berry', 'Soul Dew', 'Wiki Berry', 'Last Respects', + ], + teambuilderFormat: 'National Dex', }, { - name: "[Gen 8] Signature Restrictions", - desc: `Singature Restrictions: A metagame made up of brand new Pokémon that are made according to various restrictions provided by Pet Mod Users.`, + name: "[Gen 9] National Dex Strongest State Ubers", threads: [ - `• Singature Restrictions on Smogon Forums`, - `• Spreadsheet`, ], - mod: 'signaturerestrictions', - ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], - banlist: ['uber', 'ou', 'uubl', 'uu', 'rubl', 'ru', 'nubl', 'nu', 'publ', 'pu', 'zu', 'nfe', 'lc', 'cap', 'caplc', 'capnfe', 'ag','past', 'future', 'lgpe'], - teambuilderBans: ['unreleased'], + + mod: 'gen9strong', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause'], + banlist: ['AG', 'Baton Pass', 'Blizzard', 'Moody'], + teambuilderFormat: 'National Dex Uber', }, { - name: "[Gen 8] Stereotypes", - mod: "stereotypes", - desc: [ - "Stereotypes: A project that aims to create a micrometa containing a unique new Pokemon for all 171 possible types, with the hope that each mon will use its typing and the options that typing affords well, while still being balanced and interesting.", - ], + name: "[Gen 9] PokeMorty", + desc: `PokeMorty: A Gen 9 Mod made by SDM_0 heavily inspired by the video-game "Pocket Morty".`, threads: [ - `• Stereotypes on Smogon Forums`, - `• Spreadsheet`, + `• Post in Solomods Megathread`, + `• Spreadsheet`, ], - ruleset: ['Standard', 'Dynamax Clause', 'Data Mod'], - banlist: ['Conversion', 'Conversion2', 'Libero', 'Protean', 'Transistor', 'Dragon\'s Maw', 'Steelworker', 'Steely Spirit', 'Color Change', 'Arena Trap', 'Shadow Tag', 'Moody'], - onValidateTeam(team, format) { + mod: 'pokemorty', + ruleset: ['Standard', 'Max Team Size = 5', '!Obtainable Abilities', 'Terastal Clause', '-All Items', 'Data Mod'], + banlist: ['Implode', 'Negative Space', 'Time Dilation', 'Grill Season', 'Use The Light', + 'Unspoken Bond', 'Bird Lover', 'Apex Genius', 'Training Complete', 'Abstracted Form', + 'Higher Education', 'Cell Division', 'Infiltrate', 'Mirror Image', 'Fast Charging', + 'Death Crystal', 'Magic Door', 'Strip Dance', 'Squid Costume', 'Cut the Chut', 'Bold And Daring', + 'Attention', 'Wedgie-Proof', 'Anthocyanin', 'Grade A', 'Always Fresh', 'Present Portal', 'Impersonate', + 'Flavor Combo', 'Apology Video', 'Espionage', 'Entitlement', 'Hypnotize', 'Mouth Off', 'Doze', + 'Traumatize', 'Mind-Numbing Hello', 'Love Bug', 'Stare Down'], + onValidateTeam(team) { let speciesTable = {}; - let allowedTiers = ['ST', 'ST NFE', 'ST LC']; + let allowedTiers = ['PM OU', 'PM NFE', 'PM LC']; + let problems = []; for (const set of team) { let template = this.dex.species.get(set.species); - if ( !allowedTiers.includes(template.tier) ) { - return [set.species + ' is not useable in Stereotypes.']; + if (!allowedTiers.includes(template.tier)) { + problems.push(`${set.species} is not a Morty.`); + } + if (this.dex.abilities.get(set.ability).id !== "noability") { + problems.push(`${set.species} can't have ${set.ability}.`); + } + if (!['bashful', 'docile', 'hardy', 'quirky', 'serious', ''].includes(this.toID(set.nature))) { + problems.push(`${set.species} can't have a non-neutral nature.`); } } + return problems; }, }, - /////////////////////////////////////////////////////////////// - //////////////////////// Solomods ///////////////////////////// - /////////////////////////////////////////////////////////////// { - section: "Solomods", - column: 2, + name: "[Gen 1] RBY Recolored", + threads: [ + `• Document`, + ], + mod: 'gen1recolored', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber'], }, { - name: "[Gen 5] 33 Valuemons", - mod: 'gen5valuemons', - desc: `A Draft-like meta where each Pokemon has a point value, and the team's value cannot exceed 33 points. This tier is not quite finished, but we're working on it!`, + name: "[Gen 9] Rock Bottom", + desc: [ + "Rock Bottom: A micrometa with an extremely low powerlevel and typically common strong tools being thinly distributed.", + ], threads: [ - `• Solomod Post`, - `• Reference Sheet`, - `• Sample Teams`, - `• 33 Valuemons Discord`, - ], - ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause','Sleep Clause Mod','Species Clause','Nickname Clause','OHKO Clause','Evasion Items Clause','Evasion Moves Clause','Baton Pass Stat Clause','Gems Clause','One Starter Clause','One Pseudo Clause','One Legendary Clause','Obtainable','!Obtainable Moves'/* ,'33 Valuemons' */], - banlist: ['King\'s Rock', 'Razor Fang'], - unbanlist: ['Baton Pass'], + `• Post in the Solomods Megathread`, + `• Spreadsheet`, + ], + mod: 'rockbottom', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], onValidateTeam(team, format) { let speciesTable = {}; - let allowedTiers = ['33v']; + let allowedTiers = ['RB']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in 33 Valuemons.']; + return [set.species + ' is not legal in [Gen 9] Rock Bottom.']; } } }, }, - { - name: "[Gen 9] A Golden Experience", - desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, - threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'agoldenexperience', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: [ - 'Uber', 'AG', 'Moody', 'Power Construct', 'King\'s Rock', - 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', - ], - unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], - teambuilderFormat: 'National Dex', - }, - { - name: "[Gen 9] A Golden Experience UU", - desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, - threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'agoldenexperience', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: [ - 'Uber', 'AG', 'OU', 'UUBL', 'Moody', 'Power Construct', 'King\'s Rock', - 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', - 'Drizzle', 'Drought', 'Light Clay', + /*{ + name: "[Gen 8] Roulettemons The Solomod", + desc: `Roulettemons The Solomod: literally roulettemons but a solomod + clean slate micro`, + mod: 'roulettemonsthesolomod', + ruleset: ['Standard NatDex', 'Data Mod'], + banlist: ['All Pokemon'], + unbanlist: [ + 'Spinmadillo', 'Coyoctric', 'Spizelle', 'Fierhog', 'Elatuff', 'Glasyte', 'Bisong', 'Megalo', 'Oysteat', 'Ponymph', 'Hypepion', 'Chickola', 'Skelehawk', 'Catetar', 'Blastquito', 'Hawkward', 'Pandaid', 'Autoad', 'Skelephin', 'Doomossum', 'Llamagic', 'Venoroach', 'Salamados', 'Steelboon', 'Jaguaplume', ], - unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], - teambuilderFormat: 'National Dex UU', - }, + onSwitchIn(pokemon) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + }, + },*/ { - name: "[Gen 9] A Golden Experience RU", - desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, + name: "[Gen 9] Scootopia V.2", + desc: "The second iteration of the hit solomod Scootopia!", threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'agoldenexperience', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: [ - 'Uber', 'AG', 'OU', 'UUBL', 'UU', 'RUBL', 'Moody', 'Power Construct', 'King\'s Rock', - 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', - 'Drizzle', 'Drought', 'Light Clay', + `• Spreadsheet`, ], - unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], - teambuilderFormat: 'National Dex RU', + mod: "scootopia", + ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Data Mod', 'Super Type Moves Rule', 'OHKO Clause'], + banlist: ['All Pokemon', 'Crystal Heart', 'Wild Heart', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Double Team', 'Snow Cloak', 'Sand Veil'], + unbanlist: ["Arbrella", "Krachiten", "Scalaron", "Rantler", "Woolora", "Albatrygon", "Orchile", + "Embuck", "Cindoe", "Cobracotta", "Minillow", "Crossont", "Torgeist", "Platypad", "Lumoth", + "Aurorowl", "Carapex", "Dojodo", "Nunopod", "Zeploom", "Brawnkey", "Salamalix", "Cinnastar", + "MuabBoa", "Sturgard", "Harzodia", "Cyllindrake", "Kodokai", "Electangle", "Dolphena", "Soleron", + "Soleron-Awakened", "Jaegorm", "Jaegorm-Collective", "Elemadillo", "Axolacred", "Roscenti", + "Blunderbusk", "Barracoth", "Jamborai", "Dracoil", "Celespirit", "Noxtrice", "Avastar", + "Faerenheit", "Cellsius", "Kelven", "Salaos", "Morndos", "Pythos", "Corundell", "Quadringo", + "Saphor", "Fenreil", "Efflor", "Flocura", "Flocura-Nexus"], }, { - name: "[Gen 9] A Golden Experience NU", - desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, + name: "[Gen 9] Scootopia V.4", + desc: "The fourth iteration of the hit solomod Scootopia!", threads: [ - `• Spreadsheet for the mod`, + `• Thread`, ], - mod: 'agoldenexperience', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: [ - 'Uber', 'AG', 'OU', 'UUBL', 'UU', 'RUBL', 'RU', 'NUBL', 'Moody', 'Power Construct', 'King\'s Rock', - 'Baton Pass', 'Last Respects', 'Quick Claw', 'Razor Fang', 'Shed Tail', - 'Drizzle', 'Drought', 'Light Clay', - 'Dante\'s Inferno', 'Happy Dance', 'Sticky Web', + mod: "scootopiav4", + ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Data Mod', 'Super Type Moves Rule', 'Super Type Clause'], + banlist: ['All Pokemon', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Double Team', 'Snow Cloak', 'Sand Veil', 'Crystal Heart', 'Wild Heart'], + unbanlist: [ + "Noxtrice", "Sturgard", "Embuck", "Cindoe", "Minillow", "Cinnastar", "Duratreme", + "Sumolug", "Coraking", "Soleron", "Soleron-Awakened", "Zephyrmine", "Jamborai", + "Boreasel", "Skawamud", "Silvuna", "Noxon", "Xiphoil", "Dracoil", + "Celespirit", "Zygola", "Quadringo", "Wingnut", "Corsegeist", "Smeltoise", + "Halbeetle", "Echologos", "Barbolt", "Dojodo", "Zeploom", "Kasappa", + "Cyllindrake", "Arbrella-North" ], - unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], - teambuilderFormat: 'National Dex RU', }, + // { + // name: "[Gen 9] Scootopia Random Battle", + // desc: [ + // "The second iteration of the hit solomod Scootopia! Now in randbats!", + // ], + // threads: [ + // `• Spreadsheet`, + // ], + // ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Data Mod', 'Super Type Moves Rule', 'OHKO Clause'], + // banlist: [], + // team: 'random', + // mod: 'scootopia', + // }, { - name: "[Gen 9] A Golden Experience Doubles", - desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, - threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'agoldenexperience', - gameType: 'doubles', - teambuilderFormat: 'National Dex Doubles', - ruleset: ['Standard NatDex', 'Terastal Clause', 'Dynamax Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: [ - 'DUber', 'Commander', 'Power Construct', 'Coaching', 'Dark Void', 'Swagger', - ], - unbanlist: ['Battle Bond', 'Greninja-Bond', 'Light of Ruin'], + name: "[Gen 9] Shinymons", + desc: `A Pet Mods Room Mod where every Pokemon receives a new Shiny form.`, + mod: 'shinymons', + ruleset: ['Standard', 'Data Preview', '!Team Preview'], + banlist: ['Uber'], + validateSet(set, teamHas) { + let speciesName = set.species; + if (set.shiny) speciesName += "-Shiny"; + set.species = speciesName; + this.dex.data.Pokedex[this.toID(speciesName)].name = speciesName; + return this.validateSet(set, teamHas); + }, + onTeamPreview() { + this.add('clearpoke'); + for (const pokemon of this.getAllPokemon()) { + const details = pokemon.details + .replace(/(Arceus|Genesect|Gourgeist|Pumpkaboo|Xerneas|Silvally|Urshifu|Dudunsparce)(-[a-zA-Z?-]+)?/g, '$1-*') + .replace(/(Zacian|Zamazenta)(?!-Crowned)/g, '$1-*') // Hacked-in Crowned formes will be revealed + .replace(/(Greninja)(?!-Ash)/g, '$1-*'); // Hacked-in Greninja-Ash will be revealed + this.add('poke', pokemon.side.id, details, pokemon.item ? 'item' : ''); + } + this.makeRequest('teampreview'); + }, }, - /* { - name: "[Gen 3] ADV+", - mod: 'gen3advplus', - ruleset: ['Standard', 'Baton Pass Mod', 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod'], - banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain', 'Drizzle', 'Drought', 'Starf Berry', 'Speed Boost + Blaziken'], - }, */ { - name: "[Gen 3] ADV DX OU", - mod: 'gen3advdx', - ruleset: ['Standard', 'Freeze Clause Mod', 'Data Mod'], - banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain', 'Soul Dew', 'Sand Attack', 'Flash', 'Mud-Slap', 'Kinesis', 'Smokescreen'], + name: "[Gen 9] Signaturemons", + desc: `National Dex solomod where new Signature moves are introduced for fully-evolved Pokémon that don't have any.`, + mod: 'signaturemons', + teambuilderFormat: 'National Dex', + ruleset: ['Standard NatDex', 'Event Moves Clause', 'Species Clause', 'Terastal Clause', 'Z-Move Clause'], + /*Tentative restrictions - will work on it later + checkCanLearn(move, template, lsetData, set) { + if (['terablast'].includes(move.id)) return null; //Tera Blast for everyone (except Magikarp, Ditto, Smeargle, Cosmog, Cosmoem and Terapagos) + if (['hiddenpower'].includes(move.id)) return null; //Hidden power for no one (except Unown) + return this.checkCanLearn(move, template, lsetData, set); + },*/ }, { - name: "[Gen 3] ADV DX Doubles", - mod: 'gen3advdx', + name: "[Gen 9] Signaturemons Doubles", + desc: `National Dex solomod where new Signature moves are introduced for fully-evolved Pokémon that don't have any.`, + mod: 'signaturemons', gameType: 'doubles', - ruleset: ['Standard', 'Freeze Clause Mod', 'Data Mod', '!Switch Priority Clause Mod'], - banlist: ['Uber', 'Quick Claw', 'Soul Dew', 'Explosion', 'Self-Destruct', 'Swagger', 'Sand Attack', 'Flash', 'Mud-Slap', 'Kinesis', 'Smokescreen'], - unbanlist: ['Wobbuffet', 'Wynaut'], - }, - { - name: "[Gen 3] ADV Tradebacks", - mod: 'gen3tradebacks', - ruleset: ['Standard', /*'Baton Pass Mod',*/ 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod'], - banlist: ['Uber', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain'], + teambuilderFormat: 'National Dex', + ruleset: ['Standard NatDex', 'Event Moves Clause', 'Species Clause', 'Terastal Clause', 'Z-Move Clause'], }, + /*{ + name: "[Gen 9] Signaturemons Random Doubles", + desc: `National Dex solomod where new Signature moves are introduced for fully-evolved Pokémon that don't have any.`, + mod: 'signaturemons', + gameType: 'doubles', + team: 'random', + ruleset: ['Standard NatDex', 'Event Moves Clause', 'Species Clause', 'Terastal Clause', 'Z-Move Clause'], + },*/ { - name: "[Gen 3] ADV To The Past", - mod: 'gen3advttp', - ruleset: ['Standard', 'One Boost Passer Clause', 'Freeze Clause Mod'], - banlist: ['Uber', 'Smeargle + Ingrain', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Swagger', 'Metal Powder'], - desc: `ADV TTP is a rebalancing of ADV OU with Move buffs, Stat buffs, and different abilities. The aim of this metagame is to create an ADV OU metagame that is even more diverse and fun than it is already. It is limited to Pokemon found in Kanto-Hoenn. Moreover, all Gen 3 mechanics are unchanged.`, - }, - { - name: "[Gen 9] Animemons", - teambuilderFormat: 'National Dex', - desc: `A micrometa full of anime characters.`, - mod: 'animemons', - ruleset: ['Standard NatDex', 'Terastal Clause', 'Data Mod'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['AOU', 'AWIP']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not in this format.']; - } - } + name: "[Gen 9] Spookymod", + desc: [ + "jumpscaare", + ], + threads: [ + `• Spookymod on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause','Spokymod'], + banlist: [], + teambuilderFormat: "National Dex", + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + let f = false; + let ff = false; + for (const set of team) { + if (set.species === 'Flutter Mane') f = true; + else if (set.species === 'Flutter Mane 2') ff = true; + if(f && ff) return ['Did you think you could bring two Flutter Manes to a game? Are you stupid?']; + let template = this.dex.species.get(set.species); + if (template.tier !== 'SM') { + return [set.species + ' is not usable in Spookymod.']; + } + } + }, + mod: 'spookymod', + }, + { + name: "[Gen 9] Spookymod Random Battle", + desc: [ + "jumpscaare", + ], + threads: [ + `• Spookymod on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', '!Team Preview', 'Spokymod'], + banlist: [], + team: 'random', + mod: 'spookymod', + }, + { + name: "[Gen 9] Stadium YB 3v3 Random Battle", + desc: [ + "Stadium YB: A randomized metagame where each player is given a set of rental Pokemon to battle with." + ], + threads: [ + `• Stadium YB in the Solomods Megathread`, + ], + mod: 'stadiumyb', + team: 'random', + bestOfDefault: true, + ruleset: [ + 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', + 'Species Clause', 'Dynamax Clause', 'Exact HP Mod', 'Force Open Team Sheets', 'Picked Team Size = 3', 'Max Team Size = 6', + ], + onSwitchIn(pokemon) { + const speed = pokemon.getStat('spe', false, true); + this.add('-message', `${pokemon.name}'s Speed stat is ${speed}!`); }, }, { - name: "[Gen 9] Balls", - mod: 'mixandmegaballs', - desc: `A hilarious metagame filled with nothing but balls.`, - ruleset: ['Standard', 'Data Mod'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Balls', 'Guns']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' doesnt exist.']; - } - } + name: "[Gen 9] Stadium YB 6v6 Random Battle", + desc: [ + "Stadium YB: A randomized metagame where each player is given a set of rental Pokemon to battle with." + ], + threads: [ + `• Stadium YB in the Solomods Megathread`, + ], + mod: 'stadiumyb', + team: 'random', + bestOfDefault: true, + ruleset: [ + 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', + 'Species Clause', 'Dynamax Clause', 'Exact HP Mod', 'Force Open Team Sheets', 'Picked Team Size = 6', 'Max Team Size = 12', + ], + onSwitchIn(pokemon) { + const speed = pokemon.getStat('spe', false, true); + this.add('-message', `${pokemon.name}'s Speed stat is ${speed}!`); }, }, - /* { - name: "[Gen 9] Bare Bones", - desc: 'bare bones micrometa', - mod: 'barebones', - ruleset: [ - 'Team Preview', 'Nickname Clause', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'Terastal Clause', 'Data Mod', 'Camomons Mod', + // { + // name: "[Gen 9] Super Types OU", + // desc: "The Super Type mechanic from Scootopia, only it's applied to current gen 9 OU.", + // threads: [ + // `• Types + Moves Explained`, + // `• List of Defensive Type Combos`, + // ], + // mod: "supertypesou", + // ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod'], + // }, + { + name: "[Gen 2] Tera Crystal", + desc: ["Tera Crystal- A Gen 2 solomod where the Gen 9 mechanic of Terastallization is added to the game."], + mod: 'gen2teracrystal', + ruleset: ['Standard', 'Data Mod', 'Can Terastal'], + banlist: ['Uber'], + }, + { + name: "[Gen 9] The 3-3-1 Typechart", + desc: [ + "The 3-3-1 Typechart: A solomod that gives every type 3 weaknesses, 3 resistances, and 1 immunity.", + ], + threads: [ + `• Post in the Solomods Megathread`, ], - banlist: ['All Items', 'All Abilities'], - unbanlist: [ - 'Pinch Berry', 'Tsersi Berry', 'Leftovers', 'Silk Scarf', 'Charcoal', 'Mystic Water', 'Miracle Seed', 'Magnet', 'Never-Melt Ice', 'Black Belt', 'Poison Barb', - 'Soft Sand', 'Sharp Beak', 'Twisted Spoon', 'Silver Powder', 'Hard Stone', 'Spell Tag', 'Dragon Fang', 'Black Glasses', 'Metal Coat', 'Fairy Feather', 'Muscle Band', - 'Wise Glasses', 'Exchanger', 'Focus Sash', - 'Desperation', 'Last Stand', 'Appraisal', 'Rejuvenate', 'Recycler', 'Somewhat Reckless', 'Tinted Tactics', 'Intimidate', 'Sceptic', + mod: 'the331typechartg9', + teambuilderFormat: 'National Dex', + ruleset:['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], + banlist: [ + 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', + 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', + 'Slowking-Base', 'Slowbro-Base' ], + onBegin() { + this.add('-message', `Be sure to use /weak to find out everything's new type interactions!`); + }, + }, + { + name: "[Gen 9] Touhoumons", + desc: `2hu`, + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'toho', + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], + banlist: ['Bug Gem', 'Dark Gem', 'Dragon Gem', 'Electric Gem', 'Fairy Gem', 'Fighting Gem', 'Fire Gem', 'Flying Gem', 'Ghost Gem', 'Grass Gem', 'Ground Gem', 'Ice Gem', 'Poison Gem', 'Psychic Gem', 'Rock Gem', 'Steel Gem', 'Water Gem'], + unbanlist: ['Light of Ruin'], + teambuilderFormat: 'National Dex', onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['bbones']; + /**@type {{[k: string]: true}} */ for (const set of team) { let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not in Bare Bones.']; + if (template.tier !== 'Toho') { + return [set.species + ' is not a Touhou character.']; } + if (set.species == 'Cirno-Tanned' && set.ability !== 'Drought') + return ["Cirno-Tanned can only have Drought as its ability."] + if ((set.species !== 'Cirno-Tanned' && set.species !== 'Cirno') && set.ability === 'Drought') + return ["Only Cirno-Tanned can have Drought as its ability."] } - } - }, */ - { - name: "[Gen 9] Beaftopia", - desc: `[Gen 9] Beaftopia: A meta where the only legal Pokemon are made by Beaf Cultist, the greatest Pet Modder.`, + }, + }, + { + name: "[Gen 9] Touhoumons Doubles", + desc: `2hu`, threads: [ - `• Post in Solomods Megathread`, + `• Spreadsheet for the mod`, ], - mod: 'beaftopia', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod', 'Status Mod'], - banlist: ['King\'s Rock', 'Razor Fang'], + mod: 'toho', + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], + banlist: [], + unbanlist: [], teambuilderFormat: 'National Dex', onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['OU']; + /**@type {{[k: string]: true}} */ for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'BT OU') { - return [set.species + ' is not legal in [Gen 9] Beaftopia.']; + if (template.tier !== 'DToho') { + return [set.species + ' is not a Touhou character.']; } + if (set.species == 'Cirno-Tanned' && set.ability !== 'Drought') + return ["Cirno-Tanned can only have Drought as its ability."] + if ((set.species !== 'Cirno-Tanned' && set.species !== 'Cirno') && set.ability === 'Drought') + return ["Only Cirno-Tanned can have Drought as its ability."] } }, }, { - name: "[Gen 5] Best Wishes from YB", - desc: [ - "Best Wishes from YB: A Gen 5 Solomod where are only Unovan Pokemon are allowed, with them getting many changes.", - ], + name: "[Gen 1] Tradebacks Expanded", threads: [ - `• Post in Solomods Megathread`, + `• Post in Solomods Megathread`, + `• Spreadsheet`, ], - mod: 'gen5unovayb', - ruleset: ['Standard', 'Sleep Moves Clause', 'Swagger Clause', 'Data Mod'], - banlist: ['Uber', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist', 'Hidden Power', 'Baton Pass'], + mod: 'gen1tradebacksexpanded', + ruleset: ['Standard'], + banlist: ['Uber'], }, { - name: "[Gen 9] ChatBats", - desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`, - mod: 'chatbats', - team: 'random', - ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Cancel Mod'], - onSwitchIn(pokemon) { - this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - }, - // Dachsbun causes Koraidon to generate on enemy team. Implemented here. - onBegin() { - this.add(`raw|
Need help with all of the new moves, abilities, and adjustments?
Then make sure to use the ChatBats thread or use /dt!
`); - this.add('-message', `Welcome to ChatBats!`); - this.add('-message', `ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`); - this.add('-message', `If you want to help create new sets, we will host events periodically in the Pet Mods room!`); - this.add('-message', `Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`); - this.add('-message', `yes working`); - for (const side of this.sides) { - for (const pokemon of side.pokemon) { - if (pokemon.species.id === 'dachsbun') { - // Get the opposing side - const foeSide = side.foe; - // Filter out Dachsbun from opponent's team - const foeTeamNoDog = foeSide.pokemon.filter(p => p.species.id !== 'dachsbun'); - // Pick a random foe - const randomFoe = this.sample(foeTeamNoDog); - const rawSpecies = this.dex.species.get('koraidon'); - randomFoe.setSpecies(rawSpecies, pokemon); - randomFoe.baseSpecies = rawSpecies; - randomFoe.details = randomFoe.getUpdatedDetails(); - randomFoe.setAbility('Orichalcum Pulse', null, true); - randomFoe.baseAbility = randomFoe.ability; - if (this.randomChance(1, 2)) { - const randomFoeItem = (this.randomChance(1, 2) ? 'choicescarf' : 'choiceband'); - randomFoe.item = randomFoeItem; - randomFoe.itemState = { id: randomFoeItem, target: randomFoe }; - // Define new moves - const newMoves = ['closecombat', 'flareblitz', 'outrage', 'uturn']; - - // Update move slots - randomFoe.moveSlots = newMoves.map(move => { - const moveData = this.dex.moves.get(move); - return { - move: moveData.name, - id: moveData.id, - pp: moveData.pp, - maxpp: moveData.pp, - target: moveData.target, - disabled: false, - used: false, - }; - }); - } - else { - const randomFoeItem = 'loadeddice'; - randomFoe.item = randomFoeItem; - randomFoe.itemState = { id: randomFoeItem, target: randomFoe }; - // Define new moves - const newMoves = ['collisioncourse', 'flareblitz', 'scaleshot', 'swordsdance']; - - // Update move slots - randomFoe.moveSlots = newMoves.map(move => { - const moveData = this.dex.moves.get(move); - return { - move: moveData.name, - id: moveData.id, - pp: moveData.pp, - maxpp: moveData.pp, - target: moveData.target, - disabled: false, - used: false, - }; - }); - } - // this forces the UI to update move slots visually - randomFoe.baseMoveSlots = randomFoe.moveSlots.slice(); - randomFoe.teraType = 'fire' - } - } - } - } - }, - { - name: "[Gen 9] Climate Change", - desc: [ - "weather war", - ], - threads: [ - `• Climate Change on Smogon Forums`, - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod'], - banlist: ['Sunny Day', 'Rain Dance', 'Sandstorm', 'Hail', 'Snowscape', 'Chilly Reception', 'Charizardite X'], + name: "[Gen 9] Upside Down OU", + desc: `Modern Mechanics and Pokemon mixed with an Old Gen Powerlevel, complete with No Team Preview!`, + threads: [ + `Spreadsheet`, + ], + mod: 'upsidedown', teambuilderFormat: "National Dex", - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', '!Team Preview'], + banlist: ['All Pokemon', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'item: Quick Claw', 'Razor Fang', + 'Assist', 'Last Respects', 'Shed Tail', 'Sticky Web', 'Victory Dance', 'Diancite', 'Mawilite', 'Heavy Duty Boots', 'Choice Specs', 'Choice Scarf', + 'Life Orb', 'Eviolite', 'Flame Orb', 'Toxic Orb', 'Air Balloon', 'Light Clay', 'Terrain Extender', 'Damp Rock', 'Heat Rock', 'Smooth Rock', + 'Icy Rock', 'Red Card', 'Eject Pack', 'Eject Button', 'Weakness Policy', 'Blunder Policy', 'Booster Energy', 'Throat Spray', 'Clear Amulet', + 'Custap Berry', 'Focus Sash', 'Occa Berry', 'Passho Berry', 'Rindo Berry', 'Wacan Berry', 'Yache Berry', 'Colbur Berry', 'Payapa Berry', + 'Roseli Berry', 'Haban Berry', 'Coba Berry', 'Charti Berry', 'Shuca Berry', 'Tanga Berry', 'Kebia Berry', 'Babiri Berry', 'Chople Berry', + 'Kasib Berry', 'Fire Gem', 'Water Gem', 'Grass Gem', 'Electric Gem', 'Ice Gem', 'Dark Gem', 'Psychic Gem', 'Dragon Gem', 'Flying Gem', + 'Bug Gem', 'Fighting Gem', 'Rock Gem', 'Ground Gem', 'Steel Gem', 'Ghost Gem', 'Poison Gem', 'Abomasite', 'Absolite', 'Aerodactylite', + 'Aggronite', 'Alakazite', 'Altarianite', 'Ampharosite', 'Banettite', 'Beedrillite', 'Blastoisinite', 'Blazikenite', 'Blue Orb', + 'Cameruptite', 'Charizardite X', 'Charizardite Y', 'Galladite', 'Garchompite', 'Gardevoirite', 'Gengarite', 'Glalitite', 'Gyaradosite', + 'Houndoominite', 'Kangaskhanite', 'Latiasite', 'Latiosite', 'Lopunnite', 'Lucarionite', 'Manectite', 'Medichamite', 'Metagrossite', + 'Mewtwonite X', 'Mewtwonite Y', 'Pidgeotite', 'Pinsirite', 'Red Orb', 'Sablenite', 'Salamencite', 'Sceptilite', 'Scizorite', + 'Sharpedonite', 'Slowbronite', 'Steelixite', 'Swampertite', 'Tyranitarite', 'Venusaurite', + ], + unbanlist: ['Baton Pass', 'Wishiwashi', 'Mawile', 'Togepi', 'Togetic', 'Tarountula', 'Spidops', 'Pyukumuku', 'Cursola', 'Scatterbug', 'Spewpa', 'Vivillon', 'Bunnelby', 'Diggersby', 'Obstagoon', + 'Burmy', 'Wormadam', 'Mothim', 'Woobat', 'Swoobat', 'Wiglett', 'Wugtrio', 'Clodsire', 'Emolga', 'Cubone', 'Dedenne', + 'Togedemaru', 'Morpeko', 'Audino', 'Kecleon', 'Purrloin', 'Liepard', 'Honedge', 'Doublade', 'Snubbull', 'Granbull', 'Nymble', + 'Lokix', 'Nickit', 'Thievul', 'Gossifleur', 'Eldegoss', 'Finneon', 'Lumineon', 'Skwovet', 'Greedent', 'Spritzee', 'Aromatisse', + 'Espurr', 'Throh', 'Sawk', 'Klefki', 'Rellor', 'Rabsca', 'Trubbish', 'Garbodor', 'Stunfisk', 'Furfrou', 'Joltik', 'Galvantula', + 'Phantump', 'Trevenant', 'Tatsugiri', 'Deerling', 'Sawsbuck', 'Snom', 'Frosmoth', 'Cramorant', 'Oricorio', 'Veluza', 'Crabrawler', + 'Crabominable', 'Salandit', 'Salazzle', 'Orthworm', 'Swirlix', 'Slurpuff', 'Darumaka', 'Darmanitan', 'Helioptile', 'Heliolisk', + 'Flittle', 'Espathra', 'Golett', 'Golurk', 'Sandygast', 'Palossand', 'Runerigus', 'Heatmor', 'Durant', 'Venipede', 'Whirlipede', + 'Scolipede', 'Druddigon', 'Pikipek', 'Trumbeak', 'Toucannon', 'Turtonator', 'Pichu', 'Pikachu', 'Shroodle', 'Grafaiai', 'Chewtle', + 'Drednaw', 'Drampa', 'Dwebble', 'Crustle', 'Elgyem', 'Beheeyem', 'Capsakid', 'Scovillain', 'Munna', 'Musharna', 'Rockruff', + 'Greavard', 'Houndstone', 'Pidove', 'Tranquill', 'Unfezant', 'Lechonk', 'Pawmi', 'Pawmo', 'Pawmot', 'Bouffalant', 'Yamper', 'Boltund', + 'Skrelp', 'Dragalge', 'Pancham', 'Pangoro', 'Tirtouga', 'Carracosta', 'Mareanie', 'Toxapex', 'Rookidee', 'Corvisquire', + 'Corviknight', 'Blitzle', 'Zebstrika', 'Pansear', 'Panpour', 'Pansage', 'Simisear', 'Simipour', 'Simisage', 'Fletchling', + 'Fletchinder', 'Talonflame', 'Grubbin', 'Charjabug', 'Vikavolt', 'Varoom', 'Revavroom', 'Mudbray', 'Mudsdale', 'Sewaddle', + 'Swadloon', 'Leavanny', 'Cufant', 'Copperajah', 'Clauncher', 'Clawitzer', 'Carbink', 'Binacle', 'Barbaracle', 'Stufful', 'Bewear', + 'Hawlucha', 'Nacli', 'Naclstack', 'Garganacl', 'Toxel', 'Cubchoo', 'Beartic', 'Maschiff', 'Mabosstiff', 'Dracozolt', 'Arctovish', + 'Sirfetchd', 'Litleo', 'Pyroar', 'Sinistea', 'Polteageist', 'Tympole', 'Palpitoad', 'Seismitoad', 'Bounsweet', 'Steenee', + 'Tsareena', 'Blipbug', 'Dottler', 'Orbeetle', 'Rolycoly', 'Carkol', 'Coalossal', 'Rufflet', 'Silicobra', 'Sandaconda', 'Smoliv', + 'Dolliv', 'Arboliva', 'Impidimp', 'Morgrem', 'Grimmsnarl', 'Hatenna', 'Hattrem', 'Hatterene', 'Bergmite', 'Avalugg', 'Toedscool', + 'Toedscruel', 'Tynamo', 'Eelektrik', 'Eelektross', 'Mime Jr.', 'Mr. Rime', 'Girafarig', 'Farigiraf', 'Cetoddle', 'Cetitan', + 'Stantler', 'Wyrdeer', 'Sizzlipede', 'Centiskorch', 'Glimmet', 'Glimmora', 'Exeggcute', 'Dondozo', 'Noibat', 'Noivern', + 'Duraludon', 'Skiddo', 'Gogoat', 'Dunsparce', 'Dudunsparce', 'Poipole', 'Naganadel', 'Fuecoco', 'Crocalor', 'Skeledirge', + 'Rowlet', 'Dartrix', 'Scorbunny', 'Raboot', 'Cinderace', 'Popplio', 'Brionne', 'Primarina', 'Froakie', 'Frogadier', 'Greninja', + 'Snivy', 'Servine', 'Serperior', 'Flabébé', 'Floette', 'Florges', 'Archen', 'Archeops', 'Blacephalon', 'Celesteela', + 'Slither Wing', 'Iron Jugulis', 'Iron Bundle', 'Scream Tail', 'Sandy Shocks', 'Great Tusk', 'Iron Treads', 'Articuno', 'Virizion', + 'Iron Leaves', 'Brute Bonnet', 'Iron Thorns', 'Meloetta', 'Diancie', 'Goomy', 'Sliggoo', 'Goodra', 'Corsola-Galar', + 'Rattata-Alola', 'Raticate-Alola', 'Zigzagoon-Galar', 'Linoone-Galar', 'Wormadam-Sandy', 'Wormadam-Trash Cloak', 'Wooper-Paldea', + 'Marowak-Alola', 'Sneasel-Hisui', 'Sandshrew-Alola', 'Sandslash-Alola', 'Basculin-White-Striped', 'Basculegion', 'Basculegion-F', + 'Meowstic', 'Meowstic-F', 'Yamask-Galar', 'Raichu-Alola', 'Lycanroc', 'Lycanroc-Midnight', 'Oinkologne', 'Oinkologne-F', + 'Voltorb-Hisui', 'Electrode-Hisui', 'Pumpkaboo', 'Pumpkaboo-Small', 'Pumpkaboo-Large', 'Pumpkaboo-Super', 'Gourgeist', + 'Gourgeist-Small', 'Gourgeist-Large', 'Gourgeist-Super', 'Geodude-Alola', 'Graveler-Alola', 'Golem-Alola', 'Ponyta-Galar', + 'Rapidash-Galar', 'Toxtricity', 'Toxtricity-Low-Key', 'Farfetchd-Galar', 'Braviary-Hisui', 'Mr. Mime-Galar', 'Exeggutor-Alola', + 'Decidueye-Hisui', 'Ursaluna-Bloodmoon', 'Articuno-Galar', 'Audino-Mega', 'Petilil', 'Lilligant-Hisui', 'Clobbopus', 'Grapploct', + 'Amaura', 'Aurorus', 'Diglett-Alola', 'Dugtrio-Alola', 'Qwilfish-Hisui', 'Overqwil', 'Morelull', 'Shiinotic', + 'Wooloo', 'Dubwool', 'Bombirdier', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ let speciesTable = {}; + let allowedTiers = ['Upside Down OU', 'Upside Down NFE', 'Upside Down LC']; //Upside Down Uber exists but not playable for (const set of team) { let template = this.dex.species.get(set.species); - if (template.tier !== 'CC') { - return [set.species + ' is not usable in Climate Change.']; + //if (template === 'Ursaluna-Bloodmoon' && set.nature !== 'Hardy') return [set.species + ' must have a Hardy Nature.']; + //non functional atm + //if (template === 'Toxtricity' && ['Lonely', 'Bold', 'Relaxed', 'Timid', 'Serious', 'Modest', 'Mild', 'Quiet', 'Bashful', 'Calm', 'Gentle', 'Careful'].includes(set.nature)) return [set.nature + 'is not a valid nature for this form of Toxtricity.']; + //non functional atm also amped tox keeps getting + //if (template === 'Toxtricity-Low-Key' && ['Hardy', 'Brave', 'Adamant', 'Naughty', 'Docile', 'Impish', 'Lax', 'Hasty', 'Jolly', 'Naive', 'Rash', 'Sassy', 'Quirky'].includes(set.nature)) return [set.species + 'is not a valid nature for this form of Toxtricity.']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Upside Down OU.']; } } }, - mod: 'weatherwar', - }, - { - name: "[Gen 9] Clubmons: Requiem", - mod: 'clubmonsrequiem', - desc: `A micrometagame focused on accessibility and teambuilder diversity.`, - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], - threads: [ - `• Clubmons on Smogon Forums`, - ], - banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Baton Pass', 'Shed Tail', 'Last Respects', 'Hidden Power', 'Absolite', 'Sablenite'], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['CM', 'CM (NFE)']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Clubmons.']; - } - } - }, - }, - { - name: "[Gen 9] CommunityUsed 2: Regional Dex", - mod: 'communityused2', - desc: `A micrometa that combines secret santa with Generation X.`, - ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause', 'Z-Move Clause', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod'], - teambuilderFormat: 'National Dex', - banlist: ['Baton Pass'], - threads: [ - `• CU2 on Smogon Forums`, - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['CU2 OU', 'CU2 NFE']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in CommunityUsed 2.']; - } - } - }, }, { - name: "[Gen 9] CU2 Random Battle", - desc: `A micrometa that combines secret santa with Generation X.`, - threads: [ - `• CU2 on Smogon Forums`, - ], - mod: 'communityused2', - team: 'random', - ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Cancel Mod'], + name: "[Gen 1] Violet Version G1", + desc: "Violet Version G1 Rainbow Edition is a balance mod focused on bringing wonderful new feelings and colors to RBY competitive play.", + mod: "gen1violetversion", + gen: 1, + ruleset: ['Obtainable', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Species Clause', 'OHKO Clause', 'Evasion Moves Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'], + banlist: ['All Pokemon'], + unbanlist: ['Aerodactyl', 'Alakazam', 'Arbok', 'Articuno', 'Beedrill', 'Blastoise', 'Butterfree', 'Chansey', 'Charizard', 'Cloyster', 'Dragonite', 'Dugtrio', 'Electabuzz', 'Electrode', 'Exeggutor', 'Flareon', 'Gengar', 'Golbat', 'Golduck', 'Golem', 'Gyarados', 'Hypno', 'Jynx', 'Kabutops', 'Machamp', 'Magmar', 'Magneton', 'Mew', 'Moltres', 'Muk', 'Nidoqueen', 'Ninetales', 'Parasect', 'Pidgeot', 'Pinsir', 'Poliwrath', 'Porygon', 'Slowbro', 'Snorlax', 'Starmie', 'Tangela', 'Tauros', 'Vileplume', 'Zapdos'], }, { - name: "[Gen 9] Conquest Dex", - mod: 'conquestdex', - desc: `A metagame based on the pokemon side game pokemon conquest`, - ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause', 'Z-Move Clause', 'Mega Stone Clause'], - banlist: ['Arceus', 'Dialga', 'Rayquaza', 'Zekrom', 'Reshiram', 'Mewtwo', 'Groudon'], - threads: [ - `• Conquest Dex on Smogon Forums`, + name: "[Gen 8] Weedmons", + desc: `Weedmons is a SoloMod originally led by The Reptile, whose purpose is primarily to make a fun micrometa based on the completely arbitrary limitations of the theme of Weed!.`, + mod: 'weedmons', + gen: 9, + ruleset: ['Standard NatDex', 'OHKO Clause', 'Species Clause', 'Sleep Clause Mod', 'Dynamax Clause'], + banlist: ['All Pokemon', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'item: Quick Claw' /*Wtf is this validator on? What ability?*/, 'Razor Fang', + 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Altarianite', 'Charizardite X', 'Charizardite Y', 'Blazikenite',], + unbanlist: ['Altaria', 'Azumarill', 'Azurill', 'Blaziken', 'Braixen', 'Brionne', 'Blitzle', 'Bouffalant', 'Castform', 'Centiskorch', 'Charizard', 'Charmander', 'Charmeleon', 'Cherubi', + 'Chimchar', 'Cinderace', 'Combusken', 'Crocalor', 'Cyndaquil', 'Dartrix', 'Deerling', 'Delphox', 'Dragonair', 'Drampa', 'Drizzile', 'Emboar', 'Farigiraf', 'Fennekin', 'Fuecoco', 'Girafarig', + 'Gogoat', 'Golduck', 'Goodra', 'Goodra-Hisui', 'Goomy', 'Hakamo-O', 'Heatmor', 'Incineroar', 'Infernape', 'Lickilicky', 'Lickitung', 'Linoone', 'Linoone-Galar', 'Litten', 'Marill', 'Metang', + 'Mightyena', 'Miltank', 'Monferno', 'Oddish', 'Pansear', 'Pignite', 'Poipole', 'Psyduck', 'Quilava', 'Raboot', 'Sawsbuck', 'Scorbunny', 'Shelgon', 'Simisear', 'Sizzlipede', 'Skeledirge', + 'Skiddo', 'Sliggoo', 'Sliggoo-Hisui', 'Stantler', 'Swablu', 'Tepig', 'Thwackey', 'Torchic', 'Torkoal', 'Torracat', 'Typhlosion', 'Typhlosion-Hisui', 'Watchog', 'Wyrdeer', 'Zebstrika', 'Zweilous', ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Conq']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Conquest Dex.']; - } - } - }, - }, - { - name: "[Gen 2] Crystal Legacy", - mod: 'gen2crystallegacy', - desc: `A Solomod centered around Crystal Legacy.`, - ruleset: ['Standard', 'Data Mod', 'VGC Timer'], }, - /* { - name: "[Gen 9] Dex Reversal", + /* + { + name: "[Gen 4] Yayamons", threads: [ - `Dex Reversal`, - ], - teambuilderFormat: "National Dex", - mod: 'dexreversal', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause', 'Mega Data Mod', 'Data Mod', 'Terastal Clause', 'Z-Move Clause'], - banlist: ['Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', 'Smeargle', 'Shell Smash', 'Shadow Tag', 'Calyrex-Ice', 'Eternatus-Eternamax', 'Medichamite'], - }, */ - { - name: "[Gen 9] Dense AF", - desc: 'experimental format with few things and things that are smooshed together', - mod: 'denseaf', - ruleset: [ - 'Nickname Clause', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'Terastal Clause', 'Dense AF Mod', - ], - banlist: ['All Items'], - unbanlist: [ - 'Pinch Berry', 'Tsersi Berry', 'Nota Berry', 'Soft Silver Magnet', 'Miracle Stone Belt', 'Big Neutral Energy', 'Twisted Mystic Coal', 'Black Ice Coat', - 'Sharp Feather Barb', 'Focus Sash', 'Adrenaline Orb', 'Shed Shell', + `• Do Not Use: A National Dex metagame where only Pokemon with 280 BST or less are allowed." - ], - threads: [ - `• Do Not Use`, - ], - mod: 'donotuse', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause'], - teambuilderFormat: 'National Dex', - banlist: ['Huge Power', 'Pure Power', 'Shadow Tag', 'Arena Trap', 'Baton Pass', 'Moody', 'Cute Charm', 'Hustle', 'Sand Veil', 'Snow Cloak'], - unbanlist: ['Assist'], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['DoNU', 'DoNU UUBL', 'DoNU UU', 'DoNU RUBL', 'DoNU RU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in [Gen 9] Do Not Use.']; - } - } - }, - }, - { - name: "[Gen 9] Do Not Use UU", - desc: [ - "Do Not Use: A National Dex metagame where only Pokemon with 280 BST or less are allowed." - ], - threads: [ - `• Do Not Use`, - ], - mod: 'donotuseuu', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause'], - teambuilderFormat: 'National Dex', - banlist: ['Huge Power', 'Pure Power', 'Shadow Tag', 'Arena Trap', 'Baton Pass', 'Moody', 'Cute Charm', 'Hustle', 'Sand Veil', 'Snow Cloak'], - unbanlist: ['Assist'], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['DoNU UU', 'DoNU RUBL', 'DoNU RU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in [Gen 9] Do Not Use UU.']; - } - } - }, - }, - { - name: "[Gen 9] Do Not Use VGC", - desc: [ - "Do Not Use: A National Dex VGC metagame where only Pokemon with 280 BST or less are allowed. Certain Pokemon have been added as restricteds." - ], - threads: [ - `• Do Not Use`, - ], - mod: 'donotusevgc', - - gameType: 'doubles', - teambuilderFormat: 'National Dex Doubles', - ruleset: ['Standard NatDex', 'Item Clause', 'Adjust Level = 50', 'Picked Team Size = 4', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Terastal Clause', 'Z-Move Clause', 'Best of = 3', 'Limit One Restricted'], - restricted: ['Cottonee', 'Dewpider', 'Diglett-Alola', 'Flittle', 'Nidoran-M', 'Wattrel', 'Wingull', 'Zigzagoon', 'Shedinja'], - banlist: ['Huge Power', 'Pure Power', 'Smeargle', 'Wishiwashi', 'Goomy'], - unbanlist: ['Assist'], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['Restricted', 'DDoNU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in [Gen 9] Do Not Use VGC.']; - } - } - }, - }, - { - name: "[Gen 9] DNU Random Battle", - desc: `Do Not Use: A National Dex metagame where only Pokemon with 280 BST or less are allowed.`, - threads: [ - `• Do Not Use`, - ], - mod: 'donotuse', - team: 'random', - ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Cancel Mod'], - }, - { - name: "[Gen 9] Earth & Sky Horizons OU", - desc: `The metagame based on Pokémon Earth & Sky, a set of theoretical games created by En Passant, with the Horizons Expansion for Gen 9.`, - threads: [ - `• Competitive Cheat Sheet`, - ], - mod: 'earthsky', - ruleset: [ 'Earth & Sky', 'Restricted Rules'], - banlist: [ - 'Alakazam-Mega', 'Arceus', 'Blaziken-Mega', 'Blastoise-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Darkrai', - 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', 'Dialga', 'Eternatus', 'Flutter Mane', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', - 'Ho-Oh', 'Kartana', 'Koraidon', 'Kyogre', 'Kyurem', 'Landorus-Base', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Miraidon', - 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Reshiram', 'Robo Bundle', - 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', - 'Oceides', 'Hatar', 'Zuros', 'Norphaval', 'Khatrophys', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Stellar Tera Shard' - ], - }, - { - name: "[Gen 9] Earth & Sky Horizons Triples", - threads: [ - `• Competitive Cheat Sheet`, - ], - mod: 'earthsky', - gameType: 'triples', - ruleset: [ 'Earth & Sky', 'Restricted Rules', 'Gravity Sleep Clause'], - banlist: [ - 'Arceus', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Base', 'Deoxys-Speed', - 'Dialga', 'Eternatus', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Koraidon', 'Kyogre', 'Kyurem', 'Landorus-Base', - 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Miraidon', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', - 'Rayquaza', 'Reshiram', 'Salamence-Mega', 'Shaymin-Sky', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zacian', 'Zamazenta', 'Zekrom', - 'Oceides', 'Hatar', 'Zuros', 'Norphaval', 'Khatrophys', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass', 'Stellar Tera Shard' - ], - }, - { - name: "[Gen 9] Earth & Sky Horizons Dex", - threads: [ - `• Competitive Cheat Sheet`, - ], - mod: 'earthsky', - ruleset: [ '[Gen 9] Earth & Sky Horizons OU', 'Horizons Pokedex',], - banlist: [ - 'Manaphy', 'Meloetta-Pirouette', 'Diancie-Mega', 'Melmetal', 'Enamorus-Base', 'Latias-Mega', 'Latios-Mega', 'Zygarde-Base', 'Hoopa-Unbound', - 'Spectrier', 'Roaring Moon', 'Valiant Droid', 'Terapagos-Terastal'], - }, - { - name: "[Gen 9] Earth & Sky Horizons Ubers", - threads: [ - `• Competitive Cheat Sheet`, - ], - mod: 'earthsky', - ruleset: [ 'Earth & Sky',], - banlist: ['Baton Pass'], - }, - { - name: "[Gen 8] Evolution Project", - desc: [ - `Evolution Project: A small group's creative exercise.`, - ], - ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], - banlist: [ - 'Alakazam', 'Excadrill-Base', 'Exploud', 'Lycanroc-Dusk', 'Naganadel-Base', 'Reuniclus-Base', 'Scizor', 'Scolipede-Base', 'Starmie-Base', 'Polteageist-Base', - 'Polteageist-Antique', 'Volcarona', 'Aegislash-Base', 'Gyarados', 'Moody', 'Baton Pass' - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'Evo!' && template.tier !== 'Evo (NFE)' && template.tier !== "Evo NFE!") { - return [set.species + ' is not legal in the Evolution Project format.']; - } - } - }, - onValidateSet(set) { - const item = this.dex.items.get(set.item); - if (item.megaStone) return [`${set.name || set.species} is not currently allowed to Mega Evolve.`]; - }, - mod: 'evolutionproject', - searchShow: false, - }, - { - name: "[Gen 8] Evolution Project VGC", - desc: [ - `Evolution Project: A small group's creative exercise.`, - ], - gameType: 'doubles', - banlist: ['Aegislash-Base', 'Scizor'], - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'VGC Timer', '+Unobtainable', '+Past', 'Dynamax Clause', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'Evo!' && template.tier !== 'Evo (NFE)' && template.tier !== "Evo NFE!") { - return [set.species + ' is not legal in the Evolution Project format.']; - } - } - }, - onValidateSet(set) { - const unobtainables = [ - 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', - 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', - ]; - const species = this.dex.species.get(set.species); - if (unobtainables.includes(species.name)) { - if (this.ruleTable.has(`+pokemon:${species.id}`)) return; - return [`${set.name || set.species} does not exist in the National Dex.`]; - } - if (species.tier === "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.`]; - } - // Items other than Z-Crystals and Pokémon-specific items should be illegal - if (!set.item) return; - const item = this.dex.items.get(set.item); - if (item.megaStone) return [`${set.name || set.species} is not currently allowed to Mega Evolve.`]; - if (!item.isNonstandard) return; - if (['Past', 'Unobtainable'].includes(item.isNonstandard) && !item.zMove && !item.itemUser && !item.forcedForme) { - if (this.ruleTable.has(`+item:${item.id}`)) return; - return [`${set.name}'s item ${item.name} does not exist in Gen ${this.dex.gen}.`]; - } - }, - mod: 'evolutionproject', - searchShow: false, - }, - { - name: "[Gen 9] Evolution Project 2", - desc: [ - `Evolution Project: A small group's creative exercise.`, - ], - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Dynamax Clause', 'Data Mod'], - banlist: [ - 'Toxapex-Base', 'Noivern-Variant', 'Chandelure', 'Corviknight-Base', 'Darmanitan-Base', 'Darmanitan-Galar', 'Excadrill-Base', 'Hawlucha-Base', - 'Garchomp', 'Velocinobi', 'Dragonite', - 'Tapu Koko', 'Tapu Lele', 'Tapu Bulu', 'Tapu Fini', 'Zacian', 'Zamazenta', 'Deoxys', - 'Moody', 'Baton Pass', 'Shed Tail', 'Last Respects', - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - const customTiers = ['Pokémon of the Day!', 'Evo!', '(Prevo)']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!customTiers.includes(template.tier)) { - return [set.species + ' is not legal in the Evolution Project format.']; - } - } - }, - onValidateSet(set) { - const item = this.dex.items.get(set.item); - if (item.megaStone) return [`${set.name || set.species} is not allowed to Mega Evolve.`]; - }, - mod: 'gen9evolutionproject', - searchShow: false, - }, - { - name: "[Gen 9] Evolution Project 2 VGC", - desc: [ - `Evolution Project: A small group's creative exercise. Tera Blast is universal in VGC.`, - ], - gameType: 'doubles', - teambuilderFormat: "National Dex", - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'VGC Timer', '+Unobtainable', '+Past', 'Open Team Sheets', 'Dynamax Clause', 'Z-Move Clause', 'Data Mod'], - banlist: [ - 'Dragonite', - 'Tapu Koko', 'Tapu Lele', 'Tapu Bulu', 'Tapu Fini', 'Zacian', 'Zamazenta', 'Deoxys', - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - const customTiers = ['Pokémon of the Day!', 'Evo!', '(Prevo)']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!customTiers.includes(template.tier)) { - return [set.species + ' is not legal in the Evolution Project format.']; - } - } - }, - checkCanLearn(move, species, lsetData, set) { // Tera Blast is universal in VGC, but not in singles - const problem = this.checkCanLearn(move, this.dex.species.get(set.species)); - if (problem && move.name !== 'Tera Blast') return problem; - return null; - }, - onValidateSet(set) { - const unobtainables = [ - 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', - 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', - ]; - const species = this.dex.species.get(set.species); - if (unobtainables.includes(species.name)) { - if (this.ruleTable.has(`+pokemon:${species.id}`)) return; - return [`${set.name || set.species} does not exist in the National Dex.`]; - } - if (species.tier === "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.`]; - } - // Items other than Z-Crystals and Pokémon-specific items should be illegal - if (!set.item) return; - const item = this.dex.items.get(set.item); - if (item.megaStone) return [`${set.name || set.species} is not allowed to Mega Evolve.`]; - if (!item.isNonstandard) return; - if (['Past', 'Unobtainable'].includes(item.isNonstandard) && !item.zMove && !item.itemUser && !item.forcedForme) { - if (this.ruleTable.has(`+item:${item.id}`)) return; - return [`${set.name}'s item ${item.name} does not exist in Gen ${this.dex.gen}.`]; - } - }, - mod: 'gen9evolutionproject', - searchShow: false, - }, - { - name: "[Gen 9] Forgottenmons", - desc: `A National Dex metagame featuring only Pokemon not in Gen 9.`, - threads: [ - `• Forgottenmons in the Solomods Megathread`, - ], - mod: 'forgottenmons', - teambuilderFormat: 'National Dex', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Stone Clause'], - banlist: [ - 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', - 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Forgottenmons','Forgottenmons NFE','Forgottenmons LC']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Forgottenmons.']; - } - } - }, - }, - { - name: "[Gen 9] Fusion Evolution Corrupt Council", - mod: 'fecc', - team: 'random', - desc: `fecc`, - ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Z-Move Clause', 'Intro Mod'], - }, - /* - { - name: "[Gen 9] Fusion Evolution Corrupt Council 2", - mod: 'fecc', - desc: `fecc`, - ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Z-Move Clause'], - }, - */ - { - name: "[Gen 9] Fusion Evolution Dondozo", - mod: 'dondozo', - desc: `dondozo`, - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Z-Move Clause', /* 'Mega Data Mod' */], - banlist: ['Shed Tail'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Dondozo','FEDD']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; - } - } - }, - }, - { - name: "[Gen 9] Fusion Evolution VGC Reg A", - desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", - ], - threads: [ - `• FEVGC on Smogon Forums`, - `• Spreadsheet`, - ], - searchShow: false, - gameType: 'doubles', - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], - mod: 'gen9fevgc', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Reg A', 'Reg A NFE', 'Reg A LC']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; - } - } - }, - }, - { - name: "[Gen 9] Fusion Evolution VGC Reg A (Bo3)", - desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", - ], - threads: [ - `• FEVGC on Smogon Forums`, - `• Spreadsheet`, - ], - searchShow: false, - gameType: 'doubles', - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], - mod: 'gen9fevgc', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Reg A', 'Reg A NFE', 'Reg A LC']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; - } - } - }, - }, - { - name: "[Gen 9] Fusion Evolution VGC Reg B", - desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", - ], - threads: [ - `• FEVGC on Smogon Forums`, - `• Spreadsheet`, - ], - gameType: 'doubles', - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], - mod: 'gen9fevgc', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Reg A', 'Reg B', 'Reg A NFE', 'Reg A LC', 'Reg B LC']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; - } - } - }, - }, - { - name: "[Gen 9] Fusion Evolution VGC Reg B (Bo3)", - desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", - ], - threads: [ - `• FEVGC on Smogon Forums`, - `• Spreadsheet`, - ], - gameType: 'doubles', - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], - mod: 'gen9fevgc', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Reg A', 'Reg B', 'Reg A NFE', 'Reg A LC', 'Reg B LC']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; - } - } - }, - }, - { - name: "[Gen 9] Fusion Evolution VGC Reg C", - desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", - ], - threads: [ - `• FEVGC on Smogon Forums`, - `• Spreadsheet`, - ], - gameType: 'doubles', - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], - mod: 'gen9fevgc', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Reg A', 'Reg B', 'Reg C', 'Reg A NFE', 'Reg A LC', 'Reg B LC', 'Reg C LC']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; - } - } - }, - }, - { - name: "[Gen 9] Fusion Evolution VGC Reg C (Bo3)", - desc: ["Fusion Evolution but it's a VGC format, and a solomod run by AquaticPanic", - ], - threads: [ - `• FEVGC on Smogon Forums`, - `• Spreadsheet`, - ], - gameType: 'doubles', - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Data Mod', 'Force Open Team Sheets', 'Best of = 3'], - mod: 'gen9fevgc', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Reg A', 'Reg B', 'Reg C', 'Reg A NFE', 'Reg A LC', 'Reg B LC', 'Reg C LC']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Fusion Evolution.']; - } - } - }, - }, - /* { - name: "[Gen 1] Glitch OU", - mod: 'gen1glitch', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber', 'Agility + Wrap', 'Agility + Fire Spin', 'Agility + Bind', 'Agility + Clamp', 'Amnesia', 'Sleep Powder', 'Self-Destruct', 'Explosion'], - }, */ - { - name: "[Gen 2] GSC Doubles Ubers", - threads: [ - `• Thread on Smogon`, - ], - - mod: 'gen2doubles', - gameType: 'doubles', - ruleset: ['Standard Doubles', 'Swagger Clause'], - banlist: ['Bright Powder', 'King\'s Rock', 'Quick Claw'], - }, - { - name: "[Gen 2] GSC Doubles OU", - threads: [ - `• Thread on Smogon`, - ], - - mod: 'gen2doubles', - gameType: 'doubles', - ruleset: ['Standard Doubles', 'Swagger Clause'], - banlist: ['Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], - }, - { - name: "[Gen 2] GSC Doubles UU", - threads: [ - `• Thread on Smogon`, - ], - - mod: 'gen2doubles', - gameType: 'doubles', - ruleset: ['Standard Doubles', 'Swagger Clause'], - banlist: ['OU', 'Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], - }, - { - name: "[Gen 2] GSC Doubles Random Battle", - threads: [ - `• Thread on Smogon`, - ], - - mod: 'gen2doubles', - gameType: 'doubles', - team: 'random', - ruleset: ['Standard Doubles', 'Swagger Clause'], - banlist: ['Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], - }, - { - name: "[Gen 9] Hax Meters OU", - mod: 'haxmeters', - ruleset: ['Standard', '!Sleep Clause Mod', 'Sleep Moves Clause', '!Evasion Items Clause', 'Hax Meter Rule'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 9] Hax Meters Doubles OU", - mod: 'haxmeters', - gameType: 'doubles', - ruleset: ['Standard Doubles', 'Hax Meter Rule'], - banlist: ['DUber', 'Shadow Tag'], - }, - { - name: "[Gen 8] Hax Meters OU", - mod: 'gen8haxmeters', - ruleset: ['Standard', '!Evasion Items Clause', 'Dynamax Clause', 'Hax Meter Rule'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass'], - }, - { - name: "[Gen 8] Hax Meters Doubles OU", - mod: 'gen8haxmeters', - gameType: 'doubles', - ruleset: ['Standard Doubles', 'Dynamax Clause', 'Hax Meter Rule'], - banlist: ['DUber', 'Power Construct', 'Shadow Tag', 'Swagger'], - }, - { - name: "[Gen 9] Luckless Play OU", - mod: 'lucklessplay', - ruleset: ['Standard', '!Sleep Clause Mod', 'Sleep Moves Clause', '!Evasion Items Clause', 'Hax Meter Rule'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 8] Luckless Play OU", - mod: 'gen8lucklessplay', - ruleset: ['Standard', '!Evasion Items Clause', 'Dynamax Clause', 'Hax Meter Rule'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Baton Pass'], - }, - /* { - name: "[Gen 3] Hoennification", - mod: 'gen3hoennification', - ruleset: ['Standard', 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod', 'Baton Pass Mod'], - banlist: ['Uber', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Smeargle + Ingrain', 'Starf Berry', 'Speed Boost + Blaziken', 'Drizzle', 'Drought'], - }, - { - name: "[Gen 9] i forgor OU", - mod: 'iforgor', - desc: `i forgor`, - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Mega Data Mod'], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['IDK']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return ['you forgor ' + set.species + ' doesnt exist.']; - } - } - }, - }, - { - name: "[Gen 9] i forgor Ubers", - mod: 'iforgor', - desc: `i forgor`, - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Mega Data Mod'], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['EF', 'IDK']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return ['you forgor ' + set.species + ' doesnt exist.']; - } - } - }, - }, */ - { - name: "[Gen 1] JohtoMons", - desc: '[Gen 1] JohtoMons: Adding the Johto mons to RBY', - threads: [ - `• FutureProofing on Smogon Forums`, - ], - mod: 'gen1johtomons', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber'], - unbanlist: ['Aeroblast', 'Sacred Fire', 'Sketch', 'Present', 'Megahorn', 'Steel Wing', 'Milk Drink', 'Metal Claw', 'Spider Web', 'Hidden Power', 'Octazooka', 'Triple Kick', 'Vital Throw', 'Extreme Speed', 'Mach Punch', 'Outrage', 'Morning Sun', - 'Chikorita', 'Bayleef', 'Meganium', 'Cyndaquil', 'Quilava', 'Typhlosion', 'Sentret', 'Furret', 'Hoothoot', 'Noctowl', 'Ledyba', 'Ledian', 'Spinarak', 'Ariados', 'Crobat', 'Chinchou', 'Lanturn', 'Pichu', 'Cleffa', 'Igglybuff', 'Togepi', 'Togetic', - 'Natu', 'Xatu', 'Mareep', 'Flaaffy', 'Ampharos', 'Bellossom', 'Marill', 'Azumarill', 'Sudowoodo', 'Politoed', 'Hoppip', 'Skiploom', 'Jumpluff', 'Aipom', 'Sunkern', 'Sunflora', 'Yanma', 'Wooper', 'Quagsire', 'Espeon', 'Umbreon', 'Murkrow', 'Slowking', - 'Misdreavus', 'Unown', 'Wobbuffet', 'Girafarig', 'Pineco', 'Forretress', 'Dunsparce', 'Gligar', 'Steelix', 'Snubbull', 'Granbull', 'Qwilfish', 'Scizor', 'Shuckle', 'Heracross', 'Sneasel', 'Teddiursa', 'Ursaring', 'Slugma', 'Magcargo', 'Swinub', - 'Piloswine', 'Corsola', 'Remoraid', 'Octillery', 'Delibird', 'Mantine', 'Skarmory', 'Houndour', 'Houndoom', 'Kingdra', 'Phanpy', 'Donphan', 'Porygon2', 'Stantler', 'Smeargle', 'Tyrogue', 'Hitmontop', 'Smoochum', 'Elekid', 'Magby', 'Miltank', - 'Blissey', 'Raikou', 'Entei', 'Suicune', 'Larvitar', 'Pupitar', 'Tyranitar', 'Lugia', 'Ho-Oh', 'Celebi', - ], - }, - { - name: "[Gen 2] Johto Expansion Pak (Alpha) OU", - threads: [ - `• Post in Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'gen2expansionpack', - ruleset: ['Standard', 'Data Mod', 'Welcome Message'], - banlist: ['Uber'], - }, - { - name: "[Gen 2] Johto Expansion Pak Ubers", - threads: [ - `• Post in Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'gen2expansionpack', - ruleset: ['Standard', 'Data Mod', 'Welcome Message'], - }, - { - name: "[Gen 9] Jollymod", - desc: [ - "jumpscaare", - ], - threads: [ - `• Jollymod on Smogon Forums`, - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Jolly'], - banlist: ['Avalanche'], - teambuilderFormat: "National Dex", - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'JM') { - return [set.species + ' is not usable in Jollymod.']; - } - } - }, - mod: 'jollymod', - }, - { - name: "[Gen 1] Jumpstarted", - threads: [ - - ], - mod: 'gen1jumpstarted', - ruleset: ['Standard', 'Data Mod', 'Allow Tradeback'], - banlist: ['Uber'], - }, - { - name: "[Gen 1] Kanto Expansion Pak OU", - threads: [ - `• Post in Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'gen1expansionpack', - ruleset: ['Standard', 'Data Mod', 'Welcome Message', 'Allow Tradeback'], - banlist: ['Uber'], - }, - { - name: "[Gen 1] Kanto Expansion Pak Ubers", - threads: [ - `• Post in Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'gen1expansionpack', - ruleset: ['Standard', 'Data Mod', 'Welcome Message', 'Allow Tradeback'], - }, - { - name: "[Gen 8] Kaen's Dex", - mod: "kaensdex", - ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod'], - banlist: ['All Pokemon'], - unbanlist: ['Luvdisc', 'Hypno','Arbok','Shuckle','Woodite','Manteaf','Fasmiwood','Smice','Ratevil','Burstrat', 'Doplash','Makid','Merdolph','Princeguin', - 'Kinguin','Ekidna','Porcusquill','Mop','Mopper','Puppessum','Grimssum','Spiball','Scopiball','Navird','Peckbeard','Bask','Peayes','Weaworm', - 'Lilfly','Koafly','Puptwin','Duog','Bureep','Parllama','Debi','Deecrust','Pickynest','Vulcdor','Buroach','Bugler','Roamai','Rack','Mountse', - 'Lacorn','Antney','Hairpu','Sockorm','Kibaion','Kibasol','Gnodog','Dressog','Tigle','Biitora','Psyguana','Forguana','Timk','Dynabite','Positt', - 'Frogassin','Jaklove','Wospark','Ravesp','Cabbitt','Haresprout','Seerd','Evialden','Ostranch','Pasuragu','Grussgu','Orvenom','Nerdium','Smartish', - 'Higarden','Unimount','Birnal','Yeagle','Flysh','Seaplane','Airpier','Likaba','Sucabra','Mousse','Donter','Melops','Harvetops','Pentamelop', - 'Scarferret','Lovefume','Smolle','Molvel','Toxtaur','Venotauro','Helmdillo','Rescurer','Crimske','Snagant','Zhulong','Yufo','Spavader','Grichick', - 'Grileo','Sbusho','Pangearth','Ankylonite','Champkylo','Slomoss','Milomoss','Rampeck','Terroccer','Tifrost','Smilofrost','Vizcachu','Paramer', - 'Toolsaur','Neuro','Brancell','Freezegon','Snoak','Coldrake','Capowt','Capoedar','Warcon','Istrebitel','Voltcro','Wirechomp','Thungator', - 'Scalpick','Roostlax','Eagatrice','Theri','Theriscyno','Ghoca','Moclaw','Jawlusk','Tumbna','Plesioskul','Laveel','Thermaque','Thermandril', - 'Tamantula','Spideth','Abomigo','Chillma','Wintber','Evergrowl','Stontler','Balatone','Coayena','Pherosmoke','Octovase','Cthulhurn','Shahood', - 'Karakasa','Grag','Kimokus','Toknight','Cowpy','Cowork','Barbecow','Hoorel','Baishark','Luviu','Shucklony','Dreamer','Nohtyp'] - }, -// start: Ma'adowr -{ - name: "[Gen 9] Ma'adowr Singles", - desc: 'Solomod mainly based on Ancient Egypt and run by BlueRay', - threads: [ - `• Spreadsheet`, - ], - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Terastal Clause'], - banlist: ['Arena Trap', 'Ill Wind', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Baton Pass', 'Baxcalibur', 'Espathra', 'Gengarite', 'Lucarionite', 'Mawilite', 'Metagrossite', 'Sablenite', 'Chantyrus Engraving', 'Frustration', 'Hail', 'Hidden Power', 'Last Respects', 'Magic Powder', 'Pursuit', 'Return'], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['MD', 'MD NFE']; // 'EXP' - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Maadowr.']; - } - } - }, - /*onValidateSet(set) { - const problems: string[] = []; - const setHas: {[k: string]: true} = {}; - let species = this.dex.species.get(set.species); - let item = this.dex.items.get(set.item); - let tierSpecies = species; - - if (item.megaEvolves === species.name) { - if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; - } - }, */ - mod: 'maadowr', - }, - { - name: "[Gen 9] Ma'adowr VGC", - desc: 'Solomod mainly based on Ancient Egypt and run by BlueRay', - threads: [ - `• Spreadsheet`, - ], - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod'], - banlist: ['Frustration', 'Hail', 'Hidden Power', 'Magic Powder', 'Pursuit', 'Return'], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['MD', 'MD NFE']; // 'EXP' - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Maadowr.']; - } - } - }, - /*onValidateSet(set) { - const problems: string[] = []; - const setHas: {[k: string]: true} = {}; - let species = this.dex.species.get(set.species); - let item = this.dex.items.get(set.item); - let tierSpecies = species; - - if (item.megaEvolves === species.name) { - if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; - } - }, */ - mod: 'maadowr', - }, - { - name: "[Gen 9] Ma'adowr VGC Restricted", - desc: 'Solomod mainly based on Ancient Egypt and run by BlueRay', - threads: [ - `• Spreadsheet`, - ], - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod', 'Limit Two Restricted'], - banlist: ['Frustration', 'Hail', 'Hidden Power', 'Magic Powder', 'Pursuit', 'Return'], - restricted: ['Restricted Legendary'], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['MD', 'MD NFE', 'MD Ubers', 'EXP2']; // 'EXP' - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Maadowr.']; - } - } - }, - mod: 'maadowr', - }, - // start: Lost Zone - { - name: "[Gen 9] Ma'adowr VGC Lost Zone", - desc: 'Solomod mainly based on cryptids, myths, and spiritualism and run by BlueRay', - threads: [ - `• Spreadsheet`, - ], - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Flat Rules', '!! Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod', 'Z-Move Clause', 'Dynamax Clause', 'Terastal Clause', 'Mega Data Mod'], - banlist: ['Frustration', 'Hail', 'Hidden Power', 'Magic Powder', 'Pursuit', 'Return'], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['LZ', 'LZ NFE']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Lost Zone.']; - } - } - }, - mod: 'maadowrlostzone', - }, - // end: Ma'adowr - { - name: "[Gen 9] Mega Mania", - mod: "megamania", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod'], - banlist: ['ND Uber', 'ND AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Kings Rock', 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 1] Metronome Battle", - mod: "gen1metronome", - ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Desync Clause Mod', 'Sleep Clause Mod', 'Nickname Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Endless Battle Clause', 'Max Team Size = 1'], - banlist: [`Mewtwo`, 'Unreleased', 'Unobtainable', 'Nonexistent'], - unbanlist: [`Mew`, `MissingNo.`], - onValidateSet(set) { - if (set.moves.length !== 1 || this.dex.moves.get(set.moves[0]).id !== 'metronome') { - return [`${set.name || set.species} has illegal moves.`, `(Pok\u00e9mon can only have one Metronome in their moveset)`]; - } - }, - }, - { - name: "[Gen 9] Monopet", - desc: [ - `Monopet: A Gen 9 Solomod where you can only use teams consisting of the same kind of pet.`, - ], - threads: [ - `• Post in the Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'solopet', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod'], - banlist: [ - 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', - 'Shed Tail', 'Power Construct', 'Sneasler', 'Mewtwo', 'Zacian', 'Zamazenta', 'Naganadel', 'Palkia-Origin', 'Spectrier', 'Chi-Yu', - 'Dracovish', 'Dragapult', 'Roaring Moon', 'Groudon', 'Miraidon', 'Koraidon', 'Zygarde-Base', 'Rayquaza', 'Battle Bond', 'Greninja-Bond', - ], - onValidateTeam(team, format, teamHas) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - let era : string[] = []; - let allowedTiers = ['Birds', 'Cats', 'Dogs', 'Farm', 'Fish', 'Fox', 'Frog', 'Lizard', 'Rock', 'Rodent', 'Turtle']; - for (const set of team) { - let template = this.dex.species.get(set.species); - let tier = template.tier; - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Solopet.']; - } - if (!(era.includes(tier))) { - era.push(tier) - } - } - if (era.length > 1) return ['Each Pokemon needs to be from the same category.']; - }, - }, - { - name: "[Gen 1] Moonside", - desc: `[Gen 1] Moonside: Welcome to the otherside of RBY.`, - threads: [ - `• Fuzzy Pickles!`, - ], - mod: 'gen1moonside', - ruleset: ['Data Mod'], - banlist: [], - unbanlist: ['Mewtwo', 'Mew'], - }, - { - name: "[Gen 9] NatDex The Bore", - threads: [ - ], - - mod: 'thebore', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause', 'Z-Move Clause', 'Terastal Clause'], - banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'Zen Mode', 'King\'s Rock', 'Light Clay', 'Quick Claw', 'Razor Fang', 'Baton Pass'], - teambuilderFormat: 'National Dex', - }, - { - name: "[Gen 9] NatDex The Bore UU", - threads: [ - ], - - mod: 'thebore', - ruleset: ['[Gen 9] NatDex The Bore'], - banlist: ['OU', 'UUBL'], - teambuilderFormat: 'National Dex UU', - }, - { - name: "[Gen 9] Patratdex", - desc: `Patratdex: Galvantic's Solomod, containing a new regional dex with a bunch of new stuff, notably 151 Fakemon.`, - mod: 'patratdex', - ruleset: ['Standard NatDex', 'Dynamax Clause', 'Sleep Clause Mod', 'Species Clause', 'Moody Clause', 'Evasion Moves Clause', 'Swagger Clause', 'Baton Pass Clause', 'OHKO Clause', 'Realmon Clause'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z',], - onSwitchIn(pokemon) { - this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - }, - }, - { - name: "[Gen 9] Patratdex Doubles", - desc: `Patratdex: Galvantic's Solomod, containing a new regional dex with a bunch of new stuff, notably 151 Fakemon.`, - mod: 'patratdex', - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Dynamax Clause', 'Sleep Clause Mod', 'Species Clause', 'Moody Clause', 'Evasion Moves Clause', 'Swagger Clause', 'Baton Pass Clause', 'OHKO Clause', 'Realmon Clause'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z',], - onSwitchIn(pokemon) { - this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - }, - }, - { - name: "[Gen 9] Pokémon North, South, East, West", - teambuilderFormat: "National Dex", - desc: 'The largest sprite project ever is now the largest Solomod ever...eventually. Content gradually releases in waves!', - threads: [ - `• `, - ], - mod: 'pokemonorthsoutheastwest', - ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['NSEW','NSEW2','NSEW3', 'NSEW4', 'NSEW5', 'NSEW6','NSEW7','NSEW8', 'NSEW9', 'NSEW10', 'NSEW11', 'NSEW12', 'NSEW13', 'NSEW14', 'NSEW15']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Pokémon North, South, East, and West.']; - } - } - }, - }, - { - name: "[Gen 9] Pokémon Go! Go! Tamagotchi!", - desc: 'They did not deserve to be forgotten to Digimon...a Solomod that contains three hundred adult form Tamagotchi!', - threads: [ - `• `, - ], - mod: 'tamagotchi', - ruleset: ['Standard', 'Data Mod', 'Terastal Clause'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Go! Go! Tamagotchi!']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not a Tamagotchi.']; - } - } - }, - }, - { - name: "[Gen 9] Ponymon", - mod: 'ponymonshowdown', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Data Mod'], - banlist: ['Darkrai', 'ND Uber', 'ND AG'], - unbanlist: ['Gholdengo', 'Kingambit', 'Melmetal', 'Regieleki', 'Roaring Moon', 'Shedinja', 'Terapagos', 'Walking Wake'], - teambuilderFormat: 'National Dex', - }, - { - name: "[Gen 9] Ponymon Ubers", - mod: 'ponymonshowdown', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Ubers Terastal Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Rayquaza Clause'], - banlist: ['Calyrex-Shadow', 'Gengarite'], - teambuilderFormat: 'National Dex Ubers', - }, - { - name: "[Gen 9] Ponymon UU", - mod: 'ponymonshowdown', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Data Mod'], - banlist: ['NDOU', 'UUBL', 'ND Uber', 'ND AG'], - unbanlist: ['Regieleki', 'Shedinja', 'Banette-Mega', 'Ceruledge', 'Clodsire', 'Corviknight', 'Dondozo', 'Garganacl', 'Glimmora', 'Gyarados', 'Iron Crown', 'Iron Hands', 'Latios', 'Pinsir-Mega', 'Tapu Lele', 'Thundurus-Therian', 'Zapdos-Galar'], - teambuilderFormat: 'National Dex UU', - }, - { - name: "[Gen 9] National Dex Strongest State", - threads: [ - ], - - mod: 'gen9strong', - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause'/*, 'Para Moves Clause'*/], - banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', - 'Blizzard', 'Explosion', 'Self-Destruct', 'Drizzle', 'Drought', 'Sand Stream', 'Aguav Berry', 'Figy Berry', 'Iapapa Berry', 'Mago Berry', 'Soul Dew', 'Wiki Berry', 'Last Respects', - ], - teambuilderFormat: 'National Dex', - }, - { - name: "[Gen 9] National Dex Strongest State Ubers", - threads: [ - ], - - mod: 'gen9strong', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Moves Clause'], - banlist: ['AG', 'Baton Pass', 'Blizzard', 'Moody'], - teambuilderFormat: 'National Dex Uber', - }, - { - name: "[Gen 9] PokeMorty", - desc: `PokeMorty: A Gen 9 Mod made by SDM_0 heavily inspired by the video-game "Pocket Morty".`, - threads: [ - `• Post in Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'pokemorty', - ruleset: ['Standard', 'Max Team Size = 5', '!Obtainable Abilities', 'Terastal Clause', '-All Items', 'Data Mod'], - banlist: ['Implode', 'Negative Space', 'Time Dilation', 'Grill Season', 'Use The Light', - 'Unspoken Bond', 'Bird Lover', 'Apex Genius', 'Training Complete', 'Abstracted Form', - 'Higher Education', 'Cell Division', 'Infiltrate', 'Mirror Image', 'Fast Charging', - 'Death Crystal', 'Magic Door', 'Strip Dance', 'Squid Costume', 'Cut the Chut', 'Bold And Daring', - 'Attention', 'Wedgie-Proof', 'Anthocyanin', 'Grade A', 'Always Fresh', 'Present Portal', 'Impersonate', - 'Flavor Combo', 'Apology Video', 'Espionage', 'Entitlement', 'Hypnotize', 'Mouth Off', 'Doze', - 'Traumatize', 'Mind-Numbing Hello', 'Love Bug', 'Stare Down'], - onValidateTeam(team) { - let speciesTable = {}; - let allowedTiers = ['PM OU', 'PM NFE', 'PM LC']; - let problems = []; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - problems.push(`${set.species} is not a Morty.`); - } - if (this.dex.abilities.get(set.ability).id !== "noability") { - problems.push(`${set.species} can't have ${set.ability}.`); - } - if (!['bashful', 'docile', 'hardy', 'quirky', 'serious', ''].includes(this.toID(set.nature))) { - problems.push(`${set.species} can't have a non-neutral nature.`); - } - } - return problems; - }, - }, - { - name: "[Gen 1] RBY Recolored", - threads: [ - `• Document`, - ], - mod: 'gen1recolored', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber'], - }, - { - name: "[Gen 9] Rock Bottom", - desc: [ - "Rock Bottom: A micrometa with an extremely low powerlevel and typically common strong tools being thinly distributed.", - ], - threads: [ - `• Post in the Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'rockbottom', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['RB']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in [Gen 9] Rock Bottom.']; - } - } - }, - }, - /*{ - name: "[Gen 8] Roulettemons The Solomod", - desc: `Roulettemons The Solomod: literally roulettemons but a solomod + clean slate micro`, - mod: 'roulettemonsthesolomod', - ruleset: ['Standard NatDex', 'Data Mod'], - banlist: ['All Pokemon'], - unbanlist: [ - 'Spinmadillo', 'Coyoctric', 'Spizelle', 'Fierhog', 'Elatuff', 'Glasyte', 'Bisong', 'Megalo', 'Oysteat', 'Ponymph', 'Hypepion', 'Chickola', 'Skelehawk', 'Catetar', 'Blastquito', 'Hawkward', 'Pandaid', 'Autoad', 'Skelephin', 'Doomossum', 'Llamagic', 'Venoroach', 'Salamados', 'Steelboon', 'Jaguaplume', - ], - onSwitchIn(pokemon) { - this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - }, - },*/ - { - name: "[Gen 9] Scootopia V.2", - desc: "The second iteration of the hit solomod Scootopia!", - threads: [ - `• Spreadsheet`, - ], - mod: "scootopia", - ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Data Mod', 'Super Type Moves Rule', 'OHKO Clause'], - banlist: ['All Pokemon', 'Crystal Heart', 'Wild Heart', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Double Team', 'Snow Cloak', 'Sand Veil'], - unbanlist: ["Arbrella", "Krachiten", "Scalaron", "Rantler", "Woolora", "Albatrygon", "Orchile", - "Embuck", "Cindoe", "Cobracotta", "Minillow", "Crossont", "Torgeist", "Platypad", "Lumoth", - "Aurorowl", "Carapex", "Dojodo", "Nunopod", "Zeploom", "Brawnkey", "Salamalix", "Cinnastar", - "MuabBoa", "Sturgard", "Harzodia", "Cyllindrake", "Kodokai", "Electangle", "Dolphena", "Soleron", - "Soleron-Awakened", "Jaegorm", "Jaegorm-Collective", "Elemadillo", "Axolacred", "Roscenti", - "Blunderbusk", "Barracoth", "Jamborai", "Dracoil", "Celespirit", "Noxtrice", "Avastar", - "Faerenheit", "Cellsius", "Kelven", "Salaos", "Morndos", "Pythos", "Corundell", "Quadringo", - "Saphor", "Fenreil", "Efflor", "Flocura", "Flocura-Nexus"], - }, - { - name: "[Gen 9] Scootopia V.4", - desc: "The fourth iteration of the hit solomod Scootopia!", - threads: [ - `• Thread`, - ], - mod: "scootopiav4", - ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Data Mod', 'Super Type Moves Rule', 'Super Type Clause'], - banlist: ['All Pokemon', 'Bright Powder', 'Lax Incense', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Double Team', 'Snow Cloak', 'Sand Veil', 'Crystal Heart', 'Wild Heart'], - unbanlist: [ - "Noxtrice", "Sturgard", "Embuck", "Cindoe", "Minillow", "Cinnastar", "Duratreme", - "Sumolug", "Coraking", "Soleron", "Soleron-Awakened", "Zephyrmine", "Jamborai", - "Boreasel", "Skawamud", "Silvuna", "Noxon", "Xiphoil", "Dracoil", - "Celespirit", "Zygola", "Quadringo", "Wingnut", "Corsegeist", "Smeltoise", - "Halbeetle", "Echologos", "Barbolt", "Dojodo", "Zeploom", "Kasappa", - "Cyllindrake", "Arbrella-North" - ], - }, - // { - // name: "[Gen 9] Scootopia Random Battle", - // desc: [ - // "The second iteration of the hit solomod Scootopia! Now in randbats!", - // ], - // threads: [ - // `• Spreadsheet`, - // ], - // ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Data Mod', 'Super Type Moves Rule', 'OHKO Clause'], - // banlist: [], - // team: 'random', - // mod: 'scootopia', - // }, - { - name: "[Gen 9] Shinymons", - desc: `A Pet Mods Room Mod where every Pokemon receives a new Shiny form.`, - mod: 'shinymons', - ruleset: ['Standard', 'Data Preview', '!Team Preview'], - banlist: ['Uber'], - validateSet(set, teamHas) { - let speciesName = set.species; - if (set.shiny) speciesName += "-Shiny"; - set.species = speciesName; - this.dex.data.Pokedex[this.toID(speciesName)].name = speciesName; - return this.validateSet(set, teamHas); - }, - onTeamPreview() { - this.add('clearpoke'); - for (const pokemon of this.getAllPokemon()) { - const details = pokemon.details - .replace(/(Arceus|Genesect|Gourgeist|Pumpkaboo|Xerneas|Silvally|Urshifu|Dudunsparce)(-[a-zA-Z?-]+)?/g, '$1-*') - .replace(/(Zacian|Zamazenta)(?!-Crowned)/g, '$1-*') // Hacked-in Crowned formes will be revealed - .replace(/(Greninja)(?!-Ash)/g, '$1-*'); // Hacked-in Greninja-Ash will be revealed - this.add('poke', pokemon.side.id, details, pokemon.item ? 'item' : ''); - } - this.makeRequest('teampreview'); - }, - }, - { - name: "[Gen 9] Signaturemons", - desc: `National Dex solomod where new Signature moves are introduced for fully-evolved Pokémon that don't have any.`, - mod: 'signaturemons', - teambuilderFormat: 'National Dex', - ruleset: ['Standard NatDex', 'Event Moves Clause', 'Species Clause', 'Terastal Clause', 'Z-Move Clause'], - /*Tentative restrictions - will work on it later - checkCanLearn(move, template, lsetData, set) { - if (['terablast'].includes(move.id)) return null; //Tera Blast for everyone (except Magikarp, Ditto, Smeargle, Cosmog, Cosmoem and Terapagos) - if (['hiddenpower'].includes(move.id)) return null; //Hidden power for no one (except Unown) - return this.checkCanLearn(move, template, lsetData, set); - },*/ - }, - { - name: "[Gen 9] Signaturemons Doubles", - desc: `National Dex solomod where new Signature moves are introduced for fully-evolved Pokémon that don't have any.`, - mod: 'signaturemons', - gameType: 'doubles', - teambuilderFormat: 'National Dex', - ruleset: ['Standard NatDex', 'Event Moves Clause', 'Species Clause', 'Terastal Clause', 'Z-Move Clause'], - }, - /*{ - name: "[Gen 9] Signaturemons Random Doubles", - desc: `National Dex solomod where new Signature moves are introduced for fully-evolved Pokémon that don't have any.`, - mod: 'signaturemons', - gameType: 'doubles', - team: 'random', - ruleset: ['Standard NatDex', 'Event Moves Clause', 'Species Clause', 'Terastal Clause', 'Z-Move Clause'], - },*/ - { - name: "[Gen 9] Spookymod", - desc: [ - "jumpscaare", - ], - threads: [ - `• Spookymod on Smogon Forums`, - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause','Spokymod'], - banlist: [], - teambuilderFormat: "National Dex", - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - let f = false; - let ff = false; - for (const set of team) { - if (set.species === 'Flutter Mane') f = true; - else if (set.species === 'Flutter Mane 2') ff = true; - if(f && ff) return ['Did you think you could bring two Flutter Manes to a game? Are you stupid?']; - let template = this.dex.species.get(set.species); - if (template.tier !== 'SM') { - return [set.species + ' is not usable in Spookymod.']; - } - } - }, - mod: 'spookymod', - }, - { - name: "[Gen 9] Spookymod Random Battle", - desc: [ - "jumpscaare", - ], - threads: [ - `• Spookymod on Smogon Forums`, - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', '!Team Preview', 'Spokymod'], - banlist: [], - team: 'random', - mod: 'spookymod', - }, - { - name: "[Gen 9] Stadium YB 3v3 Random Battle", - desc: [ - "Stadium YB: A randomized metagame where each player is given a set of rental Pokemon to battle with." - ], - threads: [ - `• Stadium YB in the Solomods Megathread`, - ], - mod: 'stadiumyb', - team: 'random', - bestOfDefault: true, - ruleset: [ - 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', - 'Species Clause', 'Dynamax Clause', 'Exact HP Mod', 'Force Open Team Sheets', 'Picked Team Size = 3', 'Max Team Size = 6', - ], - onSwitchIn(pokemon) { - const speed = pokemon.getStat('spe', false, true); - this.add('-message', `${pokemon.name}'s Speed stat is ${speed}!`); - }, - }, - { - name: "[Gen 9] Stadium YB 6v6 Random Battle", - desc: [ - "Stadium YB: A randomized metagame where each player is given a set of rental Pokemon to battle with." - ], - threads: [ - `• Stadium YB in the Solomods Megathread`, - ], - mod: 'stadiumyb', - team: 'random', - bestOfDefault: true, - ruleset: [ - 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Team Preview', - 'Species Clause', 'Dynamax Clause', 'Exact HP Mod', 'Force Open Team Sheets', 'Picked Team Size = 6', 'Max Team Size = 12', - ], - onSwitchIn(pokemon) { - const speed = pokemon.getStat('spe', false, true); - this.add('-message', `${pokemon.name}'s Speed stat is ${speed}!`); - }, - }, - // { - // name: "[Gen 9] Super Types OU", - // desc: "The Super Type mechanic from Scootopia, only it's applied to current gen 9 OU.", - // threads: [ - // `• Types + Moves Explained`, - // `• List of Defensive Type Combos`, - // ], - // mod: "supertypesou", - // ruleset: ['Standard NatDex', 'Z-Move Clause', 'Data Mod'], - // }, - { - name: "[Gen 2] Tera Crystal", - desc: ["Tera Crystal- A Gen 2 solomod where the Gen 9 mechanic of Terastallization is added to the game."], - mod: 'gen2teracrystal', - ruleset: ['Standard', 'Data Mod', 'Can Terastal'], - banlist: ['Uber'], - }, - { - name: "[Gen 9] The 3-3-1 Typechart", - desc: [ - "The 3-3-1 Typechart: A solomod that gives every type 3 weaknesses, 3 resistances, and 1 immunity.", - ], - threads: [ - `• Post in the Solomods Megathread`, - ], - - mod: 'the331typechartg9', - teambuilderFormat: 'National Dex', - ruleset:['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], - banlist: [ - 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', - 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', - 'Slowking-Base', 'Slowbro-Base' - ], - onBegin() { - this.add('-message', `Be sure to use /weak to find out everything's new type interactions!`); - }, - }, - { - name: "[Gen 9] Touhoumons", - desc: `2hu`, - threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'toho', - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: ['Bug Gem', 'Dark Gem', 'Dragon Gem', 'Electric Gem', 'Fairy Gem', 'Fighting Gem', 'Fire Gem', 'Flying Gem', 'Ghost Gem', 'Grass Gem', 'Ground Gem', 'Ice Gem', 'Poison Gem', 'Psychic Gem', 'Rock Gem', 'Steel Gem', 'Water Gem'], - unbanlist: ['Light of Ruin'], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'Toho') { - return [set.species + ' is not a Touhou character.']; - } - if (set.species == 'Cirno-Tanned' && set.ability !== 'Drought') - return ["Cirno-Tanned can only have Drought as its ability."] - if ((set.species !== 'Cirno-Tanned' && set.species !== 'Cirno') && set.ability === 'Drought') - return ["Only Cirno-Tanned can have Drought as its ability."] - } - }, - }, - { - name: "[Gen 9] Touhoumons Doubles", - desc: `2hu`, - threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'toho', - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], - banlist: [], - unbanlist: [], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'DToho') { - return [set.species + ' is not a Touhou character.']; - } - if (set.species == 'Cirno-Tanned' && set.ability !== 'Drought') - return ["Cirno-Tanned can only have Drought as its ability."] - if ((set.species !== 'Cirno-Tanned' && set.species !== 'Cirno') && set.ability === 'Drought') - return ["Only Cirno-Tanned can have Drought as its ability."] - } - }, - }, - { - name: "[Gen 1] Tradebacks Expanded", - threads: [ - `• Post in Solomods Megathread`, - `• Spreadsheet`, - ], - mod: 'gen1tradebacksexpanded', - ruleset: ['Standard'], - banlist: ['Uber'], - }, - { - name: "[Gen 9] Upside Down OU", - desc: `Modern Mechanics and Pokemon mixed with an Old Gen Powerlevel, complete with No Team Preview!`, - threads: [ - `Spreadsheet`, - ], - mod: 'upsidedown', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', '!Team Preview'], - banlist: ['All Pokemon', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'item: Quick Claw', 'Razor Fang', - 'Assist', 'Last Respects', 'Shed Tail', 'Sticky Web', 'Victory Dance', 'Diancite', 'Mawilite', 'Heavy Duty Boots', 'Choice Specs', 'Choice Scarf', - 'Life Orb', 'Eviolite', 'Flame Orb', 'Toxic Orb', 'Air Balloon', 'Light Clay', 'Terrain Extender', 'Damp Rock', 'Heat Rock', 'Smooth Rock', - 'Icy Rock', 'Red Card', 'Eject Pack', 'Eject Button', 'Weakness Policy', 'Blunder Policy', 'Booster Energy', 'Throat Spray', 'Clear Amulet', - 'Custap Berry', 'Focus Sash', 'Occa Berry', 'Passho Berry', 'Rindo Berry', 'Wacan Berry', 'Yache Berry', 'Colbur Berry', 'Payapa Berry', - 'Roseli Berry', 'Haban Berry', 'Coba Berry', 'Charti Berry', 'Shuca Berry', 'Tanga Berry', 'Kebia Berry', 'Babiri Berry', 'Chople Berry', - 'Kasib Berry', 'Fire Gem', 'Water Gem', 'Grass Gem', 'Electric Gem', 'Ice Gem', 'Dark Gem', 'Psychic Gem', 'Dragon Gem', 'Flying Gem', - 'Bug Gem', 'Fighting Gem', 'Rock Gem', 'Ground Gem', 'Steel Gem', 'Ghost Gem', 'Poison Gem', 'Abomasite', 'Absolite', 'Aerodactylite', - 'Aggronite', 'Alakazite', 'Altarianite', 'Ampharosite', 'Banettite', 'Beedrillite', 'Blastoisinite', 'Blazikenite', 'Blue Orb', - 'Cameruptite', 'Charizardite X', 'Charizardite Y', 'Galladite', 'Garchompite', 'Gardevoirite', 'Gengarite', 'Glalitite', 'Gyaradosite', - 'Houndoominite', 'Kangaskhanite', 'Latiasite', 'Latiosite', 'Lopunnite', 'Lucarionite', 'Manectite', 'Medichamite', 'Metagrossite', - 'Mewtwonite X', 'Mewtwonite Y', 'Pidgeotite', 'Pinsirite', 'Red Orb', 'Sablenite', 'Salamencite', 'Sceptilite', 'Scizorite', - 'Sharpedonite', 'Slowbronite', 'Steelixite', 'Swampertite', 'Tyranitarite', 'Venusaurite', - ], - unbanlist: ['Baton Pass', 'Wishiwashi', 'Mawile', 'Togepi', 'Togetic', 'Tarountula', 'Spidops', 'Pyukumuku', 'Cursola', 'Scatterbug', 'Spewpa', 'Vivillon', 'Bunnelby', 'Diggersby', 'Obstagoon', - 'Burmy', 'Wormadam', 'Mothim', 'Woobat', 'Swoobat', 'Wiglett', 'Wugtrio', 'Clodsire', 'Emolga', 'Cubone', 'Dedenne', - 'Togedemaru', 'Morpeko', 'Audino', 'Kecleon', 'Purrloin', 'Liepard', 'Honedge', 'Doublade', 'Snubbull', 'Granbull', 'Nymble', - 'Lokix', 'Nickit', 'Thievul', 'Gossifleur', 'Eldegoss', 'Finneon', 'Lumineon', 'Skwovet', 'Greedent', 'Spritzee', 'Aromatisse', - 'Espurr', 'Throh', 'Sawk', 'Klefki', 'Rellor', 'Rabsca', 'Trubbish', 'Garbodor', 'Stunfisk', 'Furfrou', 'Joltik', 'Galvantula', - 'Phantump', 'Trevenant', 'Tatsugiri', 'Deerling', 'Sawsbuck', 'Snom', 'Frosmoth', 'Cramorant', 'Oricorio', 'Veluza', 'Crabrawler', - 'Crabominable', 'Salandit', 'Salazzle', 'Orthworm', 'Swirlix', 'Slurpuff', 'Darumaka', 'Darmanitan', 'Helioptile', 'Heliolisk', - 'Flittle', 'Espathra', 'Golett', 'Golurk', 'Sandygast', 'Palossand', 'Runerigus', 'Heatmor', 'Durant', 'Venipede', 'Whirlipede', - 'Scolipede', 'Druddigon', 'Pikipek', 'Trumbeak', 'Toucannon', 'Turtonator', 'Pichu', 'Pikachu', 'Shroodle', 'Grafaiai', 'Chewtle', - 'Drednaw', 'Drampa', 'Dwebble', 'Crustle', 'Elgyem', 'Beheeyem', 'Capsakid', 'Scovillain', 'Munna', 'Musharna', 'Rockruff', - 'Greavard', 'Houndstone', 'Pidove', 'Tranquill', 'Unfezant', 'Lechonk', 'Pawmi', 'Pawmo', 'Pawmot', 'Bouffalant', 'Yamper', 'Boltund', - 'Skrelp', 'Dragalge', 'Pancham', 'Pangoro', 'Tirtouga', 'Carracosta', 'Mareanie', 'Toxapex', 'Rookidee', 'Corvisquire', - 'Corviknight', 'Blitzle', 'Zebstrika', 'Pansear', 'Panpour', 'Pansage', 'Simisear', 'Simipour', 'Simisage', 'Fletchling', - 'Fletchinder', 'Talonflame', 'Grubbin', 'Charjabug', 'Vikavolt', 'Varoom', 'Revavroom', 'Mudbray', 'Mudsdale', 'Sewaddle', - 'Swadloon', 'Leavanny', 'Cufant', 'Copperajah', 'Clauncher', 'Clawitzer', 'Carbink', 'Binacle', 'Barbaracle', 'Stufful', 'Bewear', - 'Hawlucha', 'Nacli', 'Naclstack', 'Garganacl', 'Toxel', 'Cubchoo', 'Beartic', 'Maschiff', 'Mabosstiff', 'Dracozolt', 'Arctovish', - 'Sirfetchd', 'Litleo', 'Pyroar', 'Sinistea', 'Polteageist', 'Tympole', 'Palpitoad', 'Seismitoad', 'Bounsweet', 'Steenee', - 'Tsareena', 'Blipbug', 'Dottler', 'Orbeetle', 'Rolycoly', 'Carkol', 'Coalossal', 'Rufflet', 'Silicobra', 'Sandaconda', 'Smoliv', - 'Dolliv', 'Arboliva', 'Impidimp', 'Morgrem', 'Grimmsnarl', 'Hatenna', 'Hattrem', 'Hatterene', 'Bergmite', 'Avalugg', 'Toedscool', - 'Toedscruel', 'Tynamo', 'Eelektrik', 'Eelektross', 'Mime Jr.', 'Mr. Rime', 'Girafarig', 'Farigiraf', 'Cetoddle', 'Cetitan', - 'Stantler', 'Wyrdeer', 'Sizzlipede', 'Centiskorch', 'Glimmet', 'Glimmora', 'Exeggcute', 'Dondozo', 'Noibat', 'Noivern', - 'Duraludon', 'Skiddo', 'Gogoat', 'Dunsparce', 'Dudunsparce', 'Poipole', 'Naganadel', 'Fuecoco', 'Crocalor', 'Skeledirge', - 'Rowlet', 'Dartrix', 'Scorbunny', 'Raboot', 'Cinderace', 'Popplio', 'Brionne', 'Primarina', 'Froakie', 'Frogadier', 'Greninja', - 'Snivy', 'Servine', 'Serperior', 'Flabébé', 'Floette', 'Florges', 'Archen', 'Archeops', 'Blacephalon', 'Celesteela', - 'Slither Wing', 'Iron Jugulis', 'Iron Bundle', 'Scream Tail', 'Sandy Shocks', 'Great Tusk', 'Iron Treads', 'Articuno', 'Virizion', - 'Iron Leaves', 'Brute Bonnet', 'Iron Thorns', 'Meloetta', 'Diancie', 'Goomy', 'Sliggoo', 'Goodra', 'Corsola-Galar', - 'Rattata-Alola', 'Raticate-Alola', 'Zigzagoon-Galar', 'Linoone-Galar', 'Wormadam-Sandy', 'Wormadam-Trash Cloak', 'Wooper-Paldea', - 'Marowak-Alola', 'Sneasel-Hisui', 'Sandshrew-Alola', 'Sandslash-Alola', 'Basculin-White-Striped', 'Basculegion', 'Basculegion-F', - 'Meowstic', 'Meowstic-F', 'Yamask-Galar', 'Raichu-Alola', 'Lycanroc', 'Lycanroc-Midnight', 'Oinkologne', 'Oinkologne-F', - 'Voltorb-Hisui', 'Electrode-Hisui', 'Pumpkaboo', 'Pumpkaboo-Small', 'Pumpkaboo-Large', 'Pumpkaboo-Super', 'Gourgeist', - 'Gourgeist-Small', 'Gourgeist-Large', 'Gourgeist-Super', 'Geodude-Alola', 'Graveler-Alola', 'Golem-Alola', 'Ponyta-Galar', - 'Rapidash-Galar', 'Toxtricity', 'Toxtricity-Low-Key', 'Farfetchd-Galar', 'Braviary-Hisui', 'Mr. Mime-Galar', 'Exeggutor-Alola', - 'Decidueye-Hisui', 'Ursaluna-Bloodmoon', 'Articuno-Galar', 'Audino-Mega', 'Petilil', 'Lilligant-Hisui', 'Clobbopus', 'Grapploct', - 'Amaura', 'Aurorus', 'Diglett-Alola', 'Dugtrio-Alola', 'Qwilfish-Hisui', 'Overqwil', 'Morelull', 'Shiinotic', - 'Wooloo', 'Dubwool', 'Bombirdier', - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['Upside Down OU', 'Upside Down NFE', 'Upside Down LC']; //Upside Down Uber exists but not playable - for (const set of team) { - let template = this.dex.species.get(set.species); - //if (template === 'Ursaluna-Bloodmoon' && set.nature !== 'Hardy') return [set.species + ' must have a Hardy Nature.']; - //non functional atm - //if (template === 'Toxtricity' && ['Lonely', 'Bold', 'Relaxed', 'Timid', 'Serious', 'Modest', 'Mild', 'Quiet', 'Bashful', 'Calm', 'Gentle', 'Careful'].includes(set.nature)) return [set.nature + 'is not a valid nature for this form of Toxtricity.']; - //non functional atm also amped tox keeps getting - //if (template === 'Toxtricity-Low-Key' && ['Hardy', 'Brave', 'Adamant', 'Naughty', 'Docile', 'Impish', 'Lax', 'Hasty', 'Jolly', 'Naive', 'Rash', 'Sassy', 'Quirky'].includes(set.nature)) return [set.species + 'is not a valid nature for this form of Toxtricity.']; - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Upside Down OU.']; - } - } - }, - }, - { - name: "[Gen 1] Violet Version G1", - desc: "Violet Version G1 Rainbow Edition is a balance mod focused on bringing wonderful new feelings and colors to RBY competitive play.", - mod: "gen1violetversion", - gen: 1, - ruleset: ['Obtainable', 'Sleep Clause Mod', 'Freeze Clause Mod', 'Species Clause', 'OHKO Clause', 'Evasion Moves Clause', 'HP Percentage Mod', 'Cancel Mod', 'Team Preview'], - banlist: ['All Pokemon'], - unbanlist: ['Aerodactyl', 'Alakazam', 'Arbok', 'Articuno', 'Beedrill', 'Blastoise', 'Butterfree', 'Chansey', 'Charizard', 'Cloyster', 'Dragonite', 'Dugtrio', 'Electabuzz', 'Electrode', 'Exeggutor', 'Flareon', 'Gengar', 'Golbat', 'Golduck', 'Golem', 'Gyarados', 'Hypno', 'Jynx', 'Kabutops', 'Machamp', 'Magmar', 'Magneton', 'Mew', 'Moltres', 'Muk', 'Nidoqueen', 'Ninetales', 'Parasect', 'Pidgeot', 'Pinsir', 'Poliwrath', 'Porygon', 'Slowbro', 'Snorlax', 'Starmie', 'Tangela', 'Tauros', 'Vileplume', 'Zapdos'], - }, - { - name: "[Gen 8] Weedmons", - desc: `Weedmons is a SoloMod originally led by The Reptile, whose purpose is primarily to make a fun micrometa based on the completely arbitrary limitations of the theme of Weed!.`, - mod: 'weedmons', - gen: 9, - ruleset: ['Standard NatDex', 'OHKO Clause', 'Species Clause', 'Sleep Clause Mod', 'Dynamax Clause'], - banlist: ['All Pokemon', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'item: Quick Claw' /*Wtf is this validator on? What ability?*/, 'Razor Fang', - 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Altarianite', 'Charizardite X', 'Charizardite Y', 'Blazikenite',], - unbanlist: ['Altaria', 'Azumarill', 'Azurill', 'Blaziken', 'Braixen', 'Brionne', 'Blitzle', 'Bouffalant', 'Castform', 'Centiskorch', 'Charizard', 'Charmander', 'Charmeleon', 'Cherubi', - 'Chimchar', 'Cinderace', 'Combusken', 'Crocalor', 'Cyndaquil', 'Dartrix', 'Deerling', 'Delphox', 'Dragonair', 'Drampa', 'Drizzile', 'Emboar', 'Farigiraf', 'Fennekin', 'Fuecoco', 'Girafarig', - 'Gogoat', 'Golduck', 'Goodra', 'Goodra-Hisui', 'Goomy', 'Hakamo-O', 'Heatmor', 'Incineroar', 'Infernape', 'Lickilicky', 'Lickitung', 'Linoone', 'Linoone-Galar', 'Litten', 'Marill', 'Metang', - 'Mightyena', 'Miltank', 'Monferno', 'Oddish', 'Pansear', 'Pignite', 'Poipole', 'Psyduck', 'Quilava', 'Raboot', 'Sawsbuck', 'Scorbunny', 'Shelgon', 'Simisear', 'Sizzlipede', 'Skeledirge', - 'Skiddo', 'Sliggoo', 'Sliggoo-Hisui', 'Stantler', 'Swablu', 'Tepig', 'Thwackey', 'Torchic', 'Torkoal', 'Torracat', 'Typhlosion', 'Typhlosion-Hisui', 'Watchog', 'Wyrdeer', 'Zebstrika', 'Zweilous', - ], - }, - { - name: "[Gen 9] Woomod", - desc: `woo`, - threads: [ - `• Spreadsheet for the mod`, - ], - mod: 'woomod', - ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], - banlist: ['Eviolite', 'Light Ball','Baton Pass','Ditto'], - teambuilderFormat: 'National Dex', - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['woomod']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in woomod.']; - } - } - }, - }, - /* - { - name: "[Gen 4] Yayamons", - threads: [ - `• gen 9 duomod back and better than ever baybeeeeee`, - // threads: [ - // `• Spreadsheet`, - // ], - // team: 'random', - // mod: 'gen9duomod', - // ruleset: ['Standard NatDex', 'Subscribe For More Content', 'Duomod Data Mod'], - // onSwitchIn(pokemon) { - // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - // }, - // }, - // { - // name: "[Gen 8] Duomod Random Battle", - // desc: `Duomod: Legendary YouTuber and professional Smash player DuoM2's solomod, build around the idea where nobody is ever truly losing.`, - // threads: [ - // `• Spreadsheet`, - // ], - // team: 'random', - // mod: 'duomod', - // ruleset: ['Standard NatDex', 'Subscribe For More Content', 'Duomod Data Mod'], - // onSwitchIn(pokemon) { - // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - // }, - // }, - // { - // name: "[Gen 8] Fusion Evolution UU Random Battle", - // threads: [ - // `• Fusion Evolution Under Used on Smogon Forums`, - // `• Spreadsheet`, - // ], - // mod: 'feuu', - // team: 'random', - // ruleset: ['OHKO Clause', 'Obtainable', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Cancel Mod'], - // }, - // { - // name: "[Gen 1] FutureProofing Random Battle", - // desc: `[Gen 1] FutureProofing: Adapting Dark, Steel, and Fairy-type moves and Pokemon to the Gen 1 OU metagame.`, - // threads: [ - // `• FutureProofing on Smogon Forums`, - // ], - // mod: 'gen1futureproofing', - // team: 'random', - // ruleset: ['Standard', 'Data Mod'], - // }, - // { - // name: "[Gen 8] JolteMons Random Battle", - // desc: [ - // "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", - // ], - // threads: [ - // `• Thread on the Smogon Forums`, - // `• Spreadsheet`, - // ], - // mod: 'joltemons', - // team: 'random', - // ruleset: ['Dynamax Clause', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Mega Data Mod', 'Data Mod', 'Z-Move Clause'], - // }, - // { -// name: "[Gen 1] Modern Gen 1 Random Battle", - // desc: [ - // "Modern Gen 1: Gen 1 with all Pokemon and moves from Gen 9 Natdex added.", - // ], - // threads: [ - // `• Thread on the Smogon Forums`, - // ], - // mod: 'moderngen1', - // team: 'random', - // ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod'], - // }, - // { -// name: "[Gen 2] GSC Doubles Random Battle", - // desc: [ - // "GSC Doubles with random teams.", - // ], - // threads: [ - // `• Thread on the Smogon Forums`, - // ], - // mod: 'gen2doubles', - // gameType: 'doubles', - // team: 'random', - // ruleset: ['Standard Doubles', 'Swagger Clause'], - // banlist: ['Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], - // }, - // { - // name: "[Gen 8] Roulettemons Random", - // threads: [ - // `• Roulettemons on Smogon Forums`, - // `• Spreadsheet`, - // `• Bonus Random Team Generator`, - // ], - // team: 'random', - // mod: 'roulettemons', - // ruleset: ['Standard NatDex', 'Dynamax Clause', 'Sleep Clause Mod'], - // onSwitchIn(pokemon) { - // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - // }, - // onChangeSet(set) { - // if (set.species === 'Chillyte-Mega') { - // set.species = 'Chillyte'; - // set.ability = 'Grassy Surge'; - // } - // }, - // }, - // { - // name: "[Gen 8] OU Theorymons Random Battle", - // threads: [ - // `• OU Theorymons on Smogon Forums`, - // `• Spreadsheet`, - // ], - // team: 'random', - // mod: 'outheorymons', - // ruleset: ['Dynamax Clause', 'Data Mod', 'Species Clause'], - // }, - // { - // name: "[Gen 8] Roulettemons Random Doubles", - // threads: [ - // `• Roulettemons on Smogon Forums`, - // `• Spreadsheet`, - // `• Bonus Random Team Generator`, - // ], - // team: 'random', - // gameType: 'doubles', - // mod: 'roulettemons', - // ruleset: ['Standard NatDex', 'Sleep Clause Mod'], - // onSwitchIn(pokemon) { - // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - // }, - // onChangeSet(set) { - // if (set.species === 'Chillyte-Mega') { - // set.species = 'Chillyte'; - // } - // }, - // }, - /////////////////////////////////////////////////////////////// - /////////////// Pet Mods Bonus Formats ////////////////// - /////////////////////////////////////////////////////////////// - { - section: "Pet Mods Bonus Formats", - column: 3, - // name: "petmodsbonusformats", - }, - { - name: "[Gen 9] Blank Canvas Random Battle", - desc: `A Gen 9 micrometa feautring only Fakemon made by teams of players with a limited budget.`, - threads: [ - `Blank Canvas`, - ], - mod: 'blankcanvas', - team: 'randomBLC', - ruleset: ['Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod', 'Terastal Clause', 'Data Mod'], - }, - { - name: "[Gen 9] Breeding Variants V4 No Megas", - desc: `A NatDex format that adds alternate forms for Pokemon based around inheriting elements from a possible breeding partner.`, - threads: [ - `• Breeding Variants V4`, - ], - mod: 'breedingvariantsnatdex', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Mega Data Mod'], - banlist: [ - 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', - 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', - ], - onValidateSet(set) { - const problems: string[] = []; - const setHas: {[k: string]: true} = {}; - let species = this.dex.species.get(set.species); - let item = this.dex.items.get(set.item); - let tierSpecies = species; - - if (item.megaStone) { - [item.name + ' is banned as this is a no mega format.']; - } - }, - }, - { - name: "[Gen 9] Breeding Variants V4 SV Cup", - desc: `A SV OU format that adds alternate forms for Pokemon based around inheriting elements from a possible breeding partner.`, - threads: [ - `• Breeding Variants V4`, - ], - mod: 'breedingvariants', - teambuilderFormat: "OU", - ruleset: ['Standard', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 9] Crossover Chaos [Defunct]", - desc: `Crossover Chaos, a micrometa designed to crossover characters from video game titles.`, - threads: [ - `Gen 9 Crossover Chaos`, - ], - mod: 'gen9crossoverchaos', - teambuilderFormat: "National Dex", - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', /* 'Mega Data Mod' */], - onChangeSet(set) { - const item = this.toID(set.item); - if (set.species === 'King Dedede' || set.species === 'Masked Dedede') { - if (item === 'dededesmask') { - set.species = 'Masked Dedede'; - let attackOrder = set.moves.indexOf('attackorder'); - if (attackOrder >= 0) { - set.moves[attackOrder] = 'gigatonhammer'; - } - let beatup = set.moves.indexOf('beatup'); - if (beatup >= 0) { - set.moves[beatup] = 'electrohammer'; - } - } - else { - set.species = 'King Dedede'; - } - } - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['CC OU', 'CC UU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Crossover Chaos Gen 9.']; - } - } - }, - }, - { - name: "[Gen 9] Crossover Chaos AG [Defunct]", - desc: `Crossover Chaos, allowing mons in CC Ubers and unintroduced to be used.`, - threads: [ - `Gen 9 Crossover Chaos`, - ], - mod: 'gen9crossoverchaos', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', /* 'Mega Data Mod' */], - onChangeSet(set) { - const item = this.toID(set.item); - if (set.species === 'King Dedede' || set.species === 'Masked Dedede') { - if (item === 'dededesmask') { - set.species = 'Masked Dedede'; - let attackOrder = set.moves.indexOf('attackorder'); - if (attackOrder >= 0) { - set.moves[attackOrder] = 'gigatonhammer'; - } - let beatup = set.moves.indexOf('beatup'); - if (beatup >= 0) { - set.moves[beatup] = 'electrohammer'; - } - } - else { - set.species = 'King Dedede'; - } - } - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['CC OU', 'CC UU', 'CC Ubers', 'unintroduced']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Crossover Chaos Gen 9 AG.']; - } - } - }, - }, - { - name: "[Gen 9] Crossover Chaos [Ver. C] Random Battle", - mod: 'gen9crossoverchaosc', - team: 'random', - desc: `gen9crossoverchaosc`, - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Moves Clause', 'Terastal Clause', 'Mega Data Mod', '!Team Preview'], - }, - { - name: "[Gen 9] Dream World Theorymons", - desc: '[Gen 8] Gen 9 Dream World Theorymons: A testing ground for the Gen 9 OU Theorymons metagame.', - mod: 'outheorymons', - ruleset: ['Standard', 'Data Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass', 'Last Respects'], - }, - { - name: "[Gen 9] Glacemons Balanced Hackmons", - desc: `Balanced Hackmons with Glacemons elements mixed in.`, - mod: 'glacemons', - searchShow: false, - ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', 'Ability Clause = 2', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', 'Terastal Clause', '!Obtainable'], - banlist: [ - 'Cramorant-Gorging', 'Calyrex-Shadow', 'Darmanitan-Galar-Zen', 'Eternatus-Eternamax', 'Greninja-Ash', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Arena Trap', - 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Magnet Pull', 'Neutralizing Gas', 'Parental Bond', 'Pure Power', 'Shadow Tag', - 'Stakeout', 'Water Bubble', 'Wonder Guard', 'Gengarite', 'Berserk Gene', 'Belly Drum', 'Bolt Beak', 'Ceaseless Edge', 'Chatter', 'Double Iron Bash', 'Electrify', - 'Last Respects', 'Octolock', 'Rage Fist', 'Revival Blessing', 'Shed Tail', 'Shell Smash', 'Comatose + Sleep Talk', 'Imprison + Transform', - // Glacemons bans - 'Cosmic Energy', 'Light Power', 'Run It Back', 'Dungeon\'s Looplet', 'Neutralizer', 'Puppet Strings', - ], - restricted: ['Arceus'], - onValidateTeam(team, format) { - // baseSpecies:count - const restrictedPokemonCount = new this.dex.Multiset(); - for (const set of team) { - const species = this.dex.species.get(set.species); - if (!this.ruleTable.isRestrictedSpecies(species)) continue; - restrictedPokemonCount.add(species.baseSpecies); - } - for (const [baseSpecies, count] of restrictedPokemonCount) { - if (count > 1) { - return [ - `You are limited to one ${baseSpecies} forme.`, - `(You have ${count} ${baseSpecies} forme${count === 1 ? '' : 's'}.)`, - ]; - } - } - }, - }, - { - name: "[Gen 3] Hoenn Gaiden UU", - desc: ["Hoenn Gaiden: A Gen 3 pet mod that aims to devamp Gen 4-8 Pokemon, moves and items into the Gen 3 mechanics."], - threads: [ - `• Hoenn Gaiden on Smogon Forums`, - ], - - mod: 'gen3uuhoenngaiden', - ruleset: ['Standard', 'Data Mod', 'Freeze Clause Mod'], - banlist: [ - 'Uber', 'OU', 'UUBL', 'Snow Warning', 'Air Balloon', - 'Babiri Berry', 'Charti Berry', 'Chilan Berry', 'Chople Berry', 'Coba Berry', 'Colbur Berry', - 'Haban Berry', 'Kasib Berry', 'Kebia Berry', 'Occa Berry', 'Passho Berry', 'Payapa Berry', - 'Rindo Berry', 'Roseli Berry', 'Shuca Berry', 'Tanga Berry', 'Wacan Berry', 'Yache Berry', - ], - unbanlist: [], - }, - { - name: "[Gen 9] Iron Fist Doubles", - threads: [ - `Iron Fist`, - ], - mod: 'sharedpowerironfist', - teambuilderFormat: "National Dex", - gameType: 'doubles', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Big Button Rule', 'MILF Rule', 'Ohmyrod Rule', 'Serious Rule', 'I love refrigerators Rule', 'Mario Kart Wii Clause'], - banlist: ['Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', - 'Buginium Z', 'Darkinium Z', 'Dragonium Z', 'Electrium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Normalium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Waterium Z', - 'Abomasite', 'Absolite', 'Red Orb', 'Fish', 'Diamond Hand', 'Hoenn'], - unbanlist: ['Light of Ruin', 'Baddy Bad'], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['IF']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Iron Fist.']; - } - } - }, - }, - { - name: "[Gen 8] JolteMons Random Battle", - desc: `Pokémon, items, abilities, and moves are redesigned for OU, and new items, abilities, and moves are added, all without changing base stats.`, - threads: [ - `• JolteMons`, - `• Spreadsheet`, - ], - mod: 'joltemons', - team: 'random', - ruleset: ['Dynamax Clause', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Mega Data Mod', 'Z-Move Clause'], - }, - { - name: "[Gen 9] MetaMons Expanded", - desc: [ - "In this Pet Mod, we will aim to create a decently-sized micrometa that will expand in the unique niches of some Pokémon, giving them the spotlight after all the time they have been waiting.", - ], - threads: [ - '• MetaMons', - '• Spreadsheet', - ], - mod: 'metamons', - ruleset:['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], - banlist: [ - 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Beedrillite' - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}} */ - let speciesTable = {}; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (template.tier !== 'MetaMons' && template.tier !== 'Gen 8 MetaMons' && template.tier !== 'Gen 7 MetaMons') { - return [set.species + ' is not usable in MetaMons Expanded.']; - } - } - }, - }, - { - name: "[Gen 6] Mix and Megas Revisited", - threads: [ - `• Megas Revisited on Smogon Forums`, - `• Spreadsheet`, - ], - mod: 'gen6mixandmegasrevisited', - ruleset: ['Standard', 'Swagger Clause', 'Mega Data Mod'], - banlist: [ - 'Medichamite', 'Glalitite', 'Altarianite', 'Mawilite', - ], - restricted: [ - 'Arceus', 'Cresselia', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dragonite', 'Genesect', - 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Manaphy', 'Mewtwo', - 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shaymin-Sky', 'Slaking', 'Xerneas', 'Yveltal', 'Zekrom', - ], - onValidateTeam(team) { - const itemTable = new Set(); - for (const set of team) { - const item = this.dex.items.get(set.item); - if (!item.megaStone && !item.onPrimal && - !item.forcedForme?.endsWith('Origin') && !item.name.startsWith('Rusted')) continue; - const natdex = this.ruleTable.has('standardnatdex'); - if (natdex && item.id !== 'ultranecroziumz') continue; - const species = this.dex.species.get(set.species); - if (species.isNonstandard && !this.ruleTable.has(`+pokemontag:${this.toID(species.isNonstandard)}`)) { - return [`${species.baseSpecies} does not exist in gen 9.`]; - } - if ((item.itemUser?.includes(species.name) && !item.megaStone && !item.onPrimal) || - (natdex && species.name.startsWith('Necrozma-') && item.id === 'ultranecroziumz')) { - continue; - } - if (this.ruleTable.isRestrictedSpecies(species) || this.toID(set.ability) === 'powerconstruct') { - return [`${species.name} is not allowed to hold ${item.name}.`]; - } - if (itemTable.has(item.id)) { - return [ - `You are limited to one of each mega stone/orb/rusted item/sinnoh item.`, - `(You have more than one ${item.name})`, - ]; - } - itemTable.add(item.id); - } - }, - onBegin() { - for (const pokemon of this.getAllPokemon()) { - pokemon.m.originalSpecies = pokemon.baseSpecies.name; - } - }, - onSwitchIn(pokemon) { - // @ts-ignore - const originalFormeSpecies = this.dex.species.get(pokemon.species.originalSpecies); - if (originalFormeSpecies.exists && pokemon.m.originalSpecies !== originalFormeSpecies.baseSpecies) { - // Place volatiles on the Pokémon to show its mega-evolved condition and details - this.add('-start', pokemon, originalFormeSpecies.requiredItem || originalFormeSpecies.requiredMove, '[silent]'); - const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); - if (oSpecies.types.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) { - this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - } - } - }, - // Starting innate abilities in scripts#actions - onSwitchOut(pokemon) { - // @ts-ignore - const oMegaSpecies = this.dex.species.get(pokemon.species.originalSpecies); - if (oMegaSpecies.exists && pokemon.m.originalSpecies !== oMegaSpecies.baseSpecies) { - this.add('-end', pokemon, oMegaSpecies.requiredItem || oMegaSpecies.requiredMove, '[silent]'); - } - }, - }, - { - name: "[Gen 9] TeraMax VGC", - mod: 'teramax', - gameType: 'doubles', - bestOfDefault: true, - ruleset: ['Obtainable', 'Team Preview', 'Species Clause', 'Nickname Clause', 'Item Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], - banlist: [ - 'Battle Bond', 'Melmetal-Gmax', 'Ogerpon-Hearthflame + Close Combat', 'Ogerpon-Hearthflame + Rock Blast', - 'Ogerpon-Wellspring + Close Combat', 'Ogerpon-Wellspring + Rock Blast', 'Ogerpon-Cornerstone + Rock Blast', - 'Restricted Legendary', 'Mythical', - ], - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['TMOU', 'TMFE', 'TMNFE', "TMLC"]; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in TeraMax.']; - } - } - }, - onSwitchOut(pokemon) { - const isTeraStellar = pokemon.terastallized === 'Stellar'; - if (isTeraStellar) { - pokemon.stellarBoostedTypes = []; - } - }, - }, - { - name: "[Gen 9] VaporeMons Random Battle (Beta)", - desc: [ - "VaporeMons: The third mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", - ], - threads: [ - `• Thread on the Smogon Forums`, - `• Spreadsheet`, - ], - mod: 'gen9vaporemons', - team: 'random', - ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause'], - }, - { - name: "[Gen 9] VaporeMons UU", - desc: [ - "VaporeMons: The third mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", - ], - threads: [ - `• Thread on the Smogon Forums`, - `• Spreadsheet`, - ], - mod: 'gen9vaporemons', - teambuilderFormat: 'UU', - ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['OU', 'UUBL', 'Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Light Clay', 'Dancing Shoes', 'Fling + Segin Star Shard', 'Charizardite Shard X'], - }, +// placeholder link + mod: 'yayamons', + gameType: 'doubles', + ruleset: ['Standard Doubles', 'Swagger Clause'], + banlist: ['Uber'], + },*/ /////////////////////////////////////////////////////////////// - /////////////// Monster Hunter Solomod ////////////////// + ///////////////////// Non-Smogon Mods ///////////////////////// + /////////////////////////////////////////////////////////////// + // { + // section: "Non-Smogon Mods", + // column: 2, + // }, + + /////////////////////////////////////////////////////////////// + //////////////////////// Randbats ///////////////////////////// + /////////////////////////////////////////////////////////////// + // { + // section: "Randbats", + // column: 2, + // }, + // { + // name: "[Gen 9] Duomod Random Battle", + // desc: `gen 9 duomod back and better than ever baybeeeeee`, + // threads: [ + // `• Spreadsheet`, + // ], + // team: 'random', + // mod: 'gen9duomod', + // ruleset: ['Standard NatDex', 'Subscribe For More Content', 'Duomod Data Mod'], + // onSwitchIn(pokemon) { + // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + // }, + // }, + // { + // name: "[Gen 8] Duomod Random Battle", + // desc: `Duomod: Legendary YouTuber and professional Smash player DuoM2's solomod, build around the idea where nobody is ever truly losing.`, + // threads: [ + // `• Spreadsheet`, + // ], + // team: 'random', + // mod: 'duomod', + // ruleset: ['Standard NatDex', 'Subscribe For More Content', 'Duomod Data Mod'], + // onSwitchIn(pokemon) { + // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + // }, + // }, + // { + // name: "[Gen 8] Fusion Evolution UU Random Battle", + // threads: [ + // `• Fusion Evolution Under Used on Smogon Forums`, + // `• Spreadsheet`, + // ], + // mod: 'feuu', + // team: 'random', + // ruleset: ['OHKO Clause', 'Obtainable', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Data Mod', 'Mega Data Mod', 'Cancel Mod'], + // }, + // { + // name: "[Gen 1] FutureProofing Random Battle", + // desc: `[Gen 1] FutureProofing: Adapting Dark, Steel, and Fairy-type moves and Pokemon to the Gen 1 OU metagame.`, + // threads: [ + // `• FutureProofing on Smogon Forums`, + // ], + // mod: 'gen1futureproofing', + // team: 'random', + // ruleset: ['Standard', 'Data Mod'], + // }, + // { + // name: "[Gen 8] JolteMons Random Battle", + // desc: [ + // "JolteMons: A sequel to SylveMons where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + // ], + // threads: [ + // `• Thread on the Smogon Forums`, + // `• Spreadsheet`, + // ], + // mod: 'joltemons', + // team: 'random', + // ruleset: ['Dynamax Clause', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Mega Data Mod', 'Data Mod', 'Z-Move Clause'], + // }, + // { +// name: "[Gen 1] Modern Gen 1 Random Battle", + // desc: [ + // "Modern Gen 1: Gen 1 with all Pokemon and moves from Gen 9 Natdex added.", + // ], + // threads: [ + // `• Thread on the Smogon Forums`, + // ], + // mod: 'moderngen1', + // team: 'random', + // ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod'], + // }, + // { +// name: "[Gen 2] GSC Doubles Random Battle", + // desc: [ + // "GSC Doubles with random teams.", + // ], + // threads: [ + // `• Thread on the Smogon Forums`, + // ], + // mod: 'gen2doubles', + // gameType: 'doubles', + // team: 'random', + // ruleset: ['Standard Doubles', 'Swagger Clause'], + // banlist: ['Uber', 'Bright Powder', 'King\'s Rock', 'Quick Claw'], + // }, + // { + // name: "[Gen 8] Roulettemons Random", + // threads: [ + // `• Roulettemons on Smogon Forums`, + // `• Spreadsheet`, + // `• Bonus Random Team Generator`, + // ], + // team: 'random', + // mod: 'roulettemons', + // ruleset: ['Standard NatDex', 'Dynamax Clause', 'Sleep Clause Mod'], + // onSwitchIn(pokemon) { + // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + // }, + // onChangeSet(set) { + // if (set.species === 'Chillyte-Mega') { + // set.species = 'Chillyte'; + // set.ability = 'Grassy Surge'; + // } + // }, + // }, + // { + // name: "[Gen 8] OU Theorymons Random Battle", + // threads: [ + // `• OU Theorymons on Smogon Forums`, + // `• Spreadsheet`, + // ], + // team: 'random', + // mod: 'outheorymons', + // ruleset: ['Dynamax Clause', 'Data Mod', 'Species Clause'], + // }, + // { + // name: "[Gen 8] Roulettemons Random Doubles", + // threads: [ + // `• Roulettemons on Smogon Forums`, + // `• Spreadsheet`, + // `• Bonus Random Team Generator`, + // ], + // team: 'random', + // gameType: 'doubles', + // mod: 'roulettemons', + // ruleset: ['Standard NatDex', 'Sleep Clause Mod'], + // onSwitchIn(pokemon) { + // this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + // }, + // onChangeSet(set) { + // if (set.species === 'Chillyte-Mega') { + // set.species = 'Chillyte'; + // } + // }, + // }, + /////////////////////////////////////////////////////////////// + /////////////// Pet Mods Bonus Formats ////////////////// /////////////////////////////////////////////////////////////// { - section: "Monster Hunter Solomod", + section: "Pet Mods Bonus Formats", column: 3, - // name: "monsterhuntersolomod", - }, - { - name: "[Gen 9] Monster Hunter Randoms", - mod: 'monsterhunter', - team: 'random', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', - 'Species Clause', 'Terastal Clause', '!Team Preview'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, - }, - { - name: "[Gen 9] Monster Hunter Randoms Doubles (WIP)", - gameType: 'doubles', - mod: 'monsterhunter', - team: 'random', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', - 'Species Clause', 'Terastal Clause', '!Team Preview'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, + // name: "petmodsbonusformats", }, { - name: "[Gen 9] Monster Hunter Randoms FFA (WIP)", - gameType: 'freeforall', - mod: 'monsterhunter', - team: 'random', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', - 'Species Clause', 'Terastal Clause', '!Team Preview'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, + name: "[Gen 9] Blank Canvas Random Battle", + desc: `A Gen 9 micrometa feautring only Fakemon made by teams of players with a limited budget.`, + threads: [ + `Blank Canvas`, + ], + mod: 'blankcanvas', + team: 'randomBLC', + ruleset: ['Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod', 'Terastal Clause', 'Data Mod'], }, { - name: "[Gen 9] Monster Hunter AG", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhunter', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod'], - banlist: [], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter AG.']; - } - } - }, - }, - { - name: "[Gen 9] Monster Hunter Doubles", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhunter', - gameType: 'doubles', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', - 'Evasion Clause', 'Species Clause', 'Terastal Clause'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Shagaru Magala + Strength Sap'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter Doubles.']; - } - } - }, - }, - { - name: "[Gen 9] Monster Hunter Free-For-Alls", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhunter', - gameType: 'freeforall', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', - 'Evasion Clause', 'Species Clause'], - banlist: ['Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter FFA.']; - } + name: "[Gen 9] Breeding Variants V4 No Megas", + desc: `A NatDex format that adds alternate forms for Pokemon based around inheriting elements from a possible breeding partner.`, + threads: [ + `• Breeding Variants V4`, + ], + mod: 'breedingvariantsnatdex', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Mega Data Mod'], + banlist: [ + 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', + 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', + ], + onValidateSet(set) { + const problems: string[] = []; + const setHas: {[k: string]: true} = {}; + let species = this.dex.species.get(set.species); + let item = this.dex.items.get(set.item); + let tierSpecies = species; + + if (item.megaStone) { + [item.name + ' is banned as this is a no mega format.']; } }, - }, - { - name: "[Gen 9] Monster Hunter VGC", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhunter', - gameType: 'doubles', - bestOfDefault: true, - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'Species Clause', 'Item Clause', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', - 'Open Team Sheets'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shagaru Magala + Strength Sap'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter VGC.']; + }, + { + name: "[Gen 9] Breeding Variants V4 SV Cup", + desc: `A SV OU format that adds alternate forms for Pokemon based around inheriting elements from a possible breeding partner.`, + threads: [ + `• Breeding Variants V4`, + ], + mod: 'breedingvariants', + teambuilderFormat: "OU", + ruleset: ['Standard', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }, + { + name: "[Gen 9] Crossover Chaos [Defunct]", + desc: `Crossover Chaos, a micrometa designed to crossover characters from video game titles.`, + threads: [ + `Gen 9 Crossover Chaos`, + ], + mod: 'gen9crossoverchaos', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', /* 'Mega Data Mod' */], + onChangeSet(set) { + const item = this.toID(set.item); + if (set.species === 'King Dedede' || set.species === 'Masked Dedede') { + if (item === 'dededesmask') { + set.species = 'Masked Dedede'; + let attackOrder = set.moves.indexOf('attackorder'); + if (attackOrder >= 0) { + set.moves[attackOrder] = 'gigatonhammer'; + } + let beatup = set.moves.indexOf('beatup'); + if (beatup >= 0) { + set.moves[beatup] = 'electrohammer'; + } } - } - }, - }, - { - name: "[Gen 9] Monster Hunter OU - SoloPL III", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhuntersl', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', - 'Evasion Clause', 'Species Clause', 'Terastal Clause'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap', 'King\'s Rock', 'Razor Fang'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter OU.']; + else { + set.species = 'King Dedede'; } } }, - }, - { - name: "[Gen 9] Monster Hunter OU", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhunter', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', - 'Evasion Clause', 'Species Clause', 'Terastal Clause'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap', 'Light Clay', 'King\'s Rock', 'Razor Fang'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; + let allowedTiers = ['CC OU', 'CC UU']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter OU.']; + return [set.species + ' is not legal in Crossover Chaos Gen 9.']; } } }, }, { - name: "[Gen 9] Monster Hunter UU", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhunter', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', - 'Species Clause', 'Terastal Clause'], - banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', "Ice-Armor", 'Shagaru Magala + Strength Sap', - 'Garugite', 'Magnamalite', 'Mizutsunite', 'Crimson Gem', 'White Gem', 'Light Clay', 'King\'s Rock', 'Razor Fang'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, - onValidateTeam(team, format) { - /**@type {{[k: string]: true}}*/ - let speciesTable = {}; - let allowedTiers = ['MHUU', 'MHRUBL', 'MHRU']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter UU.']; + name: "[Gen 9] Crossover Chaos AG [Defunct]", + desc: `Crossover Chaos, allowing mons in CC Ubers and unintroduced to be used.`, + threads: [ + `Gen 9 Crossover Chaos`, + ], + mod: 'gen9crossoverchaos', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', /* 'Mega Data Mod' */], + onChangeSet(set) { + const item = this.toID(set.item); + if (set.species === 'King Dedede' || set.species === 'Masked Dedede') { + if (item === 'dededesmask') { + set.species = 'Masked Dedede'; + let attackOrder = set.moves.indexOf('attackorder'); + if (attackOrder >= 0) { + set.moves[attackOrder] = 'gigatonhammer'; + } + let beatup = set.moves.indexOf('beatup'); + if (beatup >= 0) { + set.moves[beatup] = 'electrohammer'; + } + } + else { + set.species = 'King Dedede'; } } }, - }, - { - name: "[Gen 9] Monster Hunter RU", - teambuilderFormat: 'National Dex', - threads: [], - mod: 'monsterhunter', - ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', - 'Species Clause', 'Terastal Clause'], - banlist: [ 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', - 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Lagombite', 'Bariothite', "Ice-Armor", - 'Shagaru Magala + Strength Sap', 'Garugite', 'Light Clay', 'King\'s Rock', 'Razor Fang'], - onBegin() { - this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); - }, onValidateTeam(team, format) { /**@type {{[k: string]: true}}*/ let speciesTable = {}; - let allowedTiers = ['MHRU']; + let allowedTiers = ['CC OU', 'CC UU', 'CC Ubers', 'unintroduced']; for (const set of team) { let template = this.dex.species.get(set.species); if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in Monster Hunter RU.']; + return [set.species + ' is not legal in Crossover Chaos Gen 9 AG.']; } } }, }, - /////////////////////////////////////////////////////////////// - /////////////// Gen 9 Offical Smogon Formats ////////////////// - /////////////////////////////////////////////////////////////// - /*{ - section: "ROPMM Formats", - column: 3, - // name: "ropmmformats", - },*/ - { - section: "Official Smogon Formats", - column: 3, - // name: "officialsmogonformats", - }, - { - name: "[Gen 9] OU", - - mod: 'gen9', - ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], - }, - { - name: "[Gen 9] LC", - mod: 'gen9', - ruleset: ['Little Cup', 'Standard'], - banlist: [ - 'Aipom', 'Basculin-White-Striped', 'Cutiefly', 'Diglett-Base', 'Dunsparce', 'Duraludon', 'Flittle', 'Gastly', 'Girafarig', 'Gligar', - 'Meditite', 'Misdreavus', 'Murkrow', 'Porygon', 'Qwilfish-Hisui', 'Rufflet', 'Scraggy', 'Scyther', 'Sneasel', 'Sneasel-Hisui', - 'Snivy', 'Stantler', 'Vulpix', 'Vulpix-Alola', 'Yanma', 'Moody', 'Baton Pass', 'Sticky Web', - ], - }, - { - name: "[Gen 9] Anything Goes", - threads: [ - `• AG Metagame Discussion`, - ], - - mod: 'gen9', - ruleset: ['Min Source Gen = 9', 'Obtainable', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause'], - }, - { - name: "[Gen 9] Bad 'n Boosted", - desc: `Base stats of 70 and lower get doubled.`, - mod: 'badnboosted', - ruleset: ['Standard'], - banlist: ['AG', 'Moody', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Eviolite', 'Huge Power', 'Pure Power', 'Espathra', 'Cyclizar', 'Polteageist', 'Shadow Tag', 'Pawmot'], - onBegin() { - this.add('-message', "Welcome to Bad 'n Boosted!"); - this.add('-message', "This is a Generation 9 Pet Mod where Pokemon's base stats of 70 or lower get doubled!"); - this.add('-message', `You can join our Discord now:`); - this.add('-message', `https://discord.gg/vYdSwRreNd`); - }, - }, - { - name: "[Gen 9] Doubles Bad 'n Boosted", - desc: `Base stats of 70 and lower get doubled.`, - mod: 'badnboosted', - gameType: 'doubles', - ruleset: ['Standard Doubles', '!Gravity Sleep Clause'], - }, - { - name: "[Gen 9] National Dex Bad 'n Boosted", - mod: 'badnboosted', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Mega Rayquaza Clause'], - banlist: ['ND AG', 'Shedinja', 'Assist', 'Baton Pass'], - }, - { - name: "[Gen 9] Free-For-All Bad 'n Boosted", - mod: 'badnboosted', - gameType: 'freeforall', - rated: false, - tournamentShow: false, - ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', '!Evasion Items Clause'], - banlist: ['Moody', 'Shadow Tag', 'Toxic Chain', 'Toxic Debris', 'Aromatic Mist', 'Baton Pass', 'Coaching', - 'Court Change', 'Decorate', 'Dragon Cheer', 'Final Gambit', 'Flatter', 'Fling', 'Floral Healing', 'Follow Me', 'Heal Pulse', 'Heart Swap', 'Last Respects', - 'Malignant Chain', 'Poison Fang', 'Rage Powder', 'Skill Swap', 'Spicy Extract', 'Swagger', 'Toxic', 'Toxic Spikes', - ], - }, - { - name: "[Gen 9] Bad 'n Boosted Hackmons Cup", - desc: `Randomized teams of level-balanced Pokémon with absolutely any ability, moves, and item where base stats of 70 and lower get doubled.`, - mod: 'badnboosted', - team: 'randomHC', - ruleset: ['HP Percentage Mod', 'Cancel Mod'], - banlist: ['CAP', 'LGPE', 'MissingNo.', 'Pikachu-Cosplay', 'Pichu-Spiky-eared', 'Pokestar Smeargle', 'Pokestar UFO', 'Pokestar UFO-2', 'Pokestar Brycen-Man', 'Pokestar MT', 'Pokestar MT2', 'Pokestar Transport', 'Pokestar Giant', 'Pokestar Humanoid', 'Pokestar Monster', 'Pokestar F-00', 'Pokestar F-002', 'Pokestar Spirit', 'Pokestar Black Door', 'Pokestar White Door', 'Pokestar Black Belt', 'Pokestar UFO-PropU2', 'Xerneas-Neutral'], - unbanlist: ['All Pokemon'], - }, - { - name: "[Gen 9] Custom Game", - - mod: 'gen9', - searchShow: false, - debug: true, - battle: {trunc: Math.trunc}, - // no restrictions, for serious (other than team preview) - ruleset: ['Team Preview', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], - }, - { - name: "[Gen 9] Doubles OU", - threads: [ - `• Doubles OU Sample Teams`, - ], - - mod: 'gen9', - gameType: 'doubles', - ruleset: ['Standard Doubles'], - banlist: ['DUber', 'Shadow Tag'], - }, - { - name: "[Gen 9] Doubles Custom Game", - - mod: 'gen9', - gameType: 'doubles', - searchShow: false, - battle: {trunc: Math.trunc}, - debug: true, - // no restrictions, for serious (other than team preview) - ruleset: ['Team Preview', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], - }, - { - name: "[Gen 9] Monoletter", - mod: "gen9", - desc: `A National Dex OU mod where you can only use teams consisting of the same starting letter.`, - threads: [ - `• Smogon Thread`, - '• Sample Teams', - '• Discord' - ], - ruleset: ['Standard NatDex', 'Terastal Clause', 'Same Letter Rule'], - banlist: ['ND Uber', 'ND AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail'], - unbanlist: ['Yveltal','Walking Wake','Ursaluna-Bloodmoon','Ogerpon-Hearthflame','Urshifu-Single-Strike','Naganadel'], - teambuilderFormat: "National Dex", - }, { - name: "[Gen 9] National Dex", - threads: [ - `• National Dex Metagame Discussion`, - ], - - mod: 'gen9', - ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause'], - banlist: [ - 'ND Uber', 'ND AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', - 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', - ], + name: "[Gen 9] Crossover Chaos [Ver. C] Random Battle", + mod: 'gen9crossoverchaosc', + team: 'random', + desc: `gen9crossoverchaosc`, + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Moves Clause', 'Terastal Clause', 'Mega Data Mod', '!Team Preview'], }, { - name: "[Gen 9] National Dex AG", - threads: [ - `• National Dex AG`, - ], - - mod: 'gen9', - ruleset: ['Standard NatDex'], + name: "[Gen 9] Dream World Theorymons", + desc: '[Gen 8] Gen 9 Dream World Theorymons: A testing ground for the Gen 9 OU Theorymons metagame.', + mod: 'outheorymons', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass', 'Last Respects'], }, { - name: "[Gen 9] National Dex BH", - desc: `Balanced Hackmons with National Dex elements mixed in.`, - mod: 'gen9', + name: "[Gen 9] Glacemons Balanced Hackmons", + desc: `Balanced Hackmons with Glacemons elements mixed in.`, + mod: 'glacemons', searchShow: false, ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', 'Ability Clause = 2', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', 'Terastal Clause', '!Obtainable'], banlist: [ 'Cramorant-Gorging', 'Calyrex-Shadow', 'Darmanitan-Galar-Zen', 'Eternatus-Eternamax', 'Greninja-Ash', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Arena Trap', - 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Pure Power', 'Shadow Tag', + 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Magnet Pull', 'Neutralizing Gas', 'Parental Bond', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble', 'Wonder Guard', 'Gengarite', 'Berserk Gene', 'Belly Drum', 'Bolt Beak', 'Ceaseless Edge', 'Chatter', 'Double Iron Bash', 'Electrify', 'Last Respects', 'Octolock', 'Rage Fist', 'Revival Blessing', 'Shed Tail', 'Shell Smash', 'Comatose + Sleep Talk', 'Imprison + Transform', + // Glacemons bans + 'Cosmic Energy', 'Light Power', 'Run It Back', 'Dungeon\'s Looplet', 'Neutralizer', 'Puppet Strings', ], restricted: ['Arceus'], onValidateTeam(team, format) { @@ -5764,263 +3845,217 @@ export const Formats: FormatList = [ }, }, { - name: "[Gen 9] Triples", - mod: 'gen9', - gameType: 'triples', - searchShow: false, - ruleset: ['Standard Doubles', 'Evasion Abilities Clause'], + name: "[Gen 3] Hoenn Gaiden UU", + desc: ["Hoenn Gaiden: A Gen 3 pet mod that aims to devamp Gen 4-8 Pokemon, moves and items into the Gen 3 mechanics."], + threads: [ + `• Hoenn Gaiden on Smogon Forums`, + ], + + mod: 'gen3uuhoenngaiden', + ruleset: ['Standard', 'Data Mod', 'Freeze Clause Mod'], banlist: [ - 'Annihilape', 'Arceus', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darkrai', 'Dialga', 'Dialga-Origin', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', - 'Groudon', 'Ho-Oh', 'Indeedee', 'Indeedee-F', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', - 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Reshiram', 'Solgaleo', 'Terapagos', 'Urshifu', 'Urshifu-Rapid-Strike', - 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', 'Shadow Tag', 'Bright Powder', 'King\'s Rock', 'Razor Fang', + 'Uber', 'OU', 'UUBL', 'Snow Warning', 'Air Balloon', + 'Babiri Berry', 'Charti Berry', 'Chilan Berry', 'Chople Berry', 'Coba Berry', 'Colbur Berry', + 'Haban Berry', 'Kasib Berry', 'Kebia Berry', 'Occa Berry', 'Passho Berry', 'Payapa Berry', + 'Rindo Berry', 'Roseli Berry', 'Shuca Berry', 'Tanga Berry', 'Wacan Berry', 'Yache Berry', ], + unbanlist: [], }, { - name: "[Gen 9] Type Split", - desc: `The Physical/Special split is reverted; All non-Status moves are Physical or Special depending on their type, no exceptions.`, - mod: 'gen9', - searchShow: false, - ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause'], - banlist: [ - 'Annihilape', 'Arceus', 'Archaludon', 'Calyrex-Shadow', 'Chi-Yu', 'Darkrai', 'Deoxys-Base', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', 'Espathra', - 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-White', 'Landorus-Base', - 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regieleki', - 'Reshiram', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Terapagos', 'Volcarona', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Arena Trap', 'Moody', 'Shadow Tag', - 'Bright Powder', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', - ], - onModifyMovePriority: -1000, - onModifyMove(move, pokemon, target) { - if (move.category === 'Status') return; - const specialTypes = ['Dark', 'Dragon', 'Electric', 'Fairy', 'Fire', 'Grass', 'Ice', 'Psychic', 'Water']; - if (specialTypes.includes(move.type)) { - move.category = 'Special'; - } else if (move.type === 'Stellar') { - move.category = pokemon.getStat('atk', false, true) > pokemon.getStat('spa', false, true) ? 'Physical' : 'Special'; - } else { - move.category = 'Physical'; + name: "[Gen 9] Iron Fist Doubles", + threads: [ + `Iron Fist`, + ], + mod: 'sharedpowerironfist', + teambuilderFormat: "National Dex", + gameType: 'doubles', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Big Button Rule', 'MILF Rule', 'Ohmyrod Rule', 'Serious Rule', 'I love refrigerators Rule', 'Mario Kart Wii Clause'], + banlist: ['Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', + 'Buginium Z', 'Darkinium Z', 'Dragonium Z', 'Electrium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Normalium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Waterium Z', + 'Abomasite', 'Absolite', 'Red Orb', 'Fish', 'Diamond Hand', 'Hoenn'], + unbanlist: ['Light of Ruin', 'Baddy Bad'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['IF']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Iron Fist.']; + } } }, }, - // Please keep these here for testing / debugging { - name: "[Gen 8] OU", + name: "[Gen 8] JolteMons Random Battle", + desc: `Pokémon, items, abilities, and moves are redesigned for OU, and new items, abilities, and moves are added, all without changing base stats.`, threads: [ - `• SS OU Metagame Discussion`, - `• SS OU Sample Teams`, - `• SS OU Viability Rankings`, + `• JolteMons`, + `• Spreadsheet`, ], - - mod: 'gen8', - ruleset: ['Standard', 'Dynamax Clause'], - banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass'], + mod: 'joltemons', + team: 'random', + ruleset: ['Dynamax Clause', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Mega Data Mod', 'Z-Move Clause'], }, { - name: "[Gen 7] OU", - threads: [ - `• USM OU Metagame Discussion`, - `• USM OU Sample Teams`, - `• USM OU Viability Rankings`, + name: "[Gen 9] MetaMons Expanded", + desc: [ + "In this Pet Mod, we will aim to create a decently-sized micrometa that will expand in the unique niches of some Pokémon, giving them the spotlight after all the time they have been waiting.", ], - - mod: 'gen7', - ruleset: ['Standard'], - banlist: ['Uber', 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Baton Pass'], - }, - { - name: "[Gen 6] OU", threads: [ - `• ORAS OU Metagame Discussion`, - `• ORAS OU Sample Teams`, - `• ORAS OU Viability Rankings`, + '• MetaMons', + '• Spreadsheet', ], - - mod: 'gen6', - ruleset: ['Standard', 'Swagger Clause'], - banlist: ['Uber', 'Arena Trap', 'Shadow Tag', 'Soul Dew', 'Baton Pass'], - }, - { - name: "[Gen 5] OU", - threads: [ - `• BW2 OU Metagame Discussion`, - `• BW2 OU Sample Teams`, - `• BW2 OU Viability Rankings`, + mod: 'metamons', + ruleset:['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], + banlist: [ + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Beedrillite' ], - - mod: 'gen5', - ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Swagger Clause', 'Gems Clause', 'Baton Pass Stat Clause'], - banlist: ['Uber', 'Arena Trap', 'Drizzle ++ Swift Swim', 'Drought ++ Chlorophyll', 'Sand Rush', 'Shadow Tag', 'King\'s Rock', 'Razor Fang', 'Soul Dew', 'Assist'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'MetaMons' && template.tier !== 'Gen 8 MetaMons' && template.tier !== 'Gen 7 MetaMons') { + return [set.species + ' is not usable in MetaMons Expanded.']; + } + } + }, }, { - name: "[Gen 4] OU", + name: "[Gen 6] Mix and Megas Revisited", threads: [ - `• DPP OU Metagame Discussion`, - `• DPP OU Sample Teams`, - `• DPP OU Viability Rankings`, + `• Megas Revisited on Smogon Forums`, + `• Spreadsheet`, ], - - mod: 'gen4', - ruleset: ['Standard', 'Evasion Abilities Clause', 'Baton Pass Stat Trap Clause', 'Freeze Clause Mod'], - banlist: ['AG', 'Uber', 'Arena Trap', 'Quick Claw', 'Soul Dew', 'Swagger'], - }, - { - name: "[Gen 3] OU", - threads: [ - `• ADV OU Metagame Discussion`, - `• ADV OU Sample Teams`, - `• ADV OU Viability Rankings`, + mod: 'gen6mixandmegasrevisited', + ruleset: ['Standard', 'Swagger Clause', 'Mega Data Mod'], + banlist: [ + 'Medichamite', 'Glalitite', 'Altarianite', 'Mawilite', ], - - mod: 'gen3', - ruleset: ['Standard', 'One Boost Passer Clause', 'Freeze Clause Mod'], - banlist: ['Uber', 'Smeargle + Ingrain', 'Sand Veil', 'Soundproof', 'Assist', 'Baton Pass + Block', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web', 'Swagger'], + restricted: [ + 'Arceus', 'Cresselia', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dragonite', 'Genesect', + 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Manaphy', 'Mewtwo', + 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shaymin-Sky', 'Slaking', 'Xerneas', 'Yveltal', 'Zekrom', + ], + onValidateTeam(team) { + const itemTable = new Set(); + for (const set of team) { + const item = this.dex.items.get(set.item); + if (!item.megaStone && !item.onPrimal && + !item.forcedForme?.endsWith('Origin') && !item.name.startsWith('Rusted')) continue; + const natdex = this.ruleTable.has('standardnatdex'); + if (natdex && item.id !== 'ultranecroziumz') continue; + const species = this.dex.species.get(set.species); + if (species.isNonstandard && !this.ruleTable.has(`+pokemontag:${this.toID(species.isNonstandard)}`)) { + return [`${species.baseSpecies} does not exist in gen 9.`]; + } + if ((item.itemUser?.includes(species.name) && !item.megaStone && !item.onPrimal) || + (natdex && species.name.startsWith('Necrozma-') && item.id === 'ultranecroziumz')) { + continue; + } + if (this.ruleTable.isRestrictedSpecies(species) || this.toID(set.ability) === 'powerconstruct') { + return [`${species.name} is not allowed to hold ${item.name}.`]; + } + if (itemTable.has(item.id)) { + return [ + `You are limited to one of each mega stone/orb/rusted item/sinnoh item.`, + `(You have more than one ${item.name})`, + ]; + } + itemTable.add(item.id); + } + }, + onBegin() { + for (const pokemon of this.getAllPokemon()) { + pokemon.m.originalSpecies = pokemon.baseSpecies.name; + } + }, + onSwitchIn(pokemon) { + // @ts-ignore + const originalFormeSpecies = this.dex.species.get(pokemon.species.originalSpecies); + if (originalFormeSpecies.exists && pokemon.m.originalSpecies !== originalFormeSpecies.baseSpecies) { + // Place volatiles on the Pokémon to show its mega-evolved condition and details + this.add('-start', pokemon, originalFormeSpecies.requiredItem || originalFormeSpecies.requiredMove, '[silent]'); + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + if (oSpecies.types.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + }, + // Starting innate abilities in scripts#actions + onSwitchOut(pokemon) { + // @ts-ignore + const oMegaSpecies = this.dex.species.get(pokemon.species.originalSpecies); + if (oMegaSpecies.exists && pokemon.m.originalSpecies !== oMegaSpecies.baseSpecies) { + this.add('-end', pokemon, oMegaSpecies.requiredItem || oMegaSpecies.requiredMove, '[silent]'); + } + }, }, { - name: "[Gen 3] Orre Colosseum", - mod: 'gen3colosseum', + name: "[Gen 9] TeraMax VGC", + mod: 'teramax', gameType: 'doubles', - ruleset: [ - 'Obtainable', 'Team Preview', 'Species Clause', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Max Team Size = 6', 'VGC Timer', - 'Nickname Clause', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Exact HP Mod', 'Item Clause', 'Open Team Sheets', - ], - banlist: ['Soul Dew', 'Deoxys-Defense', 'Deoxys-Attack', 'Deoxys-Speed', 'Restricted Legendary', 'Mythical'], - unbanlist: ['Latios', 'Latias', 'Wobbuffet', 'Wynaut'], bestOfDefault: true, - onBegin() { - this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect, you will lose the battle'); + ruleset: ['Obtainable', 'Team Preview', 'Species Clause', 'Nickname Clause', 'Item Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Open Team Sheets', 'Data Mod'], + banlist: [ + 'Battle Bond', 'Melmetal-Gmax', 'Ogerpon-Hearthflame + Close Combat', 'Ogerpon-Hearthflame + Rock Blast', + 'Ogerpon-Wellspring + Close Combat', 'Ogerpon-Wellspring + Rock Blast', 'Ogerpon-Cornerstone + Rock Blast', + 'Restricted Legendary', 'Mythical', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['TMOU', 'TMFE', 'TMNFE', "TMLC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in TeraMax.']; + } + } + }, + onSwitchOut(pokemon) { + const isTeraStellar = pokemon.terastallized === 'Stellar'; + if (isTeraStellar) { + pokemon.stellarBoostedTypes = []; + } }, }, { - name: "[Gen 2] OU", + name: "[Gen 9] VaporeMons Random Battle (Beta)", + desc: [ + "VaporeMons: The third mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + ], threads: [ - `• GSC OU Metagame Discussion`, - `• GSC OU Sample Teams`, - `• GSC OU Viability Rankings`, + `• Thread on the Smogon Forums`, + `• Spreadsheet`, ], - - mod: 'gen2', - ruleset: ['Standard'], - banlist: ['Uber', 'Mean Look + Baton Pass', 'Spider Web + Baton Pass'], + mod: 'gen9vaporemons', + team: 'random', + ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause'], }, { - name: "[Gen 1] OU", + name: "[Gen 9] VaporeMons UU", + desc: [ + "VaporeMons: The third mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for OU (and new items, abilities and moves are added) without changing base stats.", + ], threads: [ - `• RBY OU Metagame Discussion`, - `• RBY OU Sample Teams`, - `• RBY OU Viability Rankings`, + `• Thread on the Smogon Forums`, + `• Spreadsheet`, ], - - mod: 'gen1', - ruleset: ['Standard'], - banlist: ['Uber'], - }, - { - name: "[Gen 1] Custom Game", - mod: 'gen1', - searchShow: false, - debug: true, - battle: {trunc: Math.trunc}, - ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Desync Clause Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], - }, - { - name: "[Gen 2] Custom Game", - - mod: 'gen2', - searchShow: false, - debug: true, - battle: {trunc: Math.trunc}, - ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], - }, - { - name: "[Gen 3] Custom Game", - mod: 'gen3', - searchShow: false, - debug: true, - battle: {trunc: Math.trunc}, - ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], + mod: 'gen9vaporemons', + teambuilderFormat: 'UU', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['OU', 'UUBL', 'Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Light Clay', 'Dancing Shoes', 'Fling + Segin Star Shard', 'Charizardite Shard X'], }, - /////////////////////////////////////////////////////////////// - /////////////// Official Non-Smogon Formats ////////////////// + /////////////// Monster Hunter Solomod ////////////////// /////////////////////////////////////////////////////////////// - { - section: "Official Non-Smogon Formats", +/* { + section: "Monster Hunter Solomod", column: 3, - // name: "officialnonsmogonformats", - }, - { - name: "[Gen 9] BSS Reg G", - mod: 'gen9', - bestOfDefault: true, - searchShow: false, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Limit One Restricted'], - restricted: ['Restricted Legendary'], - }, - { - name: "[Gen 9] BSS Reg H", - mod: 'gen9', - bestOfDefault: true, - searchShow: false, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer'], - banlist: ['Sub-Legendary', 'Paradox', 'Gouging Fire', 'Iron Boulder', 'Iron Crown', 'Raging Bolt'], - }, - { - name: "[Gen 9] BSS Reg I", - mod: 'gen9', - bestOfDefault: true, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Limit Two Restricted'], - restricted: ['Restricted Legendary'], - }, - { - name: "[Gen 9] VGC 2024 Reg G", - mod: 'gen9', - gameType: 'doubles', - bestOfDefault: true, - searchShow: false, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Limit One Restricted'], - restricted: ['Restricted Legendary'], - }, - { - name: "[Gen 9] VGC 2024 Reg G (Bo1 Forced OTS)", - mod: 'gen9', - gameType: 'doubles', - searchShow: false, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Force Open Team Sheets', 'Limit One Restricted'], - restricted: ['Restricted Legendary'], - }, - { - name: "[Gen 9] VGC 2024 Reg H", - mod: 'gen9', - gameType: 'doubles', - bestOfDefault: true, - searchShow: false, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets'], - banlist: ['Sub-Legendary', 'Paradox', 'Gouging Fire', 'Iron Boulder', 'Iron Crown', 'Raging Bolt'], - }, - { - name: "[Gen 9] VGC 2024 Reg H (Bo1 Forced OTS)", - mod: 'gen9', - gameType: 'doubles', - searchShow: false, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Force Open Team Sheets'], - banlist: ['Sub-Legendary', 'Paradox', 'Gouging Fire', 'Iron Boulder', 'Iron Crown', 'Raging Bolt'], - }, - { - name: "[Gen 9] VGC 2025 Reg I", - mod: 'gen9', - gameType: 'doubles', - bestOfDefault: true, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Limit Two Restricted'], - restricted: ['Restricted Legendary'], - }, - { - name: "[Gen 9] VGC 2025 Reg I (Bo1 Forced OTS)", - mod: 'gen9', - gameType: 'doubles', - bestOfDefault: true, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Force Open Team Sheets', 'Limit Two Restricted'], - restricted: ['Restricted Legendary'], - }, + // name: "monsterhuntersolomod", + }, */ /////////////////////////////////////////////////////////////// /////////////// Unofficial Pet Mod Formats ////////////////// @@ -6576,25 +4611,4 @@ export const Formats: FormatList = [ mod: 'gen3ourstb', ruleset: ['Standard', 'Freeze Clause Mod'], }, - - //placeholder - /* - { - name: "", - mod: '', - desc: ``, - ruleset: ['Standard', 'Data Mod'], - //teambuilderFormat: 'National Dex', //uncomment if your mod is natdex - onValidateTeam(team, format) { - let speciesTable = {}; - let allowedTiers = ['']; - for (const set of team) { - let template = this.dex.species.get(set.species); - if (!allowedTiers.includes(template.tier)) { - return [set.species + ' is not legal in the format.']; - } - } - }, - }, - */ ]; diff --git a/data/mods/abilitypos/format.ts b/data/mods/abilitypos/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/agoldenexperience/format.ts b/data/mods/agoldenexperience/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/alternatium/format.ts b/data/mods/alternatium/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/alternatiumex/format.ts b/data/mods/alternatiumex/format.ts new file mode 100644 index 0000000000..5eb5a10900 --- /dev/null +++ b/data/mods/alternatiumex/format.ts @@ -0,0 +1,53 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Alternatium EX", + desc: `Alternatium EX: A metagame made up of only Pokemon with alternate forms exist, with all of them being seperate and unique Pokemon.`, + threads: [ + `• Alternatium EX on Smogon Forums`, + `• Spreadsheet`, + ], + mod: 'alternatiumex', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Min Source Gen = 3', 'Terastal Clause'], + banlist: ['All Pokemon', 'Baton Pass'], + unbanlist: [ + 'Decidueye-Hermit', 'Decidueye-Autumn', 'Typhlosion-Explosive', 'Typhlosion-Warlock', 'Samurott-Foamy', 'Samurott-Rogue', + 'Oricorio', 'Oricorio-Cheerleader','Oricorio-Pa\u2019u', 'Horrorcorio', + 'Pikachu-Kanto', 'Pikachu-Hoenn', 'Pikachu-Sinnoh', 'Pikachu-Unova', 'Pikachu-Tactic', 'Pikachu-Alola', 'Pikachu-World', + 'Ribombee', 'Ribombee-Totem', 'Araquanid', 'Araquanid-Totem', 'Vikavolt', 'Vikavolt-Totem', + 'Urshifu', 'Urshifu-Erosion', 'Calyrex-Mythic', 'Calyrex-Glacier','Calyrex-Midnight', + 'Kommo-o', 'Rockmo-o', 'Salazzle', 'Salazzle-Ruler', 'Lurantis', 'Lurantio', + 'Mr. Mime', 'Mr. Mime-Prance', 'Stunfisk', 'Stunfisk-Trap', + 'Necrozma', 'Necrozma-Lionheart', 'Necrozma-Batwing', 'Necrozma-Dragon', + 'Braviary-Patriot', 'Braviary-Hisui', 'Lilligant-Bard', 'Mistlegant', 'Electrode-Screwball','Electrode-Ringo', + 'Persian-Bandit', 'Persian-Omen', 'Meowstic-Untethered', 'Meowstic-TwoTales', + "Indeedee-Devil", "Indeedee-Angel", "Polteageist", "Polteageist-Antique", "Toxtricity-Rock-Star", "Toxtricity-Low-Key", + "Articuno-Mistral", "Articuno-Tsunami", "Zapdos", "Charpados", "Moltres", "Bennutres", + "Marowak", "Alolawak", "Marowak-Alola-Totem", "Enamorus", "Violentine", + "Dialga", "Archronos", "Palkia", "Palkia-Origin", + "Basculin-Hot-Headed","Basculectric", "Basculin-Skyship", "Basculegion", "Basculagoon", + "Magearna", "Magearna-Prototype", "Zarude", "Zarude-Hero", + "Qwilfish", "Aquattack", "Zoroark-Jorogumo", "Zoroark-Hoarfrost", "Goodra-Tsunade", "Goodra-Symbiotic", + "Maushold-Raider", "Maushold-Extended", "Oinkologne", "Oinkologne-F", "Dudunsparce", "Dududunsparce", + "Greninja", "Greninja-Ronin", "Imperil", "Hoopa-Ifrit", + "Kyurem", "Kyurem-Black", "Kyurem-White", "Xerneas-Dormant", "Xerneas-Justice", + "Arcanine-Water Balloon", "Arcanine-Noble", "Avalugg-Prism", "Avalugg-Plated", + "Squawkabilly", "Squawkabiluck", "Squawkalone", "Squawkabilly-Yellow", + "Wishiwashi-Lonesome", "Winardin", "Palafin", "Hercuphin", + 'Gumshoos', 'Gumshoos-Totem', 'Togedemaru', 'Totemaru', + 'Tauros', 'Bravatoro', 'Tauros-Steam', 'Tauros-Azul', + 'Raichu', 'Raichu-Soft', 'Rapidash', 'Rapidash-Galar', 'Golem-Berserker', 'Golem-Alola', + 'Cherrim', 'Cherrine', 'Minior', 'Minior-Meteor', 'Eevee', 'Eevee-Starter', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (speciesTable[template.id]) { + return ["You are limited to one of each Pokémon by Species Clause (except for different formes). ", "You have more than one " + template.id + "."]; + } + speciesTable[template.id] = true; + } + }, + }; \ No newline at end of file diff --git a/data/mods/animemons/format.ts b/data/mods/animemons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/backtosinnoh/format.ts b/data/mods/backtosinnoh/format.ts new file mode 100644 index 0000000000..9f0dbaaf77 --- /dev/null +++ b/data/mods/backtosinnoh/format.ts @@ -0,0 +1,10 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 4] Back to Sinnoh", + desc: `Recreation of Gen 4 OU, with a lot of new Fakemons, moves, and abilities! No vanilla Gen 4 Pokemon allowed!`, + threads: [], + mod: 'backtosinnoh', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber', 'Arena Trap', 'Sand Veil', 'Quick Claw', 'Soul Dew', 'Baton Pass'], + }; \ No newline at end of file diff --git a/data/mods/badnboosted/format.ts b/data/mods/badnboosted/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/balls/format.ts b/data/mods/balls/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/banhammersc3/format.ts b/data/mods/banhammersc3/format.ts new file mode 100644 index 0000000000..e067cb04b3 --- /dev/null +++ b/data/mods/banhammersc3/format.ts @@ -0,0 +1,25 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Banhammers Cycle 3", + desc: `Banhammers: A metagame where players are allowed to ban Pokemon, Moves, Items, and Abilities through earning points in room tournaments.`, + threads: [ + `• Banhammers on Smogon Forums`, + `• Spreadsheet`, + ], + mod: 'banhammersc3', + ruleset: ['Standard', 'Sleep Moves Clause', 'Data Mod', '!Sleep Clause Mod'], + banlist: [ + 'Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', + 'Last Respects', 'Shed Tail', 'Barraskewda', 'Cinderace', 'Clodsire', 'Dragapult', 'Enamorus-Base', 'Gholdengo', 'Gliscor', 'Hatterene', + 'Iron Treads', 'Kingambit', 'Ogerpon-Wellspring', 'Pelipper', 'Rillaboom', 'Walking Wake', 'Zamazenta', 'Earth Power', 'Flip Turn', + 'Freeze-Dry', 'Ice Beam', 'Knock Off', 'Spikes', 'Taunt', 'Thunder Wave', 'Toxic', 'Volt Switch', 'Booster Energy', 'Light Clay', + 'Protosynthesis', 'Clefable', 'Corviknight', 'Darkrai', 'Dragonite', 'Maushold', 'Primarina', 'Samurott-Hisui', 'Slowking-Galar', + 'Weavile', 'Focus Blast', 'Glare', 'Sticky Web', 'Unaware', 'Quark Drive', 'Blissey', 'Ceruledge', 'Chansey', 'Garchomp', 'Garganacl', + 'Glimmora', 'Hydreigon', 'Ogerpon-Cornerstone', 'Ting-Lu', 'Close Combat', 'Dragon Dance', 'Meteor Beam', 'Roost', 'Scale Shot', 'Stealth Rock', + 'Tera Blast', 'Heavy-Duty-Boots', 'Chlorophyll', 'Swift Swim', 'Regenerator', 'Draco Meteor', 'Intimidate', 'Levitate', + 'Focus Sash', 'Leftovers', 'Life Orb', 'Belly Drum', 'Calm Mind', 'Nasty Plot', 'Azumarill', 'Blaziken', 'Deoxys-Defense', 'Greninja', + 'Heatran', 'Kleavor', 'Kommo-o', 'Meowscarada', 'Moltres-Galar', 'Ninetales-Alola', 'Pecharunt', 'Politoed', 'Sinistcha', 'Skarmory', + 'Ursaluna', 'Zapdos-Base', + ], + }; \ No newline at end of file diff --git a/data/mods/beaftopia/format.ts b/data/mods/beaftopia/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/bearticphone/format.ts b/data/mods/bearticphone/format.ts new file mode 100644 index 0000000000..d67649e145 --- /dev/null +++ b/data/mods/bearticphone/format.ts @@ -0,0 +1,25 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Beartic Phone", + desc: '[Gen 9] Beartic Phone: A group of 5 people unknowingly work together to create a fakemon, very similar to the online game "Gartic Phone".', + threads: [ + '• Beartic Phone', + 'https://docs.google.com/spreadsheets/d/1-Hfz-p0nomMLVFa4-4nGbLKaoWSl0xFTZA5Aiapw-Ko/edit#gid=1161734506">Spreadsheet', + ], + mod: 'bearticphone', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod'], + banlist: [ + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'bear') { + return [set.species + ' is not usable in Beartic Phone.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/blackmarket/format.ts b/data/mods/blackmarket/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/blankcanvas/format-meta-a.ts b/data/mods/blankcanvas/format-meta-a.ts new file mode 100644 index 0000000000..2355c02b04 --- /dev/null +++ b/data/mods/blankcanvas/format-meta-a.ts @@ -0,0 +1,33 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Blank Canvas Meta A", + threads: [ + `Blank Canvas`, + ], + mod: 'blankcanvas', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: [ + 'AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', + 'Actaniathan', 'Flarenheit', 'Groundead', 'Deadward', 'Obaki', 'Sylravage', 'Twinkaton', 'Fausteil', 'Geoporka', + 'Porcupyre', 'Plasmage', 'Seaode', 'Bellolysk', 'Tryonite', 'Scarachnid', 'Serpvoltidae', 'Maldractice', 'Geigeramp', + 'Bufferfly', 'Dastard', 'Sheepquake', 'Cottentration', 'Sorrowcean', 'Psyllapse', 'Haarstorm', 'Borealis', 'Bazhigangquan', + 'Leechmonner', 'Iron Crest', 'Odonata', 'Hebicikuga', 'Devestial', 'Lundicare', 'Razor Fang', 'Light Clay', 'Lyvamp', + 'Treatmint', 'Turvarpega', 'Goodjur', 'Liftaton', 'Triceracotta', 'Woolverine', 'Combustoad', 'Hearthind', 'Koiryu', + 'Pestiligy', 'Saxum', 'Sascratch', 'Guttergar', 'Rakasa', 'Thermostatic', 'Formaldehydra', 'Strumorthio', 'Iron Mike', + 'Whalestro', 'Urslag', 'Centaghoul', 'Noirwark', 'Metarachne', 'Monsnooze', 'Oreamoss', 'Sucrillon', 'Taranferno', + 'Armie', 'Bunnyumi', 'Parfae', 'Siltworm', 'Ptoxidactyl', 'Staroboros' , 'Kodiacomb', 'Pyrelli', 'Boreetle', 'Hyakutari', + 'Kaovern', 'Zhuguo', 'Shinobomi', 'Prionice', 'Tiaratron', 'Lianzhao', 'Psyrex', 'Phantamp', 'Waroach', 'Wyldemoer', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['BC UU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Blank Canvas Meta A.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/blankcanvas/format-meta-b.ts b/data/mods/blankcanvas/format-meta-b.ts new file mode 100644 index 0000000000..bc17e05cde --- /dev/null +++ b/data/mods/blankcanvas/format-meta-b.ts @@ -0,0 +1,29 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Blank Canvas Meta B", + threads: [ + `Blank Canvas`, + ], + mod: 'blankcanvas', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: [ + 'AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Razor Fang', + 'Lyvamp', 'Treatmint', 'Turvarpega', 'Goodjur', 'Liftaton', 'Triceracotta', 'Woolverine', 'Combustoad', 'Hearthind', 'Koiryu', + 'Pestiligy', 'Saxum', 'Sascratch', 'Guttergar', 'Rakasa', 'Thermostatic', 'Formaldehydra', 'Strumorthio', 'Iron Mike', + 'Whalestro', 'Urslag', 'Centaghoul', 'Noirwark', 'Metarachne', 'Monsnooze', 'Oreamoss', 'Sucrillon', 'Taranferno', + 'Armie', 'Bunnyumi', 'Parfae', 'Siltworm', 'Ptoxidactyl', 'Staroboros' , 'Kodiacomb', 'Pyrelli', 'Boreetle', 'Hyakutari', + 'Kaovern', 'Zhuguo', 'Shinobomi', 'Prionice', 'Tiaratron', 'Lianzhao', 'Psyrex', 'Phantamp', 'Waroach', 'Wyldemoer', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['BC OU', 'BC UU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Blank Canvas Meta B.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/blankcanvas/format-meta-c.ts b/data/mods/blankcanvas/format-meta-c.ts new file mode 100644 index 0000000000..3e287bd97d --- /dev/null +++ b/data/mods/blankcanvas/format-meta-c.ts @@ -0,0 +1,31 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Blank Canvas Meta C", + threads: [ + `Blank Canvas`, + ], + mod: 'blankcanvas', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['AG', 'Uber', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Razor Fang', + 'Actaniathan', 'Flarenheit', 'Groundead', 'Deadward', 'Obaki', 'Sylravage', 'Twinkaton', 'Fausteil', 'Geoporka', + 'Porcupyre', 'Plasmage', 'Seaode', 'Bellolysk', 'Tryonite', 'Scarachnid', 'Serpvoltidae', 'Maldractice', 'Geigeramp', + 'Bufferfly', 'Dastard', 'Sheepquake', 'Cottentration', 'Sorrowcean', 'Psyllapse', 'Haarstorm', 'Borealis', 'Bazhigangquan', + 'Leechmonner', 'Iron Crest', 'Odonata', 'Hebicikuga', 'Devestial', 'Lundicare', 'Arachnode', 'Arsenstorm', 'Badjur', 'Blobbiam', + 'Brasspecter', 'Bugswarm', 'Bulionage', 'Capricorrie', 'Copperhead', 'Craggon', 'Crystuit', 'Drakkannon', 'Eolikopter', 'Faeruin', + 'Fettogre', 'Florustitia', 'Freightmare', 'Frostengu', 'Goblantern', 'Hippaint', 'Jackoswarm', 'Jokerpent', 'Kadraoke', 'Karmalice', + 'Lavalisk', 'Llanfairwyrm', 'Martorse', 'Massassin', 'Mohawtter', 'Mon Mothra', 'Parasike', 'Pinaturbo', 'Piss', 'Primordialith', + 'Reversadusa', 'Sculptera', 'Searytch', 'Sleet Shell', 'Snabterra', 'Socknbuskn', 'Thaumaton', 'Versalyre', 'Vipult', 'Wizhazard', + 'Yamateraph'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['BC C']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Blank Canvas Meta C.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/bookofenigmas/format.ts b/data/mods/bookofenigmas/format.ts new file mode 100644 index 0000000000..33ff19e17d --- /dev/null +++ b/data/mods/bookofenigmas/format.ts @@ -0,0 +1,31 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Book of Enigmas", + mod: 'bookofenigmas', + desc: 'Book of Enigmas: A Pet Mod that aims to create new Paradox Pokemon based on Ho-oh and Lugia - the sky and the sea, respectively.', + threads: [ + `&bullet: Thread on Smogon.`, + ], + ruleset: ['Standard NatDex', 'Data Mod', 'Terastal Clause'], + banlist: [ + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', + 'Sceptilite', 'Blazikenite', 'Swampertite', 'Gardevoirite', 'Galladite', 'Alakazite', 'Gyaradosite', + 'Sablenite', 'Mawilite', 'Aggronite', 'Medichamite', 'Manectite', 'Sharpedonite', 'Cameruptite', + 'Altarianite', 'Absolite', 'Glalitite', 'Salamencite', 'Metagrossite', 'Latiasite', 'Latiosite', + 'Garchompite', 'Steelixite', 'Beedrillite', 'Pidgeotite', + 'Blue Orb', 'Red Orb', //this is just copied from ANL's lol + 'Beedrill-Mega', 'Pidgeot-Mega', //????? + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + let allowedTiers = ['BoE OU', "BoE NFE", "BoE LC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Book of Enigmas OU.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/breedingvariants/format.ts b/data/mods/breedingvariants/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/breedingvariantsnatdex/format.ts b/data/mods/breedingvariantsnatdex/format.ts new file mode 100644 index 0000000000..cf9a1dc9cc --- /dev/null +++ b/data/mods/breedingvariantsnatdex/format.ts @@ -0,0 +1,16 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Breeding Variants V4", + desc: `A NatDex format that adds alternate forms for Pokemon based around inheriting elements from a possible breeding partner.`, + threads: [ + `• Breeding Variants V4`, + ], + mod: 'breedingvariantsnatdex', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Mega Data Mod'], + banlist: [ + 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', + 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', + ], + }; \ No newline at end of file diff --git a/data/mods/bustamove/format.ts b/data/mods/bustamove/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/ccapm2022/format.ts b/data/mods/ccapm2022/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/ccapm2024/format-randoms.ts b/data/mods/ccapm2024/format-randoms.ts new file mode 100644 index 0000000000..7d574c09d0 --- /dev/null +++ b/data/mods/ccapm2024/format-randoms.ts @@ -0,0 +1,11 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] CCAPM 2024 Random Battle", + threads: [ + `• Community Create-A-Pet Mod 2024`, + ], + mod: 'ccapm2024', + team: 'random', + ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Terastal Clause', 'Cancel Mod', 'Data Mod'], + }; \ No newline at end of file diff --git a/data/mods/ccapm2024/format.ts b/data/mods/ccapm2024/format.ts new file mode 100644 index 0000000000..c42ef3c39e --- /dev/null +++ b/data/mods/ccapm2024/format.ts @@ -0,0 +1,23 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] CCAPM 2024", + threads: [ + `• Community Create-A-Pet Mod 2024`, + ], + mod: 'ccapm2024', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Sleep Clause Mod', 'Data Mod', 'Terastal Clause'], + banlist: [], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['CCAPM2024']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in CCAPM 2024.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/chatbats/format.ts b/data/mods/chatbats/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/clubmonsrequiem/format.ts b/data/mods/clubmonsrequiem/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/communityused2/format.ts b/data/mods/communityused2/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/conquestdex/format.ts b/data/mods/conquestdex/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/csm2/format.ts b/data/mods/csm2/format.ts new file mode 100644 index 0000000000..8af518662c --- /dev/null +++ b/data/mods/csm2/format.ts @@ -0,0 +1,24 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Clean Slate Micro 2", + desc: `Clean Slate.`, + threads: [ + `Clean Slate Micro 2`, + ], + mod: 'csm2', + ruleset: ['Standard', 'Dynamax Clause'], + // onSwitchIn(pokemon) { + // this.add('-start', pokemon, 'typechange', pokemon.types.join('/'), '[silent]'); + // }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'CSM2') { + return [set.species + ' is not useable in Clean Slate Micro 2.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/denseaf/format.ts b/data/mods/denseaf/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/dlcmons/format-vgc.ts b/data/mods/dlcmons/format-vgc.ts new file mode 100644 index 0000000000..e51b64ea9b --- /dev/null +++ b/data/mods/dlcmons/format-vgc.ts @@ -0,0 +1,33 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 6] DLCmons V3 VGC", + desc: `A fun metagame where we try to make everything viable, or at least usable. We also have new Fakemons!`, + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'dlcmons', + gameType: 'doubles', + ruleset: ['Adjust Level = 50', 'VGC Timer', 'Data Mod', 'Mega Data Mod'], + banlist: [ + 'Mewtwo', 'Mew', + 'Lugia', 'Ho-Oh', 'Celebi', + 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', + 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', + 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', + 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', + 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', + 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', + 'Koraidon', 'Miraidon', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'Kalos OU' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)' && template.tier !== 'Kalos (LC)') { + return [set.species + ' is not a part of the Kalos Pokédex.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/dlcmons/format.ts b/data/mods/dlcmons/format.ts new file mode 100644 index 0000000000..8f8a66d4b9 --- /dev/null +++ b/data/mods/dlcmons/format.ts @@ -0,0 +1,31 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 6] DLCmons V3", + desc: 'DLCmons: This Pet Mods aims at creating DLCs for Pokemon games, like how the Expansion Pass worked for Galar. This will include adding existing Pokemon that are not in the chosen regional Pokedex, adding new ones, creating regional formes, items, moves... This will be a pretty diverse project!', + threads: [ + `• DLCmons v3 on Smogon Forums`, + `• Spreadsheet`, + ], + ruleset: ['Standard', 'Data Mod', 'Mega Data Mod'], + banlist: [ + 'AG', 'Uber', + 'Arena Trap', 'Power Construct', 'Shadow Tag', + 'Baton Pass', + 'King\'s Rock', 'Razor Fang', 'Quick Claw', + ], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'Kalos OU' && template.tier !== 'Kalos' && template.tier !== 'Kalos (NFE)' && template.tier !== 'Kalos (LC)' && template.tier !== 'Kalos Uber') { + return [set.species + ' is not a part of the Kalos Pokédex.']; + } + else if (template.tier === 'Kalos Uber') { + return [set.species + ' is banned from DLCmons.']; + } + } + }, + mod: 'dlcmons', + }; \ No newline at end of file diff --git a/data/mods/dollhouse/format.ts b/data/mods/dollhouse/format.ts new file mode 100644 index 0000000000..bc60a714db --- /dev/null +++ b/data/mods/dollhouse/format.ts @@ -0,0 +1,12 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Dollhouse", + desc: 'Dollhouse: An OU-based mod where, instead of bans, Pokemon are removed from the metagame by being turned into held items.', + threads: [ + `• Thread on the Smogon Forums`, + ], + mod: 'dollhouse', + ruleset: ['Standard', 'Terastal Clause'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }; \ No newline at end of file diff --git a/data/mods/dondozo/format.ts b/data/mods/dondozo/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/donotuse/format.ts b/data/mods/donotuse/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/donotusetmptm/format.ts b/data/mods/donotusetmptm/format.ts new file mode 100644 index 0000000000..688ec57124 --- /dev/null +++ b/data/mods/donotusetmptm/format.ts @@ -0,0 +1,24 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Do Not Use: The Pet Mod: The Musical", + desc: 'Do Not Use: The Pet Mod: The Musical: A National Dex Pet Mod where only Pokemon with 280 BST or less, with some exception, are allowed. New Pokemon are added and edited into the existing DNU metagame.', + threads: [ + `• Do Not Use: The Pet Mod: The Musical`, + ], + mod: 'donotusetmptm', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Clause Mod', 'Mega Rayquaza Clause', 'Terastal Clause', 'Z-Move Clause', 'Data Mod'], + teambuilderFormat: 'National Dex', + banlist: ['Huge Power', 'Pure Power', 'Shadow Tag', 'Arena Trap', 'Baton Pass', 'Moody', 'Cute Charm'], + unbanlist: ['Assist'], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['DoNU', 'DoNU UUBL', 'DoNU UU', 'DoNU RUBL', 'DoNU RU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in [Gen 9] Do Not Use: The Pet Mod: The Musical.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/donotuseuu/format.ts b/data/mods/donotuseuu/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/donotusevgc/format.ts b/data/mods/donotusevgc/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/doubletrouble/format.ts b/data/mods/doubletrouble/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/duomod/format.ts b/data/mods/duomod/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/earthsky/format.ts b/data/mods/earthsky/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/ebbandflow/format.ts b/data/mods/ebbandflow/format.ts new file mode 100644 index 0000000000..665ae44973 --- /dev/null +++ b/data/mods/ebbandflow/format.ts @@ -0,0 +1,11 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Ebb and Flow", + threads: [ + `Ebb and Flow`, + ], + mod: 'ebbandflow', + ruleset: ['Standard', 'Terastal Clause'], + banlist: ['Uber', 'AG', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody'], + }; \ No newline at end of file diff --git a/data/mods/eliminationwar/format.ts b/data/mods/eliminationwar/format.ts new file mode 100644 index 0000000000..241aacdcce --- /dev/null +++ b/data/mods/eliminationwar/format.ts @@ -0,0 +1,18 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Elimination War", + mod: 'eliminationwar', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['Legal'/*, 'Eliminated'*/]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Elimination War']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/emamod/format.ts b/data/mods/emamod/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/eramons/format.ts b/data/mods/eramons/format.ts new file mode 100644 index 0000000000..558a737303 --- /dev/null +++ b/data/mods/eramons/format.ts @@ -0,0 +1,30 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Eramons", + desc: `Eramons: A Gen 9 Pet Mod based on broad strokes of real-life historical time periods.`, + threads: [ + `• Gen 9 Eramons`, + ], + + mod: 'eramons', + ruleset: ['Standard', 'Terastal Clause'], + banlist: ['Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + onValidateTeam(team, format, teamHas) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + let era : string[] = []; + let allowedTiers = ['ECiv', 'Med', 'PrDay', 'FFut']; + for (const set of team) { + let template = this.dex.species.get(set.species); + let tier = template.tier; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Eramons.']; + } + if (!(era.includes(tier))) { + era.push(tier) + } + } + if (era.length > 1) return ['Each Pokemon needs to be from the same era.']; + }, + }; \ No newline at end of file diff --git a/data/mods/eternalpokemon/format.ts b/data/mods/eternalpokemon/format.ts new file mode 100644 index 0000000000..9b2f128327 --- /dev/null +++ b/data/mods/eternalpokemon/format.ts @@ -0,0 +1,26 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Eternal Pokémon", + mod: 'eternalpokemon', + desc: 'A Pet Mod that aims to give Eternal Floette-like formes to other NFE Pokémon.', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Evasion Items Clause', 'Species Clause', 'Sleep Moves Clause', 'Z-Move Clause', 'Data Mod', 'Terastal Clause', 'Picked Team Size = 6'], // temporarily asks for team order until Magikarp-Eternal situation is solved + threads: [ + `• Eternal Pokémon on Smogon Forums`, + ], + banlist: ['Aegislash', 'Aerodactylite', 'Gardevoirite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Power Construct', 'Salamencite', 'Zygarde', 'Arena Trap', 'Baton Pass', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Razor Fang', 'Quick Claw'], + teambuilderFormat: 'National Dex', + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['FE', '1x NFE', '2x NFE']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier == 'Banned') return [set.species + ' is banned in Eteral Pokémon']; + if (template.tier == 'WIP') return [set.species + ' has some coding challenges, so it\'s not allowed yet!']; + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not available in Eternal Pokémon.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/evolutionproject/format.ts b/data/mods/evolutionproject/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/extremereboot/format.ts b/data/mods/extremereboot/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/fakemonfrontier/format.ts b/data/mods/fakemonfrontier/format.ts new file mode 100644 index 0000000000..7cd667a6c3 --- /dev/null +++ b/data/mods/fakemonfrontier/format.ts @@ -0,0 +1,36 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Fakemon Frontier OU", + desc: `[Gen 9] Fakemon Frontier OU: A meta where the only legal Pokemon are community-made Fakemon that follow two of four predetermined "rules."`, + threads: [ + `• Fakemon Frontier on Smogon Forums`, + ], + mod: 'fakemonfrontier', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + banlist: [ + 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Sonic Boom', 'Submission', + 'Dragon Rage', 'Meditate', 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', + 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', + 'Hyper Fang', 'Sharpen', 'Triple Kick', 'Spider Web', 'Mind Reader', 'Nightmare', 'Feint Attack', 'Octazooka', 'Foresight', + 'Return', 'Frustration', 'Magnitude', 'Pursuit', 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', + 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', 'Camouflage', 'Mud Sport', 'Ice Ball', + 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', 'Signal Beam', 'Sky Uppercut', 'Water Sport', + 'Miracle Eye', 'WakeUp Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', + 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', 'Captivate', 'Dark Void', + 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', + 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Rototiller', 'Ion Deluge', 'Crafty Shield', 'Flower Shield', 'Electrify', + 'Venom Drench', 'Powder', 'PowerUp Punch', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', 'Laser Focus', 'Gear Up', 'Aura Wheel', + 'Last Respects', 'Shed Tail', 'Baton Pass' + ], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['FFOU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'FFOU') { + return [set.species + ' is not legal in [Gen 9] Fakemon Frontier OU.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/fecc/format.ts b/data/mods/fecc/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/forgottenmons/format.ts b/data/mods/forgottenmons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/furfrou/format.ts b/data/mods/furfrou/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/g9blindsided/format-draft.ts b/data/mods/g9blindsided/format-draft.ts new file mode 100644 index 0000000000..41c41f70d9 --- /dev/null +++ b/data/mods/g9blindsided/format-draft.ts @@ -0,0 +1,42 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Blindsided Draft", + mod: "g9blindsided", + desc: `[Gen 9] Blindsided: the monkey has awoken part draft`, + threads: [ + `• spreadsheet`, + ], + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause', 'Terastal Clause'], + banlist: [ + 'Shed Tail', 'Last Respects', 'Baton Pass', + + // i apologize + + 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', + 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', + 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Spider Web', 'Mind Reader', 'Nightmare', 'Feint Attack', 'Octazooka', + 'Foresight', 'Return', 'Frustration', 'Magnitude', 'Pursuit', 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', + 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', 'Camouflage', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', + 'Grass Whistle', 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', 'Trump Card', + 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Magnet Bomb', 'Captivate', 'Chatter', + 'Heal Order', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', + 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', 'Techno Blast', 'Mat Block', 'Rototiller', 'Trick-or-Treat', + 'Ion Deluge', 'Forest\'s Curse', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', 'Geomancy', 'Power-Up Punch', + 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Spotlight', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', + 'Core Enforcer', 'Shell Trap', 'Shadow Bone', 'Spectral Thief', 'Nature\'s Madness', 'Multi-Attack', 'Mind Blown', 'Plasma Fists', 'Double Iron Bash', + 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Snap Trap', 'Aura Wheel', 'Obstruct', 'Meteor Assault', 'Eternabeam', + + 'Aparism', 'Chalquine', 'Driveel', 'Drukrackoon', 'Jerboulda', 'Molar Bear', 'Moriwarty', 'Notfly', 'Polarpants', 'Shadellisk', 'Stringle', + ], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['hi', 'C']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if ((template.tier !== 'hi') && (template.tier !== 'C')) { + return [set.species + ' is not legal in [Gen 9] Blindsided.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/g9blindsided/format-group-a.ts b/data/mods/g9blindsided/format-group-a.ts new file mode 100644 index 0000000000..9704aa2156 --- /dev/null +++ b/data/mods/g9blindsided/format-group-a.ts @@ -0,0 +1,43 @@ + import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Gen 9 Blindsided", + desc: `[Gen 9] Blindsided: the monkey has awoken`, + threads: [ + `• spreadsheet`, + ], + mod: 'g9blindsided', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], + banlist: [ + 'Chelperela', 'Terrapollo', 'Dualifer', + 'Shed Tail', 'Last Respects', + 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', + 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', + 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Conversion', 'Sketch', 'Triple Kick', 'Spider Web', 'Mind Reader', + 'Nightmare', 'Conversion 2', 'Aeroblast', 'Feint Attack', 'Octazooka', 'Foresight', 'Return', 'Frustration', 'Sacred Fire', 'Magnitude', 'Pursuit', + 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', + 'Camouflage', 'Tail Glow', 'Luster Purge', 'Mist Ball', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', + 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Doom Desire', 'Psycho Boost', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', + 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', + 'Captivate', 'Chatter', 'Heal Order', 'Crush Grip', 'Dark Void', 'Seed Flare', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', + 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', + 'Techno Blast', 'Secret Sword', 'Glaciate', 'Bolt Strike', 'Blue Flare', 'Freeze Shock', 'Ice Burn', 'Fusion Flare', 'Fusion Bolt', 'Mat Block', 'Rototiller', + 'Trick-or-Treat', 'Ion Deluge', 'Forest\'s Curse', 'Topsy-Turvy', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', + 'Geomancy', 'Power-Up Punch', 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', + 'Spotlight', 'Toxic Thread', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', 'Core Enforcer', 'Beak Blast', 'Clanging Scales', 'Dragon Hammer', + 'Shell Trap', 'Shadow Bone', 'Prismatic Laser', 'Spectral Thief', 'Sunsteel Strike', 'Moongeist Beam', 'Nature\'s Madness', 'Multi-Attack', + 'Mind Blown', 'Plasma Fists', 'Photon Geyser', 'Double Iron Bash', 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Clangorous Soul', 'Decorate', + 'Snap Trap', 'Aura Wheel', 'Strange Steam', 'Obstruct', 'Meteor Assault', 'Eternabeam', + ], + + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['hi']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'hi') { + return [set.species + ' is not legal in [Gen 9] Blindsided.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/g9blindsided/format-group-b.ts b/data/mods/g9blindsided/format-group-b.ts new file mode 100644 index 0000000000..6b2cb50923 --- /dev/null +++ b/data/mods/g9blindsided/format-group-b.ts @@ -0,0 +1,48 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Gen 9 Blindsided Group B", + desc: `[Gen 9] Blindsided: the monkey has awoken part 2`, + threads: [ + `• spreadsheet`, + ], + mod: 'g9blindsided', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], + banlist: [ + 'All Pokemon', + 'Shed Tail', 'Last Respects', + + // i apologize + + 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', + 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', + 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Conversion', 'Sketch', 'Triple Kick', 'Spider Web', 'Mind Reader', + 'Nightmare', 'Conversion 2', 'Aeroblast', 'Feint Attack', 'Octazooka', 'Foresight', 'Return', 'Frustration', 'Sacred Fire', 'Magnitude', 'Pursuit', + 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', + 'Camouflage', 'Tail Glow', 'Luster Purge', 'Mist Ball', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', + 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Doom Desire', 'Psycho Boost', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', + 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', + 'Captivate', 'Chatter', 'Heal Order', 'Crush Grip', 'Dark Void', 'Seed Flare', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', + 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', + 'Techno Blast', 'Secret Sword', 'Glaciate', 'Bolt Strike', 'Blue Flare', 'Freeze Shock', 'Ice Burn', 'Fusion Flare', 'Fusion Bolt', 'Mat Block', 'Rototiller', + 'Trick-or-Treat', 'Ion Deluge', 'Forest\'s Curse', 'Topsy-Turvy', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', + 'Geomancy', 'Power-Up Punch', 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', + 'Spotlight', 'Toxic Thread', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', 'Core Enforcer', 'Beak Blast', 'Clanging Scales', 'Dragon Hammer', + 'Shell Trap', 'Shadow Bone', 'Prismatic Laser', 'Spectral Thief', 'Sunsteel Strike', 'Moongeist Beam', 'Nature\'s Madness', 'Multi-Attack', + 'Mind Blown', 'Plasma Fists', 'Photon Geyser', 'Double Iron Bash', 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Clangorous Soul', 'Decorate', + 'Snap Trap', 'Aura Wheel', 'Strange Steam', 'Obstruct', 'Meteor Assault', 'Eternabeam', + ], + unbanlist: [ + "Agonette", "Alchevul", "Androimatide", "Armaruin", "Awesdruk", "Baashful", "Basilud", "Brasshopper", "Bruined", "Caddismith", "Caeruleto", "Capanopy", "Cardborg", "Carecrow", "Cavvage", "Chitana", "Chloravage", "Chubee", "Cloconstruct", "Covloris", "Croakast", "Cryosaurite", "Diabol", "Draatle", "Dreampunk", "Faeraith", "Falstiletto", "Fendeerie", "Ferticotta", "Flumflare", "Fridgeate", "Frozalisk", "Fulmineus", "Funera", "Gachacha", "Gastrel", "Gnomeush", "Gorilax", "Harmadillo", "Hydrongea", "IronRailgun", "Jamborai", "Kaledzi", "Kepa-ying", "Klimausion", "Kurayami", "Lepwozectur", "Libuble", "Lizhaman", "Locustab", "Marshwift", "Matitrick", "Melethyst", "Mochiknight", "Mon-Chi", "Mustank", "Neuranium", "Ohlmagoon", "Orbitgami", "Origyrant", "Phantasail", "Phanthazem", "Plasmacaw", "Pompadork", "Possabomb", "Pyrelic", "Pyroccult", "Pyrove", "Ralirulero", "Rexxon", "Roquack", "Roseaphot", "Sail-Goshi", "Sapparine", "Scorjester", "Scorpdyceps", "Searberus", "Shockatrice", "Snowpea", "Spectache", "Spirem", "Spongimney", "Squwhirrl", "Sundon", "Surchin", "Thorbarage", "Tiramitzu", "Tometex", "Tusquoka-Agent", "Tyrannyan", "Vamperilico", "Velvittle", "Vesquadron", "Vulchar", "Wiifii", "Wildemyst", "Zassansa", "Zauryo", "Zenoise", "Zunowy" + ], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['hi']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'hi') { + return [set.species + ' is not legal in [Gen 9] Blindsided.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/g9blindsided/format-group-c.ts b/data/mods/g9blindsided/format-group-c.ts new file mode 100644 index 0000000000..310d79cf8e --- /dev/null +++ b/data/mods/g9blindsided/format-group-c.ts @@ -0,0 +1,48 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Gen 9 Blindsided Group C", + desc: `[Gen 9] Blindsided: the monkey has awoken part 3`, + threads: [ + `• spreadsheet`, + ], + mod: 'g9blindsided', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], + banlist: [ + 'All Pokemon', + 'Shed Tail', 'Last Respects', 'Baton Pass', + + // i apologize + + 'Karate Chop', 'Double Slap', 'Comet Punch', 'Razor Wind', 'Jump Kick', 'Rolling Kick', 'Twineedle', 'Sonic Boom', 'Submission', 'Dragon Rage', 'Meditate', + 'Rage', 'Barrier', 'Bide', 'Mirror Move', 'Egg Bomb', 'Bone Club', 'Clamp', 'Skull Bash', 'Spike Cannon', 'Constrict', 'Kinesis', 'Barrage', 'Lovely Kiss', + 'Bubble', 'Dizzy Punch', 'Flash', 'Psywave', 'Bonemerang', 'Hyper Fang', 'Sharpen', 'Conversion', 'Sketch', 'Triple Kick', 'Spider Web', 'Mind Reader', + 'Nightmare', 'Conversion 2', 'Aeroblast', 'Feint Attack', 'Octazooka', 'Foresight', 'Return', 'Frustration', 'Sacred Fire', 'Magnitude', 'Pursuit', + 'Vital Throw', 'Hidden Power', 'Hail', 'Smelling Salts', 'Nature Power', 'Assist', 'Magic Coat', 'Revenge', 'Refresh', 'Grudge', 'Snatch', 'Secret Power', + 'Camouflage', 'Tail Glow', 'Luster Purge', 'Mist Ball', 'Mud Sport', 'Ice Ball', 'Needle Arm', 'Aromatherapy', 'Odor Sleuth', 'Silver Wind', 'Grass Whistle', + 'Signal Beam', 'Sky Uppercut', 'Water Sport', 'Doom Desire', 'Psycho Boost', 'Miracle Eye', 'Wake-Up Slap', 'Natural Gift', 'Embargo', 'Psycho Shift', + 'Trump Card', 'Heal Block', 'Wring Out', 'Lucky Chant', 'Me First', 'Punishment', 'Mud Bomb', 'Mirror Shot', 'Rock Climb', 'Rock Wrecker', 'Magnet Bomb', + 'Captivate', 'Chatter', 'Heal Order', 'Crush Grip', 'Dark Void', 'Seed Flare', 'Ominous Wind', 'Autotomize', 'Telekinesis', 'Storm Throw', 'Flame Burst', + 'Synchronoise', 'Chip Away', 'Sky Drop', 'Bestow', 'Dual Chop', 'Heart Stamp', 'Leaf Tornado', 'Steamroller', 'Head Charge', 'Gear Grind', 'Searing Shot', + 'Techno Blast', 'Secret Sword', 'Glaciate', 'Bolt Strike', 'Blue Flare', 'Freeze Shock', 'Ice Burn', 'Fusion Flare', 'Fusion Bolt', 'Mat Block', 'Rototiller', + 'Trick-or-Treat', 'Ion Deluge', 'Forest\'s Curse', 'Topsy-Turvy', 'Crafty Shield', 'Flower Shield', 'Electrify', 'King\'s Shield', 'Venom Drench', 'Powder', + 'Geomancy', 'Power-Up Punch', 'Oblivion Wing', 'Thousand Arrows', 'Thousand Waves', 'Land\'s Wrath', 'Light of Ruin', 'Sparkling Aria', 'Floral Healing', + 'Spotlight', 'Toxic Thread', 'Laser Focus', 'Gear Up', 'Anchor Shot', 'Purify', 'Core Enforcer', 'Beak Blast', 'Clanging Scales', 'Dragon Hammer', + 'Shell Trap', 'Shadow Bone', 'Prismatic Laser', 'Spectral Thief', 'Sunsteel Strike', 'Moongeist Beam', 'Nature\'s Madness', 'Multi-Attack', + 'Mind Blown', 'Plasma Fists', 'Photon Geyser', 'Double Iron Bash', 'Max Guard', 'Octolock', 'Bolt Beak', 'Fishious Rend', 'Clangorous Soul', 'Decorate', + 'Snap Trap', 'Aura Wheel', 'Strange Steam', 'Obstruct', 'Meteor Assault', 'Eternabeam', + ], + unbanlist: [ + "ExPl0r3REx3", "Androimatide", "Aparism", "Armaruin", "Averse", "Baashful", "Bardisco", "Bonnetform", "Bruined", "Capanopy", "Cardborg", "Chalquine", "Champimimus", "Chinchimra", "Chitana", "Cloconstruct", "Croakast", "Crushave", "Cryosaurite", "Diabol", "Draatle", "Driveel", "Drukrackoon", "Dynamantis", "Electhog", "Elyctron", "Faeraith", "Falstiletto", "Fendeerie", "Fridgeate", "Frozalisk", "Gachacha", "Gastrel", "Gnomeush", "Grrilla", "Harmadillo", "Heacluster", "Helmekh", "Hydrongea", "Iron Aspis", "Iron Rebel", "Jerboulda", "Kaledzi", "Kepa-ying", "Klimausion", "Kurayami", "Lizhaman", "Luxsectus", "Majestapis", "Marshwift", "Matryocha", "Melethyst", "Mochiknight", "Molar Bear", "Mon-Chi", "Moriwarty", "Mustank", "Neuranium", "Notfly", "Obbyplex", "Offendage", "Onion Wings", "Orbitgami", "Pestispine", "Phantasail", "Phanthazem", "Plasmacaw", "Plasmelion", "Polarpants", "Pompadork", "Possabomb", "Potatron", "Ralirulero", "Rexxon", "Rockick", "Rodendrain", "Roquack", "Roseaphot", "Sail-Goshi", "Scorjester", "Scorpdyceps", "Searberus", "Serprizius", "Shadellisk", "Shockatrice", "Skullpion", "Spectache", "Spirem", "Squwhirrl", "Stringle", "Sundon", "Surchin", "Terralauri", "Thorbarage", "Tiramitzu", "Tusquoka-Agent", "Twirlava", "Tyrannyan", "Vamperilico", "Velocipastor", "Velvittle", "Vesquadron", "Vulchar", "Wellowish", "Wyvking", "Zassansa", "Zauryo", "Zenoise", "Cucurbella" + ], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['hi', 'C']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if ((template.tier !== 'hi') && (template.tier !== 'C')) { + return [set.species + ' is not legal in [Gen 9] Blindsided.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/g9duomod/format.ts b/data/mods/g9duomod/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1/format.ts b/data/mods/gen1/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1azure/format.ts b/data/mods/gen1azure/format.ts new file mode 100644 index 0000000000..71b6f8f6bc --- /dev/null +++ b/data/mods/gen1azure/format.ts @@ -0,0 +1,12 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 1] Azure Version", + threads: [ + `• [Gen 1] Azure Version`, + ], + + mod: 'gen1azure', + ruleset: ['Standard'], + banlist: ['Uber'], + }; \ No newline at end of file diff --git a/data/mods/gen1backtothepast/format.ts b/data/mods/gen1backtothepast/format.ts new file mode 100644 index 0000000000..2b9b434c47 --- /dev/null +++ b/data/mods/gen1backtothepast/format.ts @@ -0,0 +1,14 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 1] Back to the Past", + desc: `[Gen 1] Back to the Past: Adapting future gen moves and Pokemon into RBY`, + threads: [ + `• Back to the Past on Smogon Forums`, + ], + mod: 'gen1backtothepast', + ruleset: ['Standard', 'Data Mod'], + banlist: ['Uber'], + unbanlist: ['Seismitoad', 'Masquerain', 'Cursola', 'Skitter Smack', 'Burn Up', 'Drain Punch', 'Sappy Seed', "Focus Punch", 'Mud Shot', + ], + }; \ No newline at end of file diff --git a/data/mods/gen1burgundy/format.ts b/data/mods/gen1burgundy/format.ts new file mode 100644 index 0000000000..0ba2aa8c3a --- /dev/null +++ b/data/mods/gen1burgundy/format.ts @@ -0,0 +1,14 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 1] Burgundy Version", + desc: `[Gen 1] Burgundy Version: An expansion of the Gen 1 OU metagame that changes some mechanics and adds new Pokemon and moves, both original and from later gens.`, + threads: [ + `• Burgundy Version on Smogon Forums`, + ], + mod: 'gen1burgundy', + ruleset: ['Standard With Dig and Fly', 'Data Mod', 'Allow Tradeback'], + banlist: ['Uber'], + unbanlist: ['Anorith', 'Armaldo', 'Meditite', 'Medicham', 'Fletchling', 'Fletchinder', 'Talonflame', 'Sneasel-Hisui', 'Sneasler', 'Snover', 'Abomasnow', + ], + }; \ No newline at end of file diff --git a/data/mods/gen1expansionpack/format.ts b/data/mods/gen1expansionpack/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1futureproofing/format.ts b/data/mods/gen1futureproofing/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1johtomons/format.ts b/data/mods/gen1johtomons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1jumpstarted/format.ts b/data/mods/gen1jumpstarted/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1metronome/format.ts b/data/mods/gen1metronome/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1moonside/format.ts b/data/mods/gen1moonside/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1rbycap/format.ts b/data/mods/gen1rbycap/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1recolored/format.ts b/data/mods/gen1recolored/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1stadium/format.ts b/data/mods/gen1stadium/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1tradebacksexpanded/format.ts b/data/mods/gen1tradebacksexpanded/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen1violetversion/format.ts b/data/mods/gen1violetversion/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen2/format.ts b/data/mods/gen2/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen2crystallegacy/format.ts b/data/mods/gen2crystallegacy/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen2crystalseviiislands/format.ts b/data/mods/gen2crystalseviiislands/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen2doubles/format.ts b/data/mods/gen2doubles/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen2expansionpack/format.ts b/data/mods/gen2expansionpack/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen2stadium2/format.ts b/data/mods/gen2stadium2/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen2teracrystal/format.ts b/data/mods/gen2teracrystal/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3/format.ts b/data/mods/gen3/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3advdx/format.ts b/data/mods/gen3advdx/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3advplus/format.ts b/data/mods/gen3advplus/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3advttp/format.ts b/data/mods/gen3advttp/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3colosseum/format.ts b/data/mods/gen3colosseum/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3hoennechoes/format.ts b/data/mods/gen3hoennechoes/format.ts new file mode 100644 index 0000000000..7920cda953 --- /dev/null +++ b/data/mods/gen3hoennechoes/format.ts @@ -0,0 +1,9 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 3] Hoenn Echoes", + mod: 'gen3hoennechoes', + ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Boost Passer Clause', 'Freeze Clause Mod', 'Data Mod'], + banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'], + desc: `A mod based on Generation 3 Ubers which aims to breathe some life into the tier by reducing RNG elements, increasing Pokemon diversity, and balancing the tier around the Pokemon that are already strong.`, + }; \ No newline at end of file diff --git a/data/mods/gen3hoenngaiden/format.ts b/data/mods/gen3hoenngaiden/format.ts new file mode 100644 index 0000000000..6ff9d4d750 --- /dev/null +++ b/data/mods/gen3hoenngaiden/format.ts @@ -0,0 +1,13 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 3] Hoenn Gaiden OU", + desc: ["Hoenn Gaiden: A Gen 3 pet mod that aims to devamp Gen 4-8 Pokemon, moves and items into the Gen 3 mechanics."], + threads: [ + `• Hoenn Gaiden on Smogon Forums`, + ], + mod: 'gen3hoenngaiden', + ruleset: ['HG Standard', 'Data Mod', 'Freeze Clause Mod'], + banlist: ['Uber'], + unbanlist: ['Sand Veil'], + }; \ No newline at end of file diff --git a/data/mods/gen3ourstb/format.ts b/data/mods/gen3ourstb/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3shadowcolosseum/format.ts b/data/mods/gen3shadowcolosseum/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3tradebacks/format.ts b/data/mods/gen3tradebacks/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen3uuhoenngaiden/format.ts b/data/mods/gen3uuhoenngaiden/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen4/format.ts b/data/mods/gen4/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen4pt/format.ts b/data/mods/gen4pt/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen5/format.ts b/data/mods/gen5/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen5bw1/format.ts b/data/mods/gen5bw1/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen5unovayb/format.ts b/data/mods/gen5unovayb/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen5valuemons/format.ts b/data/mods/gen5valuemons/format.ts new file mode 100644 index 0000000000..a6c68a6225 --- /dev/null +++ b/data/mods/gen5valuemons/format.ts @@ -0,0 +1,30 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 5] 33 Valuemons", + mod: 'gen5valuemons', + desc: `A Draft-like meta where each Pokemon has a point value, and the team's value cannot exceed 33 points. This tier is not quite finished, but we're working on it!`, + threads: [ + `• Solomod Post`, + `• Reference Sheet`, + `• Sample Teams`, + `• 33 Valuemons Discord`, + ], + ruleset: [ + 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'Sleep Clause Mod', + 'Species Clause', 'Nickname Clause', 'OHKO Clause', 'Evasion Items Clause', + 'Evasion Moves Clause', 'Baton Pass Stat Clause', 'Gems Clause', 'One Starter Clause', + 'One Pseudo Clause', 'One Legendary Clause', 'Obtainable', '!Obtainable Moves', + ], + banlist: ['King\'s Rock', 'Razor Fang'], + unbanlist: ['Baton Pass'], + onValidateTeam(team, format) { + const allowedTiers = ['33v']; + for (const set of team) { + const template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [`${set.species} is not legal in 33 Valuemons.`]; + } + } + }, +}; \ No newline at end of file diff --git a/data/mods/gen6/format.ts b/data/mods/gen6/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen6megasrevisited/format.ts b/data/mods/gen6megasrevisited/format.ts new file mode 100644 index 0000000000..948aa9a711 --- /dev/null +++ b/data/mods/gen6megasrevisited/format.ts @@ -0,0 +1,12 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 6] Megas Revisited", + threads: [ + `• Megas Revisited on Smogon Forums`, + `• Spreadsheet`, + ], + mod: 'gen6megasrevisited', + ruleset: ['Standard', 'Swagger Clause', 'Mega Data Mod'], + banlist: ['Uber', 'Arena Trap', 'Shadow Tag', 'Soul Dew', 'Baton Pass', 'Blaziken + Speed Boost'], + }; \ No newline at end of file diff --git a/data/mods/gen6mixandmegasrevisited/format.ts b/data/mods/gen6mixandmegasrevisited/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen6xy/format.ts b/data/mods/gen6xy/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen7/format.ts b/data/mods/gen7/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen7letsgo/format.ts b/data/mods/gen7letsgo/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen7sm/format.ts b/data/mods/gen7sm/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen8/format.ts b/data/mods/gen8/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen8bdsp/format.ts b/data/mods/gen8bdsp/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen8dlc1/format.ts b/data/mods/gen8dlc1/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen8feuu/format.ts b/data/mods/gen8feuu/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen8haxmeters/format.ts b/data/mods/gen8haxmeters/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen8lucklessplay/format.ts b/data/mods/gen8lucklessplay/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen8maxmeter/format.ts b/data/mods/gen8maxmeter/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9/format.ts b/data/mods/gen9/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9crossoverchaos/format.ts b/data/mods/gen9crossoverchaos/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9crossoverchaosc/format.ts b/data/mods/gen9crossoverchaosc/format.ts new file mode 100644 index 0000000000..90a9bd2eac --- /dev/null +++ b/data/mods/gen9crossoverchaosc/format.ts @@ -0,0 +1,25 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Crossover Chaos [Ver. C]", + desc: `Crossover Chaos, a micrometa designed to crossover characters from video game titles.`, + threads: [ + `Gen 9 Crossover Chaos (Ver. C)`, + ], + mod: 'gen9crossoverchaosc', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Data Mod', 'Sleep Moves Clause', 'Terastal Clause', 'Mega Data Mod'], + banlist: ["Buginium Z", "Darkinium Z", "Dragonium Z", "Electrium Z", "Fairium Z", "Fightinium Z", "Firium Z", "Flyinium Z", "Ghostium Z", + "Grassium Z", "Groundium Z", "Icium Z", "Normalium Z", "Poisonium Z", "Psychium Z", "Rockium Z", "Steelium Z", "Waterium Z"], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['CC OU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Crossover Chaos Version C.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/gen9dlc1/format.ts b/data/mods/gen9dlc1/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9evolutionproject/format.ts b/data/mods/gen9evolutionproject/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9fe/format-randoms.ts b/data/mods/gen9fe/format-randoms.ts new file mode 100644 index 0000000000..bb8929c354 --- /dev/null +++ b/data/mods/gen9fe/format-randoms.ts @@ -0,0 +1,9 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Fusion Evolution Random Battle", + mod: 'gen9fe', + team: 'random', + desc: `gen9fe`, + ruleset: ['Data Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Endless Battle Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Z-Move Clause', 'OU Terastal Clause'], + }; \ No newline at end of file diff --git a/data/mods/gen9fe/format-uu.ts b/data/mods/gen9fe/format-uu.ts new file mode 100644 index 0000000000..983512479f --- /dev/null +++ b/data/mods/gen9fe/format-uu.ts @@ -0,0 +1,34 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Fusion Evolution UU", + threads: [ + `Gen 9 Fusion Evolution UU`, + ], + mod: 'gen9fe', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + //While the first users of the mega stone will be made illegal with them if the respective megas are banned and not the stones, + //banning other megas accessed through said stone will not ban the use of said mega stone on the base forms + banlist: ['Altarianite', 'Revival Blessing', 'Shed Tail', 'Last Respects', 'Mawilite', 'Alakazite', 'Baton Pass', 'Light Clay', + 'Aero Wake', 'Amigotrio-Alola', 'Amphamence', 'Anoraidon', 'Arbolosion-Hisui', 'Baxgeist-Large', 'Bellikiss', 'Bouffa-Lu', 'Brambleswine', + 'Celedos', 'Cresserace', 'Crygargonal', 'Deciperior-Hisui', 'Deliraidon', 'Deoxyslash-Speed', 'Drampiclus', 'Druddizor', + 'Floatzera', 'Florgerouge', 'Gargamise', 'Garpyuku', 'Great Kleav', 'Icekrai', 'Iron Dirge', 'Iron Legion', 'Iron Matcha', 'Medichamite', + 'Iron Meta', 'Iron Mimic', 'Iron Tornado', 'Lelecuno-Galar', 'Meowscorio-Sensu', 'Necrotrik-Dawn-Wings', 'Necrotrik-Ultra', 'Primeleo', + 'Relishadow', 'Revarantis', 'Roaring Sal', 'Rotoghold', 'Samuraiai-Hisui', 'Scream Cormorant', 'Sol Valiant', 'Stargrowth', 'Tapu Titan', 'Tinkovish', 'Toedieleki', + 'Urshiluxe-Rapid-Strike', 'Varantis', 'Vikadrago', 'Weezaluna-Bloodmoon', 'Whimsy Sands', 'Wopple', 'Yu-Clod', 'Yveltox', 'Slither King', + 'Muktaria-Alola-Mega', 'Mawlakazam-Mega-X', 'Mawlakazam-Mega-Y', 'Goopert-Hisui-Mega', 'Scizorite', 'Tentazor-Mega', 'Zoroshark-Hisui-Mega' + ], + //Just slapping "FEOU" in the banlist exclude these mons from the teambuilder... but an error ('Nothing matches "FEOU"') was thrown in dex-formats on the server side + //Hence why bans were done manually + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['FEUU', 'FENFE', "FELC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Fusion Evolution UU.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/gen9fe/format.ts b/data/mods/gen9fe/format.ts new file mode 100644 index 0000000000..f21f01b9cc --- /dev/null +++ b/data/mods/gen9fe/format.ts @@ -0,0 +1,22 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Fusion Evolution", + threads: [ + `Gen 9 Fusion Evolution`, + ], + mod: 'gen9fe', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'OU Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + banlist: ['Metagrossite', 'Revival Blessing', 'Shed Tail', 'Last Respects', 'Gengarite', 'Ampharosite', 'Salamencite', 'Baton Pass', 'Light Clay', 'Absolite', 'Medichamite'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['FEOU', 'FEUUBL', 'FEUU', 'FENFE', "FELC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Fusion Evolution.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/gen9ferestrictions/format.ts b/data/mods/gen9ferestrictions/format.ts new file mode 100644 index 0000000000..00c51c6b64 --- /dev/null +++ b/data/mods/gen9ferestrictions/format.ts @@ -0,0 +1,22 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Fusion Evolution Restrictions", + threads: [ + `Fusion Evolution Restrictions`, + ], + mod: 'gen9ferestrictions', + ruleset: ['Standard', 'Evasion Abilities Clause', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Terastal Clause', 'Mega Rayquaza Clause', 'Mega Data Mod', 'Data Mod'], + banlist: ['Revival Blessing', 'Shed Tail', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Altarianite'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['FERE', 'FERENFE', 'FERELC', 'Silverade']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Fusion Evolution Restricted.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/gen9fevgc/format.ts b/data/mods/gen9fevgc/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9multiverse/format.ts b/data/mods/gen9multiverse/format.ts new file mode 100644 index 0000000000..72a1b111bb --- /dev/null +++ b/data/mods/gen9multiverse/format.ts @@ -0,0 +1,23 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Multiverse", + threads: [ + '• Multiverse', + '• Spreadsheet', + ], + mod: 'gen9multiverse', + ruleset: ['Standard', 'Terastal Clause', 'Data Mod'], + banlist: ['Moody', 'Baton Pass'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MV']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Multiverse.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/gen9predlc/format.ts b/data/mods/gen9predlc/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9ssb/format.ts b/data/mods/gen9ssb/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9strong/format.ts b/data/mods/gen9strong/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9ubermons/format.ts b/data/mods/gen9ubermons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9vaporemons/format.ts b/data/mods/gen9vaporemons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gen9vgc20xx/format.ts b/data/mods/gen9vgc20xx/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/gennext/format.ts b/data/mods/gennext/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/genxbrunica/format-ou.ts b/data/mods/genxbrunica/format-ou.ts new file mode 100644 index 0000000000..fc5c9a905e --- /dev/null +++ b/data/mods/genxbrunica/format-ou.ts @@ -0,0 +1,52 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Generation X: Brunica [Uber]", + desc: 'Generation X: A pet mod that aims to develop new regions with brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Brunica, the mod\'s second region in Generation 9 after Desvega and fourth overall.', + threads: [ + `Gen 9 Generation X`, + `Announcement of Generation X's fourth iteration`, + ], + mod: 'genxbrunica', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + banlist: [], + unbanlist: ['Last Respects', 'Shed Tail', 'Bright Powder', 'Razor Fang', 'Arena Trap', 'Moody', 'Shadow Tag'], //Uber unbans + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['Brunica Uber', 'Brunica OU', 'Brunica NFE', "Brunica LC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not available in Generation X\'s Brunica formats.']; + } + } + },/* + onChangeSet(set) { + if (set.species.startsWith('Lutakon')) { + const item = this.toID(set.item); + if (item === 'awakeningseed') { + set.species = 'Lutakon-Awakened'; + set.ability = 'Guardian of Nature'; + let synthesis = set.moves.indexOf('Synthesis'); + if (synthesis < 0) { + synthesis = set.moves.indexOf('synthesis'); + } + if (synthesis >= 0) { + let gaiaRecoveryIndex = set.moves.indexOf('gaiarecovery'); + if (gaiaRecoveryIndex < 0) { + gaiaRecoveryIndex = set.moves.indexOf('Gaia Recovery'); + } + if (gaiaRecoveryIndex >= 0) { + delete set.moves[synthesis]; + } + else { + set.moves[synthesis] = 'gaiarecovery'; + } + } + } else { + set.species = 'Lutakon'; + } + } + },*/ +}; \ No newline at end of file diff --git a/data/mods/genxbrunica/format-uber.ts b/data/mods/genxbrunica/format-uber.ts new file mode 100644 index 0000000000..507c902d23 --- /dev/null +++ b/data/mods/genxbrunica/format-uber.ts @@ -0,0 +1,27 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Generation X: Brunica [OU]", + desc: 'Generation X: A pet mod that aims to develop new regions with brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Brunica, the mod\'s second region in Generation 9 after Desvega and fourth overall.', + threads: [ + `Gen 9 Generation X`, + `Announcement of Generation X's fourth iteration`, + ], + mod: 'genxbrunica', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + banlist: ['Akulut', 'Kaiwakaw', 'Lutakon', 'Lutakon-Awakened', 'Tinozous'], //Ubers + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['Brunica OU', 'Brunica NFE', "Brunica LC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier === 'Brunica Uber') { + return [set.species + ' is banned in Generation X\'s OU format for Brunica.']; + } + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not available in Generation X\'s Brunica formats.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/genxdesvega/format-ou.ts b/data/mods/genxdesvega/format-ou.ts new file mode 100644 index 0000000000..103ed0c54d --- /dev/null +++ b/data/mods/genxdesvega/format-ou.ts @@ -0,0 +1,26 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Generation X: Desvega [OU]", + desc: 'Generation X: A pet mod that aims to develop new regions with both brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Desvega, the mod\'s first region in Generation 9 and third region overall, as the successor to Loria from Generation 8.', + threads: [ + `Gen 9 Generation X`, + ], + mod: 'genxdesvega', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + banlist: ['Ursaluna-Bloodmoon', 'Naganadel', 'Arcognition', 'Janutcher', 'Virulope'], //Ubers + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['Desvega OU', 'Desvega NFE', "Desvega LC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier === 'Brunica Uber') { + return [set.species + ' is banned in Generation X\'s OU format for Desvega.']; + } + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not available in Generation X\'s Desvega formats.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/genxdesvega/format-uber.ts b/data/mods/genxdesvega/format-uber.ts new file mode 100644 index 0000000000..c5f2661844 --- /dev/null +++ b/data/mods/genxdesvega/format-uber.ts @@ -0,0 +1,24 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Generation X: Desvega [Uber]", + desc: 'Generation X: A pet mod that aims to develop new regions with brand-new Pokemon and select realmons, including ones that are absent from Scarlet and Violet. This format is based in Desvega, the mod\'s first region in Generation 9 and third region overall, as the successor to Loria from Generation 8.', + threads: [ + `Gen 9 Generation X`, + ], + mod: 'genxdesvega', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Sleep Clause Mod', 'Z-Move Clause', 'Mega Data Mod', 'Data Mod'], + banlist: [], + unbanlist: ['Last Respects', 'Shed Tail', 'Bright Powder', 'Razor Fang', 'Arena Trap', 'Moody', 'Shadow Tag'], //Uber unbans + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['Desvega Uber', 'Desvega OU', 'Desvega NFE', "Desvega LC"]; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not available in Generation X\'s Desvega formats.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/genxloria/format.ts b/data/mods/genxloria/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/glacemons/format.ts b/data/mods/glacemons/format.ts new file mode 100644 index 0000000000..d075efc762 --- /dev/null +++ b/data/mods/glacemons/format.ts @@ -0,0 +1,25 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] GlaceMons", + desc: 'GlaceMons: The fourth mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for Gen 9 NatDex OU (and new items, abilities and moves are added) without changing base stats.', + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'glacemons', + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], + banlist: ['AG', 'Uber', 'Power Construct', 'Berserk Gene', 'Arena Trap', 'Sand Veil', 'Snow Cloak', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', + // 'Blastoise + Parallel Mega Orb', 'Salamence + Parallel Mega Orb', 'Gengar + Parallel Mega Orb', 'Alakazam + Parallel Mega Orb', 'Blaziken + Parallel Mega Orb', 'Lucario + Parallel Mega Orb', 'Gallade + Parallel Mega Orb', + 'Special Tera Orb', + // stupid dungeon's looplet + 'Dungeon\s Looplet + Zygarde-10%', + 'Dungeon\s Looplet + Diglett', 'Dungeon\s Looplet + Dugtrio', 'Dungeon\s Looplet + Trapinch', + 'Dungeon\s Looplet + Sandshrew', 'Dungeon\s Looplet + Sandslash', 'Dungeon\s Looplet + Diglett-Alola', 'Dungeon\s Looplet + Dugtrio-Alola', 'Dungeon\s Looplet + Geodude', 'Dungeon\s Looplet + Graveler', 'Dungeon\s Looplet + Golem', 'Dungeon\s Looplet + Phanpy', 'Dungeon\s Looplet + Donphan', 'Dungeon\s Looplet + Gligar', 'Dungeon\s Looplet + Gliscor', 'Dungeon\s Looplet + Larvitar', 'Dungeon\s Looplet + Cacnea', 'Dungeon\s Looplet + Cacturne', 'Dungeon\s Looplet + Gible', 'Dungeon\s Looplet + Gabite', 'Dungeon\s Looplet + Helioptile', 'Dungeon\s Looplet + Heliolisk', 'Dungeon\s Looplet + Sandygast','Dungeon\s Looplet + Palossand', 'Dungeon\s Looplet + Silicobra', 'Dungeon\s Looplet + Sandaconda', 'Dungeon\s Looplet + Wiglett', 'Dungeon\s Looplet + Wugtrio', 'Dungeon\s Looplet + Orthworm', + 'Dungeon\s Looplet + Sandshrew-Alola', 'Dungeon\s Looplet + Sandslash-Alola', 'Dungeon\s Looplet + Vulpix-Alola', 'Dungeon\s Looplet + Ninetales-Alola', 'Dungeon\s Looplet + Swinub', 'Dungeon\s Looplet + Piloswine', 'Dungeon\s Looplet + Froslass', 'Dungeon\s Looplet + Vanillite', 'Dungeon\s Looplet + Vanillish', 'Dungeon\s Looplet + Cetoddle', + 'Dungeon\s Looplet + Wobbuffet', 'Dungeon\s Looplet + Wynaut', 'Dungeon\s Looplet + Gothita', 'Dungeon\s Looplet + Gothorita', 'Dungeon\s Looplet + Gothitelle', + // will free later on + 'Parallel Mega Orb', + ], + unbanlist: ['Light of Ruin'], + teambuilderFormat: 'National Dex', + }; \ No newline at end of file diff --git a/data/mods/glacemonsuber/format.ts b/data/mods/glacemonsuber/format.ts new file mode 100644 index 0000000000..973f8b1569 --- /dev/null +++ b/data/mods/glacemonsuber/format.ts @@ -0,0 +1,25 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] GlaceMons Uber", + desc: 'GlaceMons: The fourth mod in the SylveMons series where Pokemon, items, abilities and moves are redesigned for Gen 9 NatDex OU (and new items, abilities and moves are added) without changing base stats.', + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'glacemonsuber', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], + banlist: ['AG', 'Berserk Gene', 'Sand Veil', 'Snow Cloak', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', // 'Gengar + Parallel Mega Orb', + 'Dungeon\s Looplet + Sandshrew', 'Dungeon\s Looplet + Sandslash', 'Dungeon\s Looplet + Diglett-Alola', 'Dungeon\s Looplet + Dugtrio-Alola', 'Dungeon\s Looplet + Geodude', 'Dungeon\s Looplet + Graveler', 'Dungeon\s Looplet + Golem', 'Dungeon\s Looplet + Phanpy', 'Dungeon\s Looplet + Donphan', 'Dungeon\s Looplet + Gligar', 'Dungeon\s Looplet + Gliscor', 'Dungeon\s Looplet + Larvitar', 'Dungeon\s Looplet + Cacnea', 'Dungeon\s Looplet + Cacturne', 'Dungeon\s Looplet + Gible', 'Dungeon\s Looplet + Gabite', 'Dungeon\s Looplet + Helioptile', 'Dungeon\s Looplet + Heliolisk', 'Dungeon\s Looplet + Sandygast','Dungeon\s Looplet + Palossand', 'Dungeon\s Looplet + Silicobra', 'Dungeon\s Looplet + Sandaconda', 'Dungeon\s Looplet + Wiglett', 'Dungeon\s Looplet + Wugtrio', 'Dungeon\s Looplet + Orthworm', + 'Dungeon\s Looplet + Sandshrew-Alola', 'Dungeon\s Looplet + Sandslash-Alola', 'Dungeon\s Looplet + Vulpix-Alola', 'Dungeon\s Looplet + Ninetales-Alola', 'Dungeon\s Looplet + Swinub', 'Dungeon\s Looplet + Piloswine', 'Dungeon\s Looplet + Froslass', 'Dungeon\s Looplet + Vanillite', 'Dungeon\s Looplet + Vanillish', 'Dungeon\s Looplet + Cetoddle', + ], + unbanlist: ['Light of Ruin'], + teambuilderFormat: 'National Dex Uber', + onModifySpeciesPriority: 2, + onModifySpecies(species, target, source, effect) { + if (source?.forme && source.forme.startsWith('Mega') && source.hasItem('parallelmegaorb')) { + let newAbility = source.set.ability + const oldAbility = source.setAbility(newAbility); + } + return {...species}; + }, + }; \ No newline at end of file diff --git a/data/mods/haxmeters/format.ts b/data/mods/haxmeters/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/hiddengems/format.ts b/data/mods/hiddengems/format.ts new file mode 100644 index 0000000000..836265359c --- /dev/null +++ b/data/mods/hiddengems/format.ts @@ -0,0 +1,11 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Hidden Gems", + threads: [ + `Hidden Gems`, + ], + mod: 'hiddengems', + ruleset: ['Standard', 'Terastal Clause', 'Sleep Moves Clause', '!Sleep Clause Mod'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Shadow Tag', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], + }; \ No newline at end of file diff --git a/data/mods/hideandseaking/format.ts b/data/mods/hideandseaking/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/hideandseakingslate5clauses/format.ts b/data/mods/hideandseakingslate5clauses/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/iforgor/format.ts b/data/mods/iforgor/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/imando/format.ts b/data/mods/imando/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/ironfist/format.ts b/data/mods/ironfist/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/ironmons/format.ts b/data/mods/ironmons/format.ts new file mode 100644 index 0000000000..5fbec14d86 --- /dev/null +++ b/data/mods/ironmons/format.ts @@ -0,0 +1,13 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Ironmons", + desc: ["Ironmons: A OU based Pet Mod that aims to create new Paradox forms for existing Pokemon, both past and future.", + ], + threads: [ + `• Ironmons on Smogon Forums` + ], + mod: 'ironmons', + ruleset: ['Standard'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass'], + }; \ No newline at end of file diff --git a/data/mods/jollymod/format.ts b/data/mods/jollymod/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/joltemons/format.ts b/data/mods/joltemons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/kaensdex/format.ts b/data/mods/kaensdex/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/kitchen/format.ts b/data/mods/kitchen/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/legendshoopa/format.ts b/data/mods/legendshoopa/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/letsgo/format.ts b/data/mods/letsgo/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/littlecolosseum/format.ts b/data/mods/littlecolosseum/format.ts new file mode 100644 index 0000000000..560f164241 --- /dev/null +++ b/data/mods/littlecolosseum/format.ts @@ -0,0 +1,17 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Little Colosseum LC", + desc: ["Little Colosseum: A Gen 9 Little Cup Pet Mod that aims to buff weaker LC Pokemon and nerf LC Ubers to create a more diverse metagame."], + threads: [ + `• Little Colosseum on Smogon Forums`, + ], + mod: 'littlecolosseum', + teambuilderFormat: "LC", + ruleset: ['Little Cup', 'Standard', 'Data Mod'], + banlist: [ + 'Aipom', 'Basculin-White-Striped', 'Diglett-Base', 'Dunsparce', 'Duraludon', 'Girafarig', 'Gligar', + 'Meditite', 'Misdreavus', 'Murkrow', 'Porygon', 'Qwilfish-Hisui', 'Rufflet', 'Scraggy', 'Sneasel', 'Sneasel-Hisui', + 'Snivy', 'Stantler', 'Vulpix', 'Vulpix-Alola', 'Yanma', 'Moody', 'Baton Pass', 'Sticky Web', 'Heat Rock', + ], + }; \ No newline at end of file diff --git a/data/mods/littleestcup/format.ts b/data/mods/littleestcup/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/littlestcup/format.ts b/data/mods/littlestcup/format.ts new file mode 100644 index 0000000000..db0872d0b1 --- /dev/null +++ b/data/mods/littlestcup/format.ts @@ -0,0 +1,15 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Hide and Seaking", + threads: [ + `Hide and Seaking`, + ], + teambuilderFormat: "National Dex", + mod: 'littleestcup', + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Clause', 'Species Clause', 'Sleep Clause Mod', 'Terastal Clause', 'big dog Clause', 'Moniker Clause'], + banlist: [ + 'Uber', 'AG', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', + 'Quick Claw', 'Razor Fang', 'Assist', 'Baton Pass', 'Last Respects', 'Shed Tail', 'Houndoominite', + ], + }; \ No newline at end of file diff --git a/data/mods/lucklessplay/format.ts b/data/mods/lucklessplay/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/lukemod/format.ts b/data/mods/lukemod/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/m4ag9/format-vgc.ts b/data/mods/m4ag9/format-vgc.ts new file mode 100644 index 0000000000..4cccd9f118 --- /dev/null +++ b/data/mods/m4ag9/format-vgc.ts @@ -0,0 +1,45 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] M4A VGC", + desc: ["Megas for All v7 but it's a VGC format", + ], + threads: [ + `• Megas for All v7 on Smogon Forums`, + `• Spreadsheet`, + `• Wiki` + ], + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Dynamax Clause', 'Mega Data Mod', 'Terastal Clause'], + banlist: [ + 'Mewtwo', 'Mew', + 'Lugia', 'Ho-Oh', 'Celebi', + 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', + 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', + 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', + 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', + 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', + 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', + 'Koraidon', 'Miraidon', 'Pecharunt', + ], + mod: 'm4ag9', + onValidateSet(set) { + // These Pokemon are still unobtainable + const unobtainables = [ + 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', + 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', + ]; + const species = this.dex.species.get(set.species); + if (unobtainables.includes(species.name)) { + if (this.ruleTable.has(`+pokemon:${species.id}`)) return; + return [`${set.name || set.species} does not exist in the National Dex.`]; + } + if (species.tier === "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.`]; + } + }, + }; \ No newline at end of file diff --git a/data/mods/m4ag9/format.ts b/data/mods/m4ag9/format.ts new file mode 100644 index 0000000000..21b9ee7431 --- /dev/null +++ b/data/mods/m4ag9/format.ts @@ -0,0 +1,27 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] M4A OU NatDex", + desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Plays like National Dex, just with more Megas.", + ], + threads: [ + `• Megas for All v7 on Smogon Forums`, + `• Spreadsheet`, + `• Wiki` + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], + mod: 'm4ag9', + banlist: ['Slowking-Galar-Mega', 'Slowking-Galar + Slowkinite', 'Uber', 'AG', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', + 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Snow Cloak', 'Sand Veil' + ], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['Mega of the Day!', 'Popular', 'Popular Megas', 'Other Megas', 'Heat!', 'NFE']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in M4A OU NatDex.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/m4akalos/format.ts b/data/mods/m4akalos/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/m4apaldea/format-vgc.ts b/data/mods/m4apaldea/format-vgc.ts new file mode 100644 index 0000000000..5f1d06670d --- /dev/null +++ b/data/mods/m4apaldea/format-vgc.ts @@ -0,0 +1,37 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] M4A Paldea VGC", + desc: ["Megas for All v7 but it's a VGC format", + ], + threads: [ + `• Megas for All v7 on Smogon Forums`, + `• Spreadsheet`, + `• Wiki` + ], + gameType: 'doubles', + ruleset: ['Team Preview', 'Species Clause', 'Nickname Clause', 'Item Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Mega Data Mod', 'Terastal Clause'], + banlist: [ + 'Mewtwo', 'Mew', + 'Lugia', 'Ho-Oh', 'Celebi', + 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', + 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', + 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', + 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', + 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', + 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', + 'Koraidon', 'Miraidon', 'Pecharunt', + ], + mod: 'm4apaldea', + onValidateSet(set) { + const problems: string[] = []; + const setHas: {[k: string]: true} = {}; + let species = this.dex.species.get(set.species); + let item = this.dex.items.get(set.item); + let tierSpecies = species; + + if (item.megaEvolves === species.name) { + if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; + } + }, + }; \ No newline at end of file diff --git a/data/mods/m4apaldea/format.ts b/data/mods/m4apaldea/format.ts new file mode 100644 index 0000000000..211c31b33d --- /dev/null +++ b/data/mods/m4apaldea/format.ts @@ -0,0 +1,73 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Megas for All: Paldea", + desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Current season is focused on the Paldea dex, pre DLC!", + ], + threads: [ + `• Megas for All v7 on Smogon Forums`, + `• Spreadsheet`, + `• Wiki` + ], + ruleset: ['Standard', 'Z-Move Clause', 'Terastal Clause', 'Mega Data Mod'], + banlist: [ + 'AG', 'Uber', + 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', + 'Baton Pass', 'Last Respects', 'Shed Tail', + 'King\'s Rock', 'Razor Fang', 'Quick Claw', + ], + onValidateSet(set) { + const problems: string[] = []; + const setHas: {[k: string]: true} = {}; + let species = this.dex.species.get(set.species); + let item = this.dex.items.get(set.item); + let tierSpecies = species; + + if (item.megaEvolves === species.name) { + if (item.megaStone && this.dex.species.get(item.megaStone).tier !== 'Mega') return [item.name + ' is not a legal Mega Stone.']; + } + }, + onHitPriority: 1, + onHit(target, source, move) { + const forte = source.m.forte; + if (move?.category !== 'Status' && forte) { + this.singleEvent('Hit', forte, {}, target, source, move); + if (forte.self) this.singleEvent('Hit', forte.self, {}, source, source, move); + this.singleEvent('AfterHit', forte, {}, target, source, move); + } + }, + onAfterSubDamage(damage, target, source, move) { + const forte = source.m.forte; + if (move?.category !== 'Status' && forte) { + this.singleEvent('AfterSubDamage', forte, null, target, source, move, damage); + } + }, + onModifySecondaries(secondaries, target, source, move) { + if (secondaries.some(s => !!s.self)) move.selfDropped = false; + }, + onAfterMoveSecondaryPriority: 1, + onAfterMoveSecondarySelf(source, target, move) { + const forte = source.m.forte; + if (move?.category !== 'Status' && forte) { + this.singleEvent('AfterMoveSecondarySelf', forte, null, source, target, move); + } + }, + onBasePowerPriority: 1, + onBasePower(basePower, source, target, move) { + const forte = source.m.forte; + if (move.category !== 'Status' && forte?.onBasePower) { + forte.onBasePower.call(this, basePower, source, target, move); + } + }, + pokemon: { + getItem() { + const move = this.battle.dex.moves.get(this.m.forte); + if (!move.exists) return Object.getPrototypeOf(this).getItem.call(this); + return { + ...this.battle.dex.items.get('mail'), + name: move.name, id: move.id, ignoreKlutz: true, onTakeItem: false, + }; + }, + }, + mod: 'm4apaldea', + }; \ No newline at end of file diff --git a/data/mods/m4asandbox/format.ts b/data/mods/m4asandbox/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/m4av6/format-vgc.ts b/data/mods/m4av6/format-vgc.ts new file mode 100644 index 0000000000..52c9c8959d --- /dev/null +++ b/data/mods/m4av6/format-vgc.ts @@ -0,0 +1,44 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 8] M4A VGC", + desc: ["Megas for All v7 but it's a VGC format", + ], + threads: [ + `• Megas for All v7 on Smogon Forums`, + `• Spreadsheet`, + `• Wiki` + ], + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', 'Dynamax Clause', 'Mega Data Mod'], + banlist: [ + 'Mewtwo', 'Mew', + 'Lugia', 'Ho-Oh', 'Celebi', + 'Kyogre', 'Groudon', 'Rayquaza', 'Jirachi', 'Deoxys', + 'Dialga', 'Palkia', 'Giratina', 'Phione', 'Manaphy', 'Darkrai', 'Shaymin', 'Arceus', + 'Victini', 'Reshiram', 'Zekrom', 'Kyurem', 'Keldeo', 'Meloetta', 'Genesect', + 'Xerneas', 'Yveltal', 'Zygarde', 'Diancie', 'Hoopa', 'Volcanion', + 'Cosmog', 'Cosmoem', 'Solgaleo', 'Lunala', 'Necrozma', 'Magearna', 'Marshadow', 'Zeraora', + 'Zacian', 'Zamazenta', 'Eternatus', 'Zarude', 'Calyrex', + ], + mod: 'm4av6', + onValidateSet(set) { + // These Pokemon are still unobtainable + const unobtainables = [ + 'Eevee-Starter', 'Floette-Eternal', 'Pichu-Spiky-eared', 'Pikachu-Belle', 'Pikachu-Cosplay', 'Pikachu-Libre', + 'Pikachu-PhD', 'Pikachu-Pop-Star', 'Pikachu-Rock-Star', 'Pikachu-Starter', 'Eternatus-Eternamax', + ]; + const species = this.dex.species.get(set.species); + if (unobtainables.includes(species.name)) { + if (this.ruleTable.has(`+pokemon:${species.id}`)) return; + return [`${set.name || set.species} does not exist in the National Dex.`]; + } + if (species.tier === "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.`]; + } + }, + }; \ No newline at end of file diff --git a/data/mods/m4av6/format.ts b/data/mods/m4av6/format.ts new file mode 100644 index 0000000000..fe2b28b1df --- /dev/null +++ b/data/mods/m4av6/format.ts @@ -0,0 +1,27 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 8] M4A OU NatDex", + desc: ["Megas for All: A Pet Mod that aims to create unique Mega Evolutions for every fully evolved Pokémon. Plays like National Dex, just with more Megas.", + ], + threads: [ + `• Megas for All v7 on Smogon Forums`, + `• Spreadsheet`, + `• Wiki` + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod'], + mod: 'm4av6', + banlist: ['Slowking-Galar-Mega', 'Slowking-Galar + Slowkinite', 'Uber', 'AG', 'Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', + 'Arena Trap', 'Power Construct', 'Shadow Tag', 'Snow Cloak', 'Sand Veil' + ], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['Mega of the Day!', 'Popular', 'Popular Megas', 'Other Megas', 'Heat!', 'NFE']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in M4A OU NatDex.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/maadowr/format.ts b/data/mods/maadowr/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/maadowrlostzone/format.ts b/data/mods/maadowrlostzone/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/masquerade/format.ts b/data/mods/masquerade/format.ts new file mode 100644 index 0000000000..0cfcadb72c --- /dev/null +++ b/data/mods/masquerade/format.ts @@ -0,0 +1,23 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Masquerade", + desc: 'Masquerade: A micrometa where every Pokemon has at least one Ogerpon-like Mask form that can Terastalize to change its ability.', + threads: [ + `• Masquerade on Smogon Forums`, + ], + mod: 'masquerade', + ruleset: ['Standard', 'Data Mod', 'Terastal Clause'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', + 'Baton Pass', 'Last Respects', 'Shed Tail', 'Cornerstone Mask'], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['MSQ']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'MSQ') { + return [set.species + ' is not legal in [Gen 9] Masquerade.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/megamania/format.ts b/data/mods/megamania/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/metamons/format.ts b/data/mods/metamons/format.ts new file mode 100644 index 0000000000..cd49927ac9 --- /dev/null +++ b/data/mods/metamons/format.ts @@ -0,0 +1,28 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] MetaMons", + desc: [ + "In this Pet Mod, we will aim to create a decently-sized micrometa that will expand in the unique niches of some Pokémon, giving them the spotlight after all the time they have been waiting.", + ], + threads: [ + '• MetaMons', + '• Spreadsheet', + ], + mod: 'metamons', + ruleset:['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Terastal Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Z-Move Clause'], + banlist: [ + 'Arena Trap', 'Moody', 'Shadow Tag', 'Baton Pass', 'Beedrillite' + ], + teambuilderFormat: "National Dex", + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'MetaMons') { + return [set.species + ' is not usable in MetaMons.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/mixandmega/format.ts b/data/mods/mixandmega/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/mixandmegaballs/format.ts b/data/mods/mixandmegaballs/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/mixandmegasforall/format.ts b/data/mods/mixandmegasforall/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/mmm2/format.ts b/data/mods/mmm2/format.ts new file mode 100644 index 0000000000..421a487cf1 --- /dev/null +++ b/data/mods/mmm2/format.ts @@ -0,0 +1,25 @@ + import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Micrometa Mafia 2", + desc: [ + "micrometa mafia 2", + ], + threads: [ + `• Micrometa Mafia 2 on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], + banlist: [], + teambuilderFormat: "National Dex", + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'MMM2') { + return [set.species + ' is not usable in Micrometa Mafia 2.']; + } + } + }, + mod: 'mmm2', + }; \ No newline at end of file diff --git a/data/mods/mmm3/format.ts b/data/mods/mmm3/format.ts new file mode 100644 index 0000000000..9c02d74e6a --- /dev/null +++ b/data/mods/mmm3/format.ts @@ -0,0 +1,25 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData ={ + name: "[Gen 9] Micrometa Mafia 3", + desc: [ + "micrometa mafia 3", + ], + threads: [ + `• Micrometa Mafia 3 on Smogon Forums`, + ], + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Dynamax Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], + banlist: ['Baton Pass', 'Assist', 'Last Respects', 'Shed Tail', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag'], + teambuilderFormat: "National Dex", + onValidateTeam(team, format) { + /**@type {{[k: string]: true}} */ + let speciesTable = {}; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'MMM3') { + return [set.species + ' is not usable in Micrometa Mafia 3.']; + } + } + }, + mod: 'mmm3', + }; \ No newline at end of file diff --git a/data/mods/moderngen1/format.ts b/data/mods/moderngen1/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/moderngen2/format.ts b/data/mods/moderngen2/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/moderngen2birds/format.ts b/data/mods/moderngen2birds/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/moderngen3/format.ts b/data/mods/moderngen3/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/moderngen4/format.ts b/data/mods/moderngen4/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/monsterhunter/formats/format-ag.ts b/data/mods/monsterhunter/formats/format-ag.ts new file mode 100644 index 0000000000..948c07bf69 --- /dev/null +++ b/data/mods/monsterhunter/formats/format-ag.ts @@ -0,0 +1,24 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter AG", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhunter', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod'], + banlist: [], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter AG.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-doubles.ts b/data/mods/monsterhunter/formats/format-doubles.ts new file mode 100644 index 0000000000..3c3ce7ba1c --- /dev/null +++ b/data/mods/monsterhunter/formats/format-doubles.ts @@ -0,0 +1,27 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter Doubles", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhunter', + gameType: 'doubles', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', + 'Evasion Clause', 'Species Clause', 'Terastal Clause'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Shagaru Magala + Strength Sap'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter Doubles.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-ffarands.ts b/data/mods/monsterhunter/formats/format-ffarands.ts new file mode 100644 index 0000000000..1508f8d38d --- /dev/null +++ b/data/mods/monsterhunter/formats/format-ffarands.ts @@ -0,0 +1,13 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter Randoms FFA (WIP)", + gameType: 'freeforall', + mod: 'monsterhunter', + team: 'random', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', + 'Species Clause', 'Terastal Clause', '!Team Preview'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-freeforall.ts b/data/mods/monsterhunter/formats/format-freeforall.ts new file mode 100644 index 0000000000..f47d339216 --- /dev/null +++ b/data/mods/monsterhunter/formats/format-freeforall.ts @@ -0,0 +1,26 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter Free-For-Alls", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhunter', + gameType: 'freeforall', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', + 'Evasion Clause', 'Species Clause'], + banlist: ['Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter FFA.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-ou.ts b/data/mods/monsterhunter/formats/format-ou.ts new file mode 100644 index 0000000000..d5c4ddf27f --- /dev/null +++ b/data/mods/monsterhunter/formats/format-ou.ts @@ -0,0 +1,26 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter OU", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhunter', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', + 'Evasion Clause', 'Species Clause', 'Terastal Clause'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap', 'Light Clay', 'King\'s Rock', 'Razor Fang'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter OU.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-randoms-dubs.ts b/data/mods/monsterhunter/formats/format-randoms-dubs.ts new file mode 100644 index 0000000000..59bfdb5faa --- /dev/null +++ b/data/mods/monsterhunter/formats/format-randoms-dubs.ts @@ -0,0 +1,13 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter Randoms Doubles (WIP)", + gameType: 'doubles', + mod: 'monsterhunter', + team: 'random', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', + 'Species Clause', 'Terastal Clause', '!Team Preview'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-randoms.ts b/data/mods/monsterhunter/formats/format-randoms.ts new file mode 100644 index 0000000000..beb6f16e9a --- /dev/null +++ b/data/mods/monsterhunter/formats/format-randoms.ts @@ -0,0 +1,12 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter Randoms", + mod: 'monsterhunter', + team: 'random', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', + 'Species Clause', 'Terastal Clause', '!Team Preview'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-ru.ts b/data/mods/monsterhunter/formats/format-ru.ts new file mode 100644 index 0000000000..b1d8fe49f7 --- /dev/null +++ b/data/mods/monsterhunter/formats/format-ru.ts @@ -0,0 +1,27 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter RU", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhunter', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', + 'Species Clause', 'Terastal Clause'], + banlist: [ 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Lagombite', 'Bariothite', "Ice-Armor", + 'Shagaru Magala + Strength Sap', 'Garugite', 'Light Clay', 'King\'s Rock', 'Razor Fang'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter RU.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-uu.ts b/data/mods/monsterhunter/formats/format-uu.ts new file mode 100644 index 0000000000..fa33633aec --- /dev/null +++ b/data/mods/monsterhunter/formats/format-uu.ts @@ -0,0 +1,27 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter UU", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhunter', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', 'Evasion Clause', + 'Species Clause', 'Terastal Clause'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', "Ice-Armor", 'Shagaru Magala + Strength Sap', + 'Garugite', 'Magnamalite', 'Mizutsunite', 'Crimson Gem', 'White Gem', 'Light Clay', 'King\'s Rock', 'Razor Fang'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHUU', 'MHRUBL', 'MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter UU.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhunter/formats/format-vgc.ts b/data/mods/monsterhunter/formats/format-vgc.ts new file mode 100644 index 0000000000..c77877f79e --- /dev/null +++ b/data/mods/monsterhunter/formats/format-vgc.ts @@ -0,0 +1,28 @@ +import { FormatData } from '../../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter VGC", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhunter', + gameType: 'doubles', + bestOfDefault: true, + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'Species Clause', 'Item Clause', 'Picked Team Size = 4', 'Adjust Level = 50', 'VGC Timer', + 'Open Team Sheets'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shagaru Magala + Strength Sap'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHAG', 'MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter VGC.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/monsterhuntersl/format-solopliii.ts b/data/mods/monsterhuntersl/format-solopliii.ts new file mode 100644 index 0000000000..039145a1b0 --- /dev/null +++ b/data/mods/monsterhuntersl/format-solopliii.ts @@ -0,0 +1,26 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Monster Hunter OU - SoloPL III", + teambuilderFormat: 'National Dex', + threads: [], + mod: 'monsterhuntersl', + ruleset: ['Standard NatDex', 'Data Mod', 'Mega Data Mod', 'Status Mod', 'OHKO Clause', + 'Evasion Clause', 'Species Clause', 'Terastal Clause'], + banlist: ['Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', + 'Groundium Z', 'Icium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', 'Shagaru Magala + Strength Sap', 'King\'s Rock', 'Razor Fang'], + onBegin() { + this.add(`raw|
Welcome to Monster Hunter Showdown! Coded by KnivesMK
Want to learn more and discuss the format?
Then check out the MHS Discord!
Need help with all of the new moves, abilities, and gameplay changes?
Then make sure to check out the MHS Wikia or use /dt!
`); + }, + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['MHOU', 'MHUUBL', 'MHUU', 'MHRUBL', 'MHRU']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Monster Hunter OU.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/morebalancedhackmons/format.ts b/data/mods/morebalancedhackmons/format.ts new file mode 100644 index 0000000000..40280aeb3d --- /dev/null +++ b/data/mods/morebalancedhackmons/format.ts @@ -0,0 +1,36 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] More Balanced Hackmons v4", + desc: `Balanced Hackmons with National Dex elements mixed in.`, + threads: [ + `• More Balanced Hackmons v4`, + ], + mod: 'morebalancedhackmons', + // debug: true, + ruleset: ['-Nonexistent', 'Standard NatDex', 'Forme Clause', 'Sleep Moves Clause', 'Ability Clause = 2', 'OHKO Clause', 'Evasion Moves Clause', 'Dynamax Clause', 'CFZ Clause', 'Terastal Clause', '!Obtainable'], + banlist: [ + 'Eternatus-Eternamax', 'Groudon-Primal', 'Rayquaza-Mega', 'Shedinja', 'Arena Trap', + 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Magnet Pull', 'Moody', 'Parental Bond', + 'Stakeout', 'Wonder Guard', 'Gengarite', 'Belly Drum', 'Chatter', 'Double Iron Bash', 'Electrify', + 'Last Respects', 'Octolock', 'Revival Blessing', 'Shed Tail', 'Shell Smash', 'Comatose + Sleep Talk', 'Imprison + Transform', + ], + restricted: ['Arceus'], + onValidateTeam(team, format) { + // baseSpecies:count + const restrictedPokemonCount = new Map(); + for (const set of team) { + const species = this.dex.species.get(set.species); + if (!this.ruleTable.isRestrictedSpecies(species)) continue; + restrictedPokemonCount.set(species.baseSpecies, (restrictedPokemonCount.get(species.baseSpecies) || 0) + 1); + } + for (const [baseSpecies, count] of restrictedPokemonCount) { + if (count > 1) { + return [ + `You are limited to one ${baseSpecies} forme.`, + `(You have ${count} ${baseSpecies} forme${count === 1 ? '' : 's'}.)`, + ]; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/naturalselection/format.ts b/data/mods/naturalselection/format.ts new file mode 100644 index 0000000000..3759e65735 --- /dev/null +++ b/data/mods/naturalselection/format.ts @@ -0,0 +1,22 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Natural Selection", + desc: 'Natural Selection: A micrometa where Pokemon actively evolve, fill new niches, and go extinct based on usage stats.', + threads: [ + `• Natural Selection on Smogon Forums`, + ], + mod: 'naturalselection', + ruleset: ['Standard', 'Data Mod', 'Terastal Clause'], + banlist: ['Uber', 'AG', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'King\'s Rock', 'Baton Pass', 'Last Respects', 'Shed Tail'], + onValidateTeam(team, format) { + let speciesTable = {}; + let allowedTiers = ['NS']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (template.tier !== 'NS') { + return [set.species + ' is not legal in [Gen 9] Natural Selection.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/notmytype/format.ts b/data/mods/notmytype/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/outheorymons/format.ts b/data/mods/outheorymons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/paleomons/format.ts b/data/mods/paleomons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/patratdex/format.ts b/data/mods/patratdex/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/placeholder/format.ts b/data/mods/placeholder/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/plza/format.ts b/data/mods/plza/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/pokebilities/format.ts b/data/mods/pokebilities/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/pokebilitiesbanhammers/format.ts b/data/mods/pokebilitiesbanhammers/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/pokemonorthsoutheastwest/format.ts b/data/mods/pokemonorthsoutheastwest/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/pokemorty/format.ts b/data/mods/pokemorty/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/poketypos/format.ts b/data/mods/poketypos/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/ponymonshowdown/format.ts b/data/mods/ponymonshowdown/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/publicdomain/format.ts b/data/mods/publicdomain/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/randomtandem/format.ts b/data/mods/randomtandem/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/regeneration/format.ts b/data/mods/regeneration/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/regionalevolutions/format.ts b/data/mods/regionalevolutions/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/restrictions/format.ts b/data/mods/restrictions/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/returntoorretercera/format.ts b/data/mods/returntoorretercera/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/rockbottom/format.ts b/data/mods/rockbottom/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/roulettemons/format.ts b/data/mods/roulettemons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/roulettemons2/format.ts b/data/mods/roulettemons2/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/scootopia/format.ts b/data/mods/scootopia/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/scootopiav4/format.ts b/data/mods/scootopiav4/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/secretsanta/format.ts b/data/mods/secretsanta/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/setinstone/format.ts b/data/mods/setinstone/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/sharedpower/format.ts b/data/mods/sharedpower/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/sharedpowerironfist/format.ts b/data/mods/sharedpowerironfist/format.ts new file mode 100644 index 0000000000..14771898dd --- /dev/null +++ b/data/mods/sharedpowerironfist/format.ts @@ -0,0 +1,29 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Iron Fist", + threads: [ + `Iron Fist`, + ], + mod: 'sharedpowerironfist', + teambuilderFormat: "National Dex", + ruleset: ['Standard NatDex', 'OHKO Clause', 'Evasion Moves Clause', 'Sleep Clause Mod', 'Data Mod', 'Mega Data Mod', 'Species Clause', 'Mega Rayquaza Clause', 'Big Button Rule', 'MILF Rule', 'Ohmyrod Rule', 'Serious Rule', 'Mario Kart Wii Clause', 'I Love Hisui Rule', 'Circall Rule'], + banlist: ['Baton Pass', 'King\'s Rock', 'Razor Fang', 'Moody', + 'Buginium Z', 'Darkinium Z', 'Dragonium Z', 'Electrium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Normalium Z', 'Poisonium Z', 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Waterium Z', + 'Absolite', 'Houndoominite', 'Blue Orb', 'Fish', 'Diamond Hand', 'Hoenn', 'Bird', 'Trans'], + unbanlist: ['Light of Ruin', 'Baddy Bad'], + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['Viable', 'Unviable', 'Untested']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in Iron Fist.']; + } + if (set.species === 'Mario Kart Wii' && set.ability !== 'Gorilla Tactics') { + return [set.species + ' must use Gorilla Tactics.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/shinymons/format.ts b/data/mods/shinymons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/signaturemons/format.ts b/data/mods/signaturemons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/signaturerestrictions/format.ts b/data/mods/signaturerestrictions/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/sixbysix/format.ts b/data/mods/sixbysix/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/smashmodsbrawl/format.ts b/data/mods/smashmodsbrawl/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/smashmodsmelee/format.ts b/data/mods/smashmodsmelee/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/smashstereotypes/format.ts b/data/mods/smashstereotypes/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/solopet/format.ts b/data/mods/solopet/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/spookymod/format.ts b/data/mods/spookymod/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/stadium/format.ts b/data/mods/stadium/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/stadiumyb/format.ts b/data/mods/stadiumyb/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/stereotypes/format.ts b/data/mods/stereotypes/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/supersmashoms/format.ts b/data/mods/supersmashoms/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/supertypesou/format.ts b/data/mods/supertypesou/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/sylvemonstest/format.ts b/data/mods/sylvemonstest/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/tamagotchi/format.ts b/data/mods/tamagotchi/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/teraforming/format.ts b/data/mods/teraforming/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/teramax/format.ts b/data/mods/teramax/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/the331typechartg9/format.ts b/data/mods/the331typechartg9/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/thebore/format.ts b/data/mods/thebore/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/tiersovereign/format.ts b/data/mods/tiersovereign/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/toho/format.ts b/data/mods/toho/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/tpdp/format.ts b/data/mods/tpdp/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/tradingpost/format.ts b/data/mods/tradingpost/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/trainersupport/format.ts b/data/mods/trainersupport/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/triplethreat/format.ts b/data/mods/triplethreat/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/twostepmonsv3/format.ts b/data/mods/twostepmonsv3/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/upsidedown/format.ts b/data/mods/upsidedown/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/weatherwar/format.ts b/data/mods/weatherwar/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/weedmons/format.ts b/data/mods/weedmons/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/whitetusk/format.ts b/data/mods/whitetusk/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/data/mods/woomod/format.ts b/data/mods/woomod/format.ts new file mode 100644 index 0000000000..ed74f5f2a2 --- /dev/null +++ b/data/mods/woomod/format.ts @@ -0,0 +1,24 @@ +import { FormatData } from '../../../sim/dex-formats'; + +export const format: FormatData = { + name: "[Gen 9] Woomod", + desc: `woo`, + threads: [ + `• Spreadsheet for the mod`, + ], + mod: 'woomod', + ruleset: ['Standard NatDex', 'Terastal Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Species Clause', 'Sleep Clause Mod', 'Data Mod', 'Z-Move Clause'], + banlist: ['Eviolite', 'Light Ball','Baton Pass','Ditto'], + teambuilderFormat: 'National Dex', + onValidateTeam(team, format) { + /**@type {{[k: string]: true}}*/ + let speciesTable = {}; + let allowedTiers = ['woomod']; + for (const set of team) { + let template = this.dex.species.get(set.species); + if (!allowedTiers.includes(template.tier)) { + return [set.species + ' is not legal in woomod.']; + } + } + }, + }; \ No newline at end of file diff --git a/data/mods/worldbuilding/format.ts b/data/mods/worldbuilding/format.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sim/dex-formats.ts b/sim/dex-formats.ts index e0bdcb44e6..9b5222567a 100644 --- a/sim/dex-formats.ts +++ b/sim/dex-formats.ts @@ -361,7 +361,7 @@ export class Format extends BasicEffect implements Readonly { /** List of rule names. */ readonly ruleset: string[]; /** - * Base list of rule names as specified in "./config/formats.ts". + * Base list of rule names as specified in "./config/petmods-formats.ts". * Used in a custom format to correctly display the altered ruleset. */ readonly baseRuleset: string[]; @@ -452,7 +452,7 @@ export class Format extends BasicEffect implements Readonly { } } -/** merges format lists from config/formats and config/custom-formats */ +/** merges format lists from config/petmod-formats and config/official-formats */ function mergeFormatLists(main: FormatList, custom: FormatList | undefined): FormatList { // interface for the builder. interface FormatSection { @@ -526,22 +526,22 @@ export class DexFormats { const formatsList = []; // Load formats - let customFormats; + let officialFormats; try { - customFormats = require(`${__dirname}/../config/custom-formats`).Formats; - if (!Array.isArray(customFormats)) { - throw new TypeError(`Exported property 'Formats' from "./config/custom-formats.ts" must be an array`); + officialFormats = require(`${__dirname}/../config/official-formats`).Formats; + if (!Array.isArray(officialFormats)) { + throw new TypeError(`Exported property 'Formats' from "./config/official-formats.ts" must be an array`); } } catch (e: any) { if (e.code !== 'MODULE_NOT_FOUND' && e.code !== 'ENOENT') { throw e; } } - let Formats: AnyObject[] = require(`${__dirname}/../config/formats`).Formats; + let Formats: AnyObject[] = require(`${__dirname}/../config/petmods-formats`).Formats; if (!Array.isArray(Formats)) { - throw new TypeError(`Exported property 'Formats' from "./config/formats.ts" must be an array`); + throw new TypeError(`Exported property 'Formats' from "./config/petmods-formats.ts" must be an array`); } - if (customFormats) Formats = mergeFormatLists(Formats as any, customFormats); + if (officialFormats) Formats = mergeFormatLists(Formats as any, officialFormats); let section = ''; let column = 1;