diff --git a/src/battle_util.c b/src/battle_util.c index 37280e12b6..bc97de9362 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9810,6 +9810,7 @@ bool32 CanFling(u32 battler) || (GetConfig(CONFIG_KLUTZ_FLING_INTERACTION) >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ) || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM || gBattleMons[battler].volatiles.embargo + || (GetItemTMHMIndex(item) != 0 && GetItemImportance(item) == 1) // don't fling reusable TMs || GetFlingPowerFromItemId(item) == 0 || !CanBattlerGetOrLoseItem(battler, item)) return FALSE; diff --git a/test/battle/ability/cheek_pouch.c b/test/battle/ability/cheek_pouch.c index 0e52ca3fe3..8109dbe17a 100644 --- a/test/battle/ability/cheek_pouch.c +++ b/test/battle/ability/cheek_pouch.c @@ -119,7 +119,7 @@ SINGLE_BATTLE_TEST("Cheek Pouch doesn't activate when using Natural Gift") } } -SINGLE_BATTLE_TEST("Cheek Pouch doesn't activate when using Fling") +SINGLE_BATTLE_TEST("Cheek Pouch doesn't activate when user uses Fling") { GIVEN { ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING); diff --git a/test/battle/ability/corrosion.c b/test/battle/ability/corrosion.c index 75ac0fc4bb..c1e56ac596 100644 --- a/test/battle/ability/corrosion.c +++ b/test/battle/ability/corrosion.c @@ -66,34 +66,7 @@ SINGLE_BATTLE_TEST("Corrosion does not effect poison type damaging moves if the } } -SINGLE_BATTLE_TEST("Corrosion can poison Poison- and Steel-type targets if it uses Fling while holding a Toxic Orb or a Poison Barb") -{ - u16 heldItem; - - PARAMETRIZE { heldItem = ITEM_POISON_BARB; } - PARAMETRIZE { heldItem = ITEM_TOXIC_ORB; } - - GIVEN { - ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING); - ASSUME(gItemsInfo[ITEM_POISON_BARB].holdEffect == HOLD_EFFECT_TYPE_POWER); - ASSUME(gItemsInfo[ITEM_POISON_BARB].secondaryId == TYPE_POISON); - ASSUME(gItemsInfo[ITEM_TOXIC_ORB].holdEffect == HOLD_EFFECT_TOXIC_ORB); - PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); Item(heldItem); } - OPPONENT(SPECIES_ODDISH); - } WHEN { - TURN { MOVE(player, MOVE_FLING); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, player); - HP_BAR(opponent); - ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); - if (heldItem == ITEM_POISON_BARB) - STATUS_ICON(opponent, poison: TRUE); - else - STATUS_ICON(opponent, badPoison: TRUE); - } -} - -SINGLE_BATTLE_TEST("If a Poison- or Steel-type Pokémon with Corrosion holds a Toxic Orb, it will badly poison itself") +SINGLE_BATTLE_TEST("Corrosion badly poisons its Poison/Steel-type user who holds a Toxic Orb") { GIVEN { ASSUME(gItemsInfo[ITEM_TOXIC_ORB].holdEffect == HOLD_EFFECT_TOXIC_ORB); @@ -107,7 +80,7 @@ SINGLE_BATTLE_TEST("If a Poison- or Steel-type Pokémon with Corrosion holds a T } } -SINGLE_BATTLE_TEST("If a Poison- or Steel-type Pokémon with Corrosion poisons a target with Synchronize, Synchronize will not poison Poison- or Steel-type Pokémon") +SINGLE_BATTLE_TEST("Corrosion can poison a target with Synchronize and Synchronize will not poison Poison- or Steel-type Pokémon") { u16 move; PARAMETRIZE { move = MOVE_TOXIC; } diff --git a/test/battle/move_effect/fling.c b/test/battle/move_effect/fling.c index 595938bef5..440d43ccb6 100644 --- a/test/battle/move_effect/fling.c +++ b/test/battle/move_effect/fling.c @@ -507,7 +507,7 @@ SINGLE_BATTLE_TEST("Fling deals damage based on items fling power") } } -SINGLE_BATTLE_TEST("Fling deals damage based on a TM's move power") +SINGLE_BATTLE_TEST("Fling deals damage based on a TM's move power if reusable or fails if breakable") { s16 damage[2]; @@ -520,33 +520,17 @@ SINGLE_BATTLE_TEST("Fling deals damage based on a TM's move power") TURN { MOVE(player, MOVE_FLING); } TURN { MOVE(player, MOVE_EGG_BOMB); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, player); - HP_BAR(opponent, captureDamage: &damage[0]); + if (GetItemImportance(ITEM_TM_EARTHQUAKE) == 0) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, player); + HP_BAR(opponent, captureDamage: &damage[0]); + } else { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, player); + MESSAGE("But it failed!"); + } ANIMATION(ANIM_TYPE_MOVE, MOVE_EGG_BOMB, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { - EXPECT_EQ(damage[0], damage[1]); - } -} - -SINGLE_BATTLE_TEST("Fling deals damage based on a TM's move power") -{ - s16 damage[2]; - - GIVEN { - ASSUME(GetMovePower(MOVE_EARTHQUAKE) == GetMovePower(MOVE_EGG_BOMB)); - ASSUME(!IsSpeciesOfType(SPECIES_WOBBUFFET, TYPE_DARK)); - PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_TM_EARTHQUAKE); } - OPPONENT(SPECIES_HIPPOWDON); - } WHEN { - TURN { MOVE(player, MOVE_FLING); } - TURN { MOVE(player, MOVE_EGG_BOMB); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, player); - HP_BAR(opponent, captureDamage: &damage[0]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_EGG_BOMB, player); - HP_BAR(opponent, captureDamage: &damage[1]); - } THEN { - EXPECT_EQ(damage[0], damage[1]); + if (GetItemImportance(ITEM_TM_EARTHQUAKE) == 0) + EXPECT_EQ(damage[0], damage[1]); } }