summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_anim_80FE840.s14
-rw-r--r--asm/battle_anim_8170478.s2
-rw-r--r--asm/battle_link_817C95C.s16
-rw-r--r--asm/macros/battle_script.inc10
-rw-r--r--asm/party_menu.s4
-rw-r--r--common_syms/battle_main.txt9
-rw-r--r--constants/battle_constants.inc171
-rw-r--r--constants/battle_script_constants.inc169
-rw-r--r--constants/battle_text.inc375
-rw-r--r--constants/constants.inc1
-rw-r--r--constants/pokemon_data_constants.inc43
-rw-r--r--constants/type_constants.inc18
-rw-r--r--data/battle_ai_scripts.s260
-rw-r--r--data/battle_anim_scripts.s2
-rw-r--r--data/battle_moves.inc2
-rw-r--r--data/battle_scripts_1.s1468
-rw-r--r--data/battle_scripts_2.s37
-rw-r--r--data/battle_tower.s1
-rw-r--r--data/data2b.s33
-rw-r--r--data/data2c.s1
-rw-r--r--data/data2e.s151
-rw-r--r--data/graphics/pokemon/animation_delay_table.inc412
-rw-r--r--data/graphics/pokemon/front_anim_ids_table.inc412
-rw-r--r--include/battle.h497
-rw-r--r--include/battle_anim.h22
-rw-r--r--include/battle_gfx_sfx_util.h36
-rw-r--r--include/battle_main.h10
-rw-r--r--include/battle_script_commands.h45
-rw-r--r--include/battle_scripts.h2
-rw-r--r--include/battle_util.h2
-rw-r--r--include/constants/battle.h284
-rw-r--r--include/constants/battle_ai.h10
-rw-r--r--include/constants/battle_anim.h2
-rw-r--r--include/constants/battle_script_commands.h97
-rw-r--r--include/constants/battle_string_ids.h (renamed from include/battle_string_ids.h)7
-rw-r--r--include/constants/pokemon.h80
-rw-r--r--include/pokemon.h106
-rw-r--r--include/recorded_battle.h10
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_ai_script_commands.c20
-rw-r--r--src/battle_ai_switch_items.c14
-rw-r--r--src/battle_anim.c5
-rw-r--r--src/battle_bg.c4
-rw-r--r--src/battle_controller_link_opponent.c36
-rw-r--r--src/battle_controller_link_partner.c34
-rw-r--r--src/battle_controller_opponent.c34
-rw-r--r--src/battle_controller_player.c46
-rw-r--r--src/battle_controller_player_partner.c36
-rw-r--r--src/battle_controller_recorded_opponent.c39
-rw-r--r--src/battle_controller_recorded_player.c37
-rw-r--r--src/battle_controller_safari.c21
-rw-r--r--src/battle_controller_wally.c37
-rw-r--r--src/battle_controllers.c32
-rw-r--r--src/battle_gfx_sfx_util.c257
-rw-r--r--src/battle_interface.c10
-rw-r--r--src/battle_main.c398
-rw-r--r--src/battle_message.c53
-rw-r--r--src/battle_script_commands.c835
-rw-r--r--src/battle_setup.c15
-rw-r--r--src/battle_transition.c2
-rw-r--r--src/battle_util.c550
-rw-r--r--src/battle_util2.c51
-rw-r--r--src/evolution_scene.c4
-rwxr-xr-xsrc/item_use.c9
-rw-r--r--src/pokeball.c6
-rw-r--r--src/pokemon.c1310
-rw-r--r--src/pokemon_summary_screen.c28
-rw-r--r--src/recorded_battle.c119
-rw-r--r--src/reset_save_heap.c2
-rw-r--r--src/reshow_battle_screen.c19
-rw-r--r--src/safari_zone.c4
-rw-r--r--src/scrcmd.c7
-rw-r--r--src/secret_base.c1
-rw-r--r--src/tv.c8
-rw-r--r--sym_common.txt28
-rw-r--r--sym_ewram.txt283
76 files changed, 3940 insertions, 5276 deletions
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index 3e3be2100..f5b9697af 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -50069,7 +50069,7 @@ sub_8117E94: @ 8117E94
ldrb r1, [r1]
strb r1, [r2]
ldr r2, =gBattleAnimTarget
- ldr r1, =gEffectBank
+ ldr r1, =gEffectBattler
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
@@ -50136,7 +50136,7 @@ sub_8117F30: @ 8117F30
ldrb r1, [r1]
strb r1, [r2]
ldr r2, =gBattleAnimTarget
- ldr r1, =gEffectBank
+ ldr r1, =gEffectBattler
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
@@ -50670,7 +50670,7 @@ _081183B4:
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51014,7 +51014,7 @@ _08118690:
strh r0, [r1, 0xE]
movs r0, 0x1
strh r0, [r1, 0x12]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51315,7 +51315,7 @@ _08118934:
strh r0, [r1, 0xE]
movs r0, 0x1
strh r0, [r1, 0x12]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51675,7 +51675,7 @@ _08118C50:
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51924,7 +51924,7 @@ _08118E7E:
strh r0, [r1, 0x8]
movs r0, 0xF0
strh r0, [r1, 0xC]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
index 1bd7e9629..ef7e609d9 100644
--- a/asm/battle_anim_8170478.s
+++ b/asm/battle_anim_8170478.s
@@ -5069,7 +5069,7 @@ sub_8172ED0: @ 8172ED0
lsls r0, 24
lsrs r0, 24
ldr r2, =gBattleAnimTarget
- ldr r1, =gEffectBank
+ ldr r1, =gEffectBattler
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s
index dcfd89132..55d0bae39 100644
--- a/asm/battle_link_817C95C.s
+++ b/asm/battle_link_817C95C.s
@@ -44,7 +44,7 @@ _0817C988:
bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
- ldr r0, =gEffectBank
+ ldr r0, =gEffectBattler
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
@@ -145,7 +145,7 @@ _0817CA9C:
bl GetBattlerPosition
lsls r0, 24
lsrs r5, r0, 25
- ldr r0, =gEffectBank
+ ldr r0, =gEffectBattler
ldrb r0, [r0]
bl GetBattlerPosition
lsls r0, 24
@@ -1302,7 +1302,7 @@ _0817D6F2:
bl _0817E0A6
_0817D704:
ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBank
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1396,7 +1396,7 @@ _0817D7B2:
.pool
_0817D7D8:
ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBank
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1440,7 +1440,7 @@ _0817D7D8:
.pool
_0817D838:
ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBank
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1628,7 +1628,7 @@ _0817D9AE:
b _0817E086
_0817D9C2:
ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBank
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1703,7 +1703,7 @@ _0817DA48:
.pool
_0817DA68:
ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBank
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1791,7 +1791,7 @@ _0817DB10:
.pool
_0817DB24:
ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBank
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc
index c5ffb5abc..083107c08 100644
--- a/asm/macros/battle_script.inc
+++ b/asm/macros/battle_script.inc
@@ -1373,11 +1373,11 @@
.endm
.macro jumpifmove move, jumpptr
- jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr
+ jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr
.endm
.macro jumpifnotmove move, jumpptr
- jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr
+ jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr
.endm
.macro jumpifstatus3 bank, status, jumpptr
@@ -1389,13 +1389,13 @@
.endm
.macro jumpifmovehadnoeffect jumpptr
- jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr
.endm
.macro jumpifbattletype flags, jumpptr
- jumpifword COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
+ jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
.endm
.macro jumpifnotbattletype flags, jumpptr
- jumpifword NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
+ jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
.endm
diff --git a/asm/party_menu.s b/asm/party_menu.s
index bd5fa80fc..6e134d444 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -16302,7 +16302,7 @@ _081B8BA8:
movs r0, 0x1
strb r0, [r1]
ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBankInMenu
+ ldr r0, =gBattlerInMenuId
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -16334,7 +16334,7 @@ _081B8BFC:
b _081B8C42
.pool
_081B8C20:
- ldr r0, =gBankInMenu
+ ldr r0, =gBattlerInMenuId
ldrb r0, [r0]
ldr r1, =gBattlerPartyIndexes
lsls r0, 1
diff --git a/common_syms/battle_main.txt b/common_syms/battle_main.txt
new file mode 100644
index 000000000..35a925946
--- /dev/null
+++ b/common_syms/battle_main.txt
@@ -0,0 +1,9 @@
+gPreBattleCallback1
+gBattleMainFunc
+gBattleResults
+gLeveledUpInBattle
+gBattlerControllerFuncs
+gHealthboxSpriteIds
+gMultiUsePlayerCursor
+gNumberOfMovesToChoose
+gUnknown_03005D7C
diff --git a/constants/battle_constants.inc b/constants/battle_constants.inc
deleted file mode 100644
index 0a5dd1094..000000000
--- a/constants/battle_constants.inc
+++ /dev/null
@@ -1,171 +0,0 @@
-@ battle types
- .set BATTLE_TYPE_DOUBLE , 0x0001
- .set BATTLE_TYPE_LINK, 0x0002
- .set BATTLE_TYPE_WILD, 0x0004
- .set BATTLE_TYPE_TRAINER, 0x0008
- .set BATTLE_TYPE_FIRST_BATTLE, 0x0010
- .set BATTLE_TYPE_20, 0x0020
- .set BATTLE_TYPE_MULTI, 0x0040
- .set BATTLE_TYPE_SAFARI, 0x0080
- .set BATTLE_TYPE_BATTLE_TOWER, 0x0100
- .set BATTLE_TYPE_WALLY_TUTORIAL, 0x0200
- .set BATTLE_TYPE_ROAMER, 0x0400
- .set BATTLE_TYPE_EREADER_TRAINER, 0x0800
- .set BATTLE_TYPE_KYOGRE_GROUDON, 0x1000
- .set BATTLE_TYPE_LEGENDARY, 0x2000
- .set BATTLE_TYPE_REGI, 0x4000
- .set BATTLE_TYPE_TWO_OPPONENTS, 0x8000
- .set BATTLE_TYPE_DOME, 0x10000
- .set BATTLE_TYPE_PALACE, 0x20000
- .set BATTLE_TYPE_ARENA, 0x40000
- .set BATTLE_TYPE_FACTORY, 0x80000
- .set BATTLE_TYPE_PIKE, 0x100000
- .set BATTLE_TYPE_PYRAMID, 0x200000
- .set BATTLE_TYPE_INGAME_PARTNER, 0x400000
- .set BATTLE_TYPE_x800000, 0x800000
- .set BATTLE_TYPE_RECORDED, 0x1000000
- .set BATTLE_TYPE_x2000000, 0x2000000
- .set BATTLE_TYPE_x4000000, 0x4000000
- .set BATTLE_TYPE_SECRET_BASE, 0x8000000
- .set BATTLE_TYPE_GROUDON, 0x10000000
- .set BATTLE_TYPE_KYOGRE, 0x20000000
- .set BATTLE_TYPE_RAYQUAZA, 0x40000000
- .set BATTLE_TYPE_x80000000, 0x80000000
-
-@ battle outcomes
- .set WON, 0x1
- .set LOST, 0x2
- .set DREW, 0x3
- .set RAN, 0x4
- .set PLAYER_TELEPORTED, 0x5
- .set MON_FLED, 0x6
- .set CAUGHT, 0x7
- .set OUT_OF_BALLS, 0x8
- .set FORFEITED, 0x9
- .set OPPONENT_TELEPORTED, 0xA
-
-@ identities
- .set B_POSITION_PLAYER_LEFT, 0
- .set B_POSITION_OPPONENT_LEFT, 1
- .set B_POSITION_PLAYER_RIGHT, 2
- .set B_POSITION_OPPONENT_RIGHT, 3
-
-@ status 1
- .set STATUS1_SLEEP, 0x7
- .set STATUS1_POISON, 0x8
- .set STATUS1_BURN, 0x10
- .set STATUS1_FREEZE, 0x20
- .set STATUS1_PARALYSIS, 0x40
- .set STATUS1_TOXIC_POISON, 0x80
- .set STATUS1_TOXIC_COUNTER, 0xF00
-
- .set STATUS1_ANY, STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON
-
-@ status 2
- .set STATUS2_CONFUSION, 0x00000007
- .set STATUS2_FLINCHED, 0x00000008
- .set STATUS2_UPROAR, 0x00000070
- .set STATUS2_BIDE, 0x00000300
- .set STATUS2_LOCK_CONFUSE, 0x00000C00
- .set STATUS2_MULTIPLETURNS, 0x00001000
- .set STATUS2_WRAPPED, 0x0000E000
- .set STATUS2_INFATUATION, 0x000F0000
- .set STATUS2_FOCUS_ENERGY, 0x00100000
- .set STATUS2_TRANSFORMED, 0x00200000
- .set STATUS2_RECHARGE, 0x00400000
- .set STATUS2_RAGE, 0x00800000
- .set STATUS2_SUBSTITUTE, 0x01000000
- .set STATUS2_DESTINY_BOND, 0x02000000
- .set STATUS2_ESCAPE_PREVENTION, 0x04000000
- .set STATUS2_NIGHTMARE, 0x08000000
- .set STATUS2_CURSED, 0x10000000
- .set STATUS2_FORESIGHT, 0x20000000
- .set STATUS2_DEFENSE_CURL, 0x40000000
- .set STATUS2_TORMENT, 0x80000000
-
-@ status 3
- .set STATUS3_LEECHSEED_BANK, 0x3
- .set STATUS3_LEECHSEED, 0x4
- .set STATUS3_ALWAYS_HITS, 0x18
- .set STATUS3_PERISH_SONG, 0x20
- .set STATUS3_ON_AIR, 0x40
- .set STATUS3_UNDERGROUND, 0x80
- .set STATUS3_MINIMIZED, 0x100
- .set STATUS3_ROOTED, 0x400
- .set STATUS3_CHARGED_UP, 0x200
- .set STATUS3_YAWN, 0x1800
- .set STATUS3_IMPRISONED_OTHERS, 0x2000
- .set STATUS3_GRUDGE, 0x4000
- .set STATUS3_CANT_SCORE_A_CRIT, 0x8000
- .set STATUS3_MUDSPORT, 0x10000
- .set STATUS3_WATERSPORT, 0x20000
- .set STATUS3_UNDERWATER, 0x40000
- .set STATUS3_INTIMIDATE_POKES, 0x80000
- .set STATUS3_TRACE, 0x100000
-
-@ side status
- .set SIDE_STATUS_REFLECT, 0x1
- .set SIDE_STATUS_LIGHTSCREEN, 0x2
- .set SIDE_STATUS_X4, 0x4
- .set SIDE_STATUS_SPIKES, 0x10
- .set SIDE_STATUS_SAFEGUARD, 0x20
- .set SIDE_STATUS_FUTUREATTACK, 0x40
- .set SIDE_STATUS_MIST, 0x100
- .set SIDE_STATUS_SPIKES_DAMAGED, 0x200
-
-@ stats
- .set HP, 0x0
- .set ATK, 0x1
- .set DEF, 0x2
- .set SPEED, 0x3
- .set SPATK, 0x4
- .set SPDEF, 0x5
- .set ACC, 0x6
- .set EVASION, 0x7
-
-@ weather flags
- .set WEATHER_RAIN_TEMPORARY, 0x01
- .set WEATHER_RAIN_DOWNPOUR, 0x02
- .set WEATHER_RAIN_PERMANENT, 0x04
- .set WEATHER_SANDSTORM_TEMPORARY, 0x08
- .set WEATHER_SANDSTORM_PERMANENT, 0x10
- .set WEATHER_SUN_TEMPORARY, 0x20
- .set WEATHER_SUN_PERMANENT, 0x40
- .set WEATHER_HAIL, 0x80
-
-@ hitmarker
- .set HITMARKER_x10, 0x00000010
- .set HITMARKER_x20, 0x00000020
- .set HITMARKER_DESTINYBOND, 0x00000040
- .set HITMARKER_NO_ANIMATIONS, 0x00000080
- .set HITMARKER_IGNORE_SUBSTITUTE, 0x00000100
- .set HITMARKER_NO_ATTACKSTRING, 0x00000200
- .set HITMARKER_ATTACKSTRING_PRINTED, 0x00000400
- .set HITMARKER_NO_PPDEDUCT, 0x00000800
- .set HITMARKER_PURSUIT_TRAP, 0x00001000
- .set HITMARKER_IGNORE_SAFEGUARD, 0x00002000
- .set HITMARKER_SYNCHRONISE_EFFECT, 0x00004000
- .set HITMARKER_RUN, 0x00008000
- .set HITMARKER_IGNORE_ON_AIR, 0x00010000
- .set HITMARKER_IGNORE_UNDERGROUND, 0x00020000
- .set HITMARKER_IGNORE_UNDERWATER, 0x00040000
- .set HITMARKER_UNABLE_TO_USE_MOVE, 0x00080000
- .set HITMARKER_x100000, 0x00100000
- .set HITMARKER_x200000, 0x00200000
- .set HITMARKER_x400000, 0x00400000
- .set HITMARKER_x800000, 0x00800000
- .set HITMARKER_GRUDGE, 0x01000000
- .set HITMARKER_OBEYS, 0x02000000
- .set HITMARKER_x4000000, 0x04000000
- .set HITMARKER_x8000000, 0x08000000
-
-@ move flags
- .set MOVE_RESULT_MISSED, 0x1
- .set MOVE_RESULT_SUPER_EFFECTIVE, 0x2
- .set MOVE_RESULT_NOT_VERY_EFFECTIVE, 0x4
- .set MOVE_RESULT_DOESNT_AFFECT_FOE, 0x8
- .set MOVE_RESULT_ONE_HIT_KO, 0x10
- .set MOVE_RESULT_FAILED, 0x20
- .set MOVE_RESULT_FOE_ENDURED, 0x40
- .set MOVE_RESULT_FOE_HUNG_ON, 0x80
- .set MOVE_RESULT_NO_EFFECT, (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
diff --git a/constants/battle_script_constants.inc b/constants/battle_script_constants.inc
deleted file mode 100644
index fe0e7dddc..000000000
--- a/constants/battle_script_constants.inc
+++ /dev/null
@@ -1,169 +0,0 @@
-@ animation ids
- .set ANIM_CASTFORM_CHANGE, 0x0
- .set ANIM_STATS_CHANGE, 0x1
- .set ANIM_SUBSTITUTE_FADE, 0x2
- .set ANIM_SUBSTITUTE_APPEAR, 0x3
- .set ANIM_x4, 0x4
- .set ANIM_ITEM_KNOCKOFF, 0x5
- .set ANIM_TURN_TRAP, 0x6
- .set ANIM_ITEM_EFFECT, 0x7
- .set ANIM_SMOKEBALL_ESCAPE, 0x8
- .set ANIM_HANGED_ON, 0x9
- .set ANIM_RAIN_CONTINUES, 0xA
- .set ANIM_SUN_CONTINUES, 0xB
- .set ANIM_SANDSTORM_CONTINUES, 0xC
- .set ANIM_HAIL_CONTINUES, 0xD
- .set ANIM_LEECH_SEED_DRAIN, 0xE
- .set ANIM_MON_HIT, 0xF
- .set ANIM_ITEM_STEAL, 0x10
- .set ANIM_SNATCH_MOVE, 0x11
- .set ANIM_FUTURE_SIGHT_HIT, 0x12
- .set ANIM_DOOM_DESIRE_HIT, 0x13
- .set ANIM_x14, 0x14
- .set ANIM_INGRAIN_HEAL, 0x15
- .set ANIM_WISH_HEAL, 0x16
-
-@ atk 80
- .set ATK80_DMG_CHANGE_SIGN, 0x0
- .set ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP, 0x1
- .set ATK80_DMG_DOUBLED, 0x2
-
-@ compare operands
- .set EQUAL, 0x0
- .set NOT_EQUAL, 0x1
- .set GREATER_THAN, 0x2
- .set LESS_THAN, 0x3
- .set COMMON_BITS, 0x4
- .set NO_COMMON_BITS, 0x5
-
-@ move effects
- .set EFFECT_SLEEP, 0x1
- .set EFFECT_POISON, 0x2
- .set EFFECT_BURN, 0x3
- .set EFFECT_FREEZE, 0x4
- .set EFFECT_PARALYSIS, 0x5
- .set EFFECT_TOXIC, 0x6
- .set EFFECT_CONFUSION, 0x7
- .set EFFECT_FLINCH, 0x8
- .set EFFECT_TRI_ATTACK, 0x9
- .set EFFECT_UPROAR, 0xA
- .set EFFECT_PAYDAY, 0xB
- .set EFFECT_CHARGING, 0xC
- .set EFFECT_WRAP, 0xD
- .set EFFECT_RECOIL_25, 0xE
- .set EFFECT_ATK_PLUS_1, 0xF
- .set EFFECT_DEF_PLUS_1, 0x10
- .set EFFECT_SPD_PLUS_1, 0x11
- .set EFFECT_SP_ATK_PLUS_1, 0x12
- .set EFFECT_SP_DEF_PLUS_1, 0x13
- .set EFFECT_ACC_PLUS_1, 0x14
- .set EFFECT_EVS_PLUS_1, 0x15
- .set EFFECT_ATK_MINUS_1, 0x16
- .set EFFECT_DEF_MINUS_1, 0x17
- .set EFFECT_SPD_MINUS_1, 0x18
- .set EFFECT_SP_ATK_MINUS_1, 0x19
- .set EFFECT_SP_DEF_MINUS_1, 0x1A
- .set EFFECT_ACC_MINUS_1, 0x1B
- .set EFFECT_EVS_MINUS_1, 0x1C
- .set EFFECT_RECHARGE, 0x1D
- .set EFFECT_RAGE, 0x1E
- .set EFFECT_STEAL_ITEM, 0x1F
- .set EFFECT_PREVENT_ESCAPE, 0x20
- .set EFFECT_NIGHTMARE, 0x21
- .set EFFECT_ALL_STATS_UP, 0x22
- .set EFFECT_RAPIDSPIN, 0x23
- .set EFFECT_REMOVE_PARALYSIS, 0x24
- .set EFFECT_ATK_DEF_DOWN, 0x25
- .set EFFECT_RECOIL_33_PARALYSIS, 0x26
- .set EFFECT_ATK_PLUS_2, 0x27
- .set EFFECT_DEF_PLUS_2, 0x28
- .set EFFECT_SPD_PLUS_2, 0x29
- .set EFFECT_SP_ATK_PLUS_2, 0x2A
- .set EFFECT_SP_DEF_PLUS_2, 0x2B
- .set EFFECT_ACC_PLUS_2, 0x2C
- .set EFFECT_EVS_PLUS_2, 0x2D
- .set EFFECT_ATK_MINUS_2, 0x2E
- .set EFFECT_DEF_MINUS_2, 0x2F
- .set EFFECT_SPD_MINUS_2, 0x30
- .set EFFECT_SP_ATK_MINUS_2, 0x31
- .set EFFECT_SP_DEF_MINUS_2, 0x32
- .set EFFECT_ACC_MINUS_2, 0x33
- .set EFFECT_EVS_MINUS_2, 0x34
- .set EFFECT_THRASH, 0x35
- .set EFFECT_KNOCK_OFF, 0x36
- .set EFFECT_NOTHING_37, 0x37
- .set EFFECT_NOTHING_38, 0x38
- .set EFFECT_NOTHING_39, 0x39
- .set EFFECT_NOTHING_3A, 0x3A
- .set EFFECT_SP_ATK_TWO_DOWN, 0x3B
- .set EFFECT_NOTHING_3C, 0x3C
- .set EFFECT_NOTHING_3D, 0x3D
- .set EFFECT_NOTHING_3E, 0x3E
- .set EFFECT_NOTHING_3F, 0x3F
-
- .set AFFECTS_USER, 0x40
- .set CERTAIN, 0x80
-
-@ accuracy calc
- .set NO_ACC_CALC, 0xFFFE
- .set NO_ACC_CALC_CHECK_LOCK_ON, 0xFFFF
- .set ACC_CURR_MOVE, 0x0
-
-@ bank values
- .set TARGET, 0x0
- .set ATTACKER, 0x1
- .set EFFECT_BANK, 0x2
- .set GBANK_1, 0x3
- .set ATTACKER_WITH_PARTNER, 0x4 @ only for cmd98
- .set BANK0, 0x7
- .set SCRIPTING_BANK, 0xA
- .set OPPONENT1, 0xC
-
-@ various
- .set VARIOUS_CANCEL_MULTI_TURN_MOVES, 0
- .set VARIOUS_SET_MAGIC_COAT_TARGET, 1
- .set VARIOUS_IS_RUNNING_IMPOSSIBLE, 2
- .set VARIOUS_GET_MOVE_TARGET, 3
- .set VARIOUS_RESET_INTIMIDATE_TRACE_BITS, 5
- .set VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP, 6
- .set VARIOUS_EMIT_YESNOBOX, 13
- .set VARIOUS_WAIT_CRY, 18
- .set VARIOUS_RETURN_OPPONENT_MON1, 19
- .set VARIOUS_RETURN_OPPONENT_MON2, 20
- .set VARIOUS_SET_TELEPORT_OUTCOME, 25
- .set VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC, 26
-
-@ jumpifcant switch flag argument
- .set ATK4F_DONT_CHECK_STATUSES, 0x80
-
-@ battle scripting struct
- .equiv sPAINSPLIT_HP, gBattleScripting
- .equiv sBIDE_DMG, gBattleScripting + 4
- .equiv sMULTIHIT_STRING, gBattleScripting + 8
- .equiv sDMG_MULTIPLIER, gBattleScripting + 0xE
- .equiv sTWOTURN_STRINGID, gBattleScripting + 0xF
- .equiv sANIM_ARG1, gBattleScripting + 0x10
- .equiv sANIM_ARG2, gBattleScripting + 0x11
- .equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12
- .equiv sMOVEEND_STATE, gBattleScripting + 0x14
- .equiv sBANK_WITH_ABILITY, gBattleScripting + 0x15
- .equiv sMULTIHIT_EFFECT, gBattleScripting + 0x16
- .equiv sBANK, gBattleScripting + 0x17
- .equiv sANIM_TURN, gBattleScripting + 0x18
- .equiv sANIM_TARGETS_HIT, gBattleScripting + 0x19
- .equiv sSTATCHANGER, gBattleScripting + 0x1A
- .equiv sFIELD_1B, gBattleScripting + 0x1B
- .equiv sGIVEEXP_STATE, gBattleScripting + 0x1C
- .equiv sBATTLE_STYLE, gBattleScripting + 0x1D
- .equiv sLVLBOX_STATE, gBattleScripting + 0x1E
- .equiv sLEARNMOVE_STATE, gBattleScripting + 0x1F
- .equiv sFIELD_20, gBattleScripting + 0x20
- .equiv sRESHOW_MAIN_STATE, gBattleScripting + 0x21
- .equiv sRESHOW_HELPER_STATE, gBattleScripting + 0x22
- .equiv sFIELD_23, gBattleScripting + 0x23
- .equiv sFIELD_24, gBattleScripting + 0x24
- .equiv sMULTIPLAYER_ID, gBattleScripting + 0x25
-
-@ battle communication struct
- .equiv cEFFECT_CHOOSER, gBattleCommunication + 3
- .equiv cMULTISTRING_CHOOSER, gBattleCommunication + 5
diff --git a/constants/battle_text.inc b/constants/battle_text.inc
deleted file mode 100644
index 1d3a5f346..000000000
--- a/constants/battle_text.inc
+++ /dev/null
@@ -1,375 +0,0 @@
- .set STRINGID_INTROMSG, 0
- .set STRINGID_INTROSENDOUT, 1
- .set STRINGID_RETURNMON, 2
- .set STRINGID_SWITCHINMON, 3
- .set STRINGID_USEDMOVE, 4
- .set STRINGID_BATTLEEND, 5
- .set STRINGID_TRAINER1LOSETEXT, 12
- .set STRINGID_PKMNGAINEDEXP, 13
- .set STRINGID_PKMNGREWTOLV, 14
- .set STRINGID_PKMNLEARNEDMOVE, 15
- .set STRINGID_TRYTOLEARNMOVE1, 16
- .set STRINGID_TRYTOLEARNMOVE2, 17
- .set STRINGID_TRYTOLEARNMOVE3, 18
- .set STRINGID_PKMNFORGOTMOVE, 19
- .set STRINGID_STOPLEARNINGMOVE, 20
- .set STRINGID_DIDNOTLEARNMOVE, 21
- .set STRINGID_PKMNLEARNEDMOVE2, 22
- .set STRINGID_ATTACKMISSED, 23
- .set STRINGID_PKMNPROTECTEDITSELF, 24
- .set STRINGID_STATSWONTINCREASE2, 25
- .set STRINGID_AVOIDEDDAMAGE, 26
- .set STRINGID_ITDOESNTAFFECT, 27
- .set STRINGID_ATTACKERFAINTED, 28
- .set STRINGID_TARGETFAINTED, 29
- .set STRINGID_PLAYERGOTMONEY, 30
- .set STRINGID_PLAYERWHITEOUT, 31
- .set STRINGID_PLAYERWHITEOUT2, 32
- .set STRINGID_PREVENTSESCAPE, 33
- .set STRINGID_HITXTIMES, 34
- .set STRINGID_PKMNFELLASLEEP, 35
- .set STRINGID_PKMNMADESLEEP, 36
- .set STRINGID_PKMNALREADYASLEEP, 37
- .set STRINGID_PKMNALREADYASLEEP2, 38
- .set STRINGID_PKMNWASNTAFFECTED, 39
- .set STRINGID_PKMNWASPOISONED, 40
- .set STRINGID_PKMNPOISONEDBY, 41
- .set STRINGID_PKMNHURTBYPOISON, 42
- .set STRINGID_PKMNALREADYPOISONED, 43
- .set STRINGID_PKMNBADLYPOISONED, 44
- .set STRINGID_PKMNENERGYDRAINED, 45
- .set STRINGID_PKMNWASBURNED, 46
- .set STRINGID_PKMNBURNEDBY, 47
- .set STRINGID_PKMNHURTBYBURN, 48
- .set STRINGID_PKMNWASFROZEN, 49
- .set STRINGID_PKMNFROZENBY, 50
- .set STRINGID_PKMNISFROZEN, 51
- .set STRINGID_PKMNWASDEFROSTED, 52
- .set STRINGID_PKMNWASDEFROSTED2, 53
- .set STRINGID_PKMNWASDEFROSTEDBY, 54
- .set STRINGID_PKMNWASPARALYZED, 55
- .set STRINGID_PKMNWASPARALYZEDBY, 56
- .set STRINGID_PKMNISPARALYZED, 57
- .set STRINGID_PKMNISALREADYPARALYZED, 58
- .set STRINGID_PKMNHEALEDPARALYSIS, 59
- .set STRINGID_PKMNDREAMEATEN, 60
- .set STRINGID_STATSWONTINCREASE, 61
- .set STRINGID_STATSWONTDECREASE, 62
- .set STRINGID_TEAMSTOPPEDWORKING, 63
- .set STRINGID_FOESTOPPEDWORKING, 64
- .set STRINGID_PKMNISCONFUSED, 65
- .set STRINGID_PKMNHEALEDCONFUSION, 66
- .set STRINGID_PKMNWASCONFUSED, 67
- .set STRINGID_PKMNALREADYCONFUSED, 68
- .set STRINGID_PKMNFELLINLOVE, 69
- .set STRINGID_PKMNINLOVE, 70
- .set STRINGID_PKMNIMMOBILIZEDBYLOVE, 71
- .set STRINGID_PKMNBLOWNAWAY, 72
- .set STRINGID_PKMNCHANGEDTYPE, 73
- .set STRINGID_PKMNFLINCHED, 74
- .set STRINGID_PKMNREGAINEDHEALTH, 75
- .set STRINGID_PKMNHPFULL, 76
- .set STRINGID_PKMNRAISEDSPDEF, 77
- .set STRINGID_PKMNRAISEDDEF, 78
- .set STRINGID_PKMNCOVEREDBYVEIL, 79
- .set STRINGID_PKMNUSEDSAFEGUARD, 80
- .set STRINGID_PKMNSAFEGUARDEXPIRED, 81
- .set STRINGID_PKMNWENTTOSLEEP, 82
- .set STRINGID_PKMNSLEPTHEALTHY, 83
- .set STRINGID_PKMNWHIPPEDWHIRLWIND, 84
- .set STRINGID_PKMNTOOKSUNLIGHT, 85
- .set STRINGID_PKMNLOWEREDHEAD, 86
- .set STRINGID_PKMNISGLOWING, 87
- .set STRINGID_PKMNFLEWHIGH, 88
- .set STRINGID_PKMNDUGHOLE, 89
- .set STRINGID_PKMNSQUEEZEDBYBIND, 90
- .set STRINGID_PKMNTRAPPEDINVORTEX, 91
- .set STRINGID_PKMNWRAPPEDBY, 92
- .set STRINGID_PKMNCLAMPED, 93
- .set STRINGID_PKMNHURTBY, 94
- .set STRINGID_PKMNFREEDFROM, 95
- .set STRINGID_PKMNCRASHED, 96
- .set STRINGID_PKMNSHROUDEDINMIST, 97
- .set STRINGID_PKMNPROTECTEDBYMIST, 98
- .set STRINGID_PKMNGETTINGPUMPED, 99
- .set STRINGID_PKMNHITWITHRECOIL, 100
- .set STRINGID_PKMNPROTECTEDITSELF2, 101
- .set STRINGID_PKMNBUFFETEDBYSANDSTORM, 102
- .set STRINGID_PKMNPELTEDBYHAIL, 103
- .set STRINGID_PKMNSEEDED, 104
- .set STRINGID_PKMNEVADEDATTACK, 105
- .set STRINGID_PKMNSAPPEDBYLEECHSEED, 106
- .set STRINGID_PKMNFASTASLEEP, 107
- .set STRINGID_PKMNWOKEUP, 108
- .set STRINGID_PKMNUPROARKEPTAWAKE, 109
- .set STRINGID_PKMNWOKEUPINUPROAR, 110
- .set STRINGID_PKMNCAUSEDUPROAR, 111
- .set STRINGID_PKMNMAKINGUPROAR, 112
- .set STRINGID_PKMNCALMEDDOWN, 113
- .set STRINGID_PKMNCANTSLEEPINUPROAR, 114
- .set STRINGID_PKMNSTOCKPILED, 115
- .set STRINGID_PKMNCANTSTOCKPILE, 116
- .set STRINGID_PKMNCANTSLEEPINUPROAR2, 117
- .set STRINGID_UPROARKEPTPKMNAWAKE, 118
- .set STRINGID_PKMNSTAYEDAWAKEUSING, 119
- .set STRINGID_PKMNSTORINGENERGY, 120
- .set STRINGID_PKMNUNLEASHEDENERGY, 121
- .set STRINGID_PKMNFATIGUECONFUSION, 122
- .set STRINGID_PKMNPICKEDUPITEM, 123
- .set STRINGID_PKMNUNAFFECTED, 124
- .set STRINGID_PKMNTRANSFORMEDINTO, 125
- .set STRINGID_PKMNMADESUBSTITUTE, 126
- .set STRINGID_PKMNHASSUBSTITUTE, 127
- .set STRINGID_SUBSTITUTEDAMAGED, 128
- .set STRINGID_PKMNSUBSTITUTEFADED, 129
- .set STRINGID_PKMNMUSTRECHARGE, 130
- .set STRINGID_PKMNRAGEBUILDING, 131
- .set STRINGID_PKMNMOVEWASDISABLED, 132
- .set STRINGID_PKMNMOVEISDISABLED, 133
- .set STRINGID_PKMNMOVEDISABLEDNOMORE, 134
- .set STRINGID_PKMNGOTENCORE, 135
- .set STRINGID_PKMNENCOREENDED, 136
- .set STRINGID_PKMNTOOKAIM, 137
- .set STRINGID_PKMNSKETCHEDMOVE, 138
- .set STRINGID_PKMNTRYINGTOTAKEFOE, 139
- .set STRINGID_PKMNTOOKFOE, 140
- .set STRINGID_PKMNREDUCEDPP, 141
- .set STRINGID_PKMNSTOLEITEM, 142
- .set STRINGID_TARGETCANTESCAPENOW, 143
- .set STRINGID_PKMNFELLINTONIGHTMARE, 144
- .set STRINGID_PKMNLOCKEDINNIGHTMARE, 145
- .set STRINGID_PKMNLAIDCURSE, 146
- .set STRINGID_PKMNAFFLICTEDBYCURSE, 147
- .set STRINGID_SPIKESSCATTERED, 148
- .set STRINGID_PKMNHURTBYSPIKES, 149
- .set STRINGID_PKMNIDENTIFIED, 150
- .set STRINGID_PKMNPERISHCOUNTFELL, 151
- .set STRINGID_PKMNBRACEDITSELF, 152
- .set STRINGID_PKMNENDUREDHIT, 153
- .set STRINGID_MAGNITUDESTRENGTH, 154
- .set STRINGID_PKMNCUTHPMAXEDATTACK, 155
- .set STRINGID_PKMNCOPIEDSTATCHANGES, 156
- .set STRINGID_PKMNGOTFREE, 157
- .set STRINGID_PKMNSHEDLEECHSEED, 158
- .set STRINGID_PKMNBLEWAWAYSPIKES, 159
- .set STRINGID_PKMNFLEDFROMBATTLE, 160
- .set STRINGID_PKMNFORESAWATTACK, 161
- .set STRINGID_PKMNTOOKATTACK, 162
- .set STRINGID_PKMNATTACK, 163
- .set STRINGID_PKMNCENTERATTENTION, 164
- .set STRINGID_PKMNCHARGINGPOWER, 165
- .set STRINGID_NATUREPOWERTURNEDINTO, 166
- .set STRINGID_PKMNSTATUSNORMAL, 167
- .set STRINGID_PKMNHASNOMOVESLEFT, 168
- .set STRINGID_PKMNSUBJECTEDTOTORMENT, 169
- .set STRINGID_PKMNCANTUSEMOVETORMENT, 170
- .set STRINGID_PKMNTIGHTENINGFOCUS, 171
- .set STRINGID_PKMNFELLFORTAUNT, 172
- .set STRINGID_PKMNCANTUSEMOVETAUNT, 173
- .set STRINGID_PKMNREADYTOHELP, 174
- .set STRINGID_PKMNSWITCHEDITEMS, 175
- .set STRINGID_PKMNCOPIEDFOE, 176
- .set STRINGID_PKMNMADEWISH, 177
- .set STRINGID_PKMNWISHCAMETRUE, 178
- .set STRINGID_PKMNPLANTEDROOTS, 179
- .set STRINGID_PKMNABSORBEDNUTRIENTS, 180
- .set STRINGID_PKMNANCHOREDITSELF, 181
- .set STRINGID_PKMNWASMADEDROWSY, 182
- .set STRINGID_PKMNKNOCKEDOFF, 183
- .set STRINGID_PKMNSWAPPEDABILITIES, 184
- .set STRINGID_PKMNSEALEDOPPONENTMOVE, 185
- .set STRINGID_PKMNCANTUSEMOVESEALED, 186
- .set STRINGID_PKMNWANTSGRUDGE, 187
- .set STRINGID_PKMNLOSTPPGRUDGE, 188
- .set STRINGID_PKMNSHROUDEDITSELF, 189
- .set STRINGID_PKMNMOVEBOUNCED, 190
- .set STRINGID_PKMNWAITSFORTARGET, 191
- .set STRINGID_PKMNSNATCHEDMOVE, 192
- .set STRINGID_PKMNMADEITRAIN, 193
- .set STRINGID_PKMNRAISEDSPEED, 194
- .set STRINGID_PKMNPROTECTEDBY, 195
- .set STRINGID_PKMNPREVENTSUSAGE, 196
- .set STRINGID_PKMNRESTOREDHPUSING, 197
- .set STRINGID_PKMNCHANGEDTYPEWITH, 198
- .set STRINGID_PKMNPREVENTSPARALYSISWITH, 199
- .set STRINGID_PKMNPREVENTSROMANCEWITH, 200
- .set STRINGID_PKMNPREVENTSPOISONINGWITH, 201
- .set STRINGID_PKMNPREVENTSCONFUSIONWITH, 202
- .set STRINGID_PKMNRAISEDFIREPOWERWITH, 203
- .set STRINGID_PKMNANCHORSITSELFWITH, 204
- .set STRINGID_PKMNCUTSATTACKWITH, 205
- .set STRINGID_PKMNPREVENTSSTATLOSSWITH, 206
- .set STRINGID_PKMNHURTSWITH, 207
- .set STRINGID_PKMNTRACED, 208
- .set STRINGID_STATSHARPLY, 209
- .set STRINGID_STATROSE, 210
- .set STRINGID_STATHARSHLY, 211
- .set STRINGID_STATFELL, 212
- .set STRINGID_PKMNSSTATCHANGED, 213
- .set STRINGID_PKMNSSTATCHANGED2, 214
- .set STRINGID_PKMNSSTATCHANGED3, 215
- .set STRINGID_PKMNSSTATCHANGED4, 216
- .set STRINGID_CRITICALHIT, 217
- .set STRINGID_ONEHITKO, 218
- .set STRINGID_123POOF, 219
- .set STRINGID_ANDELLIPSIS, 220
- .set STRINGID_NOTVERYEFFECTIVE, 221
- .set STRINGID_SUPEREFFECTIVE, 222
- .set STRINGID_GOTAWAYSAFELY, 223
- .set STRINGID_WILDPKMNFLED, 224
- .set STRINGID_NORUNNINGFROMTRAINERS, 225
- .set STRINGID_CANTESCAPE, 226
- .set STRINGID_DONTLEAVEBIRCH, 227
- .set STRINGID_BUTNOTHINGHAPPENED, 228
- .set STRINGID_BUTITFAILED, 229
- .set STRINGID_ITHURTCONFUSION, 230
- .set STRINGID_MIRRORMOVEFAILED, 231
- .set STRINGID_STARTEDTORAIN, 232
- .set STRINGID_DOWNPOURSTARTED, 233
- .set STRINGID_RAINCONTINUES, 234
- .set STRINGID_DOWNPOURCONTINUES, 235
- .set STRINGID_RAINSTOPPED, 236
- .set STRINGID_SANDSTORMBREWED, 237
- .set STRINGID_SANDSTORMRAGES, 238
- .set STRINGID_SANDSTORMSUBSIDED, 239
- .set STRINGID_SUNLIGHTGOTBRIGHT, 240
- .set STRINGID_SUNLIGHTSTRONG, 241
- .set STRINGID_SUNLIGHTFADED, 242
- .set STRINGID_STARTEDHAIL, 243
- .set STRINGID_HAILCONTINUES, 244
- .set STRINGID_HAILSTOPPED, 245
- .set STRINGID_FAILEDTOSPITUP, 246
- .set STRINGID_FAILEDTOSWALLOW, 247
- .set STRINGID_WINDBECAMEHEATWAVE, 248
- .set STRINGID_STATCHANGESGONE, 249
- .set STRINGID_COINSSCATTERED, 250
- .set STRINGID_TOOWEAKFORSUBSTITUTE, 251
- .set STRINGID_SHAREDPAIN, 252
- .set STRINGID_BELLCHIMED, 253
- .set STRINGID_FAINTINTHREE, 254
- .set STRINGID_NOPPLEFT, 255
- .set STRINGID_BUTNOPPLEFT, 256
- .set STRINGID_PLAYERUSEDITEM, 257
- .set STRINGID_WALLYUSEDITEM, 258
- .set STRINGID_TRAINERBLOCKEDBALL, 259
- .set STRINGID_DONTBEATHIEF, 260
- .set STRINGID_ITDODGEDBALL, 261
- .set STRINGID_YOUMISSEDPKMN, 262
- .set STRINGID_PKMNBROKEFREE, 263
- .set STRINGID_ITAPPEAREDCAUGHT, 264
- .set STRINGID_AARGHALMOSTHADIT, 265
- .set STRINGID_SHOOTSOCLOSE, 266
- .set STRINGID_GOTCHAPKMNCAUGHT, 267
- .set STRINGID_GOTCHAPKMNCAUGHT2, 268
- .set STRINGID_GIVENICKNAMECAPTURED, 269
- .set STRINGID_PKMNSENTTOPC, 270
- .set STRINGID_PKMNDATAADDEDTODEX, 271
- .set STRINGID_ITISRAINING, 272
- .set STRINGID_SANDSTORMISRAGING, 273
- .set STRINGID_CANTESCAPE2, 274
- .set STRINGID_PKMNIGNORESASLEEP, 275
- .set STRINGID_PKMNIGNOREDORDERS, 276
- .set STRINGID_PKMNBEGANTONAP, 277
- .set STRINGID_PKMNLOAFING, 278
- .set STRINGID_PKMNWONTOBEY, 279
- .set STRINGID_PKMNTURNEDAWAY, 280
- .set STRINGID_PKMNPRETENDNOTNOTICE, 281
- .set STRINGID_ENEMYABOUTTOSWITCHPKMN, 282
- .set STRINGID_CREPTCLOSER, 283
- .set STRINGID_CANTGETCLOSER, 284
- .set STRINGID_PKMNWATCHINGCAREFULLY, 285
- .set STRINGID_PKMNCURIOUSABOUTX, 286
- .set STRINGID_PKMNENTHRALLEDBYX, 287
- .set STRINGID_PKMNIGNOREDX, 288
- .set STRINGID_THREWPOKEBLOCKATPKMN, 289
- .set STRINGID_OUTOFSAFARIBALLS, 290
- .set STRINGID_PKMNSITEMCUREDPARALYSIS, 291
- .set STRINGID_PKMNSITEMCUREDPOISON, 292
- .set STRINGID_PKMNSITEMHEALEDBURN, 293
- .set STRINGID_PKMNSITEMDEFROSTEDIT, 294
- .set STRINGID_PKMNSITEMWOKEIT, 295
- .set STRINGID_PKMNSITEMSNAPPEDOUT, 296
- .set STRINGID_PKMNSITEMCUREDPROBLEM, 297
- .set STRINGID_PKMNSITEMRESTOREDHEALTH, 298
- .set STRINGID_PKMNSITEMRESTOREDPP, 299
- .set STRINGID_PKMNSITEMRESTOREDSTATUS, 300
- .set STRINGID_PKMNSITEMRESTOREDHPALITTLE, 301
- .set STRINGID_ITEMALLOWSONLYYMOVE, 302
- .set STRINGID_PKMNHUNGONWITHX, 303
- .set STRINGID_EMPTYSTRING3, 304
- .set STRINGID_PKMNSXPREVENTSBURNS, 305
- .set STRINGID_PKMNSXBLOCKSY, 306
- .set STRINGID_PKMNSXRESTOREDHPALITTLE2, 307
- .set STRINGID_PKMNSXWHIPPEDUPSANDSTORM, 308
- .set STRINGID_PKMNSXPREVENTSYLOSS, 309
- .set STRINGID_PKMNSXINFATUATEDY, 310
- .set STRINGID_PKMNSXMADEYINEFFECTIVE, 311
- .set STRINGID_PKMNSXCUREDYPROBLEM, 312
- .set STRINGID_ITSUCKEDLIQUIDOOZE, 313
- .set STRINGID_PKMNTRANSFORMED, 314
- .set STRINGID_ELECTRICITYWEAKENED, 315
- .set STRINGID_FIREWEAKENED, 316
- .set STRINGID_PKMNHIDUNDERWATER, 317
- .set STRINGID_PKMNSPRANGUP, 318
- .set STRINGID_HMMOVESCANTBEFORGOTTEN, 319
- .set STRINGID_XFOUNDONEY, 320
- .set STRINGID_PLAYERDEFEATEDTRAINER1, 321
- .set STRINGID_SOOTHINGAROMA, 322
- .set STRINGID_ITEMSCANTBEUSEDNOW, 323
- .set STRINGID_FORXCOMMAYZ, 324
- .set STRINGID_USINGXTHEYOFZN, 325
- .set STRINGID_PKMNUSEDXTOGETPUMPED, 326
- .set STRINGID_PKMNSXMADEYUSELESS, 327
- .set STRINGID_PKMNTRAPPEDBYSANDTOMB, 328
- .set STRINGID_EMPTYSTRING4, 329
- .set STRINGID_ABOOSTED, 330
- .set STRINGID_PKMNSXINTENSIFIEDSUN, 331
- .set STRINGID_PKMNMAKESGROUNDMISS, 332
- .set STRINGID_YOUTHROWABALLNOWRIGHT, 333
- .set STRINGID_PKMNSXTOOKATTACK, 334
- .set STRINGID_PKMNCHOSEXASDESTINY, 335
- .set STRINGID_PKMNLOSTFOCUS, 336
- .set STRINGID_USENEXTPKMN, 337
- .set STRINGID_PKMNFLEDUSINGITS, 338
- .set STRINGID_PKMNFLEDUSING, 339
- .set STRINGID_PKMNWASDRAGGEDOUT, 340
- .set STRINGID_PREVENTEDFROMWORKING, 341
- .set STRINGID_PKMNSITEMNORMALIZEDSTATUS, 342
- .set STRINGID_TRAINER1USEDITEM, 343
- .set STRINGID_BOXISFULL, 344
- .set STRINGID_PKMNAVOIDEDATTACK, 345
- .set STRINGID_PKMNSXMADEITINEFFECTIVE, 346
- .set STRINGID_PKMNSXPREVENTSFLINCHING, 347
- .set STRINGID_PKMNALREADYHASBURN, 348
- .set STRINGID_STATSWONTDECREASE2, 349
- .set STRINGID_PKMNSXBLOCKSY2, 350
- .set STRINGID_PKMNSXWOREOFF, 351
- .set STRINGID_PKMNRAISEDDEFALITTLE, 352
- .set STRINGID_PKMNRAISEDSPDEFALITTLE, 353
- .set STRINGID_THEWALLSHATTERED, 354
- .set STRINGID_PKMNSXPREVENTSYSZ, 355
- .set STRINGID_PKMNSXCUREDITSYPROBLEM, 356
- .set STRINGID_ATTACKERCANTESCAPE, 357
- .set STRINGID_PKMNOBTAINEDX, 358
- .set STRINGID_PKMNOBTAINEDX2, 359
- .set STRINGID_PKMNOBTAINEDXYOBTAINEDZ, 360
- .set STRINGID_BUTNOEFFECT, 361
- .set STRINGID_PKMNSXHADNOEFFECTONY, 362
- .set STRINGID_TWOENEMIESDEFEATED, 363
- .set STRINGID_TRAINER2LOSETEXT, 364
- .set STRINGID_PKMNINCAPABLEOFPOWER, 365
- .set STRINGID_GLINTAPPEARSINEYE, 366
- .set STRINGID_PKMNGETTINGINTOPOSITION, 367
- .set STRINGID_PKMNBEGANGROWLINGDEEPLY, 368
- .set STRINGID_PKMNEAGERFORMORE, 369
- .set STRINGID_DEFEATEDOPPONENTBYREFEREE, 370
- .set STRINGID_LOSTTOOPPONENTBYREFEREE, 371
- .set STRINGID_TIEDOPPONENTBYREFEREE, 372
- .set STRINGID_QUESTIONFORFEITMATCH, 373
- .set STRINGID_FORFEITEDMATCH, 374
- .set STRINGID_PKMNTRANSFERREDSOMEONESPC, 375
- .set STRINGID_PKMNTRANSFERREDLANETTESPC, 376
- .set STRINGID_PKMNBOXSOMEONESPCFULL, 377
- .set STRINGID_PKMNBOXLANETTESPCFULL, 378
- .set STRINGID_TRAINER1WINTEXT, 379
- .set STRINGID_TRAINER2WINTEXT, 380
diff --git a/constants/constants.inc b/constants/constants.inc
index bed7944ca..10d582eb1 100644
--- a/constants/constants.inc
+++ b/constants/constants.inc
@@ -1,6 +1,5 @@
.include "constants/gba_constants.inc"
.include "constants/misc_constants.inc"
- .include "constants/type_constants.inc"
.include "constants/contest_constants.inc"
.include "constants/pokemon_data_constants.inc"
.include "constants/item_data_constants.inc"
diff --git a/constants/pokemon_data_constants.inc b/constants/pokemon_data_constants.inc
index cf5d4df41..646bd6d4c 100644
--- a/constants/pokemon_data_constants.inc
+++ b/constants/pokemon_data_constants.inc
@@ -1,29 +1,3 @@
- .set NATURE_HARDY, 0
- .set NATURE_LONELY, 1
- .set NATURE_BRAVE, 2
- .set NATURE_ADAMANT, 3
- .set NATURE_NAUGHTY, 4
- .set NATURE_BOLD, 5
- .set NATURE_DOCILE, 6
- .set NATURE_RELAXED, 7
- .set NATURE_IMPISH, 8
- .set NATURE_LAX, 9
- .set NATURE_TIMID, 10
- .set NATURE_HASTY, 11
- .set NATURE_SERIOUS, 12
- .set NATURE_JOLLY, 13
- .set NATURE_NAIVE, 14
- .set NATURE_MODEST, 15
- .set NATURE_MILD, 16
- .set NATURE_QUIET, 17
- .set NATURE_BASHFUL, 18
- .set NATURE_RASH, 19
- .set NATURE_CALM, 20
- .set NATURE_GENTLE, 21
- .set NATURE_SASSY, 22
- .set NATURE_CAREFUL, 23
- .set NATURE_QUIRKY, 24
-
.set GROWTH_MEDIUM_FAST, 0x00
.set GROWTH_ERRATIC, 0x01
.set GROWTH_FLUCTUATING, 0x02
@@ -31,23 +5,6 @@
.set GROWTH_FAST, 0x04
.set GROWTH_SLOW, 0x05
- .set EGG_GROUP_NONE, 0x00
- .set EGG_GROUP_MONSTER, 0x01
- .set EGG_GROUP_WATER_1, 0x02
- .set EGG_GROUP_BUG, 0x03
- .set EGG_GROUP_FLYING, 0x04
- .set EGG_GROUP_FIELD, 0x05
- .set EGG_GROUP_FAIRY, 0x06
- .set EGG_GROUP_GRASS, 0x07
- .set EGG_GROUP_HUMAN_LIKE, 0x08
- .set EGG_GROUP_WATER_3, 0x09
- .set EGG_GROUP_MINERAL, 0x0a
- .set EGG_GROUP_AMORPHOUS, 0x0b
- .set EGG_GROUP_WATER_2, 0x0c
- .set EGG_GROUP_DITTO, 0x0d
- .set EGG_GROUP_DRAGON, 0x0e
- .set EGG_GROUP_UNDISCOVERED, 0x0f
-
.set BODY_COLOR_RED, 0x00
.set BODY_COLOR_BLUE, 0x01
.set BODY_COLOR_YELLOW, 0x02
diff --git a/constants/type_constants.inc b/constants/type_constants.inc
deleted file mode 100644
index 86e3c9df3..000000000
--- a/constants/type_constants.inc
+++ /dev/null
@@ -1,18 +0,0 @@
- .set TYPE_NORMAL, 0x00
- .set TYPE_FIGHTING, 0x01
- .set TYPE_FLYING, 0x02
- .set TYPE_POISON, 0x03
- .set TYPE_GROUND, 0x04
- .set TYPE_ROCK, 0x05
- .set TYPE_BUG, 0x06
- .set TYPE_GHOST, 0x07
- .set TYPE_STEEL, 0x08
- .set TYPE_UNKNOWN, 0x09
- .set TYPE_FIRE, 0x0a
- .set TYPE_WATER, 0x0b
- .set TYPE_GRASS, 0x0c
- .set TYPE_ELECTRIC, 0x0d
- .set TYPE_PSYCHIC, 0x0e
- .set TYPE_ICE, 0x0f
- .set TYPE_DRAGON, 0x10
- .set TYPE_DARK, 0x11
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index afe365231..430f9f403 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -1,11 +1,11 @@
- .include "include/constants/battle_ai.h"
- .include "include/constants/abilities.h"
- .include "include/constants/items.h"
- .include "include/constants/moves.h"
- .include "include/constants/battle_move_effects.h"
- .include "include/constants/hold_effects.h"
- .include "constants/battle_constants.inc"
- .include "constants/type_constants.inc"
+#include "constants/battle.h"
+#include "constants/battle_ai.h"
+#include "constants/abilities.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/pokemon.h"
.include "asm/macros/battle_ai_script.inc"
.section script_data, "aw", %progbits
@@ -249,64 +249,64 @@ BattleAIScript_82DC341:
if_hp_less_than AI_USER, 51, Score_Minus10
BattleAIScript_82DC348:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
end
BattleAIScript_82DC351:
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
end
BattleAIScript_82DC35A:
- if_stat_level_equal AI_USER, SPEED, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus10
end
BattleAIScript_82DC363:
- if_stat_level_equal AI_USER, SPATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
end
BattleAIScript_82DC36C:
- if_stat_level_equal AI_USER, SPDEF, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus10
end
BattleAIScript_82DC375:
- if_stat_level_equal AI_USER, ACC, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_ACC, 12, Score_Minus10
end
BattleAIScript_82DC37E:
- if_stat_level_equal AI_USER, EVASION, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_EVASION, 12, Score_Minus10
end
BattleAIScript_82DC387:
- if_stat_level_equal AI_TARGET, ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_HYPER_CUTTER, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC39C:
- if_stat_level_equal AI_TARGET, DEF, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3A9:
- if_stat_level_equal AI_TARGET, SPEED, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPEED, 0, Score_Minus10
if_ability AI_TARGET, ABILITY_SPEED_BOOST, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3BF:
- if_stat_level_equal AI_TARGET, SPATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3CC:
- if_stat_level_equal AI_TARGET, SPDEF, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPDEF, 0, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3D9:
- if_stat_level_equal AI_TARGET, ACC, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_ACC, 0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_KEEN_EYE, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3EE:
- if_stat_level_equal AI_TARGET, EVASION, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_EVASION, 0, Score_Minus10
BattleAIScript_82DC3F6:
get_ability AI_TARGET
@@ -315,20 +315,20 @@ BattleAIScript_82DC3F6:
end
BattleAIScript_82DC405:
- if_stat_level_less_than AI_USER, ATK, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, DEF, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, SPEED, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, SPATK, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, SPDEF, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, ACC, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, EVASION, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, ATK, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, DEF, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, SPEED, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, SPATK, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, SPDEF, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, ACC, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, EVASION, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_ATK, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_DEF, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_SPEED, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_SPATK, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_ACC, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_EVASION, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_SPEED, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_ACC, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 6, BattleAIScript_82DC47A
goto Score_Minus10
BattleAIScript_82DC47A:
@@ -436,8 +436,8 @@ BattleAIScript_82DC5B0:
end
BattleAIScript_82DC5BB:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
BattleAIScript_82DC5CC:
@@ -484,8 +484,8 @@ BattleAIScript_82DC635:
end
BattleAIScript_82DC640:
- if_stat_level_equal AI_TARGET, ATK, 0, Score_Minus10
- if_stat_level_equal AI_TARGET, SPATK, 0, Score_Minus8
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus8
BattleAIScript_82DC650:
count_usable_party_mons AI_USER
@@ -574,18 +574,18 @@ BattleAIScript_82DC71E:
end
BattleAIScript_82DC729:
- if_stat_level_equal AI_TARGET, ATK, 0, Score_Minus10
- if_stat_level_equal AI_TARGET, DEF, 0, Score_Minus8
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus8
end
BattleAIScript_82DC73A:
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus10
- if_stat_level_equal AI_USER, SPDEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
BattleAIScript_82DC74B:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
BattleAIScript_82DC75C:
@@ -593,13 +593,13 @@ BattleAIScript_82DC75C:
end
BattleAIScript_82DC767:
- if_stat_level_equal AI_USER, SPATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, SPDEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
BattleAIScript_82DC778:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, SPEED, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus8
end
Score_Minus1:
@@ -805,9 +805,9 @@ BattleAIScript_82DCAC7:
end
BattleAIScript_82DCAC8:
- if_stat_level_less_than AI_TARGET, EVASION, 7, BattleAIScript_82DCAE2
+ if_stat_level_less_than AI_TARGET, STAT_EVASION, 7, BattleAIScript_82DCAE2
score -1
- if_stat_level_less_than AI_TARGET, EVASION, 10, BattleAIScript_82DCAE2
+ if_stat_level_less_than AI_TARGET, STAT_EVASION, 10, BattleAIScript_82DCAE2
if_random_less_than 128, BattleAIScript_82DCAE2
score -1
@@ -906,7 +906,7 @@ sMovesTable_82DCB6C:
.2byte -1
BattleAIScript_82DCBBC:
- if_stat_level_less_than AI_USER, ATK, 9, BattleAIScript_82DCBD1
+ if_stat_level_less_than AI_USER, STAT_ATK, 9, BattleAIScript_82DCBD1
if_random_less_than 100, BattleAIScript_82DCBE0
score -1
goto BattleAIScript_82DCBE0
@@ -928,7 +928,7 @@ BattleAIScript_82DCBF6:
end
BattleAIScript_82DCBF7:
- if_stat_level_less_than AI_USER, DEF, 9, BattleAIScript_82DCC0C
+ if_stat_level_less_than AI_USER, STAT_DEF, 9, BattleAIScript_82DCC0C
if_random_less_than 100, BattleAIScript_82DCC1B
score -1
goto BattleAIScript_82DCC1B
@@ -986,7 +986,7 @@ BattleAIScript_82DCC72:
end
BattleAIScript_82DCC73:
- if_stat_level_less_than AI_USER, SPATK, 9, BattleAIScript_82DCC88
+ if_stat_level_less_than AI_USER, STAT_SPATK, 9, BattleAIScript_82DCC88
if_random_less_than 100, BattleAIScript_82DCC97
score -1
goto BattleAIScript_82DCC97
@@ -1008,7 +1008,7 @@ BattleAIScript_82DCCAD:
end
BattleAIScript_82DCCAE:
- if_stat_level_less_than AI_USER, SPDEF, 9, BattleAIScript_82DCCC3
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 9, BattleAIScript_82DCCC3
if_random_less_than 100, BattleAIScript_82DCCD2
score -1
goto BattleAIScript_82DCCD2
@@ -1054,7 +1054,7 @@ sTypesTable_82DCD0A:
.byte -1
BattleAIScript_82DCD14:
- if_stat_level_less_than AI_USER, ACC, 9, BattleAIScript_82DCD24
+ if_stat_level_less_than AI_USER, STAT_ACC, 9, BattleAIScript_82DCD24
if_random_less_than 50, BattleAIScript_82DCD24
score -2
@@ -1071,7 +1071,7 @@ BattleAIScript_82DCD2E:
score +3
BattleAIScript_82DCD3D:
- if_stat_level_less_than AI_USER, EVASION, 9, BattleAIScript_82DCD4D
+ if_stat_level_less_than AI_USER, STAT_EVASION, 9, BattleAIScript_82DCD4D
if_random_less_than 128, BattleAIScript_82DCD4D
score -1
@@ -1101,7 +1101,7 @@ BattleAIScript_82DCD90:
BattleAIScript_82DCDA2:
if_hp_more_than AI_USER, 70, BattleAIScript_82DCDC7
- if_stat_level_equal AI_USER, EVASION, 6, BattleAIScript_82DCDC7
+ if_stat_level_equal AI_USER, STAT_EVASION, 6, BattleAIScript_82DCDC7
if_hp_less_than AI_USER, 40, BattleAIScript_82DCDC5
if_hp_less_than AI_TARGET, 40, BattleAIScript_82DCDC5
if_random_less_than 70, BattleAIScript_82DCDC7
@@ -1113,10 +1113,10 @@ BattleAIScript_82DCDC7:
end
BattleAIScript_82DCDC8:
- if_stat_level_more_than AI_TARGET, EVASION, 10, BattleAIScript_82DCDED
- if_stat_level_less_than AI_USER, ACC, 2, BattleAIScript_82DCDED
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DCDEF
- if_stat_level_less_than AI_USER, ACC, 4, BattleAIScript_82DCDEF
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 10, BattleAIScript_82DCDED
+ if_stat_level_less_than AI_USER, STAT_ACC, 2, BattleAIScript_82DCDED
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DCDEF
+ if_stat_level_less_than AI_USER, STAT_ACC, 4, BattleAIScript_82DCDEF
goto BattleAIScript_82DCDF7
BattleAIScript_82DCDED:
@@ -1130,13 +1130,13 @@ BattleAIScript_82DCDF7:
end
BattleAIScript_82DCDF8:
- if_stat_level_equal AI_TARGET, ATK, 6, BattleAIScript_82DCE1B
+ if_stat_level_equal AI_TARGET, STAT_ATK, 6, BattleAIScript_82DCE1B
score -1
if_hp_more_than AI_USER, 90, BattleAIScript_82DCE0B
score -1
BattleAIScript_82DCE0B:
- if_stat_level_more_than AI_TARGET, ATK, 3, BattleAIScript_82DCE1B
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 3, BattleAIScript_82DCE1B
if_random_less_than 50, BattleAIScript_82DCE1B
score -2
@@ -1166,7 +1166,7 @@ sTypesTable_82DCE43:
BattleAIScript_82DCE4A:
if_hp_less_than AI_USER, 70, BattleAIScript_82DCE59
- if_stat_level_more_than AI_TARGET, DEF, 3, BattleAIScript_82DCE61
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 3, BattleAIScript_82DCE61
BattleAIScript_82DCE59:
if_random_less_than 50, BattleAIScript_82DCE61
@@ -1198,13 +1198,13 @@ BattleAIScript_82DCE96:
end
BattleAIScript_82DCE97:
- if_stat_level_equal AI_TARGET, ATK, 6, BattleAIScript_82DCEBA
+ if_stat_level_equal AI_TARGET, STAT_ATK, 6, BattleAIScript_82DCEBA
score -1
if_hp_more_than AI_USER, 90, BattleAIScript_82DCEAA
score -1
BattleAIScript_82DCEAA:
- if_stat_level_more_than AI_TARGET, SPATK, 3, BattleAIScript_82DCEBA
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 3, BattleAIScript_82DCEBA
if_random_less_than 50, BattleAIScript_82DCEBA
score -2
@@ -1236,7 +1236,7 @@ sTypesTable_82DCEE2:
BattleAIScript_82DCEEB:
if_hp_less_than AI_USER, 70, BattleAIScript_82DCEFA
- if_stat_level_more_than AI_TARGET, SPDEF, 3, BattleAIScript_82DCF02
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 3, BattleAIScript_82DCF02
BattleAIScript_82DCEFA:
if_random_less_than 50, BattleAIScript_82DCF02
@@ -1258,7 +1258,7 @@ BattleAIScript_82DCF1A:
score -1
BattleAIScript_82DCF22:
- if_stat_level_more_than AI_USER, ACC, 4, BattleAIScript_82DCF32
+ if_stat_level_more_than AI_USER, STAT_ACC, 4, BattleAIScript_82DCF32
if_random_less_than 80, BattleAIScript_82DCF32
score -2
@@ -1284,7 +1284,7 @@ BattleAIScript_82DCF68:
BattleAIScript_82DCF7A:
if_hp_more_than AI_USER, 70, BattleAIScript_82DCF9F
- if_stat_level_equal AI_TARGET, ACC, 6, BattleAIScript_82DCF9F
+ if_stat_level_equal AI_TARGET, STAT_ACC, 6, BattleAIScript_82DCF9F
if_hp_less_than AI_USER, 40, BattleAIScript_82DCF9D
if_hp_less_than AI_TARGET, 40, BattleAIScript_82DCF9D
if_random_less_than 70, BattleAIScript_82DCF9F
@@ -1297,7 +1297,7 @@ BattleAIScript_82DCF9F:
BattleAIScript_82DCFA0:
if_hp_less_than AI_USER, 70, BattleAIScript_82DCFAF
- if_stat_level_more_than AI_TARGET, EVASION, 3, BattleAIScript_82DCFB7
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 3, BattleAIScript_82DCFB7
BattleAIScript_82DCFAF:
if_random_less_than 50, BattleAIScript_82DCFB7
@@ -1311,16 +1311,16 @@ BattleAIScript_82DCFC0:
end
BattleAIScript_82DCFC1:
- if_stat_level_more_than AI_USER, ATK, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, DEF, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, SPATK, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, SPDEF, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, EVASION, 8, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, ATK, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, DEF, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, SPATK, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, SPDEF, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, ACC, 4, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_DEF, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_ATK, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_DEF, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_SPATK, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_SPDEF, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_ACC, 4, BattleAIScript_82DD016
goto BattleAIScript_82DD01E
BattleAIScript_82DD016:
@@ -1328,16 +1328,16 @@ BattleAIScript_82DD016:
score -3
BattleAIScript_82DD01E:
- if_stat_level_more_than AI_TARGET, ATK, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, DEF, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, SPATK, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, SPDEF, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, ATK, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, DEF, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, SPATK, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, SPDEF, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, ACC, 4, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_ATK, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_DEF, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_SPATK, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_ACC, 4, BattleAIScript_82DD07B
if_random_less_than 50, BattleAIScript_82DD083
score -1
goto BattleAIScript_82DD083
@@ -1357,11 +1357,11 @@ BattleAIScript_82DD08D:
end
BattleAIScript_82DD08E:
- if_stat_level_more_than AI_TARGET, ATK, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, DEF, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, SPATK, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, SPDEF, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DD0BD
score -3
goto BattleAIScript_82DD0C5
@@ -1569,7 +1569,7 @@ BattleAIScript_82DD2B7:
end
BattleAIScript_82DD2B8:
- if_stat_level_more_than AI_TARGET, ATK, 3, BattleAIScript_82DD2D0
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 3, BattleAIScript_82DD2D0
score +3
get_turn_count
if_not_equal 0, BattleAIScript_82DD2D2
@@ -1987,17 +1987,17 @@ BattleAIScript_82DD645:
if_equal TYPE_GHOST, BattleAIScript_82DD68A
get_user_type2
if_equal TYPE_GHOST, BattleAIScript_82DD68A
- if_stat_level_more_than AI_USER, DEF, 9, BattleAIScript_82DD693
+ if_stat_level_more_than AI_USER, STAT_DEF, 9, BattleAIScript_82DD693
if_random_less_than 128, BattleAIScript_82DD665
score +1
BattleAIScript_82DD665:
- if_stat_level_more_than AI_USER, DEF, 7, BattleAIScript_82DD693
+ if_stat_level_more_than AI_USER, STAT_DEF, 7, BattleAIScript_82DD693
if_random_less_than 128, BattleAIScript_82DD675
score +1
BattleAIScript_82DD675:
- if_stat_level_more_than AI_USER, DEF, 6, BattleAIScript_82DD693
+ if_stat_level_more_than AI_USER, STAT_DEF, 6, BattleAIScript_82DD693
if_random_less_than 128, BattleAIScript_82DD693
score +1
goto BattleAIScript_82DD693
@@ -2062,7 +2062,7 @@ BattleAIScript_82DD75D:
if_equal TYPE_GHOST, BattleAIScript_82DD77C
get_user_type2
if_equal TYPE_GHOST, BattleAIScript_82DD77C
- if_stat_level_more_than AI_USER, EVASION, 8, BattleAIScript_82DD782
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, BattleAIScript_82DD782
score -2
goto BattleAIScript_82DD78A
@@ -2092,11 +2092,11 @@ BattleAIScript_82DD7A8:
end
BattleAIScript_82DD7A9:
- if_stat_level_more_than AI_USER, ATK, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, DEF, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, SPATK, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, SPDEF, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, EVASION, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_DEF, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, BattleAIScript_82DD7D6
goto BattleAIScript_82DD7FC
BattleAIScript_82DD7D6:
@@ -2113,11 +2113,11 @@ BattleAIScript_82DD7EF:
goto BattleAIScript_82DD844
BattleAIScript_82DD7FC:
- if_stat_level_more_than AI_USER, ATK, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, DEF, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, SPATK, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, SPDEF, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, EVASION, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_ATK, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_DEF, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_SPATK, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_EVASION, 7, BattleAIScript_82DD829
goto BattleAIScript_82DD842
BattleAIScript_82DD829:
@@ -2208,19 +2208,19 @@ BattleAIScript_82DD8F1:
end
BattleAIScript_82DD8F2:
- if_stat_level_more_than AI_TARGET, ATK, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, DEF, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, SPATK, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, SPDEF, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DD91F
goto BattleAIScript_82DD957
BattleAIScript_82DD91F:
- if_stat_level_less_than AI_USER, ATK, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, DEF, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, SPATK, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, SPDEF, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, EVASION, 7, BattleAIScript_82DD952
+ if_stat_level_less_than AI_USER, STAT_ATK, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_DEF, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_SPATK, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_EVASION, 7, BattleAIScript_82DD952
if_random_less_than 50, BattleAIScript_82DD959
goto BattleAIScript_82DD957
@@ -2515,7 +2515,7 @@ sAbilitiesTable_82DDBDF:
BattleAIScript_82DDBF0:
if_type_effectiveness AI_EFFECTIVENESS_x0_25, BattleAIScript_82DDC1D
if_type_effectiveness AI_EFFECTIVENESS_x0_5, BattleAIScript_82DDC1D
- if_stat_level_less_than AI_USER, ATK, 6, BattleAIScript_82DDC1D
+ if_stat_level_less_than AI_USER, STAT_ATK, 6, BattleAIScript_82DDC1D
if_target_faster BattleAIScript_82DDC16
if_hp_more_than AI_USER, 40, BattleAIScript_82DDC1D
goto BattleAIScript_82DDC1F
@@ -2930,12 +2930,12 @@ sMovesTable_82DDF75:
BattleAIScript_82DDF7B:
get_turn_count
if_equal 0, Score_Minus2
- if_stat_level_more_than AI_USER, ATK, 8, Score_Plus3
- if_stat_level_more_than AI_USER, ATK, 7, Score_Plus2
- if_stat_level_more_than AI_USER, ATK, 6, Score_Plus1
- if_stat_level_more_than AI_USER, SPATK, 8, Score_Plus3
- if_stat_level_more_than AI_USER, SPATK, 7, Score_Plus2
- if_stat_level_more_than AI_USER, SPATK, 6, Score_Plus1
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, Score_Plus3
+ if_stat_level_more_than AI_USER, STAT_ATK, 7, Score_Plus2
+ if_stat_level_more_than AI_USER, STAT_ATK, 6, Score_Plus1
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, Score_Plus3
+ if_stat_level_more_than AI_USER, STAT_SPATK, 7, Score_Plus2
+ if_stat_level_more_than AI_USER, STAT_SPATK, 6, Score_Plus1
end
BattleAIScript_82DDFB3:
@@ -3073,7 +3073,7 @@ BattleAIScript_82DE178:
goto Score_Minus30_
BattleAIScript_82DE185:
- if_stat_level_more_than AI_TARGET, ATK, 7, BattleAIScript_82DE18F
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 7, BattleAIScript_82DE18F
score +3
BattleAIScript_82DE18F:
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 878b48ccb..727a62f3d 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1,7 +1,7 @@
+#include "constants/battle_anim.h"
#include "constants/rgb.h"
#include "constants/songs.h"
.include "asm/macros/battle_anim_script.inc"
- .include "include/constants/battle_anim.h"
.section script_data, "aw", %progbits
diff --git a/data/battle_moves.inc b/data/battle_moves.inc
index 586248bf0..c5c090546 100644
--- a/data/battle_moves.inc
+++ b/data/battle_moves.inc
@@ -1917,7 +1917,7 @@ gBattleMoves:: @ 831C898
@ Curse
.byte 0x6d @ effect
.byte 0 @ power
- .byte TYPE_UNKNOWN
+ .byte TYPE_MYSTERY
.byte 0 @ accuracy
.byte 10 @ PP
.byte 0 @ side effect chance
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 4d8b22186..058833fa9 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -1,15 +1,17 @@
+#include "constants/battle.h"
+#include "constants/pokemon.h"
+#include "constants/battle_script_commands.h"
+#include "constants/battle_anim.h"
+#include "constants/battle_string_ids.h"
#include "constants/abilities.h"
#include "constants/moves.h"
#include "constants/songs.h"
.include "asm/macros.inc"
.include "asm/macros/battle_script.inc"
.include "constants/constants.inc"
- .include "constants/battle_constants.inc"
- .include "constants/battle_script_constants.inc"
- .include "constants/battle_text.inc"
.section script_data, "aw", %progbits
-
+
.align 2
gBattleScriptsForMoveEffects:: @ 82D86A8
.4byte BattleScript_EffectHit
@@ -251,7 +253,7 @@ BattleScript_EffectUnused8d::
BattleScript_EffectUnusedA3::
BattleScript_EffectHit::
jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler
- jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler
+ jumpifnostatus3 BS_TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler
orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
setbyte sDMG_MULTIPLIER, 0x2
BattleScript_HitFromAtkCanceler::
@@ -270,16 +272,16 @@ BattleScript_HitFromAtkAnimation::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
BattleScript_MoveEnd::
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
@@ -302,20 +304,20 @@ BattleScript_EffectSleep::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS1_SLEEP, BattleScript_AlreadyAsleep
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_AlreadyAsleep
jumpifcantmakeasleep BattleScript_CantMakeAsleep
- jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_SLEEP
+ setmoveeffect MOVE_EFFECT_SLEEP
seteffectprimary
goto BattleScript_MoveEnd
BattleScript_AlreadyAsleep::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYASLEEP
waitmessage 0x40
@@ -335,7 +337,7 @@ BattleScript_CantMakeAsleep::
BattleScript_EffectPoisonHit::
BattleScript_EffectPoisonTail::
- setmoveeffect EFFECT_POISON
+ setmoveeffect MOVE_EFFECT_POISON
goto BattleScript_EffectHit
BattleScript_EffectAbsorb::
@@ -350,44 +352,44 @@ BattleScript_EffectAbsorb::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
negativedamage
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- jumpifability TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze
+ jumpifability BS_TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze
setbyte cMULTISTRING_CHOOSER, 0x0
goto BattleScript_AbsorbUpdateHp
BattleScript_AbsorbLiquidOoze::
manipulatedamage ATK80_DMG_CHANGE_SIGN
setbyte cMULTISTRING_CHOOSER, 0x1
BattleScript_AbsorbUpdateHp::
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
jumpifmovehadnoeffect BattleScript_AbsorbTryFainting
printfromtable gLeechSeedDrainStringIds
waitmessage 0x40
BattleScript_AbsorbTryFainting::
- tryfaintmon ATTACKER, FALSE, NULL
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectBurnHit::
BattleScript_EffectBlazeKick::
- setmoveeffect EFFECT_BURN
+ setmoveeffect MOVE_EFFECT_BURN
goto BattleScript_EffectHit
BattleScript_EffectFreezeHit::
- setmoveeffect EFFECT_FREEZE
+ setmoveeffect MOVE_EFFECT_FREEZE
goto BattleScript_EffectHit
BattleScript_EffectParalyzeHit::
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
goto BattleScript_EffectHit
BattleScript_EffectExplosion::
@@ -397,7 +399,7 @@ BattleScript_EffectExplosion::
faintifabilitynotdamp
setatkhptozero
waitstate
- jumpifbyte NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_82D8B94
+ jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_82D8B94
call BattleScript_82D8BEA
goto BattleScript_82D8B96
BattleScript_82D8B94::
@@ -411,19 +413,19 @@ BattleScript_82D8B96::
adjustnormaldamage
accuracycheck BattleScript_82D8BCF, ACC_CURR_MOVE
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
jumpifnexttargetvalid BattleScript_82D8B96
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
end
BattleScript_82D8BCF::
effectivenesssound
@@ -432,7 +434,7 @@ BattleScript_82D8BCF::
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
jumpifnexttargetvalid BattleScript_82D8B96
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
end
BattleScript_82D8BEA::
@@ -444,8 +446,8 @@ BattleScript_82D8BEA::
BattleScript_EffectDreamEater::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E
- jumpifstatus TARGET, STATUS1_SLEEP, BattleScript_82D8C18
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E
+ jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_82D8C18
BattleScript_82D8C0E::
attackstring
ppreduce
@@ -462,23 +464,23 @@ BattleScript_82D8C18::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
negativedamage
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd
printstring STRINGID_PKMNDREAMEATEN
waitmessage 0x40
BattleScript_DreamEaterTryFaintEnd::
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectMirrorMove::
@@ -493,26 +495,26 @@ BattleScript_EffectMirrorMove::
goto BattleScript_MoveEnd
BattleScript_EffectAttackUp::
- setstatchanger ATK, 1, FALSE
+ setstatchanger STAT_ATK, 1, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectDefenseUp::
- setstatchanger DEF, 1, FALSE
+ setstatchanger STAT_DEF, 1, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpecialAttackUp::
- setstatchanger SPATK, 1, FALSE
+ setstatchanger STAT_SPATK, 1, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectEvasionUp::
- setstatchanger EVASION, 1, FALSE
+ setstatchanger STAT_EVASION, 1, FALSE
BattleScript_EffectStatUp::
attackcanceler
BattleScript_EffectStatUpAfterAtkCanceler::
attackstring
ppreduce
- statbuffchange AFFECTS_USER | 0x1, BattleScript_StatUpEnd
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_StatUpEnd
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim
pause 0x20
goto BattleScript_StatUpPrintString
BattleScript_StatUpAttackAnim::
@@ -520,7 +522,7 @@ BattleScript_StatUpAttackAnim::
waitanimation
BattleScript_StatUpDoAnim::
setgraphicalstatchangevalues
- playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
BattleScript_StatUpPrintString::
printfromtable gStatUpStringIds
waitmessage 0x40
@@ -528,45 +530,45 @@ BattleScript_StatUpEnd::
goto BattleScript_MoveEnd
BattleScript_StatUp::
- playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_EFFECT_BATTLER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
return
BattleScript_EffectAttackDown::
- setstatchanger ATK, 1, TRUE
+ setstatchanger STAT_ATK, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectDefenseDown::
- setstatchanger DEF, 1, TRUE
+ setstatchanger STAT_DEF, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectSpeedDown::
- setstatchanger SPEED, 1, TRUE
+ setstatchanger STAT_SPEED, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectAccuracyDown::
- setstatchanger ACC, 1, TRUE
+ setstatchanger STAT_ACC, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectEvasionDown::
- setstatchanger EVASION, 1, TRUE
+ setstatchanger STAT_EVASION, 1, TRUE
BattleScript_EffectStatDown::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
ppreduce
statbuffchange 0x1, BattleScript_StatDownEnd
- jumpifbyte LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatDownDoAnim
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_StatDownEnd
+ jumpifbyte CMP_LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatDownDoAnim
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_StatDownEnd
pause 0x20
goto BattleScript_StatDownPrintString
BattleScript_StatDownDoAnim::
attackanimation
waitanimation
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
BattleScript_StatDownPrintString::
printfromtable gStatDownStringIds
waitmessage 0x40
@@ -574,7 +576,7 @@ BattleScript_StatDownEnd::
goto BattleScript_MoveEnd
BattleScript_StatDown::
- playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_EFFECT_BATTLER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatDownStringIds
waitmessage 0x40
return
@@ -604,7 +606,7 @@ BattleScript_EffectRampage::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D8DAE
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D8DAE
ppreduce
BattleScript_82D8DAE::
confuseifrepeatingattackends
@@ -614,8 +616,8 @@ BattleScript_EffectRoar::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
- jumpifstatus3 TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted
+ jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
+ jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
@@ -630,10 +632,10 @@ BattleScript_EffectMultiHit::
initmultihitstring
setbyte sMULTIHIT_EFFECT, 0x0
BattleScript_MultiHitLoop::
- jumpifhasnohp ATTACKER, BattleScript_MultiHitEnd
- jumpifhasnohp TARGET, BattleScript_MultiHitPrintStrings
- jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoMultiHit
- jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_MultiHitPrintStrings
+ jumpifhasnohp BS_ATTACKER, BattleScript_MultiHitEnd
+ jumpifhasnohp BS_TARGET, BattleScript_MultiHitPrintStrings
+ jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoMultiHit
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_MultiHitPrintStrings
BattleScript_DoMultiHit::
movevaluescleanup
copybyte cEFFECT_CHOOSER, sMULTIHIT_EFFECT
@@ -645,10 +647,10 @@ BattleScript_DoMultiHit::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
printstring STRINGID_EMPTYSTRING3
@@ -656,7 +658,7 @@ BattleScript_DoMultiHit::
addbyte sMULTIHIT_STRING + 4, 0x1
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
- jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings
decrementmultihit BattleScript_MultiHitLoop
goto BattleScript_MultiHitPrintStrings
BattleScript_MultiHitNoMoreHits::
@@ -670,7 +672,7 @@ BattleScript_MultiHitPrintStrings::
waitmessage 0x40
BattleScript_MultiHitEnd::
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x2
moveend 0x1, 0x0
setbyte sMOVEEND_STATE, 0x4
@@ -689,19 +691,19 @@ BattleScript_EffectConversion::
goto BattleScript_MoveEnd
BattleScript_EffectFlinchHit::
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_EffectHit
BattleScript_EffectRestoreHp::
attackcanceler
attackstring
ppreduce
- tryhealhalfhealth BattleScript_AlreadyAtFullHp, ATTACKER
+ tryhealhalfhealth BattleScript_AlreadyAtFullHp, BS_ATTACKER
attackanimation
waitanimation
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -710,38 +712,38 @@ BattleScript_EffectToxic::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned
- jumpifstatus TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned
- jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed
- jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected
- jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected
+ jumpifability BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus BS_TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
+ jumpiftype BS_TARGET, TYPE_POISON, BattleScript_NotAffected
+ jumpiftype BS_TARGET, TYPE_STEEL, BattleScript_NotAffected
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_TOXIC
+ setmoveeffect MOVE_EFFECT_TOXIC
seteffectprimary
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyPoisoned::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x40
printstring STRINGID_PKMNALREADYPOISONED
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_ImmunityProtected::
- copybyte gEffectBank, gBattlerTarget
+ copybyte gEffectBattler, gBattlerTarget
setbyte cMULTISTRING_CHOOSER, 0x0
call BattleScript_PSNPrevention
goto BattleScript_MoveEnd
BattleScript_EffectPayDay::
- setmoveeffect EFFECT_PAYDAY
+ setmoveeffect MOVE_EFFECT_PAYDAY
goto BattleScript_EffectHit
BattleScript_EffectLightScreen::
@@ -752,20 +754,20 @@ BattleScript_EffectLightScreen::
goto BattleScript_PrintReflectLightScreenSafeguardString
BattleScript_EffectTriAttack::
- setmoveeffect EFFECT_TRI_ATTACK
+ setmoveeffect MOVE_EFFECT_TRI_ATTACK
goto BattleScript_EffectHit
BattleScript_EffectRest::
attackcanceler
attackstring
ppreduce
- jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_RestIsAlreadyAsleep
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_RestIsAlreadyAsleep
jumpifcantmakeasleep BattleScript_RestCantSleep
trysetrest BattleScript_AlreadyAtFullHp
pause 0x20
printfromtable gRestUsedStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
waitstate
goto BattleScript_PresentHealTarget
@@ -776,7 +778,7 @@ BattleScript_RestCantSleep::
goto BattleScript_MoveEnd
BattleScript_RestIsAlreadyAsleep::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYASLEEP2
waitmessage 0x40
@@ -799,20 +801,20 @@ BattleScript_KOFail::
goto BattleScript_MoveEnd
BattleScript_EffectRazorWind::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x0
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_TwoTurnMovesSecondTurn::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- setbyte sANIM_TURN, 0x1
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ setbyte sB_ANIM_TURN, 0x1
+ clearstatusfromeffect BS_ATTACKER
orword gHitMarker, HITMARKER_NO_PPDEDUCT
jumpifnotmove MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_HitFromAccCheck
BattleScriptFirstChargingTurn::
@@ -822,7 +824,7 @@ BattleScriptFirstChargingTurn::
attackanimation
waitanimation
orword gHitMarker, HITMARKER_x8000000
- setmoveeffect EFFECT_CHARGING | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
copybyte cMULTISTRING_CHOOSER, sTWOTURN_STRINGID
printfromtable gFirstTurnOfTwoStringIds
@@ -852,11 +854,11 @@ BattleScript_EffectDragonRage::
BattleScript_EffectTrap::
jumpifnotmove MOVE_WHIRLPOOL, BattleScript_DoWrapEffect
- jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect
+ jumpifnostatus3 BS_TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect
orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
setbyte sDMG_MULTIPLIER, 0x2
BattleScript_DoWrapEffect::
- setmoveeffect EFFECT_WRAP
+ setmoveeffect MOVE_EFFECT_WRAP
goto BattleScript_EffectHit
BattleScript_EffectDoubleHit::
@@ -879,7 +881,7 @@ BattleScript_MoveMissedDoDamage::
pause 0x40
resultmessage
waitmessage 0x40
- jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd
printstring STRINGID_PKMNCRASHED
waitmessage 0x40
damagecalc
@@ -888,9 +890,9 @@ BattleScript_MoveMissedDoDamage::
manipulatedamage ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP
bicbyte gMoveResultFlags, MOVE_RESULT_MISSED
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
orbyte gMoveResultFlags, MOVE_RESULT_MISSED
goto BattleScript_MoveEnd
@@ -909,7 +911,7 @@ BattleScript_EffectFocusEnergy::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed
+ jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed
setfocusenergy
attackanimation
waitanimation
@@ -918,7 +920,7 @@ BattleScript_EffectFocusEnergy::
goto BattleScript_MoveEnd
BattleScript_EffectRecoil::
- setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RECOIL_25 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit
incrementgamestat 0x1B
goto BattleScript_EffectHit
@@ -927,44 +929,44 @@ BattleScript_EffectConfuse::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_CONFUSION
+ setmoveeffect MOVE_EFFECT_CONFUSION
seteffectprimary
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyConfused::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYCONFUSED
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_EffectAttackUp2::
- setstatchanger ATK, 2, FALSE
+ setstatchanger STAT_ATK, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectDefenseUp2::
- setstatchanger DEF, 2, FALSE
+ setstatchanger STAT_DEF, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpeedUp2::
- setstatchanger SPEED, 2, FALSE
+ setstatchanger STAT_SPEED, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpecialAttackUp2::
- setstatchanger SPATK, 2, FALSE
+ setstatchanger STAT_SPATK, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpecialDefenseUp2::
- setstatchanger SPDEF, 2, FALSE
+ setstatchanger STAT_SPDEF, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectTransform::
@@ -979,19 +981,19 @@ BattleScript_EffectTransform::
goto BattleScript_MoveEnd
BattleScript_EffectAttackDown2::
- setstatchanger ATK, 2, TRUE
+ setstatchanger STAT_ATK, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectDefenseDown2::
- setstatchanger DEF, 2, TRUE
+ setstatchanger STAT_DEF, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectSpeedDown2::
- setstatchanger SPEED, 2, TRUE
+ setstatchanger STAT_SPEED, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectSpecialDefenseDown2::
- setstatchanger SPDEF, 2, TRUE
+ setstatchanger STAT_SPDEF, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectReflect::
@@ -1010,18 +1012,18 @@ BattleScript_EffectPoison::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned
- jumpifstatus TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned
- jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected
- jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected
- jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed
+ jumpifability BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus BS_TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned
+ jumpiftype BS_TARGET, TYPE_POISON, BattleScript_NotAffected
+ jumpiftype BS_TARGET, TYPE_STEEL, BattleScript_NotAffected
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_POISON
+ setmoveeffect MOVE_EFFECT_POISON
seteffectprimary
resultmessage
waitmessage 0x40
@@ -1031,74 +1033,74 @@ BattleScript_EffectParalyze::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_LIMBER, BattleScript_LimberProtected
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifability BS_TARGET, ABILITY_LIMBER, BattleScript_LimberProtected
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
typecalc
jumpifmovehadnoeffect BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed
- jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
seteffectprimary
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyParalyzed::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNISALREADYPARALYZED
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_LimberProtected::
- copybyte gEffectBank, gBattlerTarget
+ copybyte gEffectBattler, gBattlerTarget
setbyte cMULTISTRING_CHOOSER, 0x0
call BattleScript_PRLZPrevention
goto BattleScript_MoveEnd
BattleScript_EffectAttackDownHit::
- setmoveeffect EFFECT_ATK_MINUS_1
+ setmoveeffect MOVE_EFFECT_ATK_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectDefenseDownHit::
- setmoveeffect EFFECT_DEF_MINUS_1
+ setmoveeffect MOVE_EFFECT_DEF_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSpeedDownHit::
- setmoveeffect EFFECT_SPD_MINUS_1
+ setmoveeffect MOVE_EFFECT_SPD_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSpecialAttackDownHit::
- setmoveeffect EFFECT_SP_ATK_MINUS_1
+ setmoveeffect MOVE_EFFECT_SP_ATK_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSpecialDefenseDownHit::
- setmoveeffect EFFECT_SP_DEF_MINUS_1
+ setmoveeffect MOVE_EFFECT_SP_DEF_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectAccuracyDownHit::
- setmoveeffect EFFECT_ACC_MINUS_1
+ setmoveeffect MOVE_EFFECT_ACC_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSkyAttack::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x3
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_EffectConfuseHit::
- setmoveeffect EFFECT_CONFUSION
+ setmoveeffect MOVE_EFFECT_CONFUSION
goto BattleScript_EffectHit
BattleScript_EffectTwineedle::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
- setbyte sMULTIHIT_EFFECT, EFFECT_POISON
+ setbyte sMULTIHIT_EFFECT, MOVE_EFFECT_POISON
attackstring
ppreduce
setmultihitcounter 0x2
@@ -1110,22 +1112,22 @@ BattleScript_EffectSubstitute::
ppreduce
attackstring
waitstate
- jumpifstatus2 ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
+ jumpifstatus2 BS_ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
setsubstitute
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_SubstituteAnim
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_SubstituteAnim
pause 0x20
goto BattleScript_SubstituteString
BattleScript_SubstituteAnim::
attackanimation
waitanimation
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
BattleScript_SubstituteString::
printfromtable gSubsituteUsedStringIds
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyHasSubstitute::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNHASSUBSTITUTE
waitmessage 0x40
@@ -1134,7 +1136,7 @@ BattleScript_AlreadyHasSubstitute::
BattleScript_EffectRecharge::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
- setmoveeffect EFFECT_RECHARGE | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RECHARGE | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_HitFromAtkString
BattleScript_MoveUsedMustRecharge::
@@ -1145,20 +1147,20 @@ BattleScript_MoveUsedMustRecharge::
BattleScript_EffectRage::
attackcanceler
accuracycheck BattleScript_RageMiss, ACC_CURR_MOVE
- setmoveeffect EFFECT_RAGE
+ setmoveeffect MOVE_EFFECT_RAGE
seteffectprimary
setmoveeffect 0
goto BattleScript_HitFromAtkString
BattleScript_RageMiss::
- setmoveeffect EFFECT_RAGE
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_RAGE
+ clearstatusfromeffect BS_ATTACKER
goto BattleScript_PrintMoveMissed
BattleScript_EffectMimic::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
mimicattackcopy BattleScript_ButItFailed
attackanimation
@@ -1173,8 +1175,8 @@ BattleScript_EffectMetronome::
pause 0x20
attackanimation
waitanimation
- setbyte sANIM_TURN, 0x0
- setbyte sANIM_TARGETS_HIT, 0x0
+ setbyte sB_ANIM_TURN, 0x0
+ setbyte sB_ANIM_TARGETS_HIT, 0x0
metronome
BattleScript_EffectLeechSeed::
@@ -1182,7 +1184,7 @@ BattleScript_EffectLeechSeed::
attackstring
pause 0x20
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_DoLeechSeed, ACC_CURR_MOVE
BattleScript_DoLeechSeed::
setseeded
@@ -1268,31 +1270,31 @@ BattleScript_EffectPainSplit::
attackanimation
waitanimation
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
copyword gBattleMoveDamage, sPAINSPLIT_HP
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_SHAREDPAIN
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_EffectSnore::
attackcanceler
- jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_SnoreIsAsleep
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_SnoreIsAsleep
attackstring
ppreduce
goto BattleScript_ButItFailed
BattleScript_SnoreIsAsleep::
- jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore
+ jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore
printstring STRINGID_PKMNFASTASLEEP
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
BattleScript_DoSnore::
attackstring
ppreduce
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_HitFromCritCalc
BattleScript_EffectConversion2::
@@ -1310,7 +1312,7 @@ BattleScript_EffectLockOn::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
setalwayshitflag
attackanimation
@@ -1323,7 +1325,7 @@ BattleScript_EffectSketch::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
copymovepermanently BattleScript_ButItFailed
attackanimation
waitanimation
@@ -1333,14 +1335,14 @@ BattleScript_EffectSketch::
BattleScript_EffectSleepTalk::
attackcanceler
- jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_SleepTalkIsAsleep
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_SleepTalkIsAsleep
attackstring
ppreduce
goto BattleScript_ButItFailed
BattleScript_SleepTalkIsAsleep::
printstring STRINGID_PKMNFASTASLEEP
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
attackstring
ppreduce
orword gHitMarker, HITMARKER_NO_PPDEDUCT
@@ -1350,8 +1352,8 @@ BattleScript_SleepTalkIsAsleep::
BattleScript_SleepTalkUsingMove::
attackanimation
waitanimation
- setbyte sANIM_TURN, 0x0
- setbyte sANIM_TARGETS_HIT, 0x0
+ setbyte sB_ANIM_TURN, 0x0
+ setbyte sB_ANIM_TARGETS_HIT, 0x0
jumptorandomattack TRUE
BattleScript_EffectDestinyBond::
@@ -1392,15 +1394,15 @@ BattleScript_EffectHealBell::
printfromtable gPartyStatusHealStringIds
waitmessage 0x40
jumpifnotmove MOVE_HEAL_BELL, BattleScript_PartyHealEnd
- jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_CheckHealBellMon2Unaffected
+ jumpifbyte CMP_NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_CheckHealBellMon2Unaffected
printstring STRINGID_PKMNSXBLOCKSY
waitmessage 0x40
BattleScript_CheckHealBellMon2Unaffected::
- jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_PartyHealEnd
+ jumpifbyte CMP_NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_PartyHealEnd
printstring STRINGID_PKMNSXBLOCKSY2
waitmessage 0x40
BattleScript_PartyHealEnd::
- updatestatusicon ATTACKER_WITH_PARTNER
+ updatestatusicon BS_ATTACKER_WITH_PARTNER
waitstate
goto BattleScript_MoveEnd
@@ -1412,10 +1414,10 @@ BattleScript_EffectTripleKick::
initmultihitstring
setmultihit 0x3
BattleScript_TripleKickLoop::
- jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd
- jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits
- jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack
- jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_TripleKickNoMoreHits
+ jumpifhasnohp BS_ATTACKER, BattleScript_TripleKickEnd
+ jumpifhasnohp BS_TARGET, BattleScript_TripleKickNoMoreHits
+ jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_TripleKickNoMoreHits
BattleScript_DoTripleKickAttack::
accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE
movevaluescleanup
@@ -1430,40 +1432,40 @@ BattleScript_DoTripleKickAttack::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
printstring STRINGID_EMPTYSTRING3
waitmessage 0x1
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
- jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_TripleKickPrintStrings
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_TripleKickPrintStrings
decrementmultihit BattleScript_TripleKickLoop
goto BattleScript_TripleKickPrintStrings
BattleScript_TripleKickNoMoreHits::
pause 0x20
- jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings
+ jumpifbyte CMP_EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings
bicbyte gMoveResultFlags, MOVE_RESULT_MISSED
BattleScript_TripleKickPrintStrings::
resultmessage
waitmessage 0x40
- jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd
- jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_TripleKickEnd
+ jumpifbyte CMP_EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_TripleKickEnd
copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6
printstring STRINGID_HITXTIMES
waitmessage 0x40
BattleScript_TripleKickEnd::
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0xE
moveend 0x0, 0x0
end
BattleScript_EffectThief::
- setmoveeffect EFFECT_STEAL_ITEM
+ setmoveeffect MOVE_EFFECT_STEAL_ITEM
goto BattleScript_EffectHit
BattleScript_EffectMeanLook::
@@ -1471,11 +1473,11 @@ BattleScript_EffectMeanLook::
attackstring
ppreduce
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC
- jumpifstatus2 TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
attackanimation
waitanimation
- setmoveeffect EFFECT_PREVENT_ESCAPE
+ setmoveeffect MOVE_EFFECT_PREVENT_ESCAPE
seteffectprimary
printstring STRINGID_TARGETCANTESCAPENOW
waitmessage 0x40
@@ -1485,14 +1487,14 @@ BattleScript_EffectNightmare::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus2 TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS1_SLEEP, BattleScript_NightmareWorked
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_NightmareWorked
goto BattleScript_ButItFailed
BattleScript_NightmareWorked::
attackanimation
waitanimation
- setmoveeffect EFFECT_NIGHTMARE
+ setmoveeffect MOVE_EFFECT_NIGHTMARE
seteffectprimary
printstring STRINGID_PKMNFELLINTONIGHTMARE
waitmessage 0x40
@@ -1501,57 +1503,57 @@ BattleScript_NightmareWorked::
BattleScript_EffectMinimize::
attackcanceler
setminimize
- setstatchanger EVASION, 1, FALSE
+ setstatchanger STAT_EVASION, 1, FALSE
goto BattleScript_EffectStatUpAfterAtkCanceler
BattleScript_EffectCurse::
- jumpiftype2 ATTACKER, TYPE_GHOST, BattleScript_GhostCurse
+ jumpiftype2 BS_ATTACKER, TYPE_GHOST, BattleScript_GhostCurse
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, GREATER_THAN, SPEED, 0x0, BattleScript_CurseTrySpeed
- jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_CurseTrySpeed
- jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_ButItFailed
+ jumpifstat BS_ATTACKER, CMP_GREATER_THAN, STAT_SPEED, 0x0, BattleScript_CurseTrySpeed
+ jumpifstat BS_ATTACKER, CMP_NOT_EQUAL, STAT_ATK, 0xC, BattleScript_CurseTrySpeed
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_DEF, 0xC, BattleScript_ButItFailed
BattleScript_CurseTrySpeed::
copybyte gBattlerTarget, gBattlerAttacker
- setbyte sANIM_TURN, 0x1
+ setbyte sB_ANIM_TURN, 0x1
attackanimation
waitanimation
- setstatchanger SPEED, 1, TRUE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryAttack
+ setstatchanger STAT_SPEED, 1, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CurseTryAttack
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_CurseTryAttack::
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryDefence
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CurseTryDefence
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CurseTryDefence::
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseEnd
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CurseEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CurseEnd::
goto BattleScript_MoveEnd
BattleScript_GhostCurse::
jumpifbytenotequal gBattlerAttacker, gBattlerTarget, BattleScript_DoGhostCurse
- getmovetarget ATTACKER
+ getmovetarget BS_ATTACKER
BattleScript_DoGhostCurse::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
cursetarget BattleScript_ButItFailed
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- setbyte sANIM_TURN, 0x0
+ setbyte sB_ANIM_TURN, 0x0
attackanimation
waitanimation
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNLAIDCURSE
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectProtect::
@@ -1600,7 +1602,7 @@ BattleScript_EffectPerishSong::
waitmessage 0x40
setbyte sBANK, 0x0
BattleScript_PerishSongLoop::
- jumpifability SCRIPTING_BANK, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected
+ jumpifability BS_SCRIPTING, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected
BattleScript_PerishSongLoopIncrement::
addbyte sBANK, 0x1
jumpifbytenotequal sBANK, gBattlersCount, BattleScript_PerishSongLoop
@@ -1621,7 +1623,7 @@ BattleScript_EffectSandstorm::
BattleScript_EffectRollout::
attackcanceler
attackstring
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy
ppreduce
BattleScript_RolloutCheckAccuracy::
accuracycheck BattleScript_RolloutHit, ACC_CURR_MOVE
@@ -1632,24 +1634,24 @@ BattleScript_RolloutHit::
BattleScript_EffectSwagger::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
ppreduce
- jumpifconfusedandstatmaxed ATK, BattleScript_ButItFailed
+ jumpifconfusedandstatmaxed STAT_ATK, BattleScript_ButItFailed
attackanimation
waitanimation
- setstatchanger ATK, 2, FALSE
+ setstatchanger STAT_ATK, 2, FALSE
statbuffchange 0x1, BattleScript_SwaggerTryConfuse
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SwaggerTryConfuse
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SwaggerTryConfuse
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_SwaggerTryConfuse::
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
- setmoveeffect EFFECT_CONFUSION
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ setmoveeffect MOVE_EFFECT_CONFUSION
seteffectprimary
goto BattleScript_MoveEnd
@@ -1702,7 +1704,7 @@ BattleScript_EffectSafeguard::
goto BattleScript_PrintReflectLightScreenSafeguardString
BattleScript_EffectThawHit::
- setmoveeffect EFFECT_BURN
+ setmoveeffect MOVE_EFFECT_BURN
goto BattleScript_EffectHit
BattleScript_EffectMagnitude::
@@ -1721,25 +1723,25 @@ BattleScript_EffectBatonPass::
attackstring
ppreduce
jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
- jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | ATTACKER, BattleScript_ButItFailed
+ jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | BS_ATTACKER, BattleScript_ButItFailed
attackanimation
waitanimation
openpartyscreen 0x1, BattleScript_ButItFailed
- switchoutabilities ATTACKER
+ switchoutabilities BS_ATTACKER
waitstate
- switchhandleorder ATTACKER, 0x2
- returntoball ATTACKER
- getswitchedmondata ATTACKER
- switchindataupdate ATTACKER
- hpthresholds ATTACKER
+ switchhandleorder BS_ATTACKER, 0x2
+ returntoball BS_ATTACKER
+ getswitchedmondata BS_ATTACKER
+ switchindataupdate BS_ATTACKER
+ hpthresholds BS_ATTACKER
printstring STRINGID_SWITCHINMON
- switchinanim ATTACKER, TRUE
+ switchinanim BS_ATTACKER, TRUE
waitstate
- switchineffects ATTACKER
+ switchineffects BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectRapidSpin::
- setmoveeffect EFFECT_RAPIDSPIN | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RAPIDSPIN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectSonicboom::
@@ -1787,15 +1789,15 @@ BattleScript_EffectSunnyDay::
goto BattleScript_MoveWeatherChange
BattleScript_EffectDefenseUpHit::
- setmoveeffect EFFECT_DEF_PLUS_1 | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_DEF_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit
BattleScript_EffectAttackUpHit::
- setmoveeffect EFFECT_ATK_PLUS_1 | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit
BattleScript_EffectAllStatsUpHit::
- setmoveeffect EFFECT_ALL_STATS_UP | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_ALL_STATS_UP | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit
BattleScript_EffectBellyDrum::
@@ -1806,8 +1808,8 @@ BattleScript_EffectBellyDrum::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
attackanimation
waitanimation
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNCUTHPMAXEDATTACK
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -1834,26 +1836,26 @@ BattleScript_EffectMirrorCoat::
goto BattleScript_HitFromAtkAnimation
BattleScript_EffectSkullBash::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x2
call BattleScriptFirstChargingTurn
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_SkullBashEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SkullBashEnd
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_SkullBashEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SkullBashEnd
setgraphicalstatchangevalues
- playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_SkullBashEnd::
goto BattleScript_MoveEnd
BattleScript_EffectTwister::
- jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect
+ jumpifnostatus3 BS_TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect
orword gHitMarker, HITMARKER_IGNORE_ON_AIR
setbyte sDMG_MULTIPLIER, 0x2
BattleScript_FlinchEffect::
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_EffectHit
BattleScript_EffectEarthquake::
@@ -1863,7 +1865,7 @@ BattleScript_EffectEarthquake::
selectfirstvalidtarget
BattleScript_HitsAllWithUndergroundBonusLoop::
movevaluescleanup
- jumpifnostatus3 TARGET, STATUS3_UNDERGROUND, BattleScript_HitsAllNoUndergroundBonus
+ jumpifnostatus3 BS_TARGET, STATUS3_UNDERGROUND, BattleScript_HitsAllNoUndergroundBonus
orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND
setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_DoHitAllWithUndergroundBonus
@@ -1879,17 +1881,17 @@ BattleScript_DoHitAllWithUndergroundBonus::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
printstring STRINGID_EMPTYSTRING3
waitmessage 0x1
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop
@@ -1917,35 +1919,35 @@ BattleScript_EffectFutureSight::
goto BattleScript_MoveEnd
BattleScript_EffectGust::
- jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_EffectHit
+ jumpifnostatus3 BS_TARGET, STATUS3_ON_AIR, BattleScript_EffectHit
orword gHitMarker, HITMARKER_IGNORE_ON_AIR
setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_EffectHit
BattleScript_EffectStomp::
- jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect
+ jumpifnostatus3 BS_TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect
setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_FlinchEffect
BattleScript_EffectSolarbeam::
jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn
jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn
- jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn
BattleScript_SolarbeamDecideTurn::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x1
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_SolarbeamOnFirstTurn::
orword gHitMarker, HITMARKER_x8000000
- setmoveeffect EFFECT_CHARGING | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
ppreduce
goto BattleScript_TwoTurnMovesSecondTurn
BattleScript_EffectThunder::
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
orword gHitMarker, HITMARKER_IGNORE_ON_AIR
goto BattleScript_EffectHit
@@ -1954,14 +1956,14 @@ BattleScript_EffectTeleport::
attackstring
ppreduce
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed
- getifcantrunfrombattle ATTACKER
- jumpifbyte EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed
- jumpifbyte EQUAL, gBattleCommunication, 0x2, BattleScript_PrintAbilityMadeIneffective
+ getifcantrunfrombattle BS_ATTACKER
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x2, BattleScript_PrintAbilityMadeIneffective
attackanimation
waitanimation
printstring STRINGID_PKMNFLEDFROMBATTLE
waitmessage 0x40
- setoutcomeonteleport ATTACKER
+ setoutcomeonteleport BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectBeatUp::
@@ -1976,22 +1978,22 @@ BattleScript_BeatUpLoop::
trydobeatup BattleScript_BeatUpEnd, BattleScript_ButItFailed
printstring STRINGID_PKMNATTACK
critcalc
- jumpifbyte NOT_EQUAL, gCritMultiplier, 0x2, BattleScript_BeatUpAttack
+ jumpifbyte CMP_NOT_EQUAL, gCritMultiplier, 0x2, BattleScript_BeatUpAttack
manipulatedamage ATK80_DMG_DOUBLED
BattleScript_BeatUpAttack::
adjustnormaldamage
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
goto BattleScript_BeatUpLoop
@@ -1999,8 +2001,8 @@ BattleScript_BeatUpEnd::
end
BattleScript_EffectSemiInvulnerable::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable
jumpifmove MOVE_FLY, BattleScript_FirstTurnFly
jumpifmove MOVE_DIVE, BattleScript_FirstTurnDive
jumpifmove MOVE_BOUNCE, BattleScript_FirstTurnBounce
@@ -2024,12 +2026,12 @@ BattleScript_FirstTurnSemiInvulnerable::
BattleScript_SecondTurnSemiInvulnerable::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- setbyte sANIM_TURN, 0x1
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ setbyte sB_ANIM_TURN, 0x1
+ clearstatusfromeffect BS_ATTACKER
orword gHitMarker, HITMARKER_NO_PPDEDUCT
jumpifnotmove MOVE_BOUNCE, BattleScript_SemiInvulnerableTryHit
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
BattleScript_SemiInvulnerableTryHit::
accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE
clearsemiinvulnerablebit
@@ -2044,9 +2046,9 @@ BattleScript_EffectDefenseCurl::
attackstring
ppreduce
setdefensecurlbit
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_DefenseCurlDoStatUpAnim
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_DefenseCurlDoStatUpAnim
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString
attackanimation
waitanimation
BattleScript_DefenseCurlDoStatUpAnim::
@@ -2056,13 +2058,13 @@ BattleScript_EffectSoftboiled::
attackcanceler
attackstring
ppreduce
- tryhealhalfhealth BattleScript_AlreadyAtFullHp, TARGET
+ tryhealhalfhealth BattleScript_AlreadyAtFullHp, BS_TARGET
BattleScript_PresentHealTarget::
attackanimation
waitanimation
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -2076,7 +2078,7 @@ BattleScript_AlreadyAtFullHp::
BattleScript_EffectFakeOut::
attackcanceler
jumpifnotfirstturn BattleScript_ButItFailedAtkStringPpReduce
- setmoveeffect EFFECT_FLINCH | CERTAIN
+ setmoveeffect MOVE_EFFECT_FLINCH | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_ButItFailedAtkStringPpReduce::
@@ -2100,9 +2102,9 @@ BattleScript_NotAffected::
BattleScript_EffectUproar::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
- setmoveeffect EFFECT_UPROAR | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_UPROAR | MOVE_EFFECT_AFFECTS_USER
attackstring
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_UproarHit
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_UproarHit
ppreduce
BattleScript_UproarHit::
nop
@@ -2121,7 +2123,7 @@ BattleScript_EffectStockpile::
BattleScript_EffectSpitUp::
attackcanceler
- jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82D9FA2
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82D9FA2
attackstring
ppreduce
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
@@ -2178,24 +2180,24 @@ BattleScript_EffectTorment::
BattleScript_EffectFlatter::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
ppreduce
- jumpifconfusedandstatmaxed SPATK, BattleScript_ButItFailed
+ jumpifconfusedandstatmaxed STAT_SPATK, BattleScript_ButItFailed
attackanimation
waitanimation
- setstatchanger SPATK, 1, FALSE
+ setstatchanger STAT_SPATK, 1, FALSE
statbuffchange 0x1, BattleScript_FlatterTryConfuse
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_FlatterTryConfuse
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_FlatterTryConfuse
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_FlatterTryConfuse::
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
- setmoveeffect EFFECT_CONFUSION
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ setmoveeffect MOVE_EFFECT_CONFUSION
seteffectprimary
goto BattleScript_MoveEnd
@@ -2203,27 +2205,27 @@ BattleScript_EffectWillOWisp::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS1_BURN, BattleScript_AlreadyBurned
- jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected
- jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents
- jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_BURN, BattleScript_AlreadyBurned
+ jumpiftype BS_TARGET, TYPE_FIRE, BattleScript_NotAffected
+ jumpifability BS_TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_BURN
+ setmoveeffect MOVE_EFFECT_BURN
seteffectprimary
goto BattleScript_MoveEnd
BattleScript_WaterVeilPrevents::
- copybyte gEffectBank, gBattlerTarget
+ copybyte gEffectBattler, gBattlerTarget
setbyte cMULTISTRING_CHOOSER, 0x0
call BattleScript_BRNPrevention
goto BattleScript_MoveEnd
BattleScript_AlreadyBurned::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYHASBURN
waitmessage 0x40
@@ -2231,31 +2233,31 @@ BattleScript_AlreadyBurned::
BattleScript_EffectMemento::
attackcanceler
- jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82DA153
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82DA153
attackstring
ppreduce
jumpifattackandspecialattackcannotfall BattleScript_ButItFailed
setatkhptozero
attackanimation
waitanimation
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA148
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA148
setbyte sFIELD_1B, 0x0
- playstatchangeanimation TARGET, 0x12, 0x7
- playstatchangeanimation TARGET, 0x2, 0x3
- setstatchanger ATK, 2, TRUE
+ playstatchangeanimation BS_TARGET, 0x12, 0x7
+ playstatchangeanimation BS_TARGET, 0x2, 0x3
+ setstatchanger STAT_ATK, 2, TRUE
statbuffchange 0x1, BattleScript_82DA119
- jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119
+ jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DA119::
- playstatchangeanimation TARGET, 0x10, 0x3
- setstatchanger SPATK, 2, TRUE
+ playstatchangeanimation BS_TARGET, 0x10, 0x3
+ setstatchanger STAT_SPATK, 2, TRUE
statbuffchange 0x1, BattleScript_82DA13C
- jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C
+ jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DA13C::
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_82DA148::
printstring STRINGID_BUTNOEFFECT
@@ -2271,11 +2273,11 @@ BattleScript_82DA15A::
effectivenesssound
resultmessage
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectFacade::
- jumpifstatus ATTACKER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, BattleScript_FacadeDoubleDmg
+ jumpifstatus BS_ATTACKER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, BattleScript_FacadeDoubleDmg
goto BattleScript_EffectHit
BattleScript_FacadeDoubleDmg::
@@ -2291,9 +2293,9 @@ BattleScript_EffectFocusPunch::
goto BattleScript_MoveEnd
BattleScript_EffectSmellingsalt::
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit
- setmoveeffect EFFECT_REMOVE_PARALYSIS | CERTAIN
- jumpifstatus TARGET, STATUS1_PARALYSIS, BattleScript_SmellingsaltDoubleDmg
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit
+ setmoveeffect MOVE_EFFECT_REMOVE_PARALYSIS | MOVE_EFFECT_CERTAIN
+ jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_SmellingsaltDoubleDmg
goto BattleScript_EffectHit
BattleScript_SmellingsaltDoubleDmg::
@@ -2358,7 +2360,7 @@ BattleScript_EffectTrick::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
tryswapitems BattleScript_ButItFailed
attackanimation
@@ -2396,8 +2398,8 @@ BattleScript_EffectAssist::
asistattackselect BattleScript_ButItFailedPpReduce
attackanimation
waitanimation
- setbyte sANIM_TURN, 0x0
- setbyte sANIM_TARGETS_HIT, 0x0
+ setbyte sB_ANIM_TURN, 0x0
+ setbyte sB_ANIM_TARGETS_HIT, 0x0
jumptorandomattack TRUE
BattleScript_EffectIngrain::
@@ -2412,7 +2414,7 @@ BattleScript_EffectIngrain::
goto BattleScript_MoveEnd
BattleScript_EffectSuperpower::
- setmoveeffect EFFECT_ATK_DEF_DOWN | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_ATK_DEF_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectMagicCoat::
@@ -2451,37 +2453,37 @@ BattleScript_EffectBrickBreak::
damagecalc
typecalc
adjustnormaldamage
- jumpifbyte EQUAL, sANIM_TURN, 0x0, BattleScript_BrickBreakAnim
+ jumpifbyte CMP_EQUAL, sB_ANIM_TURN, 0x0, BattleScript_BrickBreakAnim
bicbyte gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE
BattleScript_BrickBreakAnim::
attackanimation
waitanimation
- jumpifbyte LESS_THAN, sANIM_TURN, 0x2, BattleScript_BrickBreakDoHit
+ jumpifbyte CMP_LESS_THAN, sB_ANIM_TURN, 0x2, BattleScript_BrickBreakDoHit
printstring STRINGID_THEWALLSHATTERED
waitmessage 0x40
BattleScript_BrickBreakDoHit::
typecalc2
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectYawn::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBankAbilityMadeIneffective
- jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_PrintBankAbilityMadeIneffective
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifability BS_TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBankAbilityMadeIneffective
+ jumpifability BS_TARGET, ABILITY_INSOMNIA, BattleScript_PrintBankAbilityMadeIneffective
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifcantmakeasleep BattleScript_ButItFailed
setyawn BattleScript_ButItFailed
@@ -2499,7 +2501,7 @@ BattleScript_PrintAbilityMadeIneffective::
goto BattleScript_MoveEnd
BattleScript_EffectKnockOff::
- setmoveeffect EFFECT_KNOCK_OFF
+ setmoveeffect MOVE_EFFECT_KNOCK_OFF
goto BattleScript_EffectHit
BattleScript_EffectEndeavor::
@@ -2552,7 +2554,7 @@ BattleScript_EffectRefresh::
waitanimation
printstring STRINGID_PKMNSTATUSNORMAL
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectGrudge::
@@ -2591,7 +2593,7 @@ BattleScript_EffectSecretPower::
goto BattleScript_EffectHit
BattleScript_EffectDoubleEdge::
- setmoveeffect EFFECT_RECOIL_33_PARALYSIS | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RECOIL_33_PARALYSIS | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectTeeterDance::
@@ -2601,14 +2603,14 @@ BattleScript_EffectTeeterDance::
setbyte gBattlerTarget, 0x0
BattleScript_TeeterDanceLoop::
movevaluescleanup
- setmoveeffect EFFECT_CONFUSION
+ setmoveeffect MOVE_EFFECT_CONFUSION
jumpifbyteequal gBattlerAttacker, gBattlerTarget, BattleScript_TeeterDanceLoopIncrement
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceOwnTempoPrevents
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents
- jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused
- jumpifhasnohp TARGET, BattleScript_TeeterDanceLoopIncrement
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceOwnTempoPrevents
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents
+ jumpifstatus2 BS_TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused
+ jumpifhasnohp BS_TARGET, BattleScript_TeeterDanceLoopIncrement
accuracycheck BattleScript_TeeterDanceMissed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_TeeterDanceSafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_TeeterDanceSafeguardProtected
attackanimation
waitanimation
seteffectprimary
@@ -2641,7 +2643,7 @@ BattleScript_TeeterDanceSubstitutePrevents::
goto BattleScript_TeeterDanceDoMoveEndIncrement
BattleScript_TeeterDanceAlreadyConfused::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYCONFUSED
waitmessage 0x40
@@ -2665,7 +2667,7 @@ BattleScript_EffectWaterSport::
goto BattleScript_MoveEnd
BattleScript_EffectPoisonFang::
- setmoveeffect EFFECT_TOXIC
+ setmoveeffect MOVE_EFFECT_TOXIC
goto BattleScript_EffectHit
BattleScript_EffectWeatherBall::
@@ -2673,32 +2675,32 @@ BattleScript_EffectWeatherBall::
goto BattleScript_EffectHit
BattleScript_EffectOverheat::
- setmoveeffect EFFECT_SP_ATK_TWO_DOWN | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_SP_ATK_TWO_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectTickle::
attackcanceler
attackstring
ppreduce
- jumpifstat TARGET, GREATER_THAN, ATK, 0x0, BattleScript_TickleDoMoveAnim
- jumpifstat TARGET, EQUAL, DEF, 0x0, BattleScript_CantLowerMultipleStats
+ jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_ATK, 0x0, BattleScript_TickleDoMoveAnim
+ jumpifstat BS_TARGET, CMP_EQUAL, STAT_DEF, 0x0, BattleScript_CantLowerMultipleStats
BattleScript_TickleDoMoveAnim::
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation TARGET, 0x6, 0x5
- playstatchangeanimation TARGET, 0x2, 0x1
- setstatchanger ATK, 1, TRUE
+ playstatchangeanimation BS_TARGET, 0x6, 0x5
+ playstatchangeanimation BS_TARGET, 0x2, 0x1
+ setstatchanger STAT_ATK, 1, TRUE
statbuffchange 0x1, BattleScript_TickleTryLowerDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleTryLowerDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleTryLowerDef
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_TickleTryLowerDef::
- playstatchangeanimation TARGET, 0x4, 0x1
- setstatchanger DEF, 1, TRUE
+ playstatchangeanimation BS_TARGET, 0x4, 0x1
+ setstatchanger STAT_DEF, 1, TRUE
statbuffchange 0x1, BattleScript_TickleEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleEnd
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_TickleEnd::
@@ -2715,22 +2717,22 @@ BattleScript_EffectCosmicPower::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_CosmicPowerDoMoveAnim
- jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, 0xC, BattleScript_CosmicPowerDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_CosmicPowerDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x24, 0x0
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerTrySpDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerTrySpDef
+ playstatchangeanimation BS_ATTACKER, 0x24, 0x0
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CosmicPowerTrySpDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerTrySpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CosmicPowerTrySpDef::
- setstatchanger SPDEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerEnd
+ setstatchanger STAT_SPDEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CosmicPowerEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CosmicPowerEnd::
@@ -2744,22 +2746,22 @@ BattleScript_EffectBulkUp::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_BulkUpDoMoveAnim
- jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 0xC, BattleScript_BulkUpDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_DEF, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_BulkUpDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x6, 0x0
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpTryDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpTryDef
+ playstatchangeanimation BS_ATTACKER, 0x6, 0x0
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_BulkUpTryDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpTryDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_BulkUpTryDef::
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpEnd
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_BulkUpEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_BulkUpEnd::
@@ -2769,22 +2771,22 @@ BattleScript_EffectCalmMind::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_CalmMindDoMoveAnim
- jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 0xC, BattleScript_CalmMindDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_CalmMindDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x30, 0x0
- setstatchanger SPATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindTrySpDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindTrySpDef
+ playstatchangeanimation BS_ATTACKER, 0x30, 0x0
+ setstatchanger STAT_SPATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CalmMindTrySpDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindTrySpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CalmMindTrySpDef::
- setstatchanger SPDEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindEnd
+ setstatchanger STAT_SPDEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CalmMindEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CalmMindEnd::
@@ -2801,22 +2803,22 @@ BattleScript_EffectDragonDance::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_DragonDanceDoMoveAnim
- jumpifstat ATTACKER, EQUAL, SPEED, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 0xC, BattleScript_DragonDanceDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_DragonDanceDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0xA, 0x0
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceTrySpeed
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceTrySpeed
+ playstatchangeanimation BS_ATTACKER, 0xA, 0x0
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_DragonDanceTrySpeed
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceTrySpeed
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_DragonDanceTrySpeed::
- setstatchanger SPEED, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceEnd
+ setstatchanger STAT_SPEED, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_DragonDanceEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_DragonDanceEnd::
@@ -2834,85 +2836,85 @@ BattleScript_EffectCamouflage::
goto BattleScript_MoveEnd
BattleScript_FaintAttacker::
- playfaintcry ATTACKER
+ playfaintcry BS_ATTACKER
pause 0x40
- dofaintanimation ATTACKER
- cleareffectsonfaint ATTACKER
+ dofaintanimation BS_ATTACKER
+ cleareffectsonfaint BS_ATTACKER
printstring STRINGID_ATTACKERFAINTED
return
BattleScript_FaintTarget::
- playfaintcry TARGET
+ playfaintcry BS_TARGET
pause 0x40
- dofaintanimation TARGET
- cleareffectsonfaint TARGET
+ dofaintanimation BS_TARGET
+ cleareffectsonfaint BS_TARGET
printstring STRINGID_TARGETFAINTED
return
BattleScript_GiveExp::
setbyte sGIVEEXP_STATE, 0x0
- getexp TARGET
+ getexp BS_TARGET
end2
BattleScript_HandleFaintedMon::
atk24 BattleScript_82DA8F6
- jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
+ jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChooseAnother
- jumpifword NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonTryChooseAnother
+ jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonTryChooseAnother
printstring STRINGID_USENEXTPKMN
setbyte gBattleCommunication, 0x0
yesnobox
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x0, BattleScript_FaintedMonTryChooseAnother
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x0, BattleScript_FaintedMonTryChooseAnother
jumpifplayerran BattleScript_FaintedMonEnd
printstring STRINGID_CANTESCAPE2
BattleScript_FaintedMonTryChooseAnother::
openpartyscreen 0x3, BattleScript_FaintedMonEnd
- switchhandleorder GBANK_1, 0x2
+ switchhandleorder BS_FAINTED, 0x2
jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_x2000000, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonChooseAnother
- jumpifbyte EQUAL, sBATTLE_STYLE, 0x1, BattleScript_FaintedMonChooseAnother
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonChooseAnother
+ jumpifbyte CMP_EQUAL, sBATTLE_STYLE, 0x1, BattleScript_FaintedMonChooseAnother
jumpifcantswitch 11, BattleScript_FaintedMonChooseAnother
printstring STRINGID_ENEMYABOUTTOSWITCHPKMN
setbyte gBattleCommunication, 0x0
yesnobox
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x1, BattleScript_FaintedMonChooseAnother
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x1, BattleScript_FaintedMonChooseAnother
setatktoplayer0
openpartyscreen 0x81, BattleScript_FaintedMonChooseAnother
- switchhandleorder ATTACKER, 0x2
- jumpifbyte EQUAL, gBattleCommunication, 0x6, BattleScript_FaintedMonChooseAnother
+ switchhandleorder BS_ATTACKER, 0x2
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x6, BattleScript_FaintedMonChooseAnother
atknameinbuff1
- resetintrimidatetracebits ATTACKER
- hpthresholds2 ATTACKER
+ resetintrimidatetracebits BS_ATTACKER
+ hpthresholds2 BS_ATTACKER
printstring STRINGID_RETURNMON
- switchoutabilities ATTACKER
+ switchoutabilities BS_ATTACKER
waitstate
returnatktoball
waitstate
- drawpartystatussummary ATTACKER
- getswitchedmondata ATTACKER
- switchindataupdate ATTACKER
- hpthresholds ATTACKER
+ drawpartystatussummary BS_ATTACKER
+ getswitchedmondata BS_ATTACKER
+ switchindataupdate BS_ATTACKER
+ hpthresholds BS_ATTACKER
printstring STRINGID_SWITCHINMON
- atk62 ATTACKER
- switchinanim ATTACKER, 0x0
+ atk62 BS_ATTACKER
+ switchinanim BS_ATTACKER, 0x0
waitstate
- switchineffects ATTACKER
+ switchineffects BS_ATTACKER
resetsentmonsvalue
BattleScript_FaintedMonChooseAnother::
- drawpartystatussummary GBANK_1
- getswitchedmondata GBANK_1
- switchindataupdate GBANK_1
- hpthresholds GBANK_1
+ drawpartystatussummary BS_FAINTED
+ getswitchedmondata BS_FAINTED
+ switchindataupdate BS_FAINTED
+ hpthresholds BS_FAINTED
printstring STRINGID_SWITCHINMON
- atk62 GBANK_1
- switchinanim GBANK_1, FALSE
+ atk62 BS_FAINTED
+ switchinanim BS_FAINTED, FALSE
waitstate
- various7 ATTACKER
- switchineffects GBANK_1
+ various7 BS_ATTACKER
+ switchineffects BS_FAINTED
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonEnd
cancelallactions
BattleScript_FaintedMonEnd::
@@ -2921,21 +2923,21 @@ BattleScript_FaintedMonEnd::
BattleScript_82DA8F6::
openpartyscreen 0x5, BattleScript_82DA8FC
BattleScript_82DA8FC::
- switchhandleorder GBANK_1, 0x0
+ switchhandleorder BS_FAINTED, 0x0
openpartyscreen 0x6, BattleScript_82DA92C
- switchhandleorder GBANK_1, 0x0
+ switchhandleorder BS_FAINTED, 0x0
BattleScript_82DA908::
- switchhandleorder GBANK_1, 0x3
- drawpartystatussummary GBANK_1
- getswitchedmondata GBANK_1
- switchindataupdate GBANK_1
- hpthresholds GBANK_1
+ switchhandleorder BS_FAINTED, 0x3
+ drawpartystatussummary BS_FAINTED
+ getswitchedmondata BS_FAINTED
+ switchindataupdate BS_FAINTED
+ hpthresholds BS_FAINTED
printstring STRINGID_SWITCHINMON
- atk62 GBANK_1
- switchinanim GBANK_1, FALSE
+ atk62 BS_FAINTED
+ switchinanim BS_FAINTED, FALSE
waitstate
switchineffects 5
- jumpifbytenotequal gBank1, gBattlersCount, BattleScript_82DA908
+ jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_82DA908
BattleScript_82DA92C::
end2
@@ -2946,13 +2948,13 @@ BattleScript_LocalTrainerBattleWon::
BattleScript_LocalTwoTrainersDefeated::
printstring STRINGID_TWOENEMIESDEFEATED
BattleScript_LocalBattleWonLoseTexts::
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1LOSETEXT
jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleWonReward
trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2LOSETEXT
BattleScript_LocalBattleWonReward::
@@ -2969,7 +2971,7 @@ BattleScript_LocalBattleLost::
jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText
jumpifbattletype BATTLE_TYPE_x4000000, BattleScript_LocalBattleLostPrintTrainersWinText
jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd
- jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd
+ jumpifhalfword CMP_EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd
BattleScript_LocalBattleLostPrintWhiteOut::
printstring STRINGID_PLAYERWHITEOUT
waitmessage 0x40
@@ -2978,14 +2980,14 @@ BattleScript_LocalBattleLostPrintWhiteOut::
BattleScript_LocalBattleLostEnd::
end2
BattleScript_CheckDomeDrew::
- jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_LocalBattleLostEnd_
+ jumpifbyte CMP_EQUAL, gBattleOutcome, B_OUTCOME_DREW, BattleScript_LocalBattleLostEnd_
BattleScript_LocalBattleLostPrintTrainersWinText::
jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostPrintWhiteOut
- returnopponentmon1toball ATTACKER
+ returnopponentmon1toball BS_ATTACKER
waitstate
- returnopponentmon2toball ATTACKER
+ returnopponentmon2toball BS_ATTACKER
waitstate
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1WINTEXT
jumpifbattletype BATTLE_TYPE_x800000, BattleScript_LocalBattleLostDoTrainer2WinText
@@ -2993,23 +2995,23 @@ BattleScript_LocalBattleLostPrintTrainersWinText::
BattleScript_LocalBattleLostDoTrainer2WinText::
trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2WINTEXT
BattleScript_LocalBattleLostEnd_::
end2
BattleScript_82DAA0B::
- returnopponentmon1toball ATTACKER
+ returnopponentmon1toball BS_ATTACKER
waitstate
- returnopponentmon2toball ATTACKER
+ returnopponentmon2toball BS_ATTACKER
waitstate
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1WINTEXT
trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2WINTEXT
jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA31
@@ -3029,15 +3031,15 @@ BattleScript_LinkBattleWonOrLostWaitEnd::
end2
BattleScript_82DAA5C::
- playtrainerdefeatbgm ATTACKER
+ playtrainerdefeatbgm BS_ATTACKER
printstring STRINGID_BATTLEEND
waitmessage 0x40
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1LOSETEXT
trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2LOSETEXT
jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA83
@@ -3054,13 +3056,13 @@ BattleScript_FrontierTrainerBattleWon::
BattleScript_82DAAAB::
printstring STRINGID_TWOENEMIESDEFEATED
BattleScript_82DAAAE::
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1LOSETEXT
jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAACB
trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2LOSETEXT
BattleScript_82DAACB::
@@ -3070,7 +3072,7 @@ BattleScript_82DAADA::
end2
BattleScript_SmokeBallEscape::
- playanimation ATTACKER, ANIM_SMOKEBALL_ESCAPE, NULL
+ playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE, NULL
printstring STRINGID_PKMNFLEDUSINGITS
waitmessage 0x40
end2
@@ -3108,7 +3110,7 @@ BattleScript_PrintFullBox::
endselectionscript
BattleScript_ActionSwitch::
- hpthresholds2 ATTACKER
+ hpthresholds2 BS_ATTACKER
printstring STRINGID_RETURNMON
setbyte sDMG_MULTIPLIER, 0x2
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_PursuitSwitchDmgSetMultihit
@@ -3124,20 +3126,20 @@ BattleScript_PursuitSwitchDmgLoop::
atk5F
BattleScript_DoSwitchOut::
decrementmultihit BattleScript_PursuitSwitchDmgLoop
- switchoutabilities ATTACKER
+ switchoutabilities BS_ATTACKER
waitstate
returnatktoball
waitstate
- drawpartystatussummary ATTACKER
- switchhandleorder ATTACKER, 0x1
- getswitchedmondata ATTACKER
- switchindataupdate ATTACKER
- hpthresholds ATTACKER
+ drawpartystatussummary BS_ATTACKER
+ switchhandleorder BS_ATTACKER, 0x1
+ getswitchedmondata BS_ATTACKER
+ switchindataupdate BS_ATTACKER
+ hpthresholds BS_ATTACKER
printstring STRINGID_SWITCHINMON
- atk62 ATTACKER
- switchinanim ATTACKER, FALSE
+ atk62 BS_ATTACKER
+ switchinanim BS_ATTACKER, FALSE
waitstate
- switchineffects ATTACKER
+ switchineffects BS_ATTACKER
setbyte sMOVEEND_STATE, 0x4
moveend 0x1, 0x0
setbyte sMOVEEND_STATE, 0xF
@@ -3155,21 +3157,21 @@ BattleScript_PursuitDmgOnSwitchOut::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x3
moveend 0x2, 0x6
- various4 TARGET
- jumpifbyte EQUAL, gBattleCommunication, 0x0, BattleScript_PursuitDmgOnSwitchOutRet
+ various4 BS_TARGET
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x0, BattleScript_PursuitDmgOnSwitchOutRet
setbyte sGIVEEXP_STATE, 0x0
- getexp TARGET
+ getexp BS_TARGET
BattleScript_PursuitDmgOnSwitchOutRet::
return
@@ -3209,7 +3211,7 @@ BattleScript_LearnedNewMove::
fanfare MUS_FANFA1
printstring STRINGID_PKMNLEARNEDMOVE
waitmessage 0x40
- updatechoicemoveonlvlup ATTACKER
+ updatechoicemoveonlvlup BS_ATTACKER
goto BattleScript_TryLearnMoveLoop
BattleScript_LearnMoveReturn::
return
@@ -3217,31 +3219,31 @@ BattleScript_LearnMoveReturn::
BattleScript_RainContinuesOrEnds::
printfromtable gRainContinuesStringIds
waitmessage 0x40
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_RainContinuesOrEndsEnd
- playanimation ATTACKER, ANIM_RAIN_CONTINUES, NULL
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_RainContinuesOrEndsEnd
+ playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES, NULL
BattleScript_RainContinuesOrEndsEnd::
end2
BattleScript_DamagingWeatherContinues::
printfromtable gSandStormHailContinuesStringIds
waitmessage 0x40
- playanimation2 ATTACKER, sANIM_ARG1, NULL
+ playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
setbyte gBattleCommunication, 0x0
BattleScript_DamagingWeatherLoop::
copyarraywithindex gBattlerAttacker, gBattleTurnOrder, gBattleCommunication, 0x1
weatherdamage
- jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement
+ jumpifword CMP_EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement
printfromtable gSandStormHailDmgStringIds
waitmessage 0x40
orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE
effectivenesssound
- hitanimation ATTACKER
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ hitanimation BS_ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
atk24 BattleScript_DamagingWeatherLoopIncrement
BattleScript_DamagingWeatherLoopIncrement::
- jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
+ jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
addbyte gBattleCommunication, 0x1
jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop
BattleScript_DamagingWeatherContinuesEnd::
@@ -3256,7 +3258,7 @@ BattleScript_SandStormHailEnds::
BattleScript_SunlightContinues::
printstring STRINGID_SUNLIGHTSTRONG
waitmessage 0x40
- playanimation ATTACKER, ANIM_SUN_CONTINUES, NULL
+ playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES, NULL
end2
BattleScript_SunlightFaded::
@@ -3267,7 +3269,7 @@ BattleScript_SunlightFaded::
BattleScript_OverworldWeatherStarts::
printfromtable gWeatherContinuesStringIds
waitmessage 0x40
- playanimation2 ATTACKER, sANIM_ARG1, NULL
+ playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
end3
BattleScript_SideStatusWoreOff::
@@ -3288,12 +3290,12 @@ BattleScript_SafeguardEnds::
end2
BattleScript_LeechSeedTurnDrain::
- playanimation ATTACKER, ANIM_LEECH_SEED_DRAIN, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_LEECH_SEED_DRAIN, sB_ANIM_ARG1
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
copyword gBattleMoveDamage, gHpDealt
- jumpifability ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedTurnPrintLiquidOoze
+ jumpifability BS_ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedTurnPrintLiquidOoze
manipulatedamage ATK80_DMG_CHANGE_SIGN
setbyte cMULTISTRING_CHOOSER, 0x3
goto BattleScript_LeechSeedTurnPrintAndUpdateHp
@@ -3301,12 +3303,12 @@ BattleScript_LeechSeedTurnPrintLiquidOoze::
setbyte cMULTISTRING_CHOOSER, 0x4
BattleScript_LeechSeedTurnPrintAndUpdateHp::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printfromtable gLeechSeedStringIds
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
end2
BattleScript_BideStoringEnergy::
@@ -3316,8 +3318,8 @@ BattleScript_BideStoringEnergy::
BattleScript_BideAttack::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ clearstatusfromeffect BS_ATTACKER
printstring STRINGID_PKMNUNLEASHEDENERGY
waitmessage 0x40
accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE
@@ -3325,23 +3327,23 @@ BattleScript_BideAttack::
bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
copyword gBattleMoveDamage, sBIDE_DMG
adjustsetdamage
- setbyte sANIM_TURN, 0x1
+ setbyte sB_ANIM_TURN, 0x1
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_BideNoEnergyToAttack::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ clearstatusfromeffect BS_ATTACKER
printstring STRINGID_PKMNUNLEASHEDENERGY
waitmessage 0x40
goto BattleScript_ButItFailed
@@ -3349,20 +3351,20 @@ BattleScript_BideNoEnergyToAttack::
BattleScript_SuccessForceOut::
attackanimation
waitanimation
- switchoutabilities TARGET
- returntoball TARGET
+ switchoutabilities BS_TARGET
+ returntoball BS_TARGET
waitstate
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_TrainerBattleForceOut
- setoutcomeonteleport ATTACKER
+ setoutcomeonteleport BS_ATTACKER
finishaction
BattleScript_TrainerBattleForceOut::
- getswitchedmondata TARGET
- switchindataupdate TARGET
- switchinanim TARGET, FALSE
+ getswitchedmondata BS_TARGET
+ switchindataupdate BS_TARGET
+ switchinanim BS_TARGET, FALSE
waitstate
printstring STRINGID_PKMNWASDRAGGEDOUT
- switchineffects TARGET
+ switchineffects BS_TARGET
goto BattleScript_MoveEnd
BattleScript_MistProtected::
@@ -3406,55 +3408,55 @@ BattleScript_DestinyBondTakesLife::
printstring STRINGID_PKMNTOOKFOE
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
return
BattleScript_SpikesOnAttacker::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
call BattleScript_PrintHurtBySpikes
- tryfaintmon ATTACKER, FALSE, NULL
- tryfaintmon ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted
+ tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted
return
BattleScript_SpikesOnAttackerFainted::
setbyte sGIVEEXP_STATE, 0x0
- getexp ATTACKER
+ getexp BS_ATTACKER
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
goto BattleScript_HandleFaintedMon
BattleScript_SpikesOnTarget::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
call BattleScript_PrintHurtBySpikes
- tryfaintmon TARGET, FALSE, NULL
- tryfaintmon TARGET, TRUE, BattleScript_SpikesOnTargetFainted
+ tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, TRUE, BattleScript_SpikesOnTargetFainted
return
BattleScript_SpikesOnTargetFainted::
setbyte sGIVEEXP_STATE, 0x0
- getexp TARGET
+ getexp BS_TARGET
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
goto BattleScript_HandleFaintedMon
-BattleScript_SpikesOngBank1::
+BattleScript_SpikesOnFaintedBattler::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate GBANK_1
- datahpupdate GBANK_1
+ healthbarupdate BS_FAINTED
+ datahpupdate BS_FAINTED
call BattleScript_PrintHurtBySpikes
- tryfaintmon GBANK_1, FALSE, NULL
- tryfaintmon GBANK_1, TRUE, BattleScript_SpikesOngBank1Fainted
+ tryfaintmon BS_FAINTED, FALSE, NULL
+ tryfaintmon BS_FAINTED, TRUE, BattleScript_SpikesOnFaintedBattlerFainted
return
-BattleScript_SpikesOngBank1Fainted::
+BattleScript_SpikesOnFaintedBattlerFainted::
setbyte sGIVEEXP_STATE, 0x0
- getexp GBANK_1
+ getexp BS_FAINTED
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
goto BattleScript_HandleFaintedMon
@@ -3468,9 +3470,9 @@ BattleScript_PerishSongTakesLife::
printstring STRINGID_PKMNPERISHCOUNTFELL
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
end2
BattleScript_PerishSongCountGoesDown::
@@ -3479,36 +3481,36 @@ BattleScript_PerishSongCountGoesDown::
end2
BattleScript_AllStatsUp::
- jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, LESS_THAN, SPEED, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_AllStatsUpRet
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPEED, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 0xC, BattleScript_AllStatsUpRet
BattleScript_AllStatsUpAtk::
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x3E, 0x0
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpDef
+ playstatchangeanimation BS_ATTACKER, 0x3E, 0x0
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpDef::
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpeed
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpeed
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpSpeed::
- setstatchanger SPEED, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpAtk
+ setstatchanger STAT_SPEED, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpAtk
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpSpAtk::
- setstatchanger SPATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpDef
+ setstatchanger STAT_SPATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpSpDef::
- setstatchanger SPDEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpRet
+ setstatchanger STAT_SPDEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpRet
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpRet::
@@ -3537,27 +3539,27 @@ BattleScript_SpikesFree::
BattleScript_MonTookFutureAttack::
printstring STRINGID_PKMNTOOKATTACK
waitmessage 0x40
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_CheckDoomDesireMiss
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_CheckDoomDesireMiss
accuracycheck BattleScript_FutureAttackMiss, MOVE_FUTURE_SIGHT
goto BattleScript_FutureAttackAnimate
BattleScript_CheckDoomDesireMiss::
accuracycheck BattleScript_FutureAttackMiss, MOVE_DOOM_DESIRE
BattleScript_FutureAttackAnimate::
adjustnormaldamage2
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_FutureHitAnimDoomDesire
- playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_FutureHitAnimDoomDesire
+ playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT, NULL
goto BattleScript_DoFutureAttackHit
BattleScript_FutureHitAnimDoomDesire::
- playanimation ATTACKER, ANIM_DOOM_DESIRE_HIT, NULL
+ playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT, NULL
BattleScript_DoFutureAttackHit::
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
atk24 BattleScript_FutureAttackEnd
BattleScript_FutureAttackEnd::
setbyte sMOVEEND_STATE, 0x0
@@ -3619,12 +3621,12 @@ BattleScript_SelectingNotAllowedMoveTauntInPalace::
BattleScript_WishComesTrue::
trywish 0x1, BattleScript_WishButFullHp
- playanimation TARGET, ANIM_WISH_HEAL, NULL
+ playanimation BS_TARGET, B_ANIM_WISH_HEAL, NULL
printstring STRINGID_PKMNWISHCAMETRUE
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage 0x40
end2
@@ -3638,12 +3640,12 @@ BattleScript_WishButFullHp::
end2
BattleScript_IngrainTurnHeal::
- playanimation ATTACKER, ANIM_INGRAIN_HEAL, NULL
+ playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL, NULL
printstring STRINGID_PKMNABSORBEDNUTRIENTS
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
end2
BattleScript_PrintMonIsRooted::
@@ -3654,25 +3656,25 @@ BattleScript_PrintMonIsRooted::
BattleScript_AtkDefDown::
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x6, 0xD
- playstatchangeanimation ATTACKER, 0x2, 0x9
- setstatchanger ATK, 1, TRUE
- statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB144
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144
+ playstatchangeanimation BS_ATTACKER, 0x6, 0xD
+ playstatchangeanimation BS_ATTACKER, 0x2, 0x9
+ setstatchanger STAT_ATK, 1, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | 0x1, BattleScript_82DB144
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DB144::
- playstatchangeanimation ATTACKER, 0x4, 0x9
- setstatchanger DEF, 1, TRUE
- statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB167
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167
+ playstatchangeanimation BS_ATTACKER, 0x4, 0x9
+ setstatchanger STAT_DEF, 1, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | 0x1, BattleScript_82DB167
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DB167::
return
BattleScript_KnockedOff::
- playanimation TARGET, ANIM_ITEM_KNOCKOFF, NULL
+ playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF, NULL
printstring STRINGID_PKMNKNOCKEDOFF
waitmessage 0x40
return
@@ -3702,14 +3704,14 @@ BattleScript_MagicCoatBounce::
printstring STRINGID_PKMNMOVEBOUNCED
waitmessage 0x40
orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000
- setmagiccoattarget ATTACKER
+ setmagiccoattarget BS_ATTACKER
return
BattleScript_SnatchedMove::
attackstring
ppreduce
snatchsetbanks
- playanimation TARGET, ANIM_SNATCH_MOVE, NULL
+ playanimation BS_TARGET, B_ANIM_SNATCH_MOVE, NULL
printstring STRINGID_PKMNSNATCHEDMOVE
waitmessage 0x40
orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000
@@ -3728,10 +3730,10 @@ BattleScript_OneHitKOMsg::
BattleScript_SAtkDown2::
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x10, 0xB
- setstatchanger SPATK, 2, TRUE
- statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB1FE
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE
+ playstatchangeanimation BS_ATTACKER, 0x10, 0xB
+ setstatchanger STAT_SPATK, 2, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | 0x1, BattleScript_82DB1FE
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DB1FE::
@@ -3740,7 +3742,7 @@ BattleScript_82DB1FE::
BattleScript_FocusPunchSetUp::
printstring STRINGID_EMPTYSTRING3
waitmessage 0x1
- playanimation ATTACKER, ANIM_x14, NULL
+ playanimation BS_ATTACKER, B_ANIM_x14, NULL
printstring STRINGID_PKMNTIGHTENINGFOCUS
waitmessage 0x40
end2
@@ -3748,32 +3750,32 @@ BattleScript_FocusPunchSetUp::
BattleScript_MoveUsedIsAsleep::
printstring STRINGID_PKMNFASTASLEEP
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedWokeUp::
bicword gHitMarker, HITMARKER_x10
printfromtable gWokeUpStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
return
BattleScript_MonWokeUpInUproar::
printstring STRINGID_PKMNWOKEUPINUPROAR
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
end2
BattleScript_PoisonTurnDmg::
printstring STRINGID_PKMNHURTBYPOISON
waitmessage 0x40
BattleScript_DoStatusTurnDmg::
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
BattleScript_DoTurnDmg::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
atk24 BattleScript_DoTurnDmgEnd
BattleScript_DoTurnDmgEnd::
end2
@@ -3786,26 +3788,26 @@ BattleScript_BurnTurnDmg::
BattleScript_MoveUsedIsFrozen::
printstring STRINGID_PKMNISFROZEN
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedUnfroze::
printfromtable gGotDefrostedStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
return
BattleScript_DefrostedViaFireMove::
printstring STRINGID_PKMNWASDEFROSTED
waitmessage 0x40
- updatestatusicon TARGET
+ updatestatusicon BS_TARGET
return
BattleScript_MoveUsedIsParalyzed::
printstring STRINGID_PKMNISPARALYZED
waitmessage 0x40
- statusanimation ATTACKER
- cancelmultiturnmoves ATTACKER
+ statusanimation BS_ATTACKER
+ cancelmultiturnmoves BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedFlinched::
@@ -3819,7 +3821,7 @@ BattleScript_PrintUproarOverTurns::
end2
BattleScript_ThrashConfuses::
- chosenstatus2animation ATTACKER, STATUS2_CONFUSION
+ chosenstatus2animation BS_ATTACKER, STATUS2_CONFUSION
printstring STRINGID_PKMNFATIGUECONFUSION
waitmessage 0x40
end2
@@ -3827,22 +3829,22 @@ BattleScript_ThrashConfuses::
BattleScript_MoveUsedIsConfused::
printstring STRINGID_PKMNISCONFUSED
waitmessage 0x40
- status2animation ATTACKER, STATUS2_CONFUSION
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_MoveUsedIsConfusedRet
+ status2animation BS_ATTACKER, STATUS2_CONFUSION
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_MoveUsedIsConfusedRet
BattleScript_DoSelfConfusionDmg::
- cancelmultiturnmoves ATTACKER
+ cancelmultiturnmoves BS_ATTACKER
adjustnormaldamage2
printstring STRINGID_ITHURTCONFUSION
waitmessage 0x40
effectivenesssound
- hitanimation ATTACKER
+ hitanimation BS_ATTACKER
waitstate
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
resultmessage
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_MoveUsedIsConfusedRet::
return
@@ -3858,7 +3860,7 @@ BattleScript_PrintPayDayMoneyString::
return
BattleScript_WrapTurnDmg::
- playanimation ATTACKER, ANIM_TURN_TRAP, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_TURN_TRAP, sB_ANIM_ARG1
printstring STRINGID_PKMNHURTBY
waitmessage 0x40
goto BattleScript_DoTurnDmg
@@ -3871,7 +3873,7 @@ BattleScript_WrapEnds::
BattleScript_MoveUsedIsInLove::
printstring STRINGID_PKMNINLOVE
waitmessage 0x40
- status2animation ATTACKER, STATUS2_INFATUATION
+ status2animation BS_ATTACKER, STATUS2_INFATUATION
return
BattleScript_MoveUsedIsParalyzedCantAttack::
@@ -3882,59 +3884,59 @@ BattleScript_MoveUsedIsParalyzedCantAttack::
BattleScript_NightmareTurnDmg::
printstring STRINGID_PKMNLOCKEDINNIGHTMARE
waitmessage 0x40
- status2animation ATTACKER, STATUS2_NIGHTMARE
+ status2animation BS_ATTACKER, STATUS2_NIGHTMARE
goto BattleScript_DoTurnDmg
BattleScript_CurseTurnDmg::
printstring STRINGID_PKMNAFFLICTEDBYCURSE
waitmessage 0x40
- status2animation ATTACKER, STATUS2_CURSED
+ status2animation BS_ATTACKER, STATUS2_CURSED
goto BattleScript_DoTurnDmg
BattleScript_TargetPRLZHeal::
printstring STRINGID_PKMNHEALEDPARALYSIS
waitmessage 0x40
- updatestatusicon TARGET
+ updatestatusicon BS_TARGET
return
BattleScript_MoveEffectSleep::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gFellAsleepStringIds
waitmessage 0x40
BattleScript_UpdateEffectStatusIconRet::
- updatestatusicon EFFECT_BANK
+ updatestatusicon BS_EFFECT_BATTLER
waitstate
return
BattleScript_YawnMakesAsleep::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printstring STRINGID_PKMNFELLASLEEP
waitmessage 0x40
- updatestatusicon EFFECT_BANK
+ updatestatusicon BS_EFFECT_BATTLER
waitstate
- makevisible EFFECT_BANK
+ makevisible BS_EFFECT_BATTLER
end2
BattleScript_MoveEffectPoison::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotPoisonedStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
BattleScript_MoveEffectBurn::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotBurnedStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
BattleScript_MoveEffectFreeze::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotFrozenStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
BattleScript_MoveEffectParalysis::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotParalyzedStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
@@ -3945,7 +3947,7 @@ BattleScript_MoveEffectUproar::
return
BattleScript_MoveEffectToxic::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printstring STRINGID_PKMNBADLYPOISONED
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
@@ -3961,26 +3963,26 @@ BattleScript_MoveEffectWrap::
return
BattleScript_MoveEffectConfusion::
- chosenstatus2animation EFFECT_BANK, STATUS2_CONFUSION
+ chosenstatus2animation BS_EFFECT_BATTLER, STATUS2_CONFUSION
printstring STRINGID_PKMNWASCONFUSED
waitmessage 0x40
return
BattleScript_MoveEffectRecoil33::
jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil33
- jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End
+ jumpifability BS_ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End
BattleScript_DoRecoil33::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHITWITHRECOIL
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
BattleScript_Recoil33End::
return
BattleScript_ItemSteal::
- playanimation TARGET, ANIM_ITEM_STEAL, NULL
+ playanimation BS_TARGET, B_ANIM_ITEM_STEAL, NULL
printstring STRINGID_PKMNSTOLEITEM
waitmessage 0x40
return
@@ -3989,12 +3991,12 @@ BattleScript_DrizzleActivates::
pause 0x20
printstring STRINGID_PKMNMADEITRAIN
waitstate
- playanimation BANK0, ANIM_RAIN_CONTINUES, NULL
+ playanimation BS_BANK_0, B_ANIM_RAIN_CONTINUES, NULL
call BattleScript_WeatherFormChanges
end3
BattleScript_SpeedBoostActivates::
- playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printstring STRINGID_PKMNRAISEDSPEED
waitmessage 0x40
end3
@@ -4009,22 +4011,22 @@ BattleScript_RainDishActivates::
printstring STRINGID_PKMNSXRESTOREDHPALITTLE2
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
end3
BattleScript_SandstreamActivates::
pause 0x20
printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM
waitstate
- playanimation BANK0, ANIM_SANDSTORM_CONTINUES, NULL
+ playanimation BS_BANK_0, B_ANIM_SANDSTORM_CONTINUES, NULL
call BattleScript_WeatherFormChanges
end3
BattleScript_ShedSkinActivates::
printstring STRINGID_PKMNSXCUREDYPROBLEM
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
end3
BattleScript_WeatherFormChanges::
@@ -4054,17 +4056,17 @@ BattleScript_82DB4BE::
pause 0x20
BattleScript_82DB4C1::
setbyte gBattlerTarget, 0x0
- setstatchanger ATK, 1, TRUE
+ setstatchanger STAT_ATK, 1, TRUE
BattleScript_82DB4CD::
trygetintimidatetarget BattleScript_82DB51B
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DB510
- jumpifability TARGET, ABILITY_CLEAR_BODY, BattleScript_82DB51C
- jumpifability TARGET, ABILITY_HYPER_CUTTER, BattleScript_82DB51C
- jumpifability TARGET, ABILITY_WHITE_SMOKE, BattleScript_82DB51C
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_82DB510
+ jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_82DB51C
+ jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_82DB51C
+ jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_82DB51C
statbuffchange 0x21, BattleScript_82DB510
- jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DB510
+ jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DB510
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printstring STRINGID_PKMNCUTSATTACKWITH
waitmessage 0x40
BattleScript_82DB510::
@@ -4083,7 +4085,7 @@ BattleScript_DroughtActivates::
pause 0x20
printstring STRINGID_PKMNSXINTENSIFIEDSUN
waitstate
- playanimation BANK0, ANIM_SUN_CONTINUES, NULL
+ playanimation BS_BANK_0, B_ANIM_SUN_CONTINUES, NULL
call BattleScript_WeatherFormChanges
end3
@@ -4113,8 +4115,8 @@ BattleScript_MoveHPDrain::
attackstring
pause 0x20
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_PKMNRESTOREDHPUSING
waitmessage 0x40
orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE
@@ -4215,15 +4217,15 @@ BattleScript_ColorChangeActivates::
BattleScript_RoughSkinActivates::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHURTSWITH
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
return
BattleScript_CuteCharmActivates::
- status2animation ATTACKER, STATUS2_INFATUATION
+ status2animation BS_ATTACKER, STATUS2_INFATUATION
printstring STRINGID_PKMNSXINFATUATEDY
waitmessage 0x40
return
@@ -4247,7 +4249,7 @@ BattleScript_NoItemSteal::
BattleScript_AbilityCuredStatus::
printstring STRINGID_PKMNSXCUREDITSYPROBLEM
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
return
BattleScript_82DB695::
@@ -4263,9 +4265,9 @@ BattleScript_IgnoresAndUsesRandomMove::
jumptorandomattack FALSE
BattleScript_MoveUsedLoafingAround::
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7
setbyte gBattleCommunication, 0x0
- various24 ATTACKER
+ various24 BS_ATTACKER
setbyte cMULTISTRING_CHOOSER, 0x4
BattleScript_82DB6C7::
printfromtable gInobedientStringIds
@@ -4277,7 +4279,7 @@ BattleScript_82DB6C7::
BattleScript_IgnoresAndFallsAsleep::
printstring STRINGID_PKMNBEGANTONAP
waitmessage 0x40
- setmoveeffect EFFECT_SLEEP | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_SLEEP | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
@@ -4289,7 +4291,7 @@ BattleScript_82DB6F0::
goto BattleScript_DoSelfConfusionDmg
BattleScript_SubstituteFade::
- playanimation TARGET, ANIM_SUBSTITUTE_FADE, NULL
+ playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE, NULL
printstring STRINGID_PKMNSUBSTITUTEFADED
return
@@ -4298,11 +4300,11 @@ BattleScript_BerryCurePrlzEnd2::
end2
BattleScript_BerryCureParRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMCUREDPARALYSIS
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCurePsnEnd2::
@@ -4310,11 +4312,11 @@ BattleScript_BerryCurePsnEnd2::
end2
BattleScript_BerryCurePsnRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMCUREDPOISON
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureBrnEnd2::
@@ -4322,11 +4324,11 @@ BattleScript_BerryCureBrnEnd2::
end2
BattleScript_BerryCureBrnRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMHEALEDBURN
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureFrzEnd2::
@@ -4334,11 +4336,11 @@ BattleScript_BerryCureFrzEnd2::
end2
BattleScript_BerryCureFrzRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMDEFROSTEDIT
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureSlpEnd2::
@@ -4346,11 +4348,11 @@ BattleScript_BerryCureSlpEnd2::
end2
BattleScript_BerryCureSlpRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMWOKEIT
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureConfusionEnd2::
@@ -4358,10 +4360,10 @@ BattleScript_BerryCureConfusionEnd2::
end2
BattleScript_BerryCureConfusionRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMSNAPPEDOUT
waitmessage 0x40
- removeitem SCRIPTING_BANK
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureChosenStatusEnd2::
@@ -4369,11 +4371,11 @@ BattleScript_BerryCureChosenStatusEnd2::
end2
BattleScript_BerryCureChosenStatusRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printfromtable gBerryEffectStringIds
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_WhiteHerbEnd2::
@@ -4381,27 +4383,27 @@ BattleScript_WhiteHerbEnd2::
end2
BattleScript_WhiteHerbRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDSTATUS
waitmessage 0x40
- removeitem SCRIPTING_BANK
+ removeitem BS_SCRIPTING
return
BattleScript_ItemHealHP_RemoveItem::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- removeitem ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_BerryPPHealEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDPP
waitmessage 0x40
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_ItemHealHP_End2::
@@ -4409,12 +4411,12 @@ BattleScript_ItemHealHP_End2::
end2
BattleScript_ItemHealHP_Ret::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
return
BattleScript_SelectingNotAllowedMoveChoiceItem::
@@ -4422,39 +4424,39 @@ BattleScript_SelectingNotAllowedMoveChoiceItem::
endselectionscript
BattleScript_HangedOnMsg::
- playanimation TARGET, ANIM_HANGED_ON, NULL
+ playanimation BS_TARGET, B_ANIM_HANGED_ON, NULL
printstring STRINGID_PKMNHUNGONWITHX
waitmessage 0x40
return
BattleScript_BerryConfuseHealEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_FORXCOMMAYZ
waitmessage 0x40
- setmoveeffect EFFECT_CONFUSION | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_BerryStatRaiseEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
- statbuffchange AFFECTS_USER | 0x1, BattleScript_82DB85B
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_82DB85B
BattleScript_82DB85B::
setbyte cMULTISTRING_CHOOSER, 0x4
call BattleScript_StatUp
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_BerryFocusEnergyEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNUSEDXTOGETPUMPED
waitmessage 0x40
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_ActionSelectionItemsCantBeUsed::
@@ -4468,8 +4470,8 @@ BattleScript_82DB87D::
BattleScript_82DB881::
setbyte gBattleCommunication + 1, 0x0
BattleScript_82DB887::
- various8 ATTACKER
- jumpifbyte NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D
+ various8 BS_ATTACKER
+ jumpifbyte CMP_NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D
printfromtable gStringIds_85CCF0A
waitmessage 0x40
BattleScript_82DB89D::
@@ -4480,105 +4482,105 @@ BattleScript_82DB89D::
end2
BattleScript_82DB8BE::
- waitcry ATTACKER
- various21 ATTACKER
+ waitcry BS_ATTACKER
+ various21 BS_ATTACKER
playse 0x109
pause 0x8
playse 0x109
- various14 ATTACKER
+ various14 BS_ATTACKER
various16 8
various17 8
pause 0x40
- various15 ATTACKER
- various22 ATTACKER
+ various15 BS_ATTACKER
+ various22 BS_ATTACKER
end2
BattleScript_82DB8E0::
playse SE_PINPON
- various14 ATTACKER
- various16 TARGET
- various17 TARGET
+ various14 BS_ATTACKER
+ various16 BS_TARGET
+ various17 BS_TARGET
pause 0x40
- various15 ATTACKER
+ various15 BS_ATTACKER
end2
BattleScript_82DB8F3::
makevisible 11
waitstate
- makevisible OPPONENT1
+ makevisible BS_OPPONENT1
waitstate
- various21 ATTACKER
+ various21 BS_ATTACKER
playse 0x109
pause 0x8
playse 0x109
pause 0x40
- various14 ATTACKER
- various16 ATTACKER
- various17 ATTACKER
+ various14 BS_ATTACKER
+ various16 BS_ATTACKER
+ various17 BS_ATTACKER
pause 0x40
setbyte gBattleCommunication, 0x0
- various9 ATTACKER
+ various9 BS_ATTACKER
pause 0x40
- various9 ATTACKER
- various16 EFFECT_BANK
- various17 EFFECT_BANK
- various9 ATTACKER
- various16 GBANK_1
- various17 GBANK_1
- various9 ATTACKER
+ various9 BS_ATTACKER
+ various16 BS_EFFECT_BATTLER
+ various17 BS_EFFECT_BATTLER
+ various9 BS_ATTACKER
+ various16 BS_FAINTED
+ various17 BS_FAINTED
+ various9 BS_ATTACKER
various16 0x4
various17 0x4
- various9 ATTACKER
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992
+ various9 BS_ATTACKER
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992
various16 0x5
various17 0x5
- various9 ATTACKER
- various15 ATTACKER
+ various9 BS_ATTACKER
+ various15 BS_ATTACKER
printstring STRINGID_DEFEATEDOPPONENTBYREFEREE
waitmessage 0x40
- playfaintcry OPPONENT1
- waitcry ATTACKER
- dofaintanimation OPPONENT1
- cleareffectsonfaint OPPONENT1
- various10 ATTACKER
+ playfaintcry BS_OPPONENT1
+ waitcry BS_ATTACKER
+ dofaintanimation BS_OPPONENT1
+ cleareffectsonfaint BS_OPPONENT1
+ various10 BS_ATTACKER
end2
BattleScript_82DB973::
various16 0x6
various17 0x6
- various9 ATTACKER
- various15 ATTACKER
+ various9 BS_ATTACKER
+ various15 BS_ATTACKER
printstring STRINGID_LOSTTOOPPONENTBYREFEREE
waitmessage 0x40
playfaintcry 11
- waitcry ATTACKER
+ waitcry BS_ATTACKER
dofaintanimation 11
cleareffectsonfaint 11
- various11 ATTACKER
+ various11 BS_ATTACKER
end2
BattleScript_82DB992::
- various16 BANK0
- various17 BANK0
- various9 ATTACKER
- various15 ATTACKER
+ various16 BS_BANK_0
+ various17 BS_BANK_0
+ various9 BS_ATTACKER
+ various15 BS_ATTACKER
printstring STRINGID_TIEDOPPONENTBYREFEREE
waitmessage 0x40
playfaintcry 11
- waitcry ATTACKER
+ waitcry BS_ATTACKER
dofaintanimation 11
cleareffectsonfaint 11
- playfaintcry OPPONENT1
- waitcry ATTACKER
- dofaintanimation OPPONENT1
- cleareffectsonfaint OPPONENT1
- various12 ATTACKER
+ playfaintcry BS_OPPONENT1
+ waitcry BS_ATTACKER
+ dofaintanimation BS_OPPONENT1
+ cleareffectsonfaint BS_OPPONENT1
+ various12 BS_ATTACKER
end2
BattleScript_AskIfWantsToForfeitMatch::
printselectionstring STRINGID_QUESTIONFORFEITMATCH
- forfeityesnobox ATTACKER
+ forfeityesnobox BS_ATTACKER
endselectionscript
BattleScript_PrintPlayerForfeited::
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 9cd6a4d7d..8020d7c5c 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -1,11 +1,12 @@
+#include "constants/battle.h"
+#include "constants/battle_script_commands.h"
+#include "constants/battle_anim.h"
+#include "constants/battle_string_ids.h"
#include "constants/items.h"
#include "constants/songs.h"
.include "asm/macros.inc"
.include "asm/macros/battle_script.inc"
.include "constants/constants.inc"
- .include "constants/battle_constants.inc"
- .include "constants/battle_script_constants.inc"
- .include "constants/battle_text.inc"
.section script_data, "aw", %progbits
@@ -46,7 +47,7 @@ gBattlescriptsForSafariActions:: @ 82DBD58
.4byte BattleScript_82DBEE3
BattleScript_BallThrow::
- jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
+ jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
printstring STRINGID_PLAYERUSEDITEM
handleballthrow
@@ -56,11 +57,11 @@ BattleScript_BallThrowByWally::
BattleScript_SafariBallThrow::
printstring STRINGID_PLAYERUSEDITEM
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
handleballthrow
BattleScript_SuccessBallThrow::
- jumpifhalfword EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_PrintCaughtMonInfo
+ jumpifhalfword CMP_EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_PrintCaughtMonInfo
incrementgamestat 0xB
BattleScript_PrintCaughtMonInfo::
printstring STRINGID_GOTCHAPKMNCAUGHT
@@ -81,22 +82,22 @@ BattleScript_TryNicknameCaughtMon::
BattleScript_GiveCaughtMonEnd::
givecaughtmon
BattleScript_SuccessBallThrowEnd::
- setbyte gBattleOutcome, CAUGHT
+ setbyte gBattleOutcome, B_OUTCOME_CAUGHT
finishturn
BattleScript_WallyBallThrow::
printstring STRINGID_GOTCHAPKMNCAUGHT2
- setbyte gBattleOutcome, CAUGHT
+ setbyte gBattleOutcome, B_OUTCOME_CAUGHT
finishturn
BattleScript_ShakeBallThrow::
printfromtable gBallEscapeStringIds
waitmessage 0x40
- jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd
- jumpifbyte NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_ShakeBallThrowEnd
+ jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd
+ jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_ShakeBallThrowEnd
printstring STRINGID_OUTOFSAFARIBALLS
waitmessage 0x40
- setbyte gBattleOutcome, OUT_OF_BALLS
+ setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS
BattleScript_ShakeBallThrowEnd::
finishaction
@@ -121,11 +122,11 @@ BattleScript_OpponentUsesHealItem::
waitmessage 0x40
useitemonopponent
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
setbyte sMOVEEND_STATE, 0xF
moveend 0x1, 0x0
finishaction
@@ -139,7 +140,7 @@ BattleScript_OpponentUsesStatusCureItem::
useitemonopponent
printfromtable gTrainerItemCuredStatusStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
setbyte sMOVEEND_STATE, 0xF
moveend 0x1, 0x0
finishaction
@@ -172,7 +173,7 @@ BattleScript_OpponentUsesGuardSpecs::
BattleScript_RunByUsingItem::
playse SE_NIGERU
- setbyte gBattleOutcome, RAN
+ setbyte gBattleOutcome, B_OUTCOME_RAN
finishturn
BattleScript_ActionWatchesCarefully::
@@ -188,7 +189,7 @@ BattleScript_ActionGetNear::
BattleScript_ActionThrowPokeblock::
printstring STRINGID_THREWPOKEBLOCKATPKMN
waitmessage 0x40
- playanimation ATTACKER, ANIM_x4, NULL
+ playanimation BS_ATTACKER, B_ANIM_x4, NULL
printfromtable gSafariPokeblockResultStringIds
waitmessage 0x40
end2
@@ -198,7 +199,7 @@ BattleScript_82DBEE3::
waitmessage 0x40
returnatktoball
waitstate
- trainerslidein TARGET
+ trainerslidein BS_TARGET
waitstate
printstring STRINGID_YOUTHROWABALLNOWRIGHT
waitmessage 0x40
diff --git a/data/battle_tower.s b/data/battle_tower.s
index 9ef2c2d44..2cc0aa639 100644
--- a/data/battle_tower.s
+++ b/data/battle_tower.s
@@ -3,6 +3,7 @@
#include "constants/moves.h"
#include "constants/species.h"
#include "constants/trainers.h"
+#include "constants/pokemon.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/data2b.s b/data/data2b.s
index 4d3126215..b65087d7a 100644
--- a/data/data2b.s
+++ b/data/data2b.s
@@ -2,6 +2,7 @@
#include "constants/moves.h"
#include "constants/species.h"
#include "constants/trainers.h"
+#include "constants/pokemon.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
@@ -21,31 +22,31 @@ gUnknown_082FF2B8:: @ 82FF2B8
.align 2
gUnknown_082FF3A8:: @ 82FF3A8
- .byte 0x00, 0x80, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0x88, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0x90, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0x98, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ obj_frame_tiles gHeap + 0x8000, 0x800
+ obj_frame_tiles gHeap + 0x8800, 0x800
+ obj_frame_tiles gHeap + 0x9000, 0x800
+ obj_frame_tiles gHeap + 0x9800, 0x800
.align 2
gUnknown_082FF3C8:: @ 82FF3C8
- .byte 0x00, 0xa0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xa8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xb0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xb8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ obj_frame_tiles gHeap + 0xA000, 0x800
+ obj_frame_tiles gHeap + 0xA800, 0x800
+ obj_frame_tiles gHeap + 0xB000, 0x800
+ obj_frame_tiles gHeap + 0xB800, 0x800
.align 2
gUnknown_082FF3E8:: @ 82FF3E8
- .byte 0x00, 0xc0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xc8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xd0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xd8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ obj_frame_tiles gHeap + 0xC000, 0x800
+ obj_frame_tiles gHeap + 0xC800, 0x800
+ obj_frame_tiles gHeap + 0xD000, 0x800
+ obj_frame_tiles gHeap + 0xD800, 0x800
.align 2
gUnknown_082FF408:: @ 82FF408
- .byte 0x00, 0xe0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xe8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xf0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
- .byte 0x00, 0xf8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ obj_frame_tiles gHeap + 0xE000, 0x800
+ obj_frame_tiles gHeap + 0xE800, 0x800
+ obj_frame_tiles gHeap + 0xF000, 0x800
+ obj_frame_tiles gHeap + 0xF800, 0x800
.align 2
gUnknown_082FF428:: @ 82FF428
diff --git a/data/data2c.s b/data/data2c.s
index 69254d366..8d134ccb2 100644
--- a/data/data2c.s
+++ b/data/data2c.s
@@ -2,6 +2,7 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/pokemon.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/data2e.s b/data/data2e.s
deleted file mode 100644
index 16aa16087..000000000
--- a/data/data2e.s
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "constants/abilities.h"
-#include "constants/items.h"
-#include "constants/moves.h"
-#include "constants/species.h"
-#include "constants/trainers.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-
-@ 83299EC
- .include "data/graphics/pokemon/front_anim_ids_table.inc"
-
-@ 8329B87
- .include "data/graphics/pokemon/animation_delay_table.inc"
-
- .align 1
-gUnknown_08329D22:: @ 8329D22
-@ Masks for getting PP Up count, also PP Max values
- .byte 0x03, 0x0c, 0x30, 0xc0
-
- .align 1
-gUnknown_08329D26:: @ 8329D26
-@ Masks for setting PP Up count
- .byte 0xfc, 0xf3, 0xcf, 0x3f
-
- .align 1
-gUnknown_08329D2A:: @ 8329D2A
-@ Values added to PP Up count
- .byte 0x01, 0x04, 0x10, 0x40
-
- .align 1
-gStatStageRatios:: @ 8329D2E
- .byte 0x0a, 0x28
- .byte 0x0a, 0x23
- .byte 0x0a, 0x1e
- .byte 0x0a, 0x19
- .byte 0x0a, 0x14
- .byte 0x0a, 0x0f
- .byte 0x0a, 0x0a
- .byte 0x0f, 0x0a
- .byte 0x14, 0x0a
- .byte 0x19, 0x0a
- .byte 0x1e, 0x0a
- .byte 0x23, 0x0a
- .byte 0x28, 0x0a
-
- .align 1
-gUnknown_08329D48:: @ 8329D48
- .2byte 0x0032, 0x005f, 0x005a, 0x00b4, 0x005f, 0x005a
-
- .align 1
-gUnknown_08329D54:: @ 8329D54
- .2byte 0x0003, 0x000a, 0x001b, 0x002b, 0x001e, 0x0043, 0x0042, 0x0019
- .2byte 0x0012, 0x000c, 0x001c, 0x0047, 0x001f, 0x0036, 0x0002, 0x0014
-
- .align 1
-gHoldEffectToType:: @ 8329D74
- .byte 0x1f, 0x06
- .byte 0x2a, 0x08
- .byte 0x2e, 0x04
- .byte 0x2f, 0x05
- .byte 0x30, 0x0c
- .byte 0x31, 0x11
- .byte 0x32, 0x01
- .byte 0x33, 0x0d
- .byte 0x34, 0x0b
- .byte 0x35, 0x02
- .byte 0x36, 0x03
- .byte 0x37, 0x0f
- .byte 0x38, 0x07
- .byte 0x39, 0x0e
- .byte 0x3a, 0x0a
- .byte 0x3b, 0x10
- .byte 0x3c, 0x00
- .byte 0x00, 0x00
-
- .align 2
-gUnknown_08329D98:: @ 8329D98
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3A8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF3C8, gUnknown_082FF694, oac_poke_opponent
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3E8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF408, gUnknown_082FF694, oac_poke_opponent
-
- .align 2
-gUnknown_08329DF8:: @ 8329DF8
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF428, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF448, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF468, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF490, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4B8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4D8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4F8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF518, gUnknown_082FF618, sub_8039BB4
-
-gSecretBaseFacilityClasses:: @ 8329EB8
- .byte FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOLTRAINER_1
- .byte FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_2, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOLTRAINER_2
-
-gUnknown_08329EC2:: @ 8329EC2
- .byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x1e
-
-gUnknown_08329EC8:: @ 8329EC8
- .byte 1, 1, 3, 2, 4, 6
-
-gUnknown_08329ECE:: @ 8329ECE
-@ Happiness deltas
- .byte 0x05, 0x03, 0x02
- .byte 0x05, 0x03, 0x02
- .byte 0x01, 0x01, 0x00
- .byte 0x03, 0x02, 0x01
- .byte 0x01, 0x01, 0x00
- .byte 0x01, 0x01, 0x01
- .byte 0xff, 0xff, 0xff
- .byte 0xfb, 0xfb, 0xf6
- .byte 0xfb, 0xfb, 0xf6
-
- .align 1
-gHMMoves:: @ 8329EEA
- .2byte MOVE_CUT
- .2byte MOVE_FLY
- .2byte MOVE_SURF
- .2byte MOVE_STRENGTH
- .2byte MOVE_FLASH
- .2byte MOVE_ROCK_SMASH
- .2byte MOVE_WATERFALL
- .2byte MOVE_DIVE
- .2byte 0xffff
-
- .align 1
-gAlteringCaveWildMonHeldItems:: @ 8329EFC
- .2byte 0, ITEM_NONE
- .2byte SPECIES_MAREEP, ITEM_GANLON_BERRY
- .2byte SPECIES_PINECO, ITEM_APICOT_BERRY
- .2byte SPECIES_HOUNDOUR, ITEM_BIG_MUSHROOM
- .2byte SPECIES_TEDDIURSA, ITEM_PETAYA_BERRY
- .2byte SPECIES_AIPOM, ITEM_BERRY_JUICE
- .2byte SPECIES_SHUCKLE, ITEM_BERRY_JUICE
- .2byte SPECIES_STANTLER, ITEM_PETAYA_BERRY
- .2byte SPECIES_SMEARGLE, ITEM_SALAC_BERRY
-
- .align 2
-gUnknown_08329F20:: @ 8329F20
- .byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_08329F28:: @ 8329F28
- spr_template 0xffff, 0xffff, gUnknown_08329F20, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
diff --git a/data/graphics/pokemon/animation_delay_table.inc b/data/graphics/pokemon/animation_delay_table.inc
deleted file mode 100644
index be517649b..000000000
--- a/data/graphics/pokemon/animation_delay_table.inc
+++ /dev/null
@@ -1,412 +0,0 @@
-gMonAnimationDelayTable:: @ 8329B87
- .byte 0x00 @ SPECIES_BULBASAUR
- .byte 0x00 @ SPECIES_IVYSAUR
- .byte 0x00 @ SPECIES_VENUSAUR
- .byte 0x00 @ SPECIES_CHARMANDER
- .byte 0x00 @ SPECIES_CHARMELEON
- .byte 0x00 @ SPECIES_CHARIZARD
- .byte 0x00 @ SPECIES_SQUIRTLE
- .byte 0x00 @ SPECIES_WARTORTLE
- .byte 0x32 @ SPECIES_BLASTOISE
- .byte 0x00 @ SPECIES_CATERPIE
- .byte 0x00 @ SPECIES_METAPOD
- .byte 0x00 @ SPECIES_BUTTERFREE
- .byte 0x0a @ SPECIES_WEEDLE
- .byte 0x14 @ SPECIES_KAKUNA
- .byte 0x23 @ SPECIES_BEEDRILL
- .byte 0x00 @ SPECIES_PIDGEY
- .byte 0x19 @ SPECIES_PIDGEOTTO
- .byte 0x00 @ SPECIES_PIDGEOT
- .byte 0x00 @ SPECIES_RATTATA
- .byte 0x00 @ SPECIES_RATICATE
- .byte 0x00 @ SPECIES_SPEAROW
- .byte 0x02 @ SPECIES_FEAROW
- .byte 0x1e @ SPECIES_EKANS
- .byte 0x00 @ SPECIES_ARBOK
- .byte 0x00 @ SPECIES_PIKACHU
- .byte 0x00 @ SPECIES_RAICHU
- .byte 0x00 @ SPECIES_SANDSHREW
- .byte 0x00 @ SPECIES_SANDSLASH
- .byte 0x1c @ SPECIES_NIDORAN_F
- .byte 0x00 @ SPECIES_NIDORINA
- .byte 0x00 @ SPECIES_NIDOQUEEN
- .byte 0x00 @ SPECIES_NIDORAN_M
- .byte 0x00 @ SPECIES_NIDORINO
- .byte 0x19 @ SPECIES_NIDOKING
- .byte 0x00 @ SPECIES_CLEFAIRY
- .byte 0x00 @ SPECIES_CLEFABLE
- .byte 0x00 @ SPECIES_VULPIX
- .byte 0x00 @ SPECIES_NINETALES
- .byte 0x00 @ SPECIES_JIGGLYPUFF
- .byte 0x00 @ SPECIES_WIGGLYTUFF
- .byte 0x00 @ SPECIES_ZUBAT
- .byte 0x00 @ SPECIES_GOLBAT
- .byte 0x00 @ SPECIES_ODDISH
- .byte 0x00 @ SPECIES_GLOOM
- .byte 0x00 @ SPECIES_VILEPLUME
- .byte 0x0a @ SPECIES_PARAS
- .byte 0x2d @ SPECIES_PARASECT
- .byte 0x14 @ SPECIES_VENONAT
- .byte 0x00 @ SPECIES_VENOMOTH
- .byte 0x19 @ SPECIES_DIGLETT
- .byte 0x23 @ SPECIES_DUGTRIO
- .byte 0x28 @ SPECIES_MEOWTH
- .byte 0x14 @ SPECIES_PERSIAN
- .byte 0x00 @ SPECIES_PSYDUCK
- .byte 0x00 @ SPECIES_GOLDUCK
- .byte 0x14 @ SPECIES_MANKEY
- .byte 0x00 @ SPECIES_PRIMEAPE
- .byte 0x1e @ SPECIES_GROWLITHE
- .byte 0x28 @ SPECIES_ARCANINE
- .byte 0x00 @ SPECIES_POLIWAG
- .byte 0x05 @ SPECIES_POLIWHIRL
- .byte 0x00 @ SPECIES_POLIWRATH
- .byte 0x00 @ SPECIES_ABRA
- .byte 0x00 @ SPECIES_KADABRA
- .byte 0x00 @ SPECIES_ALAKAZAM
- .byte 0x00 @ SPECIES_MACHOP
- .byte 0x00 @ SPECIES_MACHOKE
- .byte 0x00 @ SPECIES_MACHAMP
- .byte 0x00 @ SPECIES_BELLSPROUT
- .byte 0x03 @ SPECIES_WEEPINBELL
- .byte 0x00 @ SPECIES_VICTREEBEL
- .byte 0x00 @ SPECIES_TENTACOOL
- .byte 0x00 @ SPECIES_TENTACRUEL
- .byte 0x00 @ SPECIES_GEODUDE
- .byte 0x00 @ SPECIES_GRAVELER
- .byte 0x00 @ SPECIES_GOLEM
- .byte 0x00 @ SPECIES_PONYTA
- .byte 0x00 @ SPECIES_RAPIDASH
- .byte 0x00 @ SPECIES_SLOWPOKE
- .byte 0x00 @ SPECIES_SLOWBRO
- .byte 0x00 @ SPECIES_MAGNEMITE
- .byte 0x00 @ SPECIES_MAGNETON
- .byte 0x00 @ SPECIES_FARFETCHD
- .byte 0x00 @ SPECIES_DODUO
- .byte 0x00 @ SPECIES_DODRIO
- .byte 0x00 @ SPECIES_SEEL
- .byte 0x00 @ SPECIES_DEWGONG
- .byte 0x00 @ SPECIES_GRIMER
- .byte 0x2d @ SPECIES_MUK
- .byte 0x14 @ SPECIES_SHELLDER
- .byte 0x00 @ SPECIES_CLOYSTER
- .byte 0x00 @ SPECIES_GASTLY
- .byte 0x17 @ SPECIES_HAUNTER
- .byte 0x00 @ SPECIES_GENGAR
- .byte 0x00 @ SPECIES_ONIX
- .byte 0x30 @ SPECIES_DROWZEE
- .byte 0x28 @ SPECIES_HYPNO
- .byte 0x00 @ SPECIES_KRABBY
- .byte 0x00 @ SPECIES_KINGLER
- .byte 0x00 @ SPECIES_VOLTORB
- .byte 0x00 @ SPECIES_ELECTRODE
- .byte 0x00 @ SPECIES_EXEGGCUTE
- .byte 0x00 @ SPECIES_EXEGGUTOR
- .byte 0x00 @ SPECIES_CUBONE
- .byte 0x00 @ SPECIES_MAROWAK
- .byte 0x00 @ SPECIES_HITMONLEE
- .byte 0x19 @ SPECIES_HITMONCHAN
- .byte 0x00 @ SPECIES_LICKITUNG
- .byte 0x00 @ SPECIES_KOFFING
- .byte 0x00 @ SPECIES_WEEZING
- .byte 0x00 @ SPECIES_RHYHORN
- .byte 0x00 @ SPECIES_RHYDON
- .byte 0x00 @ SPECIES_CHANSEY
- .byte 0x00 @ SPECIES_TANGELA
- .byte 0x00 @ SPECIES_KANGASKHAN
- .byte 0x00 @ SPECIES_HORSEA
- .byte 0x00 @ SPECIES_SEADRA
- .byte 0x00 @ SPECIES_GOLDEEN
- .byte 0x00 @ SPECIES_SEAKING
- .byte 0x00 @ SPECIES_STARYU
- .byte 0x00 @ SPECIES_STARMIE
- .byte 0x00 @ SPECIES_MR_MIME
- .byte 0x0a @ SPECIES_SCYTHER
- .byte 0x00 @ SPECIES_JYNX
- .byte 0x00 @ SPECIES_ELECTABUZZ
- .byte 0x00 @ SPECIES_MAGMAR
- .byte 0x00 @ SPECIES_PINSIR
- .byte 0x0a @ SPECIES_TAUROS
- .byte 0x00 @ SPECIES_MAGIKARP
- .byte 0x00 @ SPECIES_GYARADOS
- .byte 0x00 @ SPECIES_LAPRAS
- .byte 0x00 @ SPECIES_DITTO
- .byte 0x00 @ SPECIES_EEVEE
- .byte 0x00 @ SPECIES_VAPOREON
- .byte 0x00 @ SPECIES_JOLTEON
- .byte 0x00 @ SPECIES_FLAREON
- .byte 0x00 @ SPECIES_PORYGON
- .byte 0x00 @ SPECIES_OMANYTE
- .byte 0x00 @ SPECIES_OMASTAR
- .byte 0x00 @ SPECIES_KABUTO
- .byte 0x00 @ SPECIES_KABUTOPS
- .byte 0x00 @ SPECIES_AERODACTYL
- .byte 0x00 @ SPECIES_SNORLAX
- .byte 0x00 @ SPECIES_ARTICUNO
- .byte 0x00 @ SPECIES_ZAPDOS
- .byte 0x00 @ SPECIES_MOLTRES
- .byte 0x00 @ SPECIES_DRATINI
- .byte 0x00 @ SPECIES_DRAGONAIR
- .byte 0x00 @ SPECIES_DRAGONITE
- .byte 0x00 @ SPECIES_MEWTWO
- .byte 0x00 @ SPECIES_MEW
- .byte 0x00 @ SPECIES_CHIKORITA
- .byte 0x00 @ SPECIES_BAYLEEF
- .byte 0x00 @ SPECIES_MEGANIUM
- .byte 0x00 @ SPECIES_CYNDAQUIL
- .byte 0x00 @ SPECIES_QUILAVA
- .byte 0x14 @ SPECIES_TYPHLOSION
- .byte 0x00 @ SPECIES_TOTODILE
- .byte 0x00 @ SPECIES_CROCONAW
- .byte 0x05 @ SPECIES_FERALIGATR
- .byte 0x00 @ SPECIES_SENTRET
- .byte 0x00 @ SPECIES_FURRET
- .byte 0x00 @ SPECIES_HOOTHOOT
- .byte 0x00 @ SPECIES_NOCTOWL
- .byte 0x00 @ SPECIES_LEDYBA
- .byte 0x00 @ SPECIES_LEDIAN
- .byte 0x00 @ SPECIES_SPINARAK
- .byte 0x00 @ SPECIES_ARIADOS
- .byte 0x00 @ SPECIES_CROBAT
- .byte 0x00 @ SPECIES_CHINCHOU
- .byte 0x00 @ SPECIES_LANTURN
- .byte 0x00 @ SPECIES_PICHU
- .byte 0x00 @ SPECIES_CLEFFA
- .byte 0x00 @ SPECIES_IGGLYBUFF
- .byte 0x00 @ SPECIES_TOGEPI
- .byte 0x00 @ SPECIES_TOGETIC
- .byte 0x1e @ SPECIES_NATU
- .byte 0x00 @ SPECIES_XATU
- .byte 0x32 @ SPECIES_MAREEP
- .byte 0x00 @ SPECIES_FLAAFFY
- .byte 0x0a @ SPECIES_AMPHAROS
- .byte 0x00 @ SPECIES_BELLOSSOM
- .byte 0x00 @ SPECIES_MARILL
- .byte 0x00 @ SPECIES_AZUMARILL
- .byte 0x00 @ SPECIES_SUDOWOODO
- .byte 0x28 @ SPECIES_POLITOED
- .byte 0x00 @ SPECIES_HOPPIP
- .byte 0x00 @ SPECIES_SKIPLOOM
- .byte 0x00 @ SPECIES_JUMPLUFF
- .byte 0x00 @ SPECIES_AIPOM
- .byte 0x00 @ SPECIES_SUNKERN
- .byte 0x00 @ SPECIES_SUNFLORA
- .byte 0x00 @ SPECIES_YANMA
- .byte 0x00 @ SPECIES_WOOPER
- .byte 0x00 @ SPECIES_QUAGSIRE
- .byte 0x00 @ SPECIES_ESPEON
- .byte 0x00 @ SPECIES_UMBREON
- .byte 0x00 @ SPECIES_MURKROW
- .byte 0x00 @ SPECIES_SLOWKING
- .byte 0x00 @ SPECIES_MISDREAVUS
- .byte 0x00 @ SPECIES_UNOWN
- .byte 0x00 @ SPECIES_WOBBUFFET
- .byte 0x00 @ SPECIES_GIRAFARIG
- .byte 0x00 @ SPECIES_PINECO
- .byte 0x00 @ SPECIES_FORRETRESS
- .byte 0x0a @ SPECIES_DUNSPARCE
- .byte 0x00 @ SPECIES_GLIGAR
- .byte 0x2d @ SPECIES_STEELIX
- .byte 0x00 @ SPECIES_SNUBBULL
- .byte 0x00 @ SPECIES_GRANBULL
- .byte 0x27 @ SPECIES_QWILFISH
- .byte 0x13 @ SPECIES_SCIZOR
- .byte 0x00 @ SPECIES_SHUCKLE
- .byte 0x00 @ SPECIES_HERACROSS
- .byte 0x00 @ SPECIES_SNEASEL
- .byte 0x00 @ SPECIES_TEDDIURSA
- .byte 0x00 @ SPECIES_URSARING
- .byte 0x00 @ SPECIES_SLUGMA
- .byte 0x00 @ SPECIES_MAGCARGO
- .byte 0x00 @ SPECIES_SWINUB
- .byte 0x00 @ SPECIES_PILOSWINE
- .byte 0x00 @ SPECIES_CORSOLA
- .byte 0x00 @ SPECIES_REMORAID
- .byte 0x14 @ SPECIES_OCTILLERY
- .byte 0x00 @ SPECIES_DELIBIRD
- .byte 0x00 @ SPECIES_MANTINE
- .byte 0x00 @ SPECIES_SKARMORY
- .byte 0x00 @ SPECIES_HOUNDOUR
- .byte 0x00 @ SPECIES_HOUNDOOM
- .byte 0x00 @ SPECIES_KINGDRA
- .byte 0x00 @ SPECIES_PHANPY
- .byte 0x00 @ SPECIES_DONPHAN
- .byte 0x00 @ SPECIES_PORYGON2
- .byte 0x00 @ SPECIES_STANTLER
- .byte 0x00 @ SPECIES_SMEARGLE
- .byte 0x00 @ SPECIES_TYROGUE
- .byte 0x00 @ SPECIES_HITMONTOP
- .byte 0x28 @ SPECIES_SMOOCHUM
- .byte 0x00 @ SPECIES_ELEKID
- .byte 0x00 @ SPECIES_MAGBY
- .byte 0x00 @ SPECIES_MILTANK
- .byte 0x00 @ SPECIES_BLISSEY
- .byte 0x00 @ SPECIES_RAIKOU
- .byte 0x00 @ SPECIES_ENTEI
- .byte 0x00 @ SPECIES_SUICUNE
- .byte 0x00 @ SPECIES_LARVITAR
- .byte 0x00 @ SPECIES_PUPITAR
- .byte 0x0a @ SPECIES_TYRANITAR
- .byte 0x14 @ SPECIES_LUGIA
- .byte 0x00 @ SPECIES_HO_OH
- .byte 0x00 @ SPECIES_CELEBI
- .byte 0x00 @ 252
- .byte 0x00 @ 253
- .byte 0x00 @ 254
- .byte 0x00 @ 255
- .byte 0x00 @ 256
- .byte 0x00 @ 257
- .byte 0x00 @ 258
- .byte 0x00 @ 259
- .byte 0x00 @ 260
- .byte 0x00 @ 261
- .byte 0x00 @ 262
- .byte 0x00 @ 263
- .byte 0x00 @ 264
- .byte 0x00 @ 265
- .byte 0x00 @ 266
- .byte 0x00 @ 267
- .byte 0x00 @ 268
- .byte 0x00 @ 269
- .byte 0x00 @ 270
- .byte 0x00 @ 271
- .byte 0x00 @ 272
- .byte 0x00 @ 273
- .byte 0x00 @ 274
- .byte 0x00 @ 275
- .byte 0x00 @ 276
- .byte 0x00 @ SPECIES_TREECKO
- .byte 0x00 @ SPECIES_GROVYLE
- .byte 0x00 @ SPECIES_SCEPTILE
- .byte 0x00 @ SPECIES_TORCHIC
- .byte 0x00 @ SPECIES_COMBUSKEN
- .byte 0x00 @ SPECIES_BLAZIKEN
- .byte 0x00 @ SPECIES_MUDKIP
- .byte 0x00 @ SPECIES_MARSHTOMP
- .byte 0x00 @ SPECIES_SWAMPERT
- .byte 0x00 @ SPECIES_POOCHYENA
- .byte 0x00 @ SPECIES_MIGHTYENA
- .byte 0x00 @ SPECIES_ZIGZAGOON
- .byte 0x00 @ SPECIES_LINOONE
- .byte 0x00 @ SPECIES_WURMPLE
- .byte 0x00 @ SPECIES_SILCOON
- .byte 0x00 @ SPECIES_BEAUTIFLY
- .byte 0x00 @ SPECIES_CASCOON
- .byte 0x00 @ SPECIES_DUSTOX
- .byte 0x00 @ SPECIES_LOTAD
- .byte 0x00 @ SPECIES_LOMBRE
- .byte 0x00 @ SPECIES_LUDICOLO
- .byte 0x00 @ SPECIES_SEEDOT
- .byte 0x00 @ SPECIES_NUZLEAF
- .byte 0x00 @ SPECIES_SHIFTRY
- .byte 0x00 @ SPECIES_NINCADA
- .byte 0x00 @ SPECIES_NINJASK
- .byte 0x00 @ SPECIES_SHEDINJA
- .byte 0x00 @ SPECIES_TAILLOW
- .byte 0x00 @ SPECIES_SWELLOW
- .byte 0x00 @ SPECIES_SHROOMISH
- .byte 0x00 @ SPECIES_BRELOOM
- .byte 0x00 @ SPECIES_SPINDA
- .byte 0x00 @ SPECIES_WINGULL
- .byte 0x00 @ SPECIES_PELIPPER
- .byte 0x00 @ SPECIES_SURSKIT
- .byte 0x00 @ SPECIES_MASQUERAIN
- .byte 0x00 @ SPECIES_WAILMER
- .byte 0x0a @ SPECIES_WAILORD
- .byte 0x00 @ SPECIES_SKITTY
- .byte 0x00 @ SPECIES_DELCATTY
- .byte 0x1e @ SPECIES_KECLEON
- .byte 0x00 @ SPECIES_BALTOY
- .byte 0x00 @ SPECIES_CLAYDOL
- .byte 0x00 @ SPECIES_NOSEPASS
- .byte 0x00 @ SPECIES_TORKOAL
- .byte 0x00 @ SPECIES_SABLEYE
- .byte 0x00 @ SPECIES_BARBOACH
- .byte 0x00 @ SPECIES_WHISCASH
- .byte 0x00 @ SPECIES_LUVDISC
- .byte 0x00 @ SPECIES_CORPHISH
- .byte 0x00 @ SPECIES_CRAWDAUNT
- .byte 0x00 @ SPECIES_FEEBAS
- .byte 0x2d @ SPECIES_MILOTIC
- .byte 0x00 @ SPECIES_CARVANHA
- .byte 0x00 @ SPECIES_SHARPEDO
- .byte 0x00 @ SPECIES_TRAPINCH
- .byte 0x00 @ SPECIES_VIBRAVA
- .byte 0x00 @ SPECIES_FLYGON
- .byte 0x00 @ SPECIES_MAKUHITA
- .byte 0x00 @ SPECIES_HARIYAMA
- .byte 0x00 @ SPECIES_ELECTRIKE
- .byte 0x00 @ SPECIES_MANECTRIC
- .byte 0x00 @ SPECIES_NUMEL
- .byte 0x00 @ SPECIES_CAMERUPT
- .byte 0x0f @ SPECIES_SPHEAL
- .byte 0x00 @ SPECIES_SEALEO
- .byte 0x00 @ SPECIES_WALREIN
- .byte 0x00 @ SPECIES_CACNEA
- .byte 0x00 @ SPECIES_CACTURNE
- .byte 0x14 @ SPECIES_SNORUNT
- .byte 0x00 @ SPECIES_GLALIE
- .byte 0x00 @ SPECIES_LUNATONE
- .byte 0x00 @ SPECIES_SOLROCK
- .byte 0x00 @ SPECIES_AZURILL
- .byte 0x00 @ SPECIES_SPOINK
- .byte 0x0f @ SPECIES_GRUMPIG
- .byte 0x00 @ SPECIES_PLUSLE
- .byte 0x00 @ SPECIES_MINUN
- .byte 0x00 @ SPECIES_MAWILE
- .byte 0x00 @ SPECIES_MEDITITE
- .byte 0x00 @ SPECIES_MEDICHAM
- .byte 0x00 @ SPECIES_SWABLU
- .byte 0x00 @ SPECIES_ALTARIA
- .byte 0x0f @ SPECIES_WYNAUT
- .byte 0x00 @ SPECIES_DUSKULL
- .byte 0x1e @ SPECIES_DUSCLOPS
- .byte 0x00 @ SPECIES_ROSELIA
- .byte 0x00 @ SPECIES_SLAKOTH
- .byte 0x00 @ SPECIES_VIGOROTH
- .byte 0x00 @ SPECIES_SLAKING
- .byte 0x00 @ SPECIES_GULPIN
- .byte 0x00 @ SPECIES_SWALOT
- .byte 0x00 @ SPECIES_TROPIUS
- .byte 0x00 @ SPECIES_WHISMUR
- .byte 0x00 @ SPECIES_LOUDRED
- .byte 0x00 @ SPECIES_EXPLOUD
- .byte 0x00 @ SPECIES_CLAMPERL
- .byte 0x00 @ SPECIES_HUNTAIL
- .byte 0x00 @ SPECIES_GOREBYSS
- .byte 0x2d @ SPECIES_ABSOL
- .byte 0x00 @ SPECIES_SHUPPET
- .byte 0x00 @ SPECIES_BANETTE
- .byte 0x00 @ SPECIES_SEVIPER
- .byte 0x00 @ SPECIES_ZANGOOSE
- .byte 0x00 @ SPECIES_RELICANTH
- .byte 0x00 @ SPECIES_ARON
- .byte 0x00 @ SPECIES_LAIRON
- .byte 0x00 @ SPECIES_AGGRON
- .byte 0x00 @ SPECIES_CASTFORM
- .byte 0x00 @ SPECIES_VOLBEAT
- .byte 0x00 @ SPECIES_ILLUMISE
- .byte 0x00 @ SPECIES_LILEEP
- .byte 0x00 @ SPECIES_CRADILY
- .byte 0x00 @ SPECIES_ANORITH
- .byte 0x00 @ SPECIES_ARMALDO
- .byte 0x00 @ SPECIES_RALTS
- .byte 0x00 @ SPECIES_KIRLIA
- .byte 0x00 @ SPECIES_GARDEVOIR
- .byte 0x00 @ SPECIES_BAGON
- .byte 0x00 @ SPECIES_SHELGON
- .byte 0x46 @ SPECIES_SALAMENCE
- .byte 0x00 @ SPECIES_BELDUM
- .byte 0x00 @ SPECIES_METANG
- .byte 0x00 @ SPECIES_METAGROSS
- .byte 0x00 @ SPECIES_REGIROCK
- .byte 0x00 @ SPECIES_REGICE
- .byte 0x00 @ SPECIES_REGISTEEL
- .byte 0x3c @ SPECIES_KYOGRE
- .byte 0x00 @ SPECIES_GROUDON
- .byte 0x3c @ SPECIES_RAYQUAZA
- .byte 0x00 @ SPECIES_LATIAS
- .byte 0x00 @ SPECIES_LATIOS
- .byte 0x00 @ SPECIES_JIRACHI
- .byte 0x00 @ SPECIES_DEOXYS
- .byte 0x00 @ SPECIES_CHIMECHO
diff --git a/data/graphics/pokemon/front_anim_ids_table.inc b/data/graphics/pokemon/front_anim_ids_table.inc
deleted file mode 100644
index 4f225348a..000000000
--- a/data/graphics/pokemon/front_anim_ids_table.inc
+++ /dev/null
@@ -1,412 +0,0 @@
-gMonFrontAnimIdsTable:: @ 83299EC
- .byte 0x06 @ SPECIES_BULBASAUR
- .byte 0x17 @ SPECIES_IVYSAUR
- .byte 0x2f @ SPECIES_VENUSAUR
- .byte 0x52 @ SPECIES_CHARMANDER
- .byte 0x25 @ SPECIES_CHARMELEON
- .byte 0x10 @ SPECIES_CHARIZARD
- .byte 0x0b @ SPECIES_SQUIRTLE
- .byte 0x13 @ SPECIES_WARTORTLE
- .byte 0x19 @ SPECIES_BLASTOISE
- .byte 0x0b @ SPECIES_CATERPIE
- .byte 0x0b @ SPECIES_METAPOD
- .byte 0x1d @ SPECIES_BUTTERFREE
- .byte 0x46 @ SPECIES_WEEDLE
- .byte 0x20 @ SPECIES_KAKUNA
- .byte 0x02 @ SPECIES_BEEDRILL
- .byte 0x47 @ SPECIES_PIDGEY
- .byte 0x17 @ SPECIES_PIDGEOTTO
- .byte 0x29 @ SPECIES_PIDGEOT
- .byte 0x43 @ SPECIES_RATTATA
- .byte 0x2b @ SPECIES_RATICATE
- .byte 0x18 @ SPECIES_SPEAROW
- .byte 0x2b @ SPECIES_FEAROW
- .byte 0x16 @ SPECIES_EKANS
- .byte 0x17 @ SPECIES_ARBOK
- .byte 0x2c @ SPECIES_PIKACHU
- .byte 0x17 @ SPECIES_RAICHU
- .byte 0x2d @ SPECIES_SANDSHREW
- .byte 0x17 @ SPECIES_SANDSLASH
- .byte 0x00 @ SPECIES_NIDORAN_F
- .byte 0x17 @ SPECIES_NIDORINA
- .byte 0x0f @ SPECIES_NIDOQUEEN
- .byte 0x09 @ SPECIES_NIDORAN_M
- .byte 0x13 @ SPECIES_NIDORINO
- .byte 0x0f @ SPECIES_NIDOKING
- .byte 0x00 @ SPECIES_CLEFAIRY
- .byte 0x4a @ SPECIES_CLEFABLE
- .byte 0x17 @ SPECIES_VULPIX
- .byte 0x10 @ SPECIES_NINETALES
- .byte 0x48 @ SPECIES_JIGGLYPUFF
- .byte 0x31 @ SPECIES_WIGGLYTUFF
- .byte 0x00 @ SPECIES_ZUBAT
- .byte 0x1d @ SPECIES_GOLBAT
- .byte 0x00 @ SPECIES_ODDISH
- .byte 0x45 @ SPECIES_GLOOM
- .byte 0x49 @ SPECIES_VILEPLUME
- .byte 0x46 @ SPECIES_PARAS
- .byte 0x0f @ SPECIES_PARASECT
- .byte 0x06 @ SPECIES_VENONAT
- .byte 0x4b @ SPECIES_VENOMOTH
- .byte 0x10 @ SPECIES_DIGLETT
- .byte 0x4c @ SPECIES_DUGTRIO
- .byte 0x52 @ SPECIES_MEOWTH
- .byte 0x17 @ SPECIES_PERSIAN
- .byte 0x06 @ SPECIES_PSYDUCK
- .byte 0x4c @ SPECIES_GOLDUCK
- .byte 0x32 @ SPECIES_MANKEY
- .byte 0x48 @ SPECIES_PRIMEAPE
- .byte 0x25 @ SPECIES_GROWLITHE
- .byte 0x02 @ SPECIES_ARCANINE
- .byte 0x00 @ SPECIES_POLIWAG
- .byte 0x32 @ SPECIES_POLIWHIRL
- .byte 0x19 @ SPECIES_POLIWRATH
- .byte 0x31 @ SPECIES_ABRA
- .byte 0x09 @ SPECIES_KADABRA
- .byte 0x17 @ SPECIES_ALAKAZAM
- .byte 0x00 @ SPECIES_MACHOP
- .byte 0x10 @ SPECIES_MACHOKE
- .byte 0x31 @ SPECIES_MACHAMP
- .byte 0x17 @ SPECIES_BELLSPROUT
- .byte 0x0d @ SPECIES_WEEPINBELL
- .byte 0x32 @ SPECIES_VICTREEBEL
- .byte 0x00 @ SPECIES_TENTACOOL
- .byte 0x00 @ SPECIES_TENTACRUEL
- .byte 0x48 @ SPECIES_GEODUDE
- .byte 0x48 @ SPECIES_GRAVELER
- .byte 0x2f @ SPECIES_GOLEM
- .byte 0x20 @ SPECIES_PONYTA
- .byte 0x11 @ SPECIES_RAPIDASH
- .byte 0x45 @ SPECIES_SLOWPOKE
- .byte 0x0b @ SPECIES_SLOWBRO
- .byte 0x54 @ SPECIES_MAGNEMITE
- .byte 0x2c @ SPECIES_MAGNETON
- .byte 0x48 @ SPECIES_FARFETCHD
- .byte 0x4c @ SPECIES_DODUO
- .byte 0x41 @ SPECIES_DODRIO
- .byte 0x0b @ SPECIES_SEEL
- .byte 0x45 @ SPECIES_DEWGONG
- .byte 0x46 @ SPECIES_GRIMER
- .byte 0x30 @ SPECIES_MUK
- .byte 0x12 @ SPECIES_SHELLDER
- .byte 0x1d @ SPECIES_CLOYSTER
- .byte 0x15 @ SPECIES_GASTLY
- .byte 0x35 @ SPECIES_HAUNTER
- .byte 0x3a @ SPECIES_GENGAR
- .byte 0x43 @ SPECIES_ONIX
- .byte 0x4f @ SPECIES_DROWZEE
- .byte 0x09 @ SPECIES_HYPNO
- .byte 0x03 @ SPECIES_KRABBY
- .byte 0x4b @ SPECIES_KINGLER
- .byte 0x00 @ SPECIES_VOLTORB
- .byte 0x00 @ SPECIES_ELECTRODE
- .byte 0x46 @ SPECIES_EXEGGCUTE
- .byte 0x32 @ SPECIES_EXEGGUTOR
- .byte 0x48 @ SPECIES_CUBONE
- .byte 0x05 @ SPECIES_MAROWAK
- .byte 0x16 @ SPECIES_HITMONLEE
- .byte 0x09 @ SPECIES_HITMONCHAN
- .byte 0x45 @ SPECIES_LICKITUNG
- .byte 0x13 @ SPECIES_KOFFING
- .byte 0x04 @ SPECIES_WEEZING
- .byte 0x10 @ SPECIES_RHYHORN
- .byte 0x13 @ SPECIES_RHYDON
- .byte 0x45 @ SPECIES_CHANSEY
- .byte 0x48 @ SPECIES_TANGELA
- .byte 0x17 @ SPECIES_KANGASKHAN
- .byte 0x12 @ SPECIES_HORSEA
- .byte 0x04 @ SPECIES_SEADRA
- .byte 0x0d @ SPECIES_GOLDEEN
- .byte 0x1c @ SPECIES_SEAKING
- .byte 0x4e @ SPECIES_STARYU
- .byte 0x12 @ SPECIES_STARMIE
- .byte 0x46 @ SPECIES_MR_MIME
- .byte 0x02 @ SPECIES_SCYTHER
- .byte 0x17 @ SPECIES_JYNX
- .byte 0x2c @ SPECIES_ELECTABUZZ
- .byte 0x0f @ SPECIES_MAGMAR
- .byte 0x09 @ SPECIES_PINSIR
- .byte 0x19 @ SPECIES_TAUROS
- .byte 0x05 @ SPECIES_MAGIKARP
- .byte 0x48 @ SPECIES_GYARADOS
- .byte 0x17 @ SPECIES_LAPRAS
- .byte 0x01 @ SPECIES_DITTO
- .byte 0x17 @ SPECIES_EEVEE
- .byte 0x17 @ SPECIES_VAPOREON
- .byte 0x00 @ SPECIES_JOLTEON
- .byte 0x17 @ SPECIES_FLAREON
- .byte 0x52 @ SPECIES_PORYGON
- .byte 0x51 @ SPECIES_OMANYTE
- .byte 0x09 @ SPECIES_OMASTAR
- .byte 0x1d @ SPECIES_KABUTO
- .byte 0x0f @ SPECIES_KABUTOPS
- .byte 0x47 @ SPECIES_AERODACTYL
- .byte 0x0b @ SPECIES_SNORLAX
- .byte 0x09 @ SPECIES_ARTICUNO
- .byte 0x2c @ SPECIES_ZAPDOS
- .byte 0x45 @ SPECIES_MOLTRES
- .byte 0x00 @ SPECIES_DRATINI
- .byte 0x10 @ SPECIES_DRAGONAIR
- .byte 0x47 @ SPECIES_DRAGONITE
- .byte 0x09 @ SPECIES_MEWTWO
- .byte 0x0d @ SPECIES_MEW
- .byte 0x00 @ SPECIES_CHIKORITA
- .byte 0x00 @ SPECIES_BAYLEEF
- .byte 0x17 @ SPECIES_MEGANIUM
- .byte 0x52 @ SPECIES_CYNDAQUIL
- .byte 0x17 @ SPECIES_QUILAVA
- .byte 0x10 @ SPECIES_TYPHLOSION
- .byte 0x31 @ SPECIES_TOTODILE
- .byte 0x0f @ SPECIES_CROCONAW
- .byte 0x0f @ SPECIES_FERALIGATR
- .byte 0x00 @ SPECIES_SENTRET
- .byte 0x32 @ SPECIES_FURRET
- .byte 0x47 @ SPECIES_HOOTHOOT
- .byte 0x17 @ SPECIES_NOCTOWL
- .byte 0x52 @ SPECIES_LEDYBA
- .byte 0x47 @ SPECIES_LEDIAN
- .byte 0x4f @ SPECIES_SPINARAK
- .byte 0x0f @ SPECIES_ARIADOS
- .byte 0x00 @ SPECIES_CROBAT
- .byte 0x45 @ SPECIES_CHINCHOU
- .byte 0x51 @ SPECIES_LANTURN
- .byte 0x1e @ SPECIES_PICHU
- .byte 0x52 @ SPECIES_CLEFFA
- .byte 0x0c @ SPECIES_IGGLYBUFF
- .byte 0x0b @ SPECIES_TOGEPI
- .byte 0x00 @ SPECIES_TOGETIC
- .byte 0x31 @ SPECIES_NATU
- .byte 0x09 @ SPECIES_XATU
- .byte 0x00 @ SPECIES_MAREEP
- .byte 0x1e @ SPECIES_FLAAFFY
- .byte 0x2c @ SPECIES_AMPHAROS
- .byte 0x0b @ SPECIES_BELLOSSOM
- .byte 0x00 @ SPECIES_MARILL
- .byte 0x4a @ SPECIES_AZUMARILL
- .byte 0x46 @ SPECIES_SUDOWOODO
- .byte 0x32 @ SPECIES_POLITOED
- .byte 0x1c @ SPECIES_HOPPIP
- .byte 0x18 @ SPECIES_SKIPLOOM
- .byte 0x51 @ SPECIES_JUMPLUFF
- .byte 0x32 @ SPECIES_AIPOM
- .byte 0x52 @ SPECIES_SUNKERN
- .byte 0x00 @ SPECIES_SUNFLORA
- .byte 0x2b @ SPECIES_YANMA
- .byte 0x00 @ SPECIES_WOOPER
- .byte 0x16 @ SPECIES_QUAGSIRE
- .byte 0x09 @ SPECIES_ESPEON
- .byte 0x10 @ SPECIES_UMBREON
- .byte 0x00 @ SPECIES_MURKROW
- .byte 0x13 @ SPECIES_SLOWKING
- .byte 0x1c @ SPECIES_MISDREAVUS
- .byte 0x0a @ SPECIES_UNOWN
- .byte 0x30 @ SPECIES_WOBBUFFET
- .byte 0x1e @ SPECIES_GIRAFARIG
- .byte 0x0b @ SPECIES_PINECO
- .byte 0x10 @ SPECIES_FORRETRESS
- .byte 0x00 @ SPECIES_DUNSPARCE
- .byte 0x13 @ SPECIES_GLIGAR
- .byte 0x0f @ SPECIES_STEELIX
- .byte 0x17 @ SPECIES_SNUBBULL
- .byte 0x10 @ SPECIES_GRANBULL
- .byte 0x3a @ SPECIES_QWILFISH
- .byte 0x02 @ SPECIES_SCIZOR
- .byte 0x0b @ SPECIES_SHUCKLE
- .byte 0x41 @ SPECIES_HERACROSS
- .byte 0x16 @ SPECIES_SNEASEL
- .byte 0x17 @ SPECIES_TEDDIURSA
- .byte 0x10 @ SPECIES_URSARING
- .byte 0x17 @ SPECIES_SLUGMA
- .byte 0x17 @ SPECIES_MAGCARGO
- .byte 0x00 @ SPECIES_SWINUB
- .byte 0x0f @ SPECIES_PILOSWINE
- .byte 0x03 @ SPECIES_CORSOLA
- .byte 0x52 @ SPECIES_REMORAID
- .byte 0x17 @ SPECIES_OCTILLERY
- .byte 0x52 @ SPECIES_DELIBIRD
- .byte 0x0d @ SPECIES_MANTINE
- .byte 0x17 @ SPECIES_SKARMORY
- .byte 0x17 @ SPECIES_HOUNDOUR
- .byte 0x10 @ SPECIES_HOUNDOOM
- .byte 0x42 @ SPECIES_KINGDRA
- .byte 0x32 @ SPECIES_PHANPY
- .byte 0x19 @ SPECIES_DONPHAN
- .byte 0x00 @ SPECIES_PORYGON2
- .byte 0x00 @ SPECIES_STANTLER
- .byte 0x31 @ SPECIES_SMEARGLE
- .byte 0x16 @ SPECIES_TYROGUE
- .byte 0x02 @ SPECIES_HITMONTOP
- .byte 0x09 @ SPECIES_SMOOCHUM
- .byte 0x2c @ SPECIES_ELEKID
- .byte 0x00 @ SPECIES_MAGBY
- .byte 0x45 @ SPECIES_MILTANK
- .byte 0x00 @ SPECIES_BLISSEY
- .byte 0x2c @ SPECIES_RAIKOU
- .byte 0x09 @ SPECIES_ENTEI
- .byte 0x10 @ SPECIES_SUICUNE
- .byte 0x52 @ SPECIES_LARVITAR
- .byte 0x10 @ SPECIES_PUPITAR
- .byte 0x0f @ SPECIES_TYRANITAR
- .byte 0x3a @ SPECIES_LUGIA
- .byte 0x09 @ SPECIES_HO_OH
- .byte 0x18 @ SPECIES_CELEBI
- .byte 0x00 @ 252
- .byte 0x00 @ 253
- .byte 0x00 @ 254
- .byte 0x00 @ 255
- .byte 0x00 @ 256
- .byte 0x00 @ 257
- .byte 0x00 @ 258
- .byte 0x00 @ 259
- .byte 0x00 @ 260
- .byte 0x00 @ 261
- .byte 0x00 @ 262
- .byte 0x00 @ 263
- .byte 0x00 @ 264
- .byte 0x00 @ 265
- .byte 0x00 @ 266
- .byte 0x00 @ 267
- .byte 0x00 @ 268
- .byte 0x00 @ 269
- .byte 0x00 @ 270
- .byte 0x00 @ 271
- .byte 0x00 @ 272
- .byte 0x00 @ 273
- .byte 0x00 @ 274
- .byte 0x00 @ 275
- .byte 0x00 @ 276
- .byte 0x00 @ SPECIES_TREECKO
- .byte 0x17 @ SPECIES_GROVYLE
- .byte 0x10 @ SPECIES_SCEPTILE
- .byte 0x16 @ SPECIES_TORCHIC
- .byte 0x06 @ SPECIES_COMBUSKEN
- .byte 0x0f @ SPECIES_BLAZIKEN
- .byte 0x01 @ SPECIES_MUDKIP
- .byte 0x04 @ SPECIES_MARSHTOMP
- .byte 0x1e @ SPECIES_SWAMPERT
- .byte 0x10 @ SPECIES_POOCHYENA
- .byte 0x10 @ SPECIES_MIGHTYENA
- .byte 0x03 @ SPECIES_ZIGZAGOON
- .byte 0x09 @ SPECIES_LINOONE
- .byte 0x00 @ SPECIES_WURMPLE
- .byte 0x00 @ SPECIES_SILCOON
- .byte 0x04 @ SPECIES_BEAUTIFLY
- .byte 0x04 @ SPECIES_CASCOON
- .byte 0x06 @ SPECIES_DUSTOX
- .byte 0x00 @ SPECIES_LOTAD
- .byte 0x00 @ SPECIES_LOMBRE
- .byte 0x49 @ SPECIES_LUDICOLO
- .byte 0x05 @ SPECIES_SEEDOT
- .byte 0x00 @ SPECIES_NUZLEAF
- .byte 0x02 @ SPECIES_SHIFTRY
- .byte 0x00 @ SPECIES_NINCADA
- .byte 0x46 @ SPECIES_NINJASK
- .byte 0x1c @ SPECIES_SHEDINJA
- .byte 0x1e @ SPECIES_TAILLOW
- .byte 0x01 @ SPECIES_SWELLOW
- .byte 0x00 @ SPECIES_SHROOMISH
- .byte 0x00 @ SPECIES_BRELOOM
- .byte 0x31 @ SPECIES_SPINDA
- .byte 0x1b @ SPECIES_WINGULL
- .byte 0x1c @ SPECIES_PELIPPER
- .byte 0x00 @ SPECIES_SURSKIT
- .byte 0x00 @ SPECIES_MASQUERAIN
- .byte 0x01 @ SPECIES_WAILMER
- .byte 0x1c @ SPECIES_WAILORD
- .byte 0x00 @ SPECIES_SKITTY
- .byte 0x17 @ SPECIES_DELCATTY
- .byte 0x35 @ SPECIES_KECLEON
- .byte 0x1d @ SPECIES_BALTOY
- .byte 0x51 @ SPECIES_CLAYDOL
- .byte 0x49 @ SPECIES_NOSEPASS
- .byte 0x17 @ SPECIES_TORKOAL
- .byte 0x15 @ SPECIES_SABLEYE
- .byte 0x49 @ SPECIES_BARBOACH
- .byte 0x49 @ SPECIES_WHISCASH
- .byte 0x1d @ SPECIES_LUVDISC
- .byte 0x10 @ SPECIES_CORPHISH
- .byte 0x09 @ SPECIES_CRAWDAUNT
- .byte 0x49 @ SPECIES_FEEBAS
- .byte 0x22 @ SPECIES_MILOTIC
- .byte 0x49 @ SPECIES_CARVANHA
- .byte 0x56 @ SPECIES_SHARPEDO
- .byte 0x10 @ SPECIES_TRAPINCH
- .byte 0x0f @ SPECIES_VIBRAVA
- .byte 0x4b @ SPECIES_FLYGON
- .byte 0x0b @ SPECIES_MAKUHITA
- .byte 0x34 @ SPECIES_HARIYAMA
- .byte 0x00 @ SPECIES_ELECTRIKE
- .byte 0x00 @ SPECIES_MANECTRIC
- .byte 0x04 @ SPECIES_NUMEL
- .byte 0x10 @ SPECIES_CAMERUPT
- .byte 0x53 @ SPECIES_SPHEAL
- .byte 0x17 @ SPECIES_SEALEO
- .byte 0x0f @ SPECIES_WALREIN
- .byte 0x49 @ SPECIES_CACNEA
- .byte 0x04 @ SPECIES_CACTURNE
- .byte 0x45 @ SPECIES_SNORUNT
- .byte 0x0a @ SPECIES_GLALIE
- .byte 0x0e @ SPECIES_LUNATONE
- .byte 0x08 @ SPECIES_SOLROCK
- .byte 0x00 @ SPECIES_AZURILL
- .byte 0x56 @ SPECIES_SPOINK
- .byte 0x32 @ SPECIES_GRUMPIG
- .byte 0x00 @ SPECIES_PLUSLE
- .byte 0x01 @ SPECIES_MINUN
- .byte 0x00 @ SPECIES_MAWILE
- .byte 0x05 @ SPECIES_MEDITITE
- .byte 0x45 @ SPECIES_MEDICHAM
- .byte 0x04 @ SPECIES_SWABLU
- .byte 0x16 @ SPECIES_ALTARIA
- .byte 0x32 @ SPECIES_WYNAUT
- .byte 0x0a @ SPECIES_DUSKULL
- .byte 0x02 @ SPECIES_DUSCLOPS
- .byte 0x45 @ SPECIES_ROSELIA
- .byte 0x45 @ SPECIES_SLAKOTH
- .byte 0x31 @ SPECIES_VIGOROTH
- .byte 0x45 @ SPECIES_SLAKING
- .byte 0x00 @ SPECIES_GULPIN
- .byte 0x45 @ SPECIES_SWALOT
- .byte 0x10 @ SPECIES_TROPIUS
- .byte 0x03 @ SPECIES_WHISMUR
- .byte 0x49 @ SPECIES_LOUDRED
- .byte 0x19 @ SPECIES_EXPLOUD
- .byte 0x12 @ SPECIES_CLAMPERL
- .byte 0x09 @ SPECIES_HUNTAIL
- .byte 0x1c @ SPECIES_GOREBYSS
- .byte 0x11 @ SPECIES_ABSOL
- .byte 0x1c @ SPECIES_SHUPPET
- .byte 0x0d @ SPECIES_BANETTE
- .byte 0x17 @ SPECIES_SEVIPER
- .byte 0x09 @ SPECIES_ZANGOOSE
- .byte 0x1a @ SPECIES_RELICANTH
- .byte 0x45 @ SPECIES_ARON
- .byte 0x00 @ SPECIES_LAIRON
- .byte 0x19 @ SPECIES_AGGRON
- .byte 0x1d @ SPECIES_CASTFORM
- .byte 0x00 @ SPECIES_VOLBEAT
- .byte 0x05 @ SPECIES_ILLUMISE
- .byte 0x17 @ SPECIES_LILEEP
- .byte 0x19 @ SPECIES_CRADILY
- .byte 0x12 @ SPECIES_ANORITH
- .byte 0x10 @ SPECIES_ARMALDO
- .byte 0x45 @ SPECIES_RALTS
- .byte 0x00 @ SPECIES_KIRLIA
- .byte 0x00 @ SPECIES_GARDEVOIR
- .byte 0x19 @ SPECIES_BAGON
- .byte 0x04 @ SPECIES_SHELGON
- .byte 0x0f @ SPECIES_SALAMENCE
- .byte 0x0f @ SPECIES_BELDUM
- .byte 0x04 @ SPECIES_METANG
- .byte 0x10 @ SPECIES_METAGROSS
- .byte 0x01 @ SPECIES_REGIROCK
- .byte 0x44 @ SPECIES_REGICE
- .byte 0x09 @ SPECIES_REGISTEEL
- .byte 0x2d @ SPECIES_KYOGRE
- .byte 0x10 @ SPECIES_GROUDON
- .byte 0x0f @ SPECIES_RAYQUAZA
- .byte 0x2d @ SPECIES_LATIAS
- .byte 0x10 @ SPECIES_LATIOS
- .byte 0x0d @ SPECIES_JIRACHI
- .byte 0x1b @ SPECIES_DEOXYS
- .byte 0x1d @ SPECIES_CHIMECHO
diff --git a/include/battle.h b/include/battle.h
index 81c1d341d..5225b72e3 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -2,6 +2,7 @@
#define GUARD_BATTLE_H
// should they be included here or included individually by every file?
+#include "constants/battle.h"
#include "battle_util.h"
#include "battle_script_commands.h"
#include "battle_main.h"
@@ -10,215 +11,16 @@
#include "battle_util2.h"
#include "battle_bg.h"
-/*
- * A battler may be in one of four positions on the field. The first bit determines
- * what side the battler is on, either the player's side or the opponent's side.
- * The second bit determines what flank the battler is on, either the left or right.
- * Note that the opponent's flanks are drawn corresponding to their perspective, so
- * their right mon appears on the left, and their left mon appears on the right.
- * The battler ID is usually the same as the position, except in the case of link battles.
- *
- * + ------------------------- +
- * | Opponent's side |
- * | Right Left |
- * | 3 1 |
- * | |
- * | Player's side |
- * | Left Right |
- * | 0 2 |
- * ----------------------------+
- * | |
- * | |
- * +---------------------------+
- */
-
-#define MAX_BATTLERS_COUNT 4
-
-#define B_POSITION_PLAYER_LEFT 0
-#define B_POSITION_OPPONENT_LEFT 1
-#define B_POSITION_PLAYER_RIGHT 2
-#define B_POSITION_OPPONENT_RIGHT 3
-
-// These macros can be used with either battler ID or positions to get the partner or the opposite mon
-#define BATTLE_OPPOSITE(id) ((id) ^ 1)
-#define BATTLE_PARTNER(id) ((id) ^ 2)
-
-#define B_SIDE_PLAYER 0
-#define B_SIDE_OPPONENT 1
-
-#define B_FLANK_LEFT 0
-#define B_FLANK_RIGHT 1
-
-#define BIT_SIDE 1
-#define BIT_FLANK 2
-
#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
-// Battle Type Flags
-
-#define BATTLE_TYPE_DOUBLE 0x0001
-#define BATTLE_TYPE_LINK 0x0002
-#define BATTLE_TYPE_WILD 0x0004
-#define BATTLE_TYPE_TRAINER 0x0008
-#define BATTLE_TYPE_FIRST_BATTLE 0x0010
-#define BATTLE_TYPE_20 0x0020
-#define BATTLE_TYPE_MULTI 0x0040
-#define BATTLE_TYPE_SAFARI 0x0080
-#define BATTLE_TYPE_BATTLE_TOWER 0x0100
-#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
-#define BATTLE_TYPE_ROAMER 0x0400
-#define BATTLE_TYPE_EREADER_TRAINER 0x0800
-#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
-#define BATTLE_TYPE_LEGENDARY 0x2000
-#define BATTLE_TYPE_REGI 0x4000
-#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
-#define BATTLE_TYPE_DOME 0x10000
-#define BATTLE_TYPE_PALACE 0x20000
-#define BATTLE_TYPE_ARENA 0x40000
-#define BATTLE_TYPE_FACTORY 0x80000
-#define BATTLE_TYPE_PIKE 0x100000
-#define BATTLE_TYPE_PYRAMID 0x200000
-#define BATTLE_TYPE_INGAME_PARTNER 0x400000
-#define BATTLE_TYPE_x800000 0x800000
-#define BATTLE_TYPE_RECORDED 0x1000000
-#define BATTLE_TYPE_x2000000 0x2000000
-#define BATTLE_TYPE_x4000000 0x4000000
-#define BATTLE_TYPE_SECRET_BASE 0x8000000
-#define BATTLE_TYPE_GROUDON 0x10000000
-#define BATTLE_TYPE_KYOGRE 0x20000000
-#define BATTLE_TYPE_RAYQUAZA 0x40000000
-#define BATTLE_TYPE_x80000000 0x80000000
-#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
-#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
-
-extern u32 gBattleTypeFlags;
-
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
#define TRAINER_OPPONENT_800 0x800
#define STEVEN_PARTNER_ID 0xC03
#define SECRET_BASE_OPPONENT 0x400
-#define B_OUTCOME_WON 0x1
-#define B_OUTCOME_LOST 0x2
-#define B_OUTCOME_DREW 0x3
-#define B_OUTCOME_RAN 0x4
-#define B_OUTCOME_PLAYER_TELEPORTED 0x5
-#define B_OUTCOME_POKE_FLED 0x6
-#define B_OUTCOME_CAUGHT_POKE 0x7
-#define B_OUTCOME_NO_SAFARI_BALLS 0x8
-#define B_OUTCOME_FORFEITED 0x9
-#define B_OUTCOME_POKE_TELEPORTED 0xA
-#define B_OUTCOME_LINK_BATTLE_RAN 0x80
-
-extern u8 gBattleOutcome;
-
-// Non-volatile status conditions
-// These persist remain outside of battle and after switching out
-#define STATUS1_NONE 0x0
-#define STATUS1_SLEEP 0x7
-#define STATUS1_POISON 0x8
-#define STATUS1_BURN 0x10
-#define STATUS1_FREEZE 0x20
-#define STATUS1_PARALYSIS 0x40
-#define STATUS1_TOXIC_POISON 0x80
-#define STATUS1_TOXIC_COUNTER 0xF00
-#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON)
-#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)
-
-// Volatile status ailments
-// These are removed after exiting the battle or switching out
-#define STATUS2_CONFUSION 0x00000007
-#define STATUS2_FLINCHED 0x00000008
-#define STATUS2_UPROAR 0x00000070
-#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
-#define STATUS2_LOCK_CONFUSE 0x00000C00
-#define STATUS2_MULTIPLETURNS 0x00001000
-#define STATUS2_WRAPPED 0x0000E000
-#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler
-#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
-#define STATUS2_FOCUS_ENERGY 0x00100000
-#define STATUS2_TRANSFORMED 0x00200000
-#define STATUS2_RECHARGE 0x00400000
-#define STATUS2_RAGE 0x00800000
-#define STATUS2_SUBSTITUTE 0x01000000
-#define STATUS2_DESTINY_BOND 0x02000000
-#define STATUS2_ESCAPE_PREVENTION 0x04000000
-#define STATUS2_NIGHTMARE 0x08000000
-#define STATUS2_CURSED 0x10000000
-#define STATUS2_FORESIGHT 0x20000000
-#define STATUS2_DEFENSE_CURL 0x40000000
-#define STATUS2_TORMENT 0x80000000
-
-// Seems like per-battler statuses. Not quite sure how to categorize these
-#define STATUS3_LEECHSEED_BANK 0x3
-#define STATUS3_LEECHSEED 0x4
-#define STATUS3_ALWAYS_HITS 0x18 // two bits
-#define STATUS3_PERISH_SONG 0x20
-#define STATUS3_ON_AIR 0x40
-#define STATUS3_UNDERGROUND 0x80
-#define STATUS3_MINIMIZED 0x100
-#define STATUS3_ROOTED 0x400
-#define STATUS3_CHARGED_UP 0x200
-#define STATUS3_YAWN 0x1800 // two bits
-#define STATUS3_IMPRISONED_OTHERS 0x2000
-#define STATUS3_GRUDGE 0x4000
-#define STATUS3_CANT_SCORE_A_CRIT 0x8000
-#define STATUS3_MUDSPORT 0x10000
-#define STATUS3_WATERSPORT 0x20000
-#define STATUS3_UNDERWATER 0x40000
-#define STATUS3_INTIMIDATE_POKES 0x80000
-#define STATUS3_TRACE 0x100000
-#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)
-
-extern u32 gStatuses3[MAX_BATTLERS_COUNT];
-
-// Not really sure what a "hitmarker" is.
-
-#define HITMARKER_x10 0x00000010
-#define HITMARKER_x20 0x00000020
-#define HITMARKER_DESTINYBOND 0x00000040
-#define HITMARKER_NO_ANIMATIONS 0x00000080
-#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
-#define HITMARKER_NO_ATTACKSTRING 0x00000200
-#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
-#define HITMARKER_NO_PPDEDUCT 0x00000800
-#define HITMARKER_PURSUIT_TRAP 0x00001000
-#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
-#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
-#define HITMARKER_RUN 0x00008000
-#define HITMARKER_IGNORE_ON_AIR 0x00010000
-#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
-#define HITMARKER_IGNORE_UNDERWATER 0x00040000
-#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
-#define HITMARKER_x100000 0x00100000
-#define HITMARKER_x200000 0x00200000
-#define HITMARKER_x400000 0x00400000
-#define HITMARKER_x800000 0x00800000
-#define HITMARKER_GRUDGE 0x01000000
-#define HITMARKER_OBEYS 0x02000000
-#define HITMARKER_x4000000 0x04000000
-#define HITMARKER_x8000000 0x08000000
-#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C)
-#define HITMARKER_UNK(battler) (0x10000000 << battler)
-
-extern u32 gHitMarker;
-
-// Per-side statuses that affect an entire party
-
-#define SIDE_STATUS_REFLECT (1 << 0)
-#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
-#define SIDE_STATUS_X4 (1 << 2)
-#define SIDE_STATUS_SPIKES (1 << 4)
-#define SIDE_STATUS_SAFEGUARD (1 << 5)
-#define SIDE_STATUS_FUTUREATTACK (1 << 6)
-#define SIDE_STATUS_MIST (1 << 8)
-#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
-
-extern u16 gSideStatuses[2];
-
// Battle Actions
// These determine what each battler will do in a turn
#define B_ACTION_USE_MOVE 0
@@ -238,37 +40,9 @@ extern u16 gSideStatuses[2];
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
-#define MOVE_RESULT_MISSED (1 << 0)
-#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
-#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
-#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
-#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
-#define MOVE_RESULT_FAILED (1 << 5)
-#define MOVE_RESULT_FOE_ENDURED (1 << 6)
-#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
-#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
-
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
-// Battle Weather flags
-
-#define WEATHER_RAIN_TEMPORARY (1 << 0)
-#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
-#define WEATHER_RAIN_PERMANENT (1 << 2)
-#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
-#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
-#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
-#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
-#define WEATHER_SUN_TEMPORARY (1 << 5)
-#define WEATHER_SUN_PERMANENT (1 << 6)
-#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
-#define WEATHER_HAIL (1 << 7)
-#define WEATHER_HAIL_ANY (WEATHER_HAIL)
-#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
-
-extern u16 gBattleWeather;
-
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
@@ -280,8 +54,6 @@ extern u16 gBattleWeather;
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
-extern u8 gBattleTerrain;
-
// array entries for battle communication
#define MULTIUSE_STATE 0x0
#define CURSOR_POSITION 0x1
@@ -318,26 +90,7 @@ extern u8 gBattleTerrain;
#define TYPE_FORESIGHT 0xFE
#define TYPE_ENDTABLE 0xFF
-#define BS_GET_TARGET 0
-#define BS_GET_ATTACKER 1
-#define BS_GET_EFFECT_BANK 2
-#define BS_GET_gBank1 3
-#define BS_GET_BANK_0 7
-#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
-#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
-#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
-#define BS_GET_SCRIPTING_BANK 10
-#define BS_GET_OPPONENT1 12
-#define BS_GET_PLAYER2 13
-#define BS_GET_OPPONENT2 14
-
-// for battle script commands
-#define CMP_EQUAL 0x0
-#define CMP_NOT_EQUAL 0x1
-#define CMP_GREATER_THAN 0x2
-#define CMP_LESS_THAN 0x3
-#define CMP_COMMON_BITS 0x4
-#define CMP_NO_COMMON_BITS 0x5
+#define BATTLE_BUFFER_LINK_SIZE 0x1000
struct TrainerMonNoItemDefaultMoves
{
@@ -346,8 +99,6 @@ struct TrainerMonNoItemDefaultMoves
u16 species;
};
-u8 GetBattlerSide(u8 battler);
-
struct TrainerMonItemDefaultMoves
{
u16 iv;
@@ -441,8 +192,6 @@ struct DisableStruct
/*0x1A*/ u8 unk1A[2];
};
-extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
-
struct ProtectStruct
{
/* field_0 */
@@ -476,13 +225,11 @@ struct ProtectStruct
/* field_4 */ u32 physicalDmg;
/* field_8 */ u32 specialDmg;
- /* field_C */ u8 physicalBank;
- /* field_D */ u8 specialBank;
+ /* field_C */ u8 physicalBattlerId;
+ /* field_D */ u8 specialBattlerId;
/* field_E */ u16 fieldE;
};
-extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
-
struct SpecialStatus
{
u8 statLowered : 1; // 0x1
@@ -494,35 +241,31 @@ struct SpecialStatus
u8 flag40 : 1;
u8 focusBanded : 1;
u8 field1[3];
- s32 moveturnLostHP;
- s32 moveturnLostHP_physical;
- s32 moveturnLostHP_special;
- u8 moveturnPhysicalBank;
- u8 moveturnSpecialBank;
+ s32 dmg;
+ s32 physicalDmg;
+ s32 specialDmg;
+ u8 physicalBattlerId;
+ u8 specialBattlerId;
u8 field12;
u8 field13;
};
-extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
-
struct SideTimer
{
/*0x00*/ u8 reflectTimer;
- /*0x01*/ u8 reflectBank;
+ /*0x01*/ u8 reflectBattlerId;
/*0x02*/ u8 lightscreenTimer;
- /*0x03*/ u8 lightscreenBank;
+ /*0x03*/ u8 lightscreenBattlerId;
/*0x04*/ u8 mistTimer;
- /*0x05*/ u8 mistBank;
+ /*0x05*/ u8 mistBattlerId;
/*0x06*/ u8 safeguardTimer;
- /*0x07*/ u8 safeguardBank;
+ /*0x07*/ u8 safeguardBattlerId;
/*0x08*/ u8 followmeTimer;
/*0x09*/ u8 followmeTarget;
/*0x0A*/ u8 spikesAmount;
/*0x0B*/ u8 fieldB;
};
-extern struct SideTimer gSideTimers[];
-
struct WishFutureKnock
{
u8 futureSightCounter[MAX_BATTLERS_COUNT];
@@ -530,13 +273,11 @@ struct WishFutureKnock
s32 futureSightDmg[MAX_BATTLERS_COUNT];
u16 futureSightMove[MAX_BATTLERS_COUNT];
u8 wishCounter[MAX_BATTLERS_COUNT];
- u8 wishUserID[MAX_BATTLERS_COUNT];
+ u8 wishMonId[MAX_BATTLERS_COUNT];
u8 weatherDuration;
u8 knockedOffPokes[2];
};
-extern struct WishFutureKnock gWishFutureKnock;
-
struct AI_ThinkingStruct
{
u8 aiState;
@@ -600,8 +341,6 @@ struct BattleResources
struct BattleScriptsStack *AI_ScriptsStack;
};
-extern struct BattleResources* gBattleResources;
-
struct BattleResults
{
u8 playerFaintCounter; // 0x0
@@ -625,21 +364,19 @@ struct BattleResults
u16 playerMon2Species; // 0x26
u16 caughtMonSpecies; // 0x28
u8 caughtMonNick[10]; // 0x2A
- u8 filler34[2];
+ u8 filler34[2]; // 0x34
u8 catchAttempts[11]; // 0x36
};
-extern struct BattleResults gBattleResults;
-
struct BattleStruct
{
u8 turnEffectsTracker;
- u8 turnEffectsBank;
+ u8 turnEffectsBattlerId;
u8 filler2;
- u8 turncountersTracker;
+ u8 turnCountersTracker;
u8 wrappedMove[8]; // ask gamefreak why they declared it that way
u8 moveTarget[4];
- u8 expGetterId;
+ u8 expGetterMonId;
u8 field_11;
u8 wildVictorySong;
u8 dynamicMoveType;
@@ -653,13 +390,13 @@ struct BattleStruct
u8 field_45;
u8 field_46;
u8 field_47;
- u8 focusPunchBank;
+ u8 focusPunchBattlerId;
u8 field_49;
u8 moneyMultiplier;
u8 savedTurnActionNumber;
u8 switchInAbilitiesCounter;
u8 faintedActionsState;
- u8 faintedActionsBank;
+ u8 faintedActionsBattlerId;
u8 field_4F;
u16 expValue;
u8 field_52;
@@ -687,7 +424,7 @@ struct BattleStruct
u8 field_8C;
u8 field_8D;
u8 stringMoveType;
- u8 expGetterBank;
+ u8 expGetterBattlerId;
u8 field_90;
u8 field_91;
u8 field_92;
@@ -732,7 +469,7 @@ struct BattleStruct
u8 field_183;
struct BattleEnigmaBerry battleEnigmaBerry;
u8 wishPerishSongState;
- u8 wishPerishSongBank;
+ u8 wishPerishSongBattlerId;
bool8 overworldWeatherDone;
u8 atkCancellerTracker;
u8 field_1A4[96];
@@ -745,8 +482,6 @@ struct BattleStruct
u8 field_2A2;
};
-extern struct BattleStruct* gBattleStruct;
-
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
@@ -755,71 +490,8 @@ extern struct BattleStruct* gBattleStruct;
typeArg = gBattleMoves[move].type; \
}
-#define MOVE_EFFECT_SLEEP 0x1
-#define MOVE_EFFECT_POISON 0x2
-#define MOVE_EFFECT_BURN 0x3
-#define MOVE_EFFECT_FREEZE 0x4
-#define MOVE_EFFECT_PARALYSIS 0x5
-#define MOVE_EFFECT_TOXIC 0x6
-#define MOVE_EFFECT_CONFUSION 0x7
-#define MOVE_EFFECT_FLINCH 0x8
-#define MOVE_EFFECT_TRI_ATTACK 0x9
-#define MOVE_EFFECT_UPROAR 0xA
-#define MOVE_EFFECT_PAYDAY 0xB
-#define MOVE_EFFECT_CHARGING 0xC
-#define MOVE_EFFECT_WRAP 0xD
-#define MOVE_EFFECT_RECOIL_25 0xE
-#define MOVE_EFFECT_ATK_PLUS_1 0xF
-#define MOVE_EFFECT_DEF_PLUS_1 0x10
-#define MOVE_EFFECT_SPD_PLUS_1 0x11
-#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
-#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
-#define MOVE_EFFECT_ACC_PLUS_1 0x14
-#define MOVE_EFFECT_EVS_PLUS_1 0x15
-#define MOVE_EFFECT_ATK_MINUS_1 0x16
-#define MOVE_EFFECT_DEF_MINUS_1 0x17
-#define MOVE_EFFECT_SPD_MINUS_1 0x18
-#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
-#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
-#define MOVE_EFFECT_ACC_MINUS_1 0x1B
-#define MOVE_EFFECT_EVS_MINUS_1 0x1C
-#define MOVE_EFFECT_RECHARGE 0x1D
-#define MOVE_EFFECT_RAGE 0x1E
-#define MOVE_EFFECT_STEAL_ITEM 0x1F
-#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
-#define MOVE_EFFECT_NIGHTMARE 0x21
-#define MOVE_EFFECT_ALL_STATS_UP 0x22
-#define MOVE_EFFECT_RAPIDSPIN 0x23
-#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
-#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
-#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
-#define MOVE_EFFECT_ATK_PLUS_2 0x27
-#define MOVE_EFFECT_DEF_PLUS_2 0x28
-#define MOVE_EFFECT_SPD_PLUS_2 0x29
-#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
-#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
-#define MOVE_EFFECT_ACC_PLUS_2 0x2C
-#define MOVE_EFFECT_EVS_PLUS_2 0x2D
-#define MOVE_EFFECT_ATK_MINUS_2 0x2E
-#define MOVE_EFFECT_DEF_MINUS_2 0x2F
-#define MOVE_EFFECT_SPD_MINUS_2 0x30
-#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
-#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
-#define MOVE_EFFECT_ACC_MINUS_2 0x33
-#define MOVE_EFFECT_EVS_MINUS_2 0x34
-#define MOVE_EFFECT_THRASH 0x35
-#define MOVE_EFFECT_KNOCK_OFF 0x36
-#define MOVE_EFFECT_NOTHING_37 0x37
-#define MOVE_EFFECT_NOTHING_38 0x38
-#define MOVE_EFFECT_NOTHING_39 0x39
-#define MOVE_EFFECT_NOTHING_3A 0x3A
-#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
-#define MOVE_EFFECT_NOTHING_3C 0x3C
-#define MOVE_EFFECT_NOTHING_3D 0x3D
-#define MOVE_EFFECT_NOTHING_3E 0x3E
-#define MOVE_EFFECT_NOTHING_3F 0x3F
-#define MOVE_EFFECT_AFFECTS_USER 0x40
-#define MOVE_EFFECT_CERTAIN 0x80
+#define IS_MOVE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
+#define IS_MOVE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
@@ -859,8 +531,6 @@ struct BattleScripting
u8 multiplayerId;
};
-extern struct BattleScripting gBattleScripting;
-
enum
{
BACK_PIC_BRENDAN,
@@ -874,7 +544,7 @@ enum
};
// rom_80A5C6C
-u8 GetBattlerSide(u8 bank);
+u8 GetBattlerSide(u8 battler);
u8 GetBattlerPosition(u8 bank);
u8 GetBattlerAtPosition(u8 bank);
@@ -956,18 +626,6 @@ struct BattleSpriteData
struct BattleBarInfo *battleBars;
};
-extern struct BattleSpriteData *gBattleSpritesDataPtr;
-
-#define BATTLE_BUFFER_LINK_SIZE 0x1000
-
-extern u8 *gLinkBattleSendBuffer;
-extern u8 *gLinkBattleRecvBuffer;
-
-extern u8 *gUnknown_0202305C;
-extern u8 *gUnknown_02023060;
-
-// Move this somewhere else
-
#include "sprite.h"
struct MonSpritesGfx
@@ -982,11 +640,106 @@ struct MonSpritesGfx
void *field_17C;
};
-extern struct BattleSpritesGfx* gMonSpritesGfx;
-extern u8 gBattleOutcome;
-extern u16 gLastUsedItem;
+// all battle variables are declared in battle_main.c
extern u32 gBattleTypeFlags;
-extern struct MonSpritesGfx* gMonSpritesGfxPtr;
-extern u16 gTrainerBattleOpponent_A;
+extern u8 gBattleTerrain;
+extern u32 gUnknown_02022FF4;
+extern u8 *gUnknown_0202305C;
+extern u8 *gUnknown_02023060;
+extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
+extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
+extern u8 gActiveBattler;
+extern u32 gBattleControllerExecFlags;
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
+extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
+extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
+extern u8 gBattleTurnOrder[MAX_BATTLERS_COUNT];
+extern u8 gCurrentTurnActionNumber;
+extern u8 gCurrentActionFuncId;
+extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
+extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
+extern u8 gCurrMovePos;
+extern u8 gChosenMovePos;
+extern u16 gCurrentMove;
+extern u16 gChosenMove;
+extern u16 gRandomMove;
+extern s32 gBattleMoveDamage;
+extern s32 gHpDealt;
+extern s32 gTakenDmg[MAX_BATTLERS_COUNT];
+extern u16 gLastUsedItem;
+extern u8 gLastUsedAbility;
+extern u8 gBattlerAttacker;
+extern u8 gBattlerTarget;
+extern u8 gBattlerFainted;
+extern u8 gEffectBattler;
+extern u8 gPotentialItemEffectBattler;
+extern u8 gAbsentBattlerFlags;
+extern u8 gCritMultiplier;
+extern u8 gMultiHitCounter;
+extern const u8 *gBattlescriptCurrInstr;
+extern u32 gUnusedBattleMainVar;
+extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
+extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT];
+extern const u8 *gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT];
+extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
+extern u16 gLastMoves[MAX_BATTLERS_COUNT];
+extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT];
+extern u16 gLastHitByType[MAX_BATTLERS_COUNT];
+extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT];
+extern u16 gLockedMoves[MAX_BATTLERS_COUNT];
+extern u8 gLastHitBy[MAX_BATTLERS_COUNT];
+extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
+extern u8 gMoveResultFlags;
+extern u32 gHitMarker;
+extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT];
+extern u8 gUnknown_0202428C;
+extern u16 gSideStatuses[2];
+extern struct SideTimer gSideTimers[2];
+extern u32 gStatuses3[MAX_BATTLERS_COUNT];
+extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
+extern u16 gPauseCounterBattle;
+extern u16 gPaydayMoney;
+extern u16 gRandomTurnNumber;
+extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT];
+extern u8 gBattleOutcome;
+extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
+extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
+extern u16 gBattleWeather;
+extern struct WishFutureKnock gWishFutureKnock;
+extern u16 gIntroSlideFlags;
+extern u8 gSentPokesToOpponent[2];
+extern u16 gDynamicBasePower;
+extern u16 gExpShareExp;
+extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
+extern struct BattleScripting gBattleScripting;
+extern struct BattleStruct *gBattleStruct;
+extern u8 *gLinkBattleSendBuffer;
+extern u8 *gLinkBattleRecvBuffer;
+extern struct BattleResources *gBattleResources;
+extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
+extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
+extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT];
+extern u8 gBattlerInMenuId;
+extern bool8 gDoingBattleAnim;
+extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
+extern u8 gPlayerDpadHoldFrames;
+extern struct BattleSpriteData *gBattleSpritesDataPtr;
+extern struct MonSpritesGfx *gMonSpritesGfxPtr;
+extern struct BattleHealthboxInfo *gUnknown_020244D8;
+extern struct BattleHealthboxInfo *gUnknown_020244DC;
+extern u16 gBattleMovePower;
+extern u16 gMoveToLearn;
+extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
+
+extern void (*gPreBattleCallback1)(void);
+extern void (*gBattleMainFunc)(void);
+extern struct BattleResults gBattleResults;
+extern u8 gLeveledUpInBattle;
+extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
+extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
+extern u8 gMultiUsePlayerCursor;
+extern u8 gNumberOfMovesToChoose;
+extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
#endif // GUARD_BATTLE_H
diff --git a/include/battle_anim.h b/include/battle_anim.h
index cc864b024..aa62db46d 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -56,8 +56,8 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
void DestroyAnimSprite(struct Sprite *sprite);
void DestroyAnimVisualTask(u8 taskId);
void DestroyAnimSoundTask(u8 taskId);
-bool8 IsBattlerSpriteVisible(u8 bank);
-void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible);
+bool8 IsBattlerSpriteVisible(u8 battlerId);
+void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible);
bool8 IsContest(void);
s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
@@ -76,7 +76,7 @@ void sub_80A6F3C(struct Sprite *sprite);
void sub_80A8278(void);
void sub_80A6B30(struct UnknownAnimStruct2*);
void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1);
-u8 sub_80A82E4(u8 bank);
+u8 sub_80A82E4(u8 battlerId);
bool8 AnimateBallThrow(struct Sprite *sprite);
enum
@@ -85,26 +85,26 @@ enum
BANK_Y_POS,
};
-u8 GetBattlerSpriteCoord(u8 bank, u8 attributeId);
+u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
-bool8 IsBattlerSpritePresent(u8 bank);
+bool8 IsBattlerSpritePresent(u8 battlerId);
void sub_80A6C68(u8 arg0);
-u8 GetAnimBattlerSpriteId(u8 wantedBank);
+u8 GetAnimBattlerSpriteId(u8 wantedBattler);
bool8 IsDoubleBattle(void);
u8 sub_80A6D94(void);
u8 sub_80A8364(u8);
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
-u8 GetBattlerSpriteDefault_Y(u8 bank);
-u8 sub_80A82E4(u8 bank);
-u8 GetSubstituteSpriteDefault_Y(u8 bank);
+u8 GetBattlerSpriteDefault_Y(u8 battlerId);
+u8 sub_80A82E4(u8 battlerId);
+u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
// battle_anim_80A9C70.s
-void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
+void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_8170478.s
u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
-u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
index 75bc3e003..e1c6325b6 100644
--- a/include/battle_gfx_sfx_util.h
+++ b/include/battle_gfx_sfx_util.h
@@ -8,41 +8,41 @@ void sub_805D714(struct Sprite *sprite);
void sub_805D770(struct Sprite *sprite, bool8 arg1);
void sub_805D7AC(struct Sprite *sprite);
void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status);
-bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
-void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
+bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId, u16 argument);
+void InitAndLaunchSpecialAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId);
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
-bool8 mplay_80342A4(u8 bank);
-void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
-void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
+bool8 mplay_80342A4(u8 battlerId);
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
void nullsub_23(void);
void nullsub_24(u16 species);
-void DecompressTrainerFrontPic(u16 frontPicId, u8 bank);
-void DecompressTrainerBackPic(u16 backPicId, u8 bank);
+void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
+void DecompressTrainerBackPic(u16 backPicId, u8 battlerId);
void nullsub_25(u8 arg0);
void FreeTrainerFrontPicPalette(u16 frontPicId);
void sub_805DFFC(void);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadBattleBarGfx(u8 arg0);
-bool8 BattleInitAllSprites(u8 *state1, u8 *bank);
+bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
void ClearSpritesHealthboxAnimData(void);
void CopyAllBattleSpritesInvisibilities(void);
-void CopyBattleSpriteInvisibility(u8 bank);
-void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform);
-void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite);
-void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId);
-void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
-void ClearBehindSubstituteBit(u8 bank);
-void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank);
+void CopyBattleSpriteInvisibility(u8 battlerId);
+void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform);
+void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite);
+void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId);
+void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move);
+void ClearBehindSubstituteBit(u8 battlerId);
+void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId);
void BattleStopLowHpSound(void);
u8 GetMonHPBarLevel(struct Pokemon *mon);
void sub_805EAE8(void);
void sub_805EB9C(u8 affineMode);
void LoadAndCreateEnemyShadowSprites(void);
void SpriteCB_SetInvisible(struct Sprite *sprite);
-void SetBattlerShadowSpriteCallback(u8 bank, u16 species);
-void HideBattlerShadowSprite(u8 bank);
+void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species);
+void HideBattlerShadowSprite(u8 battlerId);
void sub_805EF14(void);
-void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute);
+void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon);
diff --git a/include/battle_main.h b/include/battle_main.h
index 54b5e7da6..d7a522f17 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -21,8 +21,8 @@ void sub_8039B58(struct Sprite *sprite);
void sub_8039BB4(struct Sprite *sprite);
void sub_80105DC(struct Sprite *sprite);
void sub_8039C00(struct Sprite *sprite);
-void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d);
-void dp11b_obj_free(u8 bank, bool8 b);
+void dp11b_obj_instanciate(u8 battlerId, u8 b, s8 c, s8 d);
+void dp11b_obj_free(u8 battlerId, bool8 b);
void sub_8039E44(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
void sub_8039E84(struct Sprite *sprite);
@@ -35,12 +35,12 @@ void sub_803B3AC(void); // unused
void sub_803B598(void); // unused
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
-void sub_803BDA0(u8 bank);
+void sub_803BDA0(u8 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
-u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves);
+u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
-bool8 TryRunFromBattle(u8 bank);
+bool8 TryRunFromBattle(u8 battlerId);
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index 26659ff20..6c84d1f0f 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -1,51 +1,6 @@
#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_BATTLE_SCRIPT_COMMANDS_H
-#define NO_ACC_CALC 0xFFFE
-#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
-#define ACC_CURR_MOVE 0
-
-#define CMP_EQUAL 0x0
-#define CMP_NOT_EQUAL 0x1
-#define CMP_GREATER_THAN 0x2
-#define CMP_LESS_THAN 0x3
-#define CMP_COMMON_BITS 0x4
-#define CMP_NO_COMMON_BITS 0x5
-
-#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
-#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
-#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
-
-#define ATK48_STAT_NEGATIVE 0x1
-#define ATK48_STAT_BY_TWO 0x2
-#define ATK48_BIT_x4 0x4
-#define ATK48_LOWER_FAIL_CHECK 0x8
-
-#define ATK4F_DONT_CHECK_STATUSES 0x80
-
-#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
-#define VARIOUS_SET_MAGIC_COAT_TARGET 1
-#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
-#define VARIOUS_GET_MOVE_TARGET 3
-#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
-#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
-#define VARIOUS_EMIT_YESNOBOX 13
-#define VARIOUS_WAIT_CRY 18
-#define VARIOUS_RETURN_OPPONENT_MON1 19
-#define VARIOUS_RETURN_OPPONENT_MON2 20
-#define VARIOUS_SET_TELEPORT_OUTCOME 25
-#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
-
-#define ATK80_DMG_CHANGE_SIGN 0
-#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
-#define ATK80_DMG_DOUBLED 2
-
-#define STAT_CHANGE_BS_PTR 0x1
-#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
-
-#define STAT_CHANGE_WORKED 0
-#define STAT_CHANGE_DIDNT_WORK 1
-
#define WINDOW_CLEAR 0x1
#define WINDOW_x80 0x80
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
index 2e31a37c5..ffd999660 100644
--- a/include/battle_scripts.h
+++ b/include/battle_scripts.h
@@ -82,7 +82,7 @@ extern const u8 BattleScript_SpikesOnAttacker[];
extern const u8 BattleScript_82DAE7A[];
extern const u8 BattleScript_SpikesOnTarget[];
extern const u8 BattleScript_82DAEB1[];
-extern const u8 BattleScript_SpikesOngBank1[];
+extern const u8 BattleScript_SpikesOnFaintedBattler[];
extern const u8 BattleScript_82DAEE8[];
extern const u8 BattleScript_82DAEFE[];
extern const u8 BattleScript_PerishSongTakesLife[];
diff --git a/include/battle_util.h b/include/battle_util.h
index 56628c11d..d992faa47 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -44,7 +44,7 @@
#define BS_GET_PLAYER2 13
#define BS_GET_OPPONENT2 14
-u8 GetBattleBank(u8 caseId);
+u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
void PressurePPLoseOnUsingImprision(u8 bankAtk);
diff --git a/include/constants/battle.h b/include/constants/battle.h
new file mode 100644
index 000000000..f3d7a8e0e
--- /dev/null
+++ b/include/constants/battle.h
@@ -0,0 +1,284 @@
+#ifndef GUARD_CONSTANTS_BATTLE_H
+#define GUARD_CONSTANTS_BATTLE_H
+
+/*
+ * A battler may be in one of four positions on the field. The first bit determines
+ * what side the battler is on, either the player's side or the opponent's side.
+ * The second bit determines what flank the battler is on, either the left or right.
+ * Note that the opponent's flanks are drawn corresponding to their perspective, so
+ * their right mon appears on the left, and their left mon appears on the right.
+ * The battler ID is usually the same as the position, except in the case of link battles.
+ *
+ * + ------------------------- +
+ * | Opponent's side |
+ * | Right Left |
+ * | 3 1 |
+ * | |
+ * | Player's side |
+ * | Left Right |
+ * | 0 2 |
+ * ----------------------------+
+ * | |
+ * | |
+ * +---------------------------+
+ */
+
+#define MAX_BATTLERS_COUNT 4
+
+#define B_POSITION_PLAYER_LEFT 0
+#define B_POSITION_OPPONENT_LEFT 1
+#define B_POSITION_PLAYER_RIGHT 2
+#define B_POSITION_OPPONENT_RIGHT 3
+
+// These macros can be used with either battler ID or positions to get the partner or the opposite mon
+#define BATTLE_OPPOSITE(id) ((id) ^ 1)
+#define BATTLE_PARTNER(id) ((id) ^ 2)
+
+#define B_SIDE_PLAYER 0
+#define B_SIDE_OPPONENT 1
+
+#define B_FLANK_LEFT 0
+#define B_FLANK_RIGHT 1
+
+#define BIT_SIDE 1
+#define BIT_FLANK 2
+
+// Battle Type Flags
+#define BATTLE_TYPE_DOUBLE 0x0001
+#define BATTLE_TYPE_LINK 0x0002
+#define BATTLE_TYPE_WILD 0x0004
+#define BATTLE_TYPE_TRAINER 0x0008
+#define BATTLE_TYPE_FIRST_BATTLE 0x0010
+#define BATTLE_TYPE_20 0x0020
+#define BATTLE_TYPE_MULTI 0x0040
+#define BATTLE_TYPE_SAFARI 0x0080
+#define BATTLE_TYPE_BATTLE_TOWER 0x0100
+#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
+#define BATTLE_TYPE_ROAMER 0x0400
+#define BATTLE_TYPE_EREADER_TRAINER 0x0800
+#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
+#define BATTLE_TYPE_LEGENDARY 0x2000
+#define BATTLE_TYPE_REGI 0x4000
+#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
+#define BATTLE_TYPE_DOME 0x10000
+#define BATTLE_TYPE_PALACE 0x20000
+#define BATTLE_TYPE_ARENA 0x40000
+#define BATTLE_TYPE_FACTORY 0x80000
+#define BATTLE_TYPE_PIKE 0x100000
+#define BATTLE_TYPE_PYRAMID 0x200000
+#define BATTLE_TYPE_INGAME_PARTNER 0x400000
+#define BATTLE_TYPE_x800000 0x800000
+#define BATTLE_TYPE_RECORDED 0x1000000
+#define BATTLE_TYPE_x2000000 0x2000000
+#define BATTLE_TYPE_x4000000 0x4000000
+#define BATTLE_TYPE_SECRET_BASE 0x8000000
+#define BATTLE_TYPE_GROUDON 0x10000000
+#define BATTLE_TYPE_KYOGRE 0x20000000
+#define BATTLE_TYPE_RAYQUAZA 0x40000000
+#define BATTLE_TYPE_x80000000 0x80000000
+#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
+#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
+
+// Battle Outcome defines
+#define B_OUTCOME_WON 0x1
+#define B_OUTCOME_LOST 0x2
+#define B_OUTCOME_DREW 0x3
+#define B_OUTCOME_RAN 0x4
+#define B_OUTCOME_PLAYER_TELEPORTED 0x5
+#define B_OUTCOME_MON_FLED 0x6
+#define B_OUTCOME_CAUGHT 0x7
+#define B_OUTCOME_NO_SAFARI_BALLS 0x8
+#define B_OUTCOME_FORFEITED 0x9
+#define B_OUTCOME_MON_TELEPORTED 0xA
+#define B_OUTCOME_LINK_BATTLE_RAN 0x80
+
+// Non-volatile status conditions
+// These persist remain outside of battle and after switching out
+#define STATUS1_NONE 0x0
+#define STATUS1_SLEEP 0x7
+#define STATUS1_POISON 0x8
+#define STATUS1_BURN 0x10
+#define STATUS1_FREEZE 0x20
+#define STATUS1_PARALYSIS 0x40
+#define STATUS1_TOXIC_POISON 0x80
+#define STATUS1_TOXIC_COUNTER 0xF00
+#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON)
+#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)
+
+// Volatile status ailments
+// These are removed after exiting the battle or switching out
+#define STATUS2_CONFUSION 0x00000007
+#define STATUS2_FLINCHED 0x00000008
+#define STATUS2_UPROAR 0x00000070
+#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
+#define STATUS2_LOCK_CONFUSE 0x00000C00
+#define STATUS2_MULTIPLETURNS 0x00001000
+#define STATUS2_WRAPPED 0x0000E000
+#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler
+#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
+#define STATUS2_FOCUS_ENERGY 0x00100000
+#define STATUS2_TRANSFORMED 0x00200000
+#define STATUS2_RECHARGE 0x00400000
+#define STATUS2_RAGE 0x00800000
+#define STATUS2_SUBSTITUTE 0x01000000
+#define STATUS2_DESTINY_BOND 0x02000000
+#define STATUS2_ESCAPE_PREVENTION 0x04000000
+#define STATUS2_NIGHTMARE 0x08000000
+#define STATUS2_CURSED 0x10000000
+#define STATUS2_FORESIGHT 0x20000000
+#define STATUS2_DEFENSE_CURL 0x40000000
+#define STATUS2_TORMENT 0x80000000
+
+// Seems like per-battler statuses. Not quite sure how to categorize these
+#define STATUS3_LEECHSEED_BANK 0x3
+#define STATUS3_LEECHSEED 0x4
+#define STATUS3_ALWAYS_HITS 0x18 // two bits
+#define STATUS3_PERISH_SONG 0x20
+#define STATUS3_ON_AIR 0x40
+#define STATUS3_UNDERGROUND 0x80
+#define STATUS3_MINIMIZED 0x100
+#define STATUS3_ROOTED 0x400
+#define STATUS3_CHARGED_UP 0x200
+#define STATUS3_YAWN 0x1800 // two bits
+#define STATUS3_IMPRISONED_OTHERS 0x2000
+#define STATUS3_GRUDGE 0x4000
+#define STATUS3_CANT_SCORE_A_CRIT 0x8000
+#define STATUS3_MUDSPORT 0x10000
+#define STATUS3_WATERSPORT 0x20000
+#define STATUS3_UNDERWATER 0x40000
+#define STATUS3_INTIMIDATE_POKES 0x80000
+#define STATUS3_TRACE 0x100000
+#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)
+
+// Not really sure what a "hitmarker" is.
+#define HITMARKER_x10 0x00000010
+#define HITMARKER_x20 0x00000020
+#define HITMARKER_DESTINYBOND 0x00000040
+#define HITMARKER_NO_ANIMATIONS 0x00000080
+#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
+#define HITMARKER_NO_ATTACKSTRING 0x00000200
+#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
+#define HITMARKER_NO_PPDEDUCT 0x00000800
+#define HITMARKER_PURSUIT_TRAP 0x00001000
+#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
+#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
+#define HITMARKER_RUN 0x00008000
+#define HITMARKER_IGNORE_ON_AIR 0x00010000
+#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
+#define HITMARKER_IGNORE_UNDERWATER 0x00040000
+#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
+#define HITMARKER_x100000 0x00100000
+#define HITMARKER_x200000 0x00200000
+#define HITMARKER_x400000 0x00400000
+#define HITMARKER_x800000 0x00800000
+#define HITMARKER_GRUDGE 0x01000000
+#define HITMARKER_OBEYS 0x02000000
+#define HITMARKER_x4000000 0x04000000
+#define HITMARKER_x8000000 0x08000000
+#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C)
+#define HITMARKER_UNK(battler) (0x10000000 << battler)
+
+// Per-side statuses that affect an entire party
+#define SIDE_STATUS_REFLECT (1 << 0)
+#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
+#define SIDE_STATUS_X4 (1 << 2)
+#define SIDE_STATUS_SPIKES (1 << 4)
+#define SIDE_STATUS_SAFEGUARD (1 << 5)
+#define SIDE_STATUS_FUTUREATTACK (1 << 6)
+#define SIDE_STATUS_MIST (1 << 8)
+#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
+
+// Flags describing move's result
+#define MOVE_RESULT_MISSED (1 << 0)
+#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
+#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
+#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
+#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
+#define MOVE_RESULT_FAILED (1 << 5)
+#define MOVE_RESULT_FOE_ENDURED (1 << 6)
+#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
+#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
+
+// Battle Weather flags
+#define WEATHER_RAIN_TEMPORARY (1 << 0)
+#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
+#define WEATHER_RAIN_PERMANENT (1 << 2)
+#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
+#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
+#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
+#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
+#define WEATHER_SUN_TEMPORARY (1 << 5)
+#define WEATHER_SUN_PERMANENT (1 << 6)
+#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
+#define WEATHER_HAIL (1 << 7)
+#define WEATHER_HAIL_ANY (WEATHER_HAIL)
+#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
+
+// Move Effects
+#define MOVE_EFFECT_SLEEP 0x1
+#define MOVE_EFFECT_POISON 0x2
+#define MOVE_EFFECT_BURN 0x3
+#define MOVE_EFFECT_FREEZE 0x4
+#define MOVE_EFFECT_PARALYSIS 0x5
+#define MOVE_EFFECT_TOXIC 0x6
+#define MOVE_EFFECT_CONFUSION 0x7
+#define MOVE_EFFECT_FLINCH 0x8
+#define MOVE_EFFECT_TRI_ATTACK 0x9
+#define MOVE_EFFECT_UPROAR 0xA
+#define MOVE_EFFECT_PAYDAY 0xB
+#define MOVE_EFFECT_CHARGING 0xC
+#define MOVE_EFFECT_WRAP 0xD
+#define MOVE_EFFECT_RECOIL_25 0xE
+#define MOVE_EFFECT_ATK_PLUS_1 0xF
+#define MOVE_EFFECT_DEF_PLUS_1 0x10
+#define MOVE_EFFECT_SPD_PLUS_1 0x11
+#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
+#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
+#define MOVE_EFFECT_ACC_PLUS_1 0x14
+#define MOVE_EFFECT_EVS_PLUS_1 0x15
+#define MOVE_EFFECT_ATK_MINUS_1 0x16
+#define MOVE_EFFECT_DEF_MINUS_1 0x17
+#define MOVE_EFFECT_SPD_MINUS_1 0x18
+#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
+#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
+#define MOVE_EFFECT_ACC_MINUS_1 0x1B
+#define MOVE_EFFECT_EVS_MINUS_1 0x1C
+#define MOVE_EFFECT_RECHARGE 0x1D
+#define MOVE_EFFECT_RAGE 0x1E
+#define MOVE_EFFECT_STEAL_ITEM 0x1F
+#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
+#define MOVE_EFFECT_NIGHTMARE 0x21
+#define MOVE_EFFECT_ALL_STATS_UP 0x22
+#define MOVE_EFFECT_RAPIDSPIN 0x23
+#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
+#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
+#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
+#define MOVE_EFFECT_ATK_PLUS_2 0x27
+#define MOVE_EFFECT_DEF_PLUS_2 0x28
+#define MOVE_EFFECT_SPD_PLUS_2 0x29
+#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
+#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
+#define MOVE_EFFECT_ACC_PLUS_2 0x2C
+#define MOVE_EFFECT_EVS_PLUS_2 0x2D
+#define MOVE_EFFECT_ATK_MINUS_2 0x2E
+#define MOVE_EFFECT_DEF_MINUS_2 0x2F
+#define MOVE_EFFECT_SPD_MINUS_2 0x30
+#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
+#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
+#define MOVE_EFFECT_ACC_MINUS_2 0x33
+#define MOVE_EFFECT_EVS_MINUS_2 0x34
+#define MOVE_EFFECT_THRASH 0x35
+#define MOVE_EFFECT_KNOCK_OFF 0x36
+#define MOVE_EFFECT_NOTHING_37 0x37
+#define MOVE_EFFECT_NOTHING_38 0x38
+#define MOVE_EFFECT_NOTHING_39 0x39
+#define MOVE_EFFECT_NOTHING_3A 0x3A
+#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
+#define MOVE_EFFECT_NOTHING_3C 0x3C
+#define MOVE_EFFECT_NOTHING_3D 0x3D
+#define MOVE_EFFECT_NOTHING_3E 0x3E
+#define MOVE_EFFECT_NOTHING_3F 0x3F
+#define MOVE_EFFECT_AFFECTS_USER 0x40
+#define MOVE_EFFECT_CERTAIN 0x80
+
+#endif // GUARD_CONSTANTS_BATTLE_H
diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h
index 9d89d75f0..7d2c70307 100644
--- a/include/constants/battle_ai.h
+++ b/include/constants/battle_ai.h
@@ -1,7 +1,7 @@
-#ifndef GUARD_BATTLE_AI_H
-#define GUARD_BATTLE_AI_H
+#ifndef GUARD_CONSTANTS_BATTLE_AI_H
+#define GUARD_CONSTANTS_BATTLE_AI_H
-// banks enum
+// battlers
#define AI_TARGET 0
#define AI_USER 1
#define AI_TARGET_PARTNER 2
@@ -22,7 +22,7 @@
#define AI_EFFECTIVENESS_x0_25 10
#define AI_EFFECTIVENESS_x0 0
-// ai weather enum
+// ai weather
#define AI_WEATHER_SUN 0
#define AI_WEATHER_RAIN 1
#define AI_WEATHER_SANDSTORM 2
@@ -49,4 +49,4 @@
#define AI_SCRIPT_SAFARI (1 << 30)
#define AI_SCRIPT_FIRST_BATTLE (1 << 31)
-#endif // GUARD_BATTLE_AI_H
+#endif // GUARD_CONSTANTS_BATTLE_AI_H
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index de2fbebb1..270ac55e0 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -1,7 +1,7 @@
#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H
#define GUARD_CONSTANTS_BATTLE_ANIM_H
-// banks enum used in scripts
+// battlers
#define ANIM_ATTACKER 0
#define ANIM_TARGET 1
#define ANIM_ATK_PARTNER 2
diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h
new file mode 100644
index 000000000..0390f17f4
--- /dev/null
+++ b/include/constants/battle_script_commands.h
@@ -0,0 +1,97 @@
+#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
+#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
+
+// Battle Scripting and BattleCommunication addresses
+#define sPAINSPLIT_HP gBattleScripting
+#define sBIDE_DMG gBattleScripting + 4
+#define sMULTIHIT_STRING gBattleScripting + 8
+#define sDMG_MULTIPLIER gBattleScripting + 0xE
+#define sTWOTURN_STRINGID gBattleScripting + 0xF
+#define sB_ANIM_ARG1 gBattleScripting + 0x10
+#define sB_ANIM_ARG2 gBattleScripting + 0x11
+#define sTRIPLE_KICK_POWER gBattleScripting + 0x12
+#define sMOVEEND_STATE gBattleScripting + 0x14
+#define sBANK_WITH_ABILITY gBattleScripting + 0x15
+#define sMULTIHIT_EFFECT gBattleScripting + 0x16
+#define sBANK gBattleScripting + 0x17
+#define sB_ANIM_TURN gBattleScripting + 0x18
+#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19
+#define sSTATCHANGER gBattleScripting + 0x1A
+#define sFIELD_1B gBattleScripting + 0x1B
+#define sGIVEEXP_STATE gBattleScripting + 0x1C
+#define sBATTLE_STYLE gBattleScripting + 0x1D
+#define sLVLBOX_STATE gBattleScripting + 0x1E
+#define sLEARNMOVE_STATE gBattleScripting + 0x1F
+#define sFIELD_20 gBattleScripting + 0x20
+#define sRESHOW_MAIN_STATE gBattleScripting + 0x21
+#define sRESHOW_HELPER_STATE gBattleScripting + 0x22
+#define sFIELD_23 gBattleScripting + 0x23
+#define sFIELD_24 gBattleScripting + 0x24
+#define sMULTIPLAYER_ID gBattleScripting + 0x25
+
+#define cEFFECT_CHOOSER gBattleCommunication + 3
+#define cMULTISTRING_CHOOSER gBattleCommunication + 5
+
+// Battle Script defines for getting the wanted battler
+#define BS_TARGET 0
+#define BS_ATTACKER 1
+#define BS_EFFECT_BATTLER 2
+#define BS_FAINTED 3
+#define BS_BANK_0 7
+#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
+#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability
+#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
+#define BS_SCRIPTING 10
+#define BS_PLAYER1 11
+#define BS_OPPONENT1 12
+#define BS_PLAYER2 13
+#define BS_OPPONENT2 14
+
+// atk 01, accuracy calc
+#define NO_ACC_CALC 0xFFFE
+#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
+#define ACC_CURR_MOVE 0
+
+// compare operands
+#define CMP_EQUAL 0x0
+#define CMP_NOT_EQUAL 0x1
+#define CMP_GREATER_THAN 0x2
+#define CMP_LESS_THAN 0x3
+#define CMP_COMMON_BITS 0x4
+#define CMP_NO_COMMON_BITS 0x5
+
+// atk76, various
+#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
+#define VARIOUS_SET_MAGIC_COAT_TARGET 1
+#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
+#define VARIOUS_GET_MOVE_TARGET 3
+#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
+#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
+#define VARIOUS_EMIT_YESNOBOX 13
+#define VARIOUS_WAIT_CRY 18
+#define VARIOUS_RETURN_OPPONENT_MON1 19
+#define VARIOUS_RETURN_OPPONENT_MON2 20
+#define VARIOUS_SET_TELEPORT_OUTCOME 25
+#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
+
+// atk80, dmg manipulation
+#define ATK80_DMG_CHANGE_SIGN 0
+#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
+#define ATK80_DMG_DOUBLED 2
+
+// atk4F, a flag used for the jumpifcantswitch command
+#define ATK4F_DONT_CHECK_STATUSES 0x80
+
+// statchange defines
+#define STAT_CHANGE_BS_PTR 0x1
+#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
+#define STAT_CHANGE_WORKED 0
+#define STAT_CHANGE_DIDNT_WORK 1
+
+// atk48
+#define ATK48_STAT_NEGATIVE 0x1
+#define ATK48_STAT_BY_TWO 0x2
+#define ATK48_BIT_x4 0x4
+#define ATK48_LOWER_FAIL_CHECK 0x8
+
+#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_string_ids.h b/include/constants/battle_string_ids.h
index f242284b0..db9ed59bd 100644
--- a/include/battle_string_ids.h
+++ b/include/constants/battle_string_ids.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_BATTLE_STRING_IDS_H
-#define GUARD_BATTLE_STRING_IDS_H
+#ifndef GUARD_CONSTANTS_BATTLE_STRING_IDS_H
+#define GUARD_CONSTANTS_BATTLE_STRING_IDS_H
#define BATTLESTRINGS_COUNT 369
@@ -12,7 +12,6 @@
#define STRINGID_USEDMOVE 4
#define STRINGID_BATTLEEND 5
-
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
#define STRINGID_TRAINER1LOSETEXT 12
#define STRINGID_PKMNGAINEDEXP 13
@@ -384,4 +383,4 @@
#define STRINGID_TRAINER1WINTEXT 379
#define STRINGID_TRAINER2WINTEXT 380
-#endif // GUARD_BATTLE_STRING_IDS_H
+#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
new file mode 100644
index 000000000..78c1583b4
--- /dev/null
+++ b/include/constants/pokemon.h
@@ -0,0 +1,80 @@
+#ifndef GUARD_CONSTANTS_POKEMON_H
+#define GUARD_CONSTANTS_POKEMON_H
+
+// Pokemon types
+#define TYPE_NORMAL 0x00
+#define TYPE_FIGHTING 0x01
+#define TYPE_FLYING 0x02
+#define TYPE_POISON 0x03
+#define TYPE_GROUND 0x04
+#define TYPE_ROCK 0x05
+#define TYPE_BUG 0x06
+#define TYPE_GHOST 0x07
+#define TYPE_STEEL 0x08
+#define TYPE_MYSTERY 0x09
+#define TYPE_FIRE 0x0a
+#define TYPE_WATER 0x0b
+#define TYPE_GRASS 0x0c
+#define TYPE_ELECTRIC 0x0d
+#define TYPE_PSYCHIC 0x0e
+#define TYPE_ICE 0x0f
+#define TYPE_DRAGON 0x10
+#define TYPE_DARK 0x11
+#define NUMBER_OF_MON_TYPES 0x12
+
+// Pokemon egg groups
+#define EGG_GROUP_NONE 0
+#define EGG_GROUP_MONSTER 1
+#define EGG_GROUP_WATER_1 2
+#define EGG_GROUP_BUG 3
+#define EGG_GROUP_FLYING 4
+#define EGG_GROUP_FIELD 5
+#define EGG_GROUP_FAIRY 6
+#define EGG_GROUP_GRASS 7
+#define EGG_GROUP_HUMAN_LIKE 8
+#define EGG_GROUP_WATER_3 9
+#define EGG_GROUP_MINERAL 10
+#define EGG_GROUP_AMORPHOUS 11
+#define EGG_GROUP_WATER_2 12
+#define EGG_GROUP_DITTO 13
+#define EGG_GROUP_DRAGON 14
+#define EGG_GROUP_UNDISCOVERED 15
+
+// Pokemon natures
+#define NATURE_HARDY 0
+#define NATURE_LONELY 1
+#define NATURE_BRAVE 2
+#define NATURE_ADAMANT 3
+#define NATURE_NAUGHTY 4
+#define NATURE_BOLD 5
+#define NATURE_DOCILE 6
+#define NATURE_RELAXED 7
+#define NATURE_IMPISH 8
+#define NATURE_LAX 9
+#define NATURE_TIMID 10
+#define NATURE_HASTY 11
+#define NATURE_SERIOUS 12
+#define NATURE_JOLLY 13
+#define NATURE_NAIVE 14
+#define NATURE_MODEST 15
+#define NATURE_MILD 16
+#define NATURE_QUIET 17
+#define NATURE_BASHFUL 18
+#define NATURE_RASH 19
+#define NATURE_CALM 20
+#define NATURE_GENTLE 21
+#define NATURE_SASSY 22
+#define NATURE_CAREFUL 23
+#define NATURE_QUIRKY 24
+
+// Pokemon Stats
+#define STAT_HP 0
+#define STAT_ATK 1
+#define STAT_DEF 2
+#define STAT_SPEED 3
+#define STAT_SPATK 4
+#define STAT_SPDEF 5
+#define STAT_ACC 6 // only in battles
+#define STAT_EVASION 7 // only in battles
+
+#endif // GUARD_CONSTANTS_POKEMON_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 8db61bf76..3d7917b92 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -1,6 +1,7 @@
#ifndef GUARD_POKEMON_H
#define GUARD_POKEMON_H
+#include "constants/pokemon.h"
#include "sprite.h"
#define MON_DATA_PERSONALITY 0
@@ -109,81 +110,11 @@
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
-#define TYPE_NORMAL 0x00
-#define TYPE_FIGHTING 0x01
-#define TYPE_FLYING 0x02
-#define TYPE_POISON 0x03
-#define TYPE_GROUND 0x04
-#define TYPE_ROCK 0x05
-#define TYPE_BUG 0x06
-#define TYPE_GHOST 0x07
-#define TYPE_STEEL 0x08
-#define TYPE_MYSTERY 0x09
-#define TYPE_FIRE 0x0a
-#define TYPE_WATER 0x0b
-#define TYPE_GRASS 0x0c
-#define TYPE_ELECTRIC 0x0d
-#define TYPE_PSYCHIC 0x0e
-#define TYPE_ICE 0x0f
-#define TYPE_DRAGON 0x10
-#define TYPE_DARK 0x11
-
-#define NUMBER_OF_MON_TYPES 0x12
-
#define MAX_TOTAL_EVS 510
#define NUM_STATS 6
#define UNOWN_FORM_COUNT 28
#define MAX_MON_LEVEL 100
-enum
-{
- EGG_GROUP_NONE,
- EGG_GROUP_MONSTER,
- EGG_GROUP_WATER_1,
- EGG_GROUP_BUG,
- EGG_GROUP_FLYING,
- EGG_GROUP_FIELD,
- EGG_GROUP_FAIRY,
- EGG_GROUP_GRASS,
- EGG_GROUP_HUMAN_LIKE,
- EGG_GROUP_WATER_3,
- EGG_GROUP_MINERAL,
- EGG_GROUP_AMORPHOUS,
- EGG_GROUP_WATER_2,
- EGG_GROUP_DITTO,
- EGG_GROUP_DRAGON,
- EGG_GROUP_UNDISCOVERED
-};
-
-enum
-{
- NATURE_HARDY,
- NATURE_LONELY,
- NATURE_BRAVE,
- NATURE_ADAMANT,
- NATURE_NAUGHTY,
- NATURE_BOLD,
- NATURE_DOCILE,
- NATURE_RELAXED,
- NATURE_IMPISH,
- NATURE_LAX,
- NATURE_TIMID,
- NATURE_HASTY,
- NATURE_SERIOUS,
- NATURE_JOLLY,
- NATURE_NAIVE,
- NATURE_MODEST,
- NATURE_MILD,
- NATURE_QUIET,
- NATURE_BASHFUL,
- NATURE_RASH,
- NATURE_CALM,
- NATURE_GENTLE,
- NATURE_SASSY,
- NATURE_CAREFUL,
- NATURE_QUIRKY,
-};
-
struct PokemonSubstruct0
{
u16 species;
@@ -416,28 +347,6 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
-enum
-{
- STAT_STAGE_HP, // 0
- STAT_STAGE_ATK, // 1
- STAT_STAGE_DEF, // 2
- STAT_STAGE_SPEED, // 3
- STAT_STAGE_SPATK, // 4
- STAT_STAGE_SPDEF, // 5
- STAT_STAGE_ACC, // 6
- STAT_STAGE_EVASION, // 7
-};
-
-enum
-{
- STAT_HP, // 0
- STAT_ATK, // 1
- STAT_DEF, // 2
- STAT_SPD, // 3
- STAT_SPATK, // 4
- STAT_SPDEF, // 5
-};
-
struct BaseStats
{
/* 0x00 */ u8 baseHP;
@@ -556,13 +465,20 @@ extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
extern struct Pokemon gEnemyParty[PARTY_SIZE];
+extern struct SpriteTemplate gUnknown_0202499C;
+extern struct PokemonStorage* gPokemonStoragePtr;
+
extern const struct BaseStats gBaseStats[];
extern const u8 *const gItemEffectTable[];
extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
-extern struct PokemonStorage* gPokemonStoragePtr;
extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
-extern struct SpriteTemplate gUnknown_0202499C;
+extern const u8 gUnknown_08329D22[];
+extern const u8 gUnknown_08329D26[];
+extern const u8 gUnknown_08329D2A[];
+extern const u8 gStatStageRatios[][2];
+extern const u16 gUnknown_08329D54[];
+extern const struct SpriteTemplate gUnknown_08329D98[];
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
@@ -722,6 +638,6 @@ bool8 HasTwoFramesAnimation(u16 species);
bool8 sub_806F104(void);
struct Unknown_806F160_Struct *sub_806F2AC(u8 id, u8 arg1);
void sub_806F47C(u8 id);
-u8 *sub_806F4F8(u8 id, u8 arg1)
+u8 *sub_806F4F8(u8 id, u8 arg1);
#endif // GUARD_POKEMON_H
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
index 296245a24..8b1fa258d 100644
--- a/include/recorded_battle.h
+++ b/include/recorded_battle.h
@@ -7,9 +7,9 @@ extern u8 gUnknown_0203C7B4;
void sub_8184DA4(u8 arg0);
void sub_8184E58(void);
-void RecordedBattle_SetBattlerAction(u8 bank, u8 action);
-void RecordedBattle_ClearBattlerAction(u8 bank, u8 bytesToClear);
-u8 RecordedBattle_GetBattlerAction(u8 bank);
+void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
+void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
+u8 RecordedBattle_GetBattlerAction(u8 battlerId);
u8 sub_81850D0(void);
u8 sub_81850DC(u8 *arg0);
void sub_81851A8(u8 *arg0);
@@ -19,13 +19,13 @@ void PlayRecordedBattle(void (*CB2_After)(void));
u8 sub_8185EA0(void);
u8 sub_8185EAC(void);
void RecordedBattle_SaveParties(void);
-u8 GetActiveBankLinkPlayerGender(void);
+u8 GetActiveBattlerLinkPlayerGender(void);
void sub_8185F84(void);
void sub_8185F90(u16 arg0);
u8 sub_8185FAC(void);
u8 GetBattleStyleInRecordedBattle(void);
u8 GetTextSpeedInRecordedBattle(void);
-void RecordedBattle_CopyBankMoves(void);
+void RecordedBattle_CopyBattlerMoves(void);
void sub_818603C(u8 arg0);
u32 GetAiScriptsInRecordedBattle(void);
void sub_8186444(void);
diff --git a/ld_script.txt b/ld_script.txt
index ffe23a780..7938047c3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -378,7 +378,6 @@ SECTIONS {
src/battle_controller_link_opponent.o(.rodata);
data/data2c.o(.rodata);
src/pokemon.o(.rodata);
- data/data2e.o(.rodata);
src/trig.o(.rodata);
src/util.o(.rodata);
src/daycare.o(.rodata);
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 355d81d2c..d6ccf9305 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -2,6 +2,7 @@
#include "battle_ai_script_commands.h"
#include "pokemon.h"
#include "battle.h"
+#include "battle_setup.h"
#include "constants/species.h"
#include "constants/abilities.h"
#include "random.h"
@@ -44,26 +45,7 @@ in order to read the next command correctly. refer to battle_ai_scripts.s for th
AI scripts.
*/
-extern u32 gBattleTypeFlags;
-extern u8 gActiveBattler;
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gCurrentMove;
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u16 gLastMoves[MAX_BATTLERS_COUNT];
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u32 gStatuses3[MAX_BATTLERS_COUNT];
-extern u16 gSideStatuses[2];
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u16 gDynamicBasePower;
-extern u8 gMoveResultFlags;
-extern s32 gBattleMoveDamage;
-extern u8 gCritMultiplier;
-extern u16 gBattleWeather;
-
extern const struct BattleMove gBattleMoves[];
-extern const struct BaseStats gBaseStats[];
extern const u8 * const gBattleAI_ScriptsTable[];
extern u32 GetAiScriptsInRecordedBattle();
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 28055c0df..c3bb0d422 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -9,21 +9,7 @@
#include "util.h"
#include "constants/items.h"
-extern u8 gActiveBattler;
-extern u8 gAbsentBattlerFlags;
-extern u32 gBattleTypeFlags;
-extern u32 gStatuses3[MAX_BATTLERS_COUNT];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT];
-extern u8 gLastHitBy[MAX_BATTLERS_COUNT];
-extern u16 gDynamicBasePower;
-extern u8 gMoveResultFlags;
-extern u8 gCritMultiplier;
-extern s32 gBattleMoveDamage;
-
extern const struct BattleMove gBattleMoves[];
-extern const struct BaseStats gBaseStats[];
extern const u8 gTypeEffectiveness[];
extern const u8 * const gItemEffectTable[]; // todo: fix once struct is declared
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 34b7a7476..7606f701d 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -25,8 +25,6 @@
#define ANIM_SPRITE_INDEX_COUNT 8
-extern u8 gBattlerAttacker;
-extern u8 gBattlerTarget;
extern u16 gBattle_WIN0H;
extern u16 gBattle_WIN0V;
extern u16 gBattle_WIN1H;
@@ -35,12 +33,9 @@ extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern u8 gDecompressionBuffer[];
extern const u16 gUnknown_082C8D64[];
extern const u8 * const gBattleAnims_Moves[];
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 51c54f0a3..f493bafea 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -18,6 +18,7 @@
#include "window.h"
#include "text_window.h"
#include "menu.h"
+#include "battle_setup.h"
struct BattleBackground
{
@@ -35,13 +36,10 @@ extern const struct BgTemplate gUnknown_0831AA08[4];
extern const struct WindowTemplate *gUnknown_0831ABA0[];
extern const struct BattleBackground gBattleTerrainTable[];
-extern u8 gBattleTerrain;
-extern u16 gTrainerBattleOpponent_A;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
-extern u16 gPartnerTrainerId;
extern u8 GetCurrentMapBattleScene(void);
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index a98939374..aac277d9e 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -24,37 +24,12 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct UnusedControllerStruct gUnknown_02022D0C;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct BattleMove gBattleMoves[];
@@ -64,6 +39,7 @@ extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
extern void sub_81851A8(u8 *);
extern u16 sub_8068B48(void);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void LinkOpponentHandleGetMonData(void);
@@ -1721,7 +1697,7 @@ static void LinkOpponentHandleFaintingCry(void)
static void LinkOpponentHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
LinkOpponentBufferExecCompleted();
}
@@ -1743,7 +1719,7 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_28;
@@ -1803,7 +1779,7 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void)
}
}
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
@@ -1825,7 +1801,7 @@ static void sub_806782C(void)
static void LinkOpponentHandleCmd49(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
LinkOpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 312b13d4c..1734abe62 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -23,33 +23,10 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -59,6 +36,7 @@ extern const struct BattleMove gBattleMoves[];
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
extern void sub_81851A8(u8 *);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void LinkPartnerHandleGetMonData(void);
@@ -1542,7 +1520,7 @@ static void LinkPartnerHandleFaintingCry(void)
static void LinkPartnerHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
LinkPartnerBufferExecCompleted();
}
@@ -1588,7 +1566,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_112;
@@ -1635,7 +1613,7 @@ static void LinkPartnerHandleDrawPartyStatusSummary(void)
else
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
@@ -1657,7 +1635,7 @@ static void sub_814DE9C(void)
static void LinkPartnerHandleCmd49(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
LinkPartnerBufferExecCompleted();
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 3f8968499..26e0191cb 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -27,32 +27,12 @@
#include "random.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern bool8 gDoingBattleAnim;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void *gUnknown_020244D8;
-extern void *gUnknown_020244DC;
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern struct UnusedControllerStruct gUnknown_02022D0C;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_020244B4[];
-extern void (*gPreBattleCallback1)(void);
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct BattleMove gBattleMoves[];
@@ -1865,7 +1845,7 @@ static void OpponentHandleFaintingCry(void)
static void OpponentHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
OpponentBufferExecCompleted();
}
@@ -1887,7 +1867,7 @@ static void OpponentHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_26;
@@ -1952,7 +1932,7 @@ static void OpponentHandleDrawPartyStatusSummary(void)
}
}
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
@@ -1974,7 +1954,7 @@ static void sub_8062A2C(void)
static void OpponentHandleCmd49(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
OpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 53342e5f1..897122ddd 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -26,43 +26,19 @@
#include "random.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
+#include "item_use.h"
+#include "recorded_battle.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gAbsentBattlerFlags;
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern u8 gPlayerDpadHoldFrames;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern u8 gMultiUsePlayerCursor;
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u16 gPartnerTrainerId;
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
extern u8 gUnknown_0203CEE8;
extern u8 gUnknown_0203CEE9;
extern u8 gUnknown_0203CF00[];
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
-extern u8 gNumberOfMovesToChoose;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern s32 gUnknown_0203CD70;
-extern u8 gBankInMenu;
-extern u32 gBattlePalaceMoveSelectionRngValue;
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
-extern u8 gUnknown_020244B4[];
-extern u16 gUnknown_020243FC;
extern struct UnusedControllerStruct gUnknown_02022D0C;
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern struct SpriteTemplate gUnknown_0202499C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -2676,7 +2652,7 @@ static void PlayerHandleChooseItem(void)
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem;
- gBankInMenu = gActiveBattler;
+ gBattlerInMenuId = gActiveBattler;
for (i = 0; i < 3; i++)
gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][1 + i];
@@ -2703,7 +2679,7 @@ static void PlayerHandleChoosePokemon(void)
*(&gBattleStruct->field_B0) = gBattleBufferA[gActiveBattler][3];
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gBattlerControllerFuncs[gActiveBattler] = sub_80597CC;
- gBankInMenu = gActiveBattler;
+ gBattlerInMenuId = gActiveBattler;
}
}
@@ -2952,7 +2928,7 @@ static void PlayerHandleFaintingCry(void)
static void PlayerHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
PlayerBufferExecCompleted();
}
@@ -2980,7 +2956,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
@@ -3038,7 +3014,7 @@ static void PlayerHandleDrawPartyStatusSummary(void)
else
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
@@ -3060,7 +3036,7 @@ static void sub_805CE38(void)
static void PlayerHandleCmd49(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
PlayerBufferExecCompleted();
}
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index fd4f742fc..d2f85f85e 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -22,34 +22,11 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
+#include "item_use.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u8 gBankInMenu;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -59,6 +36,7 @@ extern const struct BattleMove gBattleMoves[];
extern void sub_81358F4(void);
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void PlayerPartnerHandleGetMonData(void);
@@ -1795,7 +1773,7 @@ static void PlayerPartnerHandleFaintingCry(void)
static void PlayerPartnerHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
PlayerPartnerBufferExecCompleted();
}
@@ -1834,7 +1812,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_77;
@@ -1881,7 +1859,7 @@ static void PlayerPartnerHandleDrawPartyStatusSummary(void)
else
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
@@ -1903,7 +1881,7 @@ static void sub_81BE498(void)
static void PlayerPartnerHandleCmd49(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
PlayerPartnerBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 14e84963a..2295c4a75 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -24,37 +24,13 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "item_use.h"
+#include "battle_setup.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct UnusedControllerStruct gUnknown_02022D0C;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
extern u8 gUnknown_0203C7B4;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -62,6 +38,7 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
extern u16 sub_8068B48(void);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void RecordedOpponentHandleGetMonData(void);
@@ -1257,7 +1234,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
}
else
{
- trainerPicId = PlayerGenderToFrontTrainerPicId(GetActiveBankLinkPlayerGender());
+ trainerPicId = PlayerGenderToFrontTrainerPicId(GetActiveBattlerLinkPlayerGender());
}
}
else
@@ -1660,7 +1637,7 @@ static void RecordedOpponentHandleFaintingCry(void)
static void RecordedOpponentHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
RecordedOpponentBufferExecCompleted();
}
@@ -1682,7 +1659,7 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_70;
@@ -1742,7 +1719,7 @@ static void RecordedOpponentHandleDrawPartyStatusSummary(void)
}
}
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
@@ -1764,7 +1741,7 @@ static void sub_818975C(void)
static void RecordedOpponentHandleCmd49(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
RecordedOpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 8d5c8a567..0d06e26eb 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -23,35 +23,11 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "item_use.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u8 gBankInMenu;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u8 gUnknown_020244B4[];
extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
-extern u8 gBattleCommunication[];
extern u8 gUnknown_0203C7B4;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct UnusedControllerStruct gUnknown_02022D0C;
@@ -62,6 +38,7 @@ extern const struct BattleMove gBattleMoves[];
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void RecordedPlayerHandleGetMonData(void);
@@ -1229,7 +1206,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- trainerPicId = GetActiveBankLinkPlayerGender();
+ trainerPicId = GetActiveBattlerLinkPlayerGender();
else
trainerPicId = gLinkPlayers[gUnknown_0203C7B4].gender;
}
@@ -1683,7 +1660,7 @@ static void RecordedPlayerHandleFaintingCry(void)
static void RecordedPlayerHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
RecordedPlayerBufferExecCompleted();
}
@@ -1718,7 +1695,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_120;
@@ -1765,7 +1742,7 @@ static void RecordedPlayerHandleDrawPartyStatusSummary(void)
else
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
@@ -1787,7 +1764,7 @@ static void sub_818CDF4(void)
static void RecordedPlayerHandleCmd49(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
RecordedPlayerBufferExecCompleted();
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index d43ca6205..39eab24ee 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -21,26 +21,11 @@
#include "pokeball.h"
#include "data2.h"
#include "pokeblock.h"
+#include "item_use.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u8 gBankInMenu;
-extern u16 gUnknown_020243FC;
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -499,7 +484,7 @@ static void SafariHandleChooseItem(void)
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gBattlerControllerFuncs[gActiveBattler] = SafariOpenPokeblockCase;
- gBankInMenu = gActiveBattler;
+ gBattlerInMenuId = gActiveBattler;
}
static void SafariHandleChoosePokemon(void)
@@ -647,7 +632,7 @@ static void SafariHandleFaintingCry(void)
static void SafariHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
SafariBufferExecCompleted();
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index c166d9e68..445feaf7a 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -27,37 +27,12 @@
#include "pokeball.h"
#include "data2.h"
#include "party_menu.h"
+#include "battle_setup.h"
+#include "item_use.h"
-extern u32 gBattleControllerExecFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gAbsentBattlerFlags;
-extern u8 gBattlersCount;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern u8 gMultiUsePlayerCursor;
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u16 gPartnerTrainerId;
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleOutcome;
-extern u8 gNumberOfMovesToChoose;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern s32 gUnknown_0203CD70;
-extern u8 gBankInMenu;
-extern u32 gBattlePalaceMoveSelectionRngValue;
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
-extern u8 gUnknown_020244B4[];
-extern u16 gUnknown_020243FC;
extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -1281,7 +1256,7 @@ static void WallyHandleChooseItem(void)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gBattlerControllerFuncs[gActiveBattler] = OpenBagAfterPaletteFade;
- gBankInMenu = gActiveBattler;
+ gBattlerInMenuId = gActiveBattler;
}
static void WallyHandleChoosePokemon(void)
@@ -1451,7 +1426,7 @@ static void WallyHandleFaintingCry(void)
static void WallyHandleIntroSlide(void)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
- gUnknown_020243FC |= 1;
+ gIntroSlideFlags |= 1;
WallyBufferExecCompleted();
}
@@ -1479,7 +1454,7 @@ static void WallyHandleIntroTrainerBallThrow(void)
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBattler]].func = sub_8073C30;
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
@@ -1540,7 +1515,7 @@ static void WallyHandleDrawPartyStatusSummary(void)
else
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- gUnknown_020244B4[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
WallyBufferExecCompleted();
}
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 4f523cfa0..cbb4fff69 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -12,37 +12,13 @@
#include "constants/abilities.h"
#include "battle_message.h"
-extern u32 gBattleTypeFlags;
-extern u32 gBattleControllerExecFlags;
-extern void (*gBattleMainFunc)(void);
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern u8 gActiveBattler;
+extern u8 gBattleBuffersTransferData[0x100];
extern u8 gUnknown_0202428C;
extern u32 gUnknown_02022FF4;
extern u8 gUnknown_0203C7B4;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBuffersTransferData[0x100];
extern u8 gUnknown_02022D08;
extern u8 gUnknown_02022D09;
extern u8 gUnknown_02022D0A;
-extern u8 gBattlerAttacker;
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u8 gEffectBank;
-extern u16 gBattleWeather;
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gCurrentMove;
-extern u16 gChosenMove;
-extern u16 gLastUsedItem;
-extern u8 gBattleOutcome;
-extern u8 gLastUsedAbility;
-extern u8 gStringBattler;
extern const struct BattleMove gBattleMoves[];
@@ -757,7 +733,7 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_LO] = alignedSize;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BANK_FLAGS] = gAbsentBattlerFlags;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BANK] = gEffectBank;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BANK] = gEffectBattler;
for (i = 0; i < size; i++)
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_DATA + i] = data[i];
@@ -923,7 +899,7 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 2];
gBattlerTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 3];
gAbsentBattlerFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 6];
- gEffectBank = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 7];
+ gEffectBattler = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 7];
}
break;
case 1:
@@ -1126,7 +1102,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
stringInfo->scrActive = gBattleScripting.battler;
stringInfo->unk1605E = gBattleStruct->field_52;
stringInfo->hpScale = gBattleStruct->hpScale;
- stringInfo->StringBank = gStringBattler;
+ stringInfo->StringBank = gPotentialItemEffectBattler;
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 7958d07b3..4dc88ab6a 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -22,18 +22,8 @@
#include "blend_palette.h"
#include "contest.h"
#include "constants/songs.h"
+#include "constants/rgb.h"
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gActiveBattler;
-extern u8 gBattlersCount;
-extern u16 gUnknown_020243FC;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
@@ -49,7 +39,6 @@ extern const struct CompressedSpriteSheet gTrainerBackPicTable[];
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[];
-extern const struct SpriteTemplate gUnknown_08329D98[4];
extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
extern const u8 gEnemyMonElevation[];
@@ -68,7 +57,7 @@ extern const u8 gBlankGfxCompressed[];
extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
-extern u8 sub_80688F8(u8, u8 bank);
+extern u8 sub_80688F8(u8, u8 battlerId);
extern u8 pokemon_order_func(u8); // party menu
extern void sub_81B8C68(void);
@@ -366,7 +355,7 @@ void sub_805D770(struct Sprite *sprite, bool8 arg1)
void sub_805D7AC(struct Sprite *sprite)
{
- if (!(gUnknown_020243FC & 1))
+ if (!(gIntroSlideFlags & 1))
{
sprite->pos2.x += sprite->data[0];
if (sprite->pos2.x == 0)
@@ -421,7 +410,7 @@ void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status)
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument)
{
@@ -451,8 +440,8 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank,
gBattleSpritesDataPtr->animationData->animArg = argument;
LaunchBattleAnimation(gBattleAnims_VariousTable, tableId, FALSE);
taskId = CreateTask(Task_ClearBitWhenBattleTableAnimDone, 10);
- gTasks[taskId].tBank = activeBank;
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 1;
+ gTasks[taskId].tBattlerId = activeBank;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 1;
return FALSE;
}
@@ -462,12 +451,12 @@ static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 0;
DestroyTask(taskId);
}
}
-#undef tBank
+#undef tBattlerId
static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
{
@@ -485,7 +474,7 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId)
{
@@ -495,8 +484,8 @@ void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tab
gBattleAnimTarget = defBank;
LaunchBattleAnimation(gBattleAnims_Special, tableId, FALSE);
taskId = CreateTask(Task_ClearBitWhenSpecialAnimDone, 10);
- gTasks[taskId].tBank = activeBank;
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 1;
+ gTasks[taskId].tBattlerId = activeBank;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 1;
}
static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
@@ -504,12 +493,12 @@ static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 0;
DestroyTask(taskId);
}
}
-#undef tBank
+#undef tBattlerId
// great function to include newly added moves that don't have animation yet
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
@@ -517,13 +506,13 @@ bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
return FALSE;
}
-bool8 mplay_80342A4(u8 bank)
+bool8 mplay_80342A4(u8 battlerId)
{
u8 zero = 0;
if (IsSEPlaying())
{
- gBattleSpritesDataPtr->healthBoxesData[bank].field_8++;
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8++;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_8 < 30)
return TRUE;
@@ -532,14 +521,14 @@ bool8 mplay_80342A4(u8 bank)
}
if (zero == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[bank].field_8 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8 = 0;
return FALSE;
}
return TRUE;
}
-void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank)
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
{
u32 monsPersonality, currentPersonality, otId;
u16 species;
@@ -549,50 +538,50 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank)
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
{
species = GetMonData(mon, MON_DATA_SPECIES);
currentPersonality = monsPersonality;
}
else
{
- species = gBattleSpritesDataPtr->battlerData[bank].transformSpecies;
- currentPersonality = gTransformedPersonalities[bank];
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
+ currentPersonality = gTransformedPersonalities[battlerId];
}
otId = GetMonData(mon, MON_DATA_OT_ID);
- position = GetBattlerPosition(bank);
+ position = GetBattlerPosition(battlerId);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
- if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
- LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20);
+ LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
// transform's pink color
- if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies != SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
-void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank)
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
{
u32 monsPersonality, currentPersonality, otId;
u16 species;
@@ -602,21 +591,21 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank)
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
{
species = GetMonData(mon, MON_DATA_SPECIES);
currentPersonality = monsPersonality;
}
else
{
- species = gBattleSpritesDataPtr->battlerData[bank].transformSpecies;
- currentPersonality = gTransformedPersonalities[bank];
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
+ currentPersonality = gTransformedPersonalities[battlerId];
}
otId = GetMonData(mon, MON_DATA_OT_ID);
- position = GetBattlerPosition(bank);
+ position = GetBattlerPosition(battlerId);
- if (sub_80688F8(1, bank) == 1 || gBattleSpritesDataPtr->battlerData[bank].transformSpecies != SPECIES_NONE)
+ if (sub_80688F8(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
gMonSpritesGfxPtr->sprites[position],
@@ -629,28 +618,28 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank)
species, currentPersonality);
}
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
- if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
- LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20);
+ LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
// transform's pink color
- if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies != SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
@@ -663,23 +652,23 @@ void nullsub_24(u16 species)
{
}
-void DecompressTrainerFrontPic(u16 frontPicId, u8 bank)
+void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId)
{
- u8 position = GetBattlerPosition(bank);
+ u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerFrontPicTable[frontPicId],
gMonSpritesGfxPtr->sprites[position],
SPECIES_NONE);
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[frontPicId]);
}
-void DecompressTrainerBackPic(u16 backPicId, u8 bank)
+void DecompressTrainerBackPic(u16 backPicId, u8 battlerId)
{
- u8 position = GetBattlerPosition(bank);
+ u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerBackPicTable[backPicId],
gMonSpritesGfxPtr->sprites[position],
SPECIES_NONE);
LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data,
- 0x100 + 16 * bank, 0x20);
+ 0x100 + 16 * battlerId, 0x20);
}
void nullsub_25(u8 arg0)
@@ -776,7 +765,7 @@ void LoadBattleBarGfx(u8 arg0)
LZDecompressWram(gUnknown_08C093F0, gMonSpritesGfxPtr->barFontGfx);
}
-bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
+bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
{
bool8 retVal = FALSE;
@@ -787,13 +776,13 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
(*state1)++;
break;
case 1:
- if (!BattleLoadAllHealthBoxesGfx(*bank))
+ if (!BattleLoadAllHealthBoxesGfx(*battlerId))
{
- (*bank)++;
+ (*battlerId)++;
}
else
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
@@ -801,47 +790,47 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
(*state1)++;
break;
case 3:
- if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *bank == 0)
- gHealthboxSpriteIds[*bank] = CreateSafariPlayerHealthboxSprites();
+ if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *battlerId == 0)
+ gHealthboxSpriteIds[*battlerId] = CreateSafariPlayerHealthboxSprites();
else
- gHealthboxSpriteIds[*bank] = CreateBattlerHealthboxSprites(*bank);
+ gHealthboxSpriteIds[*battlerId] = CreateBattlerHealthboxSprites(*battlerId);
- (*bank)++;
- if (*bank == gBattlersCount)
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
case 4:
- InitBattlerHealthboxCoords(*bank);
- if (gBattlerPositions[*bank] <= 1)
- DummyBattleInterfaceFunc(gHealthboxSpriteIds[*bank], FALSE);
+ InitBattlerHealthboxCoords(*battlerId);
+ if (gBattlerPositions[*battlerId] <= 1)
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], FALSE);
else
- DummyBattleInterfaceFunc(gHealthboxSpriteIds[*bank], TRUE);
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], TRUE);
- (*bank)++;
- if (*bank == gBattlersCount)
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
case 5:
- if (GetBattlerSide(*bank) == B_SIDE_PLAYER)
+ if (GetBattlerSide(*battlerId) == B_SIDE_PLAYER)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
- UpdateHealthboxAttribute(gHealthboxSpriteIds[*bank], &gPlayerParty[gBattlerPartyIndexes[*bank]], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gPlayerParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL);
}
else
{
- UpdateHealthboxAttribute(gHealthboxSpriteIds[*bank], &gEnemyParty[gBattlerPartyIndexes[*bank]], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gEnemyParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL);
}
- SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*bank]);
- (*bank)++;
- if (*bank == gBattlersCount)
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battlerId]);
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
@@ -875,9 +864,9 @@ void CopyAllBattleSpritesInvisibilities(void)
gBattleSpritesDataPtr->battlerData[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible;
}
-void CopyBattleSpriteInvisibility(u8 bank)
+void CopyBattleSpriteInvisibility(u8 battlerId)
{
- gBattleSpritesDataPtr->battlerData[bank].invisible = gSprites[gBattlerSpriteIds[bank]].invisible;
+ gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible;
}
void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
@@ -896,7 +885,7 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
gBattleMonForms[bankAtk] = gBattleSpritesDataPtr->animationData->animArg;
if (gBattleSpritesDataPtr->battlerData[bankAtk].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
gSprites[gBattlerSpriteIds[bankAtk]].pos1.y = GetBattlerSpriteDefault_Y(bankAtk);
@@ -965,7 +954,7 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[bankDef] * 16, paletteOffset, 32);
}
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
@@ -979,7 +968,7 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
}
}
-void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
+void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
{
u8 position;
s32 i;
@@ -991,17 +980,17 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
if (IsContest())
position = 0;
else
- position = GetBattlerPosition(bank);
+ position = GetBattlerPosition(battlerId);
if (IsContest())
LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
- else if (GetBattlerSide(bank) != B_SIDE_PLAYER)
+ else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]);
else
LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
i = 1;
- var = bank * 16;
+ var = battlerId * 16;
substitutePal = gSubstituteDollPal;
for (; i < 4; i++)
{
@@ -1018,59 +1007,59 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
{
if (!IsContest())
{
- if (GetBattlerSide(bank) != B_SIDE_PLAYER)
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[bank]], bank);
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
else
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[bank]], bank);
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
}
}
}
-void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId)
+void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId)
{
- BattleLoadSubstituteOrMonSpriteGfx(bank, loadMonSprite);
- StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[bank]);
+ BattleLoadSubstituteOrMonSpriteGfx(battlerId, loadMonSprite);
+ StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[battlerId]);
if (!loadMonSprite)
- gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(bank);
+ gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(battlerId);
else
- gSprites[spriteId].pos1.y = GetBattlerSpriteDefault_Y(bank);
+ gSprites[spriteId].pos1.y = GetBattlerSpriteDefault_Y(battlerId);
}
-void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move)
+void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move)
{
if (move == MOVE_SUBSTITUTE)
- gBattleSpritesDataPtr->battlerData[bank].behindSubstitute = 1;
+ gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 1;
}
-void ClearBehindSubstituteBit(u8 bank)
+void ClearBehindSubstituteBit(u8 battlerId)
{
- gBattleSpritesDataPtr->battlerData[bank].behindSubstitute = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 0;
}
-void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank)
+void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId)
{
u16 hp = GetMonData(mon, MON_DATA_HP);
u16 maxHP = GetMonData(mon, MON_DATA_MAX_HP);
if (GetHPBarLevel(hp, maxHP) == HP_BAR_RED)
{
- if (!gBattleSpritesDataPtr->battlerData[bank].lowHpSong)
+ if (!gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong)
{
- if (!gBattleSpritesDataPtr->battlerData[bank ^ BIT_FLANK].lowHpSong)
+ if (!gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong)
PlaySE(SE_HINSI);
- gBattleSpritesDataPtr->battlerData[bank].lowHpSong = 1;
+ gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 1;
}
}
else
{
- gBattleSpritesDataPtr->battlerData[bank].lowHpSong = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 0;
if (!IsDoubleBattle())
{
m4aSongNumStop(SE_HINSI);
return;
}
- if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[bank ^ BIT_FLANK].lowHpSong)
+ if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong)
{
m4aSongNumStop(SE_HINSI);
return;
@@ -1135,44 +1124,44 @@ void sub_805EB9C(u8 affineMode)
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
void LoadAndCreateEnemyShadowSprites(void)
{
- u8 bank;
+ u8 battlerId;
LoadCompressedObjectPic(&gSpriteSheet_EnemyShadow);
- bank = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(bank, 0), GetBattlerSpriteCoord(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data[0] = bank;
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
if (IsDoubleBattle())
{
- bank = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(bank, 0), GetBattlerSpriteCoord(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data[0] = bank;
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
}
}
void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
{
bool8 invisible = FALSE;
- u8 bank = shadowSprite->tBank;
- struct Sprite *bankSprite = &gSprites[gBattlerSpriteIds[bank]];
+ u8 battlerId = shadowSprite->tBattlerId;
+ struct Sprite *bankSprite = &gSprites[gBattlerSpriteIds[battlerId]];
- if (!bankSprite->inUse || !IsBattlerSpritePresent(bank))
+ if (!bankSprite->inUse || !IsBattlerSpritePresent(battlerId))
{
shadowSprite->callback = SpriteCB_SetInvisible;
return;
}
if (gAnimScriptActive || bankSprite->invisible)
invisible = TRUE;
- else if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies != SPECIES_NONE
- && gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[bank].transformSpecies] == 0)
+ else if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE
+ && gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies] == 0)
invisible = TRUE;
- if (gBattleSpritesDataPtr->battlerData[bank].behindSubstitute)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
invisible = TRUE;
shadowSprite->pos1.x = bankSprite->pos1.x;
@@ -1180,31 +1169,31 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
shadowSprite->invisible = invisible;
}
-#undef tBank
+#undef tBattlerId
void SpriteCB_SetInvisible(struct Sprite *sprite)
{
sprite->invisible = 1;
}
-void SetBattlerShadowSpriteCallback(u8 bank, u16 species)
+void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species)
{
// The player's shadow is never seen
- if (GetBattlerSide(bank) == B_SIDE_PLAYER)
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
return;
- if (gBattleSpritesDataPtr->battlerData[bank].transformSpecies != SPECIES_NONE)
- species = gBattleSpritesDataPtr->battlerData[bank].transformSpecies;
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
if (gEnemyMonElevation[species] != 0)
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_EnemyShadow;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_EnemyShadow;
else
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;
}
-void HideBattlerShadowSprite(u8 bank)
+void HideBattlerShadowSprite(u8 battlerId)
{
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;
}
void sub_805EF14(void)
@@ -1230,12 +1219,12 @@ void sub_805EF14(void)
}
}
-void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute)
+void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute)
{
- gBattleSpritesDataPtr->battlerData[bank].transformSpecies = SPECIES_NONE;
- gBattleMonForms[bank] = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE;
+ gBattleMonForms[battlerId] = 0;
if (!dontClearSubstitute)
- ClearBehindSubstituteBit(bank);
+ ClearBehindSubstituteBit(battlerId);
}
void AllocateMonSpritesGfx(void)
diff --git a/src/battle_interface.c b/src/battle_interface.c
index ce37564b7..bc6ff1122 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -153,11 +153,6 @@ enum
HEALTHBOX_GFX_117,
};
-extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-
extern const u8 * const gNatureNamePointers[];
extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
@@ -177,9 +172,6 @@ extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
extern const u8 gHealthboxElementsGfxTable[][32];
-// functions
-extern void LoadBattleBarGfx(u8 arg0);
-
// this file's functions
static const u8 *GetHealthboxElementGfxPtr(u8 elementId);
@@ -1536,7 +1528,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
gSprites[barSpriteId].pos1.x += 96;
}
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
ballIconSpritesIds[i] = CreateSpriteAtEnd(&sStatusSummaryBallsSpriteTemplates[isOpponent], bar_X, bar_Y - 4, 9);
diff --git a/src/battle_main.c b/src/battle_main.c
index e41e596a1..285407982 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -7,6 +7,7 @@
#include "scanline_effect.h"
#include "battle_setup.h"
#include "battle_scripts.h"
+#include "battle_interface.h"
#include "pokemon.h"
#include "palette.h"
#include "task.h"
@@ -43,8 +44,11 @@
#include "roamer.h"
#include "tv.h"
#include "safari_zone.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "data2.h"
+#include "decompress.h"
+#include "international_string_util.h"
+#include "pokeball.h"
struct UnknownPokemonStruct4
{
@@ -60,8 +64,6 @@ struct UnknownPokemonStruct4
/*0x1D*/ u8 language;
};
-extern u8 gBattleCommunication[];
-extern u8 gBattleTerrain;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern u16 gBattle_BG1_X;
@@ -70,84 +72,19 @@ extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
-extern u16 gPartnerTrainerId;
extern u16 gBattle_WIN0H;
extern u16 gBattle_WIN0V;
extern u16 gBattle_WIN1H;
extern u16 gBattle_WIN1V;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
-extern void (*gPreBattleCallback1)(void);
-extern void (*gBattleMainFunc)(void);
-extern void (*gCB2_AfterEvolution)(void);
-extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3]; // what is it used for?
-extern struct UnknownPokemonStruct4* gUnknown_02023058; // what is it used for?
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern u8 gDecompressionBuffer[];
-extern u16 gUnknown_020243FC;
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
-extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern u8 gStringBattler;
-extern u32 gUnknown_02022F88;
-extern u32 gHitMarker;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u16 gPaydayMoney;
-extern u16 gBattleWeather;
-extern u16 gPauseCounterBattle;
-extern u16 gRandomTurnNumber;
-extern u8 gActiveBattler;
-extern u8 gBattlersCount;
-extern u8 gBattlerAttacker;
-extern u8 gBattlerTarget;
-extern u8 gLeveledUpInBattle;
-extern u8 gAbsentBattlerFlags;
-extern u32 gBattleControllerExecFlags;
-extern u8 gMultiHitCounter;
-extern u8 gMoveResultFlags;
-extern s32 gBattleMoveDamage;
-extern const u8* gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT];
-extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
-extern u16 gLastMoves[MAX_BATTLERS_COUNT];
-extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT];
-extern u16 gLastHitByType[MAX_BATTLERS_COUNT];
-extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT];
-extern u16 gLockedMoves[MAX_BATTLERS_COUNT];
-extern u8 gLastHitBy[MAX_BATTLERS_COUNT];
-extern u8 gUnknown_02024284[MAX_BATTLERS_COUNT];
-extern u32 gStatuses3[MAX_BATTLERS_COUNT];
-extern u16 gSideStatuses[2];
-extern u16 gCurrentMove;
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u8 gBattleTurnOrder[MAX_BATTLERS_COUNT];
-extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
-extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
-extern u8 gCurrentActionFuncId;
-extern u8 gLastUsedAbility;
extern u8 gUnknown_0203CF00[];
-extern const u8* gSelectionBattleScripts[MAX_BATTLERS_COUNT];
-extern const u8* gBattlescriptCurrInstr;
-extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
-extern u8 gCurrentTurnActionNumber;
-extern u16 gDynamicBasePower;
-extern u8 gCritMultiplier;
-extern u8 gCurrMovePos;
-extern u8 gUnknown_020241E9;
-extern u16 gChosenMove;
extern const struct BattleMove gBattleMoves[];
extern const u16 gBattleTextboxPalette[]; // battle textbox palette
extern const struct BgTemplate gUnknown_0831AA08[];
extern const struct WindowTemplate * const gUnknown_0831ABA0[];
extern const u8 gUnknown_0831ACE0[];
-extern const u8 gStatStageRatios[][2];
extern const u8 * const gBattleScriptsForMoveEffects[];
extern const u8 * const gBattlescriptsForBallThrow[];
extern const u8 * const gBattlescriptsForRunningByItem[];
@@ -172,20 +109,14 @@ extern const u8 gText_Confusion[];
extern const u8 gText_Love[];
// functions
-extern void ScanlineEffect_Clear(void);
-extern void sub_80356D0(void);
extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower
extern void sub_8166188(void); // battle tower, sets link battle mons level but why?
extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language
-extern void PadNameString(u8* dst, u8 arg2); //
extern void sub_81B9150(void);
-extern void sub_800AC34(void);
extern void sub_80B3AF8(u8 taskId); // cable club
-extern void sub_8076918(u8 bank);
-extern void SetHealthboxSpriteVisible(u8 healthoxSpriteId);
extern void sub_81A56B4(void); // battle frontier 2
extern u8 sub_81A9E28(void); // battle frontier 2
-extern void sub_81A56E8(u8 bank); // battle frontier 2
+extern void sub_81A56E8(u8 battlerId); // battle frontier 2
extern void sub_81B8FB0(u8, u8); // party menu
extern u8 pokemon_order_func(u8); // party menu
extern bool8 InBattlePyramid(void);
@@ -233,7 +164,7 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void);
static void TryDoEventsBeforeFirstTurn(void);
static void HandleTurnActionSelectionState(void);
static void RunTurnActionsFunctions(void);
-static void SetActionsAndBanksTurnOrder(void);
+static void SetActionsAndBattlersTurnOrder(void);
static void sub_803CDF8(void);
static bool8 sub_803CDB8(void);
static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void);
@@ -261,6 +192,113 @@ static void HandleAction_Action11(void);
static void HandleAction_NothingIsFainted(void);
static void HandleAction_ActionFinished(void);
+// EWRAM vars
+EWRAM_DATA static u32 sUnusedUnknownArray[25] = {0};
+EWRAM_DATA u32 gBattleTypeFlags = 0;
+EWRAM_DATA u8 gBattleTerrain = 0;
+EWRAM_DATA u32 gUnknown_02022FF4 = 0;
+EWRAM_DATA struct UnknownPokemonStruct4 gUnknown_02022FF8[3] = {0}; // what is it used for?
+EWRAM_DATA struct UnknownPokemonStruct4* gUnknown_02023058 = NULL; // what is it used for?
+EWRAM_DATA u8 *gUnknown_0202305C = NULL;
+EWRAM_DATA u8 *gUnknown_02023060 = NULL;
+EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0};
+EWRAM_DATA u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200] = {0};
+EWRAM_DATA u8 gActiveBattler = 0;
+EWRAM_DATA u32 gBattleControllerExecFlags = 0;
+EWRAM_DATA u8 gBattlersCount = 0;
+EWRAM_DATA u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerPositions[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattleTurnOrder[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gCurrentTurnActionNumber = 0;
+EWRAM_DATA u8 gCurrentActionFuncId = 0;
+EWRAM_DATA struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gCurrMovePos = 0;
+EWRAM_DATA u8 gChosenMovePos = 0;
+EWRAM_DATA u16 gCurrentMove = 0;
+EWRAM_DATA u16 gChosenMove = 0;
+EWRAM_DATA u16 gRandomMove = 0;
+EWRAM_DATA s32 gBattleMoveDamage = 0;
+EWRAM_DATA s32 gHpDealt = 0;
+EWRAM_DATA s32 gTakenDmg[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastUsedItem = 0;
+EWRAM_DATA u8 gLastUsedAbility = 0;
+EWRAM_DATA u8 gBattlerAttacker = 0;
+EWRAM_DATA u8 gBattlerTarget = 0;
+EWRAM_DATA u8 gBattlerFainted = 0;
+EWRAM_DATA u8 gEffectBattler = 0;
+EWRAM_DATA u8 gPotentialItemEffectBattler = 0;
+EWRAM_DATA u8 gAbsentBattlerFlags = 0;
+EWRAM_DATA u8 gCritMultiplier = 0;
+EWRAM_DATA u8 gMultiHitCounter = 0;
+EWRAM_DATA const u8 *gBattlescriptCurrInstr = NULL;
+EWRAM_DATA u32 gUnusedBattleMainVar = 0;
+EWRAM_DATA u8 gChosenActionByBattler[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT] = {NULL};
+EWRAM_DATA const u8 *gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT] = {NULL};
+EWRAM_DATA u16 gLastPrintedMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastLandedMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastHitByType[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastResultingMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLockedMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gLastHitBy[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gMoveResultFlags = 0;
+EWRAM_DATA u32 gHitMarker = 0;
+EWRAM_DATA static u8 sUnusedBattlersArray[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gUnknown_0202428C = 0;
+EWRAM_DATA u16 gSideStatuses[2] = {0};
+EWRAM_DATA struct SideTimer gSideTimers[2] = {0};
+EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gPauseCounterBattle = 0;
+EWRAM_DATA u16 gPaydayMoney = 0;
+EWRAM_DATA u16 gRandomTurnNumber = 0;
+EWRAM_DATA u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT] = {0};
+EWRAM_DATA u8 gBattleOutcome = 0;
+EWRAM_DATA struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gBattleWeather = 0;
+EWRAM_DATA struct WishFutureKnock gWishFutureKnock = {0};
+EWRAM_DATA u16 gIntroSlideFlags = 0;
+EWRAM_DATA u8 gSentPokesToOpponent[2] = {0};
+EWRAM_DATA u16 gDynamicBasePower = 0;
+EWRAM_DATA u16 gExpShareExp = 0;
+EWRAM_DATA struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA struct BattleScripting gBattleScripting = {0};
+EWRAM_DATA struct BattleStruct *gBattleStruct = NULL;
+EWRAM_DATA u8 *gLinkBattleSendBuffer = NULL;
+EWRAM_DATA u8 *gLinkBattleRecvBuffer = NULL;
+EWRAM_DATA struct BattleResources *gBattleResources = NULL;
+EWRAM_DATA u8 gActionSelectionCursor[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerInMenuId = 0;
+EWRAM_DATA bool8 gDoingBattleAnim = FALSE;
+EWRAM_DATA u32 gTransformedPersonalities[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gPlayerDpadHoldFrames = 0;
+EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL;
+EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL;
+EWRAM_DATA struct BattleHealthboxInfo *gUnknown_020244D8 = NULL;
+EWRAM_DATA struct BattleHealthboxInfo *gUnknown_020244DC = NULL;
+EWRAM_DATA u16 gBattleMovePower = 0;
+EWRAM_DATA u16 gMoveToLearn = 0;
+EWRAM_DATA u8 gBattleMonForms[MAX_BATTLERS_COUNT] = {0};
+
+// IWRAM common vars
+void (*gPreBattleCallback1)(void);
+void (*gBattleMainFunc)(void);
+struct BattleResults gBattleResults;
+u8 gLeveledUpInBattle;
+void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
+u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
+u8 gMultiUsePlayerCursor;
+u8 gNumberOfMovesToChoose;
+u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
+
// rom const data
static void (* const sTurnActionsFuncsTable[])(void) =
{
@@ -288,11 +326,11 @@ static void (* const sEndTurnFuncsTable[])(void) =
HandleEndTurn_BattleLost, // B_OUTCOME_DREW
HandleEndTurn_RanFromBattle, // B_OUTCOME_RAN
HandleEndTurn_FinishBattle, // B_OUTCOME_PLAYER_TELEPORTED
- HandleEndTurn_MonFled, // B_OUTCOME_POKE_FLED
- HandleEndTurn_FinishBattle, // B_OUTCOME_CAUGHT_POKE
+ HandleEndTurn_MonFled, // B_OUTCOME_MON_FLED
+ HandleEndTurn_FinishBattle, // B_OUTCOME_CAUGHT
HandleEndTurn_FinishBattle, // battle outcome 8
HandleEndTurn_FinishBattle, // B_OUTCOME_FORFEITED
- HandleEndTurn_FinishBattle, // B_OUTCOME_POKE_TELEPORTED
+ HandleEndTurn_FinishBattle, // B_OUTCOME_MON_TELEPORTED
};
const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$");
@@ -1698,7 +1736,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
else
personalityValue = 0x88;
- for (j = 0; gTrainers[trainerNum].trainerName[j] != 0xFF; j++)
+ for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; j++)
nameHash += gTrainers[trainerNum].trainerName[j];
switch (gTrainers[trainerNum].partyFlags)
@@ -2383,7 +2421,7 @@ void oac_poke_opponent(struct Sprite *sprite)
static void sub_803980C(struct Sprite *sprite)
{
- if ((gUnknown_020243FC & 1) == 0)
+ if ((gIntroSlideFlags & 1) == 0)
{
sprite->pos2.x += 2;
if (sprite->pos2.x == 0)
@@ -2437,7 +2475,7 @@ static void sub_80398D0(struct Sprite *sprite)
{
sprite->invisible = FALSE;
sprite->callback = SpriteCallbackDummy_2;
- gUnknown_02022F88 = 0;
+ sUnusedUnknownArray[0] = 0;
}
}
}
@@ -2560,7 +2598,7 @@ void sub_8039BB4(struct Sprite *sprite)
static void oac_poke_ally_(struct Sprite *sprite)
{
- if ((gUnknown_020243FC & 1) == 0)
+ if ((gIntroSlideFlags & 1) == 0)
{
sprite->pos2.x -= 2;
if (sprite->pos2.x == 0)
@@ -2582,7 +2620,7 @@ static void SpriteCallbackDummy_3(struct Sprite *sprite)
void sub_8039C00(struct Sprite *sprite)
{
- if (!(gUnknown_020243FC & 1))
+ if (!(gIntroSlideFlags & 1))
{
sprite->pos2.x += sprite->data[1];
sprite->pos2.y += sprite->data[2];
@@ -2731,7 +2769,7 @@ static void BattleStartClearSetData(void)
dataPtr[j] = 0;
gDisableStructs[i].isFirstTurn = 2;
- gUnknown_02024284[i] = 0;
+ sUnusedBattlersArray[i] = 0;
gLastMoves[i] = 0;
gLastLandedMoves[i] = 0;
gLastHitByType[i] = 0;
@@ -2784,7 +2822,7 @@ static void BattleStartClearSetData(void)
gPauseCounterBattle = 0;
gBattleMoveDamage = 0;
- gUnknown_020243FC = 0;
+ gIntroSlideFlags = 0;
gBattleScripting.animTurn = 0;
gBattleScripting.animTargetsHit = 0;
gLeveledUpInBattle = 0;
@@ -3656,12 +3694,12 @@ static void TryDoEventsBeforeFirstTurn(void)
gBattleMons[i].status2 &= ~(STATUS2_FLINCHED);
*(&gBattleStruct->turnEffectsTracker) = 0;
- *(&gBattleStruct->turnEffectsBank) = 0;
+ *(&gBattleStruct->turnEffectsBattlerId) = 0;
*(&gBattleStruct->wishPerishSongState) = 0;
- *(&gBattleStruct->wishPerishSongBank) = 0;
+ *(&gBattleStruct->wishPerishSongBattlerId) = 0;
gBattleScripting.atk49_state = 0;
gBattleStruct->faintedActionsState = 0;
- gBattleStruct->turncountersTracker = 0;
+ gBattleStruct->turnCountersTracker = 0;
gMoveResultFlags = 0;
gRandomTurnNumber = Random();
@@ -3689,10 +3727,10 @@ static void HandleEndTurn_ContinueBattle(void)
CancelMultiTurnMoves(i);
}
gBattleStruct->turnEffectsTracker = 0;
- gBattleStruct->turnEffectsBank = 0;
+ gBattleStruct->turnEffectsBattlerId = 0;
gBattleStruct->wishPerishSongState = 0;
- gBattleStruct->wishPerishSongBank = 0;
- gBattleStruct->turncountersTracker = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
+ gBattleStruct->turnCountersTracker = 0;
gMoveResultFlags = 0;
}
}
@@ -3773,7 +3811,7 @@ u8 IsRunningFromBattleImpossible(void)
else
holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item);
- gStringBattler = gActiveBattler;
+ gPotentialItemEffectBattler = gActiveBattler;
if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
return 0;
@@ -3884,7 +3922,7 @@ static void HandleTurnActionSelectionState(void)
switch (gBattleCommunication[gActiveBattler])
{
case STATE_TURN_START_RECORD: // recorded battle related on start of every turn
- RecordedBattle_CopyBankMoves();
+ RecordedBattle_CopyBattlerMoves();
gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
break;
case STATE_BEFORE_ACTION_CHOSEN: // choose an action
@@ -4288,7 +4326,7 @@ static void HandleTurnActionSelectionState(void)
if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gBattlersCount)
{
sub_818603C(1);
- gBattleMainFunc = SetActionsAndBanksTurnOrder;
+ gBattleMainFunc = SetActionsAndBattlersTurnOrder;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
@@ -4345,162 +4383,162 @@ void SwapTurnOrder(u8 id1, u8 id2)
gBattleTurnOrder[id2] = temp;
}
-u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves)
+u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
{
u8 strikesFirst = 0;
- u8 speedMultiplierBank1 = 0, speedMultiplierBank2 = 0;
- u32 speedBank1 = 0, speedBank2 = 0;
+ u8 speedMultiplierBattler1 = 0, speedMultiplierBattler2 = 0;
+ u32 speedBattler1 = 0, speedBattler2 = 0;
u8 holdEffect = 0;
u8 holdEffectParam = 0;
- u16 moveBank1 = 0, moveBank2 = 0;
+ u16 moveBattler1 = 0, moveBattler2 = 0;
if (WEATHER_HAS_EFFECT)
{
- if ((gBattleMons[bank1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
- || (gBattleMons[bank1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
- speedMultiplierBank1 = 2;
+ if ((gBattleMons[battler1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
+ || (gBattleMons[battler1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
+ speedMultiplierBattler1 = 2;
else
- speedMultiplierBank1 = 1;
+ speedMultiplierBattler1 = 1;
- if ((gBattleMons[bank2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
- || (gBattleMons[bank2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
- speedMultiplierBank2 = 2;
+ if ((gBattleMons[battler2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
+ || (gBattleMons[battler2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
+ speedMultiplierBattler2 = 2;
else
- speedMultiplierBank2 = 1;
+ speedMultiplierBattler2 = 1;
}
else
{
- speedMultiplierBank1 = 1;
- speedMultiplierBank2 = 1;
+ speedMultiplierBattler1 = 1;
+ speedMultiplierBattler2 = 1;
}
- speedBank1 = (gBattleMons[bank1].speed * speedMultiplierBank1)
- * (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][0])
- / (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][1]);
+ speedBattler1 = (gBattleMons[battler1].speed * speedMultiplierBattler1)
+ * (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][0])
+ / (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][1]);
- if (gBattleMons[bank1].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[battler1].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[bank1].holdEffect;
- holdEffectParam = gEnigmaBerries[bank1].holdEffectParam;
+ holdEffect = gEnigmaBerries[battler1].holdEffect;
+ holdEffectParam = gEnigmaBerries[battler1].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[bank1].item);
- holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank1].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battler1].item);
+ holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[battler1].item);
}
// badge boost
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
&& FlagGet(FLAG_BADGE03_GET)
- && GetBattlerSide(bank1) == B_SIDE_PLAYER)
+ && GetBattlerSide(battler1) == B_SIDE_PLAYER)
{
- speedBank1 = (speedBank1 * 110) / 100;
+ speedBattler1 = (speedBattler1 * 110) / 100;
}
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
- speedBank1 /= 2;
+ speedBattler1 /= 2;
- if (gBattleMons[bank1].status1 & STATUS1_PARALYSIS)
- speedBank1 /= 4;
+ if (gBattleMons[battler1].status1 & STATUS1_PARALYSIS)
+ speedBattler1 /= 4;
if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
- speedBank1 = UINT_MAX;
+ speedBattler1 = UINT_MAX;
- // check second bank's speed
+ // check second battlerId's speed
- speedBank2 = (gBattleMons[bank2].speed * speedMultiplierBank2)
- * (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][0])
- / (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][1]);
+ speedBattler2 = (gBattleMons[battler2].speed * speedMultiplierBattler2)
+ * (gStatStageRatios[gBattleMons[battler2].statStages[STAT_SPEED]][0])
+ / (gStatStageRatios[gBattleMons[battler2].statStages[STAT_SPEED]][1]);
- if (gBattleMons[bank2].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[battler2].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[bank2].holdEffect;
- holdEffectParam = gEnigmaBerries[bank2].holdEffectParam;
+ holdEffect = gEnigmaBerries[battler2].holdEffect;
+ holdEffectParam = gEnigmaBerries[battler2].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[bank2].item);
- holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank2].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battler2].item);
+ holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[battler2].item);
}
// badge boost
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
&& FlagGet(FLAG_BADGE03_GET)
- && GetBattlerSide(bank2) == B_SIDE_PLAYER)
+ && GetBattlerSide(battler2) == B_SIDE_PLAYER)
{
- speedBank2 = (speedBank2 * 110) / 100;
+ speedBattler2 = (speedBattler2 * 110) / 100;
}
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
- speedBank2 /= 2;
+ speedBattler2 /= 2;
- if (gBattleMons[bank2].status1 & STATUS1_PARALYSIS)
- speedBank2 /= 4;
+ if (gBattleMons[battler2].status1 & STATUS1_PARALYSIS)
+ speedBattler2 /= 4;
if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
- speedBank2 = UINT_MAX;
+ speedBattler2 = UINT_MAX;
if (ignoreChosenMoves)
{
- moveBank1 = MOVE_NONE;
- moveBank2 = MOVE_NONE;
+ moveBattler1 = MOVE_NONE;
+ moveBattler2 = MOVE_NONE;
}
else
{
- if (gChosenActionByBattler[bank1] == B_ACTION_USE_MOVE)
+ if (gChosenActionByBattler[battler1] == B_ACTION_USE_MOVE)
{
- if (gProtectStructs[bank1].onlyStruggle)
- moveBank1 = MOVE_STRUGGLE;
+ if (gProtectStructs[battler1].onlyStruggle)
+ moveBattler1 = MOVE_STRUGGLE;
else
- moveBank1 = gBattleMons[bank1].moves[*(gBattleStruct->chosenMovePositions + bank1)];
+ moveBattler1 = gBattleMons[battler1].moves[*(gBattleStruct->chosenMovePositions + battler1)];
}
else
- moveBank1 = MOVE_NONE;
+ moveBattler1 = MOVE_NONE;
- if (gChosenActionByBattler[bank2] == B_ACTION_USE_MOVE)
+ if (gChosenActionByBattler[battler2] == B_ACTION_USE_MOVE)
{
- if (gProtectStructs[bank2].onlyStruggle)
- moveBank2 = MOVE_STRUGGLE;
+ if (gProtectStructs[battler2].onlyStruggle)
+ moveBattler2 = MOVE_STRUGGLE;
else
- moveBank2 = gBattleMons[bank2].moves[*(gBattleStruct->chosenMovePositions + bank2)];
+ moveBattler2 = gBattleMons[battler2].moves[*(gBattleStruct->chosenMovePositions + battler2)];
}
else
- moveBank2 = MOVE_NONE;
+ moveBattler2 = MOVE_NONE;
}
// both move priorities are different than 0
- if (gBattleMoves[moveBank1].priority != 0 || gBattleMoves[moveBank2].priority != 0)
+ if (gBattleMoves[moveBattler1].priority != 0 || gBattleMoves[moveBattler2].priority != 0)
{
// both priorities are the same
- if (gBattleMoves[moveBank1].priority == gBattleMoves[moveBank2].priority)
+ if (gBattleMoves[moveBattler1].priority == gBattleMoves[moveBattler2].priority)
{
- if (speedBank1 == speedBank2 && Random() & 1)
+ if (speedBattler1 == speedBattler2 && Random() & 1)
strikesFirst = 2; // same speeds, same priorities
- else if (speedBank1 < speedBank2)
- strikesFirst = 1; // bank2 has more speed
+ else if (speedBattler1 < speedBattler2)
+ strikesFirst = 1; // battler2 has more speed
- // else bank1 has more speed
+ // else battler1 has more speed
}
- else if (gBattleMoves[moveBank1].priority < gBattleMoves[moveBank2].priority)
- strikesFirst = 1; // bank2's move has greater priority
+ else if (gBattleMoves[moveBattler1].priority < gBattleMoves[moveBattler2].priority)
+ strikesFirst = 1; // battler2's move has greater priority
- // else bank1's move has greater priority
+ // else battler1's move has greater priority
}
// both priorities are equal to 0
else
{
- if (speedBank1 == speedBank2 && Random() & 1)
+ if (speedBattler1 == speedBattler2 && Random() & 1)
strikesFirst = 2; // same speeds, same priorities
- else if (speedBank1 < speedBank2)
- strikesFirst = 1; // bank2 has more speed
+ else if (speedBattler1 < speedBattler2)
+ strikesFirst = 1; // battler2 has more speed
- // else bank1 has more speed
+ // else battler1 has more speed
}
return strikesFirst;
}
-static void SetActionsAndBanksTurnOrder(void)
+static void SetActionsAndBattlersTurnOrder(void)
{
s32 var = 0;
s32 i, j;
@@ -4556,7 +4594,7 @@ static void SetActionsAndBanksTurnOrder(void)
}
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- gBattleStruct->focusPunchBank = 0;
+ gBattleStruct->focusPunchBattlerId = 0;
return;
}
else
@@ -4583,14 +4621,14 @@ static void SetActionsAndBanksTurnOrder(void)
{
for (j = i + 1; j < gBattlersCount; j++)
{
- u8 bank1 = gBattleTurnOrder[i];
- u8 bank2 = gBattleTurnOrder[j];
+ u8 battler1 = gBattleTurnOrder[i];
+ u8 battler2 = gBattleTurnOrder[j];
if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
&& gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
&& gActionsByTurnOrder[i] != B_ACTION_SWITCH
&& gActionsByTurnOrder[j] != B_ACTION_SWITCH)
{
- if (GetWhoStrikesFirst(bank1, bank2, FALSE))
+ if (GetWhoStrikesFirst(battler1, battler2, FALSE))
SwapTurnOrder(i, j);
}
}
@@ -4598,7 +4636,7 @@ static void SetActionsAndBanksTurnOrder(void)
}
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- gBattleStruct->focusPunchBank = 0;
+ gBattleStruct->focusPunchBattlerId = 0;
}
static void TurnValuesCleanUp(bool8 var0)
@@ -4654,10 +4692,10 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
{
if (!(gHitMarker & HITMARKER_RUN))
{
- while (gBattleStruct->focusPunchBank < gBattlersCount)
+ while (gBattleStruct->focusPunchBattlerId < gBattlersCount)
{
- gActiveBattler = gBattlerAttacker = gBattleStruct->focusPunchBank;
- gBattleStruct->focusPunchBank++;
+ gActiveBattler = gBattlerAttacker = gBattleStruct->focusPunchBattlerId;
+ gBattleStruct->focusPunchBattlerId++;
if (gChosenMoveByBattler[gActiveBattler] == MOVE_FOCUS_PUNCH
&& !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
&& !(gDisableStructs[gBattlerAttacker].truantCounter)
@@ -4700,7 +4738,7 @@ static void RunTurnActionsFunctions(void)
}
else
{
- if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank
+ if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
{
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
@@ -4934,7 +4972,7 @@ static void TryEvolvePokemon(void)
while (gLeveledUpInBattle != 0)
{
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (gLeveledUpInBattle & gBitTable[i])
{
@@ -4983,7 +5021,7 @@ static void ReturnFromBattleToOverworld(void)
if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
{
UpdateRoamerHPStatus(&gEnemyParty[0]);
- if ((gBattleOutcome & B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT_POKE)
+ if ((gBattleOutcome & B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT)
SetRoamerInactive();
}
@@ -5031,7 +5069,7 @@ static void HandleAction_UseMove(void)
gMoveResultFlags = 0;
gMultiHitCounter = 0;
gBattleCommunication[6] = 0;
- gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBattlerAttacker);
+ gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerAttacker);
// choose move
if (gProtectStructs[gBattlerAttacker].onlyStruggle)
@@ -5050,14 +5088,14 @@ static void HandleAction_UseMove(void)
&& gDisableStructs[gBattlerAttacker].encoredMove == gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
{
gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
- gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBattlerAttacker].encoredMovePos;
+ gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
*(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
}
// check if the encored move wasn't overwritten
else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
&& gDisableStructs[gBattlerAttacker].encoredMove != gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
{
- gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBattlerAttacker].encoredMovePos;
+ gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE;
gDisableStructs[gBattlerAttacker].encoredMovePos = 0;
@@ -5338,7 +5376,7 @@ bool8 TryRunFromBattle(u8 battler)
else
holdEffect = ItemId_GetHoldEffect(gBattleMons[battler].item);
- gStringBattler = battler;
+ gPotentialItemEffectBattler = battler;
if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
{
@@ -5454,7 +5492,7 @@ static void HandleAction_Run(void)
else
{
gCurrentTurnActionNumber = gBattlersCount;
- gBattleOutcome = B_OUTCOME_POKE_FLED;
+ gBattleOutcome = B_OUTCOME_MON_FLED;
}
}
}
diff --git a/src/battle_message.c b/src/battle_message.c
index 5b34acc20..9a4a062ad 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_message.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "constants/moves.h"
#include "text.h"
#include "string_util.h"
@@ -13,23 +13,11 @@
#include "palette.h"
#include "battle_controllers.h"
#include "battle_setup.h"
+#include "menu.h"
+#include "recorded_battle.h"
+#include "international_string_util.h"
-extern u16 gLastUsedItem;
-extern u8 gLastUsedAbility;
-extern u8 gActiveBattler;
-extern u8 gBattlerAttacker;
-extern u8 gBattlerTarget;
-extern u8 gStringBattler;
-extern u8 gEffectBank;
extern u8 gBattlerAbilities[MAX_BATTLERS_COUNT];
-extern u32 gBattleTypeFlags;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u16 gPartnerTrainerId;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
-extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
extern u8 gUnknown_0203C7B4;
extern struct StringInfoBattle *gStringInfo;
@@ -56,9 +44,6 @@ extern void GetEreaderTrainerName(u8 *txtPtr);
extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2
extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav
extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
-extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing);
-extern u8 GetTextSpeedInRecordedBattle(void);
-extern u8 GetPlayerTextSpeed(void);
// this file's functions
static void sub_814F8F8(u8 *textPtr);
@@ -1436,7 +1421,7 @@ void BufferStringBattle(u16 stringID)
gBattleScripting.battler = gStringInfo->scrActive;
*(&gBattleStruct->field_52) = gStringInfo->unk1605E;
*(&gBattleStruct->hpScale) = gStringInfo->hpScale;
- gStringBattler = gStringInfo->StringBank;
+ gPotentialItemEffectBattler = gStringInfo->StringBank;
*(&gBattleStruct->stringMoveType) = gStringInfo->moveType;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
@@ -1903,7 +1888,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
HANDLE_NICKNAME_STRING_CASE(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget])
break;
case B_TXT_EFF_NAME_WITH_PREFIX: // effect bank name with prefix
- HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlerPartyIndexes[gEffectBank])
+ HANDLE_NICKNAME_STRING_CASE(gEffectBattler, gBattlerPartyIndexes[gEffectBattler])
break;
case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active bank name with prefix
HANDLE_NICKNAME_STRING_CASE(gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
@@ -1930,10 +1915,10 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- if ((gBattleScripting.multiplayerId != 0 && (gStringBattler & BIT_SIDE))
- || (gBattleScripting.multiplayerId == 0 && !(gStringBattler & BIT_SIDE)))
+ if ((gBattleScripting.multiplayerId != 0 && (gPotentialItemEffectBattler & BIT_SIDE))
+ || (gBattleScripting.multiplayerId == 0 && !(gPotentialItemEffectBattler & BIT_SIDE)))
{
- StringCopy(text, gEnigmaBerries[gStringBattler].name);
+ StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
StringAppend(text, gText_BerrySuffix);
toCpy = text;
}
@@ -1944,9 +1929,9 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
}
else
{
- if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBattler)
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gPotentialItemEffectBattler)
{
- StringCopy(text, gEnigmaBerries[gStringBattler].name);
+ StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
StringAppend(text, gText_BerrySuffix);
toCpy = text;
}
@@ -1979,7 +1964,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
toCpy = gAbilityNames[gBattlerAbilities[gBattleScripting.battler]];
break;
case B_TXT_EFF_ABILITY: // effect bank ability
- toCpy = gAbilityNames[gBattlerAbilities[gEffectBank]];
+ toCpy = gAbilityNames[gBattlerAbilities[gEffectBattler]];
break;
case B_TXT_TRAINER1_CLASS: // trainer class name
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
@@ -2313,9 +2298,9 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
{
if (hword == ITEM_ENIGMA_BERRY)
{
- if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBattler)
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gPotentialItemEffectBattler)
{
- StringCopy(dst, gEnigmaBerries[gStringBattler].name);
+ StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name);
StringAppend(dst, gText_BerrySuffix);
}
else
@@ -2360,20 +2345,20 @@ static void sub_814F8F8(u8* textBuff)
// Appends "!" to the text buffer `dst`. In the original Japanese this looked
// into the table of moves at sUnknownMoveTable and varied the line accordingly.
-//
+//
// gText_ExclamationMark was a plain "!", used for any attack not on the list.
// It resulted in the translation "<NAME>'s <ATTACK>!".
-//
+//
// gText_ExclamationMark2 was "を つかった!". This resulted in the translation
// "<NAME> used <ATTACK>!", which was used for all attacks in English.
-//
+//
// gText_ExclamationMark3 was "した!". This was used for those moves whose
// names were verbs, such as Recover, and resulted in translations like "<NAME>
// recovered itself!".
-//
+//
// gText_ExclamationMark4 was "を した!" This resulted in a translation of
// "<NAME> did an <ATTACK>!".
-//
+//
// gText_ExclamationMark5 was " こうげき!" This resulted in a translation of
// "<NAME>'s <ATTACK> attack!".
static void sub_814F950(u8* dst)
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 2ccc8fea8..81eb7cca8 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "constants/battle_move_effects.h"
+#include "constants/battle_script_commands.h"
#include "battle_message.h"
#include "battle_ai_script_commands.h"
#include "battle_scripts.h"
@@ -36,68 +37,10 @@
#include "pokemon_storage_system.h"
#include "task.h"
#include "naming_screen.h"
-#include "battle_string_ids.h"
-
-// variables
-
-extern u8 gCritMultiplier;
-extern s32 gBattleMoveDamage;
-extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u8 gActiveBattler;
-extern u32 gBattleControllerExecFlags;
-extern u8 gBattlersCount;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattleTurnOrder[MAX_BATTLERS_COUNT];
-extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
-extern u16 gCurrentMove;
-extern u8 gLastUsedAbility;
-extern u8 gStringBattler;
-extern u8 gEffectBank;
-extern u8 gAbsentBattlerFlags;
-extern u8 gMultiHitCounter;
-extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
-extern u16 gPauseCounterBattle;
-extern u16 gPaydayMoney;
-extern u16 gRandomTurnNumber;
-extern u8 gBattlerAttacker;
-extern u8 gBattlerTarget;
-extern const u8* gBattlescriptCurrInstr;
-extern u8 gCurrMovePos;
-extern u8 gCurrentActionFuncId;
-extern u8 gMoveResultFlags;
-extern u8 gBattleCommunication[];
-extern u16 gLastLandedMoves[4];
-extern u16 gLastHitByType[4];
-extern u16 gLastResultingMoves[4];
-extern u8 gLastHitBy[4];
-extern u8 gStringBattler;
-extern u16 gDynamicBasePower;
-extern u16 gLastUsedItem;
-extern u16 gBattleMovePower;
-extern s32 gHpDealt;
-extern s32 gTakenDmg[MAX_BATTLERS_COUNT];
-extern u8 gTakenDmgBanks[MAX_BATTLERS_COUNT];
-extern u8 gSentPokesToOpponent[2];
-extern u8 gBank1;
-extern u16 gExpShareExp;
-extern u8 gLeveledUpInBattle;
-extern void (*gBattleMainFunc)(void);
-extern u8 gPlayerPartyCount;
-extern u16 gMoveToLearn;
-extern u16 gRandomMove;
-extern u8 gBankInMenu;
-extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
-extern u8 gCurrentTurnActionNumber;
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern u16 gLockedMoves[MAX_BATTLERS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u16 gChosenMove;
-extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
-extern u16 gLastMoves[MAX_BATTLERS_COUNT];
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u8 gUnknown_020241E9;
+#include "constants/battle_string_ids.h"
+#include "battle_setup.h"
+#include "overworld.h"
+
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
@@ -112,17 +55,15 @@ struct TrainerMoney
};
extern const struct BattleMove gBattleMoves[];
-extern const struct BaseStats gBaseStats[];
extern const u8 gTypeEffectiveness[336];
extern const struct TrainerMoney gTrainerMoneyTable[];
extern const u8* const gBattleScriptsForMoveEffects[];
// functions
-extern void sub_81A5718(u8 bank); // battle frontier 2
+extern void sub_81A5718(u8 battlerId); // battle frontier 2
extern void sub_81A56B4(void); // battle frontier 2
extern void sub_81BFA38(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen
extern u8 sub_81C1B94(void); // pokemon summary screen
-extern void IncrementGameStat(u8 statId); // rom_4
extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
extern void sub_81D3784(u8 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
@@ -130,7 +71,7 @@ extern u8* GetMonNickname(struct Pokemon* mon, u8* dst); // party_menu
extern u8 sub_81A5258(u8* arg0); // battle frontier 2
extern void sub_81A5BF8(void); // battle frontier 2
extern void sub_81A5D44(void); // battle frontier 2
-extern void sub_81B8E80(u8 bank, u8, u8); // party menu
+extern void sub_81B8E80(u8 battlerId, u8, u8); // party menu
extern bool8 sub_81B1250(void); // ?
extern bool8 InBattlePike(void);
extern bool8 InBattlePyramid(void);
@@ -138,7 +79,6 @@ extern u16 GetBattlePyramidPickupItemId(void);
extern u8 sav1_map_get_light_level(void);
extern u8 sub_813B21C(void);
extern u16 get_unknown_box_id(void);
-extern void sub_80356D0(void);
// strings
extern const u8 gText_BattleYesNoChoice[];
@@ -155,13 +95,13 @@ extern const u8 gText_BattleYesNoChoice[];
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
-#define TARGET_TURN_DAMAGED (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical != 0 \
- || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special != 0)
+#define TARGET_TURN_DAMAGED (gSpecialStatuses[gBattlerTarget].physicalDmg != 0 \
+ || gSpecialStatuses[gBattlerTarget].specialDmg != 0)
// this file's functions
static bool8 IsTwoTurnsMove(u16 move);
static void TrySetDestinyBondToHappen(void);
-static u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
+static u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
static void CheckWonderGuardAndLevitate(void);
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
static bool32 IsMonGettingExpSentOut(void);
@@ -1215,7 +1155,7 @@ static void atk01_accuracycheck(void)
}
else
{
- u8 type, moveAcc, holdEffect, quality;
+ u8 type, moveAcc, holdEffect, param;
s8 buff;
u16 calc;
@@ -1231,13 +1171,13 @@ static void atk01_accuracycheck(void)
if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT)
{
- u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_STAGE_ACC];
+ u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_ACC];
buff = acc;
}
else
{
- u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_STAGE_ACC];
- buff = acc + 6 - gBattleMons[gBattlerTarget].statStages[STAT_STAGE_EVASION];
+ u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_ACC];
+ buff = acc + 6 - gBattleMons[gBattlerTarget].statStages[STAT_EVASION];
}
if (buff < 0)
@@ -1263,18 +1203,18 @@ static void atk01_accuracycheck(void)
if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
- quality = gEnigmaBerries[gBattlerTarget].holdEffectParam;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBattler = gBattlerTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
if (holdEffect == HOLD_EFFECT_EVASION_UP)
- calc = (calc * (100 - quality)) / 100;
+ calc = (calc * (100 - param)) / 100;
// final calculation
if ((Random() % 100 + 1) > calc)
@@ -1364,7 +1304,7 @@ static void atk04_critcalc(void)
else
holdEffect = ItemId_GetHoldEffect(item);
- gStringBattler = gBattlerAttacker;
+ gPotentialItemEffectBattler = gBattlerAttacker;
critChance = 2 * ((gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0)
+ (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL)
@@ -1758,23 +1698,24 @@ static void Unused_ApplyRandomDmgMultiplier(void)
static void atk07_adjustnormaldamage(void)
{
- u8 holdEffect, quality;
+ u8 holdEffect, param;
ApplyRandomDmgMultiplier();
if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBattler = gBattlerTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
- if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
@@ -1806,23 +1747,24 @@ static void atk07_adjustnormaldamage(void)
static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't check for false swipe move effect.
{
- u8 holdEffect, quality;
+ u8 holdEffect, param;
ApplyRandomDmgMultiplier();
if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBattler = gBattlerTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
- if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
@@ -1917,7 +1859,7 @@ static void atk0B_healthbarupdate(void)
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
{
@@ -1962,20 +1904,20 @@ static void atk0C_datahpupdate(void)
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
{
if (gDisableStructs[gActiveBattler].substituteHP >= gBattleMoveDamage)
{
- if (gSpecialStatuses[gActiveBattler].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBattler].moveturnLostHP = gBattleMoveDamage;
+ if (gSpecialStatuses[gActiveBattler].dmg == 0)
+ gSpecialStatuses[gActiveBattler].dmg = gBattleMoveDamage;
gDisableStructs[gActiveBattler].substituteHP -= gBattleMoveDamage;
gHpDealt = gBattleMoveDamage;
}
else
{
- if (gSpecialStatuses[gActiveBattler].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBattler].moveturnLostHP = gDisableStructs[gActiveBattler].substituteHP;
+ if (gSpecialStatuses[gActiveBattler].dmg == 0)
+ gSpecialStatuses[gActiveBattler].dmg = gDisableStructs[gActiveBattler].substituteHP;
gHpDealt = gDisableStructs[gActiveBattler].substituteHP;
gDisableStructs[gActiveBattler].substituteHP = 0;
}
@@ -2007,10 +1949,10 @@ static void atk0C_datahpupdate(void)
else
{
gTakenDmg[gActiveBattler] += gBattleMoveDamage;
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
- gTakenDmgBanks[gActiveBattler] = gBattlerAttacker;
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
+ gTakenDmgByBattler[gActiveBattler] = gBattlerAttacker;
else
- gTakenDmgBanks[gActiveBattler] = gBattlerTarget;
+ gTakenDmgByBattler[gActiveBattler] = gBattlerTarget;
}
if (gBattleMons[gActiveBattler].hp > gBattleMoveDamage)
@@ -2024,37 +1966,37 @@ static void atk0C_datahpupdate(void)
gBattleMons[gActiveBattler].hp = 0;
}
- if (!gSpecialStatuses[gActiveBattler].moveturnLostHP && !(gHitMarker & HITMARKER_x100000))
- gSpecialStatuses[gActiveBattler].moveturnLostHP = gHpDealt;
+ if (!gSpecialStatuses[gActiveBattler].dmg && !(gHitMarker & HITMARKER_x100000))
+ gSpecialStatuses[gActiveBattler].dmg = gHpDealt;
- if (moveType <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
+ if (IS_MOVE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
{
gProtectStructs[gActiveBattler].physicalDmg = gHpDealt;
- gSpecialStatuses[gActiveBattler].moveturnLostHP_physical = gHpDealt;
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ gSpecialStatuses[gActiveBattler].physicalDmg = gHpDealt;
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
{
- gProtectStructs[gActiveBattler].physicalBank = gBattlerAttacker;
- gSpecialStatuses[gActiveBattler].moveturnPhysicalBank = gBattlerAttacker;
+ gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerAttacker;
+ gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerAttacker;
}
else
{
- gProtectStructs[gActiveBattler].physicalBank = gBattlerTarget;
- gSpecialStatuses[gActiveBattler].moveturnPhysicalBank = gBattlerTarget;
+ gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerTarget;
+ gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerTarget;
}
}
- else if (moveType > 8 && !(gHitMarker & HITMARKER_x100000))
+ else if (!IS_MOVE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000))
{
gProtectStructs[gActiveBattler].specialDmg = gHpDealt;
- gSpecialStatuses[gActiveBattler].moveturnLostHP_special = gHpDealt;
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ gSpecialStatuses[gActiveBattler].specialDmg = gHpDealt;
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
{
- gProtectStructs[gActiveBattler].specialBank = gBattlerAttacker;
- gSpecialStatuses[gActiveBattler].moveturnSpecialBank = gBattlerAttacker;
+ gProtectStructs[gActiveBattler].specialBattlerId = gBattlerAttacker;
+ gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerAttacker;
}
else
{
- gProtectStructs[gActiveBattler].specialBank = gBattlerTarget;
- gSpecialStatuses[gActiveBattler].moveturnSpecialBank = gBattlerTarget;
+ gProtectStructs[gActiveBattler].specialBattlerId = gBattlerTarget;
+ gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerTarget;
}
}
}
@@ -2065,9 +2007,9 @@ static void atk0C_datahpupdate(void)
}
else
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gSpecialStatuses[gActiveBattler].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBattler].moveturnLostHP = 0xFFFF;
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (gSpecialStatuses[gActiveBattler].dmg == 0)
+ gSpecialStatuses[gActiveBattler].dmg = 0xFFFF;
}
gBattlescriptCurrInstr += 2;
}
@@ -2169,7 +2111,7 @@ static void atk0F_resultmessage(void)
break;
case MOVE_RESULT_FOE_HUNG_ON:
gLastUsedItem = gBattleMons[gBattlerTarget].item;
- gStringBattler = gBattlerTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
@@ -2198,7 +2140,7 @@ static void atk0F_resultmessage(void)
else if (gMoveResultFlags & MOVE_RESULT_FOE_HUNG_ON)
{
gLastUsedItem = gBattleMons[gBattlerTarget].item;
- gStringBattler = gBattlerTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
@@ -2294,12 +2236,12 @@ static void atk14_printselectionstringfromtable(void)
}
}
-u8 GetBattlerTurnOrderNum(u8 bank)
+u8 GetBattlerTurnOrderNum(u8 battlerId)
{
s32 i;
for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleTurnOrder[i] == bank)
+ if (gBattleTurnOrder[i] == battlerId)
break;
}
return i;
@@ -2326,31 +2268,31 @@ void SetMoveEffect(bool8 primary, u8 certain)
if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_AFFECTS_USER)
{
- gEffectBank = gBattlerAttacker; // bank that effects get applied on
+ gEffectBattler = gBattlerAttacker; // battlerId that effects get applied on
gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_AFFECTS_USER);
affectsUser = MOVE_EFFECT_AFFECTS_USER;
gBattleScripting.battler = gBattlerTarget; // theoretically the attacker
}
else
{
- gEffectBank = gBattlerTarget;
+ gEffectBattler = gBattlerTarget;
gBattleScripting.battler = gBattlerAttacker;
}
- if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
INCREMENT_RESET_RETURN
- if (gSideStatuses[GET_BATTLER_SIDE(gEffectBank)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ if (gSideStatuses[GET_BATTLER_SIDE(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
INCREMENT_RESET_RETURN
- if (gBattleMons[gEffectBank].hp == 0
+ if (gBattleMons[gEffectBattler].hp == 0
&& gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_PAYDAY
&& gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_STEAL_ITEM)
INCREMENT_RESET_RETURN
- if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && affectsUser != MOVE_EFFECT_AFFECTS_USER)
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_SUBSTITUTE && affectsUser != MOVE_EFFECT_AFFECTS_USER)
INCREMENT_RESET_RETURN
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change
@@ -2359,7 +2301,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
{
case STATUS1_SLEEP:
// check active uproar
- if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF)
+ if (gBattleMons[gEffectBattler].ability != ABILITY_SOUNDPROOF)
{
for (gActiveBattler = 0;
gActiveBattler < gBattlersCount && !(gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR);
@@ -2369,24 +2311,24 @@ void SetMoveEffect(bool8 primary, u8 certain)
else
gActiveBattler = gBattlersCount;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
if (gActiveBattler != gBattlersCount)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_VITAL_SPIRIT)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_INSOMNIA)
break;
- CancelMultiTurnMoves(gEffectBank);
+ CancelMultiTurnMoves(gEffectBattler);
statusChanged = TRUE;
break;
case STATUS1_POISON:
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_IMMUNITY;
- RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+ RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
@@ -2402,8 +2344,8 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
RESET_RETURN
}
- if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON
- || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ if ((gBattleMons[gEffectBattler].type1 == TYPE_POISON || gBattleMons[gEffectBattler].type2 == TYPE_POISON
+ || gBattleMons[gEffectBattler].type1 == TYPE_STEEL || gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
@@ -2413,27 +2355,27 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
RESET_RETURN
}
- if (gBattleMons[gEffectBank].type1 == TYPE_POISON)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_POISON)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_POISON)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_POISON)
break;
- if (gBattleMons[gEffectBank].type1 == TYPE_STEEL)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_STEEL)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
break;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY)
break;
statusChanged = TRUE;
break;
case STATUS1_BURN:
- if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL
+ if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_WATER_VEIL;
- RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL);
+ RecordAbilityBattle(gEffectBattler, ABILITY_WATER_VEIL);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
@@ -2448,8 +2390,8 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
RESET_RETURN
}
- if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE
- || gBattleMons[gEffectBank].type2 == TYPE_FIRE)
+ if ((gBattleMons[gEffectBattler].type1 == TYPE_FIRE
+ || gBattleMons[gEffectBattler].type2 == TYPE_FIRE)
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
@@ -2459,13 +2401,13 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
RESET_RETURN
}
- if (gBattleMons[gEffectBank].type1 == TYPE_FIRE)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_FIRE)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_FIRE)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_FIRE)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL)
break;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
statusChanged = TRUE;
@@ -2473,27 +2415,27 @@ void SetMoveEffect(bool8 primary, u8 certain)
case STATUS1_FREEZE:
if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY)
noSunCanFreeze = FALSE;
- if (gBattleMons[gEffectBank].type1 == TYPE_ICE)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_ICE)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_ICE)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_ICE)
break;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
if (noSunCanFreeze == 0)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_MAGMA_ARMOR)
break;
- CancelMultiTurnMoves(gEffectBank);
+ CancelMultiTurnMoves(gEffectBattler);
statusChanged = TRUE;
break;
case STATUS1_PARALYSIS:
- if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_LIMBER)
{
if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
{
gLastUsedAbility = ABILITY_LIMBER;
- RecordAbilityBattle(gEffectBank, ABILITY_LIMBER);
+ RecordAbilityBattle(gEffectBattler, ABILITY_LIMBER);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PRLZPrevention;
@@ -2512,16 +2454,16 @@ void SetMoveEffect(bool8 primary, u8 certain)
else
break;
}
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
statusChanged = TRUE;
break;
case STATUS1_TOXIC_POISON:
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_IMMUNITY;
- RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+ RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
@@ -2537,8 +2479,8 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
RESET_RETURN
}
- if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON
- || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ if ((gBattleMons[gEffectBattler].type1 == TYPE_POISON || gBattleMons[gEffectBattler].type2 == TYPE_POISON
+ || gBattleMons[gEffectBattler].type1 == TYPE_STEEL || gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
@@ -2548,19 +2490,19 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
RESET_RETURN
}
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
- if (gBattleMons[gEffectBank].type1 != TYPE_POISON
- && gBattleMons[gEffectBank].type2 != TYPE_POISON
- && gBattleMons[gEffectBank].type1 != TYPE_STEEL
- && gBattleMons[gEffectBank].type2 != TYPE_STEEL)
+ if (gBattleMons[gEffectBattler].type1 != TYPE_POISON
+ && gBattleMons[gEffectBattler].type2 != TYPE_POISON
+ && gBattleMons[gEffectBattler].type1 != TYPE_STEEL
+ && gBattleMons[gEffectBattler].type2 != TYPE_STEEL)
{
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY)
break;
// It's redundant, because at this point we know the status1 value is 0.
- gBattleMons[gEffectBank].status1 &= ~(STATUS1_TOXIC_POISON);
- gBattleMons[gEffectBank].status1 &= ~(STATUS1_POISON);
+ gBattleMons[gEffectBattler].status1 &= ~(STATUS1_TOXIC_POISON);
+ gBattleMons[gEffectBattler].status1 &= ~(STATUS1_POISON);
statusChanged = TRUE;
break;
}
@@ -2575,14 +2517,14 @@ void SetMoveEffect(bool8 primary, u8 certain)
BattleScriptPush(gBattlescriptCurrInstr + 1);
if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS1_SLEEP)
- gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2);
+ gBattleMons[gEffectBattler].status1 |= ((Random() & 3) + 2);
else
- gBattleMons[gEffectBank].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- gActiveBattler = gEffectBank;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1);
+ gActiveBattler = gEffectBattler;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
@@ -2618,7 +2560,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
else
{
- if (gBattleMons[gEffectBank].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ if (gBattleMons[gEffectBattler].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
{
gBattlescriptCurrInstr++;
}
@@ -2628,26 +2570,26 @@ void SetMoveEffect(bool8 primary, u8 certain)
switch (gBattleCommunication[MOVE_EFFECT_BYTE])
{
case MOVE_EFFECT_CONFUSION:
- if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO
- || gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_OWN_TEMPO
+ || gBattleMons[gEffectBattler].status2 & STATUS2_CONFUSION)
{
gBattlescriptCurrInstr++;
}
else
{
- gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2;
+ gBattleMons[gEffectBattler].status2 |= (((Random()) % 0x4)) + 2;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
}
break;
case MOVE_EFFECT_FLINCH:
- if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_INNER_FOCUS)
{
if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
{
gLastUsedAbility = ABILITY_INNER_FOCUS;
- RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS);
+ RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS);
gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
}
else
@@ -2657,18 +2599,18 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
else
{
- if (GetBattlerTurnOrderNum(gEffectBank) > gCurrentTurnActionNumber)
- gBattleMons[gEffectBank].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber)
+ gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
gBattlescriptCurrInstr++;
}
break;
case MOVE_EFFECT_UPROAR:
- if (!(gBattleMons[gEffectBank].status2 & STATUS2_UPROAR))
+ if (!(gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR))
{
- gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBank] = gCurrentMove;
- gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 2) << 4;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
@@ -2690,7 +2632,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
break;
case MOVE_EFFECT_TRI_ATTACK:
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
{
gBattlescriptCurrInstr++;
}
@@ -2701,23 +2643,23 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
break;
case MOVE_EFFECT_CHARGING:
- gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBank] = gCurrentMove;
- gProtectStructs[gEffectBank].chargingTurn = 1;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gProtectStructs[gEffectBattler].chargingTurn = 1;
gBattlescriptCurrInstr++;
break;
case MOVE_EFFECT_WRAP:
- if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED)
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_WRAPPED)
{
gBattlescriptCurrInstr++;
}
else
{
- gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 3) << 0xD;
+ gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 3) << 0xD;
- *(gBattleStruct->wrappedMove + gEffectBank * 2 + 0) = gCurrentMove;
- *(gBattleStruct->wrappedMove + gEffectBank * 2 + 1) = gCurrentMove >> 8;
- *(gBattleStruct->wrappedBy + gEffectBank) = gBattlerAttacker;
+ *(gBattleStruct->wrappedMove + gEffectBattler * 2 + 0) = gCurrentMove;
+ *(gBattleStruct->wrappedMove + gEffectBattler * 2 + 1) = gCurrentMove >> 8;
+ *(gBattleStruct->wrappedBy + gEffectBattler) = gBattlerAttacker;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
@@ -2824,9 +2766,9 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
break;
case MOVE_EFFECT_RECHARGE:
- gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE;
- gDisableStructs[gEffectBank].rechargeCounter = 2;
- gLockedMoves[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gEffectBattler].rechargeCounter = 2;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
gBattlescriptCurrInstr++;
break;
case MOVE_EFFECT_RAGE:
@@ -2948,21 +2890,21 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
break;
case MOVE_EFFECT_THRASH:
- if (gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE)
{
gBattlescriptCurrInstr++;
}
else
{
- gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBank] = gCurrentMove;
- gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA);
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= (((Random() & 1) + 2) << 0xA);
}
break;
case MOVE_EFFECT_KNOCK_OFF:
- if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_STICKY_HOLD)
{
- if (gBattleMons[gEffectBank].item == 0)
+ if (gBattleMons[gEffectBattler].item == 0)
{
gBattlescriptCurrInstr++;
}
@@ -2970,23 +2912,23 @@ void SetMoveEffect(bool8 primary, u8 certain)
{
gLastUsedAbility = ABILITY_STICKY_HOLD;
gBattlescriptCurrInstr = BattleScript_StickyHoldActivates;
- RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD);
+ RecordAbilityBattle(gEffectBattler, ABILITY_STICKY_HOLD);
}
break;
}
- if (gBattleMons[gEffectBank].item)
+ if (gBattleMons[gEffectBattler].item)
{
- side = GetBattlerSide(gEffectBank);
+ side = GetBattlerSide(gEffectBattler);
- gLastUsedItem = gBattleMons[gEffectBank].item;
- gBattleMons[gEffectBank].item = 0;
- gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlerPartyIndexes[gEffectBank]];
+ gLastUsedItem = gBattleMons[gEffectBattler].item;
+ gBattleMons[gEffectBattler].item = 0;
+ gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlerPartyIndexes[gEffectBattler]];
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_KnockedOff;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 0) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 1) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBattler]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBattler]) + 1) = 0;
}
else
{
@@ -3049,7 +2991,7 @@ static void atk17_seteffectsecondary(void)
static void atk18_clearstatusfromeffect(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC)
gBattleMons[gActiveBattler].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
@@ -3067,7 +3009,7 @@ static void atk19_tryfaintmon(void)
if (gBattlescriptCurrInstr[2] != 0)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
{
BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
@@ -3083,18 +3025,18 @@ static void atk19_tryfaintmon(void)
}
else
{
- u8 bank;
+ u8 battlerId;
- if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
{
gActiveBattler = gBattlerAttacker;
- bank = gBattlerTarget;
+ battlerId = gBattlerTarget;
BS_ptr = BattleScript_FaintAttacker;
}
else
{
gActiveBattler = gBattlerTarget;
- bank = gBattlerAttacker;
+ battlerId = gBattlerAttacker;
BS_ptr = BattleScript_FaintTarget;
}
if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])
@@ -3120,7 +3062,7 @@ static void atk19_tryfaintmon(void)
{
gHitMarker &= ~(HITMARKER_DESTINYBOND);
BattleScriptPush(gBattlescriptCurrInstr);
- gBattleMoveDamage = gBattleMons[bank].hp;
+ gBattleMoveDamage = gBattleMons[battlerId].hp;
gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife;
}
if ((gStatuses3[gBattlerTarget] & STATUS3_GRUDGE)
@@ -3152,7 +3094,7 @@ static void atk1A_dofaintanimation(void)
{
if (gBattleControllerExecFlags == 0)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitFaintAnimation(0);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -3163,7 +3105,7 @@ static void atk1B_cleareffectsonfaint(void)
{
if (gBattleControllerExecFlags == 0)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBattler].hp == 0)
{
@@ -3179,11 +3121,11 @@ static void atk1B_cleareffectsonfaint(void)
static void atk1C_jumpifstatus(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
- if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp)
+ if (gBattleMons[battlerId].status1 & flags && gBattleMons[battlerId].hp)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 10;
@@ -3191,11 +3133,11 @@ static void atk1C_jumpifstatus(void)
static void atk1D_jumpifstatus2(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
- if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp)
+ if (gBattleMons[battlerId].status2 & flags && gBattleMons[battlerId].hp)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 10;
@@ -3203,45 +3145,45 @@ static void atk1D_jumpifstatus2(void)
static void atk1E_jumpifability(void)
{
- u8 bank;
+ u8 battlerId;
u8 ability = gBattlescriptCurrInstr[2];
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
- if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER_SIDE)
+ if (gBattlescriptCurrInstr[1] == BS_ATTACKER_SIDE)
{
- bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0);
- if (bank)
+ battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0);
+ if (battlerId)
{
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
- RecordAbilityBattle(bank - 1, gLastUsedAbility);
- gBattleScripting.battlerWithAbility = bank - 1;
+ RecordAbilityBattle(battlerId - 1, gLastUsedAbility);
+ gBattleScripting.battlerWithAbility = battlerId - 1;
}
else
gBattlescriptCurrInstr += 7;
}
- else if (gBattlescriptCurrInstr[1] == BS_GET_NOT_ATTACKER_SIDE)
+ else if (gBattlescriptCurrInstr[1] == BS_NOT_ATTACKER_SIDE)
{
- bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0);
- if (bank)
+ battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0);
+ if (battlerId)
{
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
- RecordAbilityBattle(bank - 1, gLastUsedAbility);
- gBattleScripting.battlerWithAbility = bank - 1;
+ RecordAbilityBattle(battlerId - 1, gLastUsedAbility);
+ gBattleScripting.battlerWithAbility = battlerId - 1;
}
else
gBattlescriptCurrInstr += 7;
}
else
{
- bank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gBattleMons[bank].ability == ability)
+ battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (gBattleMons[battlerId].ability == ability)
{
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
- RecordAbilityBattle(bank, gLastUsedAbility);
- gBattleScripting.battlerWithAbility = bank;
+ RecordAbilityBattle(battlerId, gLastUsedAbility);
+ gBattleScripting.battlerWithAbility = battlerId;
}
else
gBattlescriptCurrInstr += 7;
@@ -3254,7 +3196,7 @@ static void atk1F_jumpifsideaffecting(void)
u16 flags;
const u8* jumpPtr;
- if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
side = GET_BATTLER_SIDE(gBattlerAttacker);
else
side = GET_BATTLER_SIDE(gBattlerTarget);
@@ -3271,8 +3213,8 @@ static void atk1F_jumpifsideaffecting(void)
static void atk20_jumpifstat(void)
{
u8 ret = 0;
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
- u8 value = gBattleMons[bank].statStages[gBattlescriptCurrInstr[3]];
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ u8 value = gBattleMons[battlerId].statStages[gBattlescriptCurrInstr[3]];
switch (gBattlescriptCurrInstr[2])
{
@@ -3313,7 +3255,7 @@ static void atk21_jumpifstatus3condition(void)
u32 flags;
const u8 *jumpPtr;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
@@ -3335,11 +3277,11 @@ static void atk21_jumpifstatus3condition(void)
static void atk22_jumpiftype(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u8 type = gBattlescriptCurrInstr[2];
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
- if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type)
+ if (gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 7;
@@ -3355,13 +3297,13 @@ static void atk23_getexp(void)
s32 viaExpShare = 0;
u16* exp = &gBattleStruct->expValue;
- gBank1 = GetBattleBank(gBattlescriptCurrInstr[1]);
- sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1];
+ gBattlerFainted = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ sentIn = gSentPokesToOpponent[(gBattlerFainted & 2) >> 1];
switch (gBattleScripting.atk23_state)
{
case 0: // check if should receive exp at all
- if (GetBattlerSide(gBank1) != B_SIDE_OPPONENT || (gBattleTypeFlags &
+ if (GetBattlerSide(gBattlerFainted) != B_SIDE_OPPONENT || (gBattleTypeFlags &
(BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
| BATTLE_TYPE_x4000000
@@ -3375,7 +3317,7 @@ static void atk23_getexp(void)
else
{
gBattleScripting.atk23_state++;
- gBattleStruct->field_DF |= gBitTable[gBattlerPartyIndexes[gBank1]];
+ gBattleStruct->field_DF |= gBitTable[gBattlerPartyIndexes[gBattlerFainted]];
}
break;
case 1: // calculate experience points to redistribute
@@ -3401,7 +3343,7 @@ static void atk23_getexp(void)
viaExpShare++;
}
- calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7;
+ calculatedExp = gBaseStats[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7;
if (viaExpShare) // at least one mon is getting exp via exp share
{
@@ -3422,14 +3364,14 @@ static void atk23_getexp(void)
}
gBattleScripting.atk23_state++;
- gBattleStruct->expGetterId = 0;
+ gBattleStruct->expGetterMonId = 0;
gBattleStruct->sentInPokes = sentIn;
}
// fall through
case 2: // set exp value to the poke in expgetter_id and print message
if (gBattleControllerExecFlags == 0)
{
- item = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HELD_ITEM);
+ item = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HELD_ITEM);
if (item == ITEM_ENIGMA_BERRY)
holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
@@ -3442,7 +3384,7 @@ static void atk23_getexp(void)
gBattleScripting.atk23_state = 5;
gBattleMoveDamage = 0; // used for exp
}
- else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) == MAX_MON_LEVEL)
+ else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) == MAX_MON_LEVEL)
{
*(&gBattleStruct->sentInPokes) >>= 1;
gBattleScripting.atk23_state = 5;
@@ -3458,7 +3400,7 @@ static void atk23_getexp(void)
gBattleStruct->wildVictorySong++;
}
- if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP))
+ if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP))
{
if (gBattleStruct->sentInPokes & 1)
gBattleMoveDamage = *exp;
@@ -3472,10 +3414,10 @@ static void atk23_getexp(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
- if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterId]))
+ if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId]))
{
// check if the pokemon doesn't belong to the player
- if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gBattleStruct->expGetterId >= 3)
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gBattleStruct->expGetterMonId >= 3)
{
i = 0x149;
}
@@ -3490,31 +3432,31 @@ static void atk23_getexp(void)
i = 0x149;
}
- // get exp getter bank
+ // get exp getter battlerId
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterId) && !(gAbsentBattlerFlags & gBitTable[2]))
- gBattleStruct->expGetterBank = 2;
+ if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) && !(gAbsentBattlerFlags & gBitTable[2]))
+ gBattleStruct->expGetterBattlerId = 2;
else
{
if (!(gAbsentBattlerFlags & gBitTable[0]))
- gBattleStruct->expGetterBank = 0;
+ gBattleStruct->expGetterBattlerId = 0;
else
- gBattleStruct->expGetterBank = 2;
+ gBattleStruct->expGetterBattlerId = 2;
}
}
else
- gBattleStruct->expGetterBank = 0;
+ gBattleStruct->expGetterBattlerId = 0;
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterId)
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId)
// buffer 'gained' or 'gained a boosted'
PREPARE_STRING_BUFFER(gBattleTextBuff2, i)
PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage)
- PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank);
- MonGainEVs(&gPlayerParty[gBattleStruct->expGetterId], gBattleMons[gBank1].species);
+ PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBattlerId);
+ MonGainEVs(&gPlayerParty[gBattleStruct->expGetterMonId], gBattleMons[gBattlerFainted].species);
}
gBattleStruct->sentInPokes >>= 1;
gBattleScripting.atk23_state++;
@@ -3524,18 +3466,18 @@ static void atk23_getexp(void)
case 3: // Set stats and give exp
if (gBattleControllerExecFlags == 0)
{
- gBattleBufferB[gBattleStruct->expGetterBank][0] = 0;
- if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) != MAX_MON_LEVEL)
+ gBattleBufferB[gBattleStruct->expGetterBattlerId][0] = 0;
+ if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) != MAX_MON_LEVEL)
{
- gBattleResources->statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
- gBattleResources->statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
- gBattleResources->statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
- gBattleResources->statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
- gBattleResources->statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
- gBattleResources->statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF);
+ gBattleResources->statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleResources->statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleResources->statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
+ gBattleResources->statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleResources->statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
+ gBattleResources->statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
- gActiveBattler = gBattleStruct->expGetterBank;
- BtlController_EmitExpUpdate(0, gBattleStruct->expGetterId, gBattleMoveDamage);
+ gActiveBattler = gBattleStruct->expGetterBattlerId;
+ BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattleScripting.atk23_state++;
@@ -3544,50 +3486,50 @@ static void atk23_getexp(void)
case 4: // lvl up if necessary
if (gBattleControllerExecFlags == 0)
{
- gActiveBattler = gBattleStruct->expGetterBank;
+ gActiveBattler = gBattleStruct->expGetterBattlerId;
if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELLED_UP)
{
- if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterId)
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId)
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterId)
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId)
- PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL))
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL))
BattleScriptPushCursor();
- gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterId];
+ gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId];
gBattlescriptCurrInstr = BattleScript_LevelUp;
gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8));
- AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterId], 0);
+ AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
// update battle mon structure after level up
- if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterId && gBattleMons[0].hp)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && gBattleMons[0].hp)
{
- gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
- gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP);
- gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
- gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
- gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
+ gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
+ gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP);
+ gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
// Why is this duplicated?
- gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
- gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
- gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
- gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF);
+ gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
+ gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
}
// What is else if?
- if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
- gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP);
- gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
- gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
- gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
+ gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
+ gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP);
+ gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
// Duplicated again, but this time there's no Sp Defense
- gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
- gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
- gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
+ gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
}
gBattleScripting.atk23_state = 5;
}
@@ -3603,8 +3545,8 @@ static void atk23_getexp(void)
gBattleScripting.atk23_state = 3;
else
{
- gBattleStruct->expGetterId++;
- if (gBattleStruct->expGetterId <= 5)
+ gBattleStruct->expGetterMonId++;
+ if (gBattleStruct->expGetterMonId <= 5)
gBattleScripting.atk23_state = 2; // loop again
else
gBattleScripting.atk23_state = 6; // we're done
@@ -3614,8 +3556,8 @@ static void atk23_getexp(void)
if (gBattleControllerExecFlags == 0)
{
// not sure why gf clears the item and ability here
- gBattleMons[gBank1].item = 0;
- gBattleMons[gBank1].ability = 0;
+ gBattleMons[gBattlerFainted].item = 0;
+ gBattleMons[gBattlerFainted].ability = 0;
gBattlescriptCurrInstr += 2;
}
break;
@@ -4320,7 +4262,7 @@ static void atk3A_waitstate(void)
static void atk3B_healthbar_update(void)
{
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
gActiveBattler = gBattlerTarget;
else
gActiveBattler = gBattlerAttacker;
@@ -4367,9 +4309,9 @@ static void atk41_call(void)
static void atk42_jumpiftype2(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (gBattlescriptCurrInstr[2] == gBattleMons[bank].type1 || gBattlescriptCurrInstr[2] == gBattleMons[bank].type2)
+ if (gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type1 || gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type2)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
else
gBattlescriptCurrInstr += 7;
@@ -4392,7 +4334,7 @@ static void atk45_playanimation(void)
{
const u16* argumentPtr;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
@@ -4434,7 +4376,7 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po
const u16* argumentPtr;
const u8* animationIdPtr;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
@@ -4503,7 +4445,7 @@ static void atk48_playstatchangeanimation(void)
s32 changeableStats = 0;
u32 statsToCheck = 0;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
statsToCheck = gBattlescriptCurrInstr[2];
if (gBattlescriptCurrInstr[3] & ATK48_STAT_NEGATIVE) // goes down
@@ -4524,8 +4466,8 @@ static void atk48_playstatchangeanimation(void)
else if (!gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer
&& gBattleMons[gActiveBattler].ability != ABILITY_CLEAR_BODY
&& gBattleMons[gActiveBattler].ability != ABILITY_WHITE_SMOKE
- && !(gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE && currStat == STAT_STAGE_ACC)
- && !(gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER && currStat == STAT_STAGE_ATK))
+ && !(gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE && currStat == STAT_ACC)
+ && !(gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK))
{
if (gBattleMons[gActiveBattler].statStages[currStat] > 0)
{
@@ -4604,7 +4546,7 @@ static void atk48_playstatchangeanimation(void)
ldr r0, [r5]\n\
ldrb r0, [r0, 0x1]\n\
str r3, [sp]\n\
- bl GetBattleBank\n\
+ bl GetBattlerForBattleScript\n\
ldr r2, =gActiveBattler\n\
strb r0, [r2]\n\
ldr r0, [r5]\n\
@@ -4868,7 +4810,6 @@ static void atk49_moveend(void)
holdEffectAtk = ItemId_GetHoldEffect(gBattleMons[gBattlerAttacker].item);
choicedMoveAtk = &gBattleStruct->choicedMove[gBattlerAttacker];
-
GET_MOVE_TYPE(gCurrentMove, moveType);
do
@@ -4880,9 +4821,9 @@ static void atk49_moveend(void)
&& gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget
&& GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED
- && gBattleMoves[gCurrentMove].power && gBattleMons[gBattlerTarget].statStages[STAT_STAGE_ATK] <= 0xB)
+ && gBattleMoves[gCurrentMove].power && gBattleMons[gBattlerTarget].statStages[STAT_ATK] <= 0xB)
{
- gBattleMons[gBattlerTarget].statStages[STAT_STAGE_ATK]++;
+ gBattleMons[gBattlerTarget].statStages[STAT_ATK]++;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_RageIsBuilding;
effect = TRUE;
@@ -4892,7 +4833,7 @@ static void atk49_moveend(void)
case 1: // defrosting check
if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE
&& gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget
- && gSpecialStatuses[gBattlerTarget].moveturnLostHP_special
+ && gSpecialStatuses[gBattlerTarget].specialDmg
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && moveType == TYPE_FIRE)
{
gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_FREEZE);
@@ -4917,7 +4858,7 @@ static void atk49_moveend(void)
break;
case 4: // status immunities
if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0))
- effect = TRUE; // it loops through all banks, so we increment after its done with all banks
+ effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers
else
gBattleScripting.atk49_state++;
break;
@@ -4961,7 +4902,7 @@ static void atk49_moveend(void)
}
gBattleScripting.atk49_state++;
break;
- case 11: // item effects for all banks
+ case 11: // item effects for all battlers
if (ItemBattleEffects(3, 0, FALSE))
effect = TRUE;
else
@@ -5095,10 +5036,10 @@ static void atk49_moveend(void)
&& !gProtectStructs[gBattlerAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH
&& !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
{
- u8 bank = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget)));
- if (gBattleMons[bank].hp != 0)
+ u8 battlerId = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget)));
+ if (gBattleMons[battlerId].hp != 0)
{
- gBattlerTarget = bank;
+ gBattlerTarget = battlerId;
gHitMarker |= HITMARKER_NO_ATTACKSTRING;
gBattleScripting.atk49_state = 0;
MoveValuesCleanUp();
@@ -5239,7 +5180,7 @@ static void atk4C_getswitchedmondata(void)
if (gBattleControllerExecFlags)
return;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
gBattlerPartyIndexes[gActiveBattler] = *(gBattleStruct->monToSwitchIntoId + gActiveBattler);
@@ -5258,7 +5199,7 @@ static void atk4D_switchindataupdate(void)
if (gBattleControllerExecFlags)
return;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
oldData = gBattleMons[gActiveBattler];
monData = (u8*)(&gBattleMons[gActiveBattler]);
@@ -5307,7 +5248,7 @@ static void atk4E_switchinanim(void)
if (gBattleControllerExecFlags)
return;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
@@ -5335,7 +5276,7 @@ static void atk4F_jumpifcantswitch(void)
struct Pokemon *party = NULL;
s32 r7 = 0;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1] & ~(ATK4F_DONT_CHECK_STATUSES));
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(ATK4F_DONT_CHECK_STATUSES));
if (!(gBattlescriptCurrInstr[1] & ATK4F_DONT_CHECK_STATUSES)
&& ((gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
@@ -5496,10 +5437,10 @@ static void atk50_openpartyscreen(void)
{
u32 flags;
u8 hitmarkerFaintBits;
- u8 bank;
+ u8 battlerId;
const u8 *jumpPtr;
- bank = 0;
+ battlerId = 0;
flags = 0;
jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
@@ -5711,17 +5652,17 @@ static void atk50_openpartyscreen(void)
hitmarkerFaintBits = gHitMarker >> 0x1C;
- gBank1 = 0;
+ gBattlerFainted = 0;
while (1)
{
- if (gBitTable[gBank1] & hitmarkerFaintBits)
+ if (gBitTable[gBattlerFainted] & hitmarkerFaintBits)
break;
- if (gBank1 >= gBattlersCount)
+ if (gBattlerFainted >= gBattlersCount)
break;
- gBank1++;
+ gBattlerFainted++;
}
- if (gBank1 == gBattlersCount)
+ if (gBattlerFainted == gBattlersCount)
gBattlescriptCurrInstr = jumpPtr;
}
else
@@ -5731,21 +5672,21 @@ static void atk50_openpartyscreen(void)
else
hitmarkerFaintBits = 1;
- bank = GetBattleBank(gBattlescriptCurrInstr[1] & ~(0x80));
- if (gSpecialStatuses[bank].flag40)
+ battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
+ if (gSpecialStatuses[battlerId].flag40)
{
gBattlescriptCurrInstr += 6;
}
- else if (sub_80423F4(bank, 6, 6))
+ else if (sub_80423F4(battlerId, 6, 6))
{
- gActiveBattler = bank;
+ gActiveBattler = battlerId;
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
gBattlescriptCurrInstr = jumpPtr;
}
else
{
- gActiveBattler = bank;
+ gActiveBattler = battlerId;
*(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
@@ -5762,7 +5703,7 @@ static void atk50_openpartyscreen(void)
{
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActiveBattler != bank)
+ if (gActiveBattler != battlerId)
{
BtlController_EmitLinkStandbyMsg(0, 2, 0);
MarkBattlerForControllerExec(gActiveBattler);
@@ -5771,7 +5712,7 @@ static void atk50_openpartyscreen(void)
}
else
{
- gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(bank) ^ BIT_SIDE);
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(battlerId) ^ BIT_SIDE);
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
gActiveBattler ^= BIT_FLANK;
@@ -5788,7 +5729,7 @@ static void atk51_switchhandleorder(void)
if (gBattleControllerExecFlags)
return;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattlescriptCurrInstr[2])
{
@@ -5853,7 +5794,7 @@ static void atk52_switchineffects(void)
{
s32 i;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
sub_803FA70(gActiveBattler);
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
@@ -5880,12 +5821,12 @@ static void atk52_switchineffects(void)
gBattleScripting.battler = gActiveBattler;
BattleScriptPushCursor();
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
gBattlescriptCurrInstr = BattleScript_SpikesOnTarget;
- else if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ else if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
gBattlescriptCurrInstr = BattleScript_SpikesOnAttacker;
else
- gBattlescriptCurrInstr = BattleScript_SpikesOngBank1;
+ gBattlescriptCurrInstr = BattleScript_SpikesOnFaintedBattler;
}
else
{
@@ -5915,14 +5856,14 @@ static void atk52_switchineffects(void)
{
u32 hitmarkerFaintBits = gHitMarker >> 0x1C;
- gBank1++;
+ gBattlerFainted++;
while (1)
{
- if (hitmarkerFaintBits & gBitTable[gBank1] && !(gAbsentBattlerFlags & gBitTable[gBank1]))
+ if (hitmarkerFaintBits & gBitTable[gBattlerFainted] && !(gAbsentBattlerFlags & gBitTable[gBattlerFainted]))
break;
- if (gBank1 >= gBattlersCount)
+ if (gBattlerFainted >= gBattlersCount)
break;
- gBank1++;
+ gBattlerFainted++;
}
}
gBattlescriptCurrInstr += 2;
@@ -5959,7 +5900,7 @@ static void atk55_fanfare(void)
static void atk56_playfaintcry(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitFaintingCry(0);
MarkBattlerForControllerExec(gActiveBattler);
@@ -5977,7 +5918,7 @@ static void atk57(void)
static void atk58_returntoball(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitReturnMonToBall(0, 1);
MarkBattlerForControllerExec(gActiveBattler);
@@ -5989,9 +5930,9 @@ static void atk59_handlelearnnewmove(void)
const u8 *jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
const u8 *jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
- u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], gBattlescriptCurrInstr[9]);
+ u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (ret == 0xFFFE)
- ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], 0);
+ ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
if (ret == 0)
{
@@ -6005,7 +5946,7 @@ static void atk59_handlelearnnewmove(void)
{
gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterId
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
@@ -6013,7 +5954,7 @@ static void atk59_handlelearnnewmove(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
- if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterId
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
@@ -6076,7 +6017,7 @@ static void atk5A_yesnoboxlearnmove(void)
if (!gPaletteFade.active)
{
FreeAllWindowBuffers();
- sub_81BFA38(gPlayerParty, gBattleStruct->expGetterId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
+ sub_81BFA38(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
gBattleScripting.learnMoveState++;
}
break;
@@ -6096,7 +6037,7 @@ static void atk5A_yesnoboxlearnmove(void)
}
else
{
- u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MOVE1 + movePosition);
+ u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + movePosition);
if (IsHMMove2(moveId))
{
PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBattler);
@@ -6108,10 +6049,10 @@ static void atk5A_yesnoboxlearnmove(void)
PREPARE_MOVE_BUFFER(gBattleTextBuff2, moveId)
- RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterId], movePosition);
- SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterId], gMoveToLearn, movePosition);
+ RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], movePosition);
+ SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, movePosition);
- if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterId
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId
&& !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[0].unk18_b & gBitTable[movePosition]))
{
@@ -6119,7 +6060,7 @@ static void atk5A_yesnoboxlearnmove(void)
SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && gBattlerPartyIndexes[2] == gBattleStruct->expGetterId
+ && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId
&& !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[2].unk18_b & gBitTable[movePosition]))
{
@@ -6192,7 +6133,7 @@ static void atk5B_yesnoboxstoplearningmove(void)
static void atk5C_hitanimation(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
@@ -6282,7 +6223,7 @@ static void atk5D_getmoneyreward(void)
static void atk5E(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattleCommunication[0])
{
@@ -6338,7 +6279,7 @@ static void atk61_drawpartystatussummary(void)
if (gBattleControllerExecFlags)
return;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
@@ -6368,7 +6309,7 @@ static void atk61_drawpartystatussummary(void)
static void atk62(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitCmd49(0);
MarkBattlerForControllerExec(gActiveBattler);
@@ -6389,7 +6330,7 @@ static void atk64_statusanimation(void)
{
if (gBattleControllerExecFlags == 0)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
&& gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
@@ -6407,7 +6348,7 @@ static void atk65_status2animation(void)
if (gBattleControllerExecFlags == 0)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
wantedToAnimate = BSScriptRead32(gBattlescriptCurrInstr + 2);
if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
&& gDisableStructs[gActiveBattler].substituteHP == 0
@@ -6426,7 +6367,7 @@ static void atk66_chosenstatusanimation(void)
if (gBattleControllerExecFlags == 0)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
wantedStatus = BSScriptRead32(gBattlescriptCurrInstr + 3);
if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
&& gDisableStructs[gActiveBattler].substituteHP == 0
@@ -6494,21 +6435,22 @@ static void atk68_cancelallactions(void)
static void atk69_adjustsetdamage(void) // The same as 0x7, except there's no random damage multiplier.
{
- u8 holdEffect, quality;
+ u8 holdEffect, param;
if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect, quality = gEnigmaBerries[gBattlerTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBattler = gBattlerTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
- if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
RecordItemEffectBattle(gBattlerTarget, holdEffect);
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
@@ -6542,7 +6484,7 @@ static void atk6A_removeitem(void)
{
u16* usedHeldItem;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler];
*usedHeldItem = gBattleMons[gActiveBattler].item;
@@ -6657,7 +6599,7 @@ static void sub_804F100(void)
{
struct StatsArray currentStats;
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], &currentStats);
+ sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
sub_81D3640(0xD, gBattleResources->statsBeforeLvlUp, &currentStats, 0xE, 0xD, 0xF);
}
@@ -6665,7 +6607,7 @@ static void sub_804F144(void)
{
struct StatsArray currentStats;
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], &currentStats);
+ sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
sub_81D3784(0xD, &currentStats, 0xE, 0xD, 0xF);
}
@@ -6708,9 +6650,9 @@ static void PutLevelAndGenderOnLvlUpBox(void)
u8 *txtPtr;
u32 var;
- monLevel = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
- monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterId]);
- GetMonNickname(&gPlayerParty[gBattleStruct->expGetterId], gStringVar4);
+ monLevel = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
+ monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterMonId]);
+ GetMonNickname(&gPlayerParty[gBattleStruct->expGetterMonId], gStringVar4);
subPrinter.current_text_offset = gStringVar4;
subPrinter.windowId = 14;
@@ -6786,8 +6728,8 @@ static void PutMonIconOnLvlUpBox(void)
struct SpriteSheet iconSheet;
struct SpritePalette iconPalSheet;
- u16 species = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPECIES);
- u32 personality = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_PERSONALITY);
+ u16 species = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPECIES);
+ u32 personality = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_PERSONALITY);
const u8* iconPtr = GetMonIconPtr(species, personality, 1);
iconSheet.data = iconPtr;
@@ -6827,9 +6769,9 @@ static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
static bool32 IsMonGettingExpSentOut(void)
{
- if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterId)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId)
return TRUE;
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterId)
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId)
return TRUE;
return FALSE;
@@ -6849,7 +6791,7 @@ static void atk6E_setatktoplayer0(void)
static void atk6F_makevisible(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitSpriteInvisibility(0, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
@@ -6858,9 +6800,9 @@ static void atk6F_makevisible(void)
static void atk70_recordlastability(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
- gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for bank argument.
+ gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for battlerId argument.
}
void BufferMoveToLearnIntoBattleTextBuff2(void)
@@ -6876,7 +6818,7 @@ static void atk71_buffermovetolearn(void)
static void atk72_jumpifplayerran(void)
{
- if (TryRunFromBattle(gBank1))
+ if (TryRunFromBattle(gBattlerFainted))
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -6889,7 +6831,7 @@ static void atk73_hpthresholds(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
opposingBank = gActiveBattler ^ BIT_SIDE;
result = gBattleMons[opposingBank].hp * 100 / gBattleMons[opposingBank].maxHP;
@@ -6917,7 +6859,7 @@ static void atk74_hpthresholds2(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
opposingBank = gActiveBattler ^ BIT_SIDE;
hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBattlerSide(opposingBank));
result = (hpSwitchout - gBattleMons[opposingBank].hp) * 100 / hpSwitchout;
@@ -6937,9 +6879,8 @@ static void atk74_hpthresholds2(void)
static void atk75_useitemonopponent(void)
{
- gBankInMenu = gBattlerAttacker;
+ gBattlerInMenuId = gBattlerAttacker;
PokemonUseItemEffects(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, 1);
-
gBattlescriptCurrInstr += 1;
}
@@ -6948,7 +6889,7 @@ static void atk76_various(void)
u8 side;
s32 i;
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattlescriptCurrInstr[2])
{
@@ -6980,11 +6921,11 @@ static void atk76_various(void)
gSpecialStatuses[gActiveBattler].traced = 0;
break;
case VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP:
- if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterId || gBattlerPartyIndexes[2] == gBattleStruct->expGetterId)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId || gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId)
{
u16 *choicedMove;
- if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterId)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId)
gActiveBattler = 0;
else
gActiveBattler = 2;
@@ -7111,7 +7052,7 @@ static void atk76_various(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED;
else
- gBattleOutcome = B_OUTCOME_POKE_TELEPORTED;
+ gBattleOutcome = B_OUTCOME_MON_TELEPORTED;
break;
case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC:
BtlController_EmitPlayFanfareOrBGM(0, MUS_KACHI1, TRUE);
@@ -7234,7 +7175,7 @@ static void atk7B_tryhealhalfhealth(void)
{
const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- if (gBattlescriptCurrInstr[5] == BS_GET_ATTACKER)
+ if (gBattlescriptCurrInstr[5] == BS_ATTACKER)
gBattlerTarget = gBattlerAttacker;
gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2;
@@ -7325,7 +7266,7 @@ static void atk7E_setreflect(void)
{
gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_REFLECT;
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectTimer = 5;
- gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectBank = gBattlerAttacker;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectBattlerId = gBattlerAttacker;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
@@ -7418,13 +7359,13 @@ static void atk83_nop(void)
gBattlescriptCurrInstr++;
}
-bool8 UproarWakeUpCheck(u8 bank)
+bool8 UproarWakeUpCheck(u8 battlerId)
{
s32 i;
for (i = 0; i < gBattlersCount; i++)
{
- if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF)
+ if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[battlerId].ability == ABILITY_SOUNDPROOF)
continue;
gBattleScripting.battler = i;
@@ -7624,7 +7565,7 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
return STAT_CHANGE_DIDNT_WORK;
}
else if (gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE
- && !certain && statId == STAT_STAGE_ACC)
+ && !certain && statId == STAT_ACC)
{
if (flags == STAT_CHANGE_BS_PTR)
{
@@ -7637,7 +7578,7 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
return STAT_CHANGE_DIDNT_WORK;
}
else if (gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER
- && !certain && statId == STAT_STAGE_ATK)
+ && !certain && statId == STAT_ATK)
{
if (flags == STAT_CHANGE_BS_PTR)
{
@@ -7808,8 +7749,8 @@ static bool8 TryDoForceSwitchOut(void)
static void atk8F_forcerandomswitch(void)
{
s32 i;
- s32 bank1PartyId = 0;
- s32 bank2PartyId = 0;
+ s32 battler1PartyId = 0;
+ s32 battler2PartyId = 0;
#ifdef NONMATCHING
s32 lastMonId = 0; // + 1
@@ -7846,8 +7787,8 @@ static void atk8F_forcerandomswitch(void)
}
monsCount = 3;
minNeeded = 1;
- bank2PartyId = gBattlerPartyIndexes[gBattlerTarget];
- bank1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
|| (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_x2000000))
@@ -7864,8 +7805,8 @@ static void atk8F_forcerandomswitch(void)
}
monsCount = 3;
minNeeded = 1;
- bank2PartyId = gBattlerPartyIndexes[gBattlerTarget];
- bank1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
@@ -7891,8 +7832,8 @@ static void atk8F_forcerandomswitch(void)
monsCount = 3;
minNeeded = 1;
}
- bank2PartyId = gBattlerPartyIndexes[gBattlerTarget];
- bank1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@@ -7900,8 +7841,8 @@ static void atk8F_forcerandomswitch(void)
lastMonId = 6;
monsCount = 6;
minNeeded = 2;
- bank2PartyId = gBattlerPartyIndexes[gBattlerTarget];
- bank1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else
{
@@ -7909,8 +7850,8 @@ static void atk8F_forcerandomswitch(void)
lastMonId = 6;
monsCount = 6;
minNeeded = 1;
- bank2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one pokemon out in single battles
- bank1PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one pokemon out in single battles
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget];
}
for (i = firstMonId; i < lastMonId; i++)
@@ -7936,8 +7877,8 @@ static void atk8F_forcerandomswitch(void)
i = Random() % monsCount;
i += firstMonId;
}
- while (i == bank2PartyId
- || i == bank1PartyId
+ while (i == battler2PartyId
+ || i == battler1PartyId
|| GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE
|| GetMonData(&party[i], MON_DATA_IS_EGG) == TRUE
|| GetMonData(&party[i], MON_DATA_HP) == 0);
@@ -8059,7 +8000,7 @@ static void atk92_setlightscreen(void)
{
gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_LIGHTSCREEN;
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenTimer = 5;
- gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenBank = gBattlerAttacker;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenBattlerId = gBattlerAttacker;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2)
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
@@ -8085,7 +8026,7 @@ static void atk93_tryKO(void)
param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBattler = gBattlerTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
@@ -8286,7 +8227,7 @@ static void atk98_updatestatusicon(void)
if (gBattlescriptCurrInstr[1] != BS_ATTACKER_WITH_PARTNER)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -8322,7 +8263,7 @@ static void atk99_setmist(void)
else
{
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer = 5;
- gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistBank = gBattlerAttacker;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistBattlerId = gBattlerAttacker;
gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_MIST;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
@@ -8518,18 +8459,18 @@ static void atkA0_psywavedamageeffect(void)
static void atkA1_counterdamagecalculator(void)
{
u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
- u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].physicalBank);
+ u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].physicalBattlerId);
if (gProtectStructs[gBattlerAttacker].physicalDmg
&& sideAttacker != sideTarget
- && gBattleMons[gProtectStructs[gBattlerAttacker].physicalBank].hp)
+ && gBattleMons[gProtectStructs[gBattlerAttacker].physicalBattlerId].hp)
{
gBattleMoveDamage = gProtectStructs[gBattlerAttacker].physicalDmg * 2;
if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp)
gBattlerTarget = gSideTimers[sideTarget].followmeTarget;
else
- gBattlerTarget = gProtectStructs[gBattlerAttacker].physicalBank;
+ gBattlerTarget = gProtectStructs[gBattlerAttacker].physicalBattlerId;
gBattlescriptCurrInstr += 5;
}
@@ -8543,16 +8484,16 @@ static void atkA1_counterdamagecalculator(void)
static void atkA2_mirrorcoatdamagecalculator(void) // a copy of atkA1 with the physical -> special field changes
{
u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
- u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].specialBank);
+ u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].specialBattlerId);
- if (gProtectStructs[gBattlerAttacker].specialDmg && sideAttacker != sideTarget && gBattleMons[gProtectStructs[gBattlerAttacker].specialBank].hp)
+ if (gProtectStructs[gBattlerAttacker].specialDmg && sideAttacker != sideTarget && gBattleMons[gProtectStructs[gBattlerAttacker].specialBattlerId].hp)
{
gBattleMoveDamage = gProtectStructs[gBattlerAttacker].specialDmg * 2;
if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp)
gBattlerTarget = gSideTimers[sideTarget].followmeTarget;
else
- gBattlerTarget = gProtectStructs[gBattlerAttacker].specialBank;
+ gBattlerTarget = gProtectStructs[gBattlerAttacker].specialBattlerId;
gBattlescriptCurrInstr += 5;
}
@@ -8634,7 +8575,7 @@ static void atkA5_painsplitdmgcalc(void)
storeLoc[3] = (painSplitHp & 0xFF000000) >> 24;
gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp - hpDiff;
- gSpecialStatuses[gBattlerTarget].moveturnLostHP = 0xFFFF;
+ gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF;
gBattlescriptCurrInstr += 5;
}
@@ -8793,7 +8734,7 @@ static bool8 IsInvalidForSleepTalkOrAssist(u16 move)
return FALSE;
}
-static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
+static u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
{
// first argument is unused
if (gBattleMoves[move].effect == EFFECT_SOLARBEAM
@@ -9222,7 +9163,7 @@ static void atkB8_setsafeguard(void)
{
gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_SAFEGUARD;
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardTimer = 5;
- gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardBank = gBattlerAttacker;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardBattlerId = gBattlerAttacker;
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
@@ -9316,7 +9257,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void)
}
gCurrentMove = MOVE_PURSUIT;
- gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBattlerTarget);
+ gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerTarget);
gBattlescriptCurrInstr += 5;
gBattleScripting.animTurn = 1;
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
@@ -9351,10 +9292,10 @@ static void atkBC_maxattackhalvehp(void) // belly drum
if (!(gBattleMons[gBattlerAttacker].maxHP / 2))
halfHp = 1;
- if (gBattleMons[gBattlerAttacker].statStages[STAT_STAGE_ATK] < 12
+ if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] < 12
&& gBattleMons[gBattlerAttacker].hp > halfHp)
{
- gBattleMons[gBattlerAttacker].statStages[STAT_STAGE_ATK] = 12;
+ gBattleMons[gBattlerAttacker].statStages[STAT_ATK] = 12;
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
@@ -9774,8 +9715,8 @@ static void atkC8_sethail(void)
static void atkC9_jumpifattackandspecialattackcannotfall(void) // memento
{
- if (gBattleMons[gBattlerTarget].statStages[STAT_STAGE_ATK] == 0
- && gBattleMons[gBattlerTarget].statStages[STAT_STAGE_SPATK] == 0
+ if (gBattleMons[gBattlerTarget].statStages[STAT_ATK] == 0
+ && gBattleMons[gBattlerTarget].statStages[STAT_SPATK] == 0
&& gBattleCommunication[6] != 1)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
@@ -9993,7 +9934,7 @@ static void atkD4_trywish(void)
if (gWishFutureKnock.wishCounter[gBattlerAttacker] == 0)
{
gWishFutureKnock.wishCounter[gBattlerAttacker] = 2;
- gWishFutureKnock.wishUserID[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker];
+ gWishFutureKnock.wishMonId[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker];
gBattlescriptCurrInstr += 6;
}
else
@@ -10002,7 +9943,7 @@ static void atkD4_trywish(void)
}
break;
case 1: // heal effect
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerTarget, gWishFutureKnock.wishUserID[gBattlerTarget])
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerTarget, gWishFutureKnock.wishMonId[gBattlerTarget])
gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2;
if (gBattleMoveDamage == 0)
@@ -10034,9 +9975,9 @@ static void atkD5_trysetroots(void) // ingrain
static void atkD6_doubledamagedealtifdamaged(void)
{
if ((gProtectStructs[gBattlerAttacker].physicalDmg
- && gProtectStructs[gBattlerAttacker].physicalBank == gBattlerTarget)
+ && gProtectStructs[gBattlerAttacker].physicalBattlerId == gBattlerTarget)
|| (gProtectStructs[gBattlerAttacker].specialDmg
- && gProtectStructs[gBattlerAttacker].specialBank == gBattlerTarget))
+ && gProtectStructs[gBattlerAttacker].specialBattlerId == gBattlerTarget))
{
gBattleScripting.dmgMultiplier = 2;
}
@@ -10111,13 +10052,13 @@ static void atkDB_tryimprision(void)
}
else
{
- u8 bank, sideAttacker;
+ u8 battlerId, sideAttacker;
sideAttacker = GetBattlerSide(gBattlerAttacker);
PressurePPLoseOnUsingImprision(gBattlerAttacker);
- for (bank = 0; bank < gBattlersCount; bank++)
+ for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- if (sideAttacker != GetBattlerSide(bank))
+ if (sideAttacker != GetBattlerSide(battlerId))
{
s32 attackerMoveId;
for (attackerMoveId = 0; attackerMoveId < 4; attackerMoveId++)
@@ -10125,7 +10066,7 @@ static void atkDB_tryimprision(void)
s32 i;
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBattlerAttacker].moves[attackerMoveId] == gBattleMons[bank].moves[i]
+ if (gBattleMons[gBattlerAttacker].moves[attackerMoveId] == gBattleMons[battlerId].moves[i]
&& gBattleMons[gBattlerAttacker].moves[attackerMoveId] != MOVE_NONE)
break;
}
@@ -10140,7 +10081,7 @@ static void atkDB_tryimprision(void)
}
}
}
- if (bank == gBattlersCount) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes
+ if (battlerId == gBattlersCount) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
}
@@ -10282,7 +10223,7 @@ static void atkE1_trygetintimidatetarget(void)
static void atkE2_switchoutabilities(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattleMons[gActiveBattler].ability)
{
@@ -10298,7 +10239,7 @@ static void atkE2_switchoutabilities(void)
static void atkE3_jumpifhasnohp(void)
{
- gActiveBattler = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gBattleMons[gActiveBattler].hp == 0)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
@@ -10558,14 +10499,14 @@ static void atkEC_pursuitrelated(void)
static void atkEF_snatchsetbanks(void)
{
- gEffectBank = gBattlerAttacker;
+ gEffectBattler = gBattlerAttacker;
if (gBattlerAttacker == gBattlerTarget)
gBattlerAttacker = gBattlerTarget = gBattleScripting.battler;
else
gBattlerTarget = gBattleScripting.battler;
- gBattleScripting.battler = gEffectBank;
+ gBattleScripting.battler = gEffectBattler;
gBattlescriptCurrInstr++;
}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 69da30435..fdf6e77b6 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -29,6 +29,8 @@
#include "strings.h"
#include "secret_base.h"
#include "string_util.h"
+#include "overworld.h"
+#include "field_weather.h"
enum
{
@@ -58,14 +60,11 @@ extern void sub_81BE72C(void);
extern void FreezeMapObjects(void);
extern void sub_808BCF4(void);
extern void sub_80EECC8(void);
-extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
-extern void c2_exit_to_overworld_2_switch(void);
extern void Overworld_ClearSavedMusic(void);
extern void CB2_WhiteOut(void);
extern void sub_80AF6F0(void);
extern void PlayBattleBGM(void);
extern void sub_81DA57C(void);
-extern u8 GetSav1Weather(void);
extern u8 Overworld_GetFlashLevel(void);
extern u16 sub_81A9AA8(u8 localId);
extern u16 sub_81D6180(u8 localId);
@@ -81,12 +80,6 @@ extern void sub_81D61E8(void);
extern void sub_80982B8(void);
extern void sub_81A9EDC(u16 a0);
extern void sub_81D572C(u8 a0, u16 arg1);
-extern void IncrementGameStat(u8 statId);
-extern u32 GetGameStat(u8 statId);
-
-extern u32 gBattleTypeFlags;
-extern u8 gBattleOutcome;
-extern void (*gFieldCallback)(void);
// this file's functions
static void DoBattlePikeWildBattle(void);
@@ -995,8 +988,8 @@ static bool32 IsPlayerDefeated(u32 battleOutcome)
case B_OUTCOME_WON:
case B_OUTCOME_RAN:
case B_OUTCOME_PLAYER_TELEPORTED:
- case B_OUTCOME_POKE_FLED:
- case B_OUTCOME_CAUGHT_POKE:
+ case B_OUTCOME_MON_FLED:
+ case B_OUTCOME_CAUGHT:
return FALSE;
default:
return FALSE;
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 0ff8cd903..e0d208f23 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -61,9 +61,7 @@ extern u16 gBattle_BG0_Y;
extern const struct OamData gFieldObjectBaseOam_32x32;
-extern void c2_exit_to_overworld_2_switch(void);
extern void sub_80AC3D0(void);
-extern void ScanlineEffect_Clear(void);
// this file's functions
static void LaunchBattleTransitionTask(u8 transitionId);
diff --git a/src/battle_util.c b/src/battle_util.c
index b159bb6c4..a457ce15d 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "constants/battle_script_commands.h"
#include "constants/abilities.h"
#include "constants/moves.h"
#include "constants/hold_effects.h"
@@ -15,52 +16,13 @@
#include "text.h"
#include "string_util.h"
#include "battle_message.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
#include "event_data.h"
#include "link.h"
#include "berry.h"
-extern const u8* gBattlescriptCurrInstr;
-extern const u8* gSelectionBattleScripts[MAX_BATTLERS_COUNT];
-extern const u8* gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u8 gActiveBattler;
-extern u8 gStringBattler;
-extern u16 gCurrentMove;
-extern u16 gLastUsedItem;
-extern u8 gBattlersCount;
-extern u32 gStatuses3[MAX_BATTLERS_COUNT];
-extern u8 gBattlerAttacker;
-extern u8 gBattlerTarget;
-extern u8 gAbsentBattlerFlags;
-extern u16 gBattleWeather;
-extern u8 gBattleTurnOrder[MAX_BATTLERS_COUNT];
-extern u16 gSideStatuses[2];
-extern u8 gBattleCommunication[];
-extern void (*gBattleMainFunc)(void);
-extern s32 gBattleMoveDamage;
-extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
-extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
-extern u32 gBattleTypeFlags;
-extern u16 gLastMoves[MAX_BATTLERS_COUNT];
-extern u32 gHitMarker;
-extern u8 gEffectBank;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBank1;
-extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
-extern u8 gMoveResultFlags;
-extern s32 gTakenDmg[MAX_BATTLERS_COUNT];
-extern u8 gTakenDmgBanks[MAX_BATTLERS_COUNT];
-extern u8 gLastUsedAbility;
-extern u8 gCurrentActionFuncId;
-extern u32 gBattleControllerExecFlags;
-extern u16 gRandomMove;
-extern u8 gCurrMovePos;
-extern u8 gUnknown_020241E9;
-extern u8 gSentPokesToOpponent[2];
-
extern const struct BattleMove gBattleMoves[];
extern u8 weather_get_current(void);
@@ -72,46 +34,46 @@ static const u16 sSoundMovesTable[] =
MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, 0xFFFF
};
-u8 GetBattleBank(u8 caseId)
+u8 GetBattlerForBattleScript(u8 caseId)
{
u8 ret = 0;
switch (caseId)
{
- case BS_GET_TARGET:
+ case BS_TARGET:
ret = gBattlerTarget;
break;
- case BS_GET_ATTACKER:
+ case BS_ATTACKER:
ret = gBattlerAttacker;
break;
- case BS_GET_EFFECT_BANK:
- ret = gEffectBank;
+ case BS_EFFECT_BATTLER:
+ ret = gEffectBattler;
break;
- case BS_GET_BANK_0:
+ case BS_BANK_0:
ret = 0;
break;
- case BS_GET_SCRIPTING_BANK:
+ case BS_SCRIPTING:
ret = gBattleScripting.battler;
break;
- case BS_GET_gBank1:
- ret = gBank1;
+ case BS_FAINTED:
+ ret = gBattlerFainted;
break;
case 5:
- ret = gBank1;
+ ret = gBattlerFainted;
break;
case 4:
case 6:
case 8:
case 9:
- case BS_GET_PLAYER1:
+ case BS_PLAYER1:
ret = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
break;
- case BS_GET_OPPONENT1:
+ case BS_OPPONENT1:
ret = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
break;
- case BS_GET_PLAYER2:
+ case BS_PLAYER2:
ret = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
break;
- case BS_GET_OPPONENT2:
+ case BS_OPPONENT2:
ret = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
break;
}
@@ -420,7 +382,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
else
holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item);
- gStringBattler = gActiveBattler;
+ gPotentialItemEffectBattler = gActiveBattler;
if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move)
{
@@ -453,36 +415,36 @@ u8 TrySetCantSelectMoveBattleScript(void)
return limitations;
}
-u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
+u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check)
{
u8 holdEffect;
- u16 *choicedMove = &gBattleStruct->choicedMove[bank];
+ u16 *choicedMove = &gBattleStruct->choicedMove[battlerId];
s32 i;
- if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[bank].holdEffect;
+ if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[battlerId].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item);
- gStringBattler = bank;
+ gPotentialItemEffectBattler = battlerId;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE)
+ if (gBattleMons[battlerId].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE)
unusableMoves |= gBitTable[i];
- if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP)
+ if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP)
unusableMoves |= gBitTable[i];
- if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED)
+ if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED)
unusableMoves |= gBitTable[i];
- if (gBattleMons[bank].moves[i] == gLastMoves[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT)
+ if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT)
unusableMoves |= gBitTable[i];
- if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0)
+ if (gDisableStructs[battlerId].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0)
unusableMoves |= gBitTable[i];
- if (GetImprisonedMovesCount(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
+ if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
unusableMoves |= gBitTable[i];
- if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i])
+ if (gDisableStructs[battlerId].encoreTimer1 && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
- if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i])
+ if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
}
return unusableMoves;
@@ -506,11 +468,11 @@ bool8 AreAllMovesUnusable(void)
return (unusable == 0xF);
}
-u8 GetImprisonedMovesCount(u8 bank, u16 move)
+u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
{
s32 i;
u8 imprisionedMoves = 0;
- u8 bankSide = GetBattlerSide(bank);
+ u8 bankSide = GetBattlerSide(battlerId);
for (i = 0; i < gBattlersCount; i++)
{
@@ -546,7 +508,7 @@ u8 UpdateTurnCounters(void)
{
u8 sideBank;
- switch (gBattleStruct->turncountersTracker)
+ switch (gBattleStruct->turnCountersTracker)
{
case 0:
for (i = 0; i < gBattlersCount; i++)
@@ -565,7 +527,7 @@ u8 UpdateTurnCounters(void)
// It's stupid, but won't match without it
{
- u8* var = &gBattleStruct->turncountersTracker;
+ u8* var = &gBattleStruct->turnCountersTracker;
(*var)++;
gBattleStruct->turnSideTracker = 0;
}
@@ -574,7 +536,7 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].reflectBank;
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].reflectBattlerId;
if (gSideStatuses[sideBank] & SIDE_STATUS_REFLECT)
{
if (--gSideTimers[sideBank].reflectTimer == 0)
@@ -591,7 +553,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
@@ -599,7 +561,7 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].lightscreenBank;
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].lightscreenBattlerId;
if (gSideStatuses[sideBank] & SIDE_STATUS_LIGHTSCREEN)
{
if (--gSideTimers[sideBank].lightscreenTimer == 0)
@@ -617,7 +579,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
@@ -625,7 +587,7 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].mistBank;
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].mistBattlerId;
if (gSideTimers[sideBank].mistTimer != 0
&& --gSideTimers[sideBank].mistTimer == 0)
{
@@ -641,7 +603,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
@@ -649,7 +611,7 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].safeguardBank;
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].safeguardBattlerId;
if (gSideStatuses[sideBank] & SIDE_STATUS_SAFEGUARD)
{
if (--gSideTimers[sideBank].safeguardTimer == 0)
@@ -665,7 +627,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
@@ -687,7 +649,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
}
break;
case 6:
@@ -718,7 +680,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(BattleScript_RainContinuesOrEnds);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 7:
if (gBattleWeather & WEATHER_SANDSTORM_ANY)
@@ -738,7 +700,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 8:
if (gBattleWeather & WEATHER_SUN_ANY)
@@ -756,7 +718,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 9:
if (gBattleWeather & WEATHER_HAIL)
@@ -776,7 +738,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 10:
effect++;
@@ -793,12 +755,12 @@ u8 TurnBasedEffects(void)
u8 effect = 0;
gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
- while (gBattleStruct->turnEffectsBank < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
+ while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
{
- gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->turnEffectsBank];
+ gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->turnEffectsBattlerId];
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
{
- gBattleStruct->turnEffectsBank++;
+ gBattleStruct->turnEffectsBattlerId++;
}
else
{
@@ -838,7 +800,7 @@ u8 TurnBasedEffects(void)
&& gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK].hp != 0
&& gBattleMons[gActiveBattler].hp != 0)
{
- gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP
+ gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the battlerId that receives HP
gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
@@ -1089,7 +1051,7 @@ u8 TurnBasedEffects(void)
gBattleMons[gActiveBattler].status1 |= (Random() & 3) + 2;
BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
- gEffectBank = gActiveBattler;
+ gEffectBattler = gActiveBattler;
BattleScriptExecute(BattleScript_YawnMakesAsleep);
effect++;
}
@@ -1098,7 +1060,7 @@ u8 TurnBasedEffects(void)
break;
case 19: // done
gBattleStruct->turnEffectsTracker = 0;
- gBattleStruct->turnEffectsBank++;
+ gBattleStruct->turnEffectsBattlerId++;
break;
}
if (effect != 0)
@@ -1116,16 +1078,16 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
switch (gBattleStruct->wishPerishSongState)
{
case 0:
- while (gBattleStruct->wishPerishSongBank < gBattlersCount)
+ while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount)
{
- gActiveBattler = gBattleStruct->wishPerishSongBank;
+ gActiveBattler = gBattleStruct->wishPerishSongBattlerId;
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
{
- gBattleStruct->wishPerishSongBank++;
+ gBattleStruct->wishPerishSongBattlerId++;
continue;
}
- gBattleStruct->wishPerishSongBank++;
+ gBattleStruct->wishPerishSongBattlerId++;
if (gWishFutureKnock.futureSightCounter[gActiveBattler] != 0
&& --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0
&& gBattleMons[gActiveBattler].hp != 0)
@@ -1140,7 +1102,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
gBattlerTarget = gActiveBattler;
gBattlerAttacker = gWishFutureKnock.futureSightAttacker[gActiveBattler];
gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBattler];
- gSpecialStatuses[gBattlerTarget].moveturnLostHP = 0xFFFF;
+ gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF;
BattleScriptExecute(BattleScript_MonTookFutureAttack);
if (gWishFutureKnock.futureSightCounter[gActiveBattler] == 0
@@ -1155,19 +1117,19 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
{
u8 *state = &gBattleStruct->wishPerishSongState;
*state = 1;
- gBattleStruct->wishPerishSongBank = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
}
// fall through
case 1:
- while (gBattleStruct->wishPerishSongBank < gBattlersCount)
+ while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount)
{
- gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->wishPerishSongBank];
+ gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->wishPerishSongBattlerId];
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
{
- gBattleStruct->wishPerishSongBank++;
+ gBattleStruct->wishPerishSongBattlerId++;
continue;
}
- gBattleStruct->wishPerishSongBank++;
+ gBattleStruct->wishPerishSongBattlerId++;
if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG)
{
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBattler].perishSongTimer1);
@@ -1190,7 +1152,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
{
u8 *state = &gBattleStruct->wishPerishSongState;
*state = 2;
- gBattleStruct->wishPerishSongBank = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
}
// fall through
case 2:
@@ -1228,7 +1190,7 @@ bool8 HandleFaintedMonActions(void)
switch (gBattleStruct->faintedActionsState)
{
case 0:
- gBattleStruct->faintedActionsBank = 0;
+ gBattleStruct->faintedActionsBattlerId = 0;
gBattleStruct->faintedActionsState++;
for (i = 0; i < gBattlersCount; i++)
{
@@ -1239,45 +1201,45 @@ bool8 HandleFaintedMonActions(void)
case 1:
do
{
- gBank1 = gBattlerTarget = gBattleStruct->faintedActionsBank;
- if (gBattleMons[gBattleStruct->faintedActionsBank].hp == 0
- && !(gBattleStruct->field_DF & gBitTable[gBattlerPartyIndexes[gBattleStruct->faintedActionsBank]])
- && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBank]))
+ gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId;
+ if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0
+ && !(gBattleStruct->field_DF & gBitTable[gBattlerPartyIndexes[gBattleStruct->faintedActionsBattlerId]])
+ && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId]))
{
BattleScriptExecute(BattleScript_GiveExp);
gBattleStruct->faintedActionsState = 2;
return TRUE;
}
- } while (++gBattleStruct->faintedActionsBank != gBattlersCount);
+ } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount);
gBattleStruct->faintedActionsState = 3;
break;
case 2:
- sub_803F9EC(gBank1);
- if (++gBattleStruct->faintedActionsBank == gBattlersCount)
+ sub_803F9EC(gBattlerFainted);
+ if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount)
gBattleStruct->faintedActionsState = 3;
else
gBattleStruct->faintedActionsState = 1;
break;
case 3:
- gBattleStruct->faintedActionsBank = 0;
+ gBattleStruct->faintedActionsBattlerId = 0;
gBattleStruct->faintedActionsState++;
// fall through
case 4:
do
{
- gBank1 = gBattlerTarget = gBattleStruct->faintedActionsBank;
- if (gBattleMons[gBattleStruct->faintedActionsBank].hp == 0
- && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBank]))
+ gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId;
+ if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0
+ && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId]))
{
BattleScriptExecute(BattleScript_HandleFaintedMon);
gBattleStruct->faintedActionsState = 5;
return TRUE;
}
- } while (++gBattleStruct->faintedActionsBank != gBattlersCount);
+ } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount);
gBattleStruct->faintedActionsState = 6;
break;
case 5:
- if (++gBattleStruct->faintedActionsBank == gBattlersCount)
+ if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount)
gBattleStruct->faintedActionsState = 6;
else
gBattleStruct->faintedActionsState = 4;
@@ -1534,7 +1496,7 @@ u8 AtkCanceller_UnableToUseMove(void)
{
gCurrentMove = MOVE_BIDE;
*bideDmg = gTakenDmg[gBattlerAttacker] * 2;
- gBattlerTarget = gTakenDmgBanks[gBattlerAttacker];
+ gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker];
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
gBattlerTarget = GetMoveTarget(MOVE_BIDE, 1);
gBattlescriptCurrInstr = BattleScript_BideAttack;
@@ -1949,9 +1911,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
}
break;
case ABILITY_SPEED_BOOST:
- if (gBattleMons[battler].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[battler].isFirstTurn != 2)
+ if (gBattleMons[battler].statStages[STAT_SPEED] < 0xC && gDisableStructs[battler].isFirstTurn != 2)
{
- gBattleMons[battler].statStages[STAT_STAGE_SPEED]++;
+ gBattleMons[battler].statStages[STAT_SPEED]++;
gBattleScripting.animArg1 = 0x11;
gBattleScripting.animArg2 = 0;
BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates);
@@ -2062,7 +2024,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& gBattleMons[battler].type1 != moveType
&& gBattleMons[battler].type2 != moveType
&& gBattleMons[battler].hp != 0)
@@ -2079,7 +2041,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBattlerAttacker].hp != 0
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
{
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16;
@@ -2094,7 +2056,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBattlerAttacker].hp != 0
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 10) == 0)
{
@@ -2117,7 +2079,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBattlerAttacker].hp != 0
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
@@ -2132,7 +2094,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMons[gBattlerAttacker].hp != 0
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
@@ -2148,7 +2110,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
&& gBattleMons[gBattlerAttacker].hp != 0
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (Random() % 3) == 0)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN;
@@ -2163,7 +2125,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
&& gBattleMons[gBattlerAttacker].hp != 0
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& gBattleMons[gBattlerTarget].hp != 0
&& (Random() % 3) == 0
&& gBattleMons[gBattlerAttacker].ability != ABILITY_OBLIVIOUS
@@ -2534,7 +2496,7 @@ enum
ITEM_STATS_CHANGE, // 5
};
-u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
+u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
{
int i = 0;
u8 effect = ITEM_NO_EFFECT;
@@ -2543,11 +2505,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
u8 bankQuality, atkQuality, defQuality;
u16 atkItem, defItem;
- gLastUsedItem = gBattleMons[bank].item;
+ gLastUsedItem = gBattleMons[battlerId].item;
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
{
- bankHoldEffect = gEnigmaBerries[bank].holdEffect;
- bankQuality = gEnigmaBerries[bank].holdEffectParam;
+ bankHoldEffect = gEnigmaBerries[battlerId].holdEffect;
+ bankQuality = gEnigmaBerries[battlerId].holdEffectParam;
}
else
{
@@ -2586,39 +2548,39 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (bankHoldEffect)
{
case HOLD_EFFECT_DOUBLE_PRIZE:
- if (GetBattlerSide(bank) == B_SIDE_PLAYER)
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
gBattleStruct->moneyMultiplier = 2;
break;
case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- if (gBattleMons[bank].statStages[i] < 6)
+ if (gBattleMons[battlerId].statStages[i] < 6)
{
- gBattleMons[bank].statStages[i] = 6;
+ gBattleMons[battlerId].statStages[i] = 6;
effect = ITEM_STATS_CHANGE;
}
}
if (effect)
{
- gBattleScripting.battler = bank;
- gStringBattler = bank;
- gActiveBattler = gBattlerAttacker = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = gBattlerAttacker = battlerId;
BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
}
break;
case 1:
- if (gBattleMons[bank].hp)
+ if (gBattleMons[battlerId].hp)
{
switch (bankHoldEffect)
{
case HOLD_EFFECT_RESTORE_HP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
gBattleMoveDamage = bankQuality;
- if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + bankQuality > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = 4;
@@ -2631,10 +2593,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
u8 ppBonuses;
u16 move;
- if (GetBattlerSide(bank) == B_SIDE_PLAYER)
- mon = &gPlayerParty[gBattlerPartyIndexes[bank]];
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ mon = &gPlayerParty[gBattlerPartyIndexes[battlerId]];
else
- mon = &gEnemyParty[gBattlerPartyIndexes[bank]];
+ mon = &gEnemyParty[gBattlerPartyIndexes[battlerId]];
for (i = 0; i < 4; i++)
{
move = GetMonData(mon, MON_DATA_MOVE1 + i);
@@ -2663,47 +2625,47 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- if (gBattleMons[bank].statStages[i] < 6)
+ if (gBattleMons[battlerId].statStages[i] < 6)
{
- gBattleMons[bank].statStages[i] = 6;
+ gBattleMons[battlerId].statStages[i] = 6;
effect = ITEM_STATS_CHANGE;
}
}
if (effect)
{
- gBattleScripting.battler = bank;
- gStringBattler = bank;
- gActiveBattler = gBattlerAttacker = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = gBattlerAttacker = battlerId;
BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
case HOLD_EFFECT_LEFTOVERS:
- if (gBattleMons[bank].hp < gBattleMons[bank].maxHP && !moveTurn)
+ if (gBattleMons[battlerId].hp < gBattleMons[battlerId].maxHP && !moveTurn)
{
- gBattleMoveDamage = gBattleMons[bank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
BattleScriptExecute(BattleScript_ItemHealHP_End2);
effect = ITEM_HP_CHANGE;
- RecordItemEffectBattle(bank, bankHoldEffect);
+ RecordItemEffectBattle(battlerId, bankHoldEffect);
}
break;
// nice copy/paste there gamefreak, making a function for confuse berries was too much eh?
case HOLD_EFFECT_CONFUSE_SPICY:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SPICY) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2711,17 +2673,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_DRY:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_DRY) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2729,17 +2691,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_SWEET:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SWEET) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2747,17 +2709,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_BITTER:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_BITTER) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2765,17 +2727,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_SOUR:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SOUR) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2784,85 +2746,85 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
break;
// copy/paste again, smh
case HOLD_EFFECT_ATTACK_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_ATK);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_ATK, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_ATK, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_ATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_DEFENSE_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_DEF] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_DEF);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_DEF);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_DEF, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_DEF, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_DEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_SPEED_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPEED] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPEED);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPEED);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_SPEED, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_SPEED, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_SPEED;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_SP_ATTACK_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPATK] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPATK);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_SPATK, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_SPATK, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_SPATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_SP_DEFENSE_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPDEF] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPDEF);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPDEF);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_SPDEF, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_SPDEF, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_SPDEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_CRITICAL_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY))
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY))
{
- gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY;
+ gBattleMons[battlerId].status2 |= STATUS2_FOCUS_ENERGY;
BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2);
effect = ITEM_EFFECT_OTHER;
}
break;
case HOLD_EFFECT_RANDOM_STAT_UP:
- if (!moveTurn && gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality)
+ if (!moveTurn && gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality)
{
for (i = 0; i < 5; i++)
{
- if (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] < 0xC)
+ if (gBattleMons[battlerId].statStages[STAT_ATK + i] < 0xC)
break;
}
if (i != 5)
@@ -2870,7 +2832,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
do
{
i = Random() % 5;
- } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC);
+ } while (gBattleMons[battlerId].statStages[STAT_ATK + i] == 0xC);
PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1);
@@ -2883,7 +2845,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleTextBuff2[6] = STRINGID_STATROSE >> 8;
gBattleTextBuff2[7] = EOS;
- gEffectBank = bank;
+ gEffectBattler = battlerId;
SET_STATCHANGER(i + 1, 2, FALSE);
gBattleScripting.animArg1 = 0x21 + i + 6;
gBattleScripting.animArg2 = 0;
@@ -2893,85 +2855,85 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CURE_PAR:
- if (gBattleMons[bank].status1 & STATUS1_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
- gBattleMons[bank].status1 &= ~(STATUS1_PARALYSIS);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS);
BattleScriptExecute(BattleScript_BerryCurePrlzEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_PSN:
- if (gBattleMons[bank].status1 & STATUS1_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
- gBattleMons[bank].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER);
BattleScriptExecute(BattleScript_BerryCurePsnEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_BRN:
- if (gBattleMons[bank].status1 & STATUS1_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
- gBattleMons[bank].status1 &= ~(STATUS1_BURN);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_BURN);
BattleScriptExecute(BattleScript_BerryCureBrnEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_FRZ:
- if (gBattleMons[bank].status1 & STATUS1_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
- gBattleMons[bank].status1 &= ~(STATUS1_FREEZE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
BattleScriptExecute(BattleScript_BerryCureFrzEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_SLP:
- if (gBattleMons[bank].status1 & STATUS1_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status1 &= ~(STATUS1_SLEEP);
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptExecute(BattleScript_BerryCureSlpEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_CONFUSION:
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptExecute(BattleScript_BerryCureConfusionEnd2);
effect = ITEM_EFFECT_OTHER;
}
break;
case HOLD_EFFECT_CURE_STATUS:
- if (gBattleMons[bank].status1 & STATUS1_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
i = 0;
- if (gBattleMons[bank].status1 & STATUS1_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS1_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS1_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS1_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS1_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
i++;
}
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
i++;
@@ -2980,16 +2942,16 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- gBattleMons[bank].status1 = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status1 = 0;
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_ATTRACT:
- if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -2999,18 +2961,18 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
if (effect)
{
- gBattleScripting.battler = bank;
- gStringBattler = bank;
- gActiveBattler = gBattlerAttacker = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = gBattlerAttacker = battlerId;
switch (effect)
{
case ITEM_STATUS_CHANGE:
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battlerId].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
case ITEM_PP_CHANGE:
- if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i]))
- gBattleMons[bank].pp[i] = changedPP;
+ if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[battlerId].unk18_b & gBitTable[i]))
+ gBattleMons[battlerId].pp[i] = changedPP;
break;
}
}
@@ -3019,13 +2981,13 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case 2:
break;
case 3:
- for (bank = 0; bank < gBattlersCount; bank++)
+ for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- gLastUsedItem = gBattleMons[bank].item;
- if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
+ gLastUsedItem = gBattleMons[battlerId].item;
+ if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY)
{
- bankHoldEffect = gEnigmaBerries[bank].holdEffect;
- bankQuality = gEnigmaBerries[bank].holdEffectParam;
+ bankHoldEffect = gEnigmaBerries[battlerId].holdEffect;
+ bankQuality = gEnigmaBerries[battlerId].holdEffectParam;
}
else
{
@@ -3035,64 +2997,64 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (bankHoldEffect)
{
case HOLD_EFFECT_CURE_PAR:
- if (gBattleMons[bank].status1 & STATUS1_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
- gBattleMons[bank].status1 &= ~(STATUS1_PARALYSIS);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureParRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_PSN:
- if (gBattleMons[bank].status1 & STATUS1_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
- gBattleMons[bank].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_BRN:
- if (gBattleMons[bank].status1 & STATUS1_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
- gBattleMons[bank].status1 &= ~(STATUS1_BURN);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_BURN);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_FRZ:
- if (gBattleMons[bank].status1 & STATUS1_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
- gBattleMons[bank].status1 &= ~(STATUS1_FREEZE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_SLP:
- if (gBattleMons[bank].status1 & STATUS1_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status1 &= ~(STATUS1_SLEEP);
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_CONFUSION:
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet;
effect = ITEM_EFFECT_OTHER;
}
break;
case HOLD_EFFECT_CURE_ATTRACT:
- if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -3101,35 +3063,35 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CURE_STATUS:
- if (gBattleMons[bank].status1 & STATUS1_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- if (gBattleMons[bank].status1 & STATUS1_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
}
- if (gBattleMons[bank].status1 & STATUS1_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
}
- if (gBattleMons[bank].status1 & STATUS1_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
}
- if (gBattleMons[bank].status1 & STATUS1_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
}
- if (gBattleMons[bank].status1 & STATUS1_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
}
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
}
- gBattleMons[bank].status1 = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status1 = 0;
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet;
@@ -3139,16 +3101,16 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- if (gBattleMons[bank].statStages[i] < 6)
+ if (gBattleMons[battlerId].statStages[i] < 6)
{
- gBattleMons[bank].statStages[i] = 6;
+ gBattleMons[battlerId].statStages[i] = 6;
effect = ITEM_STATS_CHANGE;
}
}
if (effect)
{
- gBattleScripting.battler = bank;
- gStringBattler = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_WhiteHerbRet;
return effect; // unnecessary return
@@ -3157,9 +3119,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
if (effect)
{
- gBattleScripting.battler = bank;
- gStringBattler = bank;
- gActiveBattler = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = battlerId;
BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
@@ -3173,7 +3135,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
case HOLD_EFFECT_FLINCH:
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
- && (gSpecialStatuses[gBattlerTarget].moveturnLostHP_physical || gSpecialStatuses[gBattlerTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (Random() % 100) < atkQuality
&& gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
&& gBattleMons[gBattlerTarget].hp)
@@ -3186,19 +3148,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
break;
case HOLD_EFFECT_SHELL_BELL:
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
- && gSpecialStatuses[gBattlerTarget].moveturnLostHP != 0
- && gSpecialStatuses[gBattlerTarget].moveturnLostHP != 0xFFFF
+ && gSpecialStatuses[gBattlerTarget].dmg != 0
+ && gSpecialStatuses[gBattlerTarget].dmg != 0xFFFF
&& gBattlerAttacker != gBattlerTarget
&& gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP
&& gBattleMons[gBattlerAttacker].hp != 0)
{
gLastUsedItem = atkItem;
- gStringBattler = gBattlerAttacker;
+ gPotentialItemEffectBattler = gBattlerAttacker;
gBattleScripting.battler = gBattlerAttacker;
- gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].moveturnLostHP / atkQuality) * -1;
+ gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].dmg / atkQuality) * -1;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = -1;
- gSpecialStatuses[gBattlerTarget].moveturnLostHP = 0;
+ gSpecialStatuses[gBattlerTarget].dmg = 0;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret;
effect++;
@@ -3212,11 +3174,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
return effect;
}
-void ClearFuryCutterDestinyBondGrudge(u8 bank)
+void ClearFuryCutterDestinyBondGrudge(u8 battlerId)
{
- gDisableStructs[bank].furyCutterCounter = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_DESTINY_BOND);
- gStatuses3[bank] &= ~(STATUS3_GRUDGE);
+ gDisableStructs[battlerId].furyCutterCounter = 0;
+ gBattleMons[battlerId].status2 &= ~(STATUS2_DESTINY_BOND);
+ gStatuses3[battlerId] &= ~(STATUS3_GRUDGE);
}
void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands
@@ -3304,14 +3266,14 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
return targetBank;
}
-static bool32 HasObedientBitSet(u8 bank)
+static bool32 HasObedientBitSet(u8 battlerId)
{
- if (GetBattlerSide(bank) == B_SIDE_OPPONENT)
+ if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
return TRUE;
- if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS
- && GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)
+ if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS
+ && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)
return TRUE;
- return GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_OBEDIENCE, NULL);
+ return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_OBEDIENCE, NULL);
}
u8 IsMonDisobedient(void)
@@ -3379,7 +3341,7 @@ u8 IsMonDisobedient(void)
{
do
{
- gCurrMovePos = gUnknown_020241E9 = Random() & 3;
+ gCurrMovePos = gChosenMovePos = Random() & 3;
} while (gBitTable[gCurrMovePos] & calc);
gRandomMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
diff --git a/src/battle_util2.c b/src/battle_util2.c
index ba42d4ea9..c1bbabc85 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -8,12 +8,7 @@
#include "random.h"
#include "battle_scripts.h"
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u8 gUnknown_0203CF00[];
-extern const u8 *gBattlescriptCurrInstr;
-extern u8 gBattleCommunication[];
-extern u8 gActiveBattler;
extern void sub_81D55D0(void);
extern void sub_81D5694(void);
@@ -79,7 +74,7 @@ void FreeBattleResources(void)
}
}
-void AdjustFriendshipOnBattleFaint(u8 bank)
+void AdjustFriendshipOnBattleFaint(u8 battlerId)
{
u8 opposingBank;
@@ -98,22 +93,22 @@ void AdjustFriendshipOnBattleFaint(u8 bank)
opposingBank = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
}
- if (gBattleMons[opposingBank].level > gBattleMons[bank].level)
+ if (gBattleMons[opposingBank].level > gBattleMons[battlerId].level)
{
- if (gBattleMons[opposingBank].level - gBattleMons[bank].level > 29)
- AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[bank]], 8);
+ if (gBattleMons[opposingBank].level - gBattleMons[battlerId].level > 29)
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 8);
else
- AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[bank]], 6);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 6);
}
else
{
- AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[bank]], 6);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 6);
}
}
-void sub_80571DC(u8 bank, u8 arg1)
+void sub_80571DC(u8 battlerId, u8 arg1)
{
- if (GetBattlerSide(bank) != B_SIDE_OPPONENT)
+ if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
{
s32 i;
@@ -122,14 +117,14 @@ void sub_80571DC(u8 bank, u8 arg1)
for (i = 0; i < 3; i++)
gUnknown_0203CF00[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60));
- sub_81B8FB0(pokemon_order_func(gBattlerPartyIndexes[bank]), pokemon_order_func(arg1));
+ sub_81B8FB0(pokemon_order_func(gBattlerPartyIndexes[battlerId]), pokemon_order_func(arg1));
for (i = 0; i < 3; i++)
*(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
}
}
-u32 sub_805725C(u8 bank)
+u32 sub_805725C(u8 battlerId)
{
u32 effect = 0;
@@ -138,12 +133,12 @@ u32 sub_805725C(u8 bank)
switch (gBattleCommunication[MULTIUSE_STATE])
{
case 0:
- if (gBattleMons[bank].status1 & STATUS1_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- if (UproarWakeUpCheck(bank))
+ if (UproarWakeUpCheck(battlerId))
{
- gBattleMons[bank].status1 &= ~(STATUS1_SLEEP);
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -153,24 +148,24 @@ u32 sub_805725C(u8 bank)
{
u32 toSub;
- if (gBattleMons[bank].ability == ABILITY_EARLY_BIRD)
+ if (gBattleMons[battlerId].ability == ABILITY_EARLY_BIRD)
toSub = 2;
else
toSub = 1;
- if ((gBattleMons[bank].status1 & STATUS1_SLEEP) < toSub)
- gBattleMons[bank].status1 &= ~(STATUS1_SLEEP);
+ if ((gBattleMons[battlerId].status1 & STATUS1_SLEEP) < toSub)
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
else
- gBattleMons[bank].status1 -= toSub;
+ gBattleMons[battlerId].status1 -= toSub;
- if (gBattleMons[bank].status1 & STATUS1_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep;
effect = 2;
}
else
{
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -181,7 +176,7 @@ u32 sub_805725C(u8 bank)
gBattleCommunication[MULTIUSE_STATE]++;
break;
case 1:
- if (gBattleMons[bank].status1 & STATUS1_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
if (Random() % 5 != 0)
{
@@ -189,7 +184,7 @@ u32 sub_805725C(u8 bank)
}
else
{
- gBattleMons[bank].status1 &= ~(STATUS1_FREEZE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -206,7 +201,7 @@ u32 sub_805725C(u8 bank)
if (effect == 2)
{
- gActiveBattler = bank;
+ gActiveBattler = battlerId;
BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 6560dffb5..6022e97e2 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -21,7 +21,7 @@
#include "constants/songs.h"
#include "overworld.h"
#include "battle_message.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "gpu_regs.h"
#include "bg.h"
#include "link.h"
@@ -48,12 +48,10 @@ extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
-extern u8 gBattleTerrain;
extern bool8 gAffineAnimsDisabled;
extern u16 gMoveToLearn;
extern const u8 gSpeciesNames[][11];
-extern u8 gBattleCommunication[];
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
#define sEvoGraphicsTaskID gBattleCommunication[2]
diff --git a/src/item_use.c b/src/item_use.c
index bf1c42c32..bcd453660 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "item_use.h"
#include "battle.h"
#include "berry.h"
#include "bike.h"
@@ -28,7 +29,6 @@
#include "task.h"
#include "text.h"
-extern u16 gSpecialVar_ItemId;
extern void(**gUnknown_0203CE54)(void);
extern void(**gUnknown_0203CF2C)(void);
extern void(*gUnknown_0203A0F4)(u8 taskId);
@@ -87,15 +87,12 @@ extern void sub_81ABA88(u8);
extern void sub_80B7CC8(void);
extern void flagmods_08054D70(void);
extern u8* sub_806CF78(u16);
-extern bool8 ExecuteTableBasedItemEffect(struct Pokemon*, u16, u8, u8);
-extern u8 gBankInMenu;
-extern u16 gBattlerPartyIndexes[];
extern void sub_81B89F0(void);
extern u8 GetItemEffectType(u16);
extern struct MapConnection *sub_8088A8C(s16, s16);
void MapPostLoadHook_UseItem(void);
-extern void sub_80AF6D4(void);
+void sub_80AF6D4(void);
void Task_CallItemUseOnFieldCallback(u8 taskId);
void bag_menu_inits_lists_menu(u8 taskId);
void ItemUseOnFieldCB_Bike(u8 taskId);
@@ -984,7 +981,7 @@ void sub_80FE440(u8 taskId)
void ItemUseInBattle_StatIncrease(u8 taskId)
{
- u16 partyId = gBattlerPartyIndexes[gBankInMenu];
+ u16 partyId = gBattlerPartyIndexes[gBattlerInMenuId];
if (ExecuteTableBasedItemEffect(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE)
{
diff --git a/src/pokeball.c b/src/pokeball.c
index ada0258db..795a33827 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -15,12 +15,6 @@
#include "util.h"
#include "graphics.h"
-extern bool8 gDoingBattleAnim;
-extern u8 gActiveBattler;
-extern u8 gBattlerTarget;
-extern u16 gBattlerPartyIndexes[];
-extern u8 gBattlerSpriteIds[];
-extern u8 gHealthboxSpriteIds[];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
diff --git a/src/pokemon.c b/src/pokemon.c
index dfc2f2830..8ffa3468b 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -33,6 +33,13 @@
#include "strings.h"
#include "pokenav.h"
#include "pokemon_storage_system.h"
+#include "recorded_battle.h"
+
+struct SpeciesItem
+{
+ u16 species;
+ u16 item;
+};
// Extracts the upper 16 bits of a 32-bit number
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
@@ -40,78 +47,32 @@
// Extracts the lower 16 bits of a 32-bit number
#define LOHALF(n) ((n) & 0xFFFF)
-
-struct PokeItem
-{
- u16 species;
- u16 item;
-};
-extern const struct PokeItem gAlteringCaveWildMonHeldItems[9];
-
-extern u8 gAbsentBattlerFlags;
-extern u8 gActiveBattler;
-extern u8 gBattlersCount;
-extern u8 gBattlerAttacker;
-extern u16 gBattlerPartyIndexes[];
-extern u8 gBattlerTarget;
-extern u8 gBankInMenu;
-extern u8 gLastUsedAbility;
-extern u32 gBattleTypeFlags;
-extern struct BattlePokemon gBattleMons[4];
-extern u32 gBattleTypeFlags;
-extern struct BattlePokemon gBattleMons[4];
-extern u16 gCurrentMove;
-extern u8 gCritMultiplier;
-extern u16 gBattleWeather;
-extern struct BattleEnigmaBerry gEnigmaBerries[];
-extern u16 gBattleMovePower;
-extern u32 gBattleTypeFlags;
-extern s32 gBattleMoveDamage;
-extern u8 gUnknown_0203C7B4;
-extern u16 gMoveToLearn;
-extern u8 gStringBattler;
-extern struct BattlePokemon gBattleMons[4];
-extern struct BattleEnigmaBerry gEnigmaBerries[4];
-extern u8 gActiveBattler;
-extern u8 gBankInMenu;
-extern u8 gBattlerTarget;
-extern u8 gBattlerAttacker;
-extern u8 gStringBattler;
-extern u32 gBattleTypeFlags;
-extern u8 gBattleMonForms[4];
-extern u16 gBattlerPartyIndexes[4];
-extern u8 gLastUsedAbility;
-extern u32 gHitMarker;
-
-extern const struct SpriteTemplate gUnknown_08329D98[];
-extern const struct SpriteTemplate gUnknown_08329DF8[];
+extern const struct OamData gUnknown_0831ACB0;
+extern const struct OamData gUnknown_0831ACA8;
+extern const struct SpriteFrameImage gUnknown_082FF3A8[];
+extern const struct SpriteFrameImage gUnknown_082FF3C8[];
+extern const struct SpriteFrameImage gUnknown_082FF3E8[];
+extern const struct SpriteFrameImage gUnknown_082FF408[];
+extern const struct SpriteFrameImage gUnknown_082FF428[];
+extern const struct SpriteFrameImage gUnknown_082FF448[];
+extern const struct SpriteFrameImage gUnknown_082FF468[];
+extern const struct SpriteFrameImage gUnknown_082FF490[];
+extern const struct SpriteFrameImage gUnknown_082FF4B8[];
+extern const struct SpriteFrameImage gUnknown_082FF4D8[];
+extern const struct SpriteFrameImage gUnknown_082FF4F8[];
+extern const struct SpriteFrameImage gUnknown_082FF518[];
+extern const union AffineAnimCmd *const gUnknown_082FF618[];
+extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const union AnimCmd *gUnknown_082FF70C[];
extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[];
extern const union AnimCmd *const *const gUnknown_08305D0C[];
extern const union AnimCmd *const *const gUnknown_0830536C[];
-extern const u8 gSecretBaseFacilityClasses[][5];
extern const struct BattleMove gBattleMoves[];
extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
-extern const u8 gUnknown_08329D22[];
-extern const u8 gUnknown_08329D26[];
-extern const u8 gHoldEffectToType[][2];
-extern const u8 gStatStageRatios[][2];
extern const struct UnknownPokemonStruct3 gUnknown_08610970[];
-extern const u16 gUnknown_08329D48[];
-extern const u16 gUnknown_08329D54[];
-extern const u8 gUnknown_08329D22[];
-extern const u8 gUnknown_08329D26[];
-extern const u8 gUnknown_08329D2A[];
-extern const u8 gUnknown_08329EC2[];
-extern const u8 gUnknown_08329EC8[];
-extern const s8 gUnknown_08329ECE[][3];
extern const struct CompressedSpritePalette gMonPaletteTable[];
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
-extern const u16 gHMMoves[];
-extern const u8 gMonAnimationDelayTable[];
-extern const u8 gMonFrontAnimIdsTable[];
extern const u8 gTrainerClassNames[][13];
-extern const struct SpriteTemplate gUnknown_08329F28;
extern u8 pokemon_order_func(u8);
extern u16 get_unknown_box_id(void);
@@ -140,7 +101,7 @@ static void sub_806E6CC(u8 taskId);
static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
// EWRAM vars
-EWRAM_DATA u8 sLearningMoveTableID = 0;
+EWRAM_DATA static u8 sLearningMoveTableID = 0;
EWRAM_DATA u8 gPlayerPartyCount = 0;
EWRAM_DATA u8 gEnemyPartyCount = 0;
EWRAM_DATA struct Pokemon gPlayerParty[PARTY_SIZE] = {0};
@@ -202,6 +163,1095 @@ const s8 gNatureStatTable[][5] =
#include "data/pokemon/evolution.h"
#include "data/pokemon/level_up_learnset_pointers.h"
+static const u8 sMonFrontAnimIdsTable[] =
+{
+ 0x06, // SPECIES_BULBASAUR
+ 0x17, // SPECIES_IVYSAUR
+ 0x2f, // SPECIES_VENUSAUR
+ 0x52, // SPECIES_CHARMANDER
+ 0x25, // SPECIES_CHARMELEON
+ 0x10, // SPECIES_CHARIZARD
+ 0x0b, // SPECIES_SQUIRTLE
+ 0x13, // SPECIES_WARTORTLE
+ 0x19, // SPECIES_BLASTOISE
+ 0x0b, // SPECIES_CATERPIE
+ 0x0b, // SPECIES_METAPOD
+ 0x1d, // SPECIES_BUTTERFREE
+ 0x46, // SPECIES_WEEDLE
+ 0x20, // SPECIES_KAKUNA
+ 0x02, // SPECIES_BEEDRILL
+ 0x47, // SPECIES_PIDGEY
+ 0x17, // SPECIES_PIDGEOTTO
+ 0x29, // SPECIES_PIDGEOT
+ 0x43, // SPECIES_RATTATA
+ 0x2b, // SPECIES_RATICATE
+ 0x18, // SPECIES_SPEAROW
+ 0x2b, // SPECIES_FEAROW
+ 0x16, // SPECIES_EKANS
+ 0x17, // SPECIES_ARBOK
+ 0x2c, // SPECIES_PIKACHU
+ 0x17, // SPECIES_RAICHU
+ 0x2d, // SPECIES_SANDSHREW
+ 0x17, // SPECIES_SANDSLASH
+ 0x00, // SPECIES_NIDORAN_F
+ 0x17, // SPECIES_NIDORINA
+ 0x0f, // SPECIES_NIDOQUEEN
+ 0x09, // SPECIES_NIDORAN_M
+ 0x13, // SPECIES_NIDORINO
+ 0x0f, // SPECIES_NIDOKING
+ 0x00, // SPECIES_CLEFAIRY
+ 0x4a, // SPECIES_CLEFABLE
+ 0x17, // SPECIES_VULPIX
+ 0x10, // SPECIES_NINETALES
+ 0x48, // SPECIES_JIGGLYPUFF
+ 0x31, // SPECIES_WIGGLYTUFF
+ 0x00, // SPECIES_ZUBAT
+ 0x1d, // SPECIES_GOLBAT
+ 0x00, // SPECIES_ODDISH
+ 0x45, // SPECIES_GLOOM
+ 0x49, // SPECIES_VILEPLUME
+ 0x46, // SPECIES_PARAS
+ 0x0f, // SPECIES_PARASECT
+ 0x06, // SPECIES_VENONAT
+ 0x4b, // SPECIES_VENOMOTH
+ 0x10, // SPECIES_DIGLETT
+ 0x4c, // SPECIES_DUGTRIO
+ 0x52, // SPECIES_MEOWTH
+ 0x17, // SPECIES_PERSIAN
+ 0x06, // SPECIES_PSYDUCK
+ 0x4c, // SPECIES_GOLDUCK
+ 0x32, // SPECIES_MANKEY
+ 0x48, // SPECIES_PRIMEAPE
+ 0x25, // SPECIES_GROWLITHE
+ 0x02, // SPECIES_ARCANINE
+ 0x00, // SPECIES_POLIWAG
+ 0x32, // SPECIES_POLIWHIRL
+ 0x19, // SPECIES_POLIWRATH
+ 0x31, // SPECIES_ABRA
+ 0x09, // SPECIES_KADABRA
+ 0x17, // SPECIES_ALAKAZAM
+ 0x00, // SPECIES_MACHOP
+ 0x10, // SPECIES_MACHOKE
+ 0x31, // SPECIES_MACHAMP
+ 0x17, // SPECIES_BELLSPROUT
+ 0x0d, // SPECIES_WEEPINBELL
+ 0x32, // SPECIES_VICTREEBEL
+ 0x00, // SPECIES_TENTACOOL
+ 0x00, // SPECIES_TENTACRUEL
+ 0x48, // SPECIES_GEODUDE
+ 0x48, // SPECIES_GRAVELER
+ 0x2f, // SPECIES_GOLEM
+ 0x20, // SPECIES_PONYTA
+ 0x11, // SPECIES_RAPIDASH
+ 0x45, // SPECIES_SLOWPOKE
+ 0x0b, // SPECIES_SLOWBRO
+ 0x54, // SPECIES_MAGNEMITE
+ 0x2c, // SPECIES_MAGNETON
+ 0x48, // SPECIES_FARFETCHD
+ 0x4c, // SPECIES_DODUO
+ 0x41, // SPECIES_DODRIO
+ 0x0b, // SPECIES_SEEL
+ 0x45, // SPECIES_DEWGONG
+ 0x46, // SPECIES_GRIMER
+ 0x30, // SPECIES_MUK
+ 0x12, // SPECIES_SHELLDER
+ 0x1d, // SPECIES_CLOYSTER
+ 0x15, // SPECIES_GASTLY
+ 0x35, // SPECIES_HAUNTER
+ 0x3a, // SPECIES_GENGAR
+ 0x43, // SPECIES_ONIX
+ 0x4f, // SPECIES_DROWZEE
+ 0x09, // SPECIES_HYPNO
+ 0x03, // SPECIES_KRABBY
+ 0x4b, // SPECIES_KINGLER
+ 0x00, // SPECIES_VOLTORB
+ 0x00, // SPECIES_ELECTRODE
+ 0x46, // SPECIES_EXEGGCUTE
+ 0x32, // SPECIES_EXEGGUTOR
+ 0x48, // SPECIES_CUBONE
+ 0x05, // SPECIES_MAROWAK
+ 0x16, // SPECIES_HITMONLEE
+ 0x09, // SPECIES_HITMONCHAN
+ 0x45, // SPECIES_LICKITUNG
+ 0x13, // SPECIES_KOFFING
+ 0x04, // SPECIES_WEEZING
+ 0x10, // SPECIES_RHYHORN
+ 0x13, // SPECIES_RHYDON
+ 0x45, // SPECIES_CHANSEY
+ 0x48, // SPECIES_TANGELA
+ 0x17, // SPECIES_KANGASKHAN
+ 0x12, // SPECIES_HORSEA
+ 0x04, // SPECIES_SEADRA
+ 0x0d, // SPECIES_GOLDEEN
+ 0x1c, // SPECIES_SEAKING
+ 0x4e, // SPECIES_STARYU
+ 0x12, // SPECIES_STARMIE
+ 0x46, // SPECIES_MR_MIME
+ 0x02, // SPECIES_SCYTHER
+ 0x17, // SPECIES_JYNX
+ 0x2c, // SPECIES_ELECTABUZZ
+ 0x0f, // SPECIES_MAGMAR
+ 0x09, // SPECIES_PINSIR
+ 0x19, // SPECIES_TAUROS
+ 0x05, // SPECIES_MAGIKARP
+ 0x48, // SPECIES_GYARADOS
+ 0x17, // SPECIES_LAPRAS
+ 0x01, // SPECIES_DITTO
+ 0x17, // SPECIES_EEVEE
+ 0x17, // SPECIES_VAPOREON
+ 0x00, // SPECIES_JOLTEON
+ 0x17, // SPECIES_FLAREON
+ 0x52, // SPECIES_PORYGON
+ 0x51, // SPECIES_OMANYTE
+ 0x09, // SPECIES_OMASTAR
+ 0x1d, // SPECIES_KABUTO
+ 0x0f, // SPECIES_KABUTOPS
+ 0x47, // SPECIES_AERODACTYL
+ 0x0b, // SPECIES_SNORLAX
+ 0x09, // SPECIES_ARTICUNO
+ 0x2c, // SPECIES_ZAPDOS
+ 0x45, // SPECIES_MOLTRES
+ 0x00, // SPECIES_DRATINI
+ 0x10, // SPECIES_DRAGONAIR
+ 0x47, // SPECIES_DRAGONITE
+ 0x09, // SPECIES_MEWTWO
+ 0x0d, // SPECIES_MEW
+ 0x00, // SPECIES_CHIKORITA
+ 0x00, // SPECIES_BAYLEEF
+ 0x17, // SPECIES_MEGANIUM
+ 0x52, // SPECIES_CYNDAQUIL
+ 0x17, // SPECIES_QUILAVA
+ 0x10, // SPECIES_TYPHLOSION
+ 0x31, // SPECIES_TOTODILE
+ 0x0f, // SPECIES_CROCONAW
+ 0x0f, // SPECIES_FERALIGATR
+ 0x00, // SPECIES_SENTRET
+ 0x32, // SPECIES_FURRET
+ 0x47, // SPECIES_HOOTHOOT
+ 0x17, // SPECIES_NOCTOWL
+ 0x52, // SPECIES_LEDYBA
+ 0x47, // SPECIES_LEDIAN
+ 0x4f, // SPECIES_SPINARAK
+ 0x0f, // SPECIES_ARIADOS
+ 0x00, // SPECIES_CROBAT
+ 0x45, // SPECIES_CHINCHOU
+ 0x51, // SPECIES_LANTURN
+ 0x1e, // SPECIES_PICHU
+ 0x52, // SPECIES_CLEFFA
+ 0x0c, // SPECIES_IGGLYBUFF
+ 0x0b, // SPECIES_TOGEPI
+ 0x00, // SPECIES_TOGETIC
+ 0x31, // SPECIES_NATU
+ 0x09, // SPECIES_XATU
+ 0x00, // SPECIES_MAREEP
+ 0x1e, // SPECIES_FLAAFFY
+ 0x2c, // SPECIES_AMPHAROS
+ 0x0b, // SPECIES_BELLOSSOM
+ 0x00, // SPECIES_MARILL
+ 0x4a, // SPECIES_AZUMARILL
+ 0x46, // SPECIES_SUDOWOODO
+ 0x32, // SPECIES_POLITOED
+ 0x1c, // SPECIES_HOPPIP
+ 0x18, // SPECIES_SKIPLOOM
+ 0x51, // SPECIES_JUMPLUFF
+ 0x32, // SPECIES_AIPOM
+ 0x52, // SPECIES_SUNKERN
+ 0x00, // SPECIES_SUNFLORA
+ 0x2b, // SPECIES_YANMA
+ 0x00, // SPECIES_WOOPER
+ 0x16, // SPECIES_QUAGSIRE
+ 0x09, // SPECIES_ESPEON
+ 0x10, // SPECIES_UMBREON
+ 0x00, // SPECIES_MURKROW
+ 0x13, // SPECIES_SLOWKING
+ 0x1c, // SPECIES_MISDREAVUS
+ 0x0a, // SPECIES_UNOWN
+ 0x30, // SPECIES_WOBBUFFET
+ 0x1e, // SPECIES_GIRAFARIG
+ 0x0b, // SPECIES_PINECO
+ 0x10, // SPECIES_FORRETRESS
+ 0x00, // SPECIES_DUNSPARCE
+ 0x13, // SPECIES_GLIGAR
+ 0x0f, // SPECIES_STEELIX
+ 0x17, // SPECIES_SNUBBULL
+ 0x10, // SPECIES_GRANBULL
+ 0x3a, // SPECIES_QWILFISH
+ 0x02, // SPECIES_SCIZOR
+ 0x0b, // SPECIES_SHUCKLE
+ 0x41, // SPECIES_HERACROSS
+ 0x16, // SPECIES_SNEASEL
+ 0x17, // SPECIES_TEDDIURSA
+ 0x10, // SPECIES_URSARING
+ 0x17, // SPECIES_SLUGMA
+ 0x17, // SPECIES_MAGCARGO
+ 0x00, // SPECIES_SWINUB
+ 0x0f, // SPECIES_PILOSWINE
+ 0x03, // SPECIES_CORSOLA
+ 0x52, // SPECIES_REMORAID
+ 0x17, // SPECIES_OCTILLERY
+ 0x52, // SPECIES_DELIBIRD
+ 0x0d, // SPECIES_MANTINE
+ 0x17, // SPECIES_SKARMORY
+ 0x17, // SPECIES_HOUNDOUR
+ 0x10, // SPECIES_HOUNDOOM
+ 0x42, // SPECIES_KINGDRA
+ 0x32, // SPECIES_PHANPY
+ 0x19, // SPECIES_DONPHAN
+ 0x00, // SPECIES_PORYGON2
+ 0x00, // SPECIES_STANTLER
+ 0x31, // SPECIES_SMEARGLE
+ 0x16, // SPECIES_TYROGUE
+ 0x02, // SPECIES_HITMONTOP
+ 0x09, // SPECIES_SMOOCHUM
+ 0x2c, // SPECIES_ELEKID
+ 0x00, // SPECIES_MAGBY
+ 0x45, // SPECIES_MILTANK
+ 0x00, // SPECIES_BLISSEY
+ 0x2c, // SPECIES_RAIKOU
+ 0x09, // SPECIES_ENTEI
+ 0x10, // SPECIES_SUICUNE
+ 0x52, // SPECIES_LARVITAR
+ 0x10, // SPECIES_PUPITAR
+ 0x0f, // SPECIES_TYRANITAR
+ 0x3a, // SPECIES_LUGIA
+ 0x09, // SPECIES_HO_OH
+ 0x18, // SPECIES_CELEBI
+ 0x00, // 252
+ 0x00, // 253
+ 0x00, // 254
+ 0x00, // 255
+ 0x00, // 256
+ 0x00, // 257
+ 0x00, // 258
+ 0x00, // 259
+ 0x00, // 260
+ 0x00, // 261
+ 0x00, // 262
+ 0x00, // 263
+ 0x00, // 264
+ 0x00, // 265
+ 0x00, // 266
+ 0x00, // 267
+ 0x00, // 268
+ 0x00, // 269
+ 0x00, // 270
+ 0x00, // 271
+ 0x00, // 272
+ 0x00, // 273
+ 0x00, // 274
+ 0x00, // 275
+ 0x00, // 276
+ 0x00, // SPECIES_TREECKO
+ 0x17, // SPECIES_GROVYLE
+ 0x10, // SPECIES_SCEPTILE
+ 0x16, // SPECIES_TORCHIC
+ 0x06, // SPECIES_COMBUSKEN
+ 0x0f, // SPECIES_BLAZIKEN
+ 0x01, // SPECIES_MUDKIP
+ 0x04, // SPECIES_MARSHTOMP
+ 0x1e, // SPECIES_SWAMPERT
+ 0x10, // SPECIES_POOCHYENA
+ 0x10, // SPECIES_MIGHTYENA
+ 0x03, // SPECIES_ZIGZAGOON
+ 0x09, // SPECIES_LINOONE
+ 0x00, // SPECIES_WURMPLE
+ 0x00, // SPECIES_SILCOON
+ 0x04, // SPECIES_BEAUTIFLY
+ 0x04, // SPECIES_CASCOON
+ 0x06, // SPECIES_DUSTOX
+ 0x00, // SPECIES_LOTAD
+ 0x00, // SPECIES_LOMBRE
+ 0x49, // SPECIES_LUDICOLO
+ 0x05, // SPECIES_SEEDOT
+ 0x00, // SPECIES_NUZLEAF
+ 0x02, // SPECIES_SHIFTRY
+ 0x00, // SPECIES_NINCADA
+ 0x46, // SPECIES_NINJASK
+ 0x1c, // SPECIES_SHEDINJA
+ 0x1e, // SPECIES_TAILLOW
+ 0x01, // SPECIES_SWELLOW
+ 0x00, // SPECIES_SHROOMISH
+ 0x00, // SPECIES_BRELOOM
+ 0x31, // SPECIES_SPINDA
+ 0x1b, // SPECIES_WINGULL
+ 0x1c, // SPECIES_PELIPPER
+ 0x00, // SPECIES_SURSKIT
+ 0x00, // SPECIES_MASQUERAIN
+ 0x01, // SPECIES_WAILMER
+ 0x1c, // SPECIES_WAILORD
+ 0x00, // SPECIES_SKITTY
+ 0x17, // SPECIES_DELCATTY
+ 0x35, // SPECIES_KECLEON
+ 0x1d, // SPECIES_BALTOY
+ 0x51, // SPECIES_CLAYDOL
+ 0x49, // SPECIES_NOSEPASS
+ 0x17, // SPECIES_TORKOAL
+ 0x15, // SPECIES_SABLEYE
+ 0x49, // SPECIES_BARBOACH
+ 0x49, // SPECIES_WHISCASH
+ 0x1d, // SPECIES_LUVDISC
+ 0x10, // SPECIES_CORPHISH
+ 0x09, // SPECIES_CRAWDAUNT
+ 0x49, // SPECIES_FEEBAS
+ 0x22, // SPECIES_MILOTIC
+ 0x49, // SPECIES_CARVANHA
+ 0x56, // SPECIES_SHARPEDO
+ 0x10, // SPECIES_TRAPINCH
+ 0x0f, // SPECIES_VIBRAVA
+ 0x4b, // SPECIES_FLYGON
+ 0x0b, // SPECIES_MAKUHITA
+ 0x34, // SPECIES_HARIYAMA
+ 0x00, // SPECIES_ELECTRIKE
+ 0x00, // SPECIES_MANECTRIC
+ 0x04, // SPECIES_NUMEL
+ 0x10, // SPECIES_CAMERUPT
+ 0x53, // SPECIES_SPHEAL
+ 0x17, // SPECIES_SEALEO
+ 0x0f, // SPECIES_WALREIN
+ 0x49, // SPECIES_CACNEA
+ 0x04, // SPECIES_CACTURNE
+ 0x45, // SPECIES_SNORUNT
+ 0x0a, // SPECIES_GLALIE
+ 0x0e, // SPECIES_LUNATONE
+ 0x08, // SPECIES_SOLROCK
+ 0x00, // SPECIES_AZURILL
+ 0x56, // SPECIES_SPOINK
+ 0x32, // SPECIES_GRUMPIG
+ 0x00, // SPECIES_PLUSLE
+ 0x01, // SPECIES_MINUN
+ 0x00, // SPECIES_MAWILE
+ 0x05, // SPECIES_MEDITITE
+ 0x45, // SPECIES_MEDICHAM
+ 0x04, // SPECIES_SWABLU
+ 0x16, // SPECIES_ALTARIA
+ 0x32, // SPECIES_WYNAUT
+ 0x0a, // SPECIES_DUSKULL
+ 0x02, // SPECIES_DUSCLOPS
+ 0x45, // SPECIES_ROSELIA
+ 0x45, // SPECIES_SLAKOTH
+ 0x31, // SPECIES_VIGOROTH
+ 0x45, // SPECIES_SLAKING
+ 0x00, // SPECIES_GULPIN
+ 0x45, // SPECIES_SWALOT
+ 0x10, // SPECIES_TROPIUS
+ 0x03, // SPECIES_WHISMUR
+ 0x49, // SPECIES_LOUDRED
+ 0x19, // SPECIES_EXPLOUD
+ 0x12, // SPECIES_CLAMPERL
+ 0x09, // SPECIES_HUNTAIL
+ 0x1c, // SPECIES_GOREBYSS
+ 0x11, // SPECIES_ABSOL
+ 0x1c, // SPECIES_SHUPPET
+ 0x0d, // SPECIES_BANETTE
+ 0x17, // SPECIES_SEVIPER
+ 0x09, // SPECIES_ZANGOOSE
+ 0x1a, // SPECIES_RELICANTH
+ 0x45, // SPECIES_ARON
+ 0x00, // SPECIES_LAIRON
+ 0x19, // SPECIES_AGGRON
+ 0x1d, // SPECIES_CASTFORM
+ 0x00, // SPECIES_VOLBEAT
+ 0x05, // SPECIES_ILLUMISE
+ 0x17, // SPECIES_LILEEP
+ 0x19, // SPECIES_CRADILY
+ 0x12, // SPECIES_ANORITH
+ 0x10, // SPECIES_ARMALDO
+ 0x45, // SPECIES_RALTS
+ 0x00, // SPECIES_KIRLIA
+ 0x00, // SPECIES_GARDEVOIR
+ 0x19, // SPECIES_BAGON
+ 0x04, // SPECIES_SHELGON
+ 0x0f, // SPECIES_SALAMENCE
+ 0x0f, // SPECIES_BELDUM
+ 0x04, // SPECIES_METANG
+ 0x10, // SPECIES_METAGROSS
+ 0x01, // SPECIES_REGIROCK
+ 0x44, // SPECIES_REGICE
+ 0x09, // SPECIES_REGISTEEL
+ 0x2d, // SPECIES_KYOGRE
+ 0x10, // SPECIES_GROUDON
+ 0x0f, // SPECIES_RAYQUAZA
+ 0x2d, // SPECIES_LATIAS
+ 0x10, // SPECIES_LATIOS
+ 0x0d, // SPECIES_JIRACHI
+ 0x1b, // SPECIES_DEOXYS
+ 0x1d, // SPECIES_CHIMECHO
+};
+
+static const u8 sMonAnimationDelayTable[] =
+{
+ 0x00, // SPECIES_BULBASAUR
+ 0x00, // SPECIES_IVYSAUR
+ 0x00, // SPECIES_VENUSAUR
+ 0x00, // SPECIES_CHARMANDER
+ 0x00, // SPECIES_CHARMELEON
+ 0x00, // SPECIES_CHARIZARD
+ 0x00, // SPECIES_SQUIRTLE
+ 0x00, // SPECIES_WARTORTLE
+ 0x32, // SPECIES_BLASTOISE
+ 0x00, // SPECIES_CATERPIE
+ 0x00, // SPECIES_METAPOD
+ 0x00, // SPECIES_BUTTERFREE
+ 0x0a, // SPECIES_WEEDLE
+ 0x14, // SPECIES_KAKUNA
+ 0x23, // SPECIES_BEEDRILL
+ 0x00, // SPECIES_PIDGEY
+ 0x19, // SPECIES_PIDGEOTTO
+ 0x00, // SPECIES_PIDGEOT
+ 0x00, // SPECIES_RATTATA
+ 0x00, // SPECIES_RATICATE
+ 0x00, // SPECIES_SPEAROW
+ 0x02, // SPECIES_FEAROW
+ 0x1e, // SPECIES_EKANS
+ 0x00, // SPECIES_ARBOK
+ 0x00, // SPECIES_PIKACHU
+ 0x00, // SPECIES_RAICHU
+ 0x00, // SPECIES_SANDSHREW
+ 0x00, // SPECIES_SANDSLASH
+ 0x1c, // SPECIES_NIDORAN_F
+ 0x00, // SPECIES_NIDORINA
+ 0x00, // SPECIES_NIDOQUEEN
+ 0x00, // SPECIES_NIDORAN_M
+ 0x00, // SPECIES_NIDORINO
+ 0x19, // SPECIES_NIDOKING
+ 0x00, // SPECIES_CLEFAIRY
+ 0x00, // SPECIES_CLEFABLE
+ 0x00, // SPECIES_VULPIX
+ 0x00, // SPECIES_NINETALES
+ 0x00, // SPECIES_JIGGLYPUFF
+ 0x00, // SPECIES_WIGGLYTUFF
+ 0x00, // SPECIES_ZUBAT
+ 0x00, // SPECIES_GOLBAT
+ 0x00, // SPECIES_ODDISH
+ 0x00, // SPECIES_GLOOM
+ 0x00, // SPECIES_VILEPLUME
+ 0x0a, // SPECIES_PARAS
+ 0x2d, // SPECIES_PARASECT
+ 0x14, // SPECIES_VENONAT
+ 0x00, // SPECIES_VENOMOTH
+ 0x19, // SPECIES_DIGLETT
+ 0x23, // SPECIES_DUGTRIO
+ 0x28, // SPECIES_MEOWTH
+ 0x14, // SPECIES_PERSIAN
+ 0x00, // SPECIES_PSYDUCK
+ 0x00, // SPECIES_GOLDUCK
+ 0x14, // SPECIES_MANKEY
+ 0x00, // SPECIES_PRIMEAPE
+ 0x1e, // SPECIES_GROWLITHE
+ 0x28, // SPECIES_ARCANINE
+ 0x00, // SPECIES_POLIWAG
+ 0x05, // SPECIES_POLIWHIRL
+ 0x00, // SPECIES_POLIWRATH
+ 0x00, // SPECIES_ABRA
+ 0x00, // SPECIES_KADABRA
+ 0x00, // SPECIES_ALAKAZAM
+ 0x00, // SPECIES_MACHOP
+ 0x00, // SPECIES_MACHOKE
+ 0x00, // SPECIES_MACHAMP
+ 0x00, // SPECIES_BELLSPROUT
+ 0x03, // SPECIES_WEEPINBELL
+ 0x00, // SPECIES_VICTREEBEL
+ 0x00, // SPECIES_TENTACOOL
+ 0x00, // SPECIES_TENTACRUEL
+ 0x00, // SPECIES_GEODUDE
+ 0x00, // SPECIES_GRAVELER
+ 0x00, // SPECIES_GOLEM
+ 0x00, // SPECIES_PONYTA
+ 0x00, // SPECIES_RAPIDASH
+ 0x00, // SPECIES_SLOWPOKE
+ 0x00, // SPECIES_SLOWBRO
+ 0x00, // SPECIES_MAGNEMITE
+ 0x00, // SPECIES_MAGNETON
+ 0x00, // SPECIES_FARFETCHD
+ 0x00, // SPECIES_DODUO
+ 0x00, // SPECIES_DODRIO
+ 0x00, // SPECIES_SEEL
+ 0x00, // SPECIES_DEWGONG
+ 0x00, // SPECIES_GRIMER
+ 0x2d, // SPECIES_MUK
+ 0x14, // SPECIES_SHELLDER
+ 0x00, // SPECIES_CLOYSTER
+ 0x00, // SPECIES_GASTLY
+ 0x17, // SPECIES_HAUNTER
+ 0x00, // SPECIES_GENGAR
+ 0x00, // SPECIES_ONIX
+ 0x30, // SPECIES_DROWZEE
+ 0x28, // SPECIES_HYPNO
+ 0x00, // SPECIES_KRABBY
+ 0x00, // SPECIES_KINGLER
+ 0x00, // SPECIES_VOLTORB
+ 0x00, // SPECIES_ELECTRODE
+ 0x00, // SPECIES_EXEGGCUTE
+ 0x00, // SPECIES_EXEGGUTOR
+ 0x00, // SPECIES_CUBONE
+ 0x00, // SPECIES_MAROWAK
+ 0x00, // SPECIES_HITMONLEE
+ 0x19, // SPECIES_HITMONCHAN
+ 0x00, // SPECIES_LICKITUNG
+ 0x00, // SPECIES_KOFFING
+ 0x00, // SPECIES_WEEZING
+ 0x00, // SPECIES_RHYHORN
+ 0x00, // SPECIES_RHYDON
+ 0x00, // SPECIES_CHANSEY
+ 0x00, // SPECIES_TANGELA
+ 0x00, // SPECIES_KANGASKHAN
+ 0x00, // SPECIES_HORSEA
+ 0x00, // SPECIES_SEADRA
+ 0x00, // SPECIES_GOLDEEN
+ 0x00, // SPECIES_SEAKING
+ 0x00, // SPECIES_STARYU
+ 0x00, // SPECIES_STARMIE
+ 0x00, // SPECIES_MR_MIME
+ 0x0a, // SPECIES_SCYTHER
+ 0x00, // SPECIES_JYNX
+ 0x00, // SPECIES_ELECTABUZZ
+ 0x00, // SPECIES_MAGMAR
+ 0x00, // SPECIES_PINSIR
+ 0x0a, // SPECIES_TAUROS
+ 0x00, // SPECIES_MAGIKARP
+ 0x00, // SPECIES_GYARADOS
+ 0x00, // SPECIES_LAPRAS
+ 0x00, // SPECIES_DITTO
+ 0x00, // SPECIES_EEVEE
+ 0x00, // SPECIES_VAPOREON
+ 0x00, // SPECIES_JOLTEON
+ 0x00, // SPECIES_FLAREON
+ 0x00, // SPECIES_PORYGON
+ 0x00, // SPECIES_OMANYTE
+ 0x00, // SPECIES_OMASTAR
+ 0x00, // SPECIES_KABUTO
+ 0x00, // SPECIES_KABUTOPS
+ 0x00, // SPECIES_AERODACTYL
+ 0x00, // SPECIES_SNORLAX
+ 0x00, // SPECIES_ARTICUNO
+ 0x00, // SPECIES_ZAPDOS
+ 0x00, // SPECIES_MOLTRES
+ 0x00, // SPECIES_DRATINI
+ 0x00, // SPECIES_DRAGONAIR
+ 0x00, // SPECIES_DRAGONITE
+ 0x00, // SPECIES_MEWTWO
+ 0x00, // SPECIES_MEW
+ 0x00, // SPECIES_CHIKORITA
+ 0x00, // SPECIES_BAYLEEF
+ 0x00, // SPECIES_MEGANIUM
+ 0x00, // SPECIES_CYNDAQUIL
+ 0x00, // SPECIES_QUILAVA
+ 0x14, // SPECIES_TYPHLOSION
+ 0x00, // SPECIES_TOTODILE
+ 0x00, // SPECIES_CROCONAW
+ 0x05, // SPECIES_FERALIGATR
+ 0x00, // SPECIES_SENTRET
+ 0x00, // SPECIES_FURRET
+ 0x00, // SPECIES_HOOTHOOT
+ 0x00, // SPECIES_NOCTOWL
+ 0x00, // SPECIES_LEDYBA
+ 0x00, // SPECIES_LEDIAN
+ 0x00, // SPECIES_SPINARAK
+ 0x00, // SPECIES_ARIADOS
+ 0x00, // SPECIES_CROBAT
+ 0x00, // SPECIES_CHINCHOU
+ 0x00, // SPECIES_LANTURN
+ 0x00, // SPECIES_PICHU
+ 0x00, // SPECIES_CLEFFA
+ 0x00, // SPECIES_IGGLYBUFF
+ 0x00, // SPECIES_TOGEPI
+ 0x00, // SPECIES_TOGETIC
+ 0x1e, // SPECIES_NATU
+ 0x00, // SPECIES_XATU
+ 0x32, // SPECIES_MAREEP
+ 0x00, // SPECIES_FLAAFFY
+ 0x0a, // SPECIES_AMPHAROS
+ 0x00, // SPECIES_BELLOSSOM
+ 0x00, // SPECIES_MARILL
+ 0x00, // SPECIES_AZUMARILL
+ 0x00, // SPECIES_SUDOWOODO
+ 0x28, // SPECIES_POLITOED
+ 0x00, // SPECIES_HOPPIP
+ 0x00, // SPECIES_SKIPLOOM
+ 0x00, // SPECIES_JUMPLUFF
+ 0x00, // SPECIES_AIPOM
+ 0x00, // SPECIES_SUNKERN
+ 0x00, // SPECIES_SUNFLORA
+ 0x00, // SPECIES_YANMA
+ 0x00, // SPECIES_WOOPER
+ 0x00, // SPECIES_QUAGSIRE
+ 0x00, // SPECIES_ESPEON
+ 0x00, // SPECIES_UMBREON
+ 0x00, // SPECIES_MURKROW
+ 0x00, // SPECIES_SLOWKING
+ 0x00, // SPECIES_MISDREAVUS
+ 0x00, // SPECIES_UNOWN
+ 0x00, // SPECIES_WOBBUFFET
+ 0x00, // SPECIES_GIRAFARIG
+ 0x00, // SPECIES_PINECO
+ 0x00, // SPECIES_FORRETRESS
+ 0x0a, // SPECIES_DUNSPARCE
+ 0x00, // SPECIES_GLIGAR
+ 0x2d, // SPECIES_STEELIX
+ 0x00, // SPECIES_SNUBBULL
+ 0x00, // SPECIES_GRANBULL
+ 0x27, // SPECIES_QWILFISH
+ 0x13, // SPECIES_SCIZOR
+ 0x00, // SPECIES_SHUCKLE
+ 0x00, // SPECIES_HERACROSS
+ 0x00, // SPECIES_SNEASEL
+ 0x00, // SPECIES_TEDDIURSA
+ 0x00, // SPECIES_URSARING
+ 0x00, // SPECIES_SLUGMA
+ 0x00, // SPECIES_MAGCARGO
+ 0x00, // SPECIES_SWINUB
+ 0x00, // SPECIES_PILOSWINE
+ 0x00, // SPECIES_CORSOLA
+ 0x00, // SPECIES_REMORAID
+ 0x14, // SPECIES_OCTILLERY
+ 0x00, // SPECIES_DELIBIRD
+ 0x00, // SPECIES_MANTINE
+ 0x00, // SPECIES_SKARMORY
+ 0x00, // SPECIES_HOUNDOUR
+ 0x00, // SPECIES_HOUNDOOM
+ 0x00, // SPECIES_KINGDRA
+ 0x00, // SPECIES_PHANPY
+ 0x00, // SPECIES_DONPHAN
+ 0x00, // SPECIES_PORYGON2
+ 0x00, // SPECIES_STANTLER
+ 0x00, // SPECIES_SMEARGLE
+ 0x00, // SPECIES_TYROGUE
+ 0x00, // SPECIES_HITMONTOP
+ 0x28, // SPECIES_SMOOCHUM
+ 0x00, // SPECIES_ELEKID
+ 0x00, // SPECIES_MAGBY
+ 0x00, // SPECIES_MILTANK
+ 0x00, // SPECIES_BLISSEY
+ 0x00, // SPECIES_RAIKOU
+ 0x00, // SPECIES_ENTEI
+ 0x00, // SPECIES_SUICUNE
+ 0x00, // SPECIES_LARVITAR
+ 0x00, // SPECIES_PUPITAR
+ 0x0a, // SPECIES_TYRANITAR
+ 0x14, // SPECIES_LUGIA
+ 0x00, // SPECIES_HO_OH
+ 0x00, // SPECIES_CELEBI
+ 0x00, // 252
+ 0x00, // 253
+ 0x00, // 254
+ 0x00, // 255
+ 0x00, // 256
+ 0x00, // 257
+ 0x00, // 258
+ 0x00, // 259
+ 0x00, // 260
+ 0x00, // 261
+ 0x00, // 262
+ 0x00, // 263
+ 0x00, // 264
+ 0x00, // 265
+ 0x00, // 266
+ 0x00, // 267
+ 0x00, // 268
+ 0x00, // 269
+ 0x00, // 270
+ 0x00, // 271
+ 0x00, // 272
+ 0x00, // 273
+ 0x00, // 274
+ 0x00, // 275
+ 0x00, // 276
+ 0x00, // SPECIES_TREECKO
+ 0x00, // SPECIES_GROVYLE
+ 0x00, // SPECIES_SCEPTILE
+ 0x00, // SPECIES_TORCHIC
+ 0x00, // SPECIES_COMBUSKEN
+ 0x00, // SPECIES_BLAZIKEN
+ 0x00, // SPECIES_MUDKIP
+ 0x00, // SPECIES_MARSHTOMP
+ 0x00, // SPECIES_SWAMPERT
+ 0x00, // SPECIES_POOCHYENA
+ 0x00, // SPECIES_MIGHTYENA
+ 0x00, // SPECIES_ZIGZAGOON
+ 0x00, // SPECIES_LINOONE
+ 0x00, // SPECIES_WURMPLE
+ 0x00, // SPECIES_SILCOON
+ 0x00, // SPECIES_BEAUTIFLY
+ 0x00, // SPECIES_CASCOON
+ 0x00, // SPECIES_DUSTOX
+ 0x00, // SPECIES_LOTAD
+ 0x00, // SPECIES_LOMBRE
+ 0x00, // SPECIES_LUDICOLO
+ 0x00, // SPECIES_SEEDOT
+ 0x00, // SPECIES_NUZLEAF
+ 0x00, // SPECIES_SHIFTRY
+ 0x00, // SPECIES_NINCADA
+ 0x00, // SPECIES_NINJASK
+ 0x00, // SPECIES_SHEDINJA
+ 0x00, // SPECIES_TAILLOW
+ 0x00, // SPECIES_SWELLOW
+ 0x00, // SPECIES_SHROOMISH
+ 0x00, // SPECIES_BRELOOM
+ 0x00, // SPECIES_SPINDA
+ 0x00, // SPECIES_WINGULL
+ 0x00, // SPECIES_PELIPPER
+ 0x00, // SPECIES_SURSKIT
+ 0x00, // SPECIES_MASQUERAIN
+ 0x00, // SPECIES_WAILMER
+ 0x0a, // SPECIES_WAILORD
+ 0x00, // SPECIES_SKITTY
+ 0x00, // SPECIES_DELCATTY
+ 0x1e, // SPECIES_KECLEON
+ 0x00, // SPECIES_BALTOY
+ 0x00, // SPECIES_CLAYDOL
+ 0x00, // SPECIES_NOSEPASS
+ 0x00, // SPECIES_TORKOAL
+ 0x00, // SPECIES_SABLEYE
+ 0x00, // SPECIES_BARBOACH
+ 0x00, // SPECIES_WHISCASH
+ 0x00, // SPECIES_LUVDISC
+ 0x00, // SPECIES_CORPHISH
+ 0x00, // SPECIES_CRAWDAUNT
+ 0x00, // SPECIES_FEEBAS
+ 0x2d, // SPECIES_MILOTIC
+ 0x00, // SPECIES_CARVANHA
+ 0x00, // SPECIES_SHARPEDO
+ 0x00, // SPECIES_TRAPINCH
+ 0x00, // SPECIES_VIBRAVA
+ 0x00, // SPECIES_FLYGON
+ 0x00, // SPECIES_MAKUHITA
+ 0x00, // SPECIES_HARIYAMA
+ 0x00, // SPECIES_ELECTRIKE
+ 0x00, // SPECIES_MANECTRIC
+ 0x00, // SPECIES_NUMEL
+ 0x00, // SPECIES_CAMERUPT
+ 0x0f, // SPECIES_SPHEAL
+ 0x00, // SPECIES_SEALEO
+ 0x00, // SPECIES_WALREIN
+ 0x00, // SPECIES_CACNEA
+ 0x00, // SPECIES_CACTURNE
+ 0x14, // SPECIES_SNORUNT
+ 0x00, // SPECIES_GLALIE
+ 0x00, // SPECIES_LUNATONE
+ 0x00, // SPECIES_SOLROCK
+ 0x00, // SPECIES_AZURILL
+ 0x00, // SPECIES_SPOINK
+ 0x0f, // SPECIES_GRUMPIG
+ 0x00, // SPECIES_PLUSLE
+ 0x00, // SPECIES_MINUN
+ 0x00, // SPECIES_MAWILE
+ 0x00, // SPECIES_MEDITITE
+ 0x00, // SPECIES_MEDICHAM
+ 0x00, // SPECIES_SWABLU
+ 0x00, // SPECIES_ALTARIA
+ 0x0f, // SPECIES_WYNAUT
+ 0x00, // SPECIES_DUSKULL
+ 0x1e, // SPECIES_DUSCLOPS
+ 0x00, // SPECIES_ROSELIA
+ 0x00, // SPECIES_SLAKOTH
+ 0x00, // SPECIES_VIGOROTH
+ 0x00, // SPECIES_SLAKING
+ 0x00, // SPECIES_GULPIN
+ 0x00, // SPECIES_SWALOT
+ 0x00, // SPECIES_TROPIUS
+ 0x00, // SPECIES_WHISMUR
+ 0x00, // SPECIES_LOUDRED
+ 0x00, // SPECIES_EXPLOUD
+ 0x00, // SPECIES_CLAMPERL
+ 0x00, // SPECIES_HUNTAIL
+ 0x00, // SPECIES_GOREBYSS
+ 0x2d, // SPECIES_ABSOL
+ 0x00, // SPECIES_SHUPPET
+ 0x00, // SPECIES_BANETTE
+ 0x00, // SPECIES_SEVIPER
+ 0x00, // SPECIES_ZANGOOSE
+ 0x00, // SPECIES_RELICANTH
+ 0x00, // SPECIES_ARON
+ 0x00, // SPECIES_LAIRON
+ 0x00, // SPECIES_AGGRON
+ 0x00, // SPECIES_CASTFORM
+ 0x00, // SPECIES_VOLBEAT
+ 0x00, // SPECIES_ILLUMISE
+ 0x00, // SPECIES_LILEEP
+ 0x00, // SPECIES_CRADILY
+ 0x00, // SPECIES_ANORITH
+ 0x00, // SPECIES_ARMALDO
+ 0x00, // SPECIES_RALTS
+ 0x00, // SPECIES_KIRLIA
+ 0x00, // SPECIES_GARDEVOIR
+ 0x00, // SPECIES_BAGON
+ 0x00, // SPECIES_SHELGON
+ 0x46, // SPECIES_SALAMENCE
+ 0x00, // SPECIES_BELDUM
+ 0x00, // SPECIES_METANG
+ 0x00, // SPECIES_METAGROSS
+ 0x00, // SPECIES_REGIROCK
+ 0x00, // SPECIES_REGICE
+ 0x00, // SPECIES_REGISTEEL
+ 0x3c, // SPECIES_KYOGRE
+ 0x00, // SPECIES_GROUDON
+ 0x3c, // SPECIES_RAYQUAZA
+ 0x00, // SPECIES_LATIAS
+ 0x00, // SPECIES_LATIOS
+ 0x00, // SPECIES_JIRACHI
+ 0x00, // SPECIES_DEOXYS
+ 0x00, // SPECIES_CHIMECHO
+};
+
+const u8 gUnknown_08329D22[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values
+const u8 gUnknown_08329D26[] = {0xfc, 0xf3, 0xcf, 0x3f}; // Masks for setting PP Up count
+const u8 gUnknown_08329D2A[] = {0x01, 0x04, 0x10, 0x40}; // Values added to PP Up count
+
+const u8 gStatStageRatios[][2] =
+{
+ {10, 40}, // -6
+ {10, 35}, // -5
+ {10, 30}, // -4
+ {10, 25}, // -3
+ {10, 20}, // -2
+ {10, 15}, // -1
+ {10, 10}, // 0
+ {15, 10}, // +1
+ {20, 10}, // +2
+ {25, 10}, // +3
+ {30, 10}, // +4
+ {35, 10}, // +5
+ {40, 10}, // +6
+};
+
+static const u16 sDeoxysBaseStats[] =
+{
+ 50, // Hp
+ 95, // Attack
+ 90, // Defense
+ 180, // Speed
+ 95, // Sp.Attack
+ 90, // Sp.Defense
+};
+
+const u16 gUnknown_08329D54[] =
+{
+ FACILITY_CLASS_COOLTRAINER_1, FACILITY_CLASS_BLACK_BELT, FACILITY_CLASS_CAMPER,
+ FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_PSYCHIC_1, FACILITY_CLASS_BUG_CATCHER,
+ FACILITY_CLASS_PKMN_BREEDER_2, FACILITY_CLASS_GUITARIST, FACILITY_CLASS_COOLTRAINER_2,
+ FACILITY_CLASS_HEX_MANIAC, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_LASS,
+ FACILITY_CLASS_PSYCHIC_2, FACILITY_CLASS_BATTLE_GIRL, FACILITY_CLASS_PKMN_BREEDER_1,
+ FACILITY_CLASS_BEAUTY
+};
+
+static const u8 sHoldEffectToType[][2] =
+{
+ {HOLD_EFFECT_BUG_POWER, TYPE_BUG},
+ {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL},
+ {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND},
+ {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK},
+ {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS},
+ {HOLD_EFFECT_DARK_POWER, TYPE_DARK},
+ {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING},
+ {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC},
+ {HOLD_EFFECT_WATER_POWER, TYPE_WATER},
+ {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING},
+ {HOLD_EFFECT_POISON_POWER, TYPE_POISON},
+ {HOLD_EFFECT_ICE_POWER, TYPE_ICE},
+ {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST},
+ {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC},
+ {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE},
+ {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON},
+ {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL},
+};
+
+const struct SpriteTemplate gUnknown_08329D98[MAX_BATTLERS_COUNT] =
+{
+ { // B_POSITION_PLAYER_LEFT
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF3A8,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ { // B_POSITION_OPPONENT_LEFT
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACA8,
+ .anims = NULL,
+ .images = gUnknown_082FF3C8,
+ .affineAnims = gUnknown_082FF694,
+ .callback = oac_poke_opponent,
+ },
+ { // B_POSITION_PLAYER_RIGHT
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF3E8,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ { // B_POSITION_OPPONENT_RIGHT
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACA8,
+ .anims = NULL,
+ .images = gUnknown_082FF408,
+ .affineAnims = gUnknown_082FF694,
+ .callback = oac_poke_opponent
+ },
+};
+
+static const struct SpriteTemplate gUnknown_08329DF8[] =
+{
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF428,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF448,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF468,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF490,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF4B8,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF4D8,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF4F8,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0,
+ .oam = &gUnknown_0831ACB0,
+ .anims = NULL,
+ .images = gUnknown_082FF518,
+ .affineAnims = gUnknown_082FF618,
+ .callback = sub_8039BB4,
+ },
+};
+
+static const u8 sSecretBaseFacilityClasses[2][5] =
+{
+ {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOLTRAINER_1},
+ {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_2, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOLTRAINER_2}
+};
+
+static const u8 sGetMonDataEVConstants[] =
+{
+ MON_DATA_HP_EV,
+ MON_DATA_ATK_EV,
+ MON_DATA_DEF_EV,
+ MON_DATA_SPEED_EV,
+ MON_DATA_SPDEF_EV,
+ MON_DATA_SPATK_EV
+};
+
+static const u8 gUnknown_08329EC8[] =
+{
+ STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC
+};
+
+static const s8 gUnknown_08329ECE[][3] =
+{
+ { 5, 3, 2},
+ { 5, 3, 2},
+ { 1, 1, 0},
+ { 3, 2, 1},
+ { 1, 1, 0},
+ { 1, 1, 1},
+ {-1, -1, -1},
+ {-5, -5, -10},
+ {-5, -5, -10},
+};
+
+static const u16 sHMMoves[] =
+{
+ MOVE_CUT, MOVE_FLY, MOVE_SURF, MOVE_STRENGTH, MOVE_FLASH,
+ MOVE_ROCK_SMASH, MOVE_WATERFALL, MOVE_DIVE, 0xFFFF
+};
+
+static const struct SpeciesItem sAlteringCaveWildMonHeldItems[] =
+{
+ {SPECIES_NONE, ITEM_NONE},
+ {SPECIES_MAREEP, ITEM_GANLON_BERRY},
+ {SPECIES_PINECO, ITEM_APICOT_BERRY},
+ {SPECIES_HOUNDOUR, ITEM_BIG_MUSHROOM},
+ {SPECIES_TEDDIURSA, ITEM_PETAYA_BERRY},
+ {SPECIES_AIPOM, ITEM_BERRY_JUICE},
+ {SPECIES_SHUCKLE, ITEM_BERRY_JUICE},
+ {SPECIES_STANTLER, ITEM_PETAYA_BERRY},
+ {SPECIES_SMEARGLE, ITEM_SALAC_BERRY},
+};
+
+static const struct OamData sOamData_8329F20 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct SpriteTemplate gUnknown_08329F28 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &sOamData_8329F20,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
// code
void ZeroBoxMonData(struct BoxPokemon *boxMon)
{
@@ -757,7 +1807,7 @@ static s32 GetDeoxysStat(struct Pokemon *mon, s32 statId)
ivVal = GetMonData(mon, MON_DATA_HP_IV + statId, NULL);
evVal = GetMonData(mon, MON_DATA_HP_EV + statId, NULL);
- statValue = (u16)(((gUnknown_08329D48[statId] * 2 + ivVal + evVal / 4) * mon->level) / 100 + 5);
+ statValue = (u16)(((sDeoxysBaseStats[statId] * 2 + ivVal + evVal / 4) * mon->level) / 100 + 5);
nature = GetNature(mon);
statId_ = statId; // needed to match
@@ -1208,10 +2258,10 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, bankDef))
spDefense = (110 * spDefense) / 100;
- for (i = 0; i < 17; i++)
+ for (i = 0; i < ARRAY_COUNT(sHoldEffectToType); i++)
{
- if (attackerHoldEffect == gHoldEffectToType[i][0]
- && type == gHoldEffectToType[i][1])
+ if (attackerHoldEffect == sHoldEffectToType[i][0]
+ && type == sHoldEffectToType[i][1])
{
if (type <= 8)
attack = (attack * (attackerHoldEffectParam + 100)) / 100;
@@ -1268,26 +2318,26 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
{
if (gCritMultiplier == 2)
{
- if (attacker->statStages[STAT_STAGE_ATK] > 6)
- APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
+ if (attacker->statStages[STAT_ATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_ATK)
else
damage = attack;
}
else
- APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_ATK)
damage = damage * gBattleMovePower;
damage *= (2 * attacker->level / 5 + 2);
if (gCritMultiplier == 2)
{
- if (defender->statStages[STAT_STAGE_DEF] < 6)
- APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
+ if (defender->statStages[STAT_DEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_DEF)
else
damageHelper = defense;
}
else
- APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_DEF)
damage = damage / damageHelper;
damage /= 50;
@@ -1318,26 +2368,26 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
{
if (gCritMultiplier == 2)
{
- if (attacker->statStages[STAT_STAGE_SPATK] > 6)
- APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
+ if (attacker->statStages[STAT_SPATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_SPATK)
else
damage = spAttack;
}
else
- APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_SPATK)
damage = damage * gBattleMovePower;
damage *= (2 * attacker->level / 5 + 2);
if (gCritMultiplier == 2)
{
- if (defender->statStages[STAT_STAGE_SPDEF] < 6)
- APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
+ if (defender->statStages[STAT_SPDEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_SPDEF)
else
damageHelper = spDefense;
}
else
- APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_SPDEF)
damage = (damage / damageHelper);
damage /= 50;
@@ -1689,7 +2739,7 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data)
ret = mon->defense;
break;
case MON_DATA_SPEED:
- ret = (u16)GetDeoxysStat(mon, STAT_SPD);
+ ret = (u16)GetDeoxysStat(mon, STAT_SPEED);
if (!ret)
ret = mon->speed;
break;
@@ -2575,13 +3625,13 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
u8 GetSecretBaseTrainerPicIndex(void)
{
- u8 facilityClass = gSecretBaseFacilityClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
+ u8 facilityClass = sSecretBaseFacilityClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
return gFacilityClassToPicIndex[facilityClass];
}
u8 GetSecretBaseTrainerClass(void)
{
- u8 facilityClass = gSecretBaseFacilityClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
+ u8 facilityClass = sSecretBaseFacilityClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
return gFacilityClassToTrainerClass[facilityClass];
}
@@ -2729,7 +3779,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (heldItem == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
- holdEffect = gEnigmaBerries[gBankInMenu].holdEffect;
+ holdEffect = gEnigmaBerries[gBattlerInMenuId].holdEffect;
else
holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
}
@@ -2738,10 +3788,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
holdEffect = ItemId_GetHoldEffect(heldItem);
}
- gStringBattler = gBankInMenu;
+ gPotentialItemEffectBattler = gBattlerInMenuId;
if (gMain.inBattle)
{
- gActiveBattler = gBankInMenu;
+ gActiveBattler = gBattlerInMenuId;
cmdIndex = (GetBattlerSide(gActiveBattler) != B_SIDE_PLAYER);
while (cmdIndex < gBattlersCount)
{
@@ -2795,49 +3845,49 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] = 12;
retVal = FALSE;
}
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] = 12;
retVal = FALSE;
}
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] = 12;
retVal = FALSE;
}
break;
@@ -2908,7 +3958,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
case 1:
evCount = GetMonEVCount(mon);
r5 = itemEffect[var_3C];
- dataSigned = GetMonData(mon, gUnknown_08329EC2[var_38], NULL);
+ dataSigned = GetMonData(mon, sGetMonDataEVConstants[var_38], NULL);
r2 = r5;
if (r2 > 0)
{
@@ -2938,7 +3988,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (dataSigned < 0)
dataSigned = 0;
}
- SetMonData(mon, gUnknown_08329EC2[var_38], &dataSigned);
+ SetMonData(mon, sGetMonDataEVConstants[var_38], &dataSigned);
CalculateMonStats(mon);
var_3C++;
retVal = FALSE;
@@ -3108,7 +4158,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
case 3:
evCount = GetMonEVCount(mon);
r5 = itemEffect[var_3C];
- dataSigned = GetMonData(mon, gUnknown_08329EC2[var_38 + 2], NULL);
+ dataSigned = GetMonData(mon, sGetMonDataEVConstants[var_38 + 2], NULL);
r2 = r5;
if (r2 > 0)
{
@@ -3138,7 +4188,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (dataSigned < 0)
dataSigned = 0;
}
- SetMonData(mon, gUnknown_08329EC2[var_38 + 2], &dataSigned);
+ SetMonData(mon, sGetMonDataEVConstants[var_38 + 2], &dataSigned);
CalculateMonStats(mon);
retVal = FALSE;
var_3C++;
@@ -3377,10 +4427,10 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
return offset;
}
-static void sub_806CF24(s32 stat)
+static void sub_806CF24(s32 arg0)
{
- gBattlerTarget = gBankInMenu;
- StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[stat]]);
+ gBattlerTarget = gBattlerInMenuId;
+ StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[arg0]]);
StringCopy(gBattleTextBuff2, gText_StatRose);
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2);
}
@@ -3393,7 +4443,7 @@ u8 *sub_806CF78(u16 itemId)
if (itemId == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
- itemEffect = gEnigmaBerries[gBankInMenu].itemEffect;
+ itemEffect = gEnigmaBerries[gBattlerInMenuId].itemEffect;
else
itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
}
@@ -3402,7 +4452,7 @@ u8 *sub_806CF78(u16 itemId)
itemEffect = gItemEffectTable[itemId - 13];
}
- gStringBattler = gBankInMenu;
+ gPotentialItemEffectBattler = gBattlerInMenuId;
for (i = 0; i < 3; i++)
{
@@ -3416,7 +4466,7 @@ u8 *sub_806CF78(u16 itemId)
}
else
{
- gBattlerAttacker = gBankInMenu;
+ gBattlerAttacker = gBattlerInMenuId;
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnGettingPumped);
}
}
@@ -3424,7 +4474,7 @@ u8 *sub_806CF78(u16 itemId)
if (itemEffect[3] & 0x80)
{
- gBattlerAttacker = gBankInMenu;
+ gBattlerAttacker = gBattlerInMenuId;
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist);
}
@@ -4452,9 +5502,9 @@ const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u
bool32 IsHMMove2(u16 move)
{
int i = 0;
- while (gHMMoves[i] != 0xFFFF)
+ while (sHMMoves[i] != 0xFFFF)
{
- if (gHMMoves[i++] == move)
+ if (sHMMoves[i++] == move)
return TRUE;
}
return FALSE;
@@ -4540,7 +5590,7 @@ void sub_806E994(void)
else
gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->field_49];
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBankInMenu, pokemon_order_func(gBattlerPartyIndexes[gBankInMenu]))
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, pokemon_order_func(gBattlerPartyIndexes[gBattlerInMenuId]))
BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4);
}
@@ -4548,8 +5598,8 @@ void sub_806E994(void)
static s32 GetWildMonTableIdInAlteringCave(u16 species)
{
s32 i;
- for (i = 0; i < (s32) ARRAY_COUNT(gAlteringCaveWildMonHeldItems); i++)
- if (gAlteringCaveWildMonHeldItems[i].species == species)
+ for (i = 0; i < (s32) ARRAY_COUNT(sAlteringCaveWildMonHeldItems); i++)
+ if (sAlteringCaveWildMonHeldItems[i].species == species)
return i;
return 0;
}
@@ -4575,7 +5625,7 @@ void SetWildMonHeldItem(void)
{
if (rnd < var2)
return;
- SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gAlteringCaveWildMonHeldItems[alteringCaveId].item);
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &sAlteringCaveWildMonHeldItems[alteringCaveId].item);
}
else
{
@@ -4710,16 +5760,16 @@ void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry,
if (HasTwoFramesAnimation(species))
StartSpriteAnim(sprite, 1);
}
- if (gMonAnimationDelayTable[species - 1] != 0)
+ if (sMonAnimationDelayTable[species - 1] != 0)
{
u8 taskId = CreateTask(Task_AnimateAfterDelay, 0);
STORE_PTR_IN_TASK(sprite, taskId, 0);
- gTasks[taskId].data[2] = gMonFrontAnimIdsTable[species - 1];
- gTasks[taskId].data[3] = gMonAnimationDelayTable[species - 1];
+ gTasks[taskId].data[2] = sMonFrontAnimIdsTable[species - 1];
+ gTasks[taskId].data[3] = sMonAnimationDelayTable[species - 1];
}
else
{
- LaunchAnimationTaskForFrontSprite(sprite, gMonFrontAnimIdsTable[species - 1]);
+ LaunchAnimationTaskForFrontSprite(sprite, sMonFrontAnimIdsTable[species - 1]);
}
sprite->callback = SpriteCallbackDummy_2;
}
@@ -4729,18 +5779,18 @@ void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneF
{
if (!oneFrame && HasTwoFramesAnimation(species))
StartSpriteAnim(sprite, 1);
- if (gMonAnimationDelayTable[species - 1] != 0)
+ if (sMonAnimationDelayTable[species - 1] != 0)
{
u8 taskId = CreateTask(Task_PokemonSummaryAnimateAfterDelay, 0);
STORE_PTR_IN_TASK(sprite, taskId, 0);
- gTasks[taskId].data[2] = gMonFrontAnimIdsTable[species - 1];
- gTasks[taskId].data[3] = gMonAnimationDelayTable[species - 1];
+ gTasks[taskId].data[2] = sMonFrontAnimIdsTable[species - 1];
+ gTasks[taskId].data[3] = sMonAnimationDelayTable[species - 1];
sub_81C488C(taskId);
SetSpriteCB_MonAnimDummy(sprite);
}
else
{
- StartMonSummaryAnimation(sprite, gMonFrontAnimIdsTable[species - 1]);
+ StartMonSummaryAnimation(sprite, sMonFrontAnimIdsTable[species - 1]);
}
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index e11ba881e..1d99a5a86 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -20,6 +20,12 @@
#include "task.h"
#include "text.h"
#include "window.h"
+#include "event_data.h"
+#include "gpu_regs.h"
+#include "menu.h"
+#include "international_string_util.h"
+#include "scanline_effect.h"
+#include "menu_helpers.h"
struct ContestMove
{
@@ -36,16 +42,12 @@ struct ContestEffect
u8 jam;
};
-
-
extern struct UnkSummaryStruct* gUnknown_0203CF1C;
extern struct BgTemplate gUnknown_0861CBB4;
extern u8 gUnknown_0203CF20;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern s8 gUnknown_0861CC1C[];
-extern u8 gUnknown_08329D22[];
extern u8 gUnknown_0203CF21;
-extern u16 gSpecialVar_0x8005;
extern struct UnkStruct_61CC04 gUnknown_0861CC04;
extern struct UnkStruct_61CC04 gUnknown_0861CC10;
extern struct UnkStruct_61CC04 gUnknown_0861CBEC;
@@ -67,20 +69,9 @@ extern u8 gUnknown_0861CE7B[];
extern struct WindowTemplate gUnknown_0861CCEC;
extern struct WindowTemplate gUnknown_0861CD14;
-extern void sub_806F2AC(u8 a, u8 b);
void sub_81C488C(u8 a);
-extern void do_scheduled_bg_tilemap_copies_to_vram(void);
extern u8 sub_81221EC();
extern u8 sub_81221AC();
-extern void SetVBlankHBlankCallbacksToNull();
-extern void ResetVramOamAndBgCntRegs();
-extern void clear_scheduled_bg_copies_to_vram();
-extern void ScanlineEffect_Stop();
-extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
-extern void ShowBg(u8 a);
-extern void SetGpuReg(u8 regOffset, u16 value);
-extern void schedule_bg_copy_tilemap_to_vram(u8 a);
-extern void SetBgTilemapBuffer(u8 bg, void *tilemap);
extern u8 gUnknown_08D9862C;
extern u8 gUnknown_08D98CC8;
extern u8 gUnknown_08D987FC;
@@ -95,9 +86,6 @@ extern struct CompressedSpritePalette gUnknown_0861D100;
extern struct CompressedSpritePalette gUnknown_0861D07C;
extern u8 gMoveTypes_Pal;
extern u8 gUnknown_08D97D0C;
-extern void reset_temp_tile_data_buffers();
-extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 c, u8 d);
-extern u8 free_temp_tile_data_buffers_if_possible();
extern void sub_81C1E20(u8 taskId);
extern u8 *GetMonNickname(struct Pokemon *mon, u8 *dest);
extern u16 SpeciesToPokedexNum(u16 species);
@@ -160,11 +148,7 @@ extern u8 gText_ThreeDashes[];
extern u8 gUnknown_0861CE97[];
extern struct BattleMove gBattleMoves[];
-extern u32 ChangeBgX(u8 bg, u32 value, u8 op);
extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f);
-extern void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8* colors, s8 speed, u8 *str);
-extern s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
-extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
extern bool8 sub_81A6BF4();
extern bool8 sub_81B9E94();
extern void UnkTextUtil_Reset();
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index fc576462b..0bd79f573 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -13,23 +13,15 @@
#include "util.h"
#include "task.h"
#include "text.h"
+#include "battle_setup.h"
-#define BANK_RECORD_SIZE 664
+#define BATTLER_RECORD_SIZE 664
#define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
| BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
| BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
| BATTLE_TYPE_RECORDED | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE \
| BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
-extern u32 gBattleTypeFlags;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u16 gPartnerTrainerId;
-extern u8 gActiveBattler;
-extern u8 gBattlersCount;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
-extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
extern u8 gUnknown_03001278;
extern u8 gUnknown_03001279;
@@ -38,7 +30,7 @@ struct PlayerInfo
u32 trainerId;
u8 name[PLAYER_NAME_LENGTH];
u8 gender;
- u16 bank;
+ u16 battlerId;
u16 language;
};
@@ -58,7 +50,7 @@ struct RecordedBattleSave
u8 playersLanguage[MAX_BATTLERS_COUNT];
u32 rngSeed;
u32 battleFlags;
- u8 playersBank[MAX_BATTLERS_COUNT];
+ u8 playersBattlers[MAX_BATTLERS_COUNT];
u16 opponentA;
u16 opponentB;
u16 partnerId;
@@ -75,13 +67,13 @@ struct RecordedBattleSave
u16 field_50E[6];
u8 field_51A;
u8 field_51B;
- u8 battleRecord[MAX_BATTLERS_COUNT][BANK_RECORD_SIZE];
+ u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE];
u32 checksum;
};
EWRAM_DATA u32 gRecordedBattleRngSeed = 0;
EWRAM_DATA u32 gBattlePalaceMoveSelectionRngValue = 0;
-EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BANK_RECORD_SIZE] = {0};
+EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE] = {0};
EWRAM_DATA static u16 sRecordedBytesNo[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u16 sUnknown_0203C79C[4] = {0};
EWRAM_DATA static u16 sUnknown_0203C7A4[4] = {0};
@@ -108,7 +100,6 @@ EWRAM_DATA static u16 sUnknown_0203CCDC[6] = {0};
EWRAM_DATA static u8 sUnknown_0203CCE8 = 0;
extern u32 sub_81A513C(void);
-extern void PlayMapChosenOrBattleBGM(bool8);
// this file's functions
static u8 sub_8185278(u8 *arg0, u8 *arg1, u8 *arg2);
@@ -131,7 +122,7 @@ void sub_8184DA4(u8 arg0)
if (arg0 == 1)
{
- for (j = 0; j < BANK_RECORD_SIZE; j++)
+ for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] |= 0xFF;
}
@@ -168,7 +159,7 @@ void sub_8184E58(void)
{
sRecordedBattle_Players[i].trainerId = gLinkPlayers[i].trainerId;
sRecordedBattle_Players[i].gender = gLinkPlayers[i].gender;
- sRecordedBattle_Players[i].bank = gLinkPlayers[i].lp_field_18;
+ sRecordedBattle_Players[i].battlerId = gLinkPlayers[i].lp_field_18;
sRecordedBattle_Players[i].language = gLinkPlayers[i].language;
if (i < linkPlayersCount)
@@ -192,7 +183,7 @@ void sub_8184E58(void)
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
sRecordedBattle_Players[0].gender = gSaveBlock2Ptr->playerGender;
- sRecordedBattle_Players[0].bank = 0;
+ sRecordedBattle_Players[0].battlerId = 0;
sRecordedBattle_Players[0].language = gGameLanguage;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
@@ -200,31 +191,31 @@ void sub_8184E58(void)
}
}
-void RecordedBattle_SetBattlerAction(u8 bank, u8 action)
+void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
{
- if (sRecordedBytesNo[bank] < BANK_RECORD_SIZE && sUnknown_0203C7AC != 2)
+ if (sRecordedBytesNo[battlerId] < BATTLER_RECORD_SIZE && sUnknown_0203C7AC != 2)
{
- sBattleRecords[bank][sRecordedBytesNo[bank]++] = action;
+ sBattleRecords[battlerId][sRecordedBytesNo[battlerId]++] = action;
}
}
-void RecordedBattle_ClearBattlerAction(u8 bank, u8 bytesToClear)
+void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
{
s32 i;
for (i = 0; i < bytesToClear; i++)
{
- sRecordedBytesNo[bank]--;
- sBattleRecords[bank][sRecordedBytesNo[bank]] |= 0xFF;
- if (sRecordedBytesNo[bank] == 0)
+ sRecordedBytesNo[battlerId]--;
+ sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] |= 0xFF;
+ if (sRecordedBytesNo[battlerId] == 0)
break;
}
}
-u8 RecordedBattle_GetBattlerAction(u8 bank)
+u8 RecordedBattle_GetBattlerAction(u8 battlerId)
{
// trying to read past array or invalid action byte, battle is over
- if (sRecordedBytesNo[bank] >= BANK_RECORD_SIZE || sBattleRecords[bank][sRecordedBytesNo[bank]] == 0xFF)
+ if (sRecordedBytesNo[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == 0xFF)
{
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
ResetPaletteFadeControl();
@@ -234,7 +225,7 @@ u8 RecordedBattle_GetBattlerAction(u8 bank)
}
else
{
- return sBattleRecords[bank][sRecordedBytesNo[bank]++];
+ return sBattleRecords[battlerId][sRecordedBytesNo[battlerId]++];
}
}
@@ -358,7 +349,7 @@ u32 MoveRecordedBattleToSaveData(void)
}
battleSave->playersGender[i] = sRecordedBattle_Players[i].gender;
battleSave->playersLanguage[i] = sRecordedBattle_Players[i].language;
- battleSave->playersBank[i] = sRecordedBattle_Players[i].bank;
+ battleSave->playersBattlers[i] = sRecordedBattle_Players[i].battlerId;
battleSave->playersTrainerId[i] = sRecordedBattle_Players[i].trainerId;
}
@@ -375,16 +366,16 @@ u32 MoveRecordedBattleToSaveData(void)
}
else if (sRecordedBattle_BattleFlags & BATTLE_TYPE_MULTI)
{
- switch (sRecordedBattle_Players[0].bank)
+ switch (sRecordedBattle_Players[0].battlerId)
{
case 0:
case 2:
- if (!(sRecordedBattle_Players[gUnknown_0203C7B4].bank & 1))
+ if (!(sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
break;
case 1:
case 3:
- if ((sRecordedBattle_Players[gUnknown_0203C7B4].bank & 1))
+ if ((sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
break;
}
@@ -1349,7 +1340,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
}
gLinkPlayers[i].gender = src->playersGender[i];
gLinkPlayers[i].language = src->playersLanguage[i];
- gLinkPlayers[i].lp_field_18 = src->playersBank[i];
+ gLinkPlayers[i].lp_field_18 = src->playersBattlers[i];
gLinkPlayers[i].trainerId = src->playersTrainerId[i];
if (var)
@@ -1388,7 +1379,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- for (j = 0; j < BANK_RECORD_SIZE; j++)
+ for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] = src->battleRecord[i][j];
}
@@ -1456,7 +1447,7 @@ static void RecordedBattle_RestoreSavedParties(void)
}
}
-u8 GetActiveBankLinkPlayerGender(void)
+u8 GetActiveBattlerLinkPlayerGender(void)
{
s32 i;
@@ -1497,7 +1488,7 @@ u8 GetTextSpeedInRecordedBattle(void)
return sRecordedBattle_TextSpeed;
}
-void RecordedBattle_CopyBankMoves(void)
+void RecordedBattle_CopyBattlerMoves(void)
{
s32 i;
@@ -1518,32 +1509,32 @@ void RecordedBattle_CopyBankMoves(void)
void sub_818603C(u8 arg0)
{
- s32 bank, j, k;
+ s32 battlerId, j, k;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
return;
- for (bank = 0; bank < gBattlersCount; bank++)
+ for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- if (GetBattlerSide(bank) != B_SIDE_OPPONENT) // player's side only
+ if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT) // player's side only
{
if (arg0 == 1)
{
for (j = 0; j < 4; j++)
{
- if (gBattleMons[bank].moves[j] != sRecordedBattle_PlayerMonMoves[bank / 2][j])
+ if (gBattleMons[battlerId].moves[j] != sRecordedBattle_PlayerMonMoves[battlerId / 2][j])
break;
}
if (j != 4) // player's mon's move has been changed
{
- RecordedBattle_SetBattlerAction(bank, ACTION_MOVE_CHANGE);
+ RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
for (j = 0; j < 4; j++)
{
for (k = 0; k < 4; k++)
{
- if (gBattleMons[bank].moves[j] == sRecordedBattle_PlayerMonMoves[bank / 2][k])
+ if (gBattleMons[battlerId].moves[j] == sRecordedBattle_PlayerMonMoves[battlerId / 2][k])
{
- RecordedBattle_SetBattlerAction(bank, k);
+ RecordedBattle_SetBattlerAction(battlerId, k);
break;
}
}
@@ -1552,7 +1543,7 @@ void sub_818603C(u8 arg0)
}
else
{
- if (sBattleRecords[bank][sRecordedBytesNo[bank]] == ACTION_MOVE_CHANGE)
+ if (sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == ACTION_MOVE_CHANGE)
{
u8 ppBonuses[4];
u8 array1[4];
@@ -1561,58 +1552,58 @@ void sub_818603C(u8 arg0)
u8 array3[8];
u8 var;
- RecordedBattle_GetBattlerAction(bank);
+ RecordedBattle_GetBattlerAction(battlerId);
for (j = 0; j < 4; j++)
{
- ppBonuses[j] = ((gBattleMons[bank].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
+ ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
}
for (j = 0; j < 4; j++)
{
- array1[j] = RecordedBattle_GetBattlerAction(bank);
- movePp.moves[j] = gBattleMons[bank].moves[array1[j]];
- movePp.pp[j] = gBattleMons[bank].pp[array1[j]];
+ array1[j] = RecordedBattle_GetBattlerAction(battlerId);
+ movePp.moves[j] = gBattleMons[battlerId].moves[array1[j]];
+ movePp.pp[j] = gBattleMons[battlerId].pp[array1[j]];
array3[j] = ppBonuses[array1[j]];
- array2[j] = (gDisableStructs[bank].unk18_b & gBitTable[j]) >> j;
+ array2[j] = (gDisableStructs[battlerId].unk18_b & gBitTable[j]) >> j;
}
for (j = 0; j < 4; j++)
{
- gBattleMons[bank].moves[j] = movePp.moves[j];
- gBattleMons[bank].pp[j] = movePp.pp[j];
+ gBattleMons[battlerId].moves[j] = movePp.moves[j];
+ gBattleMons[battlerId].pp[j] = movePp.pp[j];
}
- gBattleMons[bank].ppBonuses = 0;
- gDisableStructs[bank].unk18_b = 0;
+ gBattleMons[battlerId].ppBonuses = 0;
+ gDisableStructs[battlerId].unk18_b = 0;
for (j = 0; j < 4; j++)
{
- gBattleMons[bank].ppBonuses |= (array3[j]) << (j << 1);
- gDisableStructs[bank].unk18_b |= (array2[j]) << (j);
+ gBattleMons[battlerId].ppBonuses |= (array3[j]) << (j << 1);
+ gDisableStructs[battlerId].unk18_b |= (array2[j]) << (j);
}
- if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED))
+ if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
{
for (j = 0; j < 4; j++)
{
- ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
+ ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
}
for (j = 0; j < 4; j++)
{
- movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_MOVE1 + array1[j], NULL);
- movePp.pp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_PP1 + array1[j], NULL);
+ movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + array1[j], NULL);
+ movePp.pp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + array1[j], NULL);
array3[j] = ppBonuses[array1[j]];
}
for (j = 0; j < 4; j++)
{
- SetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
- SetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_PP1 + j, &movePp.pp[j]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.pp[j]);
}
var = 0;
for (j = 0; j < 4; j++)
{
var |= (array3[j]) << (j << 1);
}
- SetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_PP_BONUSES, &var);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &var);
}
- gChosenMoveByBattler[bank] = gBattleMons[bank].moves[*(gBattleStruct->chosenMovePositions + bank)];
+ gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
}
}
}
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index 099edce49..9950f6691 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -15,7 +15,7 @@ void sub_81700F8(void)
imeBackup = REG_IME;
REG_IME = 0;
RegisterRamReset(0x00000001);
- ClearGpuRegBits(REG_OFFSET_DISPCNT, 0x80);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK);
REG_IME = imeBackup;
gMain.inBattle = FALSE;
SetSaveBlocksPointers(sub_815355C());
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 069a85d38..eb0ef2e3e 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -12,6 +12,7 @@
#include "sprite.h"
#include "constants/species.h"
#include "battle_interface.h"
+#include "battle_anim.h"
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
@@ -21,27 +22,11 @@ extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
-extern u8 gReservedSpritePaletteCount;
-extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
-extern u8 gBankInMenu;
-extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
-extern u8 gBattlersCount;
-extern u32 gBattleTypeFlags;
-extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
-extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
-extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
-extern void ScanlineEffect_Clear(void);
-extern void sub_8035658(void);
-extern bool8 IsDoubleBattle(void);
-extern u8 GetSubstituteSpriteDefault_Y(u8 bank);
-extern u8 GetBattlerSpriteDefault_Y(u8 bank);
-extern u8 sub_80A82E4(u8 bank);
extern void sub_806A068(u16 species, u8 bankIdentity);
extern void sub_806A12C(u16 backPicId, u8 bankIdentity);
-extern u8 GetBattlerSpriteCoord(u8 bank, u8 caseId);
// this file's functions
static void CB2_ReshowBattleScreenAfterMenu(void);
@@ -174,7 +159,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
SetBattlerShadowSpriteCallback(opponentBank, species);
}
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gBankInMenu], 0);
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gBattlerInMenuId], 0);
if (gLinkVSyncDisabled != 0 && gReceivedRemoteLinkPlayers != 0)
{
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 12da73090..dd3cf3733 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -108,7 +108,7 @@ void SafariZoneRetirePrompt(void)
void CB2_EndSafariBattle(void)
{
sSafariZoneFleedMons += gBattleResults.field_1F;
- if (gBattleOutcome == B_OUTCOME_CAUGHT_POKE)
+ if (gBattleOutcome == B_OUTCOME_CAUGHT)
sSafariZoneCaughtMons++;
if (gNumSafariBalls != 0)
{
@@ -121,7 +121,7 @@ void CB2_EndSafariBattle(void)
gFieldCallback = sub_80AF6F0;
SetMainCallback2(c2_load_new_map);
}
- else if (gBattleOutcome == B_OUTCOME_CAUGHT_POKE)
+ else if (gBattleOutcome == B_OUTCOME_CAUGHT)
{
ScriptContext1_SetupScript(EventScript_2A4B9B);
ScriptContext1_Stop();
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 490bc6fda..7fc4dc1e8 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -62,13 +62,6 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
-extern u16 gSpecialVar_0x8000;
-extern u16 gSpecialVar_0x8001;
-extern u16 gSpecialVar_0x8002;
-extern u16 gSpecialVar_0x8004;
-
-extern u16 gSpecialVar_Result;
-
extern u16 gSpecialVar_ContestCategory;
IWRAM_DATA u8 gUnknown_03000F30;
diff --git a/src/secret_base.c b/src/secret_base.c
index 96fe6edd2..e3c06a75d 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -32,6 +32,7 @@
#include "international_string_util.h"
#include "event_data.h"
#include "battle.h"
+#include "battle_setup.h"
#include "rom6.h"
#include "decoration.h"
#include "link.h"
diff --git a/src/tv.c b/src/tv.c
index 0fb2997ad..ddcff9f1d 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1208,7 +1208,7 @@ void PutPokemonTodayFailedOnTheAir(void)
{
ct = 0xFF;
}
- if (ct > 2 && (gBattleOutcome == B_OUTCOME_POKE_FLED || gBattleOutcome == B_OUTCOME_WON))
+ if (ct > 2 && (gBattleOutcome == B_OUTCOME_MON_FLED || gBattleOutcome == B_OUTCOME_WON))
{
sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_FAILED, FALSE) != TRUE)
@@ -2406,7 +2406,7 @@ void sub_80EE184(void)
case B_OUTCOME_DREW:
show->breakingNews.kind = TVSHOW_OFF_AIR;
return;
- case B_OUTCOME_CAUGHT_POKE:
+ case B_OUTCOME_CAUGHT:
show->breakingNews.outcome = 0;
break;
case B_OUTCOME_WON:
@@ -2417,8 +2417,8 @@ void sub_80EE184(void)
case B_OUTCOME_NO_SAFARI_BALLS:
show->breakingNews.outcome = 2;
break;
- case B_OUTCOME_POKE_FLED:
- case B_OUTCOME_POKE_TELEPORTED:
+ case B_OUTCOME_MON_FLED:
+ case B_OUTCOME_MON_TELEPORTED:
show->breakingNews.outcome = 3;
break;
}
diff --git a/sym_common.txt b/sym_common.txt
index ec6c95b20..3d3edcd55 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -202,33 +202,7 @@ gUnknown_03005CDE: @ 3005CDE
.space 0x1A
.include "rtc.o"
-
-gPreBattleCallback1: @ 3005D00
- .space 0x4
-
-gBattleMainFunc: @ 3005D04
- .space 0xC
-
-gBattleResults: @ 3005D10
- .space 0x44
-
-gLeveledUpInBattle: @ 3005D54
- .space 0xC
-
-gBattlerControllerFuncs: @ 3005D60
- .space 0x10
-
-gHealthboxSpriteIds: @ 3005D70
- .space 0x4
-
-gMultiUsePlayerCursor: @ 3005D74
- .space 0x4
-
-gNumberOfMovesToChoose: @ 3005D78
- .space 0x4
-
-gUnknown_03005D7C: @ 3005D7C
- .space 0x4
+ .include "battle_main.o"
gRngValue: @ 3005D80
.space 0x4
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 3905b83c7..9fc26bc7c 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -239,288 +239,7 @@ gBattle_WIN1V: @ 2022E2A
.space 0x2
.include "src/battle_message.o"
-
-gUnknown_02022F88: @ 2022F88
- .space 0x64
-
-gBattleTypeFlags: @ 2022FEC
- .space 0x4
-
-gBattleTerrain: @ 2022FF0
- .space 0x4
-
-gUnknown_02022FF4: @ 2022FF4
- .space 0x4
-
-gUnknown_02022FF8: @ 2022FF8
- .space 0x60
-
-gUnknown_02023058: @ 2023058
- .space 0x4
-
-gUnknown_0202305C: @ 202305C
- .space 0x4
-
-gUnknown_02023060: @ 2023060
- .space 0x4
-
-gBattleBufferA: @ 2023064
- .space 0x800
-
-gBattleBufferB: @ 2023864
- .space 0x800
-
-gActiveBattler: @ 2024064
- .space 0x4
-
-gBattleControllerExecFlags: @ 2024068
- .space 0x4
-
-gBattlersCount: @ 202406C
- .space 0x2
-
-gBattlerPartyIndexes: @ 202406E
- .space 0x8
-
-gBattlerPositions: @ 2024076
- .space 0x4
-
-gActionsByTurnOrder: @ 202407A
- .space 0x4
-
-gBattleTurnOrder: @ 202407E
- .space 0x4
-
-gCurrentTurnActionNumber: @ 2024082
- .space 0x1
-
-gCurrentActionFuncId: @ 2024083
- .space 0x1
-
-gBattleMons: @ 2024084
- .space 0x160
-
-gBattlerSpriteIds: @ 20241E4
- .space 0x4
-
-gCurrMovePos: @ 20241E8
- .space 0x1
-
-gUnknown_020241E9: @ 20241E9
- .space 0x1
-
-gCurrentMove: @ 20241EA
- .space 0x2
-
-gChosenMove: @ 20241EC
- .space 0x2
-
-gRandomMove: @ 20241EE
- .space 0x2
-
-gBattleMoveDamage: @ 20241F0
- .space 0x4
-
-gHpDealt: @ 20241F4
- .space 0x4
-
-gTakenDmg: @ 20241F8
- .space 0x10
-
-gLastUsedItem: @ 2024208
- .space 0x2
-
-gLastUsedAbility: @ 202420A
- .space 0x1
-
-gBattlerAttacker: @ 202420B
- .space 0x1
-
-gBattlerTarget: @ 202420C
- .space 0x1
-
-gBank1: @ 202420D
- .space 0x1
-
-gEffectBank: @ 202420E
- .space 0x1
-
-gStringBattler: @ 202420F
- .space 0x1
-
-gAbsentBattlerFlags: @ 2024210
- .space 0x1
-
-gCritMultiplier: @ 2024211
- .space 0x1
-
-gMultiHitCounter: @ 2024212
- .space 0x2
-
-gBattlescriptCurrInstr: @ 2024214
- .space 0x8
-
-gChosenActionByBattler: @ 202421C
- .space 0x4
-
-gSelectionBattleScripts: @ 2024220
- .space 0x10
-
-gPalaceSelectionBattleScripts: @ 2024230
- .space 0x10
-
-gLastPrintedMoves: @ 2024240
- .space 0x8
-
-gLastMoves: @ 2024248
- .space 0x8
-
-gLastLandedMoves: @ 2024250
- .space 0x8
-
-gLastHitByType: @ 2024258
- .space 0x8
-
-gLastResultingMoves: @ 2024260
- .space 0x8
-
-gLockedMoves: @ 2024268
- .space 0x8
-
-gLastHitBy: @ 2024270
- .space 0x4
-
-gChosenMoveByBattler: @ 2024274
- .space 0x8
-
-gMoveResultFlags: @ 202427C
- .space 0x4
-
-gHitMarker: @ 2024280
- .space 0x4
-
-gUnknown_02024284: @ 2024284
- .space 0x4
-
-gTakenDmgBanks: @ 2024288
- .space 0x4
-
-gUnknown_0202428C: @ 202428C
- .space 0x2
-
-gSideStatuses: @ 202428E
- .space 0x6
-
-gSideTimers: @ 2024294
- .space 0x18
-
-gStatuses3: @ 20242AC
- .space 0x10
-
-gDisableStructs: @ 20242BC
- .space 0x70
-
-gPauseCounterBattle: @ 202432C
- .space 0x2
-
-gPaydayMoney: @ 202432E
- .space 0x2
-
-gRandomTurnNumber: @ 2024330
- .space 0x2
-
-gBattleCommunication: @ 2024332
- .space 0x1
-
-gUnknown_02024333: @ 2024333
- .space 0x7
-
-gBattleOutcome: @ 202433A
- .space 0x2
-
-gProtectStructs: @ 202433C
- .space 0x40
-
-gSpecialStatuses: @ 202437C
- .space 0x50
-
-gBattleWeather: @ 20243CC
- .space 0x4
-
-gWishFutureKnock: @ 20243D0
- .space 0x2C
-
-gUnknown_020243FC: @ 20243FC
- .space 0x2
-
-gSentPokesToOpponent: @ 20243FE
- .space 0x2
-
-gDynamicBasePower: @ 2024400
- .space 0x2
-
-gExpShareExp: @ 2024402
- .space 0x2
-
-gEnigmaBerries: @ 2024404
- .space 0x70
-
-gBattleScripting: @ 2024474
- .space 0x28
-
-gBattleStruct: @ 202449C
- .space 0x4
-
-gLinkBattleSendBuffer: @ 20244A0
- .space 0x4
-
-gLinkBattleRecvBuffer: @ 20244A4
- .space 0x4
-
-gBattleResources: @ 20244A8
- .space 0x4
-
-gActionSelectionCursor: @ 20244AC
- .space 0x4
-
-gMoveSelectionCursor: @ 20244B0
- .space 0x4
-
-gUnknown_020244B4: @ 20244B4
- .space 0x4
-
-gBankInMenu: @ 20244B8
- .space 0x1
-
-gDoingBattleAnim: @ 20244B9
- .space 0x3
-
-gTransformedPersonalities: @ 20244BC
- .space 0x10
-
-gPlayerDpadHoldFrames: @ 20244CC
- .space 0x4
-
-gBattleSpritesDataPtr: @ 20244D0
- .space 0x4
-
-gMonSpritesGfxPtr: @ 20244D4
- .space 0x4
-
-gUnknown_020244D8: @ 20244D8
- .space 0x4
-
-gUnknown_020244DC: @ 20244DC
- .space 0x4
-
-gBattleMovePower: @ 20244E0
- .space 0x2
-
-gMoveToLearn: @ 20244E2
- .space 0x2
-
-gBattleMonForms: @ 20244E4
- .space 0x4
+ .include "src/battle_main.o"
.include "src/pokemon.o"
.include "src/random.o"