From e6271ca450ea051de57a666868061f94a0a679ed Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 14 Jun 2014 15:03:23 -0700 Subject: [PATCH] Move trainer item AI into battle/ai/items.asm. --- battle/ai/items.asm | 848 +++++++++++++++++++++++++++++++++++++++++++ main.asm | 850 +------------------------------------------- 2 files changed, 849 insertions(+), 849 deletions(-) create mode 100644 battle/ai/items.asm diff --git a/battle/ai/items.asm b/battle/ai/items.asm new file mode 100644 index 000000000..dcdf39feb --- /dev/null +++ b/battle/ai/items.asm @@ -0,0 +1,848 @@ +Function38000: ; 38000 + and a + ld a, [IsInBattle] + dec a + ret z + ld a, [InLinkBattle] + and a + ret nz + callba Function3e8d1 + ret nz + ld a, [PlayerSubStatus5] + bit SUBSTATUS_CANT_RUN, a + jr nz, Function38041 + ld a, [$c731] + and a + jr nz, Function38041 + ld hl, TrainerClassAttributes + 5 + ld a, [$cfc0] + and a + jr nz, .asm_38032 + ld a, [TrainerClass] + dec a + ld bc, 7 + call AddNTimes + +.asm_38032 + bit 0, [hl] + jp nz, Function38045 + bit 1, [hl] + jp nz, Function38083 + bit 2, [hl] + jp nz, Function380c1 + ; fallthrough +; 38041 + +Function38041: ; 38041 + call Function38105 + ret +; 38045 + +Function38045: ; 38045 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, Function38041 + cp $10 + jr nz, .asm_38061 + call Random + cp $80 + jr c, .asm_38077 + jp Function38041 + +.asm_38061 + cp $20 + jr nz, .asm_3806f + call Random + cp $c8 + jr c, .asm_38077 + jp Function38041 + +.asm_3806f + call Random + cp $a + jp c, Function38041 + +.asm_38077 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp Function3844b +; 38083 + +Function38083: ; 38083 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, Function38041 + cp $10 + jr nz, .asm_3809f + call Random + cp $14 + jr c, .asm_380b5 + jp Function38041 + +.asm_3809f + cp $20 + jr nz, .asm_380ad + call Random + cp $1e + jr c, .asm_380b5 + jp Function38041 + +.asm_380ad + call Random + cp $c8 + jp c, Function38041 + +.asm_380b5 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp Function3844b +; 380c1 + +Function380c1: ; 380c1 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, Function38041 + cp $10 + jr nz, .asm_380dd + call Random + cp $32 + jr c, .asm_380f3 + jp Function38041 + +.asm_380dd + cp $20 + jr nz, .asm_380eb + call Random + cp $80 + jr c, .asm_380f3 + jp Function38041 + +.asm_380eb + call Random + cp $32 + jp c, Function38041 + +.asm_380f3 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp Function3844b +; 380ff + + +Function380ff: ; 380ff + ld a, [EnemySubStatus5] + bit SUBSTATUS_CANT_RUN, a + ret +; 38105 + + +Function38105: ; 38105 + ld a, [$cfc0] + and a + ret nz + ld a, [$c650] + ld b, a + ld a, [$c651] + or b + ret z + call Function38170 + ret nc + ld a, [TrainerClass] + dec a + ld hl, TrainerClassAttributes + 5 + ld bc, 7 + call AddNTimes + ld b, h + ld c, l + ld hl, Unknown_38196 + ld de, $c650 +.asm_3812c + ld a, [hl] + and a + inc a + ret z + ld a, [de] + cp [hl] + jr z, .asm_3813f + inc de + ld a, [de] + cp [hl] + jr z, .asm_3813f + dec de + inc hl + inc hl + inc hl + jr .asm_3812c + +.asm_3813f + inc hl + push hl + push de + ld de, .asm_3814a + push de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.asm_3814a + pop de + pop hl + inc hl + inc hl + jr c, .asm_3812c + xor a + ld [de], a + inc a + ld [$c70f], a + ld hl, EnemySubStatus3 ; $c66f + res SUBSTATUS_BIDE, [hl] + xor a + ld [EnemyFuryCutterCount], a ; $c680 + ld [$c681], a + ld [$c72c], a + ld hl, EnemySubStatus4 ; $c670 + res SUBSTATUS_RAGE, [hl] + xor a + ld [LastPlayerCounterMove], a ; $c6f9 + scf + ret + + +Function38170: ; 38170 + ld a, [OTPartyCount] + ld d, a + ld e, 0 + ld hl, OTPartyMon1Level + ld bc, OTPartyMon2 - OTPartyMon1 +.asm_3817c + ld a, [hl] + cp e + jr c, .asm_38181 + ld e, a +.asm_38181 + add hl, bc + dec d + jr nz, .asm_3817c + + ld a, [CurOTMon] + ld hl, OTPartyMon1Level + call AddNTimes + ld a, [hl] + cp e + jr nc, .asm_38194 + and a + ret + +.asm_38194 + scf + ret +; 38196 + +Unknown_38196: ; 39196 + dbw FULL_RESTORE, Function38208 + dbw MAX_POTION, Function38220 + dbw HYPER_POTION, Function38284 + dbw SUPER_POTION, Function38292 + dbw POTION, Function382a0 + dbw X_ACCURACY, Function382f9 + dbw FULL_HEAL, Function381be + dbw GUARD_SPEC, Function38305 + dbw DIRE_HIT, Function38311 + dbw X_ATTACK, Function3831d + dbw X_DEFEND, Function38329 + dbw X_SPEED, Function38335 + dbw X_SPECIAL, Function38341 + db $ff +; 381be + +Function381be: ; 381be + call Function381ca + jp c, Function38383 + call Function383a3 + jp Function38385 +; 381ca + +; known jump sources: 381be (e:41be), 38214 (e:4214) +Function381ca: ; 381ca (e:41ca) + ld a, [EnemyMonStatus] ; $d214 + and a + jp z, Function38383 + + ld a, [bc] + bit 6, a + jr nz, .asm_381e7 + ld a, [bc] + bit 4, a + jp nz, Function38385 + call Random + cp $32 + jp c, Function38385 + jp Function38383 + +.asm_381e7 + ld a, [EnemySubStatus5] + bit SUBSTATUS_TOXIC, a + jr z, .asm_381fd + ld a, [$c67c] + cp $4 + jr c, .asm_381fd + call Random + cp $80 + jp c, Function38385 +.asm_381fd + ld a, [EnemyMonStatus] + and 1 << FRZ | SLP + jp z, Function38383 + jp Function38385 +; 38208 + +Function38208: ; 38208 + call Function3822c + jp nc, Function3821a + ld a, [bc] + bit 6, a + jp z, Function38383 + call Function381ca + jp c, Function38383 + +; known jump sources: 3820b (e:420b) +Function3821a: ; 3821a (e:421a) + call Function383b5 + jp Function38385 +; 38220 + +Function38220: ; 38220 + call Function3822c + jp c, Function38383 + call Function383ae + jp Function38385 + +; known jump sources: 38208 (e:4208), 38220 (e:4220), 38284 (e:4284) +Function3822c: ; 3822c (e:422c) + ld a, [bc] + bit 6, a + jr nz, Function38267 + callab AICheckEnemyHalfHP + jp c, Function38383 + ld a, [bc] + bit 5, a + jp nz, Function38254 + callab AICheckEnemyQuarterHP + jp nc, Function38281 + call Random + cp $80 + jp c, Function38281 + jp Function38383 + +Function38254: ; 38254 (e:4254) + callab AICheckEnemyQuarterHP + jp c, Function38383 + call Random + cp $32 + jp c, Function38383 + jr Function38281 + +Function38267: ; 38267 (e:4267) + callab AICheckEnemyHalfHP + jp c, Function38383 + callab AICheckEnemyQuarterHP + jp nc, Function38281 + call Random + cp $32 + jp nc, Function38383 + +Function38281: ; 38281 (e:4281) + jp Function38385 +; 38284 + +Function38284: ; 38284 + call Function3822c + jp c, Function38383 + ld b, 200 + call Function383f4 + jp Function38385 +; 38292 (e:4292) + +Function38292: ; 38292 + call Function3822c + jp c, Function38383 + +Function38298: ; 38298 + ld b, 50 + call Function383ee + jp Function38385 +; 382a0 + +Function382a0: ; 382a0 + call Function3822c + jp c, Function38383 + ld b, 20 + call Function383e8 + jp Function38385 +; 382ae + +Function382ae: ; 382ae + callab AICheckEnemyMaxHP + jr c, .asm_382e4 + push bc + ld de, EnemyMonMaxHP + 1 + ld hl, EnemyMonHP + 1 + ld a, [de] + sub [hl] + jr z, .asm_382e7 + dec hl + dec de + ld c, a + sbc [hl] + and a + jr nz, .asm_382e7 + ld a, c + cp b + jp c, .asm_382d5 + callab AICheckEnemyQuarterHP + jr c, .asm_382e7 + +.asm_382d5 + pop bc + ld a, [bc] + bit 5, a + jp z, Function38385 + call Random + cp $80 + jp c, Function38385 + +.asm_382e4 + jp Function38383 + +.asm_382e7 + pop bc + ld a, [bc] + bit 5, a + jp z, Function38383 + call Random + cp $64 + jp c, Function38385 + jp Function38383 +; 382f9 + +Function382f9: ; 382f9 + call Function3834d + jp c, Function38383 + call Function384f7 + jp Function38385 +; 38305 + +Function38305: ; 38305 + call Function3834d + jp c, Function38383 + call Function38504 + jp Function38385 +; 38311 + +Function38311: ; 38311 + call Function3834d + jp c, Function38383 + call Function38511 + jp Function38385 +; 3831d (e:431d) + +Function3831d: ; 3831d + call Function3834d + jp c, Function38383 + call Function38541 + jp Function38385 +; 38329 + +Function38329: ; 38329 + call Function3834d + jp c, Function38383 + call Function38547 + jp Function38385 +; 38335 + +Function38335: ; 38335 + call Function3834d + jp c, Function38383 + call Function3854d + jp Function38385 +; 38341 + +Function38341: ; 38341 + call Function3834d + jp c, Function38383 + call Function38553 + jp Function38385 +; 3834d + +; known jump sources: 38311 (e:4311) +Function3834d: ; 3834d (e:434d) + ld a, [EnemyTurnsTaken] ; $c6dc + and a + jr nz, .asm_38372 + ld a, [bc] + bit 4, a + jp nz, Function38385 + call Random + cp $80 + jp c, Function38383 + ld a, [bc] + bit 6, a + jp nz, Function38385 + call Random + cp $80 + jp c, Function38383 + jp Function38385 +.asm_38372 + ld a, [bc] + bit 4, a + jp z, Function38383 + call Random + cp $32 + jp nc, Function38383 + jp Function38385 + +Function38383: ; 38383 (e:4383) + scf + ret + +Function38385: ; 38385 (e:4385) + and a + ret + + +Function38387: ; 38387 + call UpdateEnemyMonInParty + callba Function3e036 + ld a, $1 + ld [hBGMapMode], a + ld hl, $c6e6 + dec [hl] + scf + ret +; 3839a + +Function3839a: ; 3839a + push de + ld de, SFX_FULL_HEAL + call PlaySFX + pop de + ret +; 383a3 + + +; known jump sources: 381c4 (e:41c4) +Function383a3: ; 383a3 (e:43a3) + call Function3839a + call Function384e0 + ld a, FULL_HEAL + jp Function38568 + +; known jump sources: 38226 (e:4226) +Function383ae: ; 383ae (e:43ae) + ld a, $f + ld [$d1f1], a + jr asm_383c6 + +; known jump sources: 3821a (e:421a) +Function383b5: ; 383b5 (e:43b5) + call Function384e0 + ld a, $e + ld [$d1f1], a + ld hl, EnemySubStatus3 ; $c66f + res SUBSTATUS_CONFUSED, [hl] + xor a + ld [EnemyConfuseCount], a ; $c67b +asm_383c6: ; 383c6 (e:43c6) + ld de, $d1ec + ld hl, EnemyMonHP + 1 ; $d217 + ld a, [hld] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + ld hl, EnemyMonMaxHP + 1 ; $d219 + ld a, [hld] + ld [de], a + inc de + ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) + ld [EnemyMonHP + 1], a ; $d217 + ld a, [hl] + ld [de], a + ld [Buffer2], a ; $d1eb (aliases: MovementType) + ld [EnemyMonHP], a ; $d216 (aliases: EnemyMonHP) + jr asm_38436 +; 383e8 (e:43e8) + +Function383e8: ; 383e8 + ld a, POTION + ld b, 20 + jr Function383f8 + +Function383ee: ; 383ee + ld a, SUPER_POTION + ld b, 50 + jr Function383f8 + +; known jump sources: 3828c (e:428c) +Function383f4: ; 383f4 (e:43f4) + ld a, HYPER_POTION + ld b, 200 + +Function383f8: ; 383f8 + ld [$d1f1], a + ld hl, EnemyMonHP + 1 ; $d217 + ld a, [hl] + ld [$d1ec], a + add b + ld [hld], a + ld [$d1ee], a + ld a, [hl] + ld [$d1ed], a + ld [$d1ef], a + jr nc, .asm_38415 + inc a + ld [hl], a + ld [$d1ef], a +.asm_38415 + inc hl + ld a, [hld] + ld b, a + ld de, EnemyMonMaxHP + 1 ; $d219 + ld a, [de] + dec de + ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) + sub b + ld a, [hli] + ld b, a + ld a, [de] + ld [Buffer2], a ; $d1eb (aliases: MovementType) + sbc b + jr nc, asm_38436 + inc de + ld a, [de] + dec de + ld [hld], a + ld [$d1ee], a + ld a, [de] + ld [hl], a + ld [$d1ef], a +asm_38436: ; 38436 (e:4436) + call Function38571 + hlcoord 2, 2 + xor a + ld [$d10a], a + call Function3839a + ld a, $b + call Predef + jp Function38387 + + +Function3844b: ; 3844b + ld a, [OTPartyCount] + ld c, a + ld hl, OTPartyMon1HP + ld d, 0 +.asm_38454 + ld a, [hli] + ld b, a + ld a, [hld] + or b + jr z, .asm_3845b + inc d + +.asm_3845b + push bc + ld bc, PartyMon2 - PartyMon1 + add hl, bc + pop bc + dec c + jr nz, .asm_38454 + ld a, d + cp $2 + jp nc, Function3846c + and a + ret +; 3846c + +Function3846c: ; 3846c + ld a, $1 + ld [$c711], a + ld [$c70f], a + ld hl, EnemySubStatus4 + res SUBSTATUS_RAGE, [hl] + xor a + ld [hBattleTurn], a + callab Function3dc5b + push af + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + ld bc, PartyMon2 - PartyMon1 + call AddNTimes + ld d, h + ld e, l + ld hl, EnemyMonStatus + ld bc, $0004 + call CopyBytes + pop af + jr c, .asm_384a3 + ld hl, UnknownText_0x384d0 + call PrintText + +.asm_384a3 + ld a, $1 + ld [$d264], a + callab NewEnemyMonStatus + callab ResetEnemyStatLevels + ld hl, PlayerSubStatus1 + res SUBSTATUS_IN_LOVE, [hl] + callba Function3d4e1 + callba Function3d57a + xor a + ld [$d264], a + ld a, [InLinkBattle] + and a + ret nz + scf + ret +; 384d0 + +UnknownText_0x384d0: ; 384d0 + text_jump UnknownText_0x1bcf9c + db "@" +; 384d5 + +Function384d5: ; 384d5 + call Function3839a + call Function384e0 + ld a, X_SPEED + jp Function38568 +; 384e0 + +Function384e0: ; 384e0 + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + ld bc, PartyMon2 - PartyMon1 + call AddNTimes + xor a + ld [hl], a + ld [EnemyMonStatus], a + ld hl, EnemySubStatus5 + res SUBSTATUS_TOXIC, [hl] + ret +; 384f7 + +Function384f7: ; 384f7 + call Function3839a + ld hl, EnemySubStatus4 + set SUBSTATUS_UNLEASH, [hl] + ld a, X_ACCURACY + jp Function38568 +; 38504 + +Function38504: ; 38504 + call Function3839a + ld hl, EnemySubStatus4 + set SUBSTATUS_MIST, [hl] + ld a, GUARD_SPEC + jp Function38568 +; 38511 + +Function38511: ; 38511 + call Function3839a + ld hl, EnemySubStatus4 + set SUBSTATUS_FOCUS_ENERGY, [hl] + ld a, DIRE_HIT + jp Function38568 +; 3851e + +Function3851e: ; 3851e + ld [hMultiplier], a + ld hl, EnemyMonMaxHP + ld a, [hli] + ld [hProduct], a + ld a, [hl] + ld [hMultiplicand], a + ld b, $2 + call Divide + ld a, [$ffb6] + ld c, a + ld a, [$ffb5] + ld b, a + ld hl, EnemyMonHP + 1 + ld a, [hld] + ld e, a + ld a, [hl] + ld d, a + ld a, d + sub b + ret nz + ld a, e + sub c + ret +; 38541 + +Function38541: ; 38541 + ld b, ATTACK + ld a, X_ATTACK + jr Function38557 +; 38547 + +Function38547: ; 38547 + ld b, DEFENSE + ld a, X_DEFEND + jr Function38557 +; 3854d + +Function3854d: ; 3854d + ld b, SPEED + ld a, X_SPEED + jr Function38557 +; 38553 + +Function38553: ; 38553 + ld b, SP_ATTACK + ld a, X_SPECIAL + +Function38557 + ld [$d1f1], a + push bc + call Function38571 + pop bc + callba Function361ef + jp Function38387 +; 38568 + + +Function38568: ; 38568 + ld [$d1f1], a + call Function38571 + jp Function38387 +; 38571 + +Function38571: ; 38571 + ld a, [$d1f1] + ld [$d265], a + call GetItemName + ld hl, StringBuffer1 + ld de, $d050 + ld bc, $000d + call CopyBytes + ld hl, UnknownText_0x3858c + jp PrintText +; 3858c + +UnknownText_0x3858c: ; 3858c + text_jump UnknownText_0x1bcfaf + db "@" +; 38591 diff --git a/main.asm b/main.asm index 6596d302c..94796849c 100644 --- a/main.asm +++ b/main.asm @@ -43530,855 +43530,7 @@ INCLUDE "battle/effect_commands.asm" SECTION "bankE", ROMX, BANK[$E] -Function38000: ; 38000 - and a - ld a, [IsInBattle] - dec a - ret z - ld a, [InLinkBattle] - and a - ret nz - callba Function3e8d1 - ret nz - ld a, [PlayerSubStatus5] - bit SUBSTATUS_CANT_RUN, a - jr nz, Function38041 - ld a, [$c731] - and a - jr nz, Function38041 - ld hl, TrainerClassAttributes + 5 - ld a, [$cfc0] - and a - jr nz, .asm_38032 - ld a, [TrainerClass] - dec a - ld bc, 7 - call AddNTimes - -.asm_38032 - bit 0, [hl] - jp nz, Function38045 - bit 1, [hl] - jp nz, Function38083 - bit 2, [hl] - jp nz, Function380c1 - ; fallthrough -; 38041 - -Function38041: ; 38041 - call Function38105 - ret -; 38045 - -Function38045: ; 38045 - callab Function34941 - ld a, [$c717] - and $f0 - jp z, Function38041 - cp $10 - jr nz, .asm_38061 - call Random - cp $80 - jr c, .asm_38077 - jp Function38041 - -.asm_38061 - cp $20 - jr nz, .asm_3806f - call Random - cp $c8 - jr c, .asm_38077 - jp Function38041 - -.asm_3806f - call Random - cp $a - jp c, Function38041 - -.asm_38077 - ld a, [$c717] - and $f - inc a - ld [$c718], a - jp Function3844b -; 38083 - -Function38083: ; 38083 - callab Function34941 - ld a, [$c717] - and $f0 - jp z, Function38041 - cp $10 - jr nz, .asm_3809f - call Random - cp $14 - jr c, .asm_380b5 - jp Function38041 - -.asm_3809f - cp $20 - jr nz, .asm_380ad - call Random - cp $1e - jr c, .asm_380b5 - jp Function38041 - -.asm_380ad - call Random - cp $c8 - jp c, Function38041 - -.asm_380b5 - ld a, [$c717] - and $f - inc a - ld [$c718], a - jp Function3844b -; 380c1 - -Function380c1: ; 380c1 - callab Function34941 - ld a, [$c717] - and $f0 - jp z, Function38041 - cp $10 - jr nz, .asm_380dd - call Random - cp $32 - jr c, .asm_380f3 - jp Function38041 - -.asm_380dd - cp $20 - jr nz, .asm_380eb - call Random - cp $80 - jr c, .asm_380f3 - jp Function38041 - -.asm_380eb - call Random - cp $32 - jp c, Function38041 - -.asm_380f3 - ld a, [$c717] - and $f - inc a - ld [$c718], a - jp Function3844b -; 380ff - - -Function380ff: ; 380ff - ld a, [EnemySubStatus5] - bit SUBSTATUS_CANT_RUN, a - ret -; 38105 - - -Function38105: ; 38105 - ld a, [$cfc0] - and a - ret nz - ld a, [$c650] - ld b, a - ld a, [$c651] - or b - ret z - call Function38170 - ret nc - ld a, [TrainerClass] - dec a - ld hl, TrainerClassAttributes + 5 - ld bc, 7 - call AddNTimes - ld b, h - ld c, l - ld hl, Unknown_38196 - ld de, $c650 -.asm_3812c - ld a, [hl] - and a - inc a - ret z - ld a, [de] - cp [hl] - jr z, .asm_3813f - inc de - ld a, [de] - cp [hl] - jr z, .asm_3813f - dec de - inc hl - inc hl - inc hl - jr .asm_3812c - -.asm_3813f - inc hl - push hl - push de - ld de, .asm_3814a - push de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.asm_3814a - pop de - pop hl - inc hl - inc hl - jr c, .asm_3812c - xor a - ld [de], a - inc a - ld [$c70f], a - ld hl, EnemySubStatus3 ; $c66f - res SUBSTATUS_BIDE, [hl] - xor a - ld [EnemyFuryCutterCount], a ; $c680 - ld [$c681], a - ld [$c72c], a - ld hl, EnemySubStatus4 ; $c670 - res SUBSTATUS_RAGE, [hl] - xor a - ld [LastPlayerCounterMove], a ; $c6f9 - scf - ret - - -Function38170: ; 38170 - ld a, [OTPartyCount] - ld d, a - ld e, 0 - ld hl, OTPartyMon1Level - ld bc, OTPartyMon2 - OTPartyMon1 -.asm_3817c - ld a, [hl] - cp e - jr c, .asm_38181 - ld e, a -.asm_38181 - add hl, bc - dec d - jr nz, .asm_3817c - - ld a, [CurOTMon] - ld hl, OTPartyMon1Level - call AddNTimes - ld a, [hl] - cp e - jr nc, .asm_38194 - and a - ret - -.asm_38194 - scf - ret -; 38196 - -Unknown_38196: ; 39196 - dbw FULL_RESTORE, Function38208 - dbw MAX_POTION, Function38220 - dbw HYPER_POTION, Function38284 - dbw SUPER_POTION, Function38292 - dbw POTION, Function382a0 - dbw X_ACCURACY, Function382f9 - dbw FULL_HEAL, Function381be - dbw GUARD_SPEC, Function38305 - dbw DIRE_HIT, Function38311 - dbw X_ATTACK, Function3831d - dbw X_DEFEND, Function38329 - dbw X_SPEED, Function38335 - dbw X_SPECIAL, Function38341 - db $ff -; 381be - -Function381be: ; 381be - call Function381ca - jp c, Function38383 - call Function383a3 - jp Function38385 -; 381ca - -; known jump sources: 381be (e:41be), 38214 (e:4214) -Function381ca: ; 381ca (e:41ca) - ld a, [EnemyMonStatus] ; $d214 - and a - jp z, Function38383 - - ld a, [bc] - bit 6, a - jr nz, .asm_381e7 - ld a, [bc] - bit 4, a - jp nz, Function38385 - call Random - cp $32 - jp c, Function38385 - jp Function38383 - -.asm_381e7 - ld a, [EnemySubStatus5] - bit SUBSTATUS_TOXIC, a - jr z, .asm_381fd - ld a, [$c67c] - cp $4 - jr c, .asm_381fd - call Random - cp $80 - jp c, Function38385 -.asm_381fd - ld a, [EnemyMonStatus] - and 1 << FRZ | SLP - jp z, Function38383 - jp Function38385 -; 38208 - -Function38208: ; 38208 - call Function3822c - jp nc, Function3821a - ld a, [bc] - bit 6, a - jp z, Function38383 - call Function381ca - jp c, Function38383 - -; known jump sources: 3820b (e:420b) -Function3821a: ; 3821a (e:421a) - call Function383b5 - jp Function38385 -; 38220 - -Function38220: ; 38220 - call Function3822c - jp c, Function38383 - call Function383ae - jp Function38385 - -; known jump sources: 38208 (e:4208), 38220 (e:4220), 38284 (e:4284) -Function3822c: ; 3822c (e:422c) - ld a, [bc] - bit 6, a - jr nz, Function38267 - callab AICheckEnemyHalfHP - jp c, Function38383 - ld a, [bc] - bit 5, a - jp nz, Function38254 - callab AICheckEnemyQuarterHP - jp nc, Function38281 - call Random - cp $80 - jp c, Function38281 - jp Function38383 - -Function38254: ; 38254 (e:4254) - callab AICheckEnemyQuarterHP - jp c, Function38383 - call Random - cp $32 - jp c, Function38383 - jr Function38281 - -Function38267: ; 38267 (e:4267) - callab AICheckEnemyHalfHP - jp c, Function38383 - callab AICheckEnemyQuarterHP - jp nc, Function38281 - call Random - cp $32 - jp nc, Function38383 - -Function38281: ; 38281 (e:4281) - jp Function38385 -; 38284 - -Function38284: ; 38284 - call Function3822c - jp c, Function38383 - ld b, 200 - call Function383f4 - jp Function38385 -; 38292 (e:4292) - -Function38292: ; 38292 - call Function3822c - jp c, Function38383 - -Function38298: ; 38298 - ld b, 50 - call Function383ee - jp Function38385 -; 382a0 - -Function382a0: ; 382a0 - call Function3822c - jp c, Function38383 - ld b, 20 - call Function383e8 - jp Function38385 -; 382ae - -Function382ae: ; 382ae - callab AICheckEnemyMaxHP - jr c, .asm_382e4 - push bc - ld de, EnemyMonMaxHP + 1 - ld hl, EnemyMonHP + 1 - ld a, [de] - sub [hl] - jr z, .asm_382e7 - dec hl - dec de - ld c, a - sbc [hl] - and a - jr nz, .asm_382e7 - ld a, c - cp b - jp c, .asm_382d5 - callab AICheckEnemyQuarterHP - jr c, .asm_382e7 - -.asm_382d5 - pop bc - ld a, [bc] - bit 5, a - jp z, Function38385 - call Random - cp $80 - jp c, Function38385 - -.asm_382e4 - jp Function38383 - -.asm_382e7 - pop bc - ld a, [bc] - bit 5, a - jp z, Function38383 - call Random - cp $64 - jp c, Function38385 - jp Function38383 -; 382f9 - -Function382f9: ; 382f9 - call Function3834d - jp c, Function38383 - call Function384f7 - jp Function38385 -; 38305 - -Function38305: ; 38305 - call Function3834d - jp c, Function38383 - call Function38504 - jp Function38385 -; 38311 - -Function38311: ; 38311 - call Function3834d - jp c, Function38383 - call Function38511 - jp Function38385 -; 3831d (e:431d) - -Function3831d: ; 3831d - call Function3834d - jp c, Function38383 - call Function38541 - jp Function38385 -; 38329 - -Function38329: ; 38329 - call Function3834d - jp c, Function38383 - call Function38547 - jp Function38385 -; 38335 - -Function38335: ; 38335 - call Function3834d - jp c, Function38383 - call Function3854d - jp Function38385 -; 38341 - -Function38341: ; 38341 - call Function3834d - jp c, Function38383 - call Function38553 - jp Function38385 -; 3834d - -; known jump sources: 38311 (e:4311) -Function3834d: ; 3834d (e:434d) - ld a, [EnemyTurnsTaken] ; $c6dc - and a - jr nz, .asm_38372 - ld a, [bc] - bit 4, a - jp nz, Function38385 - call Random - cp $80 - jp c, Function38383 - ld a, [bc] - bit 6, a - jp nz, Function38385 - call Random - cp $80 - jp c, Function38383 - jp Function38385 -.asm_38372 - ld a, [bc] - bit 4, a - jp z, Function38383 - call Random - cp $32 - jp nc, Function38383 - jp Function38385 - -Function38383: ; 38383 (e:4383) - scf - ret - -Function38385: ; 38385 (e:4385) - and a - ret - - -Function38387: ; 38387 - call UpdateEnemyMonInParty - callba Function3e036 - ld a, $1 - ld [hBGMapMode], a - ld hl, $c6e6 - dec [hl] - scf - ret -; 3839a - -Function3839a: ; 3839a - push de - ld de, SFX_FULL_HEAL - call PlaySFX - pop de - ret -; 383a3 - - -; known jump sources: 381c4 (e:41c4) -Function383a3: ; 383a3 (e:43a3) - call Function3839a - call Function384e0 - ld a, FULL_HEAL - jp Function38568 - -; known jump sources: 38226 (e:4226) -Function383ae: ; 383ae (e:43ae) - ld a, $f - ld [$d1f1], a - jr asm_383c6 - -; known jump sources: 3821a (e:421a) -Function383b5: ; 383b5 (e:43b5) - call Function384e0 - ld a, $e - ld [$d1f1], a - ld hl, EnemySubStatus3 ; $c66f - res SUBSTATUS_CONFUSED, [hl] - xor a - ld [EnemyConfuseCount], a ; $c67b -asm_383c6: ; 383c6 (e:43c6) - ld de, $d1ec - ld hl, EnemyMonHP + 1 ; $d217 - ld a, [hld] - ld [de], a - inc de - ld a, [hl] - ld [de], a - inc de - ld hl, EnemyMonMaxHP + 1 ; $d219 - ld a, [hld] - ld [de], a - inc de - ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) - ld [EnemyMonHP + 1], a ; $d217 - ld a, [hl] - ld [de], a - ld [Buffer2], a ; $d1eb (aliases: MovementType) - ld [EnemyMonHP], a ; $d216 (aliases: EnemyMonHP) - jr asm_38436 -; 383e8 (e:43e8) - -Function383e8: ; 383e8 - ld a, POTION - ld b, 20 - jr Function383f8 - -Function383ee: ; 383ee - ld a, SUPER_POTION - ld b, 50 - jr Function383f8 - -; known jump sources: 3828c (e:428c) -Function383f4: ; 383f4 (e:43f4) - ld a, HYPER_POTION - ld b, 200 - -Function383f8: ; 383f8 - ld [$d1f1], a - ld hl, EnemyMonHP + 1 ; $d217 - ld a, [hl] - ld [$d1ec], a - add b - ld [hld], a - ld [$d1ee], a - ld a, [hl] - ld [$d1ed], a - ld [$d1ef], a - jr nc, .asm_38415 - inc a - ld [hl], a - ld [$d1ef], a -.asm_38415 - inc hl - ld a, [hld] - ld b, a - ld de, EnemyMonMaxHP + 1 ; $d219 - ld a, [de] - dec de - ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) - sub b - ld a, [hli] - ld b, a - ld a, [de] - ld [Buffer2], a ; $d1eb (aliases: MovementType) - sbc b - jr nc, asm_38436 - inc de - ld a, [de] - dec de - ld [hld], a - ld [$d1ee], a - ld a, [de] - ld [hl], a - ld [$d1ef], a -asm_38436: ; 38436 (e:4436) - call Function38571 - hlcoord 2, 2 - xor a - ld [$d10a], a - call Function3839a - ld a, $b - call Predef - jp Function38387 - - -Function3844b: ; 3844b - ld a, [OTPartyCount] - ld c, a - ld hl, OTPartyMon1HP - ld d, 0 -.asm_38454 - ld a, [hli] - ld b, a - ld a, [hld] - or b - jr z, .asm_3845b - inc d - -.asm_3845b - push bc - ld bc, PartyMon2 - PartyMon1 - add hl, bc - pop bc - dec c - jr nz, .asm_38454 - ld a, d - cp $2 - jp nc, Function3846c - and a - ret -; 3846c - -Function3846c: ; 3846c - ld a, $1 - ld [$c711], a - ld [$c70f], a - ld hl, EnemySubStatus4 - res SUBSTATUS_RAGE, [hl] - xor a - ld [hBattleTurn], a - callab Function3dc5b - push af - ld a, [CurOTMon] - ld hl, OTPartyMon1Status - ld bc, PartyMon2 - PartyMon1 - call AddNTimes - ld d, h - ld e, l - ld hl, EnemyMonStatus - ld bc, $0004 - call CopyBytes - pop af - jr c, .asm_384a3 - ld hl, UnknownText_0x384d0 - call PrintText - -.asm_384a3 - ld a, $1 - ld [$d264], a - callab NewEnemyMonStatus - callab ResetEnemyStatLevels - ld hl, PlayerSubStatus1 - res SUBSTATUS_IN_LOVE, [hl] - callba Function3d4e1 - callba Function3d57a - xor a - ld [$d264], a - ld a, [InLinkBattle] - and a - ret nz - scf - ret -; 384d0 - -UnknownText_0x384d0: ; 384d0 - text_jump UnknownText_0x1bcf9c - db "@" -; 384d5 - -Function384d5: ; 384d5 - call Function3839a - call Function384e0 - ld a, X_SPEED - jp Function38568 -; 384e0 - -Function384e0: ; 384e0 - ld a, [CurOTMon] - ld hl, OTPartyMon1Status - ld bc, PartyMon2 - PartyMon1 - call AddNTimes - xor a - ld [hl], a - ld [EnemyMonStatus], a - ld hl, EnemySubStatus5 - res SUBSTATUS_TOXIC, [hl] - ret -; 384f7 - -Function384f7: ; 384f7 - call Function3839a - ld hl, EnemySubStatus4 - set SUBSTATUS_UNLEASH, [hl] - ld a, X_ACCURACY - jp Function38568 -; 38504 - -Function38504: ; 38504 - call Function3839a - ld hl, EnemySubStatus4 - set SUBSTATUS_MIST, [hl] - ld a, GUARD_SPEC - jp Function38568 -; 38511 - -Function38511: ; 38511 - call Function3839a - ld hl, EnemySubStatus4 - set SUBSTATUS_FOCUS_ENERGY, [hl] - ld a, DIRE_HIT - jp Function38568 -; 3851e - -Function3851e: ; 3851e - ld [hMultiplier], a - ld hl, EnemyMonMaxHP - ld a, [hli] - ld [hProduct], a - ld a, [hl] - ld [hMultiplicand], a - ld b, $2 - call Divide - ld a, [$ffb6] - ld c, a - ld a, [$ffb5] - ld b, a - ld hl, EnemyMonHP + 1 - ld a, [hld] - ld e, a - ld a, [hl] - ld d, a - ld a, d - sub b - ret nz - ld a, e - sub c - ret -; 38541 - -Function38541: ; 38541 - ld b, ATTACK - ld a, X_ATTACK - jr Function38557 -; 38547 - -Function38547: ; 38547 - ld b, DEFENSE - ld a, X_DEFEND - jr Function38557 -; 3854d - -Function3854d: ; 3854d - ld b, SPEED - ld a, X_SPEED - jr Function38557 -; 38553 - -Function38553: ; 38553 - ld b, SP_ATTACK - ld a, X_SPECIAL - -Function38557 - ld [$d1f1], a - push bc - call Function38571 - pop bc - callba Function361ef - jp Function38387 -; 38568 - - -Function38568: ; 38568 - ld [$d1f1], a - call Function38571 - jp Function38387 -; 38571 - -Function38571: ; 38571 - ld a, [$d1f1] - ld [$d265], a - call GetItemName - ld hl, StringBuffer1 - ld de, $d050 - ld bc, $000d - call CopyBytes - ld hl, UnknownText_0x3858c - jp PrintText -; 3858c - -UnknownText_0x3858c: ; 3858c - text_jump UnknownText_0x1bcfaf - db "@" -; 38591 - +INCLUDE "battle/ai/items.asm" AIScoring: ; 38591 INCLUDE "battle/ai/scoring.asm"