diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 130037f7b7..759fcaee92 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3497,8 +3497,9 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c gBattlescriptCurrInstr = battleScript; break; case MOVE_EFFECT_INCINERATE: - if ((gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX) - || (B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(gEffectBattler) == HOLD_EFFECT_GEMS)) + if (((gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX) + || (B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(gEffectBattler) == HOLD_EFFECT_GEMS)) + && battlerAbility != ABILITY_STICKY_HOLD) { gLastUsedItem = gBattleMons[gEffectBattler].item; gBattleMons[gEffectBattler].item = 0; diff --git a/test/battle/ability/sticky_hold.c b/test/battle/ability/sticky_hold.c index d6aee1ee51..b4fb047cbe 100644 --- a/test/battle/ability/sticky_hold.c +++ b/test/battle/ability/sticky_hold.c @@ -16,3 +16,27 @@ SINGLE_BATTLE_TEST("Sticky Hold prevents item theft") } } +SINGLE_BATTLE_TEST("Sticky Hold prevents Incinerate from destroying berries") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_INCINERATE); } + OPPONENT(SPECIES_GASTRODON) { Ability(ABILITY_STICKY_HOLD); Item(ITEM_CHERI_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_INCINERATE); } + } THEN { + EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].item, ITEM_CHERI_BERRY); + } +} + +SINGLE_BATTLE_TEST("Sticky Hold prevents Incinerate from destroying gems") +{ + GIVEN { + WITH_CONFIG(CONFIG_INCINERATE_GEMS, GEN_6); + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_INCINERATE); } + OPPONENT(SPECIES_GASTRODON) { Ability(ABILITY_STICKY_HOLD); Item(ITEM_GHOST_GEM); } + } WHEN { + TURN { MOVE(player, MOVE_INCINERATE); } + } THEN { + EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].item, ITEM_GHOST_GEM); + } +}