From 412feb07ca75c074a66ca881c196df58ef6f5a61 Mon Sep 17 00:00:00 2001 From: Bertie690 Date: Wed, 6 Aug 2025 21:05:39 -0400 Subject: [PATCH] Moved function out of file to avoid circ imports --- src/data/moves/move-utils.ts | 26 -------------------------- src/phases/move-effect-phase.ts | 25 +++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/data/moves/move-utils.ts b/src/data/moves/move-utils.ts index 83fbdb62906..241144599e5 100644 --- a/src/data/moves/move-utils.ts +++ b/src/data/moves/move-utils.ts @@ -1,13 +1,8 @@ -import { SemiInvulnerableTag } from "#data/battler-tags"; import { allMoves } from "#data/data-lists"; -// biome-ignore lint/correctness/noUnusedImports: -import type { AbilityId } from "#enums/ability-id"; import type { BattlerIndex } from "#enums/battler-index"; import { BattlerTagType } from "#enums/battler-tag-type"; -import { MoveFlags } from "#enums/move-flags"; import type { MoveId } from "#enums/move-id"; import { MoveTarget } from "#enums/move-target"; -import { isReflected, type MoveUseMode } from "#enums/move-use-mode"; import { PokemonType } from "#enums/pokemon-type"; import type { Pokemon } from "#field/pokemon"; import { applyMoveAttrs } from "#moves/apply-attrs"; @@ -138,24 +133,3 @@ export const frenzyMissFunc: UserMoveConditionFunc = (user: Pokemon, move: Move) return true; }; - -/** - * Check whether a given Move is able to be reflected by either - * {@linkcode MoveId.MAGIC_COAT | Magic Coat} or {@linkcode AbilityId.MAGIC_BOUNCE | Magic Bounce}. - * @param move - The {@linkcode Move} being used - * @param target - The targeted {@linkcode Pokemon} attempting to reflect the move - * @param useMode - The {@linkcode MoveUseMode} dictating how the move was used - * @returns Whether {@linkcode target} can reflect {@linkcode move}. - */ -export function isMoveReflectableBy(move: Move, target: Pokemon, useMode: MoveUseMode): boolean { - return ( - // The move must not have just been reflected - !isReflected(useMode) && - // Reflections cannot occur while semi invulnerable - !target.getTag(SemiInvulnerableTag) && - // Move must be reflectable - move.hasFlag(MoveFlags.REFLECTABLE) && - // target must have a reflection effect active - (!!target.getTag(BattlerTagType.MAGIC_COAT) || target.hasAbilityWithAttr("ReflectStatusMoveAbAttr")) - ); -} diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index a9b2059bfbe..395b0c64d7f 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -18,7 +18,7 @@ import { MoveFlags } from "#enums/move-flags"; import { MoveId } from "#enums/move-id"; import { MoveResult } from "#enums/move-result"; import { MoveTarget } from "#enums/move-target"; -import { MoveUseMode } from "#enums/move-use-mode"; +import { isReflected, MoveUseMode } from "#enums/move-use-mode"; import { PokemonType } from "#enums/pokemon-type"; import type { Pokemon } from "#field/pokemon"; import { @@ -32,7 +32,7 @@ import { } from "#modifiers/modifier"; import { applyFilteredMoveAttrs, applyMoveAttrs } from "#moves/apply-attrs"; import type { Move, MoveAttr } from "#moves/move"; -import { isFieldTargeted, isMoveReflectableBy } from "#moves/move-utils"; +import { isFieldTargeted } from "#moves/move-utils"; import { PokemonPhase } from "#phases/pokemon-phase"; import { DamageAchv } from "#system/achv"; import type { DamageResult } from "#types/damage-result"; @@ -935,3 +935,24 @@ export class MoveEffectPhase extends PokemonPhase { // # endregion Helpers } + +/** + * Check whether a given Move is able to be reflected by either + * {@linkcode MoveId.MAGIC_COAT | Magic Coat} or {@linkcode AbilityId.MAGIC_BOUNCE | Magic Bounce}. + * @param move - The {@linkcode Move} being used + * @param target - The targeted {@linkcode Pokemon} attempting to reflect the move + * @param useMode - The {@linkcode MoveUseMode} dictating how the move was used + * @returns Whether {@linkcode target} can reflect {@linkcode move}. + */ +function isMoveReflectableBy(move: Move, target: Pokemon, useMode: MoveUseMode): boolean { + return ( + // The move must not have just been reflected + !isReflected(useMode) && + // Reflections cannot occur while semi invulnerable + !target.getTag(SemiInvulnerableTag) && + // Move must be reflectable + move.hasFlag(MoveFlags.REFLECTABLE) && + // target must have a reflection effect active + (!!target.getTag(BattlerTagType.MAGIC_COAT) || target.hasAbilityWithAttr("ReflectStatusMoveAbAttr")) + ); +}