diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index eca9c3209f..7cbbb29e9b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2069,7 +2069,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || !CanBattlerGetOrLoseItem(battlerAtk, aiData->items[battlerDef]) || !CanBattlerGetOrLoseItem(battlerDef, aiData->items[battlerDef]) || !CanBattlerGetOrLoseItem(battlerDef, gBattleMons[battlerAtk].item) - || aiData->abilities[battlerAtk] == ABILITY_STICKY_HOLD || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD || DoesSubstituteBlockMove(battlerAtk, battlerDef, move)) ADJUST_SCORE(-10); @@ -2470,7 +2469,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || aiData->items[battlerDef] != ITEM_NONE || !CanBattlerGetOrLoseItem(battlerAtk, gBattleMons[battlerAtk].item) // AI knows its own item || !CanBattlerGetOrLoseItem(battlerDef, gBattleMons[battlerAtk].item) - || aiData->abilities[battlerAtk] == ABILITY_STICKY_HOLD || DoesSubstituteBlockMove(battlerAtk, battlerDef, move)) ADJUST_SCORE(-10); break; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index e053aa31f5..35ebed187d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12717,10 +12717,6 @@ static void Cmd_tryswapitems(void) gBattlescriptCurrInstr = cmd->failInstr; } // check if ability prevents swapping - else if (GetBattlerAbility(gBattlerAttacker) == ABILITY_STICKY_HOLD) - { - gBattlescriptCurrInstr = cmd->failInstr; - } else if (GetBattlerAbility(gBattlerTarget) == ABILITY_STICKY_HOLD) { gBattlescriptCurrInstr = BattleScript_StickyHoldActivates; @@ -17479,7 +17475,6 @@ void BS_TryBestow(void) || gBattleMons[gBattlerTarget].item != ITEM_NONE || !CanBattlerGetOrLoseItem(gBattlerAttacker, gBattleMons[gBattlerAttacker].item) || !CanBattlerGetOrLoseItem(gBattlerTarget, gBattleMons[gBattlerAttacker].item) - || GetBattlerAbility(gBattlerAttacker) == ABILITY_STICKY_HOLD || gWishFutureKnock.knockedOffMons[GetBattlerSide(gBattlerTarget)] & (1u << gBattlerPartyIndexes[gBattlerTarget])) { gBattlescriptCurrInstr = cmd->failInstr; diff --git a/test/battle/ai/ai_doubles.c b/test/battle/ai/ai_doubles.c index f1edc31fbb..8edfea9ee1 100644 --- a/test/battle/ai/ai_doubles.c +++ b/test/battle/ai/ai_doubles.c @@ -96,23 +96,16 @@ AI_DOUBLE_BATTLE_TEST("AI skips Trick/Bestow with unexchangeable items") } } -AI_DOUBLE_BATTLE_TEST("AI skips Trick/Bestow around Sticky Hold") +AI_DOUBLE_BATTLE_TEST("AI skips Trick around Sticky Hold") { - u16 move = MOVE_NONE, atkItem = ITEM_ORAN_BERRY, targetItem = ITEM_NONE; - enum Ability atkAbility = ABILITY_PRESSURE, targetAbility = ABILITY_PRESSURE; - - PARAMETRIZE { move = MOVE_TRICK; atkAbility = ABILITY_STICKY_HOLD; targetAbility = ABILITY_PRESSURE; targetItem = ITEM_LEFTOVERS; } - PARAMETRIZE { move = MOVE_TRICK; atkAbility = ABILITY_PRESSURE; targetAbility = ABILITY_STICKY_HOLD; targetItem = ITEM_LEFTOVERS; } - PARAMETRIZE { move = MOVE_BESTOW; atkAbility = ABILITY_STICKY_HOLD; targetAbility = ABILITY_PRESSURE; targetItem = ITEM_NONE; } - GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); - PLAYER(SPECIES_WOBBUFFET) { Ability(targetAbility); Item(targetItem); } + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_STICKY_HOLD); Item(ITEM_LEFTOVERS); } PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Ability(atkAbility); Item(atkItem); Moves(move, MOVE_SCRATCH); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); Item(ITEM_ORAN_BERRY); Moves(MOVE_TRICK, MOVE_SCRATCH); } OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE); } } WHEN { - TURN { NOT_EXPECT_MOVE(opponentLeft, move); } + TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_TRICK); } } } diff --git a/test/battle/move_effect/bestow.c b/test/battle/move_effect/bestow.c index 9d7bc9ca5c..7017ede805 100644 --- a/test/battle/move_effect/bestow.c +++ b/test/battle/move_effect/bestow.c @@ -92,7 +92,7 @@ SINGLE_BATTLE_TEST("Bestow fails if the user's held item is a Z-Crystal") } } -SINGLE_BATTLE_TEST("Bestow fails if the user has Sticky Hold") +SINGLE_BATTLE_TEST("Bestow doesn't fail if the user has Sticky Hold") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_STICKY_HOLD); Item(ITEM_SITRUS_BERRY); } @@ -100,10 +100,10 @@ SINGLE_BATTLE_TEST("Bestow fails if the user has Sticky Hold") } WHEN { TURN { MOVE(player, MOVE_BESTOW); } } SCENE { - MESSAGE("But it failed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BESTOW, player); } THEN { - EXPECT(player->item == ITEM_SITRUS_BERRY); - EXPECT(opponent->item == ITEM_NONE); + EXPECT(player->item == ITEM_NONE); + EXPECT(opponent->item == ITEM_SITRUS_BERRY); } } diff --git a/test/battle/move_effect/trick.c b/test/battle/move_effect/trick.c index b7a75cd188..90eedf01dc 100644 --- a/test/battle/move_effect/trick.c +++ b/test/battle/move_effect/trick.c @@ -139,7 +139,7 @@ SINGLE_BATTLE_TEST("Trick fails if an item changes the holder's form") } } -SINGLE_BATTLE_TEST("Trick fails if the user has Sticky Hold") +SINGLE_BATTLE_TEST("Trick doesn't fail if the user has Sticky Hold") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_STICKY_HOLD); Item(ITEM_SITRUS_BERRY); } @@ -147,10 +147,10 @@ SINGLE_BATTLE_TEST("Trick fails if the user has Sticky Hold") } WHEN { TURN { MOVE(player, MOVE_TRICK); } } SCENE { - MESSAGE("But it failed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK, player); } THEN { - EXPECT(player->item == ITEM_SITRUS_BERRY); - EXPECT(opponent->item == ITEM_LUM_BERRY); + EXPECT(player->item == ITEM_LUM_BERRY); + EXPECT(opponent->item == ITEM_SITRUS_BERRY); } }