Fixes Gulp Missile crash on targets that can be statused (#9179)
This commit is contained in:
parent
1e7208dfca
commit
ce15e5486d
@ -5321,9 +5321,7 @@ BattleScript_GulpMissileNoDmgGorging:
|
|||||||
handleformchange BS_TARGET, 0
|
handleformchange BS_TARGET, 0
|
||||||
playanimation BS_TARGET, B_ANIM_FORM_CHANGE
|
playanimation BS_TARGET, B_ANIM_FORM_CHANGE
|
||||||
waitanimation
|
waitanimation
|
||||||
swapattackerwithtarget
|
seteffectprimary BS_TARGET, BS_ATTACKER, MOVE_EFFECT_PARALYSIS
|
||||||
seteffectprimary BS_ATTACKER, BS_TARGET, MOVE_EFFECT_PARALYSIS
|
|
||||||
swapattackerwithtarget
|
|
||||||
return
|
return
|
||||||
BattleScript_GulpMissileNoSecondEffectGorging:
|
BattleScript_GulpMissileNoSecondEffectGorging:
|
||||||
handleformchange BS_TARGET, 0
|
handleformchange BS_TARGET, 0
|
||||||
@ -5353,7 +5351,7 @@ BattleScript_GulpMissileNoDmgGulping:
|
|||||||
printfromtable gStatDownStringIds
|
printfromtable gStatDownStringIds
|
||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
BattleScript_GulpMissileGulpingEnd:
|
BattleScript_GulpMissileGulpingEnd:
|
||||||
swapattackerwithtarget @ restore the battlers, just in case
|
swapattackerwithtarget
|
||||||
return
|
return
|
||||||
BattleScript_GulpMissileNoSecondEffectGulping:
|
BattleScript_GulpMissileNoSecondEffectGulping:
|
||||||
handleformchange BS_TARGET, 0
|
handleformchange BS_TARGET, 0
|
||||||
|
|||||||
@ -3108,7 +3108,9 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
|||||||
case MOVE_EFFECT_TOXIC:
|
case MOVE_EFFECT_TOXIC:
|
||||||
case MOVE_EFFECT_FROSTBITE:
|
case MOVE_EFFECT_FROSTBITE:
|
||||||
if (IsSafeguardProtected(gBattlerAttacker, gEffectBattler, GetBattlerAbility(gBattlerAttacker)) && !primary)
|
if (IsSafeguardProtected(gBattlerAttacker, gEffectBattler, GetBattlerAbility(gBattlerAttacker)) && !primary)
|
||||||
|
{
|
||||||
gBattlescriptCurrInstr = battleScript;
|
gBattlescriptCurrInstr = battleScript;
|
||||||
|
}
|
||||||
else if (CanSetNonVolatileStatus(
|
else if (CanSetNonVolatileStatus(
|
||||||
gBattlerAttacker,
|
gBattlerAttacker,
|
||||||
gEffectBattler,
|
gEffectBattler,
|
||||||
@ -3116,7 +3118,13 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
|||||||
battlerAbility,
|
battlerAbility,
|
||||||
moveEffect,
|
moveEffect,
|
||||||
CHECK_TRIGGER))
|
CHECK_TRIGGER))
|
||||||
|
{
|
||||||
SetNonVolatileStatus(gEffectBattler, moveEffect, battleScript, TRIGGER_ON_MOVE);
|
SetNonVolatileStatus(gEffectBattler, moveEffect, battleScript, TRIGGER_ON_MOVE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gBattlescriptCurrInstr = battleScript;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case MOVE_EFFECT_CONFUSION:
|
case MOVE_EFFECT_CONFUSION:
|
||||||
if (!CanBeConfused(gEffectBattler)
|
if (!CanBeConfused(gEffectBattler)
|
||||||
|
|||||||
@ -201,3 +201,30 @@ SINGLE_BATTLE_TEST("Gulp Missile triggered by explosion doesn't freeze the game"
|
|||||||
TURN { MOVE(opponent, MOVE_SURF); MOVE(player, MOVE_EXPLOSION); }
|
TURN { MOVE(opponent, MOVE_SURF); MOVE(player, MOVE_EXPLOSION); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SINGLE_BATTLE_TEST("(Gulp Missile) Cramorant in Gorging damages an electric type without paralysing")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_CRAMORANT) { HP(120); MaxHP(250); Ability(ABILITY_GULP_MISSILE); }
|
||||||
|
OPPONENT(SPECIES_EELEKTROSS);
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SURF); MOVE(opponent, MOVE_SCRATCH); }
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, player);
|
||||||
|
HP_BAR(opponent);
|
||||||
|
ABILITY_POPUP(player, ABILITY_GULP_MISSILE);
|
||||||
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
||||||
|
HP_BAR(player);
|
||||||
|
ABILITY_POPUP(player, ABILITY_GULP_MISSILE);
|
||||||
|
HP_BAR(opponent);
|
||||||
|
NONE_OF {
|
||||||
|
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent);
|
||||||
|
STATUS_ICON(opponent, paralysis: TRUE);
|
||||||
|
}
|
||||||
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
|
||||||
|
HP_BAR(opponent);
|
||||||
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
||||||
|
HP_BAR(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user