ref: ab0ca2b16a6c9bdc00e54174498ab3c935cc2d70
dir: /battle/ai/items.asm/
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 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 Function3821a: ; 3821a (e:421a) call Function383b5 jp Function38385 ; 38220 Function38220: ; 38220 call Function3822c jp c, Function38383 call Function383ae jp Function38385 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 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 UpdateEnemyHUD 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 Function383a3: ; 383a3 (e:43a3) call Function3839a call Function384e0 ld a, FULL_HEAL jp Function38568 Function383ae: ; 383ae (e:43ae) ld a, $f ld [$d1f1], a jr asm_383c6 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 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 predef Functionc6e0 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