diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index a7db6ddcdf3..6a05bea4c6d 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -186,6 +186,7 @@ import { applyAllyStatMultiplierAbAttrs, AllyStatMultiplierAbAttr, MoveAbilityBypassAbAttr, + PreSummonAbAttr, } from "#app/data/abilities/ability"; import { allAbilities } from "#app/data/data-lists"; import type PokemonData from "#app/system/pokemon-data"; @@ -2414,8 +2415,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const suppressAbilitiesTag = arena.getTag( ArenaTagType.NEUTRALIZING_GAS, ) as SuppressAbilitiesTag; + const suppressOffField = ability.hasAttr(PreSummonAbAttr); if ( - this.isOnField() && + (this.isOnField() || suppressOffField) && suppressAbilitiesTag && !suppressAbilitiesTag.isBeingRemoved() ) { diff --git a/test/abilities/illusion.test.ts b/test/abilities/illusion.test.ts index 998d29f169c..8aae433b6c0 100644 --- a/test/abilities/illusion.test.ts +++ b/test/abilities/illusion.test.ts @@ -65,7 +65,7 @@ describe("Abilities - Illusion", () => { expect(!!zorua.summonData.illusion).equals(false); }); - it("break with neutralizing gas", async () => { + it("breaks with neutralizing gas", async () => { game.override.enemyAbility(Abilities.NEUTRALIZING_GAS); await game.classicMode.startBattle([Species.KOFFING]); @@ -74,6 +74,20 @@ describe("Abilities - Illusion", () => { expect(!!zorua.summonData.illusion).equals(false); }); + it("does not activate if neutralizing gas is active", async () => { + game.override + .enemyAbility(Abilities.NEUTRALIZING_GAS) + .ability(Abilities.ILLUSION) + .moveset(Moves.SPLASH) + .enemyMoveset(Moves.SPLASH); + await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS, Species.MAGIKARP]); + + game.doSwitchPokemon(1); + await game.toNextTurn(); + + expect(game.scene.getPlayerPokemon()!.summonData.illusion).toBeFalsy(); + }); + it("causes enemy AI to consider the illusion's type instead of the actual type when considering move effectiveness", async () => { game.override.enemyMoveset([Moves.FLAMETHROWER, Moves.PSYCHIC, Moves.TACKLE]); await game.classicMode.startBattle([Species.ZOROARK, Species.FEEBAS]);