pokeplatinum/res/battle/scripts/subscripts/subscript_pursuit.s
2024-07-16 12:01:40 -07:00

122 lines
4.3 KiB
ArmAsm

#include "macros/btlcmd.inc"
.data
_000:
Call BATTLE_SUBSCRIPT_PUSH_ATTACKER_AND_DEFENDER
_001:
TryPursuit _238
UpdateVar OPCODE_SET, BTLVAR_POWER_MULTI, 20
CalcCrit
CalcDamage
ApplyTypeEffectiveness
UpdateVar OPCODE_FLAG_OFF, BTLVAR_BATTLE_CTX_STATUS, SYSCTL_SKIP_ATTACK_MESSAGE
UpdateVar OPCODE_FLAG_OFF, BTLVAR_BATTLE_CTX_STATUS, SYSCTL_PLAYED_MOVE_ANIMATION
PrintAttackMessage
Wait
CompareVarToValue OPCODE_FLAG_SET, BTLVAR_MOVE_STATUS_FLAGS, MOVE_STATUS_DID_NOT_HIT, _154
PlayMoveAnimation BTLSCR_ATTACKER
Wait
CheckSubstitute BTLSCR_DEFENDER, _108
UpdateVarFromVar OPCODE_SET, BTLVAR_SCRIPT_TEMP, BTLVAR_DAMAGE
UpdateVar OPCODE_MUL, BTLVAR_SCRIPT_TEMP, -1
CompareMonDataToVar OPCODE_LTE, BTLSCR_DEFENDER, BATTLEMON_CUR_HP, BTLVAR_SCRIPT_TEMP, _051
UpdateVarFromVar OPCODE_SET, BTLVAR_ATTACKER_SHELL_BELL_DAMAGE_DEALT, BTLVAR_DAMAGE
GoTo _060
_051:
UpdateMonDataFromVar OPCODE_GET, BTLSCR_DEFENDER, BATTLEMON_CUR_HP, BTLVAR_ATTACKER_SHELL_BELL_DAMAGE_DEALT
UpdateVar OPCODE_MUL, BTLVAR_ATTACKER_SHELL_BELL_DAMAGE_DEALT, -1
_060:
UpdateVarFromVar OPCODE_SET, BTLVAR_HP_CALC_TEMP, BTLVAR_DAMAGE
UpdateVarFromVar OPCODE_SET, BTLVAR_DEFENDER_PHYSICAL_DAMAGE_TAKEN, BTLVAR_DAMAGE
UpdateVarFromVar OPCODE_SET, BTLVAR_MSG_BATTLER_TEMP, BTLVAR_DEFENDER
CheckHoldOnWith1HP BTLSCR_MSG_TEMP
Call BATTLE_SUBSCRIPT_UPDATE_HP
Call BATTLE_SUBSCRIPT_CRITICAL_HIT
Call BATTLE_SUBSCRIPT_MOVE_FOLLOWUP_MESSAGE
CompareMonDataToValue OPCODE_EQU, BTLSCR_DEFENDER, BATTLEMON_CUR_HP, 0, _166
TriggerAbilityOnHit _090
CallFromVar BTLVAR_SCRIPT_TEMP
_090:
TriggerHeldItemOnHit _094
CallFromVar BTLVAR_SCRIPT_TEMP
_094:
UpdateVar OPCODE_FLAG_ON, BTLVAR_BATTLE_CTX_STATUS, SYSCTL_MOVE_HIT
TriggerHeldItemOnPivotMove _102
CallFromVar BTLVAR_SCRIPT_TEMP
_102:
UpdateVar OPCODE_FLAG_OFF, BTLVAR_BATTLE_CTX_STATUS, SYSCTL_MOVE_HIT
GoTo _158
_108:
UpdateVarFromVar OPCODE_SET, BTLVAR_SCRIPT_TEMP, BTLVAR_DAMAGE
UpdateVar OPCODE_MUL, BTLVAR_SCRIPT_TEMP, -1
CompareMonDataToVar OPCODE_LTE, BTLSCR_DEFENDER, BATTLEMON_SUBSTITUTE_HP, BTLVAR_SCRIPT_TEMP, _128
UpdateVarFromVar OPCODE_SET, BTLVAR_ATTACKER_SHELL_BELL_DAMAGE_DEALT, BTLVAR_DAMAGE
GoTo _142
_128:
UpdateMonData OPCODE_FLAG_OFF, BTLSCR_DEFENDER, BATTLEMON_VOLATILE_STATUS, VOLATILE_CONDITION_SUBSTITUTE
UpdateMonDataFromVar OPCODE_GET, BTLSCR_DEFENDER, BATTLEMON_SUBSTITUTE_HP, BTLVAR_ATTACKER_SHELL_BELL_DAMAGE_DEALT
UpdateVar OPCODE_MUL, BTLVAR_ATTACKER_SHELL_BELL_DAMAGE_DEALT, -1
_142:
UpdateVarFromVar OPCODE_SET, BTLVAR_MSG_BATTLER_TEMP, BTLVAR_DEFENDER
Call BATTLE_SUBSCRIPT_HIT_SUBSTITUTE
Call BATTLE_SUBSCRIPT_CRITICAL_HIT
Call BATTLE_SUBSCRIPT_MOVE_FOLLOWUP_MESSAGE
GoTo _158
_154:
WaitButtonABTime 15
Call BATTLE_SUBSCRIPT_MISSED
_158:
Call BATTLE_SUBSCRIPT_POP_ATTACKER_AND_DEFENDER
UpdateVarFromVar OPCODE_GET, BTLVAR_MOVE_TEMP, BTLVAR_CURRENT_MOVE
GoTo _001
_166:
Call BATTLE_SUBSCRIPT_FAINT_CHECK_DESTINY_BOND
TriggerAbilityOnHit _172
CallFromVar BTLVAR_SCRIPT_TEMP
_172:
TriggerHeldItemOnHit _176
CallFromVar BTLVAR_SCRIPT_TEMP
_176:
UpdateVar OPCODE_FLAG_ON, BTLVAR_BATTLE_CTX_STATUS, SYSCTL_MOVE_HIT
TriggerHeldItemOnPivotMove _184
CallFromVar BTLVAR_SCRIPT_TEMP
_184:
UpdateVar OPCODE_FLAG_OFF, BTLVAR_BATTLE_CTX_STATUS, SYSCTL_MOVE_HIT
UpdateVarFromVar OPCODE_SET, BTLVAR_SCRIPT_TEMP, BTLVAR_FAINTED_MON
UpdateVar OPCODE_SET, BTLVAR_FAINTED_MON, BATTLER_PLAYER_SLOT_1
UpdateVarFromVar OPCODE_SET, BTLVAR_CALC_TEMP, BTLVAR_BATTLE_CTX_STATUS_2
UpdateVar OPCODE_RIGHT_SHIFT, BTLVAR_CALC_TEMP, 0x0000001C
UpdateVar OPCODE_FLAG_OFF, BTLVAR_BATTLE_CTX_STATUS_2, SYSCTL_PAYOUT_EXP
_208:
CompareVarToValue OPCODE_FLAG_NOT, BTLVAR_CALC_TEMP, 0x00000001, _215
Call BATTLE_SUBSCRIPT_GRANT_EXP
_215:
UpdateVar OPCODE_ADD, BTLVAR_FAINTED_MON, BATTLER_ENEMY_SLOT_1
UpdateVar OPCODE_RIGHT_SHIFT, BTLVAR_CALC_TEMP, 0x00000001
CompareVarToValue OPCODE_NEQ, BTLVAR_CALC_TEMP, 0x00000000, _208
// BUG: Acid Rain (see docs/bugs_and_glitches.md)
UpdateVarFromVar OPCODE_SUB_TO_ZERO, BTLVAR_FIELD_CONDITIONS, BTLVAR_SCRIPT_TEMP
Call BATTLE_SUBSCRIPT_POP_ATTACKER_AND_DEFENDER
UpdateVarFromVar OPCODE_GET, BTLVAR_MOVE_TEMP, BTLVAR_CURRENT_MOVE
_238:
End