From 5b738edd4b234a5d0cb7f46b0d15dff1047c5467 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Sun, 2 Nov 2025 19:31:51 +0000 Subject: [PATCH] Fixes flung items sometimes being blocked by Unnerve (#8114) --- src/battle_hold_effects.c | 7 ++++++- test/battle/move_effect/fling.c | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/battle_hold_effects.c b/src/battle_hold_effects.c index 270cbece62..3d5fd97c95 100644 --- a/src/battle_hold_effects.c +++ b/src/battle_hold_effects.c @@ -1067,7 +1067,12 @@ static enum ItemEffect TrySetMicleBerry(u32 battler, u32 itemId, ActivationTimin enum ItemEffect ItemBattleEffects(u32 itemBattler, u32 battler, enum HoldEffect holdEffect, ActivationTiming timing) { enum ItemEffect effect = ITEM_NO_EFFECT; - u32 item = (timing == IsOnBerryActivation) ? gLastUsedItem : gBattleMons[itemBattler].item; + u32 item; + + if (timing == IsOnBerryActivation || timing == IsOnFlingActivation) + item = gLastUsedItem; + else + item = gBattleMons[itemBattler].item; if (holdEffect == HOLD_EFFECT_NONE || !timing(holdEffect) diff --git a/test/battle/move_effect/fling.c b/test/battle/move_effect/fling.c index 4a3ca4597c..05ccec70a0 100644 --- a/test/battle/move_effect/fling.c +++ b/test/battle/move_effect/fling.c @@ -153,6 +153,23 @@ SINGLE_BATTLE_TEST("Fling - Item is lost when target protects itself") } } +SINGLE_BATTLE_TEST("Fling - Item does not get blocked by Unnerve if it isn't a berry") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_TAUNT) == EFFECT_TAUNT); + PLAYER(SPECIES_CALYREX) { Item(ITEM_MENTAL_HERB); Ability(ABILITY_UNNERVE); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ORAN_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_TAUNT); MOVE(opponent, MOVE_SCRATCH); } + TURN { MOVE(player, MOVE_FLING); MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAUNT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, player); + HP_BAR(opponent); + MESSAGE("The opposing Wobbuffet's Taunt wore off!"); + } +} + SINGLE_BATTLE_TEST("Fling doesn't consume the item if Pokémon is asleep/frozen/paralyzed") { u32 status;