diff --git a/src/data/ability.ts b/src/data/ability.ts index b16d1fa5a4a..63180d1f342 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -24,7 +24,7 @@ import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; -import { Stat, BattleStat, getStatKey, BATTLE_STATS, EFFECTIVE_STATS, EffectiveStat } from "#app/enums/stat.js"; +import { Stat, type BattleStat, type EffectiveStat, BATTLE_STATS, EFFECTIVE_STATS, getStatKey } from "#app/enums/stat"; export class Ability implements Localizable { public id: Abilities; diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 26693ded54c..23e4dad284d 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -16,7 +16,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import i18next from "#app/plugins/i18n.js"; -import { Stat, BattleStat, EFFECTIVE_STATS, EffectiveStat, getStatKey } from "#app/enums/stat"; +import { Stat, type BattleStat, type EffectiveStat, EFFECTIVE_STATS, getStatKey } from "#app/enums/stat"; export enum BattlerTagLapseType { FAINT, @@ -1302,7 +1302,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag { break; } - pokemon.scene.queueMessage(i18next.t("battle:battlerTagsHighestStatBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), statName: getStatKey(highestStat) }), null, false, null, true); + pokemon.scene.queueMessage(i18next.t("battle:battlerTagsHighestStatBoostOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), statName: i18next.t(getStatKey(highestStat)) }), null, false, null, true); } onRemove(pokemon: Pokemon): void { diff --git a/src/data/berry.ts b/src/data/berry.ts index 8c47760e4cf..8a6178caadd 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -7,7 +7,7 @@ import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } import i18next from "i18next"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; -import { BattleStat, Stat } from "#app/enums/stat"; +import { Stat, type BattleStat } from "#app/enums/stat"; export function getBerryName(berryType: BerryType): string { return i18next.t(`berry:${BerryType[berryType]}.name`); diff --git a/src/data/move.ts b/src/data/move.ts index 720a6adac63..fc02915a453 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -26,7 +26,7 @@ import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { MoveUsedEvent } from "#app/events/battle-scene.js"; -import { Stat, BATTLE_STATS, BattleStat, EFFECTIVE_STATS, EffectiveStat, getStatKey } from "#app/enums/stat"; +import { Stat, type BattleStat, type EffectiveStat, BATTLE_STATS, EFFECTIVE_STATS, getStatKey } from "#app/enums/stat"; export enum MoveCategory { PHYSICAL, @@ -4969,8 +4969,8 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { } let ret = this.user ? Math.floor((1 - user.getHpRatio()) * 20) : super.getUserBenefitScore(user, target, move); if (this.user && this.batonPass) { - const battleStatTotal = user.getStatStages().reduce((bs: integer, total: integer) => total += bs, 0); - ret = ret / 2 + (Phaser.Tweens.Builders.GetEaseFunction("Sine.easeOut")(Math.min(Math.abs(battleStatTotal), 10) / 10) * (battleStatTotal >= 0 ? 10 : -10)); + const statStageTotal = user.getStatStages().reduce((s: integer, total: integer) => total += s, 0); + ret = ret / 2 + (Phaser.Tweens.Builders.GetEaseFunction("Sine.easeOut")(Math.min(Math.abs(statStageTotal), 10) / 10) * (statStageTotal >= 0 ? 10 : -10)); } return ret; } diff --git a/src/data/nature.ts b/src/data/nature.ts index 3da405ab293..c614be465c3 100644 --- a/src/data/nature.ts +++ b/src/data/nature.ts @@ -3,7 +3,7 @@ import { TextStyle, getBBCodeFrag } from "../ui/text"; import { Nature } from "#enums/nature"; import { UiTheme } from "#enums/ui-theme"; import i18next from "i18next"; -import { Stat, EFFECTIVE_STATS, getShortenedStatKey } from "#app/enums/stat.js"; +import { Stat, EFFECTIVE_STATS, getShortenedStatKey } from "#app/enums/stat"; export { Nature }; @@ -27,7 +27,7 @@ export function getNatureName(nature: Nature, includeStatEffects: boolean = fals const textStyle = forStarterSelect ? TextStyle.SUMMARY_ALT : TextStyle.WINDOW; const getTextFrag = !ignoreBBCode ? (text: string, style: TextStyle) => getBBCodeFrag(text, style, uiTheme) : (text: string, style: TextStyle) => text; if (increasedStat && decreasedStat) { - ret = `${getTextFrag(`${ret}${!forStarterSelect ? "\n" : " "}(`, textStyle)}${getTextFrag(`+${i18next.t(getShortenedStatKey(increasedStat))}`, TextStyle.SUMMARY_PINK)}${getTextFrag("/", textStyle)}${getTextFrag(`-${getShortenedStatKey(decreasedStat)}`, TextStyle.SUMMARY_BLUE)}${getTextFrag(")", textStyle)}`; + ret = `${getTextFrag(`${ret}${!forStarterSelect ? "\n" : " "}(`, textStyle)}${getTextFrag(`+${i18next.t(getShortenedStatKey(increasedStat))}`, TextStyle.SUMMARY_PINK)}${getTextFrag("/", textStyle)}${getTextFrag(`-${i18next.t(getShortenedStatKey(decreasedStat))}`, TextStyle.SUMMARY_BLUE)}${getTextFrag(")", textStyle)}`; } else { ret = getTextFrag(`${ret}${!forStarterSelect ? "\n" : " "}(-)`, textStyle); } diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 2c5ad3c179b..5bca29c58de 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -9,7 +9,7 @@ import { Constructor } from "#app/utils"; import * as Utils from "../utils"; import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from "../data/type"; import { getLevelTotalExp } from "../data/exp"; -import { BATTLE_STATS, EFFECTIVE_STATS, Stat } from "#enums/stat"; +import { Stat, type PermanentStat, type BattleStat, type EffectiveStat, PERMANENT_STATS, BATTLE_STATS, EFFECTIVE_STATS } from "#enums/stat"; import { DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, BaseStatModifier, PokemonFriendshipBoosterModifier, PokemonHeldItemModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempStatStageBoosterModifier, TempCritBoosterModifier, StatBoosterModifier, CritBoosterModifier, TerastallizeModifier } from "../modifier/modifier"; import { PokeballType } from "../data/pokeball"; import { Gender } from "../data/gender"; @@ -49,7 +49,6 @@ import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { getPokemonNameWithAffix } from "#app/messages.js"; -import { PermanentStat, BattleStat, PERMANENT_STATS, EffectiveStat } from "#app/enums/stat"; // TODO: Add type export enum FieldPosition { CENTER, diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index ee266e68cd1..87e67e9d8c1 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -23,7 +23,7 @@ import Overrides from "#app/overrides"; import { ModifierType, modifierTypes } from "./modifier-type"; import { Command } from "#app/ui/command-ui-handler.js"; import { Species } from "#enums/species"; -import { BATTLE_STATS, PermanentStat, TEMP_BATTLE_STATS, TempBattleStat } from "#app/enums/stat"; // TODO: Add Type +import { type PermanentStat, type TempBattleStat, BATTLE_STATS, TEMP_BATTLE_STATS } from "#app/enums/stat"; import i18next from "i18next"; import { allMoves } from "#app/data/move.js"; diff --git a/src/phases.ts b/src/phases.ts index 52da66e7443..93e9421355b 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -64,7 +64,7 @@ import { Species } from "#enums/species"; import { TrainerType } from "#enums/trainer-type"; import { applyChallenges, ChallengeType } from "./data/challenge"; import { pokemonEvolutions } from "./data/pokemon-evolutions"; -import { Stat, BattleStat, getStatKey, getStatStageChangeDescriptionKey } from "#enums/stat"; +import { Stat, type BattleStat, getStatKey, getStatStageChangeDescriptionKey } from "#enums/stat"; const { t } = i18next; diff --git a/src/system/achv.ts b/src/system/achv.ts index 786c519f936..d5fc5c56044 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -8,7 +8,7 @@ import { PlayerGender } from "#enums/player-gender"; import { ParseKeys } from "i18next"; import { Challenge, FreshStartChallenge, SingleGenerationChallenge, SingleTypeChallenge } from "#app/data/challenge.js"; import { ConditionFn } from "#app/@types/common.js"; -import { getShortenedStatKey, Stat } from "#app/enums/stat.js"; +import { Stat, getShortenedStatKey } from "#app/enums/stat"; export enum AchvTier { COMMON, diff --git a/src/test/abilities/moxie.test.ts b/src/test/abilities/moxie.test.ts index 487b8732fa4..c69b2544d8d 100644 --- a/src/test/abilities/moxie.test.ts +++ b/src/test/abilities/moxie.test.ts @@ -53,7 +53,7 @@ describe("Abilities - Moxie", () => { expect(playerPokemon.getStatStage(Stat.ATK)).toBe(1); }, 20000); - // TODO: Activate this test when MOXIE is corrected to work faint and not battle victory + // TODO: Activate this test when MOXIE is corrected to work on faint and not on battle victory it.todo("should raise ATK stat stage by 1 when defeating an ally Pokemon", async() => { game.override.battleType("double"); const moveToUse = Moves.AERIAL_ACE; diff --git a/src/test/items/eviolite.test.ts b/src/test/items/eviolite.test.ts index af5cec80fa2..0ec7d712d54 100644 --- a/src/test/items/eviolite.test.ts +++ b/src/test/items/eviolite.test.ts @@ -37,7 +37,7 @@ describe("Items - Eviolite", () => { const partyMember = game.scene.getParty()[0]; - // Checking consoe log to make sure Eviolite is applied when getEffectiveStat (with the appropriate stat) is called + // Checking console log to make sure Eviolite is applied when getEffectiveStat (with the appropriate stat) is called partyMember.getEffectiveStat(Stat.DEF); expect(consoleSpy).toHaveBeenLastCalledWith("Applied", i18next.t("modifierType:ModifierType.EVIOLITE.name"), ""); diff --git a/src/test/items/light_ball.test.ts b/src/test/items/light_ball.test.ts index 4d98ca65b97..5b115ed8866 100644 --- a/src/test/items/light_ball.test.ts +++ b/src/test/items/light_ball.test.ts @@ -37,7 +37,7 @@ describe("Items - Light Ball", () => { const partyMember = game.scene.getParty()[0]; - // Checking consoe log to make sure Light Ball is applied when getEffectiveStat (with the appropriate stat) is called + // Checking console log to make sure Light Ball is applied when getEffectiveStat (with the appropriate stat) is called partyMember.getEffectiveStat(Stat.DEF); expect(consoleSpy).not.toHaveBeenLastCalledWith("Applied", i18next.t("modifierType:SpeciesBoosterItem.LIGHT_BALL.name"), ""); diff --git a/src/test/items/metal_powder.test.ts b/src/test/items/metal_powder.test.ts index cd180572aee..3f4548615f3 100644 --- a/src/test/items/metal_powder.test.ts +++ b/src/test/items/metal_powder.test.ts @@ -37,7 +37,7 @@ describe("Items - Metal Powder", () => { const partyMember = game.scene.getParty()[0]; - // Checking consoe log to make sure Metal Powder is applied when getEffectiveStat (with the appropriate stat) is called + // Checking console log to make sure Metal Powder is applied when getEffectiveStat (with the appropriate stat) is called partyMember.getEffectiveStat(Stat.DEF); expect(consoleSpy).toHaveBeenLastCalledWith("Applied", i18next.t("modifierType:SpeciesBoosterItem.METAL_POWDER.name"), ""); diff --git a/src/test/items/quick_powder.test.ts b/src/test/items/quick_powder.test.ts index 430b4dff535..1b127f0a445 100644 --- a/src/test/items/quick_powder.test.ts +++ b/src/test/items/quick_powder.test.ts @@ -37,7 +37,7 @@ describe("Items - Quick Powder", () => { const partyMember = game.scene.getParty()[0]; - // Checking consoe log to make sure Quick Powder is applied when getEffectiveStat (with the appropriate stat) is called + // Checking console log to make sure Quick Powder is applied when getEffectiveStat (with the appropriate stat) is called partyMember.getEffectiveStat(Stat.DEF); expect(consoleSpy).not.toHaveBeenLastCalledWith("Applied", i18next.t("modifierType:SpeciesBoosterItem.QUICK_POWDER.name"), ""); diff --git a/src/test/items/thick_club.test.ts b/src/test/items/thick_club.test.ts index 9a430d52d02..14abf514866 100644 --- a/src/test/items/thick_club.test.ts +++ b/src/test/items/thick_club.test.ts @@ -37,7 +37,7 @@ describe("Items - Thick Club", () => { const partyMember = game.scene.getParty()[0]; - // Checking consoe log to make sure Thick Club is applied when getEffectiveStat (with the appropriate stat) is called + // Checking console log to make sure Thick Club is applied when getEffectiveStat (with the appropriate stat) is called partyMember.getEffectiveStat(Stat.DEF); expect(consoleSpy).not.toHaveBeenLastCalledWith("Applied", i18next.t("modifierType:SpeciesBoosterItem.THICK_CLUB.name"), ""); diff --git a/src/test/moves/baton_pass.test.ts b/src/test/moves/baton_pass.test.ts index 49c42729580..25119cf0ad6 100644 --- a/src/test/moves/baton_pass.test.ts +++ b/src/test/moves/baton_pass.test.ts @@ -65,7 +65,7 @@ describe("Moves - Baton Pass", () => { // arrange game.override .startingWave(5) - .enemyMoveset([ Moves.NASTY_PLOT, Moves.NASTY_PLOT, Moves.NASTY_PLOT, Moves.NASTY_PLOT ]); + .enemyMoveset(new Array(4).fill([Moves.NASTY_PLOT]); await game.startBattle([ Species.RAICHU, Species.SHUCKLE @@ -77,7 +77,7 @@ describe("Moves - Baton Pass", () => { // round 2 - baton pass game.scene.getEnemyPokemon()!.hp = 100; - game.override.enemyMoveset([ Moves.BATON_PASS, Moves.BATON_PASS, Moves.BATON_PASS, Moves.BATON_PASS ]); + game.override.enemyMoveset(new Array(4).fill(Moves.BATON_PASS)); game.doAttack(getMovePosition(game.scene, 0, Moves.SPLASH)); await game.phaseInterceptor.to(PostSummonPhase, false); diff --git a/src/test/moves/spit_up.test.ts b/src/test/moves/spit_up.test.ts index 794a8593e13..5fba34f1908 100644 --- a/src/test/moves/spit_up.test.ts +++ b/src/test/moves/spit_up.test.ts @@ -36,7 +36,7 @@ describe("Moves - Spit Up", () => { game.override.enemyAbility(Abilities.NONE); game.override.enemyLevel(2000); - game.override.moveset([ spitUp.id, spitUp.id, spitUp.id, spitUp.id ]); + game.override.moveset(new Array(4).fill(spitUp.id)); game.override.ability(Abilities.NONE); vi.spyOn(spitUp, "calculateBattlePower"); diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index eee0de9bb7c..5ade7fff4a6 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -6,7 +6,7 @@ import { addWindow } from "./ui-theme"; import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import {Button} from "#enums/buttons"; import i18next from "i18next"; -import { Stat, PERMANENT_STATS, getStatKey } from "#app/enums/stat.js"; +import { Stat, PERMANENT_STATS, getStatKey } from "#app/enums/stat"; export default class BattleMessageUiHandler extends MessageUiHandler { private levelUpStatsContainer: Phaser.GameObjects.Container; diff --git a/src/ui/stats-container.ts b/src/ui/stats-container.ts index 8c689064c87..9e8481499b9 100644 --- a/src/ui/stats-container.ts +++ b/src/ui/stats-container.ts @@ -1,7 +1,7 @@ import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; import BattleScene from "../battle-scene"; import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; -import { getStatKey, PERMANENT_STATS } from "#app/enums/stat.js"; +import { PERMANENT_STATS, getStatKey } from "#app/enums/stat.js"; import i18next from "i18next"; const ivChartSize = 24; diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index eb4a14ad81a..2ae37edf295 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -22,7 +22,7 @@ import { Ability } from "../data/ability.js"; import i18next from "i18next"; import {modifierSortFunc} from "../modifier/modifier"; import { PlayerGender } from "#enums/player-gender"; -import { Stat, getStatKey, PERMANENT_STATS } from "#app/enums/stat.js"; +import { Stat, PERMANENT_STATS, getStatKey } from "#app/enums/stat.js"; enum Page { PROFILE,