[P2] Fix oversight where hazards cannnot affect Pokemon that set it (#4693)
Fixes #935
This commit is contained in:
parent
966b07f62b
commit
f7797603a1
|
@ -626,7 +626,7 @@ export class ArenaTrapTag extends ArenaTag {
|
||||||
* @returns `true` if this hazard affects the given Pokemon; `false` otherwise.
|
* @returns `true` if this hazard affects the given Pokemon; `false` otherwise.
|
||||||
*/
|
*/
|
||||||
override apply(arena: Arena, simulated: boolean, pokemon: Pokemon): boolean {
|
override apply(arena: Arena, simulated: boolean, pokemon: Pokemon): boolean {
|
||||||
if (this.sourceId === pokemon.id || (this.side === ArenaTagSide.PLAYER) !== pokemon.isPlayer()) {
|
if ((this.side === ArenaTagSide.PLAYER) !== pokemon.isPlayer()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,6 @@ import GameManager from "#test/utils/gameManager";
|
||||||
import Phaser from "phaser";
|
import Phaser from "phaser";
|
||||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||||
|
|
||||||
const TIMEOUT = 20 * 1000;
|
|
||||||
|
|
||||||
describe("Moves - Toxic Spikes", () => {
|
describe("Moves - Toxic Spikes", () => {
|
||||||
let phaserGame: Phaser.Game;
|
let phaserGame: Phaser.Game;
|
||||||
let game: GameManager;
|
let game: GameManager;
|
||||||
|
@ -34,7 +32,7 @@ describe("Moves - Toxic Spikes", () => {
|
||||||
.enemyAbility(Abilities.BALL_FETCH)
|
.enemyAbility(Abilities.BALL_FETCH)
|
||||||
.ability(Abilities.BALL_FETCH)
|
.ability(Abilities.BALL_FETCH)
|
||||||
.enemyMoveset(Moves.SPLASH)
|
.enemyMoveset(Moves.SPLASH)
|
||||||
.moveset([ Moves.TOXIC_SPIKES, Moves.SPLASH, Moves.ROAR ]);
|
.moveset([ Moves.TOXIC_SPIKES, Moves.SPLASH, Moves.ROAR, Moves.COURT_CHANGE ]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should not affect the opponent if they do not switch", async () => {
|
it("should not affect the opponent if they do not switch", async () => {
|
||||||
|
@ -51,7 +49,7 @@ describe("Moves - Toxic Spikes", () => {
|
||||||
|
|
||||||
expect(enemy.hp).toBe(enemy.getMaxHp());
|
expect(enemy.hp).toBe(enemy.getMaxHp());
|
||||||
expect(enemy.status?.effect).toBeUndefined();
|
expect(enemy.status?.effect).toBeUndefined();
|
||||||
}, TIMEOUT);
|
});
|
||||||
|
|
||||||
it("should poison the opponent if they switch into 1 layer", async () => {
|
it("should poison the opponent if they switch into 1 layer", async () => {
|
||||||
await game.classicMode.runToSummon([ Species.MIGHTYENA ]);
|
await game.classicMode.runToSummon([ Species.MIGHTYENA ]);
|
||||||
|
@ -65,7 +63,7 @@ describe("Moves - Toxic Spikes", () => {
|
||||||
|
|
||||||
expect(enemy.hp).toBeLessThan(enemy.getMaxHp());
|
expect(enemy.hp).toBeLessThan(enemy.getMaxHp());
|
||||||
expect(enemy.status?.effect).toBe(StatusEffect.POISON);
|
expect(enemy.status?.effect).toBe(StatusEffect.POISON);
|
||||||
}, TIMEOUT);
|
});
|
||||||
|
|
||||||
it("should badly poison the opponent if they switch into 2 layers", async () => {
|
it("should badly poison the opponent if they switch into 2 layers", async () => {
|
||||||
await game.classicMode.runToSummon([ Species.MIGHTYENA ]);
|
await game.classicMode.runToSummon([ Species.MIGHTYENA ]);
|
||||||
|
@ -80,25 +78,30 @@ describe("Moves - Toxic Spikes", () => {
|
||||||
const enemy = game.scene.getEnemyField()[0];
|
const enemy = game.scene.getEnemyField()[0];
|
||||||
expect(enemy.hp).toBeLessThan(enemy.getMaxHp());
|
expect(enemy.hp).toBeLessThan(enemy.getMaxHp());
|
||||||
expect(enemy.status?.effect).toBe(StatusEffect.TOXIC);
|
expect(enemy.status?.effect).toBe(StatusEffect.TOXIC);
|
||||||
}, TIMEOUT);
|
});
|
||||||
|
|
||||||
it("should be removed if a grounded poison pokemon switches in", async () => {
|
it("should be removed if a grounded poison pokemon switches in", async () => {
|
||||||
game.override.enemySpecies(Species.GRIMER);
|
await game.classicMode.runToSummon([ Species.MUK, Species.PIDGEY ]);
|
||||||
await game.classicMode.runToSummon([ Species.MIGHTYENA ]);
|
|
||||||
|
const muk = game.scene.getPlayerPokemon()!;
|
||||||
|
|
||||||
game.move.select(Moves.TOXIC_SPIKES);
|
game.move.select(Moves.TOXIC_SPIKES);
|
||||||
await game.phaseInterceptor.to("TurnEndPhase");
|
await game.toNextTurn();
|
||||||
game.move.select(Moves.TOXIC_SPIKES);
|
// also make sure the toxic spikes are removed even if the pokemon
|
||||||
await game.phaseInterceptor.to("TurnEndPhase");
|
// that set them up is the one switching in (https://github.com/pagefaultgames/pokerogue/issues/935)
|
||||||
game.move.select(Moves.ROAR);
|
game.move.select(Moves.COURT_CHANGE);
|
||||||
await game.phaseInterceptor.to("TurnEndPhase");
|
await game.toNextTurn();
|
||||||
|
game.doSwitchPokemon(1);
|
||||||
const enemy = game.scene.getEnemyField()[0];
|
await game.toNextTurn();
|
||||||
expect(enemy.hp).toBe(enemy.getMaxHp());
|
game.doSwitchPokemon(1);
|
||||||
expect(enemy.status?.effect).toBeUndefined();
|
await game.toNextTurn();
|
||||||
|
game.move.select(Moves.SPLASH);
|
||||||
|
await game.toNextTurn();
|
||||||
|
|
||||||
|
expect(muk.isFullHp()).toBe(true);
|
||||||
|
expect(muk.status?.effect).toBeUndefined();
|
||||||
expect(game.scene.arena.tags.length).toBe(0);
|
expect(game.scene.arena.tags.length).toBe(0);
|
||||||
}, TIMEOUT);
|
});
|
||||||
|
|
||||||
it("shouldn't create multiple layers per use in doubles", async () => {
|
it("shouldn't create multiple layers per use in doubles", async () => {
|
||||||
await game.classicMode.runToSummon([ Species.MIGHTYENA, Species.POOCHYENA ]);
|
await game.classicMode.runToSummon([ Species.MIGHTYENA, Species.POOCHYENA ]);
|
||||||
|
@ -109,7 +112,7 @@ describe("Moves - Toxic Spikes", () => {
|
||||||
const arenaTags = (game.scene.arena.getTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.ENEMY) as ArenaTrapTag);
|
const arenaTags = (game.scene.arena.getTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.ENEMY) as ArenaTrapTag);
|
||||||
expect(arenaTags.tagType).toBe(ArenaTagType.TOXIC_SPIKES);
|
expect(arenaTags.tagType).toBe(ArenaTagType.TOXIC_SPIKES);
|
||||||
expect(arenaTags.layers).toBe(1);
|
expect(arenaTags.layers).toBe(1);
|
||||||
}, TIMEOUT);
|
});
|
||||||
|
|
||||||
it("should persist through reload", async () => {
|
it("should persist through reload", async () => {
|
||||||
game.override.startingWave(1);
|
game.override.startingWave(1);
|
||||||
|
@ -132,5 +135,5 @@ describe("Moves - Toxic Spikes", () => {
|
||||||
|
|
||||||
expect(sessionData.arena.tags).toEqual(recoveredData.arena.tags);
|
expect(sessionData.arena.tags).toEqual(recoveredData.arena.tags);
|
||||||
localStorage.removeItem("sessionTestData");
|
localStorage.removeItem("sessionTestData");
|
||||||
}, TIMEOUT);
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue