From df76b96cb7f4f5d6bb683edce7cedfe37415e910 Mon Sep 17 00:00:00 2001 From: Dean Date: Wed, 19 Feb 2025 12:16:52 -0800 Subject: [PATCH] Add neutralizing gas arena tag --- src/data/arena-tag.ts | 33 +++++++++++++++++++++++++++++++++ src/enums/arena-tag-type.ts | 1 + 2 files changed, 34 insertions(+) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 2fa4593fd6c..fb56156f8cd 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1221,6 +1221,37 @@ export class FairyLockTag extends ArenaTag { } +export class SuppressAbilitiesTag extends ArenaTag { + sourceCount: number; + + constructor(sourceId: number) { + super(ArenaTagType.NEUTRALIZING_GAS, 0, undefined, sourceId); + this.sourceCount = 0; + } + + onAdd(arena: Arena): void { + const pokemon = this.getSourcePokemon(); + if (pokemon) { + globalScene.queueMessage(i18next.t("abilityTriggers:postSummonNeutralizingGas", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + } + } + + onOverlap(arena: Arena): void { + this.sourceCount++; + } + + onSourceLeave(arena: Arena): void { + this.sourceCount--; + if (this.sourceCount <= 0) { + arena.removeTag(ArenaTagType.NEUTRALIZING_GAS); + } + } + + shouldApplyToSelf(): boolean { + return this.sourceCount > 1; + } +} + // TODO: swap `sourceMove` and `sourceId` and make `sourceMove` an optional parameter export function getArenaTag(tagType: ArenaTagType, turnCount: number, sourceMove: Moves | undefined, sourceId: number, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag | null { switch (tagType) { @@ -1281,6 +1312,8 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: number, sourceMove return new GrassWaterPledgeTag(sourceId, side); case ArenaTagType.FAIRY_LOCK: return new FairyLockTag(turnCount, sourceId); + case ArenaTagType.NEUTRALIZING_GAS: + return new SuppressAbilitiesTag(sourceId); default: return null; } diff --git a/src/enums/arena-tag-type.ts b/src/enums/arena-tag-type.ts index 1c62ccb14a6..4180aa00ef5 100644 --- a/src/enums/arena-tag-type.ts +++ b/src/enums/arena-tag-type.ts @@ -29,4 +29,5 @@ export enum ArenaTagType { WATER_FIRE_PLEDGE = "WATER_FIRE_PLEDGE", GRASS_WATER_PLEDGE = "GRASS_WATER_PLEDGE", FAIRY_LOCK = "FAIRY_LOCK", + NEUTRALIZING_GAS = "NEUTRALIZING_GAS" }