Merge 8af11ac80d
into 787feceb14
This commit is contained in:
commit
c16ce8f4e8
|
@ -32,6 +32,7 @@
|
|||
// TODO: these files are too big and complex, ignore them until their respective refactors
|
||||
"src/data/moves/move.ts",
|
||||
"src/data/ability.ts",
|
||||
"src/data/abilities/ability.ts",
|
||||
"src/field/pokemon.ts",
|
||||
|
||||
// this file is just too big:
|
||||
|
|
|
@ -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<TAttr extends AbAttr> = (attr: TAttr, passive: boolean) => void;
|
||||
export type AbAttrSuccessFunc<TAttr extends AbAttr> = (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;
|
|
@ -56,7 +56,6 @@ import {
|
|||
} from "#app/modifier/modifier-type";
|
||||
import AbilityBar from "#app/ui/ability-bar";
|
||||
import {
|
||||
allAbilities,
|
||||
applyAbAttrs,
|
||||
applyPostBattleInitAbAttrs,
|
||||
applyPostItemLostAbAttrs,
|
||||
|
@ -64,7 +63,8 @@ import {
|
|||
DoubleBattleChanceAbAttr,
|
||||
PostBattleInitAbAttr,
|
||||
PostItemLostAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} 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";
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,137 @@
|
|||
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";
|
||||
import type { Localizable } from "#app/interfaces/locales";
|
||||
import type { Constructor } from "#app/utils";
|
||||
|
||||
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<T extends AbAttr>(attrType: Constructor<T>): 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<T extends AbAttr>(attrType: Constructor<T>): boolean {
|
||||
return this.attrs.some(attr => attr instanceof attrType);
|
||||
}
|
||||
|
||||
attr<T extends Constructor<AbAttr>>(AttrType: T, ...args: ConstructorParameters<T>): Ability {
|
||||
const attr = new AttrType(...args);
|
||||
this.attrs.push(attr);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
conditionalAttr<T extends Constructor<AbAttr>>(
|
||||
condition: AbAttrCondition,
|
||||
AttrType: T,
|
||||
...args: ConstructorParameters<T>
|
||||
): 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;
|
||||
}
|
||||
}
|
|
@ -1,229 +1,77 @@
|
|||
import type { EnemyPokemon, PokemonMove } from "../field/pokemon";
|
||||
import type Pokemon from "../field/pokemon";
|
||||
import { HitResult, MoveResult, PlayerPokemon } from "../field/pokemon";
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
import type { Constructor } from "#app/utils";
|
||||
import * as Utils from "../utils";
|
||||
import { getPokemonNameWithAffix } from "../messages";
|
||||
import type { Weather } from "#app/data/weather";
|
||||
import type { BattlerTag } from "./battler-tags";
|
||||
import { BattlerTagLapseType, GroundedTag } from "./battler-tags";
|
||||
import { HitResult, MoveResult, PlayerPokemon } from "#app/field/pokemon";
|
||||
import * as Utils from "#app/utils";
|
||||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import { BattlerTagLapseType, GroundedTag } from "#app/data/battler-tags";
|
||||
import { getNonVolatileStatusEffects, getStatusEffectDescriptor, getStatusEffectHealText } from "#app/data/status-effect";
|
||||
import { Gender } from "./gender";
|
||||
import type Move from "./moves/move";
|
||||
import { AttackMove, FlinchAttr, OneHitKOAttr, HitHealAttr, allMoves, StatusMove, SelfStatusMove, VariablePowerAttr, applyMoveAttrs, VariableMoveTypeAttr, RandomMovesetMoveAttr, RandomMoveAttr, NaturePowerAttr, CopyMoveAttr, NeutralDamageAgainstFlyingTypeMultiplierAttr, FixedDamageAttr } from "./moves/move";
|
||||
import { MoveFlags } from "#enums/MoveFlags";
|
||||
import { MoveTarget } from "#enums/MoveTarget";
|
||||
import { MoveCategory } from "#enums/MoveCategory";
|
||||
import type { ArenaTrapTag, SuppressAbilitiesTag } from "./arena-tag";
|
||||
import { ArenaTagSide } from "./arena-tag";
|
||||
import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "../modifier/modifier";
|
||||
import { TerrainType } from "./terrain";
|
||||
import { SpeciesFormChangeAbilityTrigger, SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "./pokemon-forms";
|
||||
import { Gender } from "#app/data/gender";
|
||||
import {
|
||||
AttackMove,
|
||||
FlinchAttr,
|
||||
OneHitKOAttr,
|
||||
HitHealAttr,
|
||||
allMoves,
|
||||
StatusMove,
|
||||
SelfStatusMove,
|
||||
VariablePowerAttr,
|
||||
applyMoveAttrs,
|
||||
VariableMoveTypeAttr,
|
||||
RandomMovesetMoveAttr,
|
||||
RandomMoveAttr,
|
||||
NaturePowerAttr,
|
||||
CopyMoveAttr,
|
||||
NeutralDamageAgainstFlyingTypeMultiplierAttr,
|
||||
FixedDamageAttr,
|
||||
} from "#app/data/moves/move";
|
||||
import { ArenaTagSide } from "#app/data/arena-tag";
|
||||
import { BerryModifier, HitHealModifier, PokemonHeldItemModifier } from "#app/modifier/modifier";
|
||||
import { TerrainType } from "#app/data/terrain";
|
||||
import { SpeciesFormChangeAbilityTrigger, SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "#app/data/pokemon-forms";
|
||||
import i18next from "i18next";
|
||||
import type { Localizable } from "#app/interfaces/locales";
|
||||
import { Command } from "../ui/command-ui-handler";
|
||||
import { Command } from "#app/ui/command-ui-handler";
|
||||
import { BerryModifierType } from "#app/modifier/modifier-type";
|
||||
import { getPokeballName } from "./pokeball";
|
||||
import type { BattlerIndex } from "#app/battle";
|
||||
import { getPokeballName } from "#app/data/pokeball";
|
||||
import { BattleType } from "#app/battle";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
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";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import { SwitchType } from "#app/enums/switch-type";
|
||||
import { SwitchPhase } from "#app/phases/switch-phase";
|
||||
import { SwitchSummonPhase } from "#app/phases/switch-summon-phase";
|
||||
import { BattleEndPhase } from "#app/phases/battle-end-phase";
|
||||
import { NewBattlePhase } from "#app/phases/new-battle-phase";
|
||||
import { MoveEndPhase } from "#app/phases/move-end-phase";
|
||||
import { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase";
|
||||
import { allAbilities } from "#app/data/data-lists";
|
||||
import { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr";
|
||||
import { Ability } from "#app/data/abilities/ability-class";
|
||||
|
||||
// Enum imports
|
||||
import { EffectiveStat } from "#app/enums/stat";
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
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 { Abilities } from "#enums/abilities";
|
||||
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 { SwitchType } from "#enums/switch-type";
|
||||
import { MoveFlags } from "#enums/MoveFlags";
|
||||
import { MoveTarget } from "#enums/MoveTarget";
|
||||
import { MoveCategory } from "#enums/MoveCategory";
|
||||
|
||||
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<T extends AbAttr>(attrType: Constructor<T> ): 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<T extends AbAttr>(attrType: Constructor<T>): boolean {
|
||||
return this.attrs.some((attr) => attr instanceof attrType);
|
||||
}
|
||||
|
||||
attr<T extends Constructor<AbAttr>>(AttrType: T, ...args: ConstructorParameters<T>): Ability {
|
||||
const attr = new AttrType(...args);
|
||||
this.attrs.push(attr);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
conditionalAttr<T extends Constructor<AbAttr>>(condition: AbAttrCondition, AttrType: T, ...args: ConstructorParameters<T>): 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;
|
||||
}
|
||||
}
|
||||
|
||||
type AbAttrApplyFunc<TAttr extends AbAttr> = (attr: TAttr, passive: boolean) => void;
|
||||
type AbAttrSuccessFunc<TAttr extends AbAttr> = (attr: TAttr, passive: boolean) => boolean;
|
||||
type AbAttrCondition = (pokemon: Pokemon) => boolean;
|
||||
|
||||
// TODO: Can this be improved?
|
||||
type PokemonAttackCondition = (user: Pokemon | null, target: Pokemon | null, move: Move) => boolean;
|
||||
type PokemonDefendCondition = (target: Pokemon, user: Pokemon, move: Move) => boolean;
|
||||
type PokemonStatStageChangeCondition = (target: Pokemon, statsChanged: BattleStat[], stages: number) => boolean;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
// Type imports
|
||||
import type { Constructor } from "#app/utils";
|
||||
import type { EnemyPokemon, PokemonMove } from "#app/field/pokemon";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import type { Weather } from "#app/data/weather";
|
||||
import type { BattlerTag } from "#app/data/battler-tags";
|
||||
import type { AbAttrCondition, PokemonDefendCondition, PokemonStatStageChangeCondition, PokemonAttackCondition, AbAttrApplyFunc, AbAttrSuccessFunc } from "#app/@types/ability-types";
|
||||
import type { BattlerIndex } from "#app/battle";
|
||||
import type Move from "#app/data/moves/move";
|
||||
import type { ArenaTrapTag, SuppressAbilitiesTag } from "#app/data/arena-tag";
|
||||
|
||||
export class BlockRecoilDamageAttr extends AbAttr {
|
||||
constructor() {
|
||||
|
@ -6335,10 +6183,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)
|
|
@ -18,7 +18,7 @@ import {
|
|||
applyAbAttrs,
|
||||
applyOnGainAbAttrs,
|
||||
applyOnLoseAbAttrs,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import { Stat } from "#enums/stat";
|
||||
import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims";
|
||||
import i18next from "i18next";
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import { globalScene } from "#app/global-scene";
|
||||
import {
|
||||
allAbilities,
|
||||
applyAbAttrs,
|
||||
BlockNonDirectDamageAbAttr,
|
||||
FlinchEffectAbAttr,
|
||||
ProtectStatAbAttr,
|
||||
ConditionalUserFieldProtectStatAbAttr,
|
||||
ReverseDrainAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} 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 {
|
||||
|
|
|
@ -9,7 +9,7 @@ import {
|
|||
ReduceBerryUseThresholdAbAttr,
|
||||
applyAbAttrs,
|
||||
applyPostItemLostAbAttrs,
|
||||
} from "./ability";
|
||||
} from "./abilities/ability";
|
||||
import i18next from "i18next";
|
||||
import { BattlerTagType } from "#enums/battler-tag-type";
|
||||
import { BerryType } from "#enums/berry-type";
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
import type { Ability } from "./abilities/ability-class";
|
||||
|
||||
export const allAbilities: Ability[] = [];
|
|
@ -36,7 +36,6 @@ import { WeatherType } from "#enums/weather-type";
|
|||
import type { ArenaTrapTag } from "../arena-tag";
|
||||
import { ArenaTagSide, WeakenMoveTypeTag } from "../arena-tag";
|
||||
import {
|
||||
allAbilities,
|
||||
AllyMoveCategoryPowerBoostAbAttr,
|
||||
applyAbAttrs,
|
||||
applyPostAttackAbAttrs,
|
||||
|
@ -67,7 +66,8 @@ import {
|
|||
UserFieldMoveTypePowerBoostAbAttr,
|
||||
VariableMovePowerAbAttr,
|
||||
WonderSkinAbAttr,
|
||||
} from "../ability";
|
||||
} from "../abilities/ability";
|
||||
import { allAbilities } from "../data-lists";
|
||||
import {
|
||||
AttackTypeBoosterModifier,
|
||||
BerryModifier,
|
||||
|
|
|
@ -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/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";
|
||||
|
|
|
@ -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/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 */
|
||||
|
|
|
@ -24,7 +24,7 @@ import { PokemonType } from "#enums/pokemon-type";
|
|||
import { BerryType } from "#enums/berry-type";
|
||||
import { Stat } from "#enums/stat";
|
||||
import { SpeciesFormChangeAbilityTrigger } from "#app/data/pokemon-forms";
|
||||
import { applyPostBattleInitAbAttrs, PostBattleInitAbAttr } from "#app/data/ability";
|
||||
import { applyPostBattleInitAbAttrs, PostBattleInitAbAttr } from "#app/data/abilities/ability";
|
||||
import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
||||
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
|
||||
import { PartyHealPhase } from "#app/phases/party-heal-phase";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import type { Ability } from "#app/data/ability";
|
||||
import { allAbilities } from "#app/data/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,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { globalScene } from "#app/global-scene";
|
||||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -6,7 +6,7 @@ import { PokemonType } from "#enums/pokemon-type";
|
|||
import type Move from "./moves/move";
|
||||
import { AttackMove } from "./moves/move";
|
||||
import * as Utils from "../utils";
|
||||
import { SuppressWeatherEffectAbAttr } from "./ability";
|
||||
import { SuppressWeatherEffectAbAttr } from "./abilities/ability";
|
||||
import { TerrainType, getTerrainName } from "./terrain";
|
||||
import i18next from "i18next";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
|
|
|
@ -27,7 +27,7 @@ import {
|
|||
PostTerrainChangeAbAttr,
|
||||
PostWeatherChangeAbAttr,
|
||||
TerrainEventTypeChangeAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import Overrides from "#app/overrides";
|
||||
import { TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEvent } from "#app/events/arena";
|
||||
|
|
|
@ -139,7 +139,8 @@ import {
|
|||
WeakenMoveScreenTag,
|
||||
} from "#app/data/arena-tag";
|
||||
import type { SuppressAbilitiesTag } from "#app/data/arena-tag";
|
||||
import type { Ability, AbAttr } from "#app/data/ability";
|
||||
import type { Ability } from "#app/data/abilities/ability-class";
|
||||
import type { AbAttr } from "#app/data/abilities/ab-attrs/ab-attr";
|
||||
import {
|
||||
StatMultiplierAbAttr,
|
||||
BlockCritAbAttr,
|
||||
|
@ -154,7 +155,6 @@ import {
|
|||
StatusEffectImmunityAbAttr,
|
||||
TypeImmunityAbAttr,
|
||||
WeightMultiplierAbAttr,
|
||||
allAbilities,
|
||||
applyAbAttrs,
|
||||
applyStatMultiplierAbAttrs,
|
||||
applyPreApplyBattlerTagAbAttrs,
|
||||
|
@ -194,7 +194,8 @@ import {
|
|||
applyAllyStatMultiplierAbAttrs,
|
||||
AllyStatMultiplierAbAttr,
|
||||
MoveAbilityBypassAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} 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";
|
||||
|
|
|
@ -11,7 +11,7 @@ import { initEggMoves } from "#app/data/balance/egg-moves";
|
|||
import { initPokemonForms } from "#app/data/pokemon-forms";
|
||||
import { initSpecies } from "#app/data/pokemon-species";
|
||||
import { initMoves } from "#app/data/moves/move";
|
||||
import { initAbilities } from "#app/data/ability";
|
||||
import { initAbilities } from "#app/data/abilities/ability";
|
||||
import { initAchievements } from "#app/system/achv";
|
||||
import { initTrainerTypeDialogue } from "#app/data/dialogue";
|
||||
import { initChallenges } from "#app/data/challenge";
|
||||
|
|
|
@ -47,7 +47,7 @@ import {
|
|||
} from "./modifier-type";
|
||||
import { Color, ShadowColor } from "#enums/color";
|
||||
import { FRIENDSHIP_GAIN_FROM_RARE_CANDY } from "#app/data/balance/starters";
|
||||
import { applyAbAttrs, CommanderAbAttr } from "#app/data/ability";
|
||||
import { applyAbAttrs, CommanderAbAttr } from "#app/data/abilities/ability";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
|
||||
export type ModifierPredicate = (modifier: Modifier) => boolean;
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
import { applyAbAttrs, applyPreLeaveFieldAbAttrs, PreLeaveFieldAbAttr, RunSuccessAbAttr } from "#app/data/ability";
|
||||
import {
|
||||
applyAbAttrs,
|
||||
applyPreLeaveFieldAbAttrs,
|
||||
PreLeaveFieldAbAttr,
|
||||
RunSuccessAbAttr,
|
||||
} from "#app/data/abilities/ability";
|
||||
import { Stat } from "#enums/stat";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import type { PlayerPokemon, EnemyPokemon } from "#app/field/pokemon";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { globalScene } from "#app/global-scene";
|
||||
import { applyPostBattleAbAttrs, PostBattleAbAttr } from "#app/data/ability";
|
||||
import { applyPostBattleAbAttrs, PostBattleAbAttr } from "#app/data/abilities/ability";
|
||||
import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#app/modifier/modifier";
|
||||
import { BattlePhase } from "./battle-phase";
|
||||
import { GameOverPhase } from "./game-over-phase";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { applyAbAttrs, PreventBerryUseAbAttr, HealFromBerryUseAbAttr } from "#app/data/ability";
|
||||
import { applyAbAttrs, PreventBerryUseAbAttr, HealFromBerryUseAbAttr } from "#app/data/abilities/ability";
|
||||
import { CommonAnim } from "#app/data/battle-anims";
|
||||
import { BerryUsedEvent } from "#app/events/battle-scene";
|
||||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { BattlerIndex, BattleType } from "#app/battle";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import { PLAYER_PARTY_MAX_SIZE } from "#app/constants";
|
||||
import { applyAbAttrs, SyncEncounterNatureAbAttr } from "#app/data/ability";
|
||||
import { applyAbAttrs, SyncEncounterNatureAbAttr } from "#app/data/abilities/ability";
|
||||
import { initEncounterAnims, loadEncounterAnimAssets } from "#app/data/battle-anims";
|
||||
import { getCharVariantFromDialogue } from "#app/data/dialogue";
|
||||
import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
||||
|
|
|
@ -8,7 +8,7 @@ import {
|
|||
PostFaintAbAttr,
|
||||
PostKnockOutAbAttr,
|
||||
PostVictoryAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import type { DestinyBondTag, GrudgeTag } from "#app/data/battler-tags";
|
||||
import { BattlerTagLapseType } from "#app/data/battler-tags";
|
||||
import { battleSpecDialogue } from "#app/data/dialogue";
|
||||
|
|
|
@ -14,7 +14,7 @@ import {
|
|||
PostDefendAbAttr,
|
||||
ReflectStatusMoveAbAttr,
|
||||
TypeImmunityAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import { ArenaTagSide, ConditionalProtectTag } from "#app/data/arena-tag";
|
||||
import { MoveAnim } from "#app/data/battle-anims";
|
||||
import {
|
||||
|
|
|
@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene";
|
|||
import { BattlerTagLapseType } from "#app/data/battler-tags";
|
||||
import { PokemonPhase } from "./pokemon-phase";
|
||||
import type { BattlerIndex } from "#app/battle";
|
||||
import { applyPostSummonAbAttrs, PostSummonRemoveEffectAbAttr } from "#app/data/ability";
|
||||
import { applyPostSummonAbAttrs, PostSummonRemoveEffectAbAttr } from "#app/data/abilities/ability";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
|
||||
export class MoveEndPhase extends PokemonPhase {
|
||||
|
|
|
@ -10,7 +10,7 @@ import {
|
|||
PostMoveUsedAbAttr,
|
||||
RedirectMoveAbAttr,
|
||||
ReduceStatusEffectDurationAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import type { DelayedAttackTag } from "#app/data/arena-tag";
|
||||
import { CommonAnim } from "#app/data/battle-anims";
|
||||
import { BattlerTagLapseType, CenterOfAttentionTag } from "#app/data/battler-tags";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { globalScene } from "#app/global-scene";
|
||||
import { applyAbAttrs, PostBiomeChangeAbAttr } from "#app/data/ability";
|
||||
import { applyAbAttrs, PostBiomeChangeAbAttr } from "#app/data/abilities/ability";
|
||||
import { getRandomWeatherType } from "#app/data/weather";
|
||||
import { NextEncounterPhase } from "./next-encounter-phase";
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import type Pokemon from "#app/field/pokemon";
|
|||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import { PokemonPhase } from "./pokemon-phase";
|
||||
import { SpeciesFormChangeStatusEffectTrigger } from "#app/data/pokemon-forms";
|
||||
import { applyPostSetStatusAbAttrs, PostSetStatusAbAttr } from "#app/data/ability";
|
||||
import { applyPostSetStatusAbAttrs, PostSetStatusAbAttr } from "#app/data/abilities/ability";
|
||||
import { isNullOrUndefined } from "#app/utils";
|
||||
|
||||
export class ObtainStatusEffectPhase extends PokemonPhase {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { globalScene } from "#app/global-scene";
|
||||
import { applyAbAttrs, applyPostSummonAbAttrs, CommanderAbAttr, PostSummonAbAttr } from "#app/data/ability";
|
||||
import { applyAbAttrs, applyPostSummonAbAttrs, CommanderAbAttr, PostSummonAbAttr } from "#app/data/abilities/ability";
|
||||
import { ArenaTrapTag } from "#app/data/arena-tag";
|
||||
import { StatusEffect } from "#app/enums/status-effect";
|
||||
import { PokemonPhase } from "./pokemon-phase";
|
||||
|
|
|
@ -7,7 +7,7 @@ import {
|
|||
BlockStatusDamageAbAttr,
|
||||
PostDamageAbAttr,
|
||||
ReduceBurnDamageAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import { CommonBattleAnim, CommonAnim } from "#app/data/battle-anims";
|
||||
import { getStatusEffectActivationText } from "#app/data/status-effect";
|
||||
import { BattleSpec } from "#app/enums/battle-spec";
|
||||
|
|
|
@ -16,7 +16,7 @@ import {
|
|||
ClearTerrainAbAttr,
|
||||
ClearWeatherAbAttr,
|
||||
PostTeraFormChangeStatChangeAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
|
||||
export class QuietFormChangePhase extends BattlePhase {
|
||||
protected pokemon: Pokemon;
|
||||
|
|
|
@ -10,7 +10,7 @@ import {
|
|||
ReflectStatStageChangeAbAttr,
|
||||
StatStageChangeCopyAbAttr,
|
||||
StatStageChangeMultiplierAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import { ArenaTagSide, MistTag } from "#app/data/arena-tag";
|
||||
import type { ArenaTag } from "#app/data/arena-tag";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { globalScene } from "#app/global-scene";
|
||||
import { applyPreSwitchOutAbAttrs, PostDamageForceSwitchAbAttr, PreSwitchOutAbAttr } from "#app/data/ability";
|
||||
import { applyPreSwitchOutAbAttrs, PostDamageForceSwitchAbAttr, PreSwitchOutAbAttr } from "#app/data/abilities/ability";
|
||||
import { allMoves, ForceSwitchOutAttr } from "#app/data/moves/move";
|
||||
import { getPokeballTintColor } from "#app/data/pokeball";
|
||||
import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { applyPostTurnAbAttrs, PostTurnAbAttr } from "#app/data/ability";
|
||||
import { applyPostTurnAbAttrs, PostTurnAbAttr } from "#app/data/abilities/ability";
|
||||
import { BattlerTagLapseType } from "#app/data/battler-tags";
|
||||
import { TerrainType } from "#app/data/terrain";
|
||||
import { WeatherType } from "#app/enums/weather-type";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { applyAbAttrs, BypassSpeedChanceAbAttr, PreventBypassSpeedChanceAbAttr } from "#app/data/ability";
|
||||
import { applyAbAttrs, BypassSpeedChanceAbAttr, PreventBypassSpeedChanceAbAttr } from "#app/data/abilities/ability";
|
||||
import { allMoves, MoveHeaderAttr } from "#app/data/moves/move";
|
||||
import { Abilities } from "#app/enums/abilities";
|
||||
import { Stat } from "#app/enums/stat";
|
||||
|
|
|
@ -7,7 +7,7 @@ import {
|
|||
BlockNonDirectDamageAbAttr,
|
||||
applyPostWeatherLapseAbAttrs,
|
||||
PostWeatherLapseAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import { CommonAnim } from "#app/data/battle-anims";
|
||||
import type { Weather } from "#app/data/weather";
|
||||
import { getWeatherDamageMessage, getWeatherLapseMessage } from "#app/data/weather";
|
||||
|
|
|
@ -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/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";
|
||||
|
|
|
@ -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/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";
|
||||
|
|
|
@ -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/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";
|
||||
|
|
|
@ -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/ability";
|
||||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -22,7 +22,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/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";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { allAbilities } from "#app/data/ability";
|
||||
import { allAbilities } from "#app/data/data-lists";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
import { Moves } from "#enums/moves";
|
||||
import { Species } from "#enums/species";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -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/ability";
|
||||
import { allAbilities } from "#app/data/data-lists";
|
||||
|
||||
describe("Abilities - Flower Veil", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -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/ability";
|
||||
import { allAbilities } from "#app/data/data-lists";
|
||||
import { allMoves } from "#app/data/moves/move";
|
||||
import { MoveCategory } from "#enums/MoveCategory";
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import type { CommandPhase } from "#app/phases/command-phase";
|
||||
import { Command } from "#app/ui/command-ui-handler";
|
||||
import { PostSummonWeatherChangeAbAttr } from "#app/data/ability";
|
||||
import { PostSummonWeatherChangeAbAttr } from "#app/data/abilities/ability";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
import { ArenaTagType } from "#enums/arena-tag-type";
|
||||
import { Moves } from "#enums/moves";
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { allAbilities, BypassSpeedChanceAbAttr } from "#app/data/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";
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { StatMultiplierAbAttr, allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -4,7 +4,7 @@ import {
|
|||
applyPreDefendAbAttrs,
|
||||
IgnoreMoveEffectsAbAttr,
|
||||
MoveEffectChanceMultiplierAbAttr,
|
||||
} from "#app/data/ability";
|
||||
} from "#app/data/abilities/ability";
|
||||
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
||||
import { NumberHolder } from "#app/utils";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import { PostItemLostAbAttr } from "#app/data/ability";
|
||||
import { PostItemLostAbAttr } from "#app/data/abilities/ability";
|
||||
import { allMoves, StealHeldItemChanceAttr } from "#app/data/moves/move";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import type { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { allAbilities } from "#app/data/ability";
|
||||
import { allAbilities } from "#app/data/data-lists";
|
||||
import { Stat } from "#app/enums/stat";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
import { Moves } from "#enums/moves";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import { allAbilities } from "#app/data/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";
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { BattlerIndex } from "#app/battle";
|
||||
import { allAbilities, PostDefendContactApplyStatusEffectAbAttr } from "#app/data/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";
|
||||
|
|
|
@ -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/ability";
|
||||
import { MoveEffectChanceMultiplierAbAttr } from "#app/data/abilities/ability";
|
||||
import { allAbilities } from "#app/data/data-lists";
|
||||
|
||||
describe("Moves - Secret Power", () => {
|
||||
let phaserGame: Phaser.Game;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { SESSION_ID_COOKIE_NAME } from "#app/constants";
|
||||
import { initLoggedInUser } from "#app/account";
|
||||
import { initAbilities } from "#app/data/ability";
|
||||
import { initAbilities } from "#app/data/abilities/ability";
|
||||
import { initBiomes } from "#app/data/balance/biomes";
|
||||
import { initEggMoves } from "#app/data/balance/egg-moves";
|
||||
import { initPokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
||||
|
|
Loading…
Reference in New Issue