summaryrefslogtreecommitdiff
path: root/battle
diff options
context:
space:
mode:
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