summaryrefslogtreecommitdiff
path: root/battle
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2014-06-12 18:32:42 -0700
committeryenatch <yenatch@gmail.com>2014-06-12 18:32:42 -0700
commit023cfdbb051ea5184ebc7fa329db3ca43f1ca23e (patch)
tree0f91ce5ba8d243080fbe58a7f0e1a97949ba6c1a /battle
parent23f9b5d21e93f1b3c8de5e4ecf72da89265ccea8 (diff)
Consolidate monster structs in wram and sram.
The PartyMon struct is really the box struct with volatile variables like status added. Some other labels have been reworked. Move structs no longer have explicit labels since their location is arbitrary and usually shared.
Diffstat (limited to 'battle')
-rw-r--r--battle/ai/scoring.asm261
-rw-r--r--battle/core.asm296
-rw-r--r--battle/effect_commands.asm103
3 files changed, 324 insertions, 336 deletions
diff --git a/battle/ai/scoring.asm b/battle/ai/scoring.asm
index 7a34ec3d0..ab4aca83f 100644
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -16,7 +16,7 @@ AIScoring_RedStatus: ; 38591
inc de
call AIGetEnemyMove
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
ld c, a
push hl
@@ -28,7 +28,7 @@ AIScoring_RedStatus: ; 38591
pop hl
jr nz, .discourage
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
push hl
push de
push bc
@@ -82,7 +82,7 @@ AIScoring_RedStatMods: ; 385e0
inc de
call AIGetEnemyMove
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
cp EFFECT_ATTACK_UP
jr c, .checkmove
@@ -119,7 +119,7 @@ AIScoring_RedStatMods: ; 385e0
jr nz, .discourage
.encourage
- call Function_0x39527
+ call Function39527
jr c, .checkmove
dec [hl]
@@ -173,7 +173,7 @@ AIScoring_RedSuperEffective: ; 38635
jr c, .noteffective
; effective
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .checkmove
dec [hl]
@@ -185,7 +185,7 @@ AIScoring_RedSuperEffective: ; 38635
push hl
push de
push bc
- ld a, [EnemyMoveType]
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
ld d, a
ld hl, EnemyMonMoves
ld b, EnemyMonMovesEnd - EnemyMonMoves + 1
@@ -199,10 +199,10 @@ AIScoring_RedSuperEffective: ; 38635
jr z, .asm_38693
call AIGetEnemyMove
- ld a, [EnemyMoveType]
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
cp d
jr z, .checkmove2
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr nz, .asm_38692
jr .checkmove2
@@ -244,7 +244,7 @@ AIScoring_Offensive: ; 386a2
inc de
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr nz, .checkmove
@@ -275,7 +275,7 @@ AIScoring_Smart: ; 386be
push hl
call AIGetEnemyMove
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
ld hl, .table_386f2
ld de, 3
call IsInArray
@@ -398,7 +398,7 @@ AIScoring_Sleep: ; 387e3
ret nc
.asm_387f0
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
dec [hl]
@@ -421,7 +421,7 @@ AIScoring_LeechHit: ; 387f7
call AICheckEnemyMaxHP
ret c
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
@@ -484,8 +484,8 @@ AIScoring_LockOn: ; 3881d
call AIGetEnemyMove
- ld a, [EnemyMoveAccuracy]
- cp $b4
+ ld a, [wEnemyMoveStruct + MOVE_ACC]
+ cp 180
jr nc, .asm_3884f
ld a, $1
@@ -513,7 +513,7 @@ AIScoring_LockOn: ; 3881d
.asm_3887a
pop hl
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -538,8 +538,8 @@ AIScoring_LockOn: ; 3881d
inc de
call AIGetEnemyMove
- ld a, [EnemyMoveAccuracy]
- cp $b4
+ ld a, [wEnemyMoveStruct + MOVE_ACC]
+ cp 180
jr nc, .asm_3888b
dec [hl]
@@ -602,19 +602,16 @@ AIScoring_EvasionUp: ; 388d4
jp nc, AIDiscourageMove
call AICheckEnemyMaxHP
-
jr nc, .asm_388f2
ld a, [PlayerSubStatus5]
- bit 0, a
+ bit SUBSTATUS_TOXIC, a
jr nz, .asm_388ef
call Random
-
cp $b2
jr nc, .asm_38911
-
.asm_388ef
dec [hl]
dec [hl]
@@ -622,42 +619,35 @@ AIScoring_EvasionUp: ; 388d4
.asm_388f2
call AICheckEnemyQuarterHP
-
jr nc, .asm_3890f
call Random
-
cp $a
jr c, .asm_388ef
call AICheckEnemyHalfHP
-
jr nc, .asm_3890a
- call Function_0x39521
-
+ call Function39521
jr c, .asm_388ef
-
jr .asm_38911
.asm_3890a
- call Function_0x39527
-
+ call Function39527
jr c, .asm_38911
-
.asm_3890f
inc [hl]
inc [hl]
.asm_38911
ld a, [PlayerSubStatus5]
- bit 0, a
+ bit SUBSTATUS_TOXIC, a
jr nz, .asm_38938
ld a, [PlayerSubStatus4]
- bit 7, a
+ bit SUBSTATUS_LEECH_SEED, a
jr nz, .asm_38941
ld a, [EnemyEvaLevel]
@@ -671,7 +661,7 @@ AIScoring_EvasionUp: ; 388d4
jr nz, .asm_388ef
ld a, [PlayerSubStatus1]
- bit 6, a
+ bit SUBSTATUS_ENCORED, a
jr nz, .asm_388ef
@@ -688,7 +678,7 @@ AIScoring_EvasionUp: ; 388d4
ret
.asm_38941
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -706,7 +696,7 @@ AIScoring_AlwaysHit: ; 38947
ret c
.asm_38954
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
@@ -721,30 +711,29 @@ AIScoring_MirrorMove: ; 3895b
jr nz, .asm_38968
call AICompareSpeed
-
ret nc
- jp AIDiscourageMove
+ jp AIDiscourageMove
.asm_38968
push hl
ld hl, Table_0x39301
ld de, 1
call IsInArray
-
pop hl
ret nc
- call Function_0x39527
+ call Function39527
ret c
+
dec [hl]
call AICompareSpeed
-
ret nc
- call Random
+ call Random
cp $19
ret c
+
dec [hl]
ret
; 38985
@@ -752,23 +741,19 @@ AIScoring_MirrorMove: ; 3895b
AIScoring_AccuracyDown: ; 38985
call AICheckPlayerMaxHP
-
jr nc, .asm_389a0
call AICheckEnemyHalfHP
-
jr nc, .asm_389a0
ld a, [PlayerSubStatus5]
- bit 0, a
+ bit SUBSTATUS_TOXIC, a
jr nz, .asm_3899d
call Random
-
cp $b2
jr nc, .asm_389bf
-
.asm_3899d
dec [hl]
dec [hl]
@@ -776,42 +761,34 @@ AIScoring_AccuracyDown: ; 38985
.asm_389a0
call AICheckPlayerQuarterHP
-
jr nc, .asm_389bd
call Random
-
cp $a
jr c, .asm_3899d
call AICheckPlayerHalfHP
-
jr nc, .asm_389b8
- call Function_0x39521
-
+ call Function39521
jr c, .asm_3899d
-
jr .asm_389bf
-
.asm_389b8
- call Function_0x39527
-
+ call Function39527
jr c, .asm_389bf
-
.asm_389bd
inc [hl]
inc [hl]
.asm_389bf
ld a, [PlayerSubStatus5]
- bit 0, a
+ bit SUBSTATUS_TOXIC, a
jr nz, .asm_389e6
ld a, [PlayerSubStatus4]
- bit 7, a
+ bit SUBSTATUS_LEECH_SEED, a
jr nz, .asm_389ef
ld a, [EnemyEvaLevel]
@@ -825,10 +802,9 @@ AIScoring_AccuracyDown: ; 38985
jr nz, .asm_3899d
ld a, [PlayerSubStatus1]
- bit 6, a
+ bit SUBSTATUS_ENCORED, a
jr nz, .asm_3899d
-
.asm_389e4
inc [hl]
ret
@@ -842,9 +818,9 @@ AIScoring_AccuracyDown: ; 38985
ret
.asm_389ef
- call Function_0x39527
-
+ call Function39527
ret c
+
dec [hl]
ret
; 389f5
@@ -862,7 +838,6 @@ AIScoring_Haze: ; 389f5
jr c, .asm_38a12
jr .asm_389fb
-
.asm_38a05
ld hl, PlayerAtkLevel
ld c, $8
@@ -984,7 +959,7 @@ AIScoring_Bind: ; 38a71
jr z, .asm_38a91
.asm_38a8b
- call Function_0x39527
+ call Function39527
ret c
inc [hl]
ret
@@ -992,7 +967,7 @@ AIScoring_Bind: ; 38a71
.asm_38a91
call AICheckEnemyQuarterHP
ret nc
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
dec [hl]
@@ -1022,7 +997,7 @@ AIScoring_Unused2B: ; 38a9c
call AIGetEnemyMove
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
cp EFFECT_PROTECT
jr z, .asm_38ad5
dec c
@@ -1081,14 +1056,14 @@ AIScoring_SpDefenseUp2: ; 38aed
ret nc
ld a, [BattleMonType1]
- cp FIRE
+ cp SPECIAL
jr nc, .asm_38b09
ld a, [BattleMonType2]
- cp FIRE
+ cp SPECIAL
ret c
.asm_38b09
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
dec [hl]
@@ -1128,14 +1103,14 @@ AIScoring_Paralyze: ; 38b26
ret c
call AICheckEnemyQuarterHP
ret nc
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
dec [hl]
ret
.asm_38b3a
- call Function_0x39527
+ call Function39527
ret c
inc [hl]
ret
@@ -1143,7 +1118,7 @@ AIScoring_Paralyze: ; 38b26
AIScoring_SpeedDownHit: ; 38b40
- ld a, [EnemyMoveAnimation]
+ ld a, [wEnemyMoveStruct + MOVE_ANIM]
cp ICY_WIND
ret nz
call AICheckEnemyQuarterHP
@@ -1174,7 +1149,7 @@ AIScoring_HyperBeam: ; 38b63
jr c, .asm_38b72
call AICheckEnemyQuarterHP
ret c
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
ret
@@ -1184,7 +1159,7 @@ AIScoring_HyperBeam: ; 38b63
cp 40
ret c
inc [hl]
- call Function_0x39527
+ call Function39527
ret c
inc [hl]
ret
@@ -1196,7 +1171,7 @@ AIScoring_Rage: ; 38b7f
bit 6, a
jr z, .asm_38b9b
- call Function_0x39527
+ call Function39527
jr c, .asm_38b8c
dec [hl]
@@ -1216,7 +1191,7 @@ AIScoring_Rage: ; 38b7f
call AICheckEnemyHalfHP
jr nc, .asm_38ba6
- call Function_0x39521
+ call Function39521
ret nc
dec [hl]
ret
@@ -1249,7 +1224,7 @@ AIScoring_Mimic: ; 38ba8
jr c, .asm_38bef
jr z, .asm_38bd4
- call Function_0x39527
+ call Function39527
jr c, .asm_38bd4
dec [hl]
@@ -1263,7 +1238,7 @@ AIScoring_Mimic: ; 38ba8
pop hl
ret nc
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
ret
@@ -1291,12 +1266,12 @@ AIScoring_Counter: ; 38bf1
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .asm_38c0e
- ld a, [EnemyMoveType]
- cp $14
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
+ cp SPECIAL
jr nc, .asm_38c0e
inc b
@@ -1319,12 +1294,12 @@ AIScoring_Counter: ; 38bf1
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .asm_38c38
- ld a, [EnemyMoveType]
- cp $14
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
+ cp SPECIAL
jr nc, .asm_38c38
@@ -1354,12 +1329,12 @@ AIScoring_Encore: ; 38c3b
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .asm_38c68
push hl
- ld a, [EnemyMoveType]
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
ld hl, EnemyMonType1
ld a, $41
call Predef
@@ -1433,7 +1408,7 @@ AIScoring_Encore: ; 38c3b
AIScoring_PainSplit: ; 38ca4
push hl
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld b, [hl]
inc hl
ld c, [hl]
@@ -1490,7 +1465,7 @@ AIScoring_Spite: ; 38cd5
call AICompareSpeed
jp c, AIDiscourageMove
- call Function_0x39527
+ call Function39527
ret c
inc [hl]
ret
@@ -1596,7 +1571,7 @@ AIScoring_HealBell: ; 38d1f
.asm_38d48
and $27
ret z
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -1664,7 +1639,7 @@ AIScoring_Conversion2: ; 38d98
ld a, BANK(Moves)
call GetFarByte
- ld [PlayerMoveType], a
+ ld [wPlayerMoveStruct + MOVE_TYPE], a
xor a
ld [hBattleTurn], a
@@ -1677,7 +1652,7 @@ AIScoring_Conversion2: ; 38d98
jr c, .asm_38dc9
ret z
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -1713,7 +1688,7 @@ AIScoring_Disable: ; 38dd1
ret
.asm_38dee
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
ret nz
@@ -1755,7 +1730,7 @@ AIScoring_MeanLook: ; 38dfb
ret
.asm_38e26
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
dec [hl]
@@ -1792,7 +1767,7 @@ AICheckLastPlayerMon: ; 38e2e
AIScoring_Nightmare: ; 38e4a
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
ret
@@ -1832,12 +1807,12 @@ AIScoring_Curse: ; 38e5c
ld a, [BattleMonType1]
cp GHOST
jr z, .asm_38e92
- cp FIRE
+ cp SPECIAL
ret nc
ld a, [BattleMonType2]
- cp FIRE
+ cp SPECIAL
ret nc
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
dec [hl]
@@ -1892,7 +1867,7 @@ AIScoring_Curse: ; 38e5c
ret nz
.asm_38ecb
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -1936,7 +1911,7 @@ AIScoring_Protect: ; 38ed2
jr c, .asm_38f14
.asm_38f0d
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
ret
@@ -2002,14 +1977,14 @@ AIScoring_PerishSong: ; 38f4a
pop hl
ret c
- call Function_0x39527
+ call Function39527
ret c
inc [hl]
ret
.asm_38f6f
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -2043,7 +2018,7 @@ AIScoring_Sandstorm: ; 38f7a
call AICheckPlayerHalfHP
jr nc, .asm_38fa6
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -2079,7 +2054,7 @@ AIScoring_Endure: ; 38fac
call AIHasMove
jr nc, .asm_38fcb
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
@@ -2091,7 +2066,7 @@ AIScoring_Endure: ; 38fac
ld a, [EnemySubStatus5]
bit SUBSTATUS_LOCK_ON, a
ret z
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -2161,7 +2136,7 @@ AIScoring_Rollout: ; 38fef
ret
.asm_39020
- call Function_0x39521
+ call Function39521
ret c
inc [hl]
ret
@@ -2174,7 +2149,7 @@ AIScoring_Attract: ; 39026
and a
jr z, .asm_39032
- call Function_0x39521
+ call Function39521
ret c
inc [hl]
ret
@@ -2191,7 +2166,7 @@ AIScoring_Attract: ; 39026
AIScoring_Safeguard: ; 3903a
call AICheckPlayerHalfHP
ret c
- call Function_0x39521
+ call Function39521
ret c
inc [hl]
ret
@@ -2217,7 +2192,7 @@ AIScoring_Earthquake: ; 39044
.asm_39058
call AICompareSpeed
ret c
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
ret
@@ -2239,13 +2214,13 @@ AIScoring_BatonPass: ; 39062
AIScoring_Pursuit: ; 39072
call AICheckPlayerQuarterHP
jr nc, .asm_3907d
- call Function_0x39521
+ call Function39521
ret c
inc [hl]
ret
.asm_3907d
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
dec [hl]
@@ -2267,7 +2242,7 @@ AIScoring_RapidSpin: ; 39084
ret z
.asm_39097
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
@@ -2372,7 +2347,7 @@ AIScoring_WeatherMove: ; 3910d
call AICheckPlayerHalfHP
jr nc, AIBadWeatherType
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
@@ -2476,7 +2451,7 @@ AIScoring_PsychUp: ; 39152
ld a, [EnemyEvaLevel]
cp $8
ret nc
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
@@ -2502,12 +2477,12 @@ AIScoring_MirrorCoat: ; 3918b
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .asm_391a8
- ld a, [EnemyMoveType]
- cp FIRE
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
+ cp SPECIAL
jr c, .asm_391a8
inc b
@@ -2530,12 +2505,12 @@ AIScoring_MirrorCoat: ; 3918b
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .asm_391d2
- ld a, [EnemyMoveType]
- cp FIRE
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
+ cp SPECIAL
jr c, .asm_391d2
@@ -2574,7 +2549,7 @@ AIScoring_Gust: ; 391d5
.asm_391e9
call AICompareSpeed
ret c
- call Function_0x39527
+ call Function39527
ret c
dec [hl]
ret
@@ -2600,7 +2575,7 @@ AIScoring_Stomp: ; 39200
and a
ret z
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
@@ -2625,7 +2600,7 @@ AIScoring_Solarbeam: ; 3920b
ret
.asm_3921e
- call Function_0x39521
+ call Function39521
ret c
dec [hl]
@@ -2650,13 +2625,13 @@ AIScoring_Thunder: ; 39225
AICompareSpeed: ; 39233
push bc
- ld a, [EnemyMonSpd + 1]
+ ld a, [EnemyMonSpeed + 1]
ld b, a
- ld a, [BattleMonSpd + 1]
+ ld a, [BattleMonSpeed + 1]
cp b
- ld a, [EnemyMonSpd]
+ ld a, [EnemyMonSpeed]
ld b, a
- ld a, [BattleMonSpd]
+ ld a, [BattleMonSpeed]
sbc b
pop bc
ret
@@ -2677,8 +2652,8 @@ AICheckEnemyMaxHP: ; 39251
push hl
push de
push bc
- ld de, EnemyMonHPHi
- ld hl, EnemyMonMaxHPHi
+ ld de, EnemyMonHP
+ ld hl, EnemyMonMaxHP
; fallthrough
; 3925a
@@ -2733,7 +2708,7 @@ AICheckEnemyHalfHP: ; 39281
push hl
push de
push bc
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld b, [hl]
inc hl
ld c, [hl]
@@ -2756,7 +2731,7 @@ AICheckEnemyQuarterHP: ; 39298
push hl
push de
push bc
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld b, [hl]
inc hl
ld c, [hl]
@@ -2811,7 +2786,7 @@ AIHasMove: ; 392ca
call AIGetEnemyMove
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
cp b
jr z, .asm_392e3
@@ -2898,7 +2873,7 @@ AIScoring_Opportunist: ; 39315
call AICheckEnemyQuarterHP
jr nc, .asm_39322
- call Function_0x39527
+ call Function39527
ret c
.asm_39322
@@ -2992,7 +2967,7 @@ AIScoring_Aggressive: ; 39369
push de
push bc
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .nodamage
call AIDamageCalc
@@ -3043,14 +3018,14 @@ AIScoring_Aggressive: ; 39369
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
cp 2
jr c, .checkmove2
push hl
push de
push bc
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
ld hl, .aggressivemoves
ld de, 1
call IsInArray
@@ -3077,7 +3052,7 @@ AIScoring_Aggressive: ; 39369
AIDamageCalc: ; 393e7
ld a, 1
ld [hBattleTurn], a
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
ld de, 1
ld hl, .ConstantDamageEffects
call IsInArray
@@ -3175,7 +3150,7 @@ AIScoring_StatusImmunity: ; 39453
inc de
call AIGetEnemyMove
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
cp EFFECT_TOXIC
jr z, .poisonimmunity
cp EFFECT_POISON
@@ -3185,7 +3160,7 @@ AIScoring_StatusImmunity: ; 39453
cp EFFECT_PARALYZE
jr z, .typeimmunity
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .checkmove
@@ -3242,12 +3217,12 @@ AIScoring_Risky: ; 394a9
push hl
call AIGetEnemyMove
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
jr z, .nextmove
; Don't use risky moves at max hp.
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
ld de, 1
ld hl, .riskymoves
call IsInArray
@@ -3317,7 +3292,7 @@ AIGetEnemyMove: ; 39508
ld bc, MOVE_LENGTH
call AddNTimes
- ld de, EnemyMoveStruct
+ ld de, wEnemyMoveStruct
ld a, BANK(Moves)
call FarCopyBytes
@@ -3328,14 +3303,14 @@ AIGetEnemyMove: ; 39508
; 39521
-Function_0x39521: ; 39521
+Function39521: ; 39521
call Random
cp 50 ; 1/5
ret
; 39527
-Function_0x39527: ; 39527
+Function39527: ; 39527
call Random
cp $80 ; 1/2
ret
diff --git a/battle/core.asm b/battle/core.asm
index 9f3dbc661..dda37000d 100644
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -12,8 +12,8 @@ Function3c000: ; 3c000
inc a
ld [$d264], a
ld hl, OTPartyMon1HP
- ld bc, $002f
- ld d, $3
+ ld bc, OTPartyMon2 - (OTPartyMon1 + 1)
+ ld d, NUM_MOVES - 1
.asm_3c019
inc d
ld a, [hli]
@@ -166,8 +166,8 @@ Function3c12f: ; 3c12f
call Function3c3f5
jp c, .asm_3c1be
xor a
- ld [$c710], a
- ld [$c711], a
+ ld [wPlayerIsSwitching], a
+ ld [wEnemyIsSwitching], a
ld [$d264], a
ld [$c73f], a
ld [$c740], a
@@ -455,7 +455,7 @@ Function3c314: ; 3c314
jr z, .asm_3c35b
cp $d
jr z, .asm_3c35b
- sub $4
+ sub NUM_MOVES
jr c, .asm_3c35b
ld a, [$d0ec]
cp $2
@@ -537,8 +537,8 @@ Function3c314: ; 3c314
jr .asm_3c3c5
.asm_3c3c5
- ld de, BattleMonSpd
- ld hl, EnemyMonSpd
+ ld de, BattleMonSpeed
+ ld hl, EnemyMonSpeed
ld c, $2
call StringCmp
jr z, .asm_3c3d8
@@ -653,26 +653,26 @@ Function3c434: ; 3c434
callab UpdateMoveData
xor a
ld [$c732], a
- ld a, [PlayerMoveEffect]
- cp $77
+ ld a, [wPlayerMoveStruct + MOVE_EFFECT]
+ cp EFFECT_FURY_CUTTER
jr z, .asm_3c494
xor a
ld [PlayerFuryCutterCount], a
.asm_3c494
- ld a, [PlayerMoveEffect]
- cp $51
+ ld a, [wPlayerMoveStruct + MOVE_EFFECT]
+ cp EFFECT_RAGE
jr z, .asm_3c4a4
ld hl, PlayerSubStatus4
- res 6, [hl]
+ res SUBSTATUS_RAGE, [hl]
xor a
ld [$c72b], a
.asm_3c4a4
- ld a, [PlayerMoveEffect]
- cp $6f
+ ld a, [wPlayerMoveStruct + MOVE_EFFECT]
+ cp EFFECT_PROTECT
jr z, .asm_3c4c9
- cp $74
+ cp EFFECT_ENDURE
jr z, .asm_3c4c9
xor a
ld [PlayerProtectCount], a
@@ -1055,7 +1055,7 @@ Function3c706: ; 3c706
and a
jr z, Function3c710
Function3c70b: ; 3c70b
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
jr Function3c713
Function3c710: ; 3c710
@@ -1176,7 +1176,7 @@ Function3c716: ; 3c716
ld a, [hBattleTurn]
and a
jr z, .asm_3c7f4
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
.asm_3c7f4
ld a, [hli]
@@ -1243,7 +1243,7 @@ Function3c801: ; 3c801
ret
.asm_3c85c
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
xor a
ld [hli], a
ld [hl], a
@@ -1352,7 +1352,7 @@ Function3c8eb: ; 3c8eb
ld a, [hBattleTurn]
and a
jr z, .asm_3c922
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
.asm_3c922
ld a, [hli]
@@ -2423,7 +2423,7 @@ EnemyPartyMonEntrance: ; 3cf78
call SetEnemyTurn
call SpikesDamage
xor a
- ld [EnemyMoveAnimation], a
+ ld [wEnemyMoveStruct + MOVE_ANIM], a
ld [$d0ec], a
inc a
ret
@@ -2732,7 +2732,7 @@ KantoGymLeaders:
Function3d14e: ; 3d14e
call Function3cef1
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
or [hl]
call z, Function3cf14
@@ -2743,7 +2743,7 @@ Function3d14e: ; 3d14e
ld a, d
and a
jp z, LostBattle
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
or [hl]
jr nz, .asm_3d185
@@ -2841,7 +2841,7 @@ Function3d1f8: ; 3d1f8
cp $1
jr z, .asm_3d20a
ld hl, PartyMon1Speed
- ld de, EnemyMonSpd
+ ld de, EnemyMonSpeed
jp Function3d8b3
; 3d227
@@ -2862,7 +2862,7 @@ Function3d227: ; 3d227
ld [$d0ec], a
call Function3d2e0
jr c, .asm_3d251
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
or [hl]
jr nz, .asm_3d26c
@@ -3296,7 +3296,7 @@ Function3d4e1: ; 3d4e1
ld [$c6fc], a
ld [$d0ec], a
inc a
- ld [$c711], a
+ ld [wEnemyIsSwitching], a
call Function309d
jp Function3e3ad
; 3d517
@@ -3309,8 +3309,8 @@ Function3d517: ; 3d517
.asm_3d522
call Function3d6ca
- ld a, $1
- ld [$c711], a
+ ld a, 1
+ ld [wEnemyIsSwitching], a
call Function3d7a0
call Function3d7b8
jp Function3d7c7
@@ -3321,7 +3321,7 @@ Function3d533: ; 3d533
and a
jr z, .asm_3d541
ld a, [$d430]
- sub $4
+ sub NUM_MOVES
ld b, a
jr .asm_3d555
@@ -3435,10 +3435,10 @@ Function3d5d7: ; 3d5d7
push de
push bc
dec a
- ld hl, Moves + MOVE_ANIM
+ ld hl, Moves
ld bc, MOVE_LENGTH
call AddNTimes
- ld de, EnemyMoveAnimation
+ ld de, wEnemyMoveStruct
ld a, BANK(Moves)
call FarCopyBytes
call SetEnemyTurn
@@ -3475,14 +3475,14 @@ Function3d618: ; 3d618
ld a, BANK(BaseData)
call FarCopyBytes
ld a, [BattleMonType1]
- ld [PlayerMoveType], a
+ ld [wPlayerMoveStruct + MOVE_TYPE], a
call SetPlayerTurn
callab Function347c8
ld a, [$d265]
cp $b
jr nc, .asm_3d663
ld a, [BattleMonType2]
- ld [PlayerMoveType], a
+ ld [wPlayerMoveStruct + MOVE_TYPE], a
callab Function347c8
ld a, [$d265]
cp $b
@@ -3592,14 +3592,14 @@ Function3d6ca: ; 3d6ca
ld a, [$def4]
and a
jr nz, .asm_3d708
- ld hl, EnemyMonAtkDefDV
- ld a, $2d
+ ld hl, EnemyMonDVs
+ ld a, PREDEF_GET_UNOWN_LETTER
call Predef
ld a, [UnownLetter]
ld [$def4], a
.asm_3d708
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
ld [$c6ea], a
ld a, [hl]
@@ -3759,7 +3759,7 @@ NewEnemyMonStatus: ; 3d834
ld [hl], a
ld [EnemyDisableCount], a
ld [EnemyFuryCutterCount], a
- ld [$c681], a
+ ld [EnemyProtectCount], a
ld [$c72c], a
ld [EnemyDisabledMove], a
ld [$c6fa], a
@@ -4019,21 +4019,21 @@ Function3d8b3: ; 3d8b3
Function3da0d: ; 3da0d
- ld a, $0
+ ld a, PartyMon1Species - PartyMon1
call GetPartyParamLocation
ld de, BattleMonSpecies
- ld bc, $0006
+ ld bc, 1 + 1 + NUM_MOVES ; species, item, moves ; BattleMonDVs - BattleMonSpecies
call CopyBytes
- ld bc, $000f
+ ld bc, PartyMon1DVs - (PartyMon1Species + 1 + 1 + NUM_MOVES)
add hl, bc
- ld de, BattleMonAtkDefDV
- ld bc, $0007
+ ld de, BattleMonDVs
+ ld bc, 2 + NUM_MOVES + 1 ; DVs, PP, happiness ; BattleMonLevel - BattleMonDVs
call CopyBytes
inc hl
inc hl
inc hl
ld de, BattleMonLevel
- ld bc, $0011
+ ld bc, 1 + 1 + 1 + 2 + 2 * 6 ; level, status, unused, stats
call CopyBytes
ld a, [BattleMonSpecies]
ld [TempBattleMonSpecies], a
@@ -4044,15 +4044,15 @@ Function3da0d: ; 3da0d
ld [BattleMonType1], a
ld a, [BaseType2]
ld [BattleMonType2], a
- ld hl, PartyMon1Nickname
+ ld hl, PartyMonNicknames
ld a, [CurBattleMon]
call SkipNames
ld de, BattleMonNick
- ld bc, $000b
+ ld bc, PKMN_NAME_LENGTH
call CopyBytes
- ld hl, BattleMonAtk
+ ld hl, BattleMonAttack
ld de, PlayerStats
- ld bc, $000a
+ ld bc, 2 * 5
call CopyBytes
call Function3ec2c
call BadgeStatBoosts
@@ -4074,7 +4074,7 @@ Function3da7c: ; 3da7c
; 3da85
Function3da85: ; 3da85
- ld hl, BattleMonAtkDefDV
+ ld hl, BattleMonDVs
ld a, [PlayerSubStatus5]
bit 3, a
ret z
@@ -4084,7 +4084,7 @@ Function3da85: ; 3da85
; 3da97
Function3da97: ; 3da97
- ld hl, EnemyMonAtkDefDV
+ ld hl, EnemyMonDVs
ld a, [EnemySubStatus5]
bit 3, a
ret z
@@ -4092,7 +4092,7 @@ Function3da97: ; 3da97
ld a, [IsInBattle]
dec a
ret z
- ld hl, OTPartyMon1AtkDefDV
+ ld hl, OTPartyMon1DVs
ld a, [CurOTMon]
jp GetPartyLocation
; 3dab1
@@ -4114,31 +4114,31 @@ Function3dabd: ; 3dabd
ld hl, OTPartyMon1Species
call GetPartyLocation
ld de, EnemyMonSpecies
- ld bc, $0006
+ ld bc, 1 + 1 + NUM_MOVES
call CopyBytes
- ld bc, $000f
+ ld bc, OTPartyMon1DVs - (OTPartyMon1Species + 1 + 1 + NUM_MOVES)
add hl, bc
- ld de, EnemyMonAtkDefDV
- ld bc, $0007
+ ld de, EnemyMonDVs
+ ld bc, 2 + NUM_MOVES + 1
call CopyBytes
inc hl
inc hl
inc hl
ld de, EnemyMonLevel
- ld bc, $0011
+ ld bc, 1 + 1 + 1 + 2 + 2 * 6
call CopyBytes
ld a, [EnemyMonSpecies]
ld [CurSpecies], a
call GetBaseData
- ld hl, OTPartyMon1Nickname
+ ld hl, OTPartyMonNicknames
ld a, [CurPartyMon]
call SkipNames
ld de, EnemyMonNick
- ld bc, $000b
+ ld bc, PKMN_NAME_LENGTH
call CopyBytes
- ld hl, EnemyMonAtk
+ ld hl, EnemyMonAttack
ld de, EnemyStats
- ld bc, $000a
+ ld bc, 2 * 5
call CopyBytes
call Function3ec30
ld hl, BaseType1
@@ -4148,9 +4148,9 @@ Function3dabd: ; 3dabd
inc de
ld a, [hl]
ld [de], a
- ld hl, BaseHP
+ ld hl, BaseStats
ld de, EnemyMonBaseStats
- ld b, $5
+ ld b, 5
.asm_3db25
ld a, [hli]
ld [de], a
@@ -4177,7 +4177,7 @@ Function3db32: ; 3db32
call Function3db5f
call EmptyBattleTextBox
call Function309d
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
or [hl]
ret
@@ -4185,12 +4185,12 @@ Function3db32: ; 3db32
Function3db5f: ; 3db5f
- ld hl, BattleMonAtkDefDV
- ld a, $2d
+ ld hl, BattleMonDVs
+ ld a, PREDEF_GET_UNOWN_LETTER
call Predef
hlcoord 1, 5
- ld b, $7
- ld c, $8
+ ld b, 7
+ ld c, 8
call ClearBox
call WaitBGMap
xor a
@@ -4201,7 +4201,7 @@ Function3db5f: ; 3db5f
ld [$d0d2], a
ld [CurMoveNum], a
ld [TypeModifier], a
- ld [PlayerMoveAnimation], a
+ ld [wPlayerMoveStruct + MOVE_ANIM], a
ld [LastEnemyCounterMove], a
ld [LastPlayerCounterMove], a
ld [LastPlayerMove], a
@@ -4223,7 +4223,7 @@ Function3db5f: ; 3db5f
call Function3ee17
.asm_3dbbc
- ld a, $0
+ ld a, PartyMon1Species - PartyMon1
call GetPartyParamLocation
ld b, h
ld c, l
@@ -4281,20 +4281,20 @@ BreakAttraction: ; 3dc18
SpikesDamage: ; 3dc23
ld hl, PlayerScreens
- ld de, BattleMonType1
+ ld de, BattleMonType
ld bc, Function3df48
ld a, [hBattleTurn]
and a
jr z, .ok
ld hl, EnemyScreens
- ld de, EnemyMonType1
+ ld de, EnemyMonType
ld bc, Function3e036
.ok
bit SCREENS_SPIKES, [hl]
ret z
-; Flying-types aren't affected by Spikes.
+ ; Flying-types aren't affected by Spikes.
ld a, [de]
cp FLYING
ret z
@@ -4321,15 +4321,17 @@ SpikesDamage: ; 3dc23
; 3dc5b
Function3dc5b: ; 3dc5b
- ld a, $10
+ ld a, BATTLE_VARS_MOVE
call GetBattleVar
ld b, a
call GetMoveEffect
ld a, b
- cp $80
+ cp EFFECT_PURSUIT
jr nz, .asm_3dce4
+
ld a, [CurBattleMon]
push af
+
ld hl, DoPlayerTurn
ld a, [hBattleTurn]
and a
@@ -4337,25 +4339,29 @@ Function3dc5b: ; 3dc5b
ld hl, DoEnemyTurn
ld a, [$c71a]
ld [CurBattleMon], a
-
.asm_3dc7e
ld a, BANK(DoPlayerTurn)
rst FarCall
- ld a, $10
+
+ ld a, BATTLE_VARS_MOVE
call _GetBattleVar
ld a, $ff
ld [hl], a
+
pop af
ld [CurBattleMon], a
+
ld a, [hBattleTurn]
and a
jr z, .asm_3dcc0
+
ld a, [$c71a]
call Function399f
ld hl, BattleMonHP
ld a, [hli]
or [hl]
jr nz, .asm_3dce4
+
ld a, $f0
ld [CryTracks], a
ld a, [BattleMonSpecies]
@@ -4371,10 +4377,11 @@ Function3dc5b: ; 3dc5b
jr .asm_3dcdf
.asm_3dcc0
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
or [hl]
jr nz, .asm_3dce4
+
ld de, SFX_KINESIS
call PlaySFX
call WaitSFX
@@ -4436,8 +4443,8 @@ Function3dd2f: ; 3dd2f
ld a, b
cp $1
ret nz
- ld de, EnemyMonHPLo
- ld hl, EnemyMonMaxHPHi
+ ld de, EnemyMonHP + 1
+ ld hl, EnemyMonMaxHP
ld a, [hBattleTurn]
and a
jr z, .asm_3dd4a
@@ -4945,7 +4952,7 @@ Function3e043: ; 3e043
ld h, b
ld l, c
dec hl
- ld hl, EnemyMonAtkDefDV
+ ld hl, EnemyMonDVs
ld de, TempMonDVs
ld a, [EnemySubStatus5]
bit 3, a
@@ -4990,7 +4997,7 @@ Function3e043: ; 3e043
call PrintLevel
.asm_3e0be
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
ld [$ffb5], a
ld a, [hld]
@@ -5008,7 +5015,7 @@ Function3e043: ; 3e043
ld a, $30
ld [hMultiplier], a
call Multiply
- ld hl, EnemyMonMaxHPHi
+ ld hl, EnemyMonMaxHP
ld a, [hli]
ld b, a
ld a, [hl]
@@ -5386,8 +5393,8 @@ Function3e358: ; 3e358
; 3e3ad
Function3e3ad: ; 3e3ad
- ld a, $1
- ld [$c710], a
+ ld a, 1
+ ld [wPlayerIsSwitching], a
ld a, [InLinkBattle]
and a
jr z, .asm_3e3c1
@@ -5412,7 +5419,7 @@ Function3e3ad: ; 3e3ad
jp z, .asm_3e3ca
cp $d
jp z, .asm_3e3ca
- cp $4
+ cp NUM_MOVES
jp c, .asm_3e3ca
cp $f
jr nz, .asm_3e3e9
@@ -5452,9 +5459,9 @@ BattleMonEntrance: ; 3e40b
call SetEnemyTurn
call Function3dc5b
- jr c, .asm_3e423
+ jr c, .ok
call Function3dce6
-.asm_3e423
+.ok
hlcoord 9, 7
lb bc, 5, 11
@@ -5506,8 +5513,8 @@ Function3e489: ; 3e489
call Function30b4
ld a, $3
ld [$cfa9], a
- ld hl, BattleMonSpd
- ld de, EnemyMonSpd
+ ld hl, BattleMonSpeed
+ ld de, EnemyMonSpeed
call Function3d8b3
ld a, $0
ld [$d266], a
@@ -5906,7 +5913,7 @@ MoveInfoBox: ; 3e6c8
ld [hl], "/"
callab UpdateMoveData
- ld a, [PlayerMoveAnimation]
+ ld a, [wPlayerMoveStruct + MOVE_ANIM]
ld b, a
hlcoord 2, 10
ld a, PREDEF_PRINT_MOVE_TYPE
@@ -5996,7 +6003,7 @@ Function3e786: ; 3e786
Function3e7c1: ; 3e7c1
- ld a, [$c711]
+ ld a, [wEnemyIsSwitching]
and a
ret nz
ld a, [InLinkBattle]
@@ -6013,16 +6020,17 @@ Function3e7c1: ; 3e7c1
jp z, .asm_3e8bd
cp $d
jp z, .asm_3e82c
- cp $4
+ cp NUM_MOVES
jp nc, Function3e8c1
ld [CurEnemyMoveNum], a
ld c, a
ld a, [EnemySubStatus1]
- bit 6, a
+ bit SUBSTATUS_ENCORED, a
jp nz, .asm_3e882
ld a, [EnemySubStatus3]
- and $13
+ and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_ROLLOUT | 1 << SUBSTATUS_BIDE
jp nz, .asm_3e882
+
ld hl, EnemySubStatus5
bit 4, [hl]
ld a, [LastEnemyMove]
@@ -6113,14 +6121,14 @@ Function3e7c1: ; 3e7c1
ld [$c733], a
.asm_3e894
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
cp EFFECT_FURY_CUTTER
jr z, .asm_3e89f
xor a
ld [EnemyFuryCutterCount], a
.asm_3e89f
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
cp EFFECT_RAGE
jr z, .asm_3e8af
ld hl, EnemySubStatus4
@@ -6129,13 +6137,13 @@ Function3e7c1: ; 3e7c1
ld [$c72c], a
.asm_3e8af
- ld a, [EnemyMoveEffect]
+ ld a, [wEnemyMoveStruct + MOVE_EFFECT]
cp EFFECT_PROTECT
ret z
cp EFFECT_ENDURE
ret z
xor a
- ld [$c681], a
+ ld [EnemyProtectCount], a
ret
.asm_3e8bd
@@ -6146,7 +6154,7 @@ Function3e7c1: ; 3e7c1
Function3e8c1: ; 3e8c1
xor a
ld [EnemyFuryCutterCount], a
- ld [$c681], a
+ ld [EnemyProtectCount], a
ld [$c72c], a
ld hl, EnemySubStatus4
res SUBSTATUS_RAGE, [hl]
@@ -6492,9 +6500,9 @@ LoadEnemyMon: ; 3e8eb
ld [hli], a
; Full HP...
- ld a, [EnemyMonMaxHPHi]
+ ld a, [EnemyMonMaxHP]
ld [hli], a
- ld a, [EnemyMonMaxHPLo]
+ ld a, [EnemyMonMaxHP + 1]
ld [hl], a
; ...unless it's a RoamMon
@@ -6510,13 +6518,13 @@ LoadEnemyMon: ; 3e8eb
jr z, .InitRoamHP
; Update from the struct if it has
ld a, [hl]
- ld [EnemyMonHPLo], a
+ ld [EnemyMonHP + 1], a
jr .Moves
.InitRoamHP
; HP only uses the lo byte in the RoamMon struct since
; Raikou/Entei/Suicune will have < 256 hp at level 40
- ld a, [EnemyMonHPLo]
+ ld a, [EnemyMonHP + 1]
ld [hl], a
jr .Moves
@@ -6527,9 +6535,9 @@ LoadEnemyMon: ; 3e8eb
ld a, [CurPartyMon]
call GetPartyLocation
ld a, [hld]
- ld [EnemyMonHPLo], a
+ ld [EnemyMonHP + 1], a
ld a, [hld]
- ld [EnemyMonHPHi], a
+ ld [EnemyMonHP], a
; Make sure everything knows which monster the opponent is using
ld a, [CurPartyMon]
@@ -6975,11 +6983,11 @@ Function3ecb7: ; 3ecb7
ld a, [$d265]
and a
ld a, c
- ld hl, BattleMonAtk
+ ld hl, BattleMonAttack
ld de, PlayerStats
ld bc, PlayerAtkLevel
jr z, .asm_3ecd2
- ld hl, EnemyMonAtk
+ ld hl, EnemyMonAttack
ld de, EnemyStats
ld bc, EnemyAtkLevel
@@ -7113,7 +7121,7 @@ BadgeStatBoosts: ; 3ed45
or c
ld b, a
- ld hl, BattleMonAtk
+ ld hl, BattleMonAttack
ld c, 4
.CheckBadge
ld a, b
@@ -7432,7 +7440,7 @@ Function3ee3b: ; 3ee3b
ld a, [$ffb5]
ld [StringBuffer2], a
ld a, [CurPartyMon]
- ld hl, PartyMon1Nickname
+ ld hl, PartyMonNicknames
call GetNick
ld hl, UnknownText_0x3f11b
call BattleTextBox
@@ -7960,14 +7968,14 @@ Function3f26d: ; 3f26d
jr nz, .asm_3f2ce
.asm_3f27c
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
or [hl]
ld hl, UnknownText_0x3f2d1
jr z, .asm_3f2ce
xor a
ld [hMultiplicand], a
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
ld [$c6ea], a
ld [$ffb5], a
@@ -7977,7 +7985,7 @@ Function3f26d: ; 3f26d
ld a, $19
ld [hMultiplier], a
call Multiply
- ld hl, EnemyMonMaxHPHi
+ ld hl, EnemyMonMaxHP
ld a, [hli]
ld b, [hl]
srl a
@@ -8052,7 +8060,7 @@ UnknownText_0x3f2fa: ; 3f2fa
Function3f2ff: ; 3f2ff
push de
push bc
- ld hl, EnemyMonHPLo
+ ld hl, EnemyMonHP + 1
ld de, $c6eb
ld b, [hl]
dec hl
@@ -8067,7 +8075,7 @@ Function3f2ff: ; 3f2ff
ld a, $19
ld [hMultiplier], a
call Multiply
- ld hl, EnemyMonMaxHPHi
+ ld hl, EnemyMonMaxHP
ld a, [hli]
ld b, [hl]
srl a
@@ -8300,8 +8308,8 @@ Function3f447: ; 3f447
push af
ld a, [BattleMonSpecies]
ld [CurPartySpecies], a
- ld hl, BattleMonAtkDefDV
- ld a, $2d
+ ld hl, BattleMonDVs
+ ld a, PREDEF_GET_UNOWN_LETTER
call Predef
ld de, $9310
ld a, $3d
@@ -8339,8 +8347,8 @@ Function3f486: ; 3f486
ld [CurSpecies], a
ld [CurPartySpecies], a
call GetBaseData
- ld hl, EnemyMonAtkDefDV
- ld a, $2d
+ ld hl, EnemyMonDVs
+ ld a, PREDEF_GET_UNOWN_LETTER
call Predef
ld de, VTiles2
ld a, $3e
@@ -8537,8 +8545,8 @@ Function3f607: ; 3f607
ld de, $c739
ld bc, NUM_MOVES
call CopyBytes
- ld hl, EnemyMonAtkDefDV
- ld a, $2d
+ ld hl, EnemyMonDVs
+ ld a, PREDEF_GET_UNOWN_LETTER
call Predef
ld a, [CurPartySpecies]
cp UNOWN
@@ -8975,7 +8983,7 @@ Function3f998: ; 3f998
and $f
jr z, .asm_3f9af
call GetRoamMonHP
- ld a, [EnemyMonHPLo]
+ ld a, [EnemyMonHP + 1]
ld [hl], a
jr .asm_3f9ca
@@ -9003,74 +9011,74 @@ Function3f998: ; 3f998
GetRoamMonMapGroup: ; 3f9d1
ld a, [TempEnemyMonSpecies]
ld b, a
- ld a, [RoamMon1Species]
+ ld a, [wRoamMon1Species]
cp b
- ld hl, RoamMon1MapGroup
+ ld hl, wRoamMon1MapGroup
ret z
- ld a, [RoamMon2Species]
+ ld a, [wRoamMon2Species]
cp b
- ld hl, RoamMon2MapGroup
+ ld hl, wRoamMon2MapGroup
ret z
- ld hl, RoamMon3MapGroup
+ ld hl, wRoamMon3MapGroup
ret
; 3f9e9
GetRoamMonMapNumber: ; 3f9e9
ld a, [TempEnemyMonSpecies]
ld b, a
- ld a, [RoamMon1Species]
+ ld a, [wRoamMon1Species]
cp b
- ld hl, RoamMon1MapNumber
+ ld hl, wRoamMon1MapNumber
ret z
- ld a, [RoamMon2Species]
+ ld a, [wRoamMon2Species]
cp b
- ld hl, RoamMon2MapNumber
+ ld hl, wRoamMon2MapNumber
ret z
- ld hl, RoamMon3MapNumber
+ ld hl, wRoamMon3MapNumber
ret
; 3fa01
GetRoamMonHP: ; 3fa01
-; output: hl = RoamMonHP
+; output: hl = wRoamMonHP
ld a, [TempEnemyMonSpecies]
ld b, a
- ld a, [RoamMon1Species]
+ ld a, [wRoamMon1Species]
cp b
- ld hl, RoamMon1HP
+ ld hl, wRoamMon1HP
ret z
- ld a, [RoamMon2Species]
+ ld a, [wRoamMon2Species]
cp b
- ld hl, RoamMon2HP
+ ld hl, wRoamMon2HP
ret z
- ld hl, RoamMon3HP
+ ld hl, wRoamMon3HP
ret
; 3fa19
GetRoamMonDVs: ; 3fa19
-; output: hl = RoamMonDVs
+; output: hl = wRoamMonDVs
ld a, [TempEnemyMonSpecies]
ld b, a
- ld a, [RoamMon1Species]
+ ld a, [wRoamMon1Species]
cp b
- ld hl, RoamMon1DVs
+ ld hl, wRoamMon1DVs
ret z
- ld a, [RoamMon2Species]
+ ld a, [wRoamMon2Species]
cp b
- ld hl, RoamMon2DVs
+ ld hl, wRoamMon2DVs
ret z
- ld hl, RoamMon3DVs
+ ld hl, wRoamMon3DVs
ret
; 3fa31
GetRoamMonSpecies: ; 3fa31
ld a, [TempEnemyMonSpecies]
- ld hl, RoamMon1Species
+ ld hl, wRoamMon1Species
cp [hl]
ret z
- ld hl, RoamMon2Species
+ ld hl, wRoamMon2Species
cp [hl]
ret z
- ld hl, RoamMon3Species
+ ld hl, wRoamMon3Species
ret
; 3fa42
diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm
index b7f41c04f..9e1b0d8e5 100644
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -2395,12 +2395,12 @@ BattleCommand09: ; 34d32
call .StatModifiers
- ld a, [PlayerMoveAccuracy]
+ ld a, [wPlayerMoveStruct + MOVE_ACC]
ld b, a
ld a, [hBattleTurn]
and a
jr z, .BrightPowder
- ld a, [EnemyMoveAccuracy]
+ ld a, [wEnemyMoveStruct + MOVE_ACC]
ld b, a
.BrightPowder
@@ -2592,7 +2592,7 @@ BattleCommand09: ; 34d32
ld a, [hBattleTurn]
and a
- ld hl, PlayerMoveAccuracy
+ ld hl, wPlayerMoveStruct + MOVE_ACC
ld a, [PlayerAccLevel]
ld b, a
ld a, [EnemyEvaLevel]
@@ -2600,7 +2600,7 @@ BattleCommand09: ; 34d32
jr z, .asm_34e60
- ld hl, EnemyMoveAccuracy
+ ld hl, wEnemyMoveStruct + MOVE_ACC
ld a, [EnemyAccLevel]
ld b, a
ld a, [PlayerEvaLevel]
@@ -2695,11 +2695,11 @@ BattleCommand90: ; 34ecc
jr nz, .failed
push hl
- ld hl, PlayerMoveEffectChance
+ ld hl, wPlayerMoveStruct + MOVE_CHANCE
ld a, [hBattleTurn]
and a
jr z, .asm_34ee1
- ld hl, EnemyMoveEffectChance
+ ld hl, wEnemyMoveStruct + MOVE_CHANCE
.asm_34ee1
call BattleRandom
@@ -3224,7 +3224,7 @@ BattleCommand11: ; 351c0
; Faint the user if it fainted an opponent using Destiny Bond.
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hBattleTurn]
and a
jr z, .asm_351cb
@@ -3438,7 +3438,7 @@ PlayerAttackDamage: ; 352e2
call ResetDamage
- ld hl, PlayerMovePower
+ ld hl, wPlayerMoveStruct + MOVE_POWER
ld a, [hli]
and a
ld d, a
@@ -3450,7 +3450,7 @@ PlayerAttackDamage: ; 352e2
; Physical
- ld hl, EnemyMonDef
+ ld hl, EnemyMonDefense
ld a, [hli]
ld b, a
ld c, [hl]
@@ -3463,7 +3463,7 @@ PlayerAttackDamage: ; 352e2
rl b
.physicalcrit
- ld hl, BattleMonAtk
+ ld hl, BattleMonAttack
call GetDamageStatsCritical
jr c, .thickclub
@@ -3586,7 +3586,7 @@ GetDamageStats: ; 3537e
ld a, [hBattleTurn]
and a
jr nz, .enemy
- ld a, [PlayerMoveType]
+ ld a, [wPlayerMoveStruct + MOVE_TYPE]
cp SPECIAL
; special
ld a, [PlayerSAtkLevel]
@@ -3600,7 +3600,7 @@ GetDamageStats: ; 3537e
jr .end
.enemy
- ld a, [EnemyMoveType]
+ ld a, [wEnemyMoveStruct + MOVE_TYPE]
cp SPECIAL
; special
ld a, [EnemySAtkLevel]
@@ -3699,8 +3699,8 @@ EnemyAttackDamage: ; 353f6
call ResetDamage
; No damage dealt with 0 power.
- ld hl, EnemyMovePower
- ld a, [hli] ; hl = EnemyMoveType
+ ld hl, wEnemyMoveStruct + MOVE_POWER
+ ld a, [hli] ; hl = wEnemyMoveStruct + MOVE_TYPE
ld d, a
and a
ret z
@@ -3711,7 +3711,7 @@ EnemyAttackDamage: ; 353f6
; Physical
- ld hl, BattleMonDef
+ ld hl, BattleMonDefense
ld a, [hli]
ld b, a
ld c, [hl]
@@ -3724,7 +3724,7 @@ EnemyAttackDamage: ; 353f6
rl b
.physicalcrit
- ld hl, EnemyMonAtk
+ ld hl, EnemyMonAttack
call GetDamageStatsCritical
jr c, .thickclub
@@ -3804,7 +3804,7 @@ BattleCommanda1: ; 35461
ld [DefaultFlypoint], a
.asm_3548d
ld a, [DefaultFlypoint]
- ld hl, PartyMon1Nickname
+ ld hl, PartyMonNicknames
call GetNick
ld a, $22
call Function355bd
@@ -3847,7 +3847,7 @@ BattleCommanda1: ; 35461
ld a, [hl]
ld e, a
pop bc
- ld a, [PlayerMovePower]
+ ld a, [wPlayerMoveStruct + MOVE_POWER]
ld d, a
ret
@@ -3893,7 +3893,7 @@ BattleCommanda1: ; 35461
.asm_35532
ld a, [DefaultFlypoint]
- ld hl, OTPartyMon1Nickname
+ ld hl, OTPartyMonNicknames
ld bc, $000b
call AddNTimes
ld de, StringBuffer1
@@ -3952,7 +3952,7 @@ BattleCommanda1: ; 35461
ld a, [hl]
ld e, a
pop bc
- ld a, [EnemyMovePower]
+ ld a, [wEnemyMoveStruct + MOVE_POWER]
ld d, a
ret
; 355b0
@@ -4004,12 +4004,12 @@ Function355dd: ; 355dd
call ResetDamage
ld a, [hBattleTurn]
and a
- ld hl, BattleMonDef
+ ld hl, BattleMonDefense
ld de, PlayerScreens
ld a, [BattleMonLevel]
jr z, .asm_355f7
- ld hl, EnemyMonDef
+ ld hl, EnemyMonDefense
ld de, EnemyScreens
ld a, [EnemyMonLevel]
.asm_355f7
@@ -4345,7 +4345,7 @@ BattleCommand3f: ; 35726
ld a, $0
jr .asm_3578c ; 35769 $21
.asm_3576b
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hBattleTurn]
and a
jr z, .asm_35776 ; 35771 $3
@@ -4376,7 +4376,7 @@ BattleCommand3f: ; 35726
ld a, [hBattleTurn]
and a
jr z, .asm_3579d ; 35798 $3
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
.asm_3579d
xor a
ld [$ffb3], a
@@ -4433,14 +4433,14 @@ BattleCommand3f: ; 35726
ld a, [hl]
jr nz, .asm_357f8
- ld hl, PlayerMovePower
+ ld hl, wPlayerMoveStruct + MOVE_POWER
ld [hl], a
push hl
call PlayerAttackDamage
jr .asm_35800
.asm_357f8
- ld hl, EnemyMovePower
+ ld hl, wEnemyMoveStruct + MOVE_POWER
ld [hl], a
push hl
call EnemyAttackDamage
@@ -4600,7 +4600,7 @@ BattleCommand41: ; 35864
ld a, b
ld [CurPlayerMove], a
dec a
- ld de, PlayerMoveStruct
+ ld de, wPlayerMoveStruct
call GetMoveData
jr .asm_3591a
.asm_358ef
@@ -4629,7 +4629,7 @@ BattleCommand41: ; 35864
ld a, b
ld [CurEnemyMove], a
dec a
- ld de, EnemyMoveStruct
+ ld de, wEnemyMoveStruct
call GetMoveData
.asm_3591a
call AnimateCurrentMove
@@ -4654,14 +4654,14 @@ BattleCommand42: ; 35926
jp nz, Function359cd
call AnimateCurrentMove
ld hl, $c63f
- ld de, EnemyMonMaxHPLo
+ ld de, EnemyMonMaxHP + 1
call .asm_3597d
ld a, $1
ld [$d10a], a
hlcoord 10, 9
ld a, $b
call Predef
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hli]
ld [$d1ed], a
ld a, [hli]
@@ -5230,7 +5230,7 @@ BattleCommand4a: ; 35c0f
BattleCommand4b: ; 35c94
; falseswipe
- ld hl, EnemyMonHPHi
+ ld hl, EnemyMonHP
ld a, [hBattleTurn]
and a
jr z, .asm_35c9f ; 35c9a $3
@@ -5362,7 +5362,7 @@ Function35d1c: ; 35d1c
ld a, [EnemyMonHP]
ld [$d1ec + 1], a
sbc b
- ld [EnemyMonHPHi], a
+ ld [EnemyMonHP], a
jr nc, .asm_35d59
ld a, [$d1ed]
@@ -5837,8 +5837,8 @@ Function36011: ; 36011
ld a, [hBattleTurn]
and a
jr z, .asm_36037 ; 0x3602f $6
- ld hl, EnemyMonHPHi
- ld de, EnemyMonMaxHPHi
+ ld hl, EnemyMonHP
+ ld de, EnemyMonMaxHP
.asm_36037
ld bc, $d1ed
ld a, [hli]
@@ -6396,12 +6396,12 @@ BattleCommand1d: ; 362e3
jr nc, .Hit
push hl
- ld hl, EnemyMonAtk + 1
+ ld hl, EnemyMonAttack + 1
ld de, EnemyStats
ld a, [hBattleTurn]
and a
jr z, .asm_36366
- ld hl, BattleMonAtk + 1
+ ld hl, BattleMonAttack + 1
ld de, PlayerStats
.asm_36366
call Function3641a
@@ -6840,7 +6840,7 @@ BattleCommanda7: ; 365c3
Function365d7: ; 365d7
ld hl, PlayerAtkLevel
ld de, PlayerStats
- ld bc, BattleMonAtk
+ ld bc, BattleMonAttack
ld a, $5
call Function3661d
@@ -6863,7 +6863,7 @@ Function365d7: ; 365d7
Function365fd: ; 365fd
ld hl, EnemyAtkLevel
ld de, EnemyStats
- ld bc, EnemyMonAtk
+ ld bc, EnemyMonAttack
ld a, $5
call Function3661d
@@ -7040,8 +7040,8 @@ BattleCommand22: ; 366e5
ld [de], a
inc de
ld [de], a
- ld [PlayerMoveEffect], a
- ld [EnemyMoveEffect], a
+ ld [wPlayerMoveStruct + MOVE_EFFECT], a
+ ld [wEnemyMoveStruct + MOVE_EFFECT], a
call BattleRandom
and $1
inc a
@@ -7257,7 +7257,7 @@ BattleCommand23: ; 3680f
inc a
ld [$d232], a
call Function36804
- ld a, [PlayerMoveAnimation]
+ ld a, [wPlayerMoveStruct + MOVE_ANIM]
jp .asm_36975
.asm_36869
call Function349f4
@@ -7348,7 +7348,7 @@ BattleCommand23: ; 3680f
inc a
ld [$d232], a
call Function36804
- ld a, [EnemyMoveAnimation]
+ ld a, [wEnemyMoveStruct + MOVE_ANIM]
jr .asm_36975
.asm_36908
@@ -7687,7 +7687,7 @@ BattleCommand26: ; 36af3
jr z, .asm_36b2f ; 36afb $32
ld hl, EnemyMonLevel
ld de, BattleMonLevel
- ld bc, PlayerMoveAccuracy
+ ld bc, wPlayerMoveStruct + MOVE_ACC
ld a, [hBattleTurn]
and a
jr z, .asm_36b12 ; 36b09 $7
@@ -7695,7 +7695,7 @@ BattleCommand26: ; 36af3
ld h, d
ld l, e
pop de
- ld bc, EnemyMoveAccuracy
+ ld bc, wEnemyMoveStruct + MOVE_ACC
.asm_36b12
ld a, [de]
sub [hl]
@@ -7990,7 +7990,7 @@ BattleCommand27: ; 36cb2
ld a, [hBattleTurn]
and a
jr z, .asm_36cbd ; 36cb8 $3
- ld hl, EnemyMonMaxHPHi
+ ld hl, EnemyMonMaxHP
.asm_36cbd
ld a, BATTLE_VARS_MOVE_ANIM
call GetBattleVar
@@ -9951,20 +9951,25 @@ CheckAnyOtherAliveMons: ; 37b01
BattleCommand68: ; 37b1d
- ld hl, $c711
+; pursuit
+; Double damage if the opponent is switching.
+
+ ld hl, wEnemyIsSwitching
ld a, [hBattleTurn]
and a
- jr z, .asm_37b28 ; 37b23 $3
- ld hl, $c710
-.asm_37b28
+ jr z, .ok
+ ld hl, wPlayerIsSwitching
+.ok
ld a, [hl]
and a
ret z
+
ld hl, CurDamage + 1
sla [hl]
dec hl
rl [hl]
ret nc
+
ld a, $ff
ld [hli], a
ld [hl], a