Fixes Fling being usable with reusable TMs (#8906)
This commit is contained in:
parent
edaa838a20
commit
dd21d8fae4
@ -9810,6 +9810,7 @@ bool32 CanFling(u32 battler)
|
|||||||
|| (GetConfig(CONFIG_KLUTZ_FLING_INTERACTION) >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ)
|
|| (GetConfig(CONFIG_KLUTZ_FLING_INTERACTION) >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ)
|
||||||
|| gFieldStatuses & STATUS_FIELD_MAGIC_ROOM
|
|| gFieldStatuses & STATUS_FIELD_MAGIC_ROOM
|
||||||
|| gBattleMons[battler].volatiles.embargo
|
|| gBattleMons[battler].volatiles.embargo
|
||||||
|
|| (GetItemTMHMIndex(item) != 0 && GetItemImportance(item) == 1) // don't fling reusable TMs
|
||||||
|| GetFlingPowerFromItemId(item) == 0
|
|| GetFlingPowerFromItemId(item) == 0
|
||||||
|| !CanBattlerGetOrLoseItem(battler, item))
|
|| !CanBattlerGetOrLoseItem(battler, item))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
@ -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 {
|
GIVEN {
|
||||||
ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING);
|
ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING);
|
||||||
|
|||||||
@ -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")
|
SINGLE_BATTLE_TEST("Corrosion badly poisons its Poison/Steel-type user who holds a Toxic Orb")
|
||||||
{
|
|
||||||
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")
|
|
||||||
{
|
{
|
||||||
GIVEN {
|
GIVEN {
|
||||||
ASSUME(gItemsInfo[ITEM_TOXIC_ORB].holdEffect == HOLD_EFFECT_TOXIC_ORB);
|
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;
|
u16 move;
|
||||||
PARAMETRIZE { move = MOVE_TOXIC; }
|
PARAMETRIZE { move = MOVE_TOXIC; }
|
||||||
|
|||||||
@ -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];
|
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_FLING); }
|
||||||
TURN { MOVE(player, MOVE_EGG_BOMB); }
|
TURN { MOVE(player, MOVE_EGG_BOMB); }
|
||||||
} SCENE {
|
} SCENE {
|
||||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, player);
|
if (GetItemImportance(ITEM_TM_EARTHQUAKE) == 0) {
|
||||||
HP_BAR(opponent, captureDamage: &damage[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);
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_EGG_BOMB, player);
|
||||||
HP_BAR(opponent, captureDamage: &damage[1]);
|
HP_BAR(opponent, captureDamage: &damage[1]);
|
||||||
} THEN {
|
} THEN {
|
||||||
EXPECT_EQ(damage[0], damage[1]);
|
if (GetItemImportance(ITEM_TM_EARTHQUAKE) == 0)
|
||||||
}
|
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]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user