diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 7f050f4aad6..ed8acdb6b5d 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -173,6 +173,7 @@ export class BattleScene extends SceneBase { public sessionPlayTime: number | null = null; public lastSavePlayTime: number | null = null; + // TODO: move these settings into a settings helper object public masterVolume = 0.5; public bgmVolume = 1; public fieldVolume = 1; diff --git a/src/enums/exp-gains-speed.ts b/src/enums/exp-gains-speed.ts index b98345552ae..55ea82e6766 100644 --- a/src/enums/exp-gains-speed.ts +++ b/src/enums/exp-gains-speed.ts @@ -1,4 +1,4 @@ -/** Defines the speed of gaining experience. */ +/** Enum regulating the speed of EXP bar animations. */ export enum ExpGainsSpeed { /** The normal speed. */ DEFAULT, diff --git a/test/abilities/mimicry.test.ts b/test/abilities/mimicry.test.ts index 44416387f6e..dec570f19a8 100644 --- a/test/abilities/mimicry.test.ts +++ b/test/abilities/mimicry.test.ts @@ -58,9 +58,7 @@ describe("Abilities - Mimicry", () => { expect(playerPokemon.getTypes()).toEqual([PokemonType.PSYCHIC]); - if (game.scene.arena.terrain) { - game.scene.arena.terrain.turnsLeft = 1; - } + game.scene.arena.terrain!.turnsLeft = 1; game.move.use(MoveId.SPLASH); await game.move.forceEnemyMove(MoveId.SPLASH); diff --git a/test/abilities/screen-cleaner.test.ts b/test/abilities/screen-cleaner.test.ts index 8acba6a140c..52501d371bb 100644 --- a/test/abilities/screen-cleaner.test.ts +++ b/test/abilities/screen-cleaner.test.ts @@ -27,22 +27,41 @@ describe("Abilities - Screen Cleaner", () => { .battleStyle("single") .ability(AbilityId.SCREEN_CLEANER) .enemySpecies(SpeciesId.SHUCKLE) - .weather(WeatherType.HAIL); + .weather(WeatherType.SNOW); }); - // TODO: Screen cleaner doesn't remove both sides' tags if both players have them + // TODO: Screen cleaner doesn't remove both sides' tags if both players have them (as do a LOT of other things) it.todo.each([ { name: "Reflect", tagType: ArenaTagType.REFLECT }, { name: "Light Screen", tagType: ArenaTagType.LIGHT_SCREEN }, { name: "Aurora Veil", tagType: ArenaTagType.AURORA_VEIL }, - ])("should remove $name from both sides of the field on entrance", async ({ tagType }) => { + ])("should remove all instances of $name on entrance", async ({ tagType }) => { game.scene.arena.addTag(tagType, 0, 0, 0, ArenaTagSide.PLAYER); game.scene.arena.addTag(tagType, 0, 0, 0, ArenaTagSide.ENEMY); + game.scene.arena.addTag(tagType, 0, 0, 0, ArenaTagSide.BOTH); expect(game).toHaveArenaTag(tagType); + await game.classicMode.startBattle([SpeciesId.SLOWKING]); const slowking = game.field.getPlayerPokemon(); expect(slowking).toHaveAbilityApplied(AbilityId.SCREEN_CLEANER); expect(game).not.toHaveArenaTag(tagType); }); + + it("should remove all tag types at once", async () => { + game.scene.arena.addTag(ArenaTagType.REFLECT, 0, 0, 0); + game.scene.arena.addTag(ArenaTagType.LIGHT_SCREEN, 0, 0, 0); + game.scene.arena.addTag(ArenaTagType.AURORA_VEIL, 0, 0, 0); + expect(game).toHaveArenaTag(ArenaTagType.REFLECT); + expect(game).toHaveArenaTag(ArenaTagType.LIGHT_SCREEN); + expect(game).toHaveArenaTag(ArenaTagType.AURORA_VEIL); + + await game.classicMode.startBattle([SpeciesId.SLOWKING]); + + const slowking = game.field.getPlayerPokemon(); + expect(slowking).toHaveAbilityApplied(AbilityId.SCREEN_CLEANER); + expect(game).not.toHaveArenaTag(ArenaTagType.REFLECT); + expect(game).not.toHaveArenaTag(ArenaTagType.LIGHT_SCREEN); + expect(game).not.toHaveArenaTag(ArenaTagType.AURORA_VEIL); + }); }); diff --git a/test/test-utils/helpers/settings-helper.ts b/test/test-utils/helpers/settings-helper.ts index d948a9d5d98..987e883f12d 100644 --- a/test/test-utils/helpers/settings-helper.ts +++ b/test/test-utils/helpers/settings-helper.ts @@ -9,8 +9,7 @@ import { getEnumStr } from "#test/test-utils/string-utils"; import chalk from "chalk"; /** - * Helper to handle settings for tests - * @todo Why does this exist + * Helper to handle changing game settings for tests. */ export class SettingsHelper extends GameManagerHelper { constructor(game: GameManager) { @@ -19,6 +18,9 @@ export class SettingsHelper extends GameManagerHelper { this.initDefaultSettings(); } + /** + * Initialize default settings upon starting a new test case. + */ private initDefaultSettings(): void { this.game.scene.gameSpeed = 5; this.game.scene.moveAnimations = false; @@ -33,42 +35,46 @@ export class SettingsHelper extends GameManagerHelper { } /** - * Change the battle style to Switch or Set mode (tests default to {@linkcode BattleStyle.SET}) - * @param style - The {@linkcode BattleStyle} to set + * Change the current {@linkcode BattleStyle}. + * @param style - The `BattleStyle` to set + * @returns `this` */ - battleStyle(style: BattleStyle): this { + public battleStyle(style: BattleStyle): this { this.game.scene.battleStyle = style; - this.log(`Battle Style set to BattleStyle.${getEnumStr(BattleStyle, style)}!`); + this.log(`Battle Style set to ${getEnumStr(BattleStyle, style)}!`); return this; } /** - * Disable/Enable type hints settings - * @param enable - Whether to enable or disable type hints. + * Toggle the availability of type hints. + * @param enable - Whether to enable or disable type hints * @returns `this` */ - typeHints(enable: boolean): this { + public typeHints(enable: boolean): this { this.game.scene.typeHints = enable; this.log(`Type Hints ${enable ? "enabled" : "disabled"}!`); return this; } /** - * Change the player gender + * Change the player character's selected gender. * @param gender - The {@linkcode PlayerGender} to set + * @returns `this` */ - playerGender(gender: PlayerGender) { + public playerGender(gender: PlayerGender): this { this.game.scene.gameData.gender = gender; - this.log(`Gender set to PlayerGender.${getEnumStr(PlayerGender, gender)}!`); + this.log(`Gender set to ${getEnumStr(PlayerGender, gender)}!`); + return this; } /** - * Change the exp gains speed - * @param speed - the {@linkcode ExpGainsSpeed} to set + * Change the current {@linkcode ExpGainsSpeed}. + * @param speed - The speed to set + * @returns `this` */ - expGainsSpeed(speed: ExpGainsSpeed) { + public expGainsSpeed(speed: ExpGainsSpeed): this { this.game.scene.expGainsSpeed = speed; - this.log(`Exp Gains Speed set to ExpGainsSpeed.${getEnumStr(ExpGainsSpeed, speed)}!`); + this.log(`EXP Gain bar speed set to ${getEnumStr(ExpGainsSpeed, speed)}!`); return this; }