From 369cf2c3d8735648d32e1c5e2f981ede21a9f604 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Sun, 3 Nov 2024 06:32:52 -0800 Subject: [PATCH] Put missing `null` guards around some uses of `getUserPokemon()` --- src/data/arena-tag.ts | 10 ++++++---- src/data/battler-tags.ts | 5 ++++- src/phases/move-effect-phase.ts | 8 ++++++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 43de6e02dcb..0e08d0225b6 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -313,8 +313,8 @@ export class ConditionalProtectTag extends ArenaTag { * protection effect. * @param arena {@linkcode Arena} The arena containing the protection effect * @param moveId {@linkcode Moves} The move to check against this condition - * @returns `true` if the incoming move's priority is greater than 0. This includes - * moves with modified priorities from abilities (e.g. Prankster) + * @returns `true` if the incoming move's priority is greater than 0. + * This includes moves with modified priorities from abilities (e.g. Prankster) */ const QuickGuardConditionFunc: ProtectConditionFunc = (arena, moveId) => { const move = allMoves[moveId]; @@ -322,9 +322,11 @@ const QuickGuardConditionFunc: ProtectConditionFunc = (arena, moveId) => { const effectPhase = arena.scene.getCurrentPhase(); if (effectPhase instanceof MoveEffectPhase) { - const attacker = effectPhase.getUserPokemon()!; + const attacker = effectPhase.getUserPokemon(); applyMoveAttrs(IncrementMovePriorityAttr, attacker, null, move, priority); - applyAbAttrs(ChangeMovePriorityAbAttr, attacker, null, false, move, priority); + if (attacker) { + applyAbAttrs(ChangeMovePriorityAbAttr, attacker, null, false, move, priority); + } } return priority.value > 0; }; diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index d671c56ab26..678d20bda0a 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -2480,7 +2480,10 @@ export class SubstituteTag extends BattlerTag { onHit(pokemon: Pokemon): void { const moveEffectPhase = pokemon.scene.getCurrentPhase(); if (moveEffectPhase instanceof MoveEffectPhase) { - const attacker = moveEffectPhase.getUserPokemon()!; + const attacker = moveEffectPhase.getUserPokemon(); + if (!attacker) { + return; + } const move = moveEffectPhase.move.getMove(); const firstHit = (attacker.turnData.hitCount === attacker.turnData.hitsLeft); diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts index 37da4c4b937..4c813a881d3 100644 --- a/src/phases/move-effect-phase.ts +++ b/src/phases/move-effect-phase.ts @@ -52,11 +52,11 @@ import { HitHealModifier, PokemonMultiHitModifier, } from "#app/modifier/modifier"; +import { PokemonPhase } from "#app/phases/pokemon-phase"; import { BooleanHolder, executeIf, NumberHolder } from "#app/utils"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; import i18next from "i18next"; -import { PokemonPhase } from "./pokemon-phase"; export class MoveEffectPhase extends PokemonPhase { public move: PokemonMove; @@ -517,7 +517,11 @@ export class MoveEffectPhase extends PokemonPhase { return true; } - const user = this.getUserPokemon()!; // TODO: is this bang correct? + const user = this.getUserPokemon(); + + if (!user) { + return false; + } // Hit check only calculated on first hit for multi-hit moves unless flag is set to check all hits. // However, if an ability with the MaxMultiHitAbAttr, namely Skill Link, is present, act as a normal