From eb81820ae3e49211e5c7f78b2f159f93f05aa82a Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 31 May 2025 09:09:35 +0200 Subject: [PATCH] Clean up battlescript calls with func BattleScriptCall (#6873) --- include/battle_util.h | 1 + src/battle_dynamax.c | 3 +- src/battle_script_commands.c | 282 ++++++++++---------------- src/battle_util.c | 370 +++++++++++------------------------ src/battle_util2.c | 9 +- 5 files changed, 217 insertions(+), 448 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index 2ce91c3f25..4870330361 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -222,6 +222,7 @@ void OpponentSwitchInResetSentPokesToOpponentValue(u32 battler); void UpdateSentPokesToOpponentValue(u32 battler); void BattleScriptPush(const u8 *bsPtr); void BattleScriptPushCursor(void); +void BattleScriptCall(const u8 *bsPtr); void BattleScriptPop(void); u32 TrySetCantSelectMoveBattleScript(u32 battler); u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 93642f4c93..6f69ca7580 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -502,10 +502,9 @@ void BS_UndoDynamax(void) if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX) { - BattleScriptPushCursor(); UndoDynamax(battler); gBattleScripting.battler = battler; - gBattlescriptCurrInstr = BattleScript_DynamaxEnds_Ret; + BattleScriptCall(BattleScript_DynamaxEnds_Ret); return; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index de85c43950..432eabfedb 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1341,8 +1341,7 @@ static void Cmd_attackcanceler(void) } else { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MagicCoat; + BattleScriptCall(BattleScript_MagicCoat); } return; } @@ -1367,8 +1366,7 @@ static void Cmd_attackcanceler(void) { ClearDamageCalcResults(); SetAtkCancellerForCalledMove(); // Edge case for bouncing a powder move against a grass type pokemon. - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MagicBounce; + BattleScriptCall(BattleScript_MagicBounce); gBattlerAbility = battler; return; } @@ -1391,8 +1389,7 @@ static void Cmd_attackcanceler(void) gProtectStructs[gBattlerByTurnOrder[i]].stealMove = FALSE; gBattleStruct->snatchedMoveIsUsed = TRUE; gBattleScripting.battler = gBattlerByTurnOrder[i]; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SnatchedMove; + BattleScriptCall(BattleScript_SnatchedMove); return; } } @@ -1401,16 +1398,14 @@ static void Cmd_attackcanceler(void) { gSpecialStatuses[gBattlerTarget].lightningRodRedirected = FALSE; gLastUsedAbility = ABILITY_LIGHTNING_ROD; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TookAttack; + BattleScriptCall(BattleScript_TookAttack); RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } else if (gSpecialStatuses[gBattlerTarget].stormDrainRedirected) { gSpecialStatuses[gBattlerTarget].stormDrainRedirected = FALSE; gLastUsedAbility = ABILITY_STORM_DRAIN; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TookAttack; + BattleScriptCall(BattleScript_TookAttack); RecordAbilityBattle(gBattlerTarget, gLastUsedAbility); } else if (IsBattlerProtected(gBattlerAttacker, gBattlerTarget, gCurrentMove) @@ -2282,8 +2277,7 @@ static void Cmd_adjustdamage(void) && !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleMons[gBattlerAttacker].item) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_GemActivates; + BattleScriptCall(BattleScript_GemActivates); gLastUsedItem = gBattleMons[gBattlerAttacker].item; } } @@ -2301,8 +2295,7 @@ static void Cmd_multihitresultmessage(void) if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_STURDIED) { gBattleStruct->moveResultFlags[gBattlerTarget] &= ~(MOVE_RESULT_STURDIED | MOVE_RESULT_FOE_HUNG_ON); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SturdiedMsg; + BattleScriptCall(BattleScript_SturdiedMsg); return; } else if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_FOE_HUNG_ON) @@ -2310,8 +2303,7 @@ static void Cmd_multihitresultmessage(void) gLastUsedItem = gBattleMons[gBattlerTarget].item; gPotentialItemEffectBattler = gBattlerTarget; gBattleStruct->moveResultFlags[gBattlerTarget] &= ~(MOVE_RESULT_STURDIED | MOVE_RESULT_FOE_HUNG_ON); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + BattleScriptCall(BattleScript_HangedOnMsg); return; } } @@ -2377,8 +2369,7 @@ static inline bool32 TryStrongWindsWeakenAttack(u32 battlerDef, u32 moveType) && !gBattleStruct->printedStrongWindsWeakenedAttack) { gBattleStruct->printedStrongWindsWeakenedAttack = TRUE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AttackWeakenedByStrongWinds; + BattleScriptCall(BattleScript_AttackWeakenedByStrongWinds); return TRUE; } } @@ -2392,8 +2383,7 @@ static inline bool32 TryTeraShellDistortTypeMatchups(u32 battlerDef) { gSpecialStatuses[battlerDef].teraShellAbilityDone = FALSE; gBattleScripting.battler = battlerDef; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TeraShellDistortingTypeMatchups; + BattleScriptCall(BattleScript_TeraShellDistortingTypeMatchups); return TRUE; } return FALSE; @@ -2408,8 +2398,7 @@ static inline bool32 TryActivateWeakenessBerry(u32 battlerDef) gBattleScripting.battler = battlerDef; gLastUsedItem = gBattleMons[battlerDef].item; gBattleStruct->partyState[GetBattlerSide(battlerDef)][gBattlerPartyIndexes[battlerDef]].ateBerry = TRUE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryReduceDmg; + BattleScriptCall(BattleScript_BerryReduceDmg); return TRUE; } @@ -2653,8 +2642,7 @@ static void Cmd_datahpupdate(void) if (gDisableStructs[battler].substituteHP == 0) { gBattlescriptCurrInstr = cmd->nextInstr; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SubstituteFade; + BattleScriptCall(BattleScript_SubstituteFade); return; } } @@ -2868,11 +2856,10 @@ static void Cmd_resultmessage(void) gDisableStructs[gBattlerTarget].iceFaceActivationPrevention = FALSE; u32 side = GetBattlerSide(gBattlerTarget); if (gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[gBattlerTarget]] == SPECIES_NONE) - gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[gBattlerTarget]] = gBattleMons[gBattlerTarget].species; + gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[gBattlerTarget]] = gBattleMons[gBattlerTarget].species; gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE; gBattleScripting.battler = gBattlerTarget; // For STRINGID_PKMNTRANSFORMED - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_IceFaceNullsDamage; + BattleScriptCall(BattleScript_IceFaceNullsDamage); return; } @@ -2883,8 +2870,7 @@ static void Cmd_resultmessage(void) { gMultiHitCounter = 0; *moveResultFlags &= ~MOVE_RESULT_MISSED; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MultiHitPrintStrings; + BattleScriptCall(BattleScript_MultiHitPrintStrings); return; } @@ -2962,8 +2948,7 @@ static void Cmd_resultmessage(void) gLastUsedItem = gBattleMons[gBattlerTarget].item; gPotentialItemEffectBattler = gBattlerTarget; *moveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + BattleScriptCall(BattleScript_HangedOnMsg); return; default: if (*moveResultFlags & MOVE_RESULT_ONE_HIT_KO) @@ -2971,22 +2956,19 @@ static void Cmd_resultmessage(void) *moveResultFlags &= ~MOVE_RESULT_ONE_HIT_KO; *moveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE; *moveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_OneHitKOMsg; + BattleScriptCall(BattleScript_OneHitKOMsg); return; } else if (*moveResultFlags & MOVE_RESULT_STURDIED) { *moveResultFlags &= ~(MOVE_RESULT_STURDIED | MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SturdiedMsg; + BattleScriptCall(BattleScript_SturdiedMsg); return; } else if (*moveResultFlags & MOVE_RESULT_FOE_ENDURED) { *moveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EnduredMsg; + BattleScriptCall(BattleScript_EnduredMsg); return; } else if (*moveResultFlags & MOVE_RESULT_FOE_HUNG_ON) @@ -2994,8 +2976,7 @@ static void Cmd_resultmessage(void) gLastUsedItem = gBattleMons[gBattlerTarget].item; gPotentialItemEffectBattler = gBattlerTarget; *moveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_HangedOnMsg; + BattleScriptCall(BattleScript_HangedOnMsg); return; } else if (*moveResultFlags & MOVE_RESULT_FAILED) @@ -3005,8 +2986,7 @@ static void Cmd_resultmessage(void) else if (B_AFFECTION_MECHANICS == TRUE && (*moveResultFlags & MOVE_RESULT_FOE_ENDURED_AFFECTION)) { *moveResultFlags &= ~MOVE_RESULT_FOE_ENDURED_AFFECTION; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AffectionBasedEndurance; + BattleScriptCall(BattleScript_AffectionBasedEndurance); return; } } @@ -4704,10 +4684,9 @@ static void Cmd_dofaintanimation(void) if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX) { - BattleScriptPushCursor(); UndoDynamax(battler); gBattleScripting.battler = battler; - gBattlescriptCurrInstr = BattleScript_DynamaxEnds_Ret; + BattleScriptCall(BattleScript_DynamaxEnds_Ret); return; } @@ -5179,9 +5158,8 @@ static void Cmd_getexp(void) PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, expBattler, *expMonId); PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[*expMonId], MON_DATA_LEVEL)); - BattleScriptPushCursor(); gLeveledUpInBattle |= 1 << *expMonId; - gBattlescriptCurrInstr = BattleScript_LevelUp; + BattleScriptCall(BattleScript_LevelUp); gBattleStruct->battlerExpReward = T1_READ_32(&gBattleResources->bufferB[expBattler][2]); AdjustFriendship(&gPlayerParty[*expMonId], FRIENDSHIP_EVENT_GROW_LEVEL); @@ -6087,8 +6065,7 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef) if (GetBattlerAbility(battlerDef) == ABILITY_STICKY_HOLD && IsBattlerAlive(battlerDef)) { gBattlerAbility = battlerDef; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_StickyHoldActivates; + BattleScriptCall(BattleScript_StickyHoldActivates); } else { @@ -6111,8 +6088,7 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef) gWishFutureKnock.knockedOffMons[side] |= 1u << gBattlerPartyIndexes[battlerDef]; } - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_KnockedOff; + BattleScriptCall(BattleScript_KnockedOff); } return TRUE; } @@ -6225,8 +6201,7 @@ static bool32 HandleMoveEndAbilityBlock(u32 battlerAtk, u32 battlerDef, u32 move StealTargetItem(battlerAtk, battlerDef); gBattleScripting.battler = gBattlerAbility = battlerAtk; gEffectBattler = battlerDef; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MagicianActivates; + BattleScriptCall(BattleScript_MagicianActivates); effect = TRUE; } break; @@ -6259,8 +6234,7 @@ static bool32 HandleMoveEndAbilityBlock(u32 battlerAtk, u32 battlerDef, u32 move SET_STATCHANGER(stat, numMonsFainted, FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, stat); gBattleScripting.animArg1 = GET_STAT_BUFF_ID(stat) + (numMonsFainted > 1 ? STAT_ANIM_PLUS2 : STAT_ANIM_PLUS1); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RaiseStatOnFaintingTarget; + BattleScriptCall(BattleScript_RaiseStatOnFaintingTarget); effect = TRUE; } } @@ -6285,8 +6259,7 @@ static bool32 HandleMoveEndAbilityBlock(u32 battlerAtk, u32 battlerDef, u32 move PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battlerAtk].species); gBattleStruct->changedSpecies[side][gBattlerPartyIndexes[battlerAtk]] = gBattleMons[battlerAtk].species; gBattleMons[battlerAtk].species = SPECIES_GRENINJA_ASH; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BattleBondActivatesOnMoveEndAttacker; + BattleScriptCall(BattleScript_BattleBondActivatesOnMoveEndAttacker); effect = TRUE; } else @@ -6316,8 +6289,7 @@ static bool32 HandleMoveEndAbilityBlock(u32 battlerAtk, u32 battlerDef, u32 move gLastUsedAbility = abilityAtk; gBattlerAbility = battlerAtk; gBattleStruct->partyState[side][gBattlerPartyIndexes[battlerAtk]].battleBondBoost = TRUE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EffectBattleBondStatIncrease; + BattleScriptCall(BattleScript_EffectBattleBondStatIncrease); effect = TRUE; } } @@ -6376,8 +6348,7 @@ static void Cmd_moveend(void) if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SpikyShieldEffect; + BattleScriptCall(BattleScript_SpikyShieldEffect); effect = 1; } break; @@ -6392,8 +6363,7 @@ static void Cmd_moveend(void) gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_1; else gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_2; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; + BattleScriptCall(BattleScript_KingsShieldEffect); effect = 1; } break; @@ -6403,8 +6373,7 @@ static void Cmd_moveend(void) gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; gBattleScripting.moveEffect = MOVE_EFFECT_POISON | MOVE_EFFECT_AFFECTS_USER; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BANEFUL_BUNKER); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect; + BattleScriptCall(BattleScript_BanefulBunkerEffect); effect = 1; } break; @@ -6414,8 +6383,7 @@ static void Cmd_moveend(void) gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; gBattleScripting.moveEffect = MOVE_EFFECT_BURN | MOVE_EFFECT_AFFECTS_USER; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BURNING_BULWARK); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect; + BattleScriptCall(BattleScript_BanefulBunkerEffect); effect = 1; } break; @@ -6429,8 +6397,7 @@ static void Cmd_moveend(void) gBattlerAttacker = gBattlerTarget; gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable gBattleScripting.moveEffect = MOVE_EFFECT_DEF_MINUS_2; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; + BattleScriptCall(BattleScript_KingsShieldEffect); effect = 1; } break; @@ -6442,8 +6409,7 @@ static void Cmd_moveend(void) gBattlerAttacker = gBattlerTarget; gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable gBattleScripting.moveEffect = MOVE_EFFECT_SPD_MINUS_1; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; + BattleScriptCall(BattleScript_KingsShieldEffect); effect = 1; } break; @@ -6460,8 +6426,7 @@ static void Cmd_moveend(void) gBattleMons[gBattlerAttacker].status1 = STATUS1_BURN; BtlController_EmitSetMonData(gBattlerAttacker, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerAttacker].status1), &gBattleMons[gBattlerAttacker].status1); MarkBattlerForControllerExec(gBattlerAttacker); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BeakBlastBurn; + BattleScriptCall(BattleScript_BeakBlastBurn); effect = 1; } } @@ -6483,14 +6448,12 @@ static void Cmd_moveend(void) gBattleStruct->moveDamage[gBattlerAttacker] *= -1; gHitMarker |= HITMARKER_PASSIVE_DAMAGE; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABSORB_OOZE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EffectAbsorbLiquidOoze; + BattleScriptCall(BattleScript_EffectAbsorbLiquidOoze); } else { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABSORB; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EffectAbsorb; + BattleScriptCall(BattleScript_EffectAbsorb); } } gBattleScripting.moveendState++; @@ -6506,8 +6469,7 @@ static void Cmd_moveend(void) && CompareStat(gBattlerTarget, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { SET_STATCHANGER(STAT_ATK, 1, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RageIsBuilding; + BattleScriptCall(BattleScript_RageIsBuilding); effect = TRUE; } gBattleScripting.moveendState++; @@ -6603,23 +6565,22 @@ static void Cmd_moveend(void) } effect = TRUE; - BattleScriptPushCursor(); if (targetAbility == ABILITY_SUCTION_CUPS) { - gBattlescriptCurrInstr = BattleScript_AbilityPreventsPhasingOutRet; + BattleScriptCall(BattleScript_AbilityPreventsPhasingOutRet); } else if (gStatuses3[gBattlerTarget] & STATUS3_ROOTED) { - gBattlescriptCurrInstr = BattleScript_PrintMonIsRootedRet; + BattleScriptCall(BattleScript_PrintMonIsRootedRet); } else if (GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX) { - gBattlescriptCurrInstr = BattleScript_HitSwitchTargetDynamaxed; + BattleScriptCall(BattleScript_HitSwitchTargetDynamaxed); } else { gBattleScripting.switchCase = B_SWITCH_HIT; - gBattlescriptCurrInstr = BattleScript_TryHitSwitchTarget; + BattleScriptCall(BattleScript_TryHitSwitchTarget); } } break; @@ -6899,11 +6860,10 @@ static void Cmd_moveend(void) gBattleScripting.multihitString[4]++; if (gMultiHitCounter == 0) { - BattleScriptPushCursor(); if (GetMoveEffectArg_MoveProperty(gCurrentMove) == MOVE_EFFECT_SCALE_SHOT && !NoAliveMonsForEitherParty()) - gBattlescriptCurrInstr = BattleScript_ScaleShot; + BattleScriptCall(BattleScript_ScaleShot); else - gBattlescriptCurrInstr = BattleScript_MultiHitPrintStrings; + BattleScriptCall(BattleScript_MultiHitPrintStrings); effect = TRUE; } else @@ -6936,8 +6896,7 @@ static void Cmd_moveend(void) } else { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MultiHitPrintStrings; + BattleScriptCall(BattleScript_MultiHitPrintStrings); effect = TRUE; } } @@ -6959,8 +6918,7 @@ static void Cmd_moveend(void) gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE; BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); MarkBattlerForControllerExec(gBattlerTarget); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; + BattleScriptCall(BattleScript_DefrostedViaFireMove); effect = TRUE; } if (gBattleMons[gBattlerTarget].status1 & STATUS1_FROSTBITE @@ -6972,8 +6930,7 @@ static void Cmd_moveend(void) gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FROSTBITE; BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); MarkBattlerForControllerExec(gBattlerTarget); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_FrostbiteHealedViaFireMove; + BattleScriptCall(BattleScript_FrostbiteHealedViaFireMove); effect = TRUE; } gBattleScripting.moveendState++; @@ -7002,8 +6959,7 @@ static void Cmd_moveend(void) if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RecoilIfMiss; + BattleScriptCall(BattleScript_RecoilIfMiss); effect = TRUE; } break; @@ -7011,8 +6967,7 @@ static void Cmd_moveend(void) if (IsBattlerTurnDamaged(gBattlerTarget) && IsBattlerAlive(gBattlerAttacker)) { gBattleStruct->moveDamage[gBattlerAttacker] = max(1, gBattleStruct->moveDamage[gBattlerTarget] * max(1, GetMoveRecoil(gCurrentMove)) / 100); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil; + BattleScriptCall(BattleScript_MoveEffectRecoil); effect = TRUE; } break; @@ -7020,8 +6975,7 @@ static void Cmd_moveend(void) if (!IsAbilityOnField(ABILITY_DAMP)) { gBattleStruct->moveDamage[gBattlerAttacker] = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_FaintAttackerForExplosion; + BattleScriptCall(BattleScript_FaintAttackerForExplosion); effect = TRUE; } break; @@ -7032,16 +6986,14 @@ static void Cmd_moveend(void) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { gBattleStruct->moveDamage[gBattlerAttacker] = (GetNonDynamaxMaxHP(gBattlerAttacker) + 1) / 2; // Half of Max HP Rounded UP - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MaxHp50Recoil; + BattleScriptCall(BattleScript_MaxHp50Recoil); effect = TRUE; } break; case EFFECT_RAPID_SPIN: if (IsBattlerTurnDamaged(gBattlerTarget)) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RapidSpinAway; + BattleScriptCall(BattleScript_RapidSpinAway); effect = TRUE; } break; @@ -7054,8 +7006,7 @@ static void Cmd_moveend(void) { SET_STATCHANGER(STAT_ATK, GetGenConfig(GEN_CONFIG_FELL_STINGER_STAT_RAISE) >= GEN_7 ? 3 : 2, FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat; + BattleScriptCall(BattleScript_FellStingerRaisesStat); effect = TRUE; } break; @@ -7115,8 +7066,7 @@ static void Cmd_moveend(void) gLastUsedItem = gBattleMons[battler].item; effect = TRUE; gBattleStruct->battlerState[battler].usedEjectItem = TRUE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectButtonActivates; + BattleScriptCall(BattleScript_EjectButtonActivates); gAiLogicData->ejectButtonSwitch = TRUE; break; // Only the fastest Eject Button activates } @@ -7169,8 +7119,7 @@ static void Cmd_moveend(void) gLastUsedItem = gBattleMons[battler].item; effect = TRUE; gBattleStruct->battlerState[battler].usedEjectItem = TRUE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectPackActivates; + BattleScriptCall(BattleScript_EjectPackActivates); gAiLogicData->ejectPackSwitch = TRUE; break; // Only the fastest Eject item activates } @@ -7189,8 +7138,7 @@ static void Cmd_moveend(void) if (GetBattlerHoldEffect(i, TRUE) == HOLD_EFFECT_WHITE_HERB && RestoreWhiteHerbStats(i)) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; + BattleScriptCall(BattleScript_WhiteHerbRet); effect = TRUE; break; } @@ -7232,13 +7180,12 @@ static void Cmd_moveend(void) SaveBattlerAttacker(gBattlerAttacker); gBattleScripting.battler = battler; gEffectBattler = gBattlerAttacker; - BattleScriptPushCursor(); if (gBattleStruct->commanderActive[gBattlerAttacker] != SPECIES_NONE || GetBattlerAbility(gBattlerAttacker) == ABILITY_GUARD_DOG || GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX) - gBattlescriptCurrInstr = BattleScript_RedCardActivationNoSwitch; + BattleScriptCall(BattleScript_RedCardActivationNoSwitch); else - gBattlescriptCurrInstr = BattleScript_RedCardActivates; + BattleScriptCall(BattleScript_RedCardActivates); break; // Only fastest red card activates } } @@ -7281,8 +7228,7 @@ static void Cmd_moveend(void) StealTargetItem(gBattlerTarget, gBattlerAttacker); // Target takes attacker's item gEffectBattler = gBattlerAttacker; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_Pickpocket; // Includes sticky hold check to print separate string + BattleScriptCall(BattleScript_Pickpocket); // Includes sticky hold check to print separate string effect = TRUE; break; // Pickpocket activates on fastest mon, so exit loop. } @@ -7325,12 +7271,11 @@ static void Cmd_moveend(void) effect = TRUE; gBattleScripting.battler = battler; - BattleScriptPushCursor(); if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || IsOnPlayerSide(battler)) - gBattlescriptCurrInstr = BattleScript_EmergencyExit; + BattleScriptCall(BattleScript_EmergencyExit); else - gBattlescriptCurrInstr = BattleScript_EmergencyExitWild; + BattleScriptCall(BattleScript_EmergencyExitWild); break; // Only the fastest Emergency Exit / Wimp Out activates } @@ -7348,8 +7293,7 @@ static void Cmd_moveend(void) && !NoAliveMonsForBattlerSide(gBattlerTarget)) { effect = TRUE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EffectHitEscape; + BattleScriptCall(BattleScript_EffectHitEscape); } gBattleScripting.moveendState++; break; @@ -7370,8 +7314,7 @@ static void Cmd_moveend(void) gLastUsedAbility = gBattleMons[BATTLE_PARTNER(i)].ability; gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(i); gBattlerAttacker = i; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SymbiosisActivates; + BattleScriptCall(BattleScript_SymbiosisActivates); effect = TRUE; } } @@ -8168,15 +8111,14 @@ static void SetDmgHazardsBattlescript(u8 battler, u8 multistringId) gBattleScripting.battler = battler; gBattleCommunication[MULTISTRING_CHOOSER] = multistringId; - BattleScriptPushCursor(); if (gBattlescriptCurrInstr[1] == BS_TARGET) - gBattlescriptCurrInstr = BattleScript_DmgHazardsOnTarget; + BattleScriptCall(BattleScript_DmgHazardsOnTarget); else if (gBattlescriptCurrInstr[1] == BS_ATTACKER) - gBattlescriptCurrInstr = BattleScript_DmgHazardsOnAttacker; + BattleScriptCall(BattleScript_DmgHazardsOnAttacker); else if (gBattlescriptCurrInstr[1] == BS_SCRIPTING) - gBattlescriptCurrInstr = BattleScript_DmgHazardsOnBattlerScripting; + BattleScriptCall(BattleScript_DmgHazardsOnBattlerScripting); else - gBattlescriptCurrInstr = BattleScript_DmgHazardsOnFaintedBattler; + BattleScriptCall(BattleScript_DmgHazardsOnFaintedBattler); } bool32 DoSwitchInAbilities(u32 battler) @@ -8208,8 +8150,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) gSpecialStatuses[battler].announceNeutralizingGas = TRUE; gDisableStructs[battler].neutralizingGas = TRUE; gBattlerAbility = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SwitchInAbilityMsgRet; + BattleScriptCall(BattleScript_SwitchInAbilityMsgRet); } // Healing Wish activates before hazards. // Starting from Gen8 - it heals only pokemon which can be healed. In gens 5,6,7 the effect activates anyways. @@ -8219,14 +8160,12 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) gBattlerAttacker = battler; if (gBattleStruct->battlerState[battler].storedHealingWish) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_HealingWishActivates; + BattleScriptCall(BattleScript_HealingWishActivates); gBattleStruct->battlerState[battler].storedHealingWish = FALSE; } else // Lunar Dance { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_LunarDanceActivates; + BattleScriptCall(BattleScript_LunarDanceActivates); gBattleStruct->battlerState[battler].storedLunarDance = FALSE; } } @@ -8265,8 +8204,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) gSideStatuses[GetBattlerSide(battler)] &= ~SIDE_STATUS_TOXIC_SPIKES; gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount = 0; gBattleScripting.battler = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ToxicSpikesAbsorbed; + BattleScriptCall(BattleScript_ToxicSpikesAbsorbed); } else if (IsBattlerAffectedByHazards(battler, TRUE)) { @@ -8283,11 +8221,10 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1); MarkBattlerForControllerExec(battler); gBattleScripting.battler = battler; - BattleScriptPushCursor(); if (tspikes == 0) - gBattlescriptCurrInstr = BattleScript_ToxicSpikesPoisoned; + BattleScriptCall(BattleScript_ToxicSpikesPoisoned); else - gBattlescriptCurrInstr = BattleScript_ToxicSpikesBadlyPoisoned; + BattleScriptCall(BattleScript_ToxicSpikesBadlyPoisoned); } } } @@ -8299,8 +8236,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) gDisableStructs[battler].stickyWebDone = TRUE; gBattleScripting.battler = battler; SET_STATCHANGER(STAT_SPEED, 1, TRUE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_StickyWebOnSwitchIn; + BattleScriptCall(BattleScript_StickyWebOnSwitchIn); } else if (!(gDisableStructs[battler].steelSurgeDone) && (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_STEELSURGE) @@ -8318,9 +8254,8 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) gBattleStruct->zmove.healReplacement = FALSE; gBattleStruct->moveDamage[battler] = -1 * (gBattleMons[battler].maxHP); gBattleScripting.battler = battler; - BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_Z_HP_TRAP; - gBattlescriptCurrInstr = BattleScript_HealReplacementZMove; + BattleScriptCall(BattleScript_HealReplacementZMove); return TRUE; } else @@ -9699,8 +9634,7 @@ static void RemoveAllTerrains(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, move);\ *sideStatuses &= ~status; \ sideTimer->structField = 0; \ - BattleScriptPushCursor(); \ - gBattlescriptCurrInstr = battlescript; \ + BattleScriptCall(battlescript); \ } \ else \ { \ @@ -9741,15 +9675,13 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear) if (gBattleWeather & B_WEATHER_FOG) { gBattleWeather &= ~B_WEATHER_FOG; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_FogEnded_Ret; + BattleScriptCall(BattleScript_FogEnded_Ret); return TRUE; } if (B_DEFOG_EFFECT_CLEARING >= GEN_8 && (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)) { RemoveAllTerrains(); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TerrainEnds_Ret; + BattleScriptCall(BattleScript_TerrainEnds_Ret); return TRUE; } } @@ -9785,8 +9717,7 @@ static bool32 TryTidyUpClear(u32 battlerAtk, bool32 clear) gBattlerTarget = i; gDisableStructs[i].substituteHP = 0; gBattleMons[i].status2 &= ~STATUS2_SUBSTITUTE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SubstituteFade; + BattleScriptCall(BattleScript_SubstituteFade); } gBattlerAttacker = saveBattler; return TRUE; @@ -10174,16 +10105,15 @@ static void Cmd_various(void) { gLastUsedItem = gBattleMons[gBattlerTarget].item; RecordItemEffectBattle(gBattlerTarget, GetBattlerHoldEffect(gBattlerTarget, FALSE)); - BattleScriptPushCursor(); // If Frisk identifies two mons' items, show the pop-up only once. if (gBattleStruct->friskedAbility) { - gBattlescriptCurrInstr = BattleScript_FriskMsg; + BattleScriptCall(BattleScript_FriskMsg); } else { gBattleStruct->friskedAbility = TRUE; - gBattlescriptCurrInstr = BattleScript_FriskMsgWithPopup; + BattleScriptCall(BattleScript_FriskMsgWithPopup); } return; } @@ -10624,8 +10554,7 @@ static void Cmd_various(void) { SET_STATCHANGER(STAT_SPATK, 1, FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ScriptingAbilityStatRaise; + BattleScriptCall(BattleScript_ScriptingAbilityStatRaise); return; } } @@ -11172,8 +11101,7 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr); if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_ROOM_SERVICE && TryRoomService(battler)) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet; + BattleScriptCall(BattleScript_ConsumableStatRaiseRet); } else { @@ -14351,50 +14279,43 @@ static void Cmd_rapidspinfree(void) gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_WRAPPED; gBattlerTarget = gBattleStruct->wrappedBy[gBattlerAttacker]; PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[gBattlerAttacker]); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WrapFree; + BattleScriptCall(BattleScript_WrapFree); } else if (gStatuses3[gBattlerAttacker] & STATUS3_LEECHSEED) { gStatuses3[gBattlerAttacker] &= ~STATUS3_LEECHSEED; gStatuses3[gBattlerAttacker] &= ~STATUS3_LEECHSEED_BATTLER; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_LeechSeedFree; + BattleScriptCall(BattleScript_LeechSeedFree); } else if (gSideStatuses[atkSide] & SIDE_STATUS_SPIKES) { gSideStatuses[atkSide] &= ~SIDE_STATUS_SPIKES; gSideTimers[atkSide].spikesAmount = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SpikesFree; + BattleScriptCall(BattleScript_SpikesFree); } else if (gSideStatuses[atkSide] & SIDE_STATUS_TOXIC_SPIKES) { gSideStatuses[atkSide] &= ~SIDE_STATUS_TOXIC_SPIKES; gSideTimers[atkSide].toxicSpikesAmount = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ToxicSpikesFree; + BattleScriptCall(BattleScript_ToxicSpikesFree); } else if (gSideStatuses[atkSide] & SIDE_STATUS_STICKY_WEB) { gSideStatuses[atkSide] &= ~SIDE_STATUS_STICKY_WEB; gSideTimers[atkSide].stickyWebAmount = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_StickyWebFree; + BattleScriptCall(BattleScript_StickyWebFree); } else if (gSideStatuses[atkSide] & SIDE_STATUS_STEALTH_ROCK) { gSideStatuses[atkSide] &= ~SIDE_STATUS_STEALTH_ROCK; gSideTimers[atkSide].stealthRockAmount = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_StealthRockFree; + BattleScriptCall(BattleScript_StealthRockFree); } else if (gSideStatuses[atkSide] & SIDE_STATUS_STEELSURGE) { gSideStatuses[atkSide] &= ~SIDE_STATUS_STEELSURGE; gSideTimers[atkSide].steelsurgeAmount = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SteelsurgeFree; + BattleScriptCall(BattleScript_SteelsurgeFree); } else { @@ -16686,15 +16607,13 @@ void BS_DoStockpileStatChangesWearOff(void) { SET_STATCHANGER(STAT_DEF, abs(gDisableStructs[battler].stockpileDef), TRUE); gDisableStructs[battler].stockpileDef = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = cmd->statChangeInstr; + BattleScriptCall(cmd->statChangeInstr); } else if (gDisableStructs[battler].stockpileSpDef) { SET_STATCHANGER(STAT_SPDEF, abs(gDisableStructs[battler].stockpileSpDef), TRUE); gDisableStructs[battler].stockpileSpDef = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = cmd->statChangeInstr; + BattleScriptCall(cmd->statChangeInstr); } else { @@ -16857,8 +16776,7 @@ void BS_TrySymbiosis(void) gLastUsedAbility = gBattleMons[partner].ability; gBattleScripting.battler = gBattlerAbility = partner; gEffectBattler = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SymbiosisActivates; + BattleScriptCall(BattleScript_SymbiosisActivates); return; } @@ -17841,14 +17759,12 @@ void BS_TryActivateGulpMissile(void) switch(gBattleMons[gBattlerTarget].species) { case SPECIES_CRAMORANT_GORGING: - BattleScriptPushCursor(); TryBattleFormChange(gBattlerTarget, FORM_CHANGE_HIT_BY_MOVE); - gBattlescriptCurrInstr = BattleScript_GulpMissileGorging; + BattleScriptCall(BattleScript_GulpMissileGorging); return; case SPECIES_CRAMORANT_GULPING: - BattleScriptPushCursor(); TryBattleFormChange(gBattlerTarget, FORM_CHANGE_HIT_BY_MOVE); - gBattlescriptCurrInstr = BattleScript_GulpMissileGulping; + BattleScriptCall(BattleScript_GulpMissileGulping); return; } } @@ -18306,8 +18222,7 @@ void BS_SpectralThiefPrintStats(void) stat, MOVE_EFFECT_CERTAIN | MOVE_EFFECT_AFFECTS_USER, NULL) == STAT_CHANGE_WORKED) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_StatUpMsg; + BattleScriptCall(BattleScript_StatUpMsg); return; } } @@ -18688,8 +18603,7 @@ void BS_TryIntimidatEjectpack(void) gBattleScripting.battler = affectedBattler; gLastUsedItem = gBattleMons[affectedBattler].item; RecordItemEffectBattle(affectedBattler, HOLD_EFFECT_EJECT_PACK); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectPackActivate_Ret; + BattleScriptCall(BattleScript_EjectPackActivate_Ret); } } diff --git a/src/battle_util.c b/src/battle_util.c index 23968c8c97..e2b0eb41e9 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1150,8 +1150,7 @@ void PrepareStringBattle(enum StringID stringId, u32 battler) && !(gBattleScripting.stickyWebStatDrop == 1 && gSideTimers[targetSide].stickyWebBattlerSide == targetSide)) // Sticky Web must have been set by the foe { gBattlerAbility = gBattlerTarget; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityRaisesDefenderStat; + BattleScriptCall(BattleScript_AbilityRaisesDefenderStat); if (targetAbility == ABILITY_DEFIANT) SET_STATCHANGER(STAT_ATK, 2, FALSE); else @@ -1161,8 +1160,7 @@ void PrepareStringBattle(enum StringID stringId, u32 battler) && CompareStat(gBattlerTarget, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN)) { gBattlerAbility = gBattlerTarget; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityRaisesDefenderStat; + BattleScriptCall(BattleScript_AbilityRaisesDefenderStat); SET_STATCHANGER(STAT_SPEED, 1, FALSE); } @@ -1231,6 +1229,12 @@ void BattleScriptPushCursor(void) gBattleResources->battleScriptsStack->ptr[gBattleResources->battleScriptsStack->size++] = gBattlescriptCurrInstr; } +void BattleScriptCall(const u8 *bsPtr) +{ + BattleScriptPushCursor(); + gBattlescriptCurrInstr = bsPtr; +} + void BattleScriptPop(void) { if (gBattleResources->battleScriptsStack->size != 0) @@ -1819,8 +1823,7 @@ static inline bool32 TryFormChangeBeforeMove(void) if (!result) return FALSE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AttackerFormChange; + BattleScriptCall(BattleScript_AttackerFormChange); return TRUE; } @@ -1890,9 +1893,8 @@ static void CancellerAsleep(u32 *effect) TryDeactivateSleepClause(GetBattlerSide(gBattlerAttacker), gBattlerPartyIndexes[gBattlerAttacker]); gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; - BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR; - gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + BattleScriptCall(BattleScript_MoveUsedWokeUp); *effect = 2; } else @@ -1921,9 +1923,8 @@ static void CancellerAsleep(u32 *effect) { TryDeactivateSleepClause(GetBattlerSide(gBattlerAttacker), gBattlerPartyIndexes[gBattlerAttacker]); gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; - BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP; - gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + BattleScriptCall(BattleScript_MoveUsedWokeUp); *effect = 2; } } @@ -1943,8 +1944,7 @@ static void CancellerFrozen(u32 *effect) else // unfreeze { gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FREEZE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + BattleScriptCall(BattleScript_MoveUsedUnfroze); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED; } *effect = 2; @@ -2040,7 +2040,7 @@ static void CancellerInLove(u32 *effect) gBattleScripting.battler = CountTrailingZeroBits((gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) >> 0x10); if (!RandomPercentage(RNG_INFATUATION, 50)) { - BattleScriptPushCursor(); + BattleScriptCall(BattleScript_MoveUsedIsInLove); } else { @@ -2048,8 +2048,8 @@ static void CancellerInLove(u32 *effect) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; } - gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; *effect = 1; } } @@ -2155,18 +2155,17 @@ static void CancellerConfused(u32 *effect) gBattleStruct->moveDamage[gBattlerAttacker] = CalculateMoveDamage(&damageCalcData, 40); gProtectStructs[gBattlerAttacker].confusionSelfDmg = TRUE; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; } else { gBattleCommunication[MULTISTRING_CHOOSER] = FALSE; - BattleScriptPushCursor(); + BattleScriptCall(BattleScript_MoveUsedIsConfused); } - gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; } else // snapped out of confusion { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; + BattleScriptCall(BattleScript_MoveUsedIsConfusedNoMore); } *effect = 1; } @@ -2225,8 +2224,7 @@ static void CancellerThaw(u32 *effect) if (!(IsMoveEffectRemoveSpeciesType(gCurrentMove, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) { gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FREEZE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + BattleScriptCall(BattleScript_MoveUsedUnfroze); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED_BY_MOVE; } *effect = 2; @@ -2236,8 +2234,7 @@ static void CancellerThaw(u32 *effect) if (!(IsMoveEffectRemoveSpeciesType(gCurrentMove, MOVE_EFFECT_REMOVE_ARG_TYPE, TYPE_FIRE) && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_FIRE))) { gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FROSTBITE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedUnfrostbite; + BattleScriptCall(BattleScript_MoveUsedUnfrostbite); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FROSTBITE_HEALED_BY_MOVE; } *effect = 2; @@ -2271,8 +2268,7 @@ static void CancellerWeatherPrimal(u32 *effect) gProtectStructs[gBattlerAttacker].chargingTurn = FALSE; CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_PrimalWeatherBlocksMove; + BattleScriptCall(BattleScript_PrimalWeatherBlocksMove); } } } @@ -2282,8 +2278,7 @@ static void CancellerDynamaxBlocked(u32 *effect) if ((GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX) && IsMoveBlockedByDynamax(gCurrentMove)) { gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveBlockedByDynamax; + BattleScriptCall(BattleScript_MoveBlockedByDynamax); *effect = 1; } } @@ -2313,10 +2308,9 @@ static void CancellerProtean(u32 *effect) gDisableStructs[gBattlerAttacker].usedProteanLibero = TRUE; PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); gBattlerAbility = gBattlerAttacker; - BattleScriptPushCursor(); PrepareStringBattle(STRINGID_EMPTYSTRING3, gBattlerAttacker); gBattleCommunication[MSG_DISPLAY] = 1; - gBattlescriptCurrInstr = BattleScript_ProteanActivates; + BattleScriptCall(BattleScript_ProteanActivates); *effect = 1; } } @@ -2430,26 +2424,17 @@ static void CancellerZMoves(u32 *effect) if (gProtectStructs[gBattlerAttacker].powderSelfDmg) { if (!alreadyUsed) - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ZMoveActivatePowder; - } + BattleScriptCall(BattleScript_ZMoveActivatePowder); } else if (GetMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_STATUS) { if (!alreadyUsed) - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ZMoveActivateStatus; - } + BattleScriptCall(BattleScript_ZMoveActivateStatus); } else { if (!alreadyUsed) - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ZMoveActivateDamaging; - } + BattleScriptCall(BattleScript_ZMoveActivateDamaging); } *effect = 1; } @@ -4356,8 +4341,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gEffectBattler = battler; SET_STATCHANGER(STAT_ATK, 1, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseRet; + BattleScriptCall(BattleScript_TargetAbilityStatRaiseRet); effect++; } break; @@ -4370,8 +4354,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gEffectBattler = battler; SET_STATCHANGER(STAT_SPEED, 1, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseRet; + BattleScriptCall(BattleScript_TargetAbilityStatRaiseRet); effect++; } break; @@ -4384,8 +4367,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gEffectBattler = battler; SET_STATCHANGER(STAT_DEF, 2, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseRet; + BattleScriptCall(BattleScript_TargetAbilityStatRaiseRet); effect++; } break; @@ -4398,8 +4380,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gEffectBattler = battler; SET_STATCHANGER(STAT_DEF, 1, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseRet; + BattleScriptCall(BattleScript_TargetAbilityStatRaiseRet); effect++; } break; @@ -4414,8 +4395,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gEffectBattler = battler; SET_STATCHANGER(STAT_SPATK, 1, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseRet; + BattleScriptCall(BattleScript_TargetAbilityStatRaiseRet); effect++; } break; @@ -4430,8 +4410,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (GetMoveEffect(gCurrentMove) == EFFECT_HIT_ESCAPE && CanBattlerSwitch(gBattlerAttacker)) gProtectStructs[battler].disableEjectPack = TRUE; // Set flag for target - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WeakArmorActivates; + BattleScriptCall(BattleScript_WeakArmorActivates); effect++; } break; @@ -4448,8 +4427,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gDisableStructs[gBattlerAttacker].disabledMove = gChosenMove; gDisableStructs[gBattlerAttacker].disableTimer = 4; PREPARE_MOVE_BUFFER(gBattleTextBuff1, gChosenMove); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_CursedBodyActivates; + BattleScriptCall(BattleScript_CursedBodyActivates); effect++; } break; @@ -4473,8 +4451,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gLastUsedAbility = gBattleMons[gBattlerAttacker].ability; gBattleMons[gBattlerAttacker].ability = gDisableStructs[gBattlerAttacker].overwrittenAbility = gBattleMons[gBattlerTarget].ability; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MummyActivates; + BattleScriptCall(BattleScript_MummyActivates); effect++; break; } @@ -4497,8 +4474,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gLastUsedAbility = gBattleMons[gBattlerAttacker].ability; gBattleMons[gBattlerAttacker].ability = gDisableStructs[gBattlerAttacker].overwrittenAbility = gBattleMons[gBattlerTarget].ability; gBattleMons[gBattlerTarget].ability = gDisableStructs[gBattlerTarget].overwrittenAbility = gLastUsedAbility; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WanderingSpiritActivates; + BattleScriptCall(BattleScript_WanderingSpiritActivates); effect++; break; } @@ -4511,8 +4487,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { SET_STATCHANGER(STAT_ATK, MAX_STAT_STAGE - gBattleMons[battler].statStages[STAT_ATK], FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetsStatWasMaxedOut; + BattleScriptCall(BattleScript_TargetsStatWasMaxedOut); effect++; } break; @@ -4528,8 +4503,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { SET_BATTLER_TYPE(battler, moveType); PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; + BattleScriptCall(BattleScript_ColorChangeActivates); effect++; } break; @@ -4545,8 +4519,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { SET_STATCHANGER(STAT_SPEED, 1, TRUE); PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_GooeyActivates; + BattleScriptCall(BattleScript_GooeyActivates); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } @@ -4564,8 +4537,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; + BattleScriptCall(BattleScript_RoughSkinActivates); effect++; } break; @@ -4579,8 +4551,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if ((battler = IsAbilityOnField(ABILITY_DAMP))) { gBattleScripting.battler = battler - 1; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_DampPreventsAftermath; + BattleScriptCall(BattleScript_DampPreventsAftermath); } else { @@ -4588,8 +4559,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleStruct->moveDamage[gBattlerAttacker] = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AftermathDmg; + BattleScriptCall(BattleScript_AftermathDmg); } effect++; } @@ -4605,8 +4575,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleScripting.battler = gBattlerTarget; gBattleStruct->moveDamage[gBattlerAttacker] = gBattleStruct->moveDamage[gBattlerTarget]; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AftermathDmg; + BattleScriptCall(BattleScript_AftermathDmg); effect++; } break; @@ -4650,8 +4619,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleStruct->battlerState[gBattlerAttacker].sleepClauseEffectExempt = TRUE; gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_SLEEP; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + BattleScriptCall(BattleScript_AbilityStatusEffect); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } @@ -4672,8 +4640,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + BattleScriptCall(BattleScript_AbilityStatusEffect); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } @@ -4693,8 +4660,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + BattleScriptCall(BattleScript_AbilityStatusEffect); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } @@ -4712,8 +4678,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + BattleScriptCall(BattleScript_AbilityStatusEffect); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } @@ -4733,8 +4698,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL)) { gBattleMons[gBattlerAttacker].status2 |= STATUS2_INFATUATED_WITH(gBattlerTarget); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; + BattleScriptCall(BattleScript_CuteCharmActivates); effect++; } break; @@ -4742,8 +4706,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (gBattleStruct->illusion[gBattlerTarget].state == ILLUSION_ON && IsBattlerTurnDamaged(gBattlerTarget)) { gBattleScripting.battler = gBattlerTarget; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_IllusionOff; + BattleScriptCall(BattleScript_IllusionOff); effect++; } break; @@ -4754,8 +4717,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerTurnDamaged(gBattlerTarget)) { gEffectBattler = gBattlerTarget; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_CottonDownActivates; + BattleScriptCall(BattleScript_CottonDownActivates); effect++; } break; @@ -4768,8 +4730,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gEffectBattler = battler; SET_STATCHANGER(STAT_SPEED, 6, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseRet; + BattleScriptCall(BattleScript_TargetAbilityStatRaiseRet); effect++; } break; @@ -4781,15 +4742,13 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { if (gBattleWeather & B_WEATHER_PRIMAL_ANY && HasWeatherEffect()) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BlockedByPrimalWeatherRet; + BattleScriptCall(BattleScript_BlockedByPrimalWeatherRet); effect++; } else if (TryChangeBattleWeather(battler, BATTLE_WEATHER_SANDSTORM, TRUE)) { gBattleScripting.battler = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SandSpitActivates; + BattleScriptCall(BattleScript_SandSpitActivates); effect++; } } @@ -4810,8 +4769,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } gStatuses3[gBattlerAttacker] |= STATUS3_PERISH_SONG; gDisableStructs[gBattlerAttacker].perishSongTimer = 3; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_PerishBodyActivates; + BattleScriptCall(BattleScript_PerishBodyActivates); effect++; } break; @@ -4833,14 +4791,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { case SPECIES_CRAMORANT_GORGING: TryBattleFormChange(battler, FORM_CHANGE_HIT_BY_MOVE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_GulpMissileGorging; + BattleScriptCall(BattleScript_GulpMissileGorging); effect++; break; case SPECIES_CRAMORANT_GULPING: TryBattleFormChange(battler, FORM_CHANGE_HIT_BY_MOVE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_GulpMissileGulping; + BattleScriptCall(BattleScript_GulpMissileGulping); effect++; break; } @@ -4853,8 +4809,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerTarget) && TryChangeBattleTerrain(gBattlerTarget, STATUS_FIELD_GRASSY_TERRAIN, &gFieldTimers.terrainTimer)) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_SeedSowerActivates; + BattleScriptCall(BattleScript_SeedSowerActivates); effect++; } break; @@ -4867,8 +4822,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gEffectBattler = gBattlerTarget; SET_STATCHANGER(STAT_ATK, 1, FALSE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseRet; + BattleScriptCall(BattleScript_TargetAbilityStatRaiseRet); effect++; } break; @@ -4881,8 +4835,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && HadMoreThanHalfHpNowDoesnt(gBattlerTarget) && !(TestIfSheerForceAffected(gBattlerAttacker, gCurrentMove))) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AngerShellActivates; + BattleScriptCall(BattleScript_AngerShellActivates); effect++; } break; @@ -4896,8 +4849,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerTurnDamaged(gBattlerTarget) && IsBattlerAlive(gBattlerTarget)) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WindPowerActivates; + BattleScriptCall(BattleScript_WindPowerActivates); effect++; } break; @@ -4910,8 +4862,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && (gSideTimers[GetBattlerSide(gBattlerAttacker)].toxicSpikesAmount != 2)) { SWAP(gBattlerAttacker, gBattlerTarget, i); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ToxicDebrisActivates; + BattleScriptCall(BattleScript_ToxicDebrisActivates); effect++; } break; @@ -4932,8 +4883,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gBattleScripting.moveEffect = MOVE_EFFECT_POISON; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + BattleScriptCall(BattleScript_AbilityStatusEffect); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } @@ -4948,8 +4898,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { gBattleScripting.moveEffect = MOVE_EFFECT_TOXIC; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + BattleScriptCall(BattleScript_AbilityStatusEffect); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } @@ -4974,8 +4923,7 @@ 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)) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AttackerFormChange; + BattleScriptCall(BattleScript_AttackerFormChange); effect++; } break; @@ -4987,8 +4935,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleStruct->poisonPuppeteerConfusion = FALSE; gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + BattleScriptCall(BattleScript_AbilityStatusEffect); effect++; } break; @@ -5115,23 +5062,19 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { case 1: // status cleared gBattleMons[battler].status1 = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; + BattleScriptCall(BattleScript_AbilityCuredStatus); break; case 2: // get rid of confusion RemoveConfusionStatus(battler); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; + BattleScriptCall(BattleScript_AbilityCuredStatus); break; case 3: // get rid of infatuation gBattleMons[battler].status2 &= ~STATUS2_INFATUATION; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BattlerGotOverItsInfatuation; + BattleScriptCall(BattleScript_BattlerGotOverItsInfatuation); break; case 4: // get rid of taunt gDisableStructs[battler].tauntTimer = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BattlerShookOffTaunt; + BattleScriptCall(BattleScript_BattlerShookOffTaunt); break; } @@ -5155,7 +5098,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleStruct->synchronizeMoveEffect, STATUS_CHECK_TRIGGER); - BattleScriptPushCursor(); gBattleScripting.battler = gBattlerAbility = gBattlerTarget; RecordAbilityBattle(gBattlerTarget, ABILITY_SYNCHRONIZE); @@ -5167,13 +5109,13 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleScripting.moveEffect = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_SYNCHRONIZE); - gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + BattleScriptCall(BattleScript_SynchronizeActivates); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } else // Synchronize ability pop up still shows up even if status fails { - gBattlescriptCurrInstr = BattleScript_AbilityPopUp; + BattleScriptCall(BattleScript_AbilityPopUp); } } break; @@ -5189,7 +5131,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleStruct->synchronizeMoveEffect, STATUS_CHECK_TRIGGER); - BattleScriptPushCursor(); gBattleScripting.battler = gBattlerAbility = gBattlerAttacker; RecordAbilityBattle(gBattlerAttacker, ABILITY_SYNCHRONIZE); @@ -5201,13 +5142,13 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleScripting.moveEffect = gBattleStruct->synchronizeMoveEffect; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_SYNCHRONIZE); - gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + BattleScriptCall(BattleScript_SynchronizeActivates); gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } else // Synchronize ability pop up still shows up even if status fails { - gBattlescriptCurrInstr = BattleScript_AbilityPopUp; + BattleScriptCall(BattleScript_AbilityPopUp); } } break; @@ -5526,8 +5467,7 @@ void BattleScriptExecute(const u8 *BS_ptr) void BattleScriptPushCursorAndCallback(const u8 *BS_ptr) { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BS_ptr; + BattleScriptCall(BS_ptr); gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size++] = gBattleMainFunc; gBattleMainFunc = RunBattleScriptCommands; } @@ -5894,11 +5834,10 @@ static enum ItemEffect HealConfuseBerry(u32 battler, u32 itemId, u32 flavorId, e } else { - BattleScriptPushCursor(); if (GetFlavorRelationByPersonality(gBattleMons[battler].personality, flavorId) < 0) - gBattlescriptCurrInstr = BattleScript_BerryConfuseHealRet; + BattleScriptCall(BattleScript_BerryConfuseHealRet); else - gBattlescriptCurrInstr = BattleScript_ItemHealHP_RemoveItemRet; + BattleScriptCall(BattleScript_ItemHealHP_RemoveItemRet); } return ITEM_HP_CHANGE; @@ -5921,14 +5860,9 @@ static enum ItemEffect StatRaiseBerry(u32 battler, u32 itemId, u32 statId, enum gBattleScripting.animArg2 = 0; if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet; - } + BattleScriptCall(BattleScript_ConsumableStatRaiseRet); return ITEM_STATS_CHANGE; } return ITEM_NO_EFFECT; @@ -5972,15 +5906,9 @@ static enum ItemEffect RandomStatRaiseBerry(u32 battler, u32 itemId, enum ItemCa gBattleScripting.animArg1 = STAT_ANIM_PLUS2 + stat; gBattleScripting.animArg2 = 0; if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet; - } - + BattleScriptCall(BattleScript_ConsumableStatRaiseRet); return ITEM_STATS_CHANGE; } return ITEM_NO_EFFECT; @@ -5997,8 +5925,7 @@ static enum ItemEffect TrySetMicleBerry(u32 battler, u32 itemId, enum ItemCaseId } else { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MicleBerryActivateRet; + BattleScriptCall(BattleScript_MicleBerryActivateRet); } return ITEM_EFFECT_OTHER; } @@ -6018,8 +5945,7 @@ static enum ItemEffect TrySetEnigmaBerry(u32 battler) if (GetBattlerAbility(battler) == ABILITY_RIPEN) gBattleStruct->moveDamage[battler] *= 2; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ItemHealHP_RemoveItemRet; + BattleScriptCall(BattleScript_ItemHealHP_RemoveItemRet); return ITEM_HP_CHANGE; } return ITEM_NO_EFFECT; @@ -6047,8 +5973,7 @@ static enum ItemEffect DamagedStatBoostBerryEffect(u32 battler, u8 statId, u8 ca gBattleScripting.battler = battler; gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + statId; gBattleScripting.animArg2 = 0; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet; + BattleScriptCall(BattleScript_ConsumableStatRaiseRet); return ITEM_STATS_CHANGE; } return ITEM_NO_EFFECT; @@ -6065,14 +5990,9 @@ enum ItemEffect TryHandleSeed(u32 battler, u32 terrainFlag, u32 statId, u32 item gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + statId; gBattleScripting.animArg2 = 0; if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN) - { BattleScriptExecute(BattleScript_ConsumableStatRaiseEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ConsumableStatRaiseRet; - } + BattleScriptCall(BattleScript_ConsumableStatRaiseRet); return ITEM_STATS_CHANGE; } return ITEM_NO_EFFECT; @@ -6094,8 +6014,7 @@ static enum ItemEffect TryEjectPack(u32 battler, enum ItemCaseId caseID) } else { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_EjectPackActivate_Ret; + BattleScriptCall(BattleScript_EjectPackActivate_Ret); } return ITEM_STATS_CHANGE; } @@ -6113,14 +6032,9 @@ static enum ItemEffect ConsumeBerserkGene(u32 battler, enum ItemCaseId caseID) gBattleScripting.animArg1 = STAT_ANIM_PLUS1 + STAT_ATK; gBattleScripting.animArg2 = 0; if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_BerserkGeneRetEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerserkGeneRet; - } + BattleScriptCall(BattleScript_BerserkGeneRet); return ITEM_STATS_CHANGE; } @@ -6152,14 +6066,10 @@ static u32 ItemRestorePp(u32 battler, u32 itemId, enum ItemCaseId caseID) PREPARE_MOVE_BUFFER(gBattleTextBuff1, move); if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_BerryPPHealEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryPPHealRet; - } + BattleScriptCall(BattleScript_BerryPPHealRet); + BtlController_EmitSetMonData(battler, B_COMM_TO_CONTROLLER, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); MarkBattlerForControllerExec(battler); if (MOVE_IS_PERMANENT(battler, i)) @@ -6187,14 +6097,9 @@ static u32 ItemHealHp(u32 battler, u32 itemId, enum ItemCaseId caseID, bool32 pe gBattlerAbility = battler; // in SWSH, berry juice shows ability pop up but has no effect. This is mimicked here if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_ItemHealHP_RemoveItemEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ItemHealHP_RemoveItemRet; - } + BattleScriptCall(BattleScript_ItemHealHP_RemoveItemRet); return ITEM_HP_CHANGE; } @@ -6279,14 +6184,9 @@ static u32 TryConsumeMirrorHerb(u32 battler, enum ItemCaseId caseID) gProtectStructs[battler].eatMirrorHerb = 0; ChooseStatBoostAnimation(battler); if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_MirrorHerbCopyStatChangeEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MirrorHerbCopyStatChange; - } + BattleScriptCall(BattleScript_MirrorHerbCopyStatChange); effect = ITEM_STATS_CHANGE; } return effect; @@ -6304,14 +6204,9 @@ static inline u32 TryBoosterEnergy(u32 battler, enum ItemCaseId caseID) gBattlerAbility = gBattleScripting.battler = battler; gDisableStructs[battler].boosterEnergyActivates = TRUE; if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseID == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_BoosterEnergyEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BoosterEnergyRet; - } + BattleScriptCall(BattleScript_BoosterEnergyRet); return ITEM_EFFECT_OTHER; } @@ -6421,8 +6316,7 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) if (gBattleMons[battler].status1 & STATUS1_PARALYSIS && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_PARALYSIS; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureParRet; + BattleScriptCall(BattleScript_BerryCureParRet); effect = ITEM_STATUS_CHANGE; } break; @@ -6430,8 +6324,7 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) if (gBattleMons[battler].status1 & STATUS1_PSN_ANY && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; + BattleScriptCall(BattleScript_BerryCurePsnRet); effect = ITEM_STATUS_CHANGE; } break; @@ -6439,8 +6332,7 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) if (gBattleMons[battler].status1 & STATUS1_BURN && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_BURN; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; + BattleScriptCall(BattleScript_BerryCureBrnRet); effect = ITEM_STATUS_CHANGE; } break; @@ -6448,15 +6340,13 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) if (gBattleMons[battler].status1 & STATUS1_FREEZE && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_FREEZE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; + BattleScriptCall(BattleScript_BerryCureFrzRet); effect = ITEM_STATUS_CHANGE; } if (gBattleMons[battler].status1 & STATUS1_FROSTBITE && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_FROSTBITE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureFrbRet; + BattleScriptCall(BattleScript_BerryCureFrbRet); effect = ITEM_STATUS_CHANGE; } break; @@ -6465,8 +6355,7 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) { gBattleMons[battler].status1 &= ~STATUS1_SLEEP; gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; + BattleScriptCall(BattleScript_BerryCureSlpRet); effect = ITEM_STATUS_CHANGE; TryDeactivateSleepClause(GetBattlerSide(battler), gBattlerPartyIndexes[battler]); } @@ -6475,8 +6364,7 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) if (gBattleMons[battler].status2 & STATUS2_CONFUSION && !UnnerveOn(battler, gLastUsedItem)) { RemoveConfusionStatus(battler); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; + BattleScriptCall(BattleScript_BerryCureConfusionRet); effect = ITEM_EFFECT_OTHER; } break; @@ -6485,8 +6373,7 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) { gBattleScripting.savedBattler = gBattlerAttacker; gBattlerAttacker = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MentalHerbCureRet; + BattleScriptCall(BattleScript_MentalHerbCureRet); effect = ITEM_EFFECT_OTHER; } break; @@ -6517,9 +6404,8 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) gBattleMons[battler].status1 = 0; RemoveConfusionStatus(battler); - BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM; - gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; + BattleScriptCall(BattleScript_BerryCureChosenStatusRet); effect = ITEM_STATUS_CHANGE; } break; @@ -6531,8 +6417,7 @@ static u8 ItemEffectMoveEnd(u32 battler, enum ItemHoldEffect holdEffect) gBattleMons[battler].status2 |= STATUS2_FOCUS_ENERGY; gBattleScripting.battler = battler; gPotentialItemEffectBattler = battler; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryFocusEnergyRet; + BattleScriptCall(BattleScript_BerryFocusEnergyRet); effect = ITEM_EFFECT_OTHER; } break; @@ -6595,14 +6480,9 @@ static inline bool32 TryCureStatus(u32 battler, enum ItemCaseId caseId) gBattleMons[battler].status1 = 0; RemoveConfusionStatus(battler); if (caseId == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN || caseId == ITEMEFFECT_NORMAL) - { BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; - } + BattleScriptCall(BattleScript_BerryCureChosenStatusRet); effect = ITEM_STATUS_CHANGE; } @@ -7100,8 +6980,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gLastUsedItem = atkItem; SET_STATCHANGER(STAT_SPEED, 2, FALSE); effect = ITEM_STATS_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AttackerItemStatRaise; + BattleScriptCall(BattleScript_AttackerItemStatRaise); } break; default: @@ -7129,8 +7008,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gBattleStruct->moveDamage[gBattlerAttacker] = (gBattleScripting.savedDmg / atkHoldEffectParam) * -1; if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = -1; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; + BattleScriptCall(BattleScript_ItemHealHP_Ret); effect = ITEM_HP_CHANGE; } break; @@ -7147,8 +7025,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1; effect = ITEM_HP_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ItemHurtRet; + BattleScriptCall(BattleScript_ItemHurtRet); gLastUsedItem = atkItem; } break; @@ -7163,8 +7040,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gBattleScripting.battler = gBattlerAttacker; SET_STATCHANGER(STAT_SPATK, 1, FALSE); effect = ITEM_STATS_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AttackerItemStatRaise; + BattleScriptCall(BattleScript_AttackerItemStatRaise); } break; default: @@ -7181,8 +7057,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) if (IsBattlerTurnDamaged(gBattlerTarget)) { effect = ITEM_EFFECT_OTHER; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AirBaloonMsgPop; + BattleScriptCall(BattleScript_AirBaloonMsgPop); } break; case HOLD_EFFECT_ROCKY_HELMET: @@ -7196,8 +7071,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) if (gBattleStruct->moveDamage[gBattlerAttacker] == 0) gBattleStruct->moveDamage[gBattlerAttacker] = 1; effect = ITEM_HP_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_RockyHelmetActivates; + BattleScriptCall(BattleScript_RockyHelmetActivates); PREPARE_ITEM_BUFFER(gBattleTextBuff1, gLastUsedItem); RecordItemEffectBattle(battler, HOLD_EFFECT_ROCKY_HELMET); } @@ -7208,8 +7082,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) && gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_SUPER_EFFECTIVE) { effect = ITEM_STATS_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WeaknessPolicy; + BattleScriptCall(BattleScript_WeaknessPolicy); } break; case HOLD_EFFECT_SNOWBALL: @@ -7218,8 +7091,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) && moveType == TYPE_ICE) { effect = ITEM_STATS_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; + BattleScriptCall(BattleScript_TargetItemStatRaise); SET_STATCHANGER(STAT_ATK, 1, FALSE); } break; @@ -7229,8 +7101,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) && moveType == TYPE_WATER) { effect = ITEM_STATS_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; + BattleScriptCall(BattleScript_TargetItemStatRaise); SET_STATCHANGER(STAT_SPDEF, 1, FALSE); } break; @@ -7240,8 +7111,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) && moveType == TYPE_ELECTRIC) { effect = ITEM_STATS_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; + BattleScriptCall(BattleScript_TargetItemStatRaise); SET_STATCHANGER(STAT_ATK, 1, FALSE); } break; @@ -7251,8 +7121,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) && moveType == TYPE_WATER) { effect = ITEM_STATS_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; + BattleScriptCall(BattleScript_TargetItemStatRaise); SET_STATCHANGER(STAT_SPATK, 1, FALSE); } break; @@ -7273,8 +7142,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gBattleStruct->moveDamage[gBattlerAttacker] *= 2; effect = ITEM_HP_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_JabocaRowapBerryActivates; + BattleScriptCall(BattleScript_JabocaRowapBerryActivates); PREPARE_ITEM_BUFFER(gBattleTextBuff1, gLastUsedItem); RecordItemEffectBattle(battler, HOLD_EFFECT_JABOCA_BERRY); } @@ -7293,8 +7161,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) gBattleStruct->moveDamage[gBattlerAttacker] *= 2; effect = ITEM_HP_CHANGE; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_JabocaRowapBerryActivates; + BattleScriptCall(BattleScript_JabocaRowapBerryActivates); PREPARE_ITEM_BUFFER(gBattleTextBuff1, gLastUsedItem); RecordItemEffectBattle(battler, HOLD_EFFECT_ROWAP_BERRY); } @@ -7330,8 +7197,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) // No sticky hold checks. gEffectBattler = battler; // gEffectBattler = target StealTargetItem(gBattlerAttacker, gBattlerTarget); // Attacker takes target's barb - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_StickyBarbTransfer; + BattleScriptCall(BattleScript_StickyBarbTransfer); effect = ITEM_EFFECT_OTHER; } break; @@ -7392,10 +7258,7 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_WHITE_HERB: effect = RestoreWhiteHerbStats(battler); if (effect != 0) - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; - } + BattleScriptCall(BattleScript_WhiteHerbRet); break; default: break; @@ -10319,14 +10182,9 @@ bool32 TryClearIllusion(u32 battler, u32 caseID) gBattleScripting.battler = battler; if (caseID == ABILITYEFFECT_ON_SWITCHIN) - { BattleScriptPushCursorAndCallback(BattleScript_IllusionOffEnd3); - } else - { - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_IllusionOff; - } + BattleScriptCall(BattleScript_IllusionOff); return TRUE; } diff --git a/src/battle_util2.c b/src/battle_util2.c index fd2312bb5b..607aebfba6 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -141,9 +141,8 @@ u32 BattlePalace_TryEscapeStatus(u8 battler) // Wake up from Uproar gBattleMons[battler].status1 &= ~(STATUS1_SLEEP); gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); - BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR; - gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + BattleScriptCall(BattleScript_MoveUsedWokeUp); effect = 2; } else @@ -171,9 +170,8 @@ u32 BattlePalace_TryEscapeStatus(u8 battler) { // Wake up gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); - BattleScriptPushCursor(); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP; - gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + BattleScriptCall(BattleScript_MoveUsedWokeUp); effect = 2; } } @@ -192,8 +190,7 @@ u32 BattlePalace_TryEscapeStatus(u8 battler) { // Unfreeze gBattleMons[battler].status1 &= ~(STATUS1_FREEZE); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + BattleScriptCall(BattleScript_MoveUsedUnfroze); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED; } effect = 2;