Fix emergency exit not triggering properly during wild battles (#8037)
This commit is contained in:
parent
a9486a5521
commit
6faf35dde9
@ -311,13 +311,12 @@ static bool32 HandleEndTurnEmergencyExit(u32 battler)
|
||||
&& IsBattlerAlive(battler)
|
||||
&& (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
|
||||
&& !(gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
&& CountUsablePartyMons(battler) > 0
|
||||
&& gBattleMons[battler].volatiles.semiInvulnerable != STATE_SKY_DROP) // Not currently held by Sky Drop
|
||||
{
|
||||
gBattlerAbility = battler;
|
||||
gLastUsedAbility = ability;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || IsOnPlayerSide(battler))
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
BattleScriptExecute(BattleScript_EmergencyExitEnd2);
|
||||
else
|
||||
BattleScriptExecute(BattleScript_EmergencyExitWildEnd2);
|
||||
|
||||
@ -1079,7 +1079,6 @@ bool32 EmergencyExitCanBeTriggered(u32 battler)
|
||||
&& HadMoreThanHalfHpNowDoesnt(battler)
|
||||
&& (CanBattlerSwitch(battler) || !(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
|
||||
&& !(gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
&& CountUsablePartyMons(battler) > 0
|
||||
&& gBattleMons[battler].volatiles.semiInvulnerable != STATE_SKY_DROP)
|
||||
return TRUE;
|
||||
|
||||
@ -6696,7 +6695,7 @@ static void Cmd_moveend(void)
|
||||
effect = TRUE;
|
||||
gBattleScripting.battler = battler;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || IsOnPlayerSide(battler))
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
BattleScriptCall(BattleScript_EmergencyExit);
|
||||
else
|
||||
BattleScriptCall(BattleScript_EmergencyExitWild);
|
||||
|
||||
@ -108,3 +108,69 @@ SINGLE_BATTLE_TEST("Emergency Exit activates when taking residual damage and fal
|
||||
ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT);
|
||||
}
|
||||
}
|
||||
|
||||
WILD_BATTLE_TEST("Emergency Exit makes the pokemon flee during wild battle")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); };
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SUPER_FANG);}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPER_FANG, player);
|
||||
HP_BAR(opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT);
|
||||
} THEN {
|
||||
EXPECT_EQ(gBattleOutcome, B_OUTCOME_MON_TELEPORTED);
|
||||
}
|
||||
}
|
||||
|
||||
WILD_BATTLE_TEST("Emergency Exit activates when taking residual damage and falling under 50% max-hp (wild battle)")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); Status1(STATUS1_BURN); };
|
||||
} WHEN {
|
||||
TURN { }
|
||||
} SCENE {
|
||||
HP_BAR(opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT);
|
||||
} THEN {
|
||||
EXPECT_EQ(gBattleOutcome, B_OUTCOME_MON_TELEPORTED);
|
||||
}
|
||||
}
|
||||
|
||||
WILD_BATTLE_TEST("Emergency Exit makes the player ran during wild battle")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); };
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SUPER_FANG);}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPER_FANG, opponent);
|
||||
HP_BAR(player);
|
||||
ABILITY_POPUP(player, ABILITY_EMERGENCY_EXIT);
|
||||
} THEN {
|
||||
EXPECT_EQ(gBattleOutcome, B_OUTCOME_PLAYER_TELEPORTED);
|
||||
}
|
||||
}
|
||||
|
||||
WILD_BATTLE_TEST("Emergency Exit activates when taking residual damage and falling under 50% max-hp (wild battle player side)")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); };
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SANDSTORM);}
|
||||
} SCENE {
|
||||
HP_BAR(player);
|
||||
ABILITY_POPUP(player, ABILITY_EMERGENCY_EXIT);
|
||||
} THEN {
|
||||
EXPECT_EQ(gBattleOutcome, B_OUTCOME_PLAYER_TELEPORTED);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user