Fixes various battler corruption during switch in ability activation (#7352)

This commit is contained in:
Alex 2025-07-18 12:28:00 +02:00 committed by GitHub
parent 19c9aa508d
commit 705f194d98
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 70 additions and 88 deletions

View File

@ -424,8 +424,8 @@ B_TRAINER1_NAME_WITH_CLASS = FD 42
B_TRAINER2_NAME_WITH_CLASS = FD 43
B_PARTNER_NAME_WITH_CLASS = FD 44
B_ATK_TRAINER_NAME_WITH_CLASS = FD 45
B_SCR_TEAM1 = FD 46
B_SCR_TEAM2 = FD 47
B_EFF_TEAM1 = FD 46
B_EFF_TEAM2 = FD 47
@ indicates the end of a town/city name (before " TOWN" or " CITY")
NAME_END = FC 00

View File

@ -6763,51 +6763,40 @@ BattleScript_UltraBurst::
end3
BattleScript_GulpMissileFormChange::
call BattleScript_AttackerFormChange
call BattleScript_BattlerFormChange
goto BattleScript_FromTwoTurnMovesSecondTurnRet
BattleScript_AttackerFormChange::
BattleScript_BattlerFormChange::
pause 5
copybyte gBattlerAbility, gBattlerAttacker
call BattleScript_AbilityPopUp
call BattleScript_AbilityPopUpScripting
flushtextbox
BattleScript_AttackerFormChangeNoPopup::
handleformchange BS_ATTACKER, 0
handleformchange BS_ATTACKER, 1
playanimation BS_ATTACKER, B_ANIM_FORM_CHANGE
BattleScript_BattlerFormChangeNoPopup:
handleformchange BS_SCRIPTING, 0
handleformchange BS_SCRIPTING, 1
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
waitanimation
handleformchange BS_ATTACKER, 2
handleformchange BS_SCRIPTING, 2
return
BattleScript_AttackerFormChangeEnd3::
call BattleScript_AttackerFormChange
BattleScript_BattlerFormChangeEnd3::
call BattleScript_BattlerFormChange
end3
BattleScript_AttackerFormChangeEnd3NoPopup::
call BattleScript_AttackerFormChangeNoPopup
BattleScript_BattlerFormChangeEnd3NoPopup::
call BattleScript_BattlerFormChangeNoPopup
end3
BattleScript_AttackerFormChangeWithString::
BattleScript_BattlerFormChangeWithStringEnd3::
pause 5
copybyte gBattlerAbility, gBattlerAttacker
call BattleScript_AbilityPopUp
call BattleScript_AbilityPopUpScripting
flushtextbox
BattleScript_AttackerFormChangeWithStringNoPopup::
handleformchange BS_ATTACKER, 0
handleformchange BS_ATTACKER, 1
playanimation BS_ATTACKER, B_ANIM_FORM_CHANGE
handleformchange BS_SCRIPTING, 0
handleformchange BS_SCRIPTING, 1
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
waitanimation
handleformchange BS_ATTACKER, 2
handleformchange BS_SCRIPTING, 2
printstring STRINGID_PKMNTRANSFORMED
waitmessage B_WAIT_TIME_LONG
return
BattleScript_AttackerFormChangeWithStringEnd3::
call BattleScript_AttackerFormChangeWithString
end3
BattleScript_AttackerFormChangeWithStringEnd3NoPopup::
call BattleScript_AttackerFormChangeWithStringNoPopup
end3
BattleScript_AttackerFormChangeMoveEffect::
@ -6873,19 +6862,6 @@ BattleScript_TargetFormChangeWithStringNoPopup::
waitmessage B_WAIT_TIME_LONG
return
BattleScript_BattlerFormChangeWithStringEnd3::
pause 5
call BattleScript_AbilityPopUpScripting
flushtextbox
handleformchange BS_SCRIPTING, 0
handleformchange BS_SCRIPTING, 1
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE, NULL
waitanimation
handleformchange BS_SCRIPTING, 2
printstring STRINGID_PKMNTRANSFORMED
waitmessage B_WAIT_TIME_LONG
end3
BattleScript_IllusionOffAndTerastallization::
call BattleScript_IllusionOff
goto BattleScript_Terastallization
@ -7620,11 +7596,7 @@ BattleScript_TryIntimidateHoldEffectsRet:
BattleScript_IntimidateActivates::
savetarget
.if B_ABILITY_POP_UP == TRUE
showabilitypopup BS_ATTACKER
pause B_WAIT_TIME_LONG
destroyabilitypopup
.endif
call BattleScript_AbilityPopUp
setbyte gBattlerTarget, 0
BattleScript_IntimidateLoop:
jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_IntimidateLoopIncrement
@ -7655,6 +7627,7 @@ BattleScript_IntimidateLoopIncrement:
copybyte sBATTLER, gBattlerAttacker
destroyabilitypopup
restoretarget
restoreattacker
pause B_WAIT_TIME_MED
tryintimidateejectpack
end3
@ -7689,11 +7662,7 @@ BattleScript_IntimidateInReverse::
BattleScript_SupersweetSyrupActivates::
savetarget
.if B_ABILITY_POP_UP == TRUE
showabilitypopup BS_ATTACKER
pause B_WAIT_TIME_LONG
destroyabilitypopup
.endif
call BattleScript_AbilityPopUp
printstring STRINGID_SUPERSWEETAROMAWAFTS
waitmessage B_WAIT_TIME_LONG
setbyte gBattlerTarget, 0
@ -7721,6 +7690,7 @@ BattleScript_SupersweetSyrupLoopIncrement:
copybyte sBATTLER, gBattlerAttacker
destroyabilitypopup
restoretarget
restoreattacker
pause B_WAIT_TIME_MED
tryintimidateejectpack
end3
@ -7877,8 +7847,8 @@ BattleScript_HospitalityActivates::
printstring STRINGID_HOSPITALITYRESTORATION
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_TARGET
datahpupdate BS_TARGET
healthbarupdate BS_EFFECT_BATTLER
datahpupdate BS_EFFECT_BATTLER
end3
BattleScript_AttackWeakenedByStrongWinds::
@ -8345,6 +8315,7 @@ BattleScript_FellStingerRaisesAtkEnd:
BattleScript_AttackerAbilityStatRaiseEnd3::
call BattleScript_AttackerAbilityStatRaise
restoreattacker
end3
BattleScript_SwitchInAbilityMsg::
@ -8395,6 +8366,8 @@ BattleScript_ImposterActivates::
waitanimation
printstring STRINGID_IMPOSTERTRANSFORM
waitmessage B_WAIT_TIME_LONG
restoreattacker
restoretarget
end3
BattleScript_HurtAttacker:
@ -9495,6 +9468,7 @@ BattleScript_PastelVeilLoopIncrement:
setallytonexttarget BattleScript_PastelVeil_TryCurePoison
goto BattleScript_PastelVeilEnd
BattleScript_PastelVeilEnd:
restoretarget
end3
BattleScript_NeutralizingGasExits::

View File

@ -84,8 +84,8 @@
#define B_TXT_TRAINER2_NAME_WITH_CLASS 0x43
#define B_TXT_PARTNER_NAME_WITH_CLASS 0x44
#define B_TXT_ATK_TRAINER_NAME_WITH_CLASS 0x45
#define B_TXT_SCR_TEAM1 0x46
#define B_TXT_SCR_TEAM2 0x47
#define B_TXT_EFF_TEAM1 0x46
#define B_TXT_EFF_TEAM2 0x47
#define B_BUFF_STRING 0
#define B_BUFF_NUMBER 1

View File

@ -374,10 +374,10 @@ extern const u8 BattleScript_IllusionOffEnd3[];
extern const u8 BattleScript_IllusionOffAndTerastallization[];
extern const u8 BattleScript_DancerActivates[];
extern const u8 BattleScript_AftermathDmg[];
extern const u8 BattleScript_AttackerFormChange[];
extern const u8 BattleScript_AttackerFormChangeEnd3[];
extern const u8 BattleScript_BattlerFormChange[];
extern const u8 BattleScript_BattlerFormChangeEnd3[];
extern const u8 BattleScript_AttackerFormChangeWithString[];
extern const u8 BattleScript_AttackerFormChangeWithStringEnd3[];
extern const u8 BattleScript_BattlerFormChangeWithStringEnd3[];
extern const u8 BattleScript_TargetFormChange[];
extern const u8 BattleScript_AnticipationActivates[];
extern const u8 BattleScript_SlowStartEnds[];
@ -449,7 +449,7 @@ extern const u8 BattleScript_WanderingSpiritActivates[];
extern const u8 BattleScript_MirrorArmorReflect[];
extern const u8 BattleScript_GooeyActivates[];
extern const u8 BattleScript_PastelVeilActivates[];
extern const u8 BattleScript_AttackerFormChangeEnd3NoPopup[];
extern const u8 BattleScript_BattlerFormChangeEnd3NoPopup[];
extern const u8 BattleScript_AttackerFormChangeWithStringEnd3NoPopup[];
extern const u8 BattleScript_AttackerFormChangeMoveEffect[];
extern const u8 BattleScript_BothCanNoLongerEscape[];

View File

@ -319,7 +319,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNENDUREDHIT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} endured the hit!"),
[STRINGID_MAGNITUDESTRENGTH] = COMPOUND_STRING("Magnitude {B_BUFF1}!"),
[STRINGID_PKMNCUTHPMAXEDATTACK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cut its own HP and maximized its Attack!"),
[STRINGID_PKMNCOPIEDSTATCHANGES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} copied {B_DEF_NAME_WITH_PREFIX2}'s stat changes!"),
[STRINGID_PKMNCOPIEDSTATCHANGES] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} copied {B_EFF_NAME_WITH_PREFIX2}'s stat changes!"),
[STRINGID_PKMNGOTFREE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} got free of {B_DEF_NAME_WITH_PREFIX2}'s {B_BUFF1}!"), //not in gen 5+, generic rapid spin?
[STRINGID_PKMNSHEDLEECHSEED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} shed Leech Seed!"), //not in gen 5+, generic rapid spin?
[STRINGID_PKMNBLEWAWAYSPIKES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} blew away Spikes!"), //not in gen 5+, generic rapid spin?
@ -629,13 +629,13 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_ICEBODYHPGAIN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} healed it a little bit!"), //don't think this message is displayed anymore
[STRINGID_SNOWWARNINGHAIL] = COMPOUND_STRING("It started to hail!"),
[STRINGID_FRISKACTIVATES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX2} and found its {B_LAST_ITEM}!"),
[STRINGID_UNNERVEENTERS] = COMPOUND_STRING("{B_DEF_TEAM1} team is too nervous to eat Berries!"),
[STRINGID_UNNERVEENTERS] = COMPOUND_STRING("{B_EFF_TEAM1} team is too nervous to eat Berries!"),
[STRINGID_HARVESTBERRY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} harvested its {B_LAST_ITEM}!"),
[STRINGID_MAGICBOUNCEACTIVATES] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} bounced the {B_ATK_NAME_WITH_PREFIX2} back!"),
[STRINGID_PROTEANTYPECHANGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} transformed it into the {B_BUFF1} type!"),
[STRINGID_SYMBIOSISITEMPASS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} passed its {B_LAST_ITEM} to {B_EFF_NAME_WITH_PREFIX2} through {B_LAST_ABILITY}!"),
[STRINGID_STEALTHROCKDMG] = COMPOUND_STRING("Pointed stones dug into {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_TOXICSPIKESABSORBED] = COMPOUND_STRING("The poison spikes disappeared from the ground around {B_SCR_TEAM2} team!"),
[STRINGID_TOXICSPIKESABSORBED] = COMPOUND_STRING("The poison spikes disappeared from the ground around {B_EFF_TEAM2} team!"),
[STRINGID_TOXICSPIKESPOISONED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} was poisoned!"),
[STRINGID_TOXICSPIKESBADLYPOISONED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} was badly poisoned!"),
[STRINGID_STICKYWEBSWITCHIN] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} was caught in a sticky web!"),
@ -857,7 +857,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_SWAMPENVELOPEDSIDE] = COMPOUND_STRING("A swamp enveloped {B_DEF_TEAM2} team!"),
[STRINGID_THESWAMPDISAPPEARED] = COMPOUND_STRING("The swamp around {B_ATK_TEAM2} team disappeared!"),
[STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is preparing to tell a chillingly bad joke!"),
[STRINGID_HOSPITALITYRESTORATION] = COMPOUND_STRING("{B_ATK_PARTNER_NAME} drank down all the matcha that {B_ATK_NAME_WITH_PREFIX2} made!"),
[STRINGID_HOSPITALITYRESTORATION] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} drank down all the matcha that {B_SCR_NAME_WITH_PREFIX2} made!"),
[STRINGID_ELECTROSHOTCHARGING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} absorbed electricity!"),
[STRINGID_ITEMWASUSEDUP] = COMPOUND_STRING("The {B_LAST_ITEM} was used up…"),
[STRINGID_ATTACKERLOSTITSTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} lost its {B_BUFF1} type!"),
@ -3111,14 +3111,14 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize)
else
toCpy = sText_Opposing2;
break;
case B_TXT_SCR_TEAM1:
if (IsOnPlayerSide(gBattleScripting.battler))
case B_TXT_EFF_TEAM1:
if (IsOnPlayerSide(gEffectBattler))
toCpy = sText_Your1;
else
toCpy = sText_Opposing1;
break;
case B_TXT_SCR_TEAM2:
if (IsOnPlayerSide(gBattleScripting.battler))
case B_TXT_EFF_TEAM2:
if (IsOnPlayerSide(gEffectBattler))
toCpy = sText_Your2;
else
toCpy = sText_Opposing2;

View File

@ -8325,7 +8325,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler)
{
gSideStatuses[GetBattlerSide(battler)] &= ~SIDE_STATUS_TOXIC_SPIKES;
gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount = 0;
gBattleScripting.battler = battler;
gEffectBattler = battler;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ToxicSpikesAbsorbed;
}
@ -17877,9 +17877,14 @@ void BS_TryGulpMissile(void)
&& (gCurrentMove == MOVE_DIVE)
&& (GetBattlerAbility(gBattlerAttacker) == ABILITY_GULP_MISSILE)
&& TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_HP_PERCENT))
{
gBattleScripting.battler = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_GulpMissileFormChange;
}
else
{
gBattlescriptCurrInstr = cmd->nextInstr;
}
}
void BS_TryActivateGulpMissile(void)

View File

@ -1821,7 +1821,8 @@ static inline bool32 TryFormChangeBeforeMove(void)
return FALSE;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_AttackerFormChange;
gBattleScripting.battler = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_BattlerFormChange;
return TRUE;
}
@ -3515,6 +3516,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
&& gBattleStruct->illusion[diagonalBattler].state != ILLUSION_ON
&& !(gStatuses3[diagonalBattler] & STATUS3_SEMI_INVULNERABLE_NO_COMMANDER))
{
SaveBattlerAttacker(gBattlerAttacker);
SaveBattlerTarget(gBattlerTarget);
gBattlerAttacker = battler;
gBattlerTarget = diagonalBattler;
BattleScriptPushCursorAndCallback(BattleScript_ImposterActivates);
@ -3562,7 +3565,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_UNNERVE:
if (!gSpecialStatuses[battler].switchInAbilityDone && !gDisableStructs[battler].unnerveActivated)
{
gBattlerTarget = GetOppositeBattler(battler);
gEffectBattler = GetOppositeBattler(battler);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_UNNERVE;
gDisableStructs[battler].unnerveActivated = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
@ -3574,7 +3577,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_AS_ONE_SHADOW_RIDER:
if (!gSpecialStatuses[battler].switchInAbilityDone && !gDisableStructs[battler].unnerveActivated)
{
gBattlerTarget = GetOppositeBattler(battler);
gEffectBattler = GetOppositeBattler(battler);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_ASONE;
gDisableStructs[battler].unnerveActivated = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
@ -3596,6 +3599,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_PASTEL_VEIL:
if (!gSpecialStatuses[battler].switchInAbilityDone)
{
SaveBattlerTarget(gBattlerTarget);
gBattlerTarget = battler;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_PASTEL_VEIL;
BattleScriptPushCursorAndCallback(BattleScript_PastelVeilActivates);
@ -3635,7 +3639,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
if (!gSpecialStatuses[battler].switchInAbilityDone)
{
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gBattleScripting.battler = battler;
BattleScriptPushCursorAndCallback(BattleScript_FriskActivates); // Try activate
effect++;
}
@ -3680,6 +3683,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
if (CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN))
{
SET_STATCHANGER(statId, 1, FALSE);
SaveBattlerAttacker(gBattlerAttacker);
gBattlerAttacker = battler;
PREPARE_STAT_BUFFER(gBattleTextBuff1, statId);
BattleScriptPushCursorAndCallback(BattleScript_AttackerAbilityStatRaiseEnd3);
@ -3830,6 +3834,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_INTIMIDATE:
if (!gSpecialStatuses[battler].switchInAbilityDone)
{
SaveBattlerAttacker(gBattlerAttacker);
gBattlerAttacker = battler;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
SET_STATCHANGER(STAT_ATK, 1, TRUE);
@ -3841,6 +3846,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
if (!gSpecialStatuses[battler].switchInAbilityDone
&& !gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].supersweetSyrup)
{
SaveBattlerAttacker(gBattlerAttacker);
gBattlerAttacker = battler;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gBattleStruct->partyState[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].supersweetSyrup = TRUE;
@ -3873,8 +3879,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_SHIELDS_DOWN:
if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT))
{
gBattlerAttacker = battler;
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3);
BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeEnd3);
effect++;
}
break;
@ -4002,10 +4007,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
&& CountBattlerStatIncreases(BATTLE_PARTNER(battler), FALSE))
{
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gBattlerAttacker = gBattlerAbility = battler;
for (i = 0; i < NUM_BATTLE_STATS; i++)
gBattleMons[battler].statStages[i] = gBattleMons[BATTLE_PARTNER(battler)].statStages[i];
gBattleScripting.battler = BATTLE_PARTNER(battler);
gEffectBattler = BATTLE_PARTNER(battler);
BattleScriptPushCursorAndCallback(BattleScript_CostarActivates);
effect++;
}
@ -4033,8 +4037,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
&& gBattleMons[partner].hp < gBattleMons[partner].maxHP
&& IsBattlerAlive(partner))
{
gBattlerTarget = partner;
gBattlerAttacker = battler;
gEffectBattler = partner;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gBattleStruct->moveDamage[partner] = (GetNonDynamaxMaxHP(partner) / 4) * -1;
BattleScriptPushCursorAndCallback(BattleScript_HospitalityActivates);
@ -4074,10 +4077,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
&& gBattleMons[battler].species == SPECIES_TERAPAGOS_NORMAL
&& TryBattleFormChange(battler, FORM_CHANGE_BATTLE_SWITCH))
{
gBattlerAttacker = battler;
gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_TERA_SHIFT;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeWithStringEnd3);
BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3);
effect++;
}
break;
@ -4296,8 +4298,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_SHIELDS_DOWN:
if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_HP_PERCENT))
{
gBattlerAttacker = battler;
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3);
gBattleScripting.battler = battler;
BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeEnd3);
effect++;
}
break;
@ -4328,8 +4330,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
&& GetActiveGimmick(battler) != GIMMICK_TERA
&& TryBattleFormChange(battler, FORM_CHANGE_BATTLE_TURN_END))
{
gBattlerAttacker = battler;
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3NoPopup);
gBattleScripting.battler = battler;
BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeEnd3NoPopup);
effect++;
}
break;
@ -4979,8 +4981,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
&& ((gCurrentMove == MOVE_SURF && IsBattlerTurnDamaged(gBattlerTarget)) || gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER)
&& TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_HP_PERCENT))
{
gBattleScripting.battler = gBattlerAttacker;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_AttackerFormChange;
gBattlescriptCurrInstr = BattleScript_BattlerFormChange;
effect++;
}
break;