diff options
Diffstat (limited to 'asm/macros/battle_ai_script.inc')
-rw-r--r-- | asm/macros/battle_ai_script.inc | 397 |
1 files changed, 222 insertions, 175 deletions
diff --git a/asm/macros/battle_ai_script.inc b/asm/macros/battle_ai_script.inc index 679e30340..3aadc1e47 100644 --- a/asm/macros/battle_ai_script.inc +++ b/asm/macros/battle_ai_script.inc @@ -1,257 +1,257 @@ - .macro if_random_less_than percent, address + .macro if_random_less_than percent:req, ptr:req .byte 0x00 .byte \percent - .4byte \address + .4byte \ptr .endm @ unused - .macro if_random_greater_than percent, address + .macro if_random_greater_than percent:req, ptr:req .byte 0x01 .byte \percent - .4byte \address + .4byte \ptr .endm @ unused - .macro if_random_equal address + .macro if_random_equal ptr:req .byte 0x02 - .4byte \address + .4byte \ptr .endm @ unused - .macro if_random_not_equal address + .macro if_random_not_equal ptr:req .byte 0x03 - .4byte \address + .4byte \ptr .endm - .macro score score + .macro score score:req .byte 0x04 .byte \score .endm - .macro if_hp_less_than target, percent, address + .macro if_hp_less_than battler:req, percent:req, ptr:req .byte 0x05 - .byte \target + .byte \battler .byte \percent - .4byte \address + .4byte \ptr .endm - .macro if_hp_more_than target, percent, address + .macro if_hp_more_than battler:req, percent:req, ptr:req .byte 0x06 - .byte \target + .byte \battler .byte \percent - .4byte \address + .4byte \ptr .endm - .macro if_hp_equal target, percent, address + .macro if_hp_equal battler:req, percent:req, ptr:req .byte 0x07 - .byte \target + .byte \battler .byte \percent - .4byte \address + .4byte \ptr .endm - .macro if_hp_not_equal target, percent, address + .macro if_hp_not_equal battler:req, percent:req, ptr:req .byte 0x08 - .byte \target + .byte \battler .byte \percent - .4byte \address + .4byte \ptr .endm - .macro if_status target, status, address + .macro if_status battler:req, status:req, ptr:req .byte 0x09 - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_not_status target, status, address + .macro if_not_status battler:req, status:req, ptr:req .byte 0x0a - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_status2 target, status, address + .macro if_status2 battler:req, status:req, ptr:req .byte 0x0b - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_not_status2 target, status, address + .macro if_not_status2 battler:req, status:req, ptr:req .byte 0x0c - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_status3 target, status, address + .macro if_status3 battler:req, status:req, ptr:req .byte 0x0d - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_not_status3 target, status, address + .macro if_not_status3 battler:req, status:req, ptr:req .byte 0x0e - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_status4 target, status, address + .macro if_side_affecting battler:req, status:req, ptr:req .byte 0x0f - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_not_status4 target, status, address + .macro if_not_side_affecting battler:req, status:req, ptr:req .byte 0x10 - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm - .macro if_less_than value, address + .macro if_less_than value:req, ptr:req .byte 0x11 .byte \value - .4byte \address + .4byte \ptr .endm - .macro if_more_than value, address + .macro if_more_than value:req, ptr:req .byte 0x12 .byte \value - .4byte \address + .4byte \ptr .endm - .macro if_equal value, address + .macro if_equal value:req, ptr:req .byte 0x13 .byte \value - .4byte \address + .4byte \ptr .endm - .macro if_not_equal value, address + .macro if_not_equal value:req, ptr:req .byte 0x14 .byte \value - .4byte \address + .4byte \ptr .endm - .macro if_less_than_32 value, address + .macro if_less_than_ptr value:req, ptr:req .byte 0x15 .4byte \value - .4byte \address + .4byte \ptr .endm - .macro if_more_than_32 value, address + .macro if_more_than_ptr value:req, ptr:req .byte 0x16 .4byte \value - .4byte \address + .4byte \ptr .endm - .macro if_equal_32 value, address + .macro if_equal_ptr value:req, ptr:req .byte 0x17 .4byte \value - .4byte \address + .4byte \ptr .endm - .macro if_not_equal_32 value, address + .macro if_not_equal_ptr value:req, ptr:req .byte 0x18 .4byte \value - .4byte \address + .4byte \ptr .endm - .macro if_move move, address + .macro if_move move:req, ptr:req .byte 0x19 .2byte \move - .4byte \address + .4byte \ptr .endm - .macro if_not_move move, address + .macro if_not_move move:req, ptr:req .byte 0x1a .2byte \move - .4byte \address + .4byte \ptr .endm - .macro if_in_bytes list, address + .macro if_in_bytes list:req, ptr:req .byte 0x1b .4byte \list - .4byte \address + .4byte \ptr .endm - .macro if_not_in_bytes list, address + .macro if_not_in_bytes list:req, ptr:req .byte 0x1c .4byte \list - .4byte \address + .4byte \ptr .endm - .macro if_in_words list, address + .macro if_in_hwords list:req, ptr:req .byte 0x1d .4byte \list - .4byte \address + .4byte \ptr .endm - .macro if_not_in_words list, address + .macro if_not_in_hwords list:req, ptr:req .byte 0x1e .4byte \list - .4byte \address + .4byte \ptr .endm - .macro if_user_can_damage address + .macro if_user_has_attacking_move ptr:req .byte 0x1f - .4byte \address + .4byte \ptr .endm - .macro if_user_cant_damage address + .macro if_user_has_no_attacking_moves ptr:req .byte 0x20 - .4byte \address + .4byte \ptr .endm .macro get_turn_count .byte 0x21 .endm - .macro get_type byte + .macro get_type byte:req .byte 0x22 .byte \byte .endm @ unused - .macro get_move_power + .macro get_considered_move_power .byte 0x23 .endm - .macro is_most_powerful_move + .macro get_how_powerful_move_is .byte 0x24 .endm - .macro get_move target + .macro get_last_used_move battler:req .byte 0x25 - .byte \target + .byte \battler .endm - .macro if_arg_equal type, address + .macro if_equal_ type:req, ptr:req .byte 0x26 .byte \type - .4byte \address + .4byte \ptr .endm @ unused - .macro if_arg_not_equal type, address + .macro if_not_equal_ type:req, ptr:req .byte 0x27 .byte \type - .4byte \address + .4byte \ptr .endm - .macro if_would_go_first target, address + .macro if_would_go_first battler:req, ptr:req .byte 0x28 - .byte \target - .4byte \address + .byte \battler + .4byte \ptr .endm - .macro if_would_not_go_first target, address + .macro if_would_not_go_first battler:req, ptr:req .byte 0x29 - .byte \target - .4byte \address + .byte \battler + .4byte \ptr .endm @ nullsub @@ -264,9 +264,9 @@ .byte 0x2b .endm - .macro count_alive_pokemon target + .macro count_alive_pokemon battler:req .byte 0x2c - .byte \target + .byte \battler .endm @ unused @@ -274,24 +274,24 @@ .byte 0x2d .endm - .macro get_effect + .macro get_considered_move_effect .byte 0x2e .endm - .macro get_ability target + .macro get_ability battler:req .byte 0x2f - .byte \target + .byte \battler .endm @ unused - .macro get_highest_possible_damage + .macro get_highest_type_effectiveness .byte 0x30 .endm - .macro if_damage_bonus value, address + .macro if_type_effectiveness effectiveness:req, ptr:req .byte 0x31 - .byte \value - .4byte \address + .byte \effectiveness + .4byte \ptr .endm @ nullsub @@ -304,162 +304,162 @@ .byte 0x33 .endm - .macro if_status_in_party target, status, address + .macro if_status_in_party battler:req, status:req, ptr:req .byte 0x34 - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm @ bugged - .macro if_status_not_in_party target, status, address + .macro if_status_not_in_party battler:req, status:req, ptr:req .byte 0x35 - .byte \target + .byte \battler .4byte \status - .4byte \address + .4byte \ptr .endm .macro get_weather .byte 0x36 .endm - .macro if_effect byte, address + .macro if_effect byte:req, ptr:req .byte 0x37 .byte \byte - .4byte \address + .4byte \ptr .endm - .macro if_not_effect byte, address + .macro if_not_effect byte:req, ptr:req .byte 0x38 .byte \byte - .4byte \address + .4byte \ptr .endm - .macro if_stat_level_less_than target, stat, level, address + .macro if_stat_level_less_than battler:req, stat:req, level:req, ptr:req .byte 0x39 - .byte \target + .byte \battler .byte \stat .byte \level - .4byte \address + .4byte \ptr .endm - .macro if_stat_level_more_than target, stat, level, address + .macro if_stat_level_more_than battler:req, stat:req, level:req, ptr:req .byte 0x3a - .byte \target + .byte \battler .byte \stat .byte \level - .4byte \address + .4byte \ptr .endm - .macro if_stat_level_equal target, stat, level, address + .macro if_stat_level_equal battler:req, stat:req, level:req, ptr:req .byte 0x3b - .byte \target + .byte \battler .byte \stat .byte \level - .4byte \address + .4byte \ptr .endm - .macro if_stat_level_not_equal target, stat, level, address + .macro if_stat_level_not_equal battler:req, stat:req, level:req, ptr:req .byte 0x3c - .byte \target + .byte \battler .byte \stat .byte \level - .4byte \address + .4byte \ptr .endm - .macro if_can_faint address + .macro if_can_faint ptr:req .byte 0x3d - .4byte \address + .4byte \ptr .endm - .macro if_cant_faint address + .macro if_cant_faint ptr:req .byte 0x3e - .4byte \address + .4byte \ptr .endm @ unused - .macro if_has_move, target, move, address + .macro if_has_move battler:req, move:req, ptr:req .byte 0x3f - .byte \target + .byte \battler .2byte \move - .4byte \address + .4byte \ptr .endm @ unused - .macro if_dont_have_move, target, move, address + .macro if_doesnt_have_move battler:req, move:req, ptr:req .byte 0x40 - .byte \target + .byte \battler .2byte \move - .4byte \address + .4byte \ptr .endm - .macro if_move_effect target, effect, address + .macro if_has_move_with_effect battler:req, effect:req, ptr:req .byte 0x41 - .byte \target + .byte \battler .byte \effect - .4byte \address + .4byte \ptr .endm - .macro if_not_move_effect target, effect, address + .macro if_doesnt_have_move_with_effect battler:req, effect:req, ptr:req .byte 0x42 - .byte \target + .byte \battler .byte \effect - .4byte \address + .4byte \ptr .endm - .macro if_last_move_did_damage target, byte, address + .macro if_any_move_disabled_or_encored battler:req, byte:req, ptr:req .byte 0x43 - .byte \target + .byte \battler .byte \byte - .4byte \address + .4byte \ptr .endm - .macro if_encored target, address + .macro if_curr_move_disabled_or_encored battler:req, ptr:req .byte 0x44 - .byte \target - .4byte \address + .byte \battler + .4byte \ptr .endm .macro flee .byte 0x45 .endm - .macro if_random_100 address + .macro if_random_safari_flee ptr:req .byte 0x46 - .4byte \address + .4byte \ptr .endm .macro watch .byte 0x47 .endm - .macro get_hold_effect target + .macro get_hold_effect battler:req .byte 0x48 - .byte \target + .byte \battler .endm - .macro get_gender target + .macro get_gender battler:req .byte 0x49 - .byte \target + .byte \battler .endm - .macro is_first_turn target + .macro is_first_turn_for battler:req .byte 0x4a - .byte \target + .byte \battler .endm - .macro get_stockpile_count target + .macro get_stockpile_count battler:req .byte 0x4b - .byte \target + .byte \battler .endm .macro is_double_battle .byte 0x4c .endm - .macro get_item target + .macro get_used_held_item battler:req .byte 0x4d - .byte \target + .byte \battler .endm .macro get_move_type_from_result @@ -474,9 +474,9 @@ .byte 0x50 .endm - .macro get_protect_count target + .macro get_protect_count battler:req .byte 0x51 - .byte \target + .byte \battler .endm @ nullsub @@ -510,45 +510,92 @@ .endm @ unused - .macro call address + .macro call ptr:req .byte 0x58 - .4byte \address + .4byte \ptr .endm - .macro jump address + .macro goto ptr:req .byte 0x59 - .4byte \address + .4byte \ptr .endm .macro end .byte 0x5a .endm - .macro if_level_cond cond, address + .macro if_level_cond cond:req, ptr:req .byte 0x5b .byte \cond - .4byte \address + .4byte \ptr .endm - .macro if_user_higher_level address - if_level_cond 0, \address + .macro if_user_higher_level ptr:req + if_level_cond 0, \ptr .endm - .macro if_target_higher_level address - if_level_cond 1, \address + .macro if_target_higher_level ptr:req + if_level_cond 1, \ptr .endm - .macro if_equal_levels address - if_level_cond 2, \address + .macro if_equal_levels ptr:req + if_level_cond 2, \ptr .endm @ unused - .macro if_taunted address + .macro if_target_taunted ptr:req .byte 0x5c - .4byte \address + .4byte \ptr .endm - .macro if_not_taunted address + .macro if_target_not_taunted ptr:req .byte 0x5d - .4byte \address + .4byte \ptr + .endm + +@ useful script macros + .macro get_curr_move_type + get_type AI_TYPE_MOVE + .endm + + .macro get_user_type1 + get_type AI_TYPE1_USER + .endm + + .macro get_user_type2 + get_type AI_TYPE2_USER + .endm + + .macro get_target_type1 + get_type AI_TYPE1_TARGET + .endm + + .macro get_target_type2 + get_type AI_TYPE2_TARGET + .endm + + .macro if_target_faster ptr:req + if_would_go_first 1, \ptr + .endm + + .macro if_user_faster ptr:req + if_would_go_first 0, \ptr + .endm + + .macro if_double_battle ptr:req + is_double_battle + if_equal 1, \ptr + .endm + + .macro if_not_double_battle ptr:req + is_double_battle + if_equal 0, \ptr + .endm + + .macro if_any_move_disabled battler:req, ptr:req + if_any_move_disabled_or_encored \battler, 0, \ptr + .endm + + .macro if_any_move_encored battler:req, ptr:req + if_any_move_disabled_or_encored \battler, 1, \ptr .endm |