Use generated sub_seq.naix header in C sources

This commit is contained in:
Rachel 2024-05-04 06:20:30 -07:00
parent fefa621f09
commit 1bc1c14772
9 changed files with 535 additions and 522 deletions

View File

@ -14,7 +14,6 @@ gen_asm_consts_root = gen_consts_root / 'asm'
gen_py_consts_root = gen_consts_root / 'py'
generated_consts_c = custom_target('generated_consts_c',
build_by_default: true,
capture: true,
output: 'generated_consts_c',
input: consts_manifests,
@ -27,7 +26,6 @@ generated_consts_c = custom_target('generated_consts_c',
)
generated_consts_asm = custom_target('generated_consts_asm',
build_by_default: true,
capture: true,
output: 'generated_consts_asm',
input: consts_manifests,
@ -40,7 +38,6 @@ generated_consts_asm = custom_target('generated_consts_asm',
)
generated_consts_py = custom_target('generated_consts_py',
build_by_default: true,
capture: true,
output: 'generated_consts_py',
input: consts_manifests,

View File

@ -208,6 +208,7 @@ c_commands = [
f'-iquote{homedir}',
f'-iquote{homedir}/include',
f'-iquote{homedir}/build', # Meson includes this implicitly
f'-iquote{homedir}/build/res', # knarc-generated NAIX headers
f'-iquote{homedir}/build/res/text', # GMM-generated headers
f'-include{homedir}/include/pch/global_pch.h',
'-mthumb',

View File

@ -1,152 +1,152 @@
#include "constants/battle/side_effects.h"
#include "battle/scripts/sub_seq.naix"
#include "consts/generated/c/battle.h"
#include "consts/generated/c/battle_subscripts.h"
static const int sSideEffectSubscripts[] = {
[MOVE_SUBSCRIPT_PTR_NONE] = NULL,
[MOVE_SUBSCRIPT_PTR_SLEEP] = BATTLE_SUBSCRIPT_FALL_ASLEEP,
[MOVE_SUBSCRIPT_PTR_POISON] = BATTLE_SUBSCRIPT_POISON,
[MOVE_SUBSCRIPT_PTR_BURN] = BATTLE_SUBSCRIPT_BURN,
[MOVE_SUBSCRIPT_PTR_FREEZE] = BATTLE_SUBSCRIPT_FREEZE,
[MOVE_SUBSCRIPT_PTR_PARALYZE] = BATTLE_SUBSCRIPT_PARALYZE,
[MOVE_SUBSCRIPT_PTR_BADLY_POISON] = BATTLE_SUBSCRIPT_BADLY_POISON,
[MOVE_SUBSCRIPT_PTR_CONFUSE] = BATTLE_SUBSCRIPT_CONFUSE,
[MOVE_SUBSCRIPT_PTR_FLINCH] = BATTLE_SUBSCRIPT_FLINCH_MON,
[MOVE_SUBSCRIPT_PTR_REST] = BATTLE_SUBSCRIPT_REST,
[MOVE_SUBSCRIPT_PTR_UPROAR] = BATTLE_SUBSCRIPT_UPROAR,
[MOVE_SUBSCRIPT_PTR_PAY_DAY] = BATTLE_SUBSCRIPT_PAY_DAY,
[MOVE_SUBSCRIPT_PTR_VANISH_CHARGE_TURN] = BATTLE_SUBSCRIPT_VANISH_ON_CHARGE_TURN,
[MOVE_SUBSCRIPT_PTR_BIND_TARGET] = BATTLE_SUBSCRIPT_BIND_START,
[MOVE_SUBSCRIPT_PTR_QUARTER_RECOIL] = BATTLE_SUBSCRIPT_RECOIL_1_4,
[MOVE_SUBSCRIPT_PTR_ATTACK_UP_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_DEFENSE_UP_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SPEED_UP_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_UP_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_UP_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_ACCURACY_UP_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_EVASION_UP_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_ATTACK_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_DEFENSE_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SPEED_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_ACCURACY_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_EVASION_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_RECHARGE_TURN] = BATTLE_SUBSCRIPT_RECHARGE_TURN,
[MOVE_SUBSCRIPT_PTR_SET_RAGE_FLAG] = BATTLE_SUBSCRIPT_SET_RAGE_FLAG,
[MOVE_SUBSCRIPT_PTR_STEAL_ITEM] = BATTLE_SUBSCRIPT_STEAL_ITEM,
[MOVE_SUBSCRIPT_PTR_MEAN_LOOK] = BATTLE_SUBSCRIPT_MEAN_LOOK,
[MOVE_SUBSCRIPT_PTR_NIGHTMARE_START] = BATTLE_SUBSCRIPT_NIGHTMARE_START,
[MOVE_SUBSCRIPT_PTR_BOOST_ALL_STATS] = BATTLE_SUBSCRIPT_BOOST_ALL_STATS,
[MOVE_SUBSCRIPT_PTR_RAPID_SPIN] = BATTLE_SUBSCRIPT_RAPID_SPIN,
[MOVE_SUBSCRIPT_PTR_HEAL_TARGET_PARALYSIS] = BATTLE_SUBSCRIPT_HEAL_TARGET_PARALYSIS,
[MOVE_SUBSCRIPT_PTR_USER_ATK_AND_DEF_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_USER_ATK_AND_DEF_DOWN_1_STAGE,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_3] = BATTLE_SUBSCRIPT_RECOIL_1_3,
[MOVE_SUBSCRIPT_PTR_ATTACK_UP_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_DEFENSE_UP_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SPEED_UP_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_UP_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_UP_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_ACCURACY_UP_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_EVASION_UP_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_ATTACK_DOWN_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_DEFENSE_DOWN_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SPEED_DOWN_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_DOWN_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_DOWN_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_ACCURACY_DOWN_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_EVASION_DOWN_2_STAGES] = BATTLE_SUBSCRIPT_UPDATE_STAT_STAGE,
[MOVE_SUBSCRIPT_PTR_THRASH] = BATTLE_SUBSCRIPT_THRASH,
[MOVE_SUBSCRIPT_PTR_KNOCK_OFF] = BATTLE_SUBSCRIPT_KNOCK_OFF,
[MOVE_SUBSCRIPT_PTR_USER_DEF_AND_SPDEF_UP_1_STAGE] = BATTLE_SUBSCRIPT_USER_DEF_AND_SPDEF_UP_1_STAGE,
[MOVE_SUBSCRIPT_PTR_USER_ATK_AND_DEF_UP_1_STAGE] = BATTLE_SUBSCRIPT_USER_ATK_AND_DEF_UP_1_STAGE,
[MOVE_SUBSCRIPT_PTR_TARGET_ATK_AND_DEF_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_TARGET_ATK_AND_DEF_DOWN_1_STAGE,
[MOVE_SUBSCRIPT_PTR_USER_SPATK_AND_SPDEF_UP_1_STAGE] = BATTLE_SUBSCRIPT_USER_SPATK_AND_SPDEF_UP_1_STAGE,
[MOVE_SUBSCRIPT_PTR_USER_ATK_AND_SPEED_UP_1_STAGE] = BATTLE_SUBSCRIPT_USER_ATK_AND_SPEED_UP_1_STAGE,
[MOVE_SUBSCRIPT_PTR_DRAIN_HALF_DAMAGE_DEALT] = BATTLE_SUBSCRIPT_DRAIN_HALF_DAMAGE_DEALT,
[MOVE_SUBSCRIPT_PTR_DREAM_EATER] = BATTLE_SUBSCRIPT_DREAM_EATER,
[MOVE_SUBSCRIPT_PTR_RESET_ALL_STAT_STAGES] = BATTLE_SUBSCRIPT_RESET_ALL_STAT_STAGES,
[MOVE_SUBSCRIPT_PTR_BIDE_START] = BATTLE_SUBSCRIPT_BIDE_START,
[MOVE_SUBSCRIPT_PTR_STRUGGLE] = BATTLE_SUBSCRIPT_STRUGGLE,
[MOVE_SUBSCRIPT_PTR_CONVERSION] = BATTLE_SUBSCRIPT_CONVERSION,
[MOVE_SUBSCRIPT_PTR_RECOVER_HALF_MAX_HP] = BATTLE_SUBSCRIPT_RECOVER_HALF_MAX_HP,
[MOVE_SUBSCRIPT_PTR_LIGHT_SCREEN] = BATTLE_SUBSCRIPT_LIGHT_SCREEN,
[MOVE_SUBSCRIPT_PTR_REFLECT] = BATTLE_SUBSCRIPT_REFLECT,
[MOVE_SUBSCRIPT_PTR_MIST] = BATTLE_SUBSCRIPT_MIST,
[MOVE_SUBSCRIPT_PTR_FOCUS_ENERGY] = BATTLE_SUBSCRIPT_FOCUS_ENERGY,
[MOVE_SUBSCRIPT_PTR_MIMIC] = BATTLE_SUBSCRIPT_MIMIC,
[MOVE_SUBSCRIPT_PTR_LEECH_SEED_START] = BATTLE_SUBSCRIPT_LEECH_SEED_START,
[MOVE_SUBSCRIPT_PTR_DISABLE_START] = BATTLE_SUBSCRIPT_DISABLE_START,
[MOVE_SUBSCRIPT_PTR_ENCORE_START] = BATTLE_SUBSCRIPT_ENCORE_START,
[MOVE_SUBSCRIPT_PTR_PAIN_SPLIT] = BATTLE_SUBSCRIPT_PAIN_SPLIT,
[MOVE_SUBSCRIPT_PTR_CONVERSION_2] = BATTLE_SUBSCRIPT_CONVERSION_2,
[MOVE_SUBSCRIPT_PTR_LOCK_ON] = BATTLE_SUBSCRIPT_LOCK_ON,
[MOVE_SUBSCRIPT_PTR_SKETCH] = BATTLE_SUBSCRIPT_SKETCH,
[MOVE_SUBSCRIPT_PTR_FEINT] = BATTLE_SUBSCRIPT_FEINT,
[MOVE_SUBSCRIPT_PTR_DESTINY_BOND] = BATTLE_SUBSCRIPT_DESTINY_BOND,
[MOVE_SUBSCRIPT_PTR_REDUCE_TARGET_PP] = BATTLE_SUBSCRIPT_REDUCE_TARGET_PP,
[MOVE_SUBSCRIPT_PTR_PROTECT] = BATTLE_SUBSCRIPT_PROTECT,
[MOVE_SUBSCRIPT_PTR_HEAL_BELL] = BATTLE_SUBSCRIPT_HEAL_BELL,
[MOVE_SUBSCRIPT_PTR_TRY_SUBSTITUTE] = BATTLE_SUBSCRIPT_TRY_SUBSTITUTE,
[MOVE_SUBSCRIPT_PTR_FORCE_TARGET_TO_SWITCH_OR_FLEE] = BATTLE_SUBSCRIPT_FORCE_TARGET_TO_SWITCH_OR_FLEE,
[MOVE_SUBSCRIPT_PTR_TRANSFORM_INTO_TARGET] = BATTLE_SUBSCRIPT_TRANSFORM_INTO_TARGET,
[MOVE_SUBSCRIPT_PTR_MINIMIZE] = BATTLE_SUBSCRIPT_MINIMIZE,
[MOVE_SUBSCRIPT_PTR_CURSE_NORMAL] = BATTLE_SUBSCRIPT_CURSE_NORMAL,
[MOVE_SUBSCRIPT_PTR_CURSE_GHOST] = BATTLE_SUBSCRIPT_CURSE_GHOST,
[MOVE_SUBSCRIPT_PTR_PRINT_MESSAGE_AND_PLAY_ANIMATION] = BATTLE_SUBSCRIPT_PRINT_MESSAGE_AND_PLAY_ANIMATION,
[MOVE_SUBSCRIPT_PTR_FORESIGHT] = BATTLE_SUBSCRIPT_FORESIGHT,
[MOVE_SUBSCRIPT_PTR_PERISH_SONG_START] = BATTLE_SUBSCRIPT_PERISH_SONG_START,
[MOVE_SUBSCRIPT_PTR_WEATHER_START] = BATTLE_SUBSCRIPT_WEATHER_START,
[MOVE_SUBSCRIPT_PTR_SWAGGER] = BATTLE_SUBSCRIPT_SWAGGER,
[MOVE_SUBSCRIPT_PTR_INFATUATE] = BATTLE_SUBSCRIPT_INFATUATE,
[MOVE_SUBSCRIPT_PTR_SAFEGUARD_START] = BATTLE_SUBSCRIPT_SAFEGUARD_START,
[MOVE_SUBSCRIPT_PTR_PRESENT_HEAL] = BATTLE_SUBSCRIPT_PRESENT_HEAL,
[MOVE_SUBSCRIPT_PTR_MAGNITUDE] = BATTLE_SUBSCRIPT_MAGNITUDE,
[MOVE_SUBSCRIPT_PTR_BATON_PASS] = BATTLE_SUBSCRIPT_BATON_PASS,
[MOVE_SUBSCRIPT_PTR_BELLY_DRUM] = BATTLE_SUBSCRIPT_BELLY_DRUM,
[MOVE_SUBSCRIPT_PTR_TELEPORT] = BATTLE_SUBSCRIPT_TELEPORT,
[MOVE_SUBSCRIPT_PTR_FUTURE_SIGHT_START] = BATTLE_SUBSCRIPT_FUTURE_SIGHT_START,
[MOVE_SUBSCRIPT_PTR_STOCKPILE] = BATTLE_SUBSCRIPT_STOCKPILE,
[MOVE_SUBSCRIPT_PTR_SWALLOW] = BATTLE_SUBSCRIPT_SWALLOW,
[MOVE_SUBSCRIPT_PTR_TORMENT_START] = BATTLE_SUBSCRIPT_TORMENT_START,
[MOVE_SUBSCRIPT_PTR_FLATTER] = BATTLE_SUBSCRIPT_FLATTER,
[MOVE_SUBSCRIPT_PTR_MEMENTO] = BATTLE_SUBSCRIPT_MEMENTO,
[MOVE_SUBSCRIPT_PTR_CHARGE] = BATTLE_SUBSCRIPT_CHARGE,
[MOVE_SUBSCRIPT_PTR_TAUNT_START] = BATTLE_SUBSCRIPT_TAUNT_START,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ITEMS] = BATTLE_SUBSCRIPT_EXCHANGE_ITEMS,
[MOVE_SUBSCRIPT_PTR_COPY_ABILITY] = BATTLE_SUBSCRIPT_COPY_ABILITY,
[MOVE_SUBSCRIPT_PTR_BREAK_SCREENS] = BATTLE_SUBSCRIPT_BREAK_SCREENS,
[MOVE_SUBSCRIPT_PTR_YAWN] = BATTLE_SUBSCRIPT_YAWN,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ABILITIES] = BATTLE_SUBSCRIPT_EXCHANGE_ABILITIES,
[MOVE_SUBSCRIPT_PTR_RECOVER_PSN_PRZ_BRN] = BATTLE_SUBSCRIPT_RECOVER_PSN_PRZ_BRN,
[MOVE_SUBSCRIPT_PTR_ROOST] = BATTLE_SUBSCRIPT_ROOST,
[MOVE_SUBSCRIPT_PTR_HEAL_TARGET_SLEEP] = BATTLE_SUBSCRIPT_HEAL_TARGET_SLEEP,
[MOVE_SUBSCRIPT_PTR_GRAVITY_START] = BATTLE_SUBSCRIPT_GRAVITY_START,
[MOVE_SUBSCRIPT_PTR_MIRACLE_EYE] = BATTLE_SUBSCRIPT_MIRACLE_EYE,
[MOVE_SUBSCRIPT_PTR_HEALING_WISH] = BATTLE_SUBSCRIPT_HEALING_WISH,
[MOVE_SUBSCRIPT_PTR_TAILWIND_START] = BATTLE_SUBSCRIPT_TAILWIND_START,
[MOVE_SUBSCRIPT_PTR_USER_DEF_AND_SPDEF_DOWN_1_STAGE] = BATTLE_SUBSCRIPT_USER_DEF_AND_SPDEF_DOWN_1_STAGE,
[MOVE_SUBSCRIPT_PTR_USER_SWAP_ATK_AND_DEF] = BATTLE_SUBSCRIPT_USER_SWAP_ATK_AND_DEF,
[MOVE_SUBSCRIPT_PTR_SUPPRESS_TARGET_ABILITY] = BATTLE_SUBSCRIPT_SUPPRESS_TARGET_ABILITY,
[MOVE_SUBSCRIPT_PTR_LUCKY_CHANT_START] = BATTLE_SUBSCRIPT_LUCKY_CHANT_START,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ATK_AND_SPATK_STAGES] = BATTLE_SUBSCRIPT_EXCHANGE_ATK_AND_SPATK_STAGES,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_DEF_AND_SPDEF_STAGES] = BATTLE_SUBSCRIPT_EXCHANGE_DEF_AND_SPDEF_STAGES,
[MOVE_SUBSCRIPT_PTR_GIVE_TARGET_INSOMNIA] = BATTLE_SUBSCRIPT_GIVE_TARGET_INSOMNIA,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ALL_STAT_STAGES] = BATTLE_SUBSCRIPT_EXCHANGE_ALL_STAT_STAGES,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_3_CHANCE_TO_BURN] = BATTLE_SUBSCRIPT_RECOIL_1_3_CHANCE_TO_BURN,
[MOVE_SUBSCRIPT_PTR_DEFOG] = BATTLE_SUBSCRIPT_DEFOG,
[MOVE_SUBSCRIPT_PTR_HEAL_BLOCK_START] = BATTLE_SUBSCRIPT_HEAL_BLOCK_START,
[MOVE_SUBSCRIPT_PTR_ATTACK_THEN_SWITCH_OUT] = BATTLE_SUBSCRIPT_ATTACK_THEN_SWITCH_OUT,
[MOVE_SUBSCRIPT_PTR_EMBARGO_START] = BATTLE_SUBSCRIPT_EMBARGO_START,
[MOVE_SUBSCRIPT_PTR_PLUCK] = BATTLE_SUBSCRIPT_PLUCK,
[MOVE_SUBSCRIPT_PTR_FLING] = BATTLE_SUBSCRIPT_FLING,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_3_CHANCE_TO_PARALYZE] = BATTLE_SUBSCRIPT_RECOIL_1_3_CHANCE_TO_PARALYZE,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_2] = BATTLE_SUBSCRIPT_RECOIL_1_2,
[MOVE_SUBSCRIPT_PTR_BURN_OR_FLINCH] = BATTLE_SUBSCRIPT_BURN_OR_FLINCH,
[MOVE_SUBSCRIPT_PTR_FREEZE_OR_FLINCH] = BATTLE_SUBSCRIPT_FREEZE_OR_FLINCH,
[MOVE_SUBSCRIPT_PTR_PARALYZE_OR_FLINCH] = BATTLE_SUBSCRIPT_PARALYZE_OR_FLINCH,
[MOVE_SUBSCRIPT_PTR_CHATTER] = BATTLE_SUBSCRIPT_CHATTER,
[MOVE_SUBSCRIPT_PTR_LUNAR_DANCE] = BATTLE_SUBSCRIPT_LUNAR_DANCE,
[MOVE_SUBSCRIPT_PTR_GIVE_TARGET_OWN_STATUS] = BATTLE_SUBSCRIPT_GIVE_TARGET_OWN_STATUS,
[MOVE_SUBSCRIPT_PTR_SLEEP] = subscript_fall_asleep,
[MOVE_SUBSCRIPT_PTR_POISON] = subscript_poison,
[MOVE_SUBSCRIPT_PTR_BURN] = subscript_burn,
[MOVE_SUBSCRIPT_PTR_FREEZE] = subscript_freeze,
[MOVE_SUBSCRIPT_PTR_PARALYZE] = subscript_paralyze,
[MOVE_SUBSCRIPT_PTR_BADLY_POISON] = subscript_badly_poison,
[MOVE_SUBSCRIPT_PTR_CONFUSE] = subscript_confuse,
[MOVE_SUBSCRIPT_PTR_FLINCH] = subscript_flinch_mon,
[MOVE_SUBSCRIPT_PTR_REST] = subscript_rest,
[MOVE_SUBSCRIPT_PTR_UPROAR] = subscript_uproar,
[MOVE_SUBSCRIPT_PTR_PAY_DAY] = subscript_pay_day,
[MOVE_SUBSCRIPT_PTR_VANISH_CHARGE_TURN] = subscript_vanish_on_charge_turn,
[MOVE_SUBSCRIPT_PTR_BIND_TARGET] = subscript_bind_start,
[MOVE_SUBSCRIPT_PTR_QUARTER_RECOIL] = subscript_recoil_1_4,
[MOVE_SUBSCRIPT_PTR_ATTACK_UP_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_DEFENSE_UP_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SPEED_UP_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_UP_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_UP_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_ACCURACY_UP_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_EVASION_UP_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_ATTACK_DOWN_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_DEFENSE_DOWN_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SPEED_DOWN_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_DOWN_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_DOWN_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_ACCURACY_DOWN_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_EVASION_DOWN_1_STAGE] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_RECHARGE_TURN] = subscript_recharge_turn,
[MOVE_SUBSCRIPT_PTR_SET_RAGE_FLAG] = subscript_set_rage_flag,
[MOVE_SUBSCRIPT_PTR_STEAL_ITEM] = subscript_steal_item,
[MOVE_SUBSCRIPT_PTR_MEAN_LOOK] = subscript_mean_look,
[MOVE_SUBSCRIPT_PTR_NIGHTMARE_START] = subscript_nightmare_start,
[MOVE_SUBSCRIPT_PTR_BOOST_ALL_STATS] = subscript_boost_all_stats,
[MOVE_SUBSCRIPT_PTR_RAPID_SPIN] = subscript_rapid_spin,
[MOVE_SUBSCRIPT_PTR_HEAL_TARGET_PARALYSIS] = subscript_heal_target_paralysis,
[MOVE_SUBSCRIPT_PTR_USER_ATK_AND_DEF_DOWN_1_STAGE] = subscript_user_atk_and_def_down_1_stage,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_3] = subscript_recoil_1_3,
[MOVE_SUBSCRIPT_PTR_ATTACK_UP_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_DEFENSE_UP_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SPEED_UP_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_UP_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_UP_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_ACCURACY_UP_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_EVASION_UP_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_ATTACK_DOWN_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_DEFENSE_DOWN_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SPEED_DOWN_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_ATTACK_DOWN_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_SP_DEFENSE_DOWN_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_ACCURACY_DOWN_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_EVASION_DOWN_2_STAGES] = subscript_update_stat_stage,
[MOVE_SUBSCRIPT_PTR_THRASH] = subscript_thrash,
[MOVE_SUBSCRIPT_PTR_KNOCK_OFF] = subscript_knock_off,
[MOVE_SUBSCRIPT_PTR_USER_DEF_AND_SPDEF_UP_1_STAGE] = subscript_user_def_and_spdef_up_1_stage,
[MOVE_SUBSCRIPT_PTR_USER_ATK_AND_DEF_UP_1_STAGE] = subscript_user_atk_and_def_up_1_stage,
[MOVE_SUBSCRIPT_PTR_TARGET_ATK_AND_DEF_DOWN_1_STAGE] = subscript_target_atk_and_def_down_1_stage,
[MOVE_SUBSCRIPT_PTR_USER_SPATK_AND_SPDEF_UP_1_STAGE] = subscript_user_spatk_and_spdef_up_1_stage,
[MOVE_SUBSCRIPT_PTR_USER_ATK_AND_SPEED_UP_1_STAGE] = subscript_user_atk_and_speed_up_1_stage,
[MOVE_SUBSCRIPT_PTR_DRAIN_HALF_DAMAGE_DEALT] = subscript_drain_half_damage_dealt,
[MOVE_SUBSCRIPT_PTR_DREAM_EATER] = subscript_dream_eater,
[MOVE_SUBSCRIPT_PTR_RESET_ALL_STAT_STAGES] = subscript_reset_all_stat_stages,
[MOVE_SUBSCRIPT_PTR_BIDE_START] = subscript_bide_start,
[MOVE_SUBSCRIPT_PTR_STRUGGLE] = subscript_struggle,
[MOVE_SUBSCRIPT_PTR_CONVERSION] = subscript_conversion,
[MOVE_SUBSCRIPT_PTR_RECOVER_HALF_MAX_HP] = subscript_recover_half_max_hp,
[MOVE_SUBSCRIPT_PTR_LIGHT_SCREEN] = subscript_light_screen,
[MOVE_SUBSCRIPT_PTR_REFLECT] = subscript_reflect,
[MOVE_SUBSCRIPT_PTR_MIST] = subscript_mist,
[MOVE_SUBSCRIPT_PTR_FOCUS_ENERGY] = subscript_focus_energy,
[MOVE_SUBSCRIPT_PTR_MIMIC] = subscript_mimic,
[MOVE_SUBSCRIPT_PTR_LEECH_SEED_START] = subscript_leech_seed_start,
[MOVE_SUBSCRIPT_PTR_DISABLE_START] = subscript_disable_start,
[MOVE_SUBSCRIPT_PTR_ENCORE_START] = subscript_encore_start,
[MOVE_SUBSCRIPT_PTR_PAIN_SPLIT] = subscript_pain_split,
[MOVE_SUBSCRIPT_PTR_CONVERSION_2] = subscript_conversion_2,
[MOVE_SUBSCRIPT_PTR_LOCK_ON] = subscript_lock_on,
[MOVE_SUBSCRIPT_PTR_SKETCH] = subscript_sketch,
[MOVE_SUBSCRIPT_PTR_FEINT] = subscript_feint,
[MOVE_SUBSCRIPT_PTR_DESTINY_BOND] = subscript_destiny_bond,
[MOVE_SUBSCRIPT_PTR_REDUCE_TARGET_PP] = subscript_reduce_target_pp,
[MOVE_SUBSCRIPT_PTR_PROTECT] = subscript_protect,
[MOVE_SUBSCRIPT_PTR_HEAL_BELL] = subscript_heal_bell,
[MOVE_SUBSCRIPT_PTR_TRY_SUBSTITUTE] = subscript_try_substitute,
[MOVE_SUBSCRIPT_PTR_FORCE_TARGET_TO_SWITCH_OR_FLEE] = subscript_force_target_to_switch_or_flee,
[MOVE_SUBSCRIPT_PTR_TRANSFORM_INTO_TARGET] = subscript_transform_into_target,
[MOVE_SUBSCRIPT_PTR_MINIMIZE] = subscript_minimize,
[MOVE_SUBSCRIPT_PTR_CURSE_NORMAL] = subscript_curse_normal,
[MOVE_SUBSCRIPT_PTR_CURSE_GHOST] = subscript_curse_ghost,
[MOVE_SUBSCRIPT_PTR_PRINT_MESSAGE_AND_PLAY_ANIMATION] = subscript_print_message_and_play_animation,
[MOVE_SUBSCRIPT_PTR_FORESIGHT] = subscript_foresight,
[MOVE_SUBSCRIPT_PTR_PERISH_SONG_START] = subscript_perish_song_start,
[MOVE_SUBSCRIPT_PTR_WEATHER_START] = subscript_weather_start,
[MOVE_SUBSCRIPT_PTR_SWAGGER] = subscript_swagger,
[MOVE_SUBSCRIPT_PTR_INFATUATE] = subscript_infatuate,
[MOVE_SUBSCRIPT_PTR_SAFEGUARD_START] = subscript_safeguard_start,
[MOVE_SUBSCRIPT_PTR_PRESENT_HEAL] = subscript_present_heal,
[MOVE_SUBSCRIPT_PTR_MAGNITUDE] = subscript_magnitude,
[MOVE_SUBSCRIPT_PTR_BATON_PASS] = subscript_baton_pass,
[MOVE_SUBSCRIPT_PTR_BELLY_DRUM] = subscript_belly_drum,
[MOVE_SUBSCRIPT_PTR_TELEPORT] = subscript_teleport,
[MOVE_SUBSCRIPT_PTR_FUTURE_SIGHT_START] = subscript_future_sight_start,
[MOVE_SUBSCRIPT_PTR_STOCKPILE] = subscript_stockpile,
[MOVE_SUBSCRIPT_PTR_SWALLOW] = subscript_swallow,
[MOVE_SUBSCRIPT_PTR_TORMENT_START] = subscript_torment_start,
[MOVE_SUBSCRIPT_PTR_FLATTER] = subscript_flatter,
[MOVE_SUBSCRIPT_PTR_MEMENTO] = subscript_memento,
[MOVE_SUBSCRIPT_PTR_CHARGE] = subscript_charge,
[MOVE_SUBSCRIPT_PTR_TAUNT_START] = subscript_taunt_start,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ITEMS] = subscript_exchange_items,
[MOVE_SUBSCRIPT_PTR_COPY_ABILITY] = subscript_copy_ability,
[MOVE_SUBSCRIPT_PTR_BREAK_SCREENS] = subscript_break_screens,
[MOVE_SUBSCRIPT_PTR_YAWN] = subscript_yawn,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ABILITIES] = subscript_exchange_abilities,
[MOVE_SUBSCRIPT_PTR_RECOVER_PSN_PRZ_BRN] = subscript_recover_psn_prz_brn,
[MOVE_SUBSCRIPT_PTR_ROOST] = subscript_roost,
[MOVE_SUBSCRIPT_PTR_HEAL_TARGET_SLEEP] = subscript_heal_target_sleep,
[MOVE_SUBSCRIPT_PTR_GRAVITY_START] = subscript_gravity_start,
[MOVE_SUBSCRIPT_PTR_MIRACLE_EYE] = subscript_miracle_eye,
[MOVE_SUBSCRIPT_PTR_HEALING_WISH] = subscript_healing_wish,
[MOVE_SUBSCRIPT_PTR_TAILWIND_START] = subscript_tailwind_start,
[MOVE_SUBSCRIPT_PTR_USER_DEF_AND_SPDEF_DOWN_1_STAGE] = subscript_user_def_and_spdef_down_1_stage,
[MOVE_SUBSCRIPT_PTR_USER_SWAP_ATK_AND_DEF] = subscript_user_swap_atk_and_def,
[MOVE_SUBSCRIPT_PTR_SUPPRESS_TARGET_ABILITY] = subscript_suppress_target_ability,
[MOVE_SUBSCRIPT_PTR_LUCKY_CHANT_START] = subscript_lucky_chant_start,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ATK_AND_SPATK_STAGES] = subscript_exchange_atk_and_spatk_stages,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_DEF_AND_SPDEF_STAGES] = subscript_exchange_def_and_spdef_stages,
[MOVE_SUBSCRIPT_PTR_GIVE_TARGET_INSOMNIA] = subscript_give_target_insomnia,
[MOVE_SUBSCRIPT_PTR_EXCHANGE_ALL_STAT_STAGES] = subscript_exchange_all_stat_stages,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_3_CHANCE_TO_BURN] = subscript_recoil_1_3_chance_to_burn,
[MOVE_SUBSCRIPT_PTR_DEFOG] = subscript_defog,
[MOVE_SUBSCRIPT_PTR_HEAL_BLOCK_START] = subscript_heal_block_start,
[MOVE_SUBSCRIPT_PTR_ATTACK_THEN_SWITCH_OUT] = subscript_attack_then_switch_out,
[MOVE_SUBSCRIPT_PTR_EMBARGO_START] = subscript_embargo_start,
[MOVE_SUBSCRIPT_PTR_PLUCK] = subscript_pluck,
[MOVE_SUBSCRIPT_PTR_FLING] = subscript_fling,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_3_CHANCE_TO_PARALYZE] = subscript_recoil_1_3_chance_to_paralyze,
[MOVE_SUBSCRIPT_PTR_RECOIL_1_2] = subscript_recoil_1_2,
[MOVE_SUBSCRIPT_PTR_BURN_OR_FLINCH] = subscript_burn_or_flinch,
[MOVE_SUBSCRIPT_PTR_FREEZE_OR_FLINCH] = subscript_freeze_or_flinch,
[MOVE_SUBSCRIPT_PTR_PARALYZE_OR_FLINCH] = subscript_paralyze_or_flinch,
[MOVE_SUBSCRIPT_PTR_CHATTER] = subscript_chatter,
[MOVE_SUBSCRIPT_PTR_LUNAR_DANCE] = subscript_lunar_dance,
[MOVE_SUBSCRIPT_PTR_GIVE_TARGET_OWN_STATUS] = subscript_give_target_own_status,
};

View File

@ -12,7 +12,7 @@ fs = import('fs')
############################################################
### INCLUDE PATHS ###
############################################################
public_includes = include_directories('include', 'asm')
public_includes = include_directories('include', 'asm', 'res')
############################################################
@ -142,7 +142,9 @@ subdir('asm')
main = executable('main',
sources: [
pokeplatinum_c,
pokeplatinum_asm
pokeplatinum_asm,
generated_consts_c,
naix_headers,
],
c_args: [
pokeplatinum_args,
@ -154,7 +156,7 @@ main = executable('main',
public_includes,
libgds_public_includes,
libspl_public_includes,
gmm_header_includes
gmm_header_includes,
],
dependencies: [
nitrosdk_dep,

View File

@ -11,6 +11,7 @@ s_to_bin_gen = generator(make_script_bin_sh,
'-i', relative_source_root / 'include',
'-i', relative_source_root / 'asm',
'-i', '.' / 'res' / 'text',
'-i', '.' / 'res',
'-i', '.',
'--assembler', mwrap_exe.full_path(),
'--objcopy', arm_none_eabi_objcopy_exe.full_path(),
@ -18,17 +19,23 @@ s_to_bin_gen = generator(make_script_bin_sh,
'@INPUT@',
],
depends: [
pl_msg_narc # for GMM headers
pl_msg_narc, # for GMM headers
generated_consts_asm, # for ASM headers
generated_consts_c, # for C headers
],
output: '@BASENAME@'
)
sub_seq_basename = 'sub_seq'
be_seq_target_name = 'be_seq.narc'
sub_seq_target_name = 'sub_seq.narc'
waza_seq_target_name = 'waza_seq.narc'
sub_seq_narc_name = sub_seq_basename + '.narc'
sub_seq_naix_name = sub_seq_basename + '.naix'
be_seq_private_dir = relative_build_dir / be_seq_target_name + '.p'
sub_seq_private_dir = relative_build_dir / sub_seq_target_name + '.p'
sub_seq_private_dir = relative_build_dir / sub_seq_narc_name + '.p'
waza_seq_private_dir = relative_build_dir / waza_seq_target_name + '.p'
be_seq_narc = custom_target(be_seq_target_name,
@ -44,8 +51,11 @@ be_seq_narc = custom_target(be_seq_target_name,
]
)
sub_seq_narc = custom_target(sub_seq_target_name,
output: sub_seq_target_name,
sub_seq_narc = custom_target(sub_seq_narc_name,
output: [
sub_seq_narc_name,
sub_seq_naix_name,
],
input: s_to_bin_gen.process(
subscript_files,
extra_args: ['--out-dir', sub_seq_private_dir]
@ -53,7 +63,7 @@ sub_seq_narc = custom_target(sub_seq_target_name,
command: [
knarc_exe,
'-d', '@PRIVATE_DIR@',
'-p', '@OUTPUT@',
'-p', '@OUTPUT0@',
'-o', sub_seq_narc_order,
'-n'
]
@ -73,5 +83,7 @@ waza_seq_narc = custom_target(waza_seq_target_name,
)
nitrofs_files += be_seq_narc
nitrofs_files += sub_seq_narc
nitrofs_files += sub_seq_narc[0]
nitrofs_files += waza_seq_narc
naix_headers += sub_seq_narc[1]

View File

@ -1,4 +1,5 @@
nitrofs_files = []
naix_headers = []
# Prebuilt files
subdir('prebuilt')

View File

@ -3,7 +3,6 @@
#include "consts/generated/c/abilities.h"
#include "consts/generated/c/battle_controller_params.h"
#include "consts/generated/c/battle_subscripts.h"
#include "constants/battle.h"
#include "constants/heap.h"
@ -26,6 +25,7 @@
#include "battle/battle_controller.h"
#include "battle/battle_message.h"
#include "battle/battle_script.h"
#include "battle/scripts/sub_seq.naix"
#include "battle/struct_ov16_0225BFFC_decl.h"
#include "battle/struct_ov16_0224DDA8.h"
@ -235,7 +235,7 @@ static void BattleController_InitBattleMons(BattleSystem *battleSys, BattleConte
static void BattleController_StartEncounter(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_START_ENCOUNTER);
LOAD_SUBSEQ(subscript_start_encounter);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_TRAINER_MESSAGE;
}
@ -243,7 +243,7 @@ static void BattleController_StartEncounter(BattleSystem *battleSys, BattleConte
static void BattleController_TrainerMessage(BattleSystem *battleSys, BattleContext *battleCtx)
{
if (BattleSystem_CheckTrainerMessage(battleSys, battleCtx)) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_TRAINER_MESSAGE);
LOAD_SUBSEQ(subscript_trainer_message);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_SHOW_BATTLE_MON;
} else {
@ -828,7 +828,7 @@ static void BattleController_CheckPreMoveActions(BattleSystem *battleSys, Battle
BattleIO_ClearMessageBox(battleSys);
battleCtx->msgBattlerTemp = battler;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_TIGHTEN_FOCUS);
LOAD_SUBSEQ(subscript_tighten_focus);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -954,7 +954,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->sideConditionsMask[side] &= ~SIDE_CONDITION_REFLECT;
battleCtx->msgMoveTemp = MOVE_REFLECT;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_MOVE_EFFECT_END);
PrepareSubroutineSequence(battleCtx, subscript_move_effect_end);
battleCtx->msgBattlerTemp = BattleSystem_SideToBattler(battleSys, battleCtx, side);
state = STATE_BREAK_OUT;
}
@ -977,7 +977,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->sideConditionsMask[side] &= ~SIDE_CONDITION_LIGHT_SCREEN;
battleCtx->msgMoveTemp = MOVE_LIGHT_SCREEN;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_MOVE_EFFECT_END);
PrepareSubroutineSequence(battleCtx, subscript_move_effect_end);
battleCtx->msgBattlerTemp = BattleSystem_SideToBattler(battleSys, battleCtx, side);
state = STATE_BREAK_OUT;
}
@ -1000,7 +1000,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->sideConditionsMask[side] &= ~SIDE_CONDITION_MIST;
battleCtx->msgMoveTemp = MOVE_MIST;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_MOVE_EFFECT_END);
PrepareSubroutineSequence(battleCtx, subscript_move_effect_end);
battleCtx->msgBattlerTemp = BattleSystem_SideToBattler(battleSys, battleCtx, side);
state = STATE_BREAK_OUT;
}
@ -1023,7 +1023,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->sideConditionsMask[side] &= ~SIDE_CONDITION_SAFEGUARD;
battleCtx->msgBattlerTemp = battleCtx->sideConditions[side].safeguardUser;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_SAFEGUARD_END);
PrepareSubroutineSequence(battleCtx, subscript_safeguard_end);
battleCtx->msgBattlerTemp = BattleSystem_SideToBattler(battleSys, battleCtx, side);
state = STATE_BREAK_OUT;
}
@ -1045,7 +1045,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->sideConditionsMask[side] -= SIDE_CONDITION_TAILWIND_SHIFT;
if ((battleCtx->sideConditionsMask[side] & SIDE_CONDITION_TAILWIND) == FALSE) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_TAILWIND_END);
PrepareSubroutineSequence(battleCtx, subscript_tailwind_end);
battleCtx->msgBattlerTemp = BattleSystem_SideToBattler(battleSys, battleCtx, side);
state = STATE_BREAK_OUT;
}
@ -1068,7 +1068,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->sideConditionsMask[side] -= SIDE_CONDITION_LUCKY_CHANT_SHIFT;
if ((battleCtx->sideConditionsMask[side] & SIDE_CONDITION_LUCKY_CHANT) == FALSE) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_LUCKY_CHANT_END);
PrepareSubroutineSequence(battleCtx, subscript_lucky_chant_end);
battleCtx->msgBattlerTemp = BattleSystem_SideToBattler(battleSys, battleCtx, side);
state = STATE_BREAK_OUT;
}
@ -1098,7 +1098,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->hpCalcTemp = BattleSystem_Divide(battleCtx->battleMons[side].maxHP, 2);
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WISH_HEAL);
PrepareSubroutineSequence(battleCtx, subscript_wish_heal);
state = STATE_BREAK_OUT;
}
@ -1117,15 +1117,15 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->msgBuffer.id = 801; // "Rain continues to fall."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
} else {
if (--battleCtx->fieldConditions.weatherTurns == 0) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_RAINING_END);
PrepareSubroutineSequence(battleCtx, subscript_raining_end);
} else {
battleCtx->msgBuffer.id = 801; // "Rain continues to fall."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
}
}
@ -1142,15 +1142,15 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->msgBuffer.id = 805; // "The sandstorm rages."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
} else {
if (--battleCtx->fieldConditions.weatherTurns == 0) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_SANDSTORM_END);
PrepareSubroutineSequence(battleCtx, subscript_sandstorm_end);
} else {
battleCtx->msgBuffer.id = 805; // "The sandstorm rages."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
}
}
@ -1167,15 +1167,15 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->msgBuffer.id = 808; // "The sunlight is strong."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
} else {
if (--battleCtx->fieldConditions.weatherTurns == 0) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_SUNNY_END);
PrepareSubroutineSequence(battleCtx, subscript_sunny_end);
} else {
battleCtx->msgBuffer.id = 808; // "The sunlight is strong."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
}
}
@ -1192,15 +1192,15 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->msgBuffer.id = 811; // "Hail continues to fall."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
} else {
if (--battleCtx->fieldConditions.weatherTurns == 0) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_HAILING_END);
PrepareSubroutineSequence(battleCtx, subscript_hailing_end);
} else {
battleCtx->msgBuffer.id = 811; // "Hail continues to fall."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
}
}
@ -1216,7 +1216,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->msgBuffer.id = 813; // "The fog is deep..."
battleCtx->msgBuffer.tags = TAG_NONE;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WEATHER_CONTINUES);
PrepareSubroutineSequence(battleCtx, subscript_weather_continues);
battleCtx->scriptTemp = BATTLE_ANIMATION_WEATHER_FOG;
state = STATE_BREAK_OUT;
@ -1230,7 +1230,7 @@ static void BattleController_CheckFieldConditions(BattleSystem *battleSys, Battl
battleCtx->fieldConditionsMask -= (1 << FIELD_CONDITION_GRAVITY_SHIFT);
if ((battleCtx->fieldConditionsMask & FIELD_CONDITION_GRAVITY) == 0) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_GRAVITY_END);
PrepareSubroutineSequence(battleCtx, subscript_gravity_end);
state = STATE_BREAK_OUT;
}
}
@ -1315,10 +1315,10 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& battleCtx->battleMons[battler].curHP) {
if (battleCtx->battleMons[battler].moveEffectsData.healBlockTurns) {
battleCtx->msgBattlerTemp = battler;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_CANNOT_HEAL);
LOAD_SUBSEQ(subscript_cannot_heal);
} else {
battleCtx->msgBattlerTemp = battler;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_INGRAIN_HEAL);
LOAD_SUBSEQ(subscript_ingrain_heal);
}
battleCtx->commandNext = battleCtx->command;
@ -1336,12 +1336,12 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& battleCtx->battleMons[battler].curHP) {
if (battleCtx->battleMons[battler].moveEffectsData.healBlockTurns) {
battleCtx->msgBattlerTemp = battler;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_CANNOT_HEAL);
LOAD_SUBSEQ(subscript_cannot_heal);
} else {
battleCtx->msgBattlerTemp = battler;
battleCtx->msgMoveTemp = MOVE_AQUA_RING;
battleCtx->hpCalcTemp = BattleSystem_Divide(battleCtx->battleMons[battler].maxHP, 16);
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_AQUA_RING_HEAL);
LOAD_SUBSEQ(subscript_aqua_ring_heal);
}
battleCtx->commandNext = battleCtx->command;
@ -1384,7 +1384,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
battleCtx->msgAttacker = battleCtx->battleMons[battler].moveEffectsMask & MOVE_EFFECT_LEECH_SEED_RECIPIENT;
battleCtx->msgDefender = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_LEECH_SEED_EFFECT);
PrepareSubroutineSequence(battleCtx, subscript_leech_seed_effect);
state = STATE_BREAK_OUT;
}
@ -1396,7 +1396,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
battleCtx->msgBattlerTemp = battler;
battleCtx->hpCalcTemp = BattleSystem_Divide(battleCtx->battleMons[battler].maxHP * -1, 8);
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_POISON_DAMAGE);
PrepareSubroutineSequence(battleCtx, subscript_poison_damage);
state = STATE_BREAK_OUT;
}
@ -1416,7 +1416,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
battleCtx->hpCalcTemp *= ((battleCtx->battleMons[battler].status & MON_CONDITION_TOXIC_COUNTER) >> 8);
battleCtx->hpCalcTemp *= -1;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_POISON_DAMAGE);
PrepareSubroutineSequence(battleCtx, subscript_poison_damage);
state = STATE_BREAK_OUT;
}
@ -1427,7 +1427,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
if ((battleCtx->battleMons[battler].status & MON_CONDITION_BURN) && battleCtx->battleMons[battler].curHP) {
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_BURN_DAMAGE);
PrepareSubroutineSequence(battleCtx, subscript_burn_damage);
state = STATE_BREAK_OUT;
}
@ -1439,7 +1439,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
if (battleCtx->battleMons[battler].status & MON_CONDITION_SLEEP) {
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_NIGHTMARE_EFFECT);
PrepareSubroutineSequence(battleCtx, subscript_nightmare_effect);
state = STATE_BREAK_OUT;
} else {
battleCtx->battleMons[battler].statusVolatile &= ~VOLATILE_CONDITION_NIGHTMARE;
@ -1453,7 +1453,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
if ((battleCtx->battleMons[battler].statusVolatile & VOLATILE_CONDITION_CURSE) && battleCtx->battleMons[battler].curHP) {
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_CURSE_DAMAGE);
PrepareSubroutineSequence(battleCtx, subscript_curse_damage);
state = STATE_BREAK_OUT;
}
@ -1466,9 +1466,9 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
if (battleCtx->battleMons[battler].statusVolatile & VOLATILE_CONDITION_BIND) {
battleCtx->hpCalcTemp = BattleSystem_Divide(battleCtx->battleMons[battler].maxHP * -1, 16);
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_BIND_EFFECT);
LOAD_SUBSEQ(subscript_bind_effect);
} else {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_BIND_END);
LOAD_SUBSEQ(subscript_bind_end);
}
battleCtx->msgMoveTemp = battleCtx->battleMons[battler].moveEffectsData.bindingMove;
@ -1491,7 +1491,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& battleCtx->scriptTemp) {
battleCtx->hpCalcTemp = BattleSystem_Divide(battleCtx->battleMons[battler].maxHP * -1, 8);
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_BAD_DREAMS);
LOAD_SUBSEQ(subscript_bad_dreams);
battleCtx->battleStatusMask |= SYSCTL_SKIP_SPRITE_BLINK;
battleCtx->msgBattlerTemp = battler;
battleCtx->commandNext = battleCtx->command;
@ -1511,7 +1511,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& battleCtx->battleMons[j].curHP
&& Battler_Ability(battleCtx, j) != ABILITY_SOUNDPROOF) {
battleCtx->msgBattlerTemp = j;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_WAKE_UP);
PrepareSubroutineSequence(battleCtx, subscript_wake_up);
break;
}
}
@ -1524,13 +1524,13 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
battleCtx->battleMons[battler].statusVolatile -= (1 << VOLATILE_CONDITION_UPROAR_SHIFT);
if (BattleContext_MoveFailed(battleCtx, battler)) {
i = BATTLE_SUBSCRIPT_UPROAR_END;
i = subscript_uproar_end;
battleCtx->battleMons[battler].statusVolatile &= ~VOLATILE_CONDITION_UPROAR;
battleCtx->fieldConditionsMask &= ((FlagIndex(battler) << FIELD_CONDITION_UPROAR_SHIFT) ^ 0xFFFFFFFF);
} else if (battleCtx->battleMons[battler].statusVolatile & VOLATILE_CONDITION_UPROAR) {
i = BATTLE_SUBSCRIPT_UPROAR_CONTINUES;
i = subscript_uproar_continues;
} else {
i = BATTLE_SUBSCRIPT_UPROAR_END;
i = subscript_uproar_end;
battleCtx->battleMons[battler].statusVolatile &= ~VOLATILE_CONDITION_UPROAR;
battleCtx->fieldConditionsMask &= ((FlagIndex(battler) << FIELD_CONDITION_UPROAR_SHIFT) ^ 0xFFFFFFFF);
}
@ -1555,7 +1555,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& (battleCtx->battleMons[battler].statusVolatile & VOLATILE_CONDITION_CONFUSION) == FALSE) {
battleCtx->sideEffectMon = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_THRASH_END);
PrepareSubroutineSequence(battleCtx, subscript_thrash_end);
state = STATE_BREAK_OUT;
}
}
@ -1581,7 +1581,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
battleCtx->battleMons[battler].moveEffectsData.disabledMove = 0;
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_DISABLE_END);
PrepareSubroutineSequence(battleCtx, subscript_disable_end);
state = STATE_BREAK_OUT;
}
}
@ -1608,7 +1608,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
battleCtx->battleMons[battler].moveEffectsData.encoredMove = 0;
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_ENCORE_END);
PrepareSubroutineSequence(battleCtx, subscript_encore_end);
state = STATE_BREAK_OUT;
}
}
@ -1638,7 +1638,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& --battleCtx->battleMons[battler].moveEffectsData.tauntedTurns == 0) {
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_TAUNT_END);
PrepareSubroutineSequence(battleCtx, subscript_taunt_end);
state = STATE_BREAK_OUT;
}
@ -1650,7 +1650,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& --battleCtx->battleMons[battler].moveEffectsData.magnetRiseTurns == 0) {
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_MAGNET_RISE_END);
PrepareSubroutineSequence(battleCtx, subscript_magnet_rise_end);
state = STATE_BREAK_OUT;
}
@ -1662,7 +1662,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& --battleCtx->battleMons[battler].moveEffectsData.healBlockTurns == 0) {
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_HEAL_BLOCK_END);
PrepareSubroutineSequence(battleCtx, subscript_heal_block_end);
state = STATE_BREAK_OUT;
}
@ -1674,7 +1674,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
&& --battleCtx->battleMons[battler].moveEffectsData.embargoTurns == 0) {
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_EMBARGO_END);
PrepareSubroutineSequence(battleCtx, subscript_embargo_end);
state = STATE_BREAK_OUT;
}
@ -1689,7 +1689,7 @@ static void BattleController_CheckMonConditions(BattleSystem *battleSys, BattleC
battleCtx->sideEffectMon = battler;
battleCtx->sideEffectType = SIDE_EFFECT_TYPE_MOVE_EFFECT;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_FALL_ASLEEP);
PrepareSubroutineSequence(battleCtx, subscript_fall_asleep);
state = STATE_BREAK_OUT;
}
}
@ -1780,7 +1780,7 @@ static void BattleController_CheckSideConditions(BattleSystem *battleSys, Battle
battleCtx->msgMoveTemp = battleCtx->fieldConditions.futureSightMove[battler];
battleCtx->hpCalcTemp = battleCtx->fieldConditions.futureSightDamage[battler];
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_FUTURE_SIGHT_DAMAGE);
PrepareSubroutineSequence(battleCtx, subscript_future_sight_damage);
return;
}
}
@ -1811,7 +1811,7 @@ static void BattleController_CheckSideConditions(BattleSystem *battleSys, Battle
}
battleCtx->msgBattlerTemp = battler;
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_CONTINUE_PERISH_SONG);
PrepareSubroutineSequence(battleCtx, subscript_continue_perish_song);
return;
}
}
@ -1824,7 +1824,7 @@ static void BattleController_CheckSideConditions(BattleSystem *battleSys, Battle
if (battleCtx->fieldConditionsMask & FIELD_CONDITION_TRICK_ROOM) {
battleCtx->fieldConditionsMask -= (1 << FIELD_CONDITION_TRICK_ROOM_SHIFT);
if ((battleCtx->fieldConditionsMask & FIELD_CONDITION_TRICK_ROOM) == FALSE) {
PrepareSubroutineSequence(battleCtx, BATTLE_SUBSCRIPT_TRICK_ROOM_END);
PrepareSubroutineSequence(battleCtx, subscript_trick_room_end);
return;
}
}
@ -1913,11 +1913,11 @@ static void BattleController_ItemCommand(BattleSystem *battleSys, BattleContext
if (Battler_Side(battleSys, battleCtx->attacker)) {
switch (battleCtx->aiContext.usedItemType[battleCtx->attacker >> 1]) {
case ITEM_TYPE_FULL_RESTORE:
nextSeq = BATTLE_SUBSCRIPT_USE_FULL_RESTORE;
nextSeq = subscript_use_full_restore;
break;
case ITEM_TYPE_RECOVER_HP:
nextSeq = BATTLE_SUBSCRIPT_USE_POTION;
nextSeq = subscript_use_potion;
break;
case ITEM_TYPE_RECOVER_STATUS:
@ -1928,16 +1928,16 @@ static void BattleController_ItemCommand(BattleSystem *battleSys, BattleContext
battleCtx->msgTemp = LowestBit(battleCtx->aiContext.usedItemCondition[battleCtx->attacker >> 1]);
}
nextSeq = BATTLE_SUBSCRIPT_USE_STATUS_RECOVERY;
nextSeq = subscript_use_status_recovery;
break;
case ITEM_TYPE_STAT_BOOSTER:
battleCtx->msgTemp = battleCtx->aiContext.usedItemCondition[battleCtx->attacker >> 1];
nextSeq = BATTLE_SUBSCRIPT_USE_STAT_BOOSTER;
nextSeq = subscript_use_stat_booster;
break;
case ITEM_TYPE_GUARD_SPEC:
nextSeq = BATTLE_SUBSCRIPT_USE_GUARD_SPEC;
nextSeq = subscript_use_guard_spec;
break;
}
@ -1948,15 +1948,15 @@ static void BattleController_ItemCommand(BattleSystem *battleSys, BattleContext
case BATTLE_POCKET_RECOVER_HP:
case BATTLE_POCKET_BATTLE_ITEMS:
if (used->item == ITEM_POKE_DOLL || used->item == ITEM_FLUFFY_TAIL) {
nextSeq = BATTLE_SUBSCRIPT_ESCAPE_ITEM;
nextSeq = subscript_escape_item;
} else {
nextSeq = BATTLE_SUBSCRIPT_BATTLE_ITEM;
nextSeq = subscript_battle_item;
}
break;
case BATTLE_POCKET_POKE_BALLS:
nextSeq = BATTLE_SUBSCRIPT_THROW_POKEBALL;
nextSeq = subscript_throw_pokeball;
if ((BattleSystem_BattleType(battleSys) & BATTLE_TYPE_TRAINER) == FALSE
&& (BattleSystem_BattleType(battleSys) & BATTLE_TYPE_CATCH_TUTORIAL) == FALSE) {
Bag_SubtractItem(BattleSystem_Bag(battleSys), used->item, 1, HEAP_ID_BATTLE);
@ -1977,7 +1977,7 @@ static void BattleController_ItemCommand(BattleSystem *battleSys, BattleContext
static void BattleController_SwitchCommand(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SWITCH_POKEMON);
LOAD_SUBSEQ(subscript_switch_pokemon);
battleCtx->attacker = battleCtx->battlerActionOrder[battleCtx->turnOrderCounter];
battleCtx->switchedMon = battleCtx->attacker;
@ -1994,24 +1994,24 @@ static void BattleController_FleeCommand(BattleSystem *battleSys, BattleContext
if (Battler_Side(battleSys, battleCtx->attacker)
&& (BattleSystem_BattleType(battleSys) & BATTLE_TYPE_LINK) == FALSE) {
if (ATTACKING_MON.statusVolatile & (VOLATILE_CONDITION_BIND | VOLATILE_CONDITION_MEAN_LOOK)) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_ENEMY_ESCAPE_FAILED);
LOAD_SUBSEQ(subscript_enemy_escape_failed);
battleCtx->scriptCursor = 0;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_MOVE_END;
} else {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_ENEMY_ESCAPE);
LOAD_SUBSEQ(subscript_enemy_escape);
battleCtx->scriptCursor = 0;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_FIGHT_END;
}
} else {
if (Battler_CanEscape(battleSys, battleCtx, battleCtx->attacker)) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_ESCAPE);
LOAD_SUBSEQ(subscript_escape);
battleCtx->scriptCursor = 0;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_FIGHT_END;
} else {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_ESCAPE_FAILED);
LOAD_SUBSEQ(subscript_escape_failed);
battleCtx->scriptCursor = 0;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_MOVE_END;
@ -2021,7 +2021,7 @@ static void BattleController_FleeCommand(BattleSystem *battleSys, BattleContext
static void BattleController_SafariBallCommand(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_THROW_SAFARI_BALL);
LOAD_SUBSEQ(subscript_throw_safari_ball);
battleCtx->attacker = BATTLER_US;
battleCtx->defender = BATTLER_THEM;
@ -2036,7 +2036,7 @@ static void BattleController_SafariBallCommand(BattleSystem *battleSys, BattleCo
static void BattleController_SafariBaitCommand(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SAFARI_THROW_BAIT);
LOAD_SUBSEQ(subscript_safari_throw_bait);
battleCtx->attacker = BATTLER_US;
battleCtx->defender = BATTLER_THEM;
@ -2058,7 +2058,7 @@ static void BattleController_SafariBaitCommand(BattleSystem *battleSys, BattleCo
static void BattleController_SafariRockCommand(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SAFARI_THROW_ROCK);
LOAD_SUBSEQ(subscript_safari_throw_rock);
battleCtx->attacker = BATTLER_US;
battleCtx->defender = BATTLER_THEM;
@ -2081,7 +2081,7 @@ static void BattleController_SafariRockCommand(BattleSystem *battleSys, BattleCo
static void BattleController_SafariFleeCommand(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SAFARI_ESCAPE);
LOAD_SUBSEQ(subscript_safari_escape);
battleCtx->attacker = BATTLER_US;
battleCtx->defender = BATTLER_THEM;
@ -2165,7 +2165,7 @@ static int BattleController_CheckObedience(BattleSystem *battleSys, BattleContex
if ((ATTACKING_MON.status & MON_CONDITION_SLEEP)
&& (battleCtx->moveCur == MOVE_SNORE || battleCtx->moveCur == MOVE_SLEEP_TALK)) {
*nextSeq = BATTLE_SUBSCRIPT_DISOBEY_WHILE_ASLEEP;
*nextSeq = subscript_disobey_while_asleep;
return OBEY_CHECK_DO_NOTHING;
}
@ -2174,7 +2174,7 @@ static int BattleController_CheckObedience(BattleSystem *battleSys, BattleContex
rand1 = BattleSystem_CheckInvalidMoves(battleSys, battleCtx, battleCtx->attacker, FlagIndex(ATTACKER_MOVE_SLOT), CHECK_INVALID_ALL);
if (rand1 == STRUGGLING_ALL) {
*nextSeq = BATTLE_SUBSCRIPT_DISOBEY_DO_NOTHING;
*nextSeq = subscript_disobey_do_nothing;
return OBEY_CHECK_DO_NOTHING;
}
@ -2193,7 +2193,7 @@ static int BattleController_CheckObedience(BattleSystem *battleSys, BattleContex
ATTACKER_ACTION[BATTLE_ACTION_CHOOSE_TARGET] = battleCtx->defender;
}
*nextSeq = BATTLE_SUBSCRIPT_DISOBEY_ORDERS;
*nextSeq = subscript_disobey_orders;
battleCtx->multiHitCheckFlags |= SYSCTL_SKIP_OBEDIENCE_CHECK;
return OBEY_CHECK_DIFFERENT_MOVE;
}
@ -2204,7 +2204,7 @@ static int BattleController_CheckObedience(BattleSystem *battleSys, BattleContex
&& Battler_Ability(battleCtx, battleCtx->attacker) != ABILITY_VITAL_SPIRIT
&& Battler_Ability(battleCtx, battleCtx->attacker) != ABILITY_INSOMNIA
&& (battleCtx->fieldConditionsMask & FIELD_CONDITION_UPROAR) == FALSE) {
*nextSeq = BATTLE_SUBSCRIPT_DISOBEY_SLEEP;
*nextSeq = subscript_disobey_sleep;
return OBEY_CHECK_DO_NOTHING;
}
@ -2217,12 +2217,12 @@ static int BattleController_CheckObedience(BattleSystem *battleSys, BattleContex
battleCtx->hpCalcTemp = BattleSystem_CalcDamageVariance(battleSys, battleCtx, battleCtx->hpCalcTemp);
battleCtx->hpCalcTemp *= -1;
*nextSeq = BATTLE_SUBSCRIPT_DISOBEY_HIT_SELF;
*nextSeq = subscript_disobey_hit_self;
battleCtx->battleStatusMask |= SYSCTL_CHECK_LOOP_ONLY_ONCE;
return OBEY_CHECK_HIT_SELF;
}
*nextSeq = BATTLE_SUBSCRIPT_DISOBEY_DO_NOTHING;
*nextSeq = subscript_disobey_do_nothing;
return OBEY_CHECK_DO_NOTHING;
}
@ -2311,7 +2311,7 @@ static BOOL BattleController_HasNoTarget(BattleSystem *battleSys, BattleContext
BOOL solarMove = FALSE;
if (NO_TARGET) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_NO_TARGET);
LOAD_SUBSEQ(subscript_no_target);
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2435,7 +2435,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
&& Battler_Ability(battleCtx, battleCtx->attacker) != ABILITY_SOUNDPROOF) {
battleCtx->msgBattlerTemp = battleCtx->attacker;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_WAKE_UP);
LOAD_SUBSEQ(subscript_wake_up);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
result = CHECK_STATUS_GO_TO_SCRIPT;
@ -2455,7 +2455,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (ATTACKING_MON.status & MON_CONDITION_SLEEP) {
if (battleCtx->moveCur != MOVE_SNORE && battleCtx->moveTemp != MOVE_SLEEP_TALK) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SLEEPING);
LOAD_SUBSEQ(subscript_sleeping);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2465,7 +2465,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
} else {
battleCtx->msgBattlerTemp = battleCtx->attacker;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_WAKE_UP);
LOAD_SUBSEQ(subscript_wake_up);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2482,7 +2482,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (BattleSystem_RandNext(battleSys) % 5 != 0) {
if (moveEffect != BATTLE_EFFECT_THAW_AND_BURN_HIT
&& moveEffect != BATTLE_EFFECT_RECOIL_BURN_HIT) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_FROZEN);
LOAD_SUBSEQ(subscript_frozen);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2491,7 +2491,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
} else {
battleCtx->msgBattlerTemp = battleCtx->attacker;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_THAW_OUT);
LOAD_SUBSEQ(subscript_thaw_out);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
result = CHECK_STATUS_GO_TO_SCRIPT;
@ -2503,7 +2503,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
case CHECK_STATUS_STATE_TRUANT:
if (Battler_CheckTruant(battleCtx, battleCtx->attacker) == TRUE) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_LOAFING_AROUND);
LOAD_SUBSEQ(subscript_loafing_around);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2517,7 +2517,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (ATTACKING_MON.statusVolatile & VOLATILE_CONDITION_RECHARGING) {
ATTACKING_MON.statusVolatile &= ~VOLATILE_CONDITION_RECHARGING;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_RECHARGING);
LOAD_SUBSEQ(subscript_recharging);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2532,7 +2532,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
ATTACKING_MON.statusVolatile &= ~VOLATILE_CONDITION_FLINCH;
battleCtx->moveFailFlags[battleCtx->attacker].flinched = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_FLINCHED);
LOAD_SUBSEQ(subscript_flinched);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2546,7 +2546,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (ATTACKING_MON.moveEffectsData.disabledMove == battleCtx->moveTemp) {
battleCtx->moveFailFlags[battleCtx->attacker].disabled = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MOVE_IS_DISABLED);
LOAD_SUBSEQ(subscript_move_is_disabled);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2561,7 +2561,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
&& battleCtx->aiContext.moveTable[battleCtx->moveCur].power == 0) {
battleCtx->moveFailFlags[battleCtx->attacker].taunted = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MOVE_FAIL_TAUNTED);
LOAD_SUBSEQ(subscript_move_fail_taunted);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2575,7 +2575,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (Move_Imprisoned(battleSys, battleCtx, battleCtx->attacker, battleCtx->moveCur)) {
battleCtx->moveFailFlags[battleCtx->attacker].imprisoned = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MOVE_IS_IMPRISONED);
LOAD_SUBSEQ(subscript_move_is_imprisoned);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2589,7 +2589,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (Move_FailsInHighGravity(battleSys, battleCtx, battleCtx->attacker, battleCtx->moveCur)) {
battleCtx->moveFailFlags[battleCtx->attacker].gravity = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MOVE_FAIL_GRAVITY);
LOAD_SUBSEQ(subscript_move_fail_gravity);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2603,7 +2603,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (Move_HealBlocked(battleSys, battleCtx, battleCtx->attacker, battleCtx->moveCur)) {
battleCtx->moveFailFlags[battleCtx->attacker].healBlocked = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MOVE_IS_HEAL_BLOCKED);
LOAD_SUBSEQ(subscript_move_is_heal_blocked);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2621,7 +2621,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (ATTACKING_MON.statusVolatile & VOLATILE_CONDITION_CONFUSION) {
if (BattleSystem_RandNext(battleSys) & 1) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_CONFUSED);
LOAD_SUBSEQ(subscript_confused);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2635,14 +2635,14 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
battleCtx->hpCalcTemp = BattleSystem_CalcDamageVariance(battleSys, battleCtx, battleCtx->hpCalcTemp);
battleCtx->hpCalcTemp *= -1;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_HURT_SELF_IN_CONFUSION);
LOAD_SUBSEQ(subscript_hurt_self_in_confusion);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_LOOP_FAINTED;
result = CHECK_STATUS_DISRUPT_MOVE;
}
} else {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SNAP_OUT_OF_CONFUSION);
LOAD_SUBSEQ(subscript_snap_out_of_confusion);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2657,7 +2657,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
if (BattleSystem_RandNext(battleSys) % 4 == 0) {
battleCtx->moveFailFlags[battleCtx->attacker].paralyzed = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_FULLY_PARALYZED);
LOAD_SUBSEQ(subscript_fully_paralyzed);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2675,7 +2675,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
);
if (BattleSystem_RandNext(battleSys) & 1) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_INFATUATED);
LOAD_SUBSEQ(subscript_infatuated);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2683,7 +2683,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
} else {
battleCtx->moveFailFlags[battleCtx->attacker].infatuated = TRUE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_IMMOBILIZED_BY_LOVE);
LOAD_SUBSEQ(subscript_immobilized_by_love);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
@ -2710,7 +2710,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
battleCtx->defender = BattleSystem_RandomOpponent(battleSys, battleCtx, battleCtx->attacker);
if (DEFENDING_MON.curHP == 0) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_BIDE_NO_TARGET);
LOAD_SUBSEQ(subscript_bide_no_target);
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2720,7 +2720,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
}
}
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_BIDE_END);
LOAD_SUBSEQ(subscript_bide_end);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2731,7 +2731,7 @@ static BOOL BattleController_CheckStatusDisruption(BattleSystem *battleSys, Batt
case CHECK_STATUS_STATE_SELF_THAW:
if ((ATTACKING_MON.status & MON_CONDITION_FREEZE)
&& (moveEffect == BATTLE_EFFECT_THAW_AND_BURN_HIT || moveEffect == BATTLE_EFFECT_RECOIL_BURN_HIT)) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_DEFROSTED_BY_MOVE);
LOAD_SUBSEQ(subscript_defrosted_by_move);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2792,7 +2792,7 @@ static BOOL BattleController_TriggerImmunityAbilities(BattleSystem *battleSys, B
int nextSeq = BattleSystem_TriggerImmunityAbility(battleCtx, battleCtx->attacker, battleCtx->defender);
if ((nextSeq && (battleCtx->moveStatusFlags & MOVE_STATUS_DID_NOT_HIT) == FALSE)
|| nextSeq == BATTLE_SUBSCRIPT_BLOCKED_BY_SOUNDPROOF) {
|| nextSeq == subscript_blocked_by_soundproof) {
LOAD_SUBSEQ(nextSeq);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -2825,7 +2825,7 @@ static BOOL BattleController_TriggerImmunityAbilities(BattleSystem *battleSys, B
*/
static BOOL BattleController_LoadQuickClawCheck(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_CHECK_QUICK_CLAW);
LOAD_SUBSEQ(subscript_check_quick_claw);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -3079,7 +3079,7 @@ static BOOL BattleController_MoveStolen(BattleSystem *battleSys, BattleContext *
battleCtx->battleStatusMask |= SYSCTL_REUSE_LAST_MOVE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MAGIC_COAT);
LOAD_SUBSEQ(subscript_magic_coat);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -3103,7 +3103,7 @@ static BOOL BattleController_MoveStolen(BattleSystem *battleSys, BattleContext *
battleCtx->battleStatusMask |= SYSCTL_REUSE_LAST_MOVE;
}
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SNATCH);
LOAD_SUBSEQ(subscript_snatch);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -3317,7 +3317,7 @@ static void BattleController_CheckMoveFailure(BattleSystem *battleSys, BattleCon
if (battleCtx->moveStatusFlags & MOVE_STATUS_NO_MORE_WORK) {
battleCtx->command = BATTLE_CONTROL_LOOP_SPREAD_MOVES;
} else if (battleCtx->moveStatusFlags & MOVE_STATUS_NO_PP) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_NO_PP);
LOAD_SUBSEQ(subscript_no_pp);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
} else if (battleCtx->multiHitLoop && (battleCtx->moveStatusFlags & MOVE_STATUS_MISSED)) {
@ -3326,7 +3326,7 @@ static void BattleController_CheckMoveFailure(BattleSystem *battleSys, BattleCon
battleCtx->moveStatusFlags |= MOVE_STATUS_MULTI_HIT_DISRUPTED;
battleCtx->command = BATTLE_CONTROL_AFTER_MOVE_MESSAGE;
} else if (battleCtx->moveStatusFlags & MOVE_STATUS_DID_NOT_HIT) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MISSED);
LOAD_SUBSEQ(subscript_missed);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_LOOP_FAINTED; // crash damage can kill
} else {
@ -3336,7 +3336,7 @@ static void BattleController_CheckMoveFailure(BattleSystem *battleSys, BattleCon
static void BattleController_UseMove(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_USE_MOVE);
LOAD_SUBSEQ(subscript_use_move);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_HP;
}
@ -3374,7 +3374,7 @@ static void BattleController_UpdateHP(BattleSystem *battleSys, BattleContext *ba
DEFENDER_SELF_TURN_FLAGS.statusFlags |= SELF_TURN_FLAG_SUBSTITUTE_HIT;
battleCtx->msgBattlerTemp = battleCtx->defender;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_HIT_SUBSTITUTE);
LOAD_SUBSEQ(subscript_hit_substitute);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_AFTER_MOVE_MESSAGE;
@ -3438,7 +3438,7 @@ static void BattleController_UpdateHP(BattleSystem *battleSys, BattleContext *ba
battleCtx->msgBattlerTemp = battleCtx->defender;
battleCtx->hpCalcTemp = battleCtx->damage;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_UPDATE_HP);
LOAD_SUBSEQ(subscript_update_hp);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_AFTER_MOVE_MESSAGE;
battleCtx->battleStatusMask |= SYSCTL_MOVE_HIT;
@ -3501,7 +3501,7 @@ static void BattleController_AfterMoveMessage(BattleSystem *battleSys, BattleCon
battleCtx->afterMoveMessageState++;
// Shaymin changes forms from Sky to Land whenever it is Frozen.
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_CHECK_SHAYMIN_FORM);
LOAD_SUBSEQ(subscript_check_shaymin_form);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -3561,7 +3561,7 @@ static void BattleController_AfterMoveMessage(BattleSystem *battleSys, BattleCon
battleCtx->afterMoveMessageState++;
// Shaymin changes forms from Sky to Land whenever it is Frozen.
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_CHECK_SHAYMIN_FORM);
LOAD_SUBSEQ(subscript_check_shaymin_form);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -3648,7 +3648,7 @@ static void BattleController_AfterMoveEffects(BattleSystem *battleSys, BattleCon
&& (battleCtx->battleMons[battleCtx->afterMoveEffectTemp].moveEffectsTemp & MOVE_EFFECT_SEMI_INVULNERABLE)) {
battleCtx->battleMons[battleCtx->afterMoveEffectTemp].moveEffectsTemp &= ~MOVE_EFFECT_SEMI_INVULNERABLE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_VANISH_OFF);
LOAD_SUBSEQ(subscript_vanish_off);
battleCtx->msgBattlerTemp = battleCtx->afterMoveEffectTemp;
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -3723,7 +3723,7 @@ static void BattleController_AfterMoveEffects(BattleSystem *battleSys, BattleCon
&& moveType == TYPE_FIRE) {
battleCtx->msgBattlerTemp = battleCtx->defender;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_THAW_OUT);
LOAD_SUBSEQ(subscript_thaw_out);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -3796,7 +3796,7 @@ static void BattleController_LoopMultiHit(BattleSystem *battleSys, BattleContext
} else {
battleCtx->msgTemp = battleCtx->multiHitNumHits;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_HIT_X_TIMES);
LOAD_SUBSEQ(subscript_hit_x_times);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_LOOP_FAINTED;
}
@ -3809,7 +3809,7 @@ static void BattleController_LoopMultiHit(BattleSystem *battleSys, BattleContext
battleCtx->msgTemp = battleCtx->multiHitNumHits - battleCtx->multiHitCounter;
}
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_HIT_X_TIMES);
LOAD_SUBSEQ(subscript_hit_x_times);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_LOOP_FAINTED;
}
@ -3895,7 +3895,7 @@ static void BattleController_FaintAfterSelfdestruct(BattleSystem *battleSys, Bat
battleCtx->faintedMon = LowestBit((battleCtx->battleStatusMask & SYSCTL_MON_SELFDESTRUCTED) >> SYSCTL_MON_SELFDESTRUCTED_SHIFT);
battleCtx->battleStatusMask &= ~SYSCTL_MON_SELFDESTRUCTED;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_AFTER_SELFDESTRUCT);
LOAD_SUBSEQ(subscript_after_selfdestruct);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_TRIGGER_AFTER_HIT_EFFECTS;
} else {
@ -4017,11 +4017,11 @@ static void BattleController_HandleResult(BattleSystem *battleSys, BattleContext
battleCtx->command = BATTLE_CONTROL_FIGHT_END;
} else if (BattleSystem_ResultMask(battleSys) == BATTLE_RESULT_LOSE
|| BattleSystem_ResultMask(battleSys) == BATTLE_RESULT_DRAW) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_BATTLE_LOST);
LOAD_SUBSEQ(subscript_battle_lost);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_FIGHT_END;
} else if (BattleSystem_ResultMask(battleSys) == BATTLE_RESULT_WIN) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_BATTLE_WON);
LOAD_SUBSEQ(subscript_battle_won);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = BATTLE_CONTROL_FIGHT_END;
} else if (BattleSystem_ResultMask(battleSys) == BATTLE_RESULT_CAPTURED_MON) {
@ -4158,9 +4158,9 @@ static BOOL BattleController_ReplaceFainted(BattleSystem *battleSys, BattleConte
battleCtx->scriptTemp = TRUE;
}
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_REPLACE_FAINTED);
LOAD_SUBSEQ(subscript_replace_fainted);
} else {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_SHOW_PARTY_LIST);
LOAD_SUBSEQ(subscript_show_party_list);
}
result = TRUE;
@ -4424,9 +4424,9 @@ static BOOL BattleController_AnyFainted(BattleContext *battleCtx, int nextCmd, i
battleCtx->faintedMon = LowestBit(battlerBit >> SYSCTL_MON_FAINTED_SHIFT);
if (onlyFaint == TRUE) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_FAINT_MON);
LOAD_SUBSEQ(subscript_faint_mon);
} else {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_FAINT_CHECK_DESTINY_BOND);
LOAD_SUBSEQ(subscript_faint_check_destiny_bond);
}
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -4460,7 +4460,7 @@ static BOOL BattleController_AnyExpPayout(BattleContext *battleCtx, int nextCmd,
battleCtx->battleStatusMask2 &= (battler ^ 0xFFFFFFFF);
battleCtx->faintedMon = LowestBit(battler >> SYSCTL_PAYOUT_EXP_SHIFT);
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_GRANT_EXP);
LOAD_SUBSEQ(subscript_grant_exp);
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
battleCtx->commandNext = nextCmd;
@ -4549,7 +4549,7 @@ static void BattleController_UpdateFlagsWhenHit(BattleSystem *battleSys, BattleC
*/
static BOOL BattleController_CriticalMessage(BattleSystem *battleSys, BattleContext *battleCtx)
{
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_CRITICAL_HIT);
LOAD_SUBSEQ(subscript_critical_hit);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -4583,7 +4583,7 @@ static BOOL BattleController_FollowupMessage(BattleSystem *battleSys, BattleCont
}
if (result == TRUE) {
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_MOVE_FOLLOWUP_MESSAGE);
LOAD_SUBSEQ(subscript_move_followup_message);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
}
@ -4613,7 +4613,7 @@ static BOOL BattleController_RageBuilding(BattleSystem *battleSys, BattleContext
&& DEFENDING_MON.statBoosts[BATTLE_STAT_ATTACK] < 12) {
DEFENDING_MON.statBoosts[BATTLE_STAT_ATTACK]++;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_RAGE_IS_BUILDING);
LOAD_SUBSEQ(subscript_rage_is_building);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
result = TRUE;
@ -4646,7 +4646,7 @@ static BOOL BattleController_CheckExtraFlinch(BattleSystem *battleSys, BattleCon
battleCtx->sideEffectMon = battleCtx->defender;
battleCtx->sideEffectType = SIDE_EFFECT_TYPE_INDIRECT;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_FLINCH_MON);
LOAD_SUBSEQ(subscript_flinch_mon);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -4672,7 +4672,7 @@ static BOOL BattleController_ToggleSemiInvulnMons(BattleSystem *battleSys, Battl
&& (battleCtx->battleMons[battleCtx->vanishedCheckTemp].moveEffectsTemp & MOVE_EFFECT_SEMI_INVULNERABLE)) {
battleCtx->battleMons[battleCtx->vanishedCheckTemp].moveEffectsTemp &= ~MOVE_EFFECT_SEMI_INVULNERABLE;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_VANISH_OFF);
LOAD_SUBSEQ(subscript_vanish_off);
battleCtx->msgBattlerTemp = battleCtx->vanishedCheckTemp;
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -4748,7 +4748,7 @@ static BOOL BattleController_TriggerAfterMoveHitEffects(BattleSystem *battleSys,
battleCtx->hpCalcTemp = BattleSystem_Divide(ATTACKER_SELF_TURN_FLAGS.shellBellDamageDealt * -1, itemPower);
battleCtx->msgBattlerTemp = battleCtx->attacker;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_RESTORE_A_LITTLE_HP);
LOAD_SUBSEQ(subscript_restore_a_little_hp);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;
@ -4768,7 +4768,7 @@ static BOOL BattleController_TriggerAfterMoveHitEffects(BattleSystem *battleSys,
battleCtx->hpCalcTemp = BattleSystem_Divide(battleCtx->battleMons[battleCtx->attacker].maxHP * -1, 10);
battleCtx->msgBattlerTemp = battleCtx->attacker;
LOAD_SUBSEQ(BATTLE_SUBSCRIPT_LOSE_HP_FROM_ITEM);
LOAD_SUBSEQ(subscript_lose_hp_from_item);
battleCtx->commandNext = battleCtx->command;
battleCtx->command = BATTLE_CONTROL_EXEC_SCRIPT;

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,6 @@
#include <string.h>
#include "consts/generated/c/abilities.h"
#include "consts/generated/c/battle_subscripts.h"
#include "consts/generated/c/gender.h"
#include "constants/battle.h"
@ -31,6 +30,7 @@
#include "battle/btlcmd.h"
#include "battle/common.h"
#include "battle/battle_controller.h"
#include "battle/scripts/sub_seq.naix"
#include "constdata/const_020F2DAC.h"
@ -1837,7 +1837,7 @@ static BOOL BtlCmd_PlayMoveAnimation(BattleSystem *battleSys, BattleContext *bat
}
if (BattleSystem_AnimationsOn(battleSys) == FALSE) {
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_WAIT_MOVE_ANIMATION);
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_wait_move_animation);
}
return FALSE;
@ -1882,7 +1882,7 @@ static BOOL BtlCmd_PlayMoveAnimationOnMons(BattleSystem *battleSys, BattleContex
}
if (BattleSystem_AnimationsOn(battleSys) == FALSE) {
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_WAIT_MOVE_ANIMATION);
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_wait_move_animation);
}
return FALSE;
@ -2363,7 +2363,7 @@ static BOOL BtlCmd_GoToMoveScript(BattleSystem *battleSys, BattleContext *battle
if (battleCtx->defender == BATTLER_NONE) {
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_NO_TARGET);
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_no_target);
} else {
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__WAZA_SEQ, battleCtx->moveCur);
}
@ -3747,7 +3747,7 @@ static BOOL BtlCmd_SetMirrorMove(BattleSystem *battleSys, BattleContext *battleC
if (battleCtx->defender == BATTLER_NONE) {
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_NO_TARGET);
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_no_target);
} else {
ATTACKER_ACTION[BATTLE_ACTION_CHOOSE_TARGET] = battleCtx->defender;
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__WAZA_SEQ, move);
@ -4875,7 +4875,7 @@ static BOOL BtlCmd_Counter(BattleSystem *battleSys, BattleContext *battleCtx)
// CompareVarToValue there are no possible targets, fail
if (DEFENDING_MON.curHP == 0) {
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_NO_TARGET);
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_no_target);
}
}
@ -4928,7 +4928,7 @@ static BOOL BtlCmd_MirrorCoat(BattleSystem *battleSys, BattleContext *battleCtx)
// CompareVarToValue there are no possible targets, fail
if (DEFENDING_MON.curHP == 0) {
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_NO_TARGET);
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_no_target);
}
}
@ -6143,7 +6143,7 @@ static BOOL BtlCmd_RapidSpin(BattleSystem *battleSys, BattleContext *battleCtx)
ATTACKING_MON.statusVolatile &= ~VOLATILE_CONDITION_BIND;
battleCtx->msgBattlerTemp = ATTACKING_MON.moveEffectsData.bindTarget;
battleCtx->msgMoveTemp = ATTACKING_MON.moveEffectsData.bindingMove;
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_BREAK_BIND_EFFECT);
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_break_bind_effect);
return FALSE;
}
@ -6152,7 +6152,7 @@ static BOOL BtlCmd_RapidSpin(BattleSystem *battleSys, BattleContext *battleCtx)
ATTACKING_MON.moveEffectsMask &= ~MOVE_EFFECT_LEECH_SEED;
ATTACKING_MON.moveEffectsMask &= ~MOVE_EFFECT_LEECH_SEED_RECIPIENT;
battleCtx->msgMoveTemp = MOVE_LEECH_SEED;
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_BLOW_AWAY_HAZARDS);
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_blow_away_hazards);
return FALSE;
}
@ -6161,7 +6161,7 @@ static BOOL BtlCmd_RapidSpin(BattleSystem *battleSys, BattleContext *battleCtx)
battleCtx->sideConditionsMask[side] &= ~SIDE_CONDITION_SPIKES;
battleCtx->sideConditions[side].spikesLayers = 0;
battleCtx->msgMoveTemp = MOVE_SPIKES;
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_BLOW_AWAY_HAZARDS);
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_blow_away_hazards);
return FALSE;
}
@ -6171,7 +6171,7 @@ static BOOL BtlCmd_RapidSpin(BattleSystem *battleSys, BattleContext *battleCtx)
battleCtx->sideConditions[side].toxicSpikesLayers = 0;
battleCtx->msgMoveTemp = MOVE_TOXIC_SPIKES;
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_BLOW_AWAY_HAZARDS);
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_blow_away_hazards);
return FALSE;
}
@ -6179,7 +6179,7 @@ static BOOL BtlCmd_RapidSpin(BattleSystem *battleSys, BattleContext *battleCtx)
if (battleCtx->sideConditionsMask[side] & SIDE_CONDITION_STEALTH_ROCK) {
battleCtx->sideConditionsMask[side] &= ~SIDE_CONDITION_STEALTH_ROCK;
battleCtx->msgMoveTemp = MOVE_STEALTH_ROCK;
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_BLOW_AWAY_HAZARDS);
BattleScript_Call(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_blow_away_hazards);
return FALSE;
}
@ -7408,7 +7408,7 @@ static BOOL BtlCmd_TryMetalBurst(BattleSystem *battleSys, BattleContext *battleC
if (DEFENDING_MON.curHP == 0) {
battleCtx->commandNext = BATTLE_CONTROL_UPDATE_MOVE_BUFFERS;
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, BATTLE_SUBSCRIPT_NO_TARGET);
BattleScript_Jump(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, subscript_no_target);
}
}