diff options
Diffstat (limited to 'battle')
-rw-r--r-- | battle/ai/scoring.asm | 261 | ||||
-rw-r--r-- | battle/core.asm | 296 | ||||
-rw-r--r-- | battle/effect_commands.asm | 103 |
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 |