diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index e43929c8d..4374482d6 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1400,6 +1400,33 @@ .byte \case .endm + .macro jumpifshelltrap battler:req, jumpInstr:req + callnative BS_JumpIfShellTrap + .byte \battler + .4byte \jumpInstr + .endm + + .macro jumpifemergencyexited battler:req, jumpInstr:req + callnative BS_JumpIfEmergencyExited + .byte \battler + .4byte \jumpInstr + .endm + + .macro jumpifrodaffected battler:req, jumpInstr:req + callnative BS_JumpIfRod + .4byte \jumpInstr + .endm + + .macro jumpifabsorbaffected battler:req, jumpInstr:req + callnative BS_JumpIfAbsorb + .4byte \jumpInstr + .endm + + .macro jumpifmotoraffected battler:req, jumpInstr:req + callnative BS_JumpIfMotor + .4byte \jumpInstr + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES @@ -2017,21 +2044,6 @@ various BS_ATTACKER, VARIOUS_SHELL_SIDE_ARM_CHECK .endm - .macro jumpifrodaffected battler:req, jumpInstr:req - various \battler, VARIOUS_JUMP_IF_ROD - .4byte \jumpInstr - .endm - - .macro jumpifabsorbaffected battler:req, jumpInstr:req - various \battler, VARIOUS_JUMP_IF_ABSORB - .4byte \jumpInstr - .endm - - .macro jumpifmotoraffected battler:req, jumpInstr:req - various \battler, VARIOUS_JUMP_IF_MOTOR - .4byte \jumpInstr - .endm - .macro jumpifteanoberry jumpInstr:req various BS_ATTACKER, VARIOUS_TEATIME_TARGETS .4byte \jumpInstr @@ -2301,16 +2313,6 @@ waitmessage B_WAIT_TIME_LONG .endm - .macro jumpifemergencyexited battler:req, jumpInstr:req - various \battler, VARIOUS_JUMP_IF_EMERGENCY_EXITED - .4byte \jumpInstr - .endm - - .macro jumpifshelltrap battler:req, ptr:req - various \battler, VARIOUS_JUMP_IF_SHELL_TRAP - .4byte \ptr - .endm - .macro hitswitchtargetfailed various 0, VARIOUS_HIT_SWITCH_TARGET_FAILED .endm diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index b6ed84561..f004d7ff1 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -241,18 +241,13 @@ #define VARIOUS_SET_BEAK_BLAST 150 #define VARIOUS_SWAP_SIDE_STATUSES 151 #define VARIOUS_SWAP_STATS 152 -#define VARIOUS_JUMP_IF_ROD 153 -#define VARIOUS_JUMP_IF_ABSORB 154 -#define VARIOUS_JUMP_IF_MOTOR 155 #define VARIOUS_TEATIME_INVUL 156 #define VARIOUS_TEATIME_TARGETS 157 #define VARIOUS_TRY_WIND_RIDER_POWER 158 #define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 159 #define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 160 -#define VARIOUS_JUMP_IF_EMERGENCY_EXITED 161 #define VARIOUS_STORE_HEALING_WISH 162 #define VARIOUS_HIT_SWITCH_TARGET_FAILED 163 -#define VARIOUS_JUMP_IF_SHELL_TRAP 164 #define VARIOUS_TRY_REVIVAL_BLESSING 165 #define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 166 #define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 167 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 45f497201..e0c7d1c20 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8452,8 +8452,8 @@ static bool32 IsAbilityRodAffected(void) if (gBattleStruct->dynamicMoveType == 0) moveType = gBattleMoves[gCurrentMove].type; - else if (!(gBattleStruct->dynamicMoveType & 0x40)) - moveType = gBattleStruct->dynamicMoveType & 0x3F; + else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1)) + moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; else moveType = gBattleMoves[gCurrentMove].type; @@ -8469,8 +8469,8 @@ static bool32 IsAbilityMotorAffected(void) if (gBattleStruct->dynamicMoveType == 0) moveType = gBattleMoves[gCurrentMove].type; - else if (!(gBattleStruct->dynamicMoveType & 0x40)) - moveType = gBattleStruct->dynamicMoveType & 0x3F; + else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1)) + moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; else moveType = gBattleMoves[gCurrentMove].type; @@ -8486,8 +8486,8 @@ static bool32 IsAbilityAbsorbAffected(void) if (gBattleStruct->dynamicMoveType == 0) moveType = gBattleMoves[gCurrentMove].type; - else if (!(gBattleStruct->dynamicMoveType & 0x40)) - moveType = gBattleStruct->dynamicMoveType & 0x3F; + else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1)) + moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; else moveType = gBattleMoves[gCurrentMove].type; @@ -10810,33 +10810,6 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->jumpInstr; return; } - case VARIOUS_JUMP_IF_ROD: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (IsAbilityRodAffected()) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } - case VARIOUS_JUMP_IF_MOTOR: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (IsAbilityMotorAffected()) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } - case VARIOUS_JUMP_IF_ABSORB: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (IsAbilityAbsorbAffected()) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_TRY_WIND_RIDER_POWER: { VARIOUS_ARGS(const u8 *failInstr); @@ -10869,15 +10842,6 @@ static void Cmd_various(void) AbilityBattleEffects(ABILITYEFFECT_ON_TERRAIN, gActiveBattler, 0, 0, 0); return; } - case VARIOUS_JUMP_IF_EMERGENCY_EXITED: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (gSpecialStatuses[gActiveBattler].emergencyExited) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_STORE_HEALING_WISH: { VARIOUS_ARGS(); @@ -10894,15 +10858,6 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->nextInstr; return; } - case VARIOUS_JUMP_IF_SHELL_TRAP: - { - VARIOUS_ARGS(const u8 *jumpInstr); - if (gProtectStructs[gActiveBattler].shellTrap) - gBattlescriptCurrInstr = cmd->jumpInstr; - else - gBattlescriptCurrInstr = cmd->nextInstr; - return; - } case VARIOUS_TRY_REVIVAL_BLESSING: { VARIOUS_ARGS(const u8 *failInstr); @@ -16389,3 +16344,51 @@ void BS_HandleUltraBurst(void) HandleScriptMegaPrimalBurst(cmd->caseId, gActiveBattler, HANDLE_TYPE_ULTRA_BURST); gBattlescriptCurrInstr = cmd->nextInstr; } + +void BS_JumpIfShellTrap(void) +{ + NATIVE_ARGS(u8 battler, const u8 *jumpInstr); + + gActiveBattler = GetBattlerForBattleScript(cmd->battler); + if (gProtectStructs[gActiveBattler].shellTrap) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_JumpIfEmergencyExited(void) +{ + NATIVE_ARGS(u8 battler, const u8 *jumpInstr); + gActiveBattler = GetBattlerForBattleScript(cmd->battler); + if (gSpecialStatuses[gActiveBattler].emergencyExited) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_JumpIfRod(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + if (IsAbilityRodAffected()) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_JumpIfAbsorb(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + if (IsAbilityAbsorbAffected()) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_JumpIfMotor(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + if (IsAbilityMotorAffected()) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +}