From 955617381f4681b0c6c95e02086afa3a405ccb65 Mon Sep 17 00:00:00 2001 From: Phexi Date: Wed, 14 Jan 2026 18:41:00 +0100 Subject: [PATCH] fix ITEM_NONE being considered a form change item by DoesSpeciesUseHoldItemToChangeForm (#8915) --- src/battle_util.c | 3 +++ test/battle/move_effect/trick.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/battle_util.c b/src/battle_util.c index 883b0a244d..b660c174ce 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9027,6 +9027,9 @@ bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) u32 i; const struct FormChange *formChanges = GetSpeciesFormChanges(species); + if (heldItemId == ITEM_NONE) + return FALSE; + for (i = 0; formChanges != NULL && formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) { enum FormChanges method = formChanges[i].method; diff --git a/test/battle/move_effect/trick.c b/test/battle/move_effect/trick.c index 90eedf01dc..ffd9975bdd 100644 --- a/test/battle/move_effect/trick.c +++ b/test/battle/move_effect/trick.c @@ -183,3 +183,15 @@ SINGLE_BATTLE_TEST("Trick fails if the target is behind a Substitute") EXPECT(opponent->item == ITEM_LUM_BERRY); } } + +SINGLE_BATTLE_TEST("Trick can be used against targets with an active form change that doesn't require items") +{ + GIVEN { + PLAYER(SPECIES_XERNEAS); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ORAN_BERRY); } + } WHEN { + TURN { MOVE(opponent, MOVE_TRICK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK, opponent); + } +}