diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 7abeade1da..043a7fbd24 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -5321,9 +5321,7 @@ BattleScript_GulpMissileNoDmgGorging: handleformchange BS_TARGET, 0 playanimation BS_TARGET, B_ANIM_FORM_CHANGE waitanimation - swapattackerwithtarget - seteffectprimary BS_ATTACKER, BS_TARGET, MOVE_EFFECT_PARALYSIS - swapattackerwithtarget + seteffectprimary BS_TARGET, BS_ATTACKER, MOVE_EFFECT_PARALYSIS return BattleScript_GulpMissileNoSecondEffectGorging: handleformchange BS_TARGET, 0 @@ -5353,7 +5351,7 @@ BattleScript_GulpMissileNoDmgGulping: printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_GulpMissileGulpingEnd: - swapattackerwithtarget @ restore the battlers, just in case + swapattackerwithtarget return BattleScript_GulpMissileNoSecondEffectGulping: handleformchange BS_TARGET, 0 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index fbf4486689..77464b1751 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3108,7 +3108,9 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c case MOVE_EFFECT_TOXIC: case MOVE_EFFECT_FROSTBITE: if (IsSafeguardProtected(gBattlerAttacker, gEffectBattler, GetBattlerAbility(gBattlerAttacker)) && !primary) + { gBattlescriptCurrInstr = battleScript; + } else if (CanSetNonVolatileStatus( gBattlerAttacker, gEffectBattler, @@ -3116,7 +3118,13 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c battlerAbility, moveEffect, CHECK_TRIGGER)) + { SetNonVolatileStatus(gEffectBattler, moveEffect, battleScript, TRIGGER_ON_MOVE); + } + else + { + gBattlescriptCurrInstr = battleScript; + } break; case MOVE_EFFECT_CONFUSION: if (!CanBeConfused(gEffectBattler) diff --git a/test/battle/ability/gulp_missile.c b/test/battle/ability/gulp_missile.c index 5a3266ff17..89c6d904db 100644 --- a/test/battle/ability/gulp_missile.c +++ b/test/battle/ability/gulp_missile.c @@ -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); } } } + +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); + } +}