From 737a8095ac27ad1d377b9fa4788d4762a94869c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 8 Feb 2026 17:24:39 +0000 Subject: [PATCH] Add Full Arceus Clause (#11725) * Enable Arceus EV Limit Mod * English * Add comment with implementation location * Add Full Arceus Clause * Add event for clause * Move comment * Lint * Simplify assignments * Revert Melmetal changes * Revert "Revert Melmetal changes" This reverts commit 8c4a04e67c048037262ad0c847ebaff88cd1d110. * Reapply "Revert Melmetal changes" This reverts commit 75539720111b37abaf657512441a04c3e6e7cbe3. * Add explanation comment * Remove test * Comment --- data/rulesets.ts | 6 ++++++ sim/team-validator.ts | 8 +++++++- test/sim/team-validator/events.js | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/data/rulesets.ts b/data/rulesets.ts index 8472973ebd..d3a7cfb690 100644 --- a/data/rulesets.ts +++ b/data/rulesets.ts @@ -1606,6 +1606,12 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { this.add('rule', 'Terastal Clause: You cannot Terastallize'); }, }, + fullarceusclause: { + effectType: 'ValidatorRule', + name: 'Full Arceus Clause', + desc: "Allows Level 80 Arceus from Hall of Origin", + // Implemented in sim/team-validator.ts + }, inversemod: { effectType: 'Rule', name: 'Inverse Mod', diff --git a/sim/team-validator.ts b/sim/team-validator.ts index 91eea6d65c..58d68c1c95 100644 --- a/sim/team-validator.ts +++ b/sim/team-validator.ts @@ -650,6 +650,7 @@ export class TeamValidator { } } if (species.id === 'melmetal' && set.gigantamax && this.dex.species.getLearnsetData(species.id).eventData) { + // Gigantamax Melmetal cannot be obtained through the Max Soup setSources.sourcesBefore = 0; setSources.sources = ['8S0 melmetal']; } @@ -955,7 +956,12 @@ export class TeamValidator { } } } else if (ruleTable.has('obtainablemisc') && (eventOnlyData = this.getEventOnlyData(outOfBattleSpecies))) { - const { species: eventSpecies, eventData } = eventOnlyData; + const eventSpecies = eventOnlyData.species; + let eventData = eventOnlyData.eventData; + if (ruleTable.has('fullarceusclause') && eventSpecies.baseSpecies === 'Arceus') { + // Hall of Origin Arceus + eventData = [...eventData, { generation: 4, level: 80, moves: ['refresh', 'futuresight', 'recover', 'hyperbeam'] }]; + } let legal = false; for (const event of eventData) { if (this.validateEvent(set, setSources, event, eventSpecies)) continue; diff --git a/test/sim/team-validator/events.js b/test/sim/team-validator/events.js index 3132ca4a67..2100fddf14 100644 --- a/test/sim/team-validator/events.js +++ b/test/sim/team-validator/events.js @@ -181,4 +181,18 @@ describe('Team Validator', () => { ]; assert.legalTeam(team, 'gen4anythinggoes'); }); + + it(`should allow Hall of Origin Arceus with Full Arceus Clause`, () => { + let team = [ + { species: 'arceus', level: 80, ability: 'multitype', moves: ['judgment'], evs: { hp: 1 } }, + ]; + assert.false.legalTeam(team, 'gen4anythinggoes'); + assert.false.legalTeam(team, 'gen4anythinggoes@@@fullarceusclause'); + + team = [ + { species: 'arceus', level: 100, ability: 'multitype', moves: ['judgment'], evs: { hp: 1 } }, + ]; + assert.false.legalTeam(team, 'gen4anythinggoes'); + assert.legalTeam(team, 'gen4anythinggoes@@@fullarceusclause'); + }); });