diff --git a/config/formats.ts b/config/formats.ts index 3d6dc81ada..5bf614a994 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -5280,7 +5280,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 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 = 1', 'Open Team Sheets', + 'Nickname Clause', 'Beat Up Nicknames Mod', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Exact HP Mod', 'Item Clause = 1', 'Open Team Sheets', ], banlist: ['Restricted Legendary', 'Mythical', 'Soul Dew'], bestOfDefault: true, @@ -5301,7 +5301,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ gameType: 'singles', 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 = 3', 'Exact HP Mod', "Item Clause = 1", 'Open Team Sheets', + 'Nickname Clause', 'Beat Up Nicknames Mod', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 3', 'Exact HP Mod', "Item Clause = 1", 'Open Team Sheets', ], banlist: ['Soul Dew', 'Restricted Legendary', 'Mythical', 'Wobbuffet + Leftovers', 'Wynaut + Leftovers'], restricted: [], @@ -5386,7 +5386,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, ruleset: [ 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155', - 'Obtainable', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Species Clause', 'Item Clause = 1', 'Endless Battle Clause', 'Cancel Mod', 'Event Moves Clause', 'Nickname Clause', 'Team Preview', + 'Obtainable', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Species Clause', 'Item Clause = 1', + 'Endless Battle Clause', 'Cancel Mod', 'Event Moves Clause', 'Nickname Clause', 'Beat Up Nicknames Mod', + 'Team Preview', ], banlist: ['Uber'], }, diff --git a/data/mods/gen2stadium2/rulesets.ts b/data/mods/gen2stadium2/rulesets.ts index 0a6f65af5d..7da1a4ed93 100644 --- a/data/mods/gen2stadium2/rulesets.ts +++ b/data/mods/gen2stadium2/rulesets.ts @@ -2,7 +2,7 @@ export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable standardag: { inherit: true, ruleset: [ - 'Obtainable', 'Team Preview', 'Exact HP Mod', 'Cancel Mod', + 'Obtainable', 'Team Preview', 'Exact HP Mod', 'Cancel Mod', 'Beat Up Nicknames Mod', ], }, standard: { diff --git a/data/mods/gen3/moves.ts b/data/mods/gen3/moves.ts index 191b050808..11dccce120 100644 --- a/data/mods/gen3/moves.ts +++ b/data/mods/gen3/moves.ts @@ -44,8 +44,10 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { duration: 1, onModifySpAPriority: -101, onModifySpA(atk, pokemon, defender, move) { - // https://www.smogon.com/forums/posts/8992145/ - // this.add('-activate', pokemon, 'move: Beat Up', '[of] ' + move.allies![0].name); + if (!this.ruleTable.has('beatupnicknamesmod')) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + this.add('-activate', pokemon, 'move: Beat Up', '[of] ' + move.allies![0]!.name); + } this.event.modifier = 1; return this.dex.species.get(move.allies!.shift()!.set.species).baseStats.atk; }, diff --git a/data/mods/gen3/rulesets.ts b/data/mods/gen3/rulesets.ts index 66f9ff2408..637f7d2197 100644 --- a/data/mods/gen3/rulesets.ts +++ b/data/mods/gen3/rulesets.ts @@ -13,7 +13,7 @@ export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable name: 'Standard Draft', desc: "The custom Draft League ruleset", ruleset: [ - 'Obtainable', 'Nickname Clause', '+Unreleased', 'Sleep Clause Mod', 'OHKO Clause', 'Evasion Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', + 'Obtainable', 'Nickname Clause', 'Beat Up Nicknames Mod', '+Unreleased', 'Sleep Clause Mod', 'OHKO Clause', 'Evasion Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', 'One Boost Passer Clause', 'Freeze Clause Mod', 'Accuracy Moves Clause', 'Baton Pass Trap Clause', ], banlist: [ diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index 848090153c..44903ec997 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -92,8 +92,10 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { duration: 1, onModifyAtkPriority: -101, onModifyAtk(atk, pokemon, defender, move) { - // https://www.smogon.com/forums/posts/8992145/ - // this.add('-activate', pokemon, 'move: Beat Up', '[of] ' + move.allies![0].name); + if (!this.ruleTable.has('beatupnicknamesmod')) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + this.add('-activate', pokemon, 'move: Beat Up', '[of] ' + move.allies![0]!.name); + } this.event.modifier = 1; return this.dex.species.get(move.allies!.shift()!.set.species).baseStats.atk; }, diff --git a/data/mods/gen4/rulesets.ts b/data/mods/gen4/rulesets.ts index 941bd745da..1a75078179 100644 --- a/data/mods/gen4/rulesets.ts +++ b/data/mods/gen4/rulesets.ts @@ -2,7 +2,7 @@ export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable standardag: { inherit: true, ruleset: [ - 'Obtainable', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', + 'Obtainable', 'HP Percentage Mod', 'Cancel Mod', 'Beat Up Nicknames Mod', 'Endless Battle Clause', ], }, standard: { @@ -14,7 +14,7 @@ export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable }, flatrules: { inherit: true, - ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'Item Clause = 1', 'Adjust Level Down = 50', 'Picked Team Size = Auto', 'Cancel Mod'], + ruleset: ['Obtainable', 'Species Clause', 'Nickname Clause', 'Beat Up Nicknames Mod', 'Item Clause = 1', 'Adjust Level Down = 50', 'Picked Team Size = Auto', 'Cancel Mod'], }, teampreview: { inherit: true, diff --git a/data/rulesets.ts b/data/rulesets.ts index 854b188ad4..fbe552ff14 100644 --- a/data/rulesets.ts +++ b/data/rulesets.ts @@ -38,7 +38,7 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { effectType: 'ValidatorRule', name: 'Flat Rules', desc: "The in-game Flat Rules: Adjust Level Down 50, Species Clause, Item Clause = 1, -Mythical, -Restricted Legendary, Bring 6 Pick 3-6 depending on game type.", - ruleset: ['Obtainable', 'Team Preview', 'Species Clause', 'Nickname Clause', 'Item Clause = 1', 'Adjust Level Down = 50', 'Picked Team Size = Auto', 'Cancel Mod'], + ruleset: ['Obtainable', 'Team Preview', 'Species Clause', 'Nickname Clause', 'Beat Up Nicknames Mod', 'Item Clause = 1', 'Adjust Level Down = 50', 'Picked Team Size = Auto', 'Cancel Mod'], banlist: ['Mythical', 'Restricted Legendary', 'Greninja-Bond'], }, limittworestricted: { @@ -159,7 +159,7 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { name: 'Standard Draft', desc: "The custom Draft League ruleset", ruleset: [ - 'Obtainable', 'Nickname Clause', '+Unreleased', '+CAP', 'Sketch Post-Gen 7 Moves', 'Team Preview', 'Sleep Clause Mod', 'OHKO Clause', 'Evasion Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', + 'Obtainable', 'Nickname Clause', 'Beat Up Nicknames Mod', '+Unreleased', '+CAP', 'Sketch Post-Gen 7 Moves', 'Team Preview', 'Sleep Clause Mod', 'OHKO Clause', 'Evasion Clause', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod', ], // timer: {starting: 60 * 60, grace: 0, addPerTurn: 10, maxPerTurn: 100, timeoutAutoChoose: true}, }, @@ -823,6 +823,18 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { // hardcoded in team-validator.js, so we are done. }, }, + beatupnicknamesmod: { + effectType: 'Rule', + name: 'Beat Up Nicknames Mod', + desc: "Prevents Beat Up from revealing any party members, enforcing gameplay that assumes optimal Pokémon nicknaming strategies.", + onBegin() { + if (this.gen <= 4) { + this.add('rule', `Beat Up Nicknames Mod: Beat Up will not reveal any party members`); + } + }, + // https://www.smogon.com/forums/posts/8992145/ + // hardcoded in data/mods/gen3/moves.ts, data/mods/gen4/moves.ts + }, itemclause: { effectType: 'ValidatorRule', name: 'Item Clause',