From 2884c8b9126f16a5db8bc27af575d413b327155c Mon Sep 17 00:00:00 2001 From: innerthunder Date: Wed, 14 Aug 2024 22:15:10 -0700 Subject: [PATCH 1/4] Ability-ignoring effects no longer ignore the source's Abilities --- src/field/arena.ts | 8 +++++++- src/field/pokemon.ts | 3 ++- src/phases.ts | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/field/arena.ts b/src/field/arena.ts index 923a0a4e286..b43a52a9f55 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -30,6 +30,7 @@ export class Arena { public tags: ArenaTag[]; public bgm: string; public ignoreAbilities: boolean; + public ignoreAbilitySource: BattlerIndex | null; private lastTimeOfDay: TimeOfDay; @@ -536,8 +537,13 @@ export class Arena { } } - setIgnoreAbilities(ignoreAbilities: boolean = true): void { + setIgnoreAbilities(ignoreAbilities: boolean, ignoreAbilitySource: BattlerIndex | null = null): void { this.ignoreAbilities = ignoreAbilities; + if (ignoreAbilities) { + this.ignoreAbilitySource = ignoreAbilitySource; + } else { + this.ignoreAbilitySource = null; + } } applyTagsForSide(tagType: ArenaTagType | Constructor, side: ArenaTagSide, ...args: unknown[]): void { diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 930ffeb700f..18224272fe0 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1110,7 +1110,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isFusion() && ability.hasAttr(NoFusionAbilityAbAttr)) { return false; } - if (this.scene?.arena.ignoreAbilities && ability.isIgnorable) { + const arena = this.scene?.arena; + if (arena.ignoreAbilities && arena.ignoreAbilitySource !== this.getBattlerIndex() && ability.isIgnorable) { return false; } if (this.summonData?.abilitySuppressed && !ability.hasAttr(UnsuppressableAbilityAbAttr)) { diff --git a/src/phases.ts b/src/phases.ts index 2acb054c2ca..ea619524ce9 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -2720,7 +2720,7 @@ export class MovePhase extends BattlePhase { if (!this.followUp) { if (this.move.getMove().checkFlag(MoveFlags.IGNORE_ABILITIES, this.pokemon, null)) { - this.scene.arena.setIgnoreAbilities(); + this.scene.arena.setIgnoreAbilities(true, this.pokemon.getBattlerIndex()); } } else { this.pokemon.turnData.hitsLeft = 0; // TODO: is `0` correct? From 6503aa93033f441be3d86bb129eff9c4f9668fd9 Mon Sep 17 00:00:00 2001 From: innerthunder <168692175+innerthunder@users.noreply.github.com> Date: Wed, 14 Aug 2024 23:10:02 -0700 Subject: [PATCH 2/4] Update src/field/arena.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/field/arena.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/field/arena.ts b/src/field/arena.ts index b43a52a9f55..ebf2405bbf6 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -539,11 +539,7 @@ export class Arena { setIgnoreAbilities(ignoreAbilities: boolean, ignoreAbilitySource: BattlerIndex | null = null): void { this.ignoreAbilities = ignoreAbilities; - if (ignoreAbilities) { - this.ignoreAbilitySource = ignoreAbilitySource; - } else { - this.ignoreAbilitySource = null; - } + this.ignoreAbilitySource = ignoreAbilities ? ignoreAbilitySource : null; } applyTagsForSide(tagType: ArenaTagType | Constructor, side: ArenaTagSide, ...args: unknown[]): void { From 57d167d5c30af9ddf439ce2261ebd7e350de4088 Mon Sep 17 00:00:00 2001 From: innerthunder Date: Wed, 11 Sep 2024 18:15:50 -0700 Subject: [PATCH 3/4] RIP `phases.ts` --- src/phases/move-phase.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts index 6089e7d3202..33fbf655355 100644 --- a/src/phases/move-phase.ts +++ b/src/phases/move-phase.ts @@ -74,7 +74,7 @@ export class MovePhase extends BattlePhase { if (!this.followUp) { if (this.move.getMove().checkFlag(MoveFlags.IGNORE_ABILITIES, this.pokemon, null)) { - this.scene.arena.setIgnoreAbilities(); + this.scene.arena.setIgnoreAbilities(true, this.pokemon.getBattlerIndex()); } } else { this.pokemon.turnData.hitsLeft = 0; // TODO: is `0` correct? From 25e582ce25ef36d8e6d647a3b44e810bc6434707 Mon Sep 17 00:00:00 2001 From: innerthunder Date: Wed, 11 Sep 2024 18:23:56 -0700 Subject: [PATCH 4/4] `ignoreAbilitySource` --> `ignoringEffectSource` --- src/field/arena.ts | 6 +++--- src/field/pokemon.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/field/arena.ts b/src/field/arena.ts index 94e5cc0c5b6..76479f3216a 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -33,7 +33,7 @@ export class Arena { public tags: ArenaTag[]; public bgm: string; public ignoreAbilities: boolean; - public ignoreAbilitySource: BattlerIndex | null; + public ignoringEffectSource: BattlerIndex | null; private lastTimeOfDay: TimeOfDay; @@ -570,9 +570,9 @@ export class Arena { } } - setIgnoreAbilities(ignoreAbilities: boolean, ignoreAbilitySource: BattlerIndex | null = null): void { + setIgnoreAbilities(ignoreAbilities: boolean, ignoringEffectSource: BattlerIndex | null = null): void { this.ignoreAbilities = ignoreAbilities; - this.ignoreAbilitySource = ignoreAbilities ? ignoreAbilitySource : null; + this.ignoringEffectSource = ignoreAbilities ? ignoringEffectSource : null; } /** diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 0dd3d7cbe7e..757d5c37b62 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1222,7 +1222,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } const arena = this.scene?.arena; - if (arena.ignoreAbilities && arena.ignoreAbilitySource !== this.getBattlerIndex() && ability.isIgnorable) { + if (arena.ignoreAbilities && arena.ignoringEffectSource !== this.getBattlerIndex() && ability.isIgnorable) { return false; } if (this.summonData?.abilitySuppressed && !ability.hasAttr(UnsuppressableAbilityAbAttr)) {