From cc6ac23185d38fc19bfdb11a3101617e7be96612 Mon Sep 17 00:00:00 2001 From: surskitty Date: Thu, 18 Dec 2025 23:57:03 -0500 Subject: [PATCH] Fixing crash from Last Resort with Normalium Z in certain damage thresholds (#8583) --- src/battle_ai_util.c | 3 +++ test/battle/ai/gimmick_z_move.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 3bd77f8e19..a9c4b61284 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -5241,6 +5241,9 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) return FALSE; } + if (GetMoveEffect(chosenMove) == EFFECT_LAST_RESORT && !CanUseLastResort(battlerAtk)) + return TRUE; + uq4_12_t effectiveness; struct SimulatedDamage dmg; diff --git a/test/battle/ai/gimmick_z_move.c b/test/battle/ai/gimmick_z_move.c index fcc8d81658..b6432987b7 100644 --- a/test/battle/ai/gimmick_z_move.c +++ b/test/battle/ai/gimmick_z_move.c @@ -47,6 +47,18 @@ AI_SINGLE_BATTLE_TEST("AI uses Z-Moves -- Extreme Evoboost") } } +AI_SINGLE_BATTLE_TEST("AI uses Z-Moves to bypass move limitations") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT ); + ASSUME(GetMoveType(MOVE_QUICK_ATTACK) == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); Moves(MOVE_POUND, MOVE_LAST_RESORT); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_LAST_RESORT, gimmick: GIMMICK_Z_MOVE); } + } +} + AI_SINGLE_BATTLE_TEST("AI uses Z-Moves -- 10,000,000 Volt Thunderbolt") { GIVEN {