summaryrefslogtreecommitdiff
path: root/asm/macros/battle_ai_script.inc
diff options
context:
space:
mode:
Diffstat (limited to 'asm/macros/battle_ai_script.inc')
-rw-r--r--asm/macros/battle_ai_script.inc397
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