diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index d18874794df..8fccea815bc 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -2680,12 +2680,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Applies the results of a move to this pokemon * @param source The {@linkcode Pokemon} using the move * @param move The {@linkcode Move} being used - * @param moveCategory the {@linkcode MoveCategory} of the move used * @returns The {@linkcode HitResult} of the attack */ - apply(source: Pokemon, move: Move, moveCategory: MoveCategory): HitResult { + apply(source: Pokemon, move: Move): HitResult { const defendingSide = this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - if (moveCategory === MoveCategory.STATUS) { + const moveCategory = new Utils.NumberHolder(move.category); + applyMoveAttrs(VariableMoveCategoryAttr, source, this, move, moveCategory); + if (moveCategory.value === MoveCategory.STATUS) { const cancelled = new Utils.BooleanHolder(false); const typeMultiplier = this.getMoveEffectiveness(source, move, false, false, cancelled); diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index 34e03605bff..b2d429a4313 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -4,7 +4,7 @@ import { applyPreAttackAbAttrs, AddSecondStrikeAbAttr, IgnoreMoveEffectsAbAttr, import { ArenaTagSide, ConditionalProtectTag } from "#app/data/arena-tag"; import { MoveAnim } from "#app/data/battle-anims"; import { BattlerTagLapseType, DamageProtectedTag, ProtectedTag, SemiInvulnerableTag, SubstituteTag } from "#app/data/battler-tags"; -import { MoveTarget, applyMoveAttrs, OverrideMoveEffectAttr, MultiHitAttr, AttackMove, FixedDamageAttr, VariableTargetAttr, MissEffectAttr, MoveFlags, applyFilteredMoveAttrs, MoveAttr, MoveEffectAttr, MoveEffectTrigger, ChargeAttr, MoveCategory, NoEffectAttr, HitsTagAttr, ToxicAccuracyAttr, VariableMoveCategoryAttr } from "#app/data/move"; +import { MoveTarget, applyMoveAttrs, OverrideMoveEffectAttr, MultiHitAttr, AttackMove, FixedDamageAttr, VariableTargetAttr, MissEffectAttr, MoveFlags, applyFilteredMoveAttrs, MoveAttr, MoveEffectAttr, MoveEffectTrigger, ChargeAttr, MoveCategory, NoEffectAttr, HitsTagAttr, ToxicAccuracyAttr } from "#app/data/move"; import { SpeciesFormChangePostMoveTrigger } from "#app/data/pokemon-forms"; import { BattlerTagType } from "#app/enums/battler-tag-type"; import { Moves } from "#app/enums/moves"; @@ -192,9 +192,7 @@ export class MoveEffectPhase extends PokemonPhase { * made visible to the user until the resulting {@linkcode DamagePhase} * is invoked. */ - const moveCategory = new Utils.NumberHolder(move.category); - applyMoveAttrs(VariableMoveCategoryAttr, user, target, move, moveCategory); - const hitResult = !isProtected ? target.apply(user, move, moveCategory.value) : HitResult.NO_EFFECT; + const hitResult = !isProtected ? target.apply(user, move) : HitResult.NO_EFFECT; /** Does {@linkcode hitResult} indicate that damage was dealt to the target? */ const dealsDamage = [ diff --git a/src/test/abilities/sheer_force.test.ts b/src/test/abilities/sheer_force.test.ts index 8c6556b9d78..a3add0a9964 100644 --- a/src/test/abilities/sheer_force.test.ts +++ b/src/test/abilities/sheer_force.test.ts @@ -165,7 +165,7 @@ describe("Abilities - Sheer Force", () => { applyAbAttrs(MoveEffectChanceMultiplierAbAttr, user, null, false, chance, move, target, false); applyPreAttackAbAttrs(MovePowerBoostAbAttr, user, target, move, false, power); - applyPostDefendAbAttrs(PostDefendTypeChangeAbAttr, target, user, move, target.apply(user, move, move.category)); + applyPostDefendAbAttrs(PostDefendTypeChangeAbAttr, target, user, move, target.apply(user, move)); expect(chance.value).toBe(0); expect(power.value).toBe(move.power * 5461 / 4096);