From e83d5f451ed989a5d142e4b640aaf740b34cd8bf Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 30 Mar 2025 13:23:10 -0500 Subject: [PATCH] Extract types out of ability.ts --- src/@types/ability-types.ts | 11 ++ src/battle-scene.ts | 2 +- src/data/abilities/ab-attrs/ab-attr.ts | 54 +++++++ src/data/abilities/ability-class.ts | 135 ++++++++++++++++++ src/data/abilities/ability.ts | 26 ++-- src/data/battler-tags.ts | 2 +- src/data/data-lists.ts | 3 + src/data/moves/move.ts | 2 +- .../encounters/clowning-around-encounter.ts | 2 +- .../encounters/fiery-fallout-encounter.ts | 2 +- .../encounters/training-session-encounter.ts | 4 +- .../mystery-encounter-requirements.ts | 2 +- src/field/pokemon.ts | 5 +- src/ui/pokedex-page-ui-handler.ts | 2 +- src/ui/pokedex-scan-ui-handler.ts | 2 +- src/ui/pokedex-ui-handler.ts | 2 +- src/ui/starter-select-ui-handler.ts | 4 +- src/ui/summary-ui-handler.ts | 2 +- test/abilities/arena_trap.test.ts | 2 +- test/abilities/flower_gift.test.ts | 2 +- test/abilities/flower_veil.test.ts | 2 +- test/abilities/forecast.test.ts | 2 +- test/abilities/friend_guard.test.ts | 2 +- test/abilities/good_as_gold.test.ts | 2 +- test/abilities/magic_bounce.test.ts | 2 +- test/abilities/quick_draw.test.ts | 3 +- test/abilities/sand_veil.test.ts | 3 +- test/abilities/steely_spirit.test.ts | 2 +- test/battle/ability_swap.test.ts | 2 +- test/moves/flame_burst.test.ts | 2 +- test/moves/pledge_moves.test.ts | 2 +- test/moves/safeguard.test.ts | 3 +- test/moves/secret_power.test.ts | 3 +- 33 files changed, 249 insertions(+), 47 deletions(-) create mode 100644 src/@types/ability-types.ts create mode 100644 src/data/abilities/ab-attrs/ab-attr.ts create mode 100644 src/data/abilities/ability-class.ts create mode 100644 src/data/data-lists.ts diff --git a/src/@types/ability-types.ts b/src/@types/ability-types.ts new file mode 100644 index 00000000000..5d21aaaa844 --- /dev/null +++ b/src/@types/ability-types.ts @@ -0,0 +1,11 @@ +import type { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr"; +import type Move from "#app/data/moves/move"; +import type Pokemon from "#app/field/pokemon"; +import type { BattleStat } from "#enums/stat"; + +export type AbAttrApplyFunc = (attr: TAttr, passive: boolean) => void; +export type AbAttrSuccessFunc = (attr: TAttr, passive: boolean) => boolean; +export type AbAttrCondition = (pokemon: Pokemon) => boolean; +export type PokemonAttackCondition = (user: Pokemon | null, target: Pokemon | null, move: Move) => boolean; +export type PokemonDefendCondition = (target: Pokemon, user: Pokemon, move: Move) => boolean; +export type PokemonStatStageChangeCondition = (target: Pokemon, statsChanged: BattleStat[], stages: number) => boolean; diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 74f56cbaf23..90f53d6a95e 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -67,7 +67,6 @@ import { } from "#app/modifier/modifier-type"; import AbilityBar from "#app/ui/ability-bar"; import { - allAbilities, applyAbAttrs, applyPostBattleInitAbAttrs, applyPostItemLostAbAttrs, @@ -76,6 +75,7 @@ import { PostBattleInitAbAttr, PostItemLostAbAttr, } from "#app/data/abilities/ability"; +import { allAbilities } from "./data/data-lists"; import type { FixedBattleConfig } from "#app/battle"; import Battle, { BattleType } from "#app/battle"; import type { GameMode } from "#app/game-mode"; diff --git a/src/data/abilities/ab-attrs/ab-attr.ts b/src/data/abilities/ab-attrs/ab-attr.ts new file mode 100644 index 00000000000..c8ead691b25 --- /dev/null +++ b/src/data/abilities/ab-attrs/ab-attr.ts @@ -0,0 +1,54 @@ +import type { AbAttrCondition } from "#app/@types/ability-types"; +import type Pokemon from "#app/field/pokemon"; +import type * as Utils from "#app/utils"; + +export abstract class AbAttr { + public showAbility: boolean; + private extraCondition: AbAttrCondition; + + constructor(showAbility = true) { + this.showAbility = showAbility; + } + + /** + * Applies ability effects without checking conditions + * @param _pokemon - The pokemon to apply this ability to + * @param _passive - Whether or not the ability is a passive + * @param _simulated - Whether the call is simulated + * @param _args - Extra args passed to the function. Handled by child classes. + * @see {@linkcode canApply} + */ + apply( + _pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + _cancelled: Utils.BooleanHolder | null, + _args: any[], + ): void {} + + getTriggerMessage(_pokemon: Pokemon, _abilityName: string, ..._args: any[]): string | null { + return null; + } + + getCondition(): AbAttrCondition | null { + return this.extraCondition || null; + } + + addCondition(condition: AbAttrCondition): AbAttr { + this.extraCondition = condition; + return this; + } + + /** + * Returns a boolean describing whether the ability can be applied under current conditions + * @param _pokemon - The pokemon to apply this ability to + * @param _passive - Whether or not the ability is a passive + * @param _simulated - Whether the call is simulated + * @param _args - Extra args passed to the function. Handled by child classes. + * @returns `true` if the ability can be applied, `false` otherwise + * @see {@linkcode apply} + */ + canApply(_pokemon: Pokemon, _passive: boolean, _simulated: boolean, _args: any[]): boolean { + return true; + } +} diff --git a/src/data/abilities/ability-class.ts b/src/data/abilities/ability-class.ts new file mode 100644 index 00000000000..7759dd959af --- /dev/null +++ b/src/data/abilities/ability-class.ts @@ -0,0 +1,135 @@ +import { Abilities } from "#enums/abilities"; +import type { AbAttrCondition } from "#app/@types/ability-types"; +import type { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr"; +import i18next from "i18next"; + +export class Ability implements Localizable { + public id: Abilities; + + private nameAppend: string; + public name: string; + public description: string; + public generation: number; + public isBypassFaint: boolean; + public isIgnorable: boolean; + public isSuppressable = true; + public isCopiable = true; + public isReplaceable = true; + public attrs: AbAttr[]; + public conditions: AbAttrCondition[]; + + constructor(id: Abilities, generation: number) { + this.id = id; + + this.nameAppend = ""; + this.generation = generation; + this.attrs = []; + this.conditions = []; + + this.isSuppressable = true; + this.isCopiable = true; + this.isReplaceable = true; + + this.localize(); + } + + public get isSwappable(): boolean { + return this.isCopiable && this.isReplaceable; + } + localize(): void { + const i18nKey = Abilities[this.id] + .split("_") + .filter(f => f) + .map((f, i) => (i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase())) + .join("") as string; + + this.name = this.id ? `${i18next.t(`ability:${i18nKey}.name`) as string}${this.nameAppend}` : ""; + this.description = this.id ? (i18next.t(`ability:${i18nKey}.description`) as string) : ""; + } + + /** + * Get all ability attributes that match `attrType` + * @param attrType any attribute that extends {@linkcode AbAttr} + * @returns Array of attributes that match `attrType`, Empty Array if none match. + */ + getAttrs(attrType: Constructor): T[] { + return this.attrs.filter((a): a is T => a instanceof attrType); + } + + /** + * Check if an ability has an attribute that matches `attrType` + * @param attrType any attribute that extends {@linkcode AbAttr} + * @returns true if the ability has attribute `attrType` + */ + hasAttr(attrType: Constructor): boolean { + return this.attrs.some(attr => attr instanceof attrType); + } + + attr>(AttrType: T, ...args: ConstructorParameters): Ability { + const attr = new AttrType(...args); + this.attrs.push(attr); + + return this; + } + + conditionalAttr>( + condition: AbAttrCondition, + AttrType: T, + ...args: ConstructorParameters + ): Ability { + const attr = new AttrType(...args); + attr.addCondition(condition); + this.attrs.push(attr); + + return this; + } + + bypassFaint(): Ability { + this.isBypassFaint = true; + return this; + } + + ignorable(): Ability { + this.isIgnorable = true; + return this; + } + + unsuppressable(): Ability { + this.isSuppressable = false; + return this; + } + + uncopiable(): Ability { + this.isCopiable = false; + return this; + } + + unreplaceable(): Ability { + this.isReplaceable = false; + return this; + } + + condition(condition: AbAttrCondition): Ability { + this.conditions.push(condition); + + return this; + } + + partial(): this { + this.nameAppend += " (P)"; + return this; + } + + unimplemented(): this { + this.nameAppend += " (N)"; + return this; + } + + /** + * Internal flag used for developers to document edge cases. When using this, please be sure to document the edge case. + * @returns the ability + */ + edgeCase(): this { + return this; + } +} diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 9369af6bc59..b05676b1a36 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -31,7 +31,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, type BattleStat, type EffectiveStat, BATTLE_STATS, EFFECTIVE_STATS, getStatKey } from "#app/enums/stat"; +import { Stat, type BattleStat , BATTLE_STATS, EFFECTIVE_STATS, getStatKey } from "#app/enums/stat"; import { MovePhase } from "#app/phases/move-phase"; import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; @@ -46,22 +46,15 @@ import { PokemonAnimType } from "#enums/pokemon-anim-type"; import { StatusEffect } from "#enums/status-effect"; import { WeatherType } from "#enums/weather-type"; import { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; +import { allAbilities } from "../data-lists"; +import type { AbAttrCondition, PokemonDefendCondition, PokemonStatStageChangeCondition, PokemonAttackCondition, AbAttrApplyFunc, AbAttrSuccessFunc } from "#app/@types/ability-types"; +import { AbAttr } from "./ab-attrs/ab-attr"; +import {Ability} from "./ability-class"; -export class Ability implements Localizable { - public id: Abilities; +// Type imports - private nameAppend: string; - public name: string; - public description: string; - public generation: number; - public isBypassFaint: boolean; - public isIgnorable: boolean; - public isSuppressable = true; - public isCopiable = true; - public isReplaceable = true; - public attrs: AbAttr[]; - public conditions: AbAttrCondition[]; +<<<<<<< HEAD constructor(id: Abilities, generation: number) { this.id = id; @@ -223,6 +216,8 @@ export abstract class AbAttr { return true; } } +======= +>>>>>>> 6ba1a7036 (Extract types out of ability.ts) export class BlockRecoilDamageAttr extends AbAttr { constructor() { @@ -6453,10 +6448,9 @@ function getPokemonWithWeatherBasedForms() { ); } -export const allAbilities = [ new Ability(Abilities.NONE, 3) ]; - export function initAbilities() { allAbilities.push( + new Ability(Abilities.NONE, 3), new Ability(Abilities.STENCH, 3) .attr(PostAttackApplyBattlerTagAbAttr, false, (user, target, move) => !move.hasAttr(FlinchAttr) && !move.hitsSubstitute(user, target) ? 10 : 0, BattlerTagType.FLINCHED), new Ability(Abilities.DRIZZLE, 3) diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 5797c74633e..401fd9903d1 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1,6 +1,5 @@ import { globalScene } from "#app/global-scene"; import { - allAbilities, applyAbAttrs, BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, @@ -8,6 +7,7 @@ import { ConditionalUserFieldProtectStatAbAttr, ReverseDrainAbAttr, } from "#app/data/abilities/ability"; +import { allAbilities } from "./data-lists"; import { ChargeAnim, CommonAnim, CommonBattleAnim, MoveChargeAnim } from "#app/data/battle-anims"; import type Move from "#app/data/moves/move"; import { diff --git a/src/data/data-lists.ts b/src/data/data-lists.ts new file mode 100644 index 00000000000..8b8cd97293e --- /dev/null +++ b/src/data/data-lists.ts @@ -0,0 +1,3 @@ +import type { Ability } from "./abilities/ability"; + +export const allAbilities: Ability[] = []; diff --git a/src/data/moves/move.ts b/src/data/moves/move.ts index 520f7a7241c..b68dd0d3e1d 100644 --- a/src/data/moves/move.ts +++ b/src/data/moves/move.ts @@ -34,7 +34,6 @@ import { WeatherType } from "#enums/weather-type"; import type { ArenaTrapTag } from "../arena-tag"; import { ArenaTagSide, WeakenMoveTypeTag } from "../arena-tag"; import { - allAbilities, AllyMoveCategoryPowerBoostAbAttr, applyAbAttrs, applyPostAttackAbAttrs, @@ -66,6 +65,7 @@ import { VariableMovePowerAbAttr, WonderSkinAbAttr, } from "../abilities/ability"; +import { allAbilities } from "../data-lists"; import { AttackTypeBoosterModifier, BerryModifier, diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index f6a2dfb9c70..5edc2e6bbc5 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -38,7 +38,7 @@ import i18next from "i18next"; import type { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler"; import type { PlayerPokemon } from "#app/field/pokemon"; import { PokemonMove } from "#app/field/pokemon"; -import { Ability } from "#app/data/abilities/ability"; +import { Ability } from "#app/data/abilities/ability-class"; import { BerryModifier } from "#app/modifier/modifier"; import { BerryType } from "#enums/berry-type"; import { BattlerIndex } from "#app/battle"; diff --git a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts index 2a2ce3d98cf..f0b7a05a21c 100644 --- a/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts +++ b/src/data/mystery-encounters/encounters/fiery-fallout-encounter.ts @@ -46,7 +46,7 @@ import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { Stat } from "#enums/stat"; -import { Ability } from "#app/data/abilities/ability"; +import { Ability } from "#app/data/abilities/ability-class"; import { FIRE_RESISTANT_ABILITIES } from "#app/data/mystery-encounters/requirements/requirement-groups"; /** the i18n namespace for the encounter */ diff --git a/src/data/mystery-encounters/encounters/training-session-encounter.ts b/src/data/mystery-encounters/encounters/training-session-encounter.ts index 1106d346c66..e8711be172d 100644 --- a/src/data/mystery-encounters/encounters/training-session-encounter.ts +++ b/src/data/mystery-encounters/encounters/training-session-encounter.ts @@ -1,5 +1,5 @@ -import type { Ability } from "#app/data/abilities/ability"; -import { allAbilities } from "#app/data/abilities/ability"; +import type { Ability } from "#app/data/abilities/ability-class"; +import { allAbilities } from "#app/data/data-lists"; import type { EnemyPartyConfig } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { initBattleWithEnemyConfig, diff --git a/src/data/mystery-encounters/mystery-encounter-requirements.ts b/src/data/mystery-encounters/mystery-encounter-requirements.ts index 2b6caa22498..948e3e96ef0 100644 --- a/src/data/mystery-encounters/mystery-encounter-requirements.ts +++ b/src/data/mystery-encounters/mystery-encounter-requirements.ts @@ -1,5 +1,5 @@ import { globalScene } from "#app/global-scene"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "../data-lists"; import { EvolutionItem, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions"; import { Nature } from "#enums/nature"; import { FormChangeItem, pokemonFormChanges, SpeciesFormChangeItemTrigger } from "#app/data/pokemon-forms"; diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 9e85ff94158..22ede4260c3 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -136,7 +136,8 @@ import { WeakenMoveScreenTag, } from "#app/data/arena-tag"; import type { SuppressAbilitiesTag } from "#app/data/arena-tag"; -import type { Ability, AbAttr } from "#app/data/abilities/ability"; +import type { Ability } from "#app/data/abilities/ability-class"; +import type { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr"; import { StatMultiplierAbAttr, BlockCritAbAttr, @@ -151,7 +152,6 @@ import { StatusEffectImmunityAbAttr, TypeImmunityAbAttr, WeightMultiplierAbAttr, - allAbilities, applyAbAttrs, applyStatMultiplierAbAttrs, applyPreApplyBattlerTagAbAttrs, @@ -189,6 +189,7 @@ import { AllyStatMultiplierAbAttr, MoveAbilityBypassAbAttr } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import type PokemonData from "#app/system/pokemon-data"; import { BattlerIndex } from "#app/battle"; import { Mode } from "#app/ui/ui"; diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index c314a277514..3f8959c6219 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -5,7 +5,7 @@ import { getVariantTint, getVariantIcon } from "#app/sprites/variant"; import { argbFromRgba } from "@material/material-color-utilities"; import i18next from "i18next"; import { starterColors } from "#app/battle-scene"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; diff --git a/src/ui/pokedex-scan-ui-handler.ts b/src/ui/pokedex-scan-ui-handler.ts index 1a281de953f..171040f6f12 100644 --- a/src/ui/pokedex-scan-ui-handler.ts +++ b/src/ui/pokedex-scan-ui-handler.ts @@ -6,7 +6,7 @@ import type { OptionSelectItem } from "./abstact-option-select-ui-handler"; import { isNullOrUndefined } from "#app/utils"; import { Mode } from "./ui"; import { FilterTextRow } from "./filter-text"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { allMoves } from "#app/data/moves/move"; import { allSpecies } from "#app/data/pokemon-species"; import i18next from "i18next"; diff --git a/src/ui/pokedex-ui-handler.ts b/src/ui/pokedex-ui-handler.ts index 123ed65f548..5fd3ca3e379 100644 --- a/src/ui/pokedex-ui-handler.ts +++ b/src/ui/pokedex-ui-handler.ts @@ -36,7 +36,7 @@ import type { Nature } from "#enums/nature"; import { addWindow } from "./ui-theme"; import type { OptionSelectConfig } from "./abstact-option-select-ui-handler"; import { FilterText, FilterTextRow } from "./filter-text"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { starterPassiveAbilities } from "#app/data/balance/passives"; import { allMoves } from "#app/data/moves/move"; import { speciesTmMoves } from "#app/data/balance/tms"; diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index efd2ff71ca1..9b0009d666e 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -8,8 +8,8 @@ import i18next from "i18next"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { starterColors } from "#app/battle-scene"; import { globalScene } from "#app/global-scene"; -import type { Ability } from "#app/data/abilities/ability"; -import { allAbilities } from "#app/data/abilities/ability"; +import type { Ability } from "#app/data/abilities/ability-class"; +import { allAbilities } from "#app/data/data-lists"; import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { GrowthRate, getGrowthRateColor } from "#app/data/exp"; import { Gender, getGenderColor, getGenderSymbol } from "#app/data/gender"; diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index 0beca7550a6..5ff4a02793d 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -31,7 +31,7 @@ import { loggedInUser } from "#app/account"; import type { Variant } from "#app/sprites/variant"; import { getVariantTint } from "#app/sprites/variant"; import { Button } from "#enums/buttons"; -import type { Ability } from "#app/data/abilities/ability"; +import type { Ability } from "#app/data/abilities/ability-class"; import i18next from "i18next"; import { modifierSortFunc } from "#app/modifier/modifier"; import { PlayerGender } from "#enums/player-gender"; diff --git a/test/abilities/arena_trap.test.ts b/test/abilities/arena_trap.test.ts index 5039381448f..3a5bad9c34b 100644 --- a/test/abilities/arena_trap.test.ts +++ b/test/abilities/arena_trap.test.ts @@ -1,4 +1,4 @@ -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/test/abilities/flower_gift.test.ts b/test/abilities/flower_gift.test.ts index a5238c1c4a1..8c7b32e7e33 100644 --- a/test/abilities/flower_gift.test.ts +++ b/test/abilities/flower_gift.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { Stat } from "#app/enums/stat"; import { WeatherType } from "#app/enums/weather-type"; diff --git a/test/abilities/flower_veil.test.ts b/test/abilities/flower_veil.test.ts index 2e44f715486..68242be3886 100644 --- a/test/abilities/flower_veil.test.ts +++ b/test/abilities/flower_veil.test.ts @@ -9,7 +9,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { allMoves } from "#app/data/moves/move"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; describe("Abilities - Flower Veil", () => { let phaserGame: Phaser.Game; diff --git a/test/abilities/forecast.test.ts b/test/abilities/forecast.test.ts index 316e7e2ec1b..675b9a8b59c 100644 --- a/test/abilities/forecast.test.ts +++ b/test/abilities/forecast.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { WeatherType } from "#app/enums/weather-type"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; diff --git a/test/abilities/friend_guard.test.ts b/test/abilities/friend_guard.test.ts index a58dcb336c1..474c89adaf1 100644 --- a/test/abilities/friend_guard.test.ts +++ b/test/abilities/friend_guard.test.ts @@ -5,7 +5,7 @@ import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { BattlerIndex } from "#app/battle"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { allMoves } from "#app/data/moves/move"; import { MoveCategory } from "#enums/MoveCategory"; diff --git a/test/abilities/good_as_gold.test.ts b/test/abilities/good_as_gold.test.ts index e2f5bf2126c..4c4741a331f 100644 --- a/test/abilities/good_as_gold.test.ts +++ b/test/abilities/good_as_gold.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; import { ArenaTagType } from "#app/enums/arena-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type"; diff --git a/test/abilities/magic_bounce.test.ts b/test/abilities/magic_bounce.test.ts index 02b2e12963f..7886ac5fd5c 100644 --- a/test/abilities/magic_bounce.test.ts +++ b/test/abilities/magic_bounce.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; import { allMoves } from "#app/data/moves/move"; import { ArenaTagType } from "#app/enums/arena-tag-type"; diff --git a/test/abilities/quick_draw.test.ts b/test/abilities/quick_draw.test.ts index b3dcab00d48..1277fd5d3cb 100644 --- a/test/abilities/quick_draw.test.ts +++ b/test/abilities/quick_draw.test.ts @@ -1,4 +1,5 @@ -import { allAbilities, BypassSpeedChanceAbAttr } from "#app/data/abilities/ability"; +import { BypassSpeedChanceAbAttr } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { FaintPhase } from "#app/phases/faint-phase"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/abilities/sand_veil.test.ts b/test/abilities/sand_veil.test.ts index 920c27dc358..c7b12a11c0e 100644 --- a/test/abilities/sand_veil.test.ts +++ b/test/abilities/sand_veil.test.ts @@ -1,4 +1,5 @@ -import { StatMultiplierAbAttr, allAbilities } from "#app/data/abilities/ability"; +import { StatMultiplierAbAttr } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { CommandPhase } from "#app/phases/command-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; diff --git a/test/abilities/steely_spirit.test.ts b/test/abilities/steely_spirit.test.ts index ba0e7da5c53..eb5e7aac601 100644 --- a/test/abilities/steely_spirit.test.ts +++ b/test/abilities/steely_spirit.test.ts @@ -1,4 +1,4 @@ -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { allMoves } from "#app/data/moves/move"; import { Abilities } from "#app/enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/battle/ability_swap.test.ts b/test/battle/ability_swap.test.ts index 52ece8add5e..215321f26c2 100644 --- a/test/battle/ability_swap.test.ts +++ b/test/battle/ability_swap.test.ts @@ -1,4 +1,4 @@ -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { Stat } from "#app/enums/stat"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/test/moves/flame_burst.test.ts b/test/moves/flame_burst.test.ts index 9a0d9507644..a39c27d37b3 100644 --- a/test/moves/flame_burst.test.ts +++ b/test/moves/flame_burst.test.ts @@ -1,4 +1,4 @@ -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import type Pokemon from "#app/field/pokemon"; import { TurnEndPhase } from "#app/phases/turn-end-phase"; diff --git a/test/moves/pledge_moves.test.ts b/test/moves/pledge_moves.test.ts index c3567aec8f5..ee9e0b8b154 100644 --- a/test/moves/pledge_moves.test.ts +++ b/test/moves/pledge_moves.test.ts @@ -1,5 +1,5 @@ import { BattlerIndex } from "#app/battle"; -import { allAbilities } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { ArenaTagSide } from "#app/data/arena-tag"; import { allMoves, FlinchAttr } from "#app/data/moves/move"; import { PokemonType } from "#enums/pokemon-type"; diff --git a/test/moves/safeguard.test.ts b/test/moves/safeguard.test.ts index 750621b761a..675c74f28d0 100644 --- a/test/moves/safeguard.test.ts +++ b/test/moves/safeguard.test.ts @@ -1,5 +1,6 @@ import { BattlerIndex } from "#app/battle"; -import { allAbilities, PostDefendContactApplyStatusEffectAbAttr } from "#app/data/abilities/ability"; +import { PostDefendContactApplyStatusEffectAbAttr } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; import { Abilities } from "#app/enums/abilities"; import { StatusEffect } from "#app/enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; diff --git a/test/moves/secret_power.test.ts b/test/moves/secret_power.test.ts index 24543718b3e..d769b112b70 100644 --- a/test/moves/secret_power.test.ts +++ b/test/moves/secret_power.test.ts @@ -11,7 +11,8 @@ import { StatusEffect } from "#enums/status-effect"; import { BattlerIndex } from "#app/battle"; import { ArenaTagType } from "#enums/arena-tag-type"; import { ArenaTagSide } from "#app/data/arena-tag"; -import { allAbilities, MoveEffectChanceMultiplierAbAttr } from "#app/data/abilities/ability"; +import { MoveEffectChanceMultiplierAbAttr } from "#app/data/abilities/ability"; +import { allAbilities } from "#app/data/data-lists"; describe("Moves - Secret Power", () => { let phaserGame: Phaser.Game;