Fixes Neutralizing Gas / Intim interaction freezing the game (#4668)

This commit is contained in:
Alex 2024-05-31 00:08:04 +02:00 committed by GitHub
parent 8d58564569
commit f6e00303b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 27 additions and 9 deletions

View File

@ -5775,7 +5775,7 @@ BattleScript_PrintFullBox::
BattleScript_ActionSwitch::
hpthresholds2 BS_ATTACKER
copybyte sSAVED_BATTLER, gBattlerAttacker
saveattacker
printstring STRINGID_RETURNMON
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_PursuitSwitchDmgSetMultihit
setmultihit 1
@ -5793,7 +5793,7 @@ BattleScript_DoSwitchOut::
switchoutabilities BS_ATTACKER
updatedynamax
waitstate
copybyte gBattlerAttacker, sSAVED_BATTLER
restoreattacker
returnatktoball
waitstate
drawpartystatussummary BS_ATTACKER
@ -7820,7 +7820,7 @@ BattleScript_TryIntimidateHoldEffectsRet:
return
BattleScript_IntimidateActivates::
copybyte sSAVED_BATTLER, gBattlerTarget
savetarget
.if B_ABILITY_POP_UP == TRUE
showabilitypopup BS_ATTACKER
pause B_WAIT_TIME_LONG
@ -7858,7 +7858,7 @@ BattleScript_IntimidateLoopIncrement:
BattleScript_IntimidateEnd:
copybyte sBATTLER, gBattlerAttacker
destroyabilitypopup
copybyte gBattlerTarget, sSAVED_BATTLER
restoretarget
pause B_WAIT_TIME_MED
end3
@ -7891,7 +7891,7 @@ BattleScript_IntimidateInReverse:
goto BattleScript_IntimidateLoopIncrement
BattleScript_SupersweetSyrupActivates::
copybyte sSAVED_BATTLER, gBattlerTarget
savetarget
.if B_ABILITY_POP_UP == TRUE
showabilitypopup BS_ATTACKER
pause B_WAIT_TIME_LONG
@ -7924,7 +7924,7 @@ BattleScript_SupersweetSyrupLoopIncrement:
BattleScript_SupersweetSyrupEnd:
copybyte sBATTLER, gBattlerAttacker
destroyabilitypopup
copybyte gBattlerTarget, sSAVED_BATTLER
restoretarget
pause B_WAIT_TIME_MED
end3

View File

@ -107,9 +107,9 @@ SINGLE_BATTLE_TEST("Intimidate and Eject Button force the opponent to Attack")
OPPONENT(SPECIES_HITMONTOP) { Moves(MOVE_TACKLE); }
} WHEN {
TURN {
MOVE(player, MOVE_QUICK_ATTACK);
MOVE(opponent, MOVE_TACKLE);
SEND_OUT(opponent, 1);
MOVE(player, MOVE_QUICK_ATTACK);
MOVE(opponent, MOVE_TACKLE);
SEND_OUT(opponent, 1);
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player);
@ -210,3 +210,21 @@ SINGLE_BATTLE_TEST("Intimidate can not further lower opponents Atk stat if it is
EXPECT_EQ(player->statStages[STAT_ATK], MIN_STAT_STAGE);
}
}
SINGLE_BATTLE_TEST("Intimidate activates when it's no longer effected by Neutralizing Gas")
{
GIVEN {
PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); }
} WHEN {
TURN { SWITCH(player, 1); }
} SCENE {
ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
MESSAGE("Neutralizing Gas filled the area!");
MESSAGE("Weezing, that's enough! Come back!");
MESSAGE("The effects of Neutralizing Gas wore off!");
ABILITY_POPUP(opponent, ABILITY_INTIMIDATE);
MESSAGE("Go! Wobbuffet!");
}
}