ref: 78d16c1efae40955d76c78215e1893c56e8e7e3e
parent: 7996f5b1ab310c0f587347b23148a4be515d4a53
author: yenatch <yenatch@gmail.com>
date: Tue Sep 30 07:20:38 EDT 2014
Better labels for item/switch AI.
--- a/battle/ai/items.asm
+++ b/battle/ai/items.asm
@@ -14,11 +14,11 @@
ld a, [PlayerSubStatus5]
bit SUBSTATUS_CANT_RUN, a
- jr nz, Function38041
+ jr nz, DontSwitch
ld a, [$c731]
and a
- jr nz, Function38041
+ jr nz, DontSwitch
ld hl, TrainerClassAttributes + 5
ld a, [$cfc0]
@@ -30,23 +30,23 @@
call AddNTimes
.ok
bit SWITCH_OFTEN_F, [hl]
- jp nz, Function38045
+ jp nz, SwitchOften
bit SWITCH_RARELY_F, [hl]
- jp nz, Function38083
+ jp nz, SwitchRarely
bit SWITCH_SOMETIMES_F, [hl]
- jp nz, Function380c1
+ jp nz, SwitchSometimes
; fallthrough
-Function38041: ; 38041
- call Function38105
+DontSwitch: ; 38041
+ call AI_TryItem
ret
; 38045
-Function38045: ; 38045
+SwitchOften: ; 38045
callab Function34941
ld a, [$c717]
and $f0
- jp z, Function38041
+ jp z, DontSwitch
cp $10
jr nz, .not_10
@@ -53,7 +53,7 @@
call Random
cp $80
jr c, .switch
- jp Function38041
+ jp DontSwitch
.not_10
cp $20
@@ -61,13 +61,13 @@
call Random
cp 200
jr c, .switch
- jp Function38041
+ jp DontSwitch
.not_20
; $30
call Random
cp 10
- jp c, Function38041
+ jp c, DontSwitch
.switch
ld a, [$c717]
@@ -77,11 +77,11 @@
jp AI_TrySwitch
; 38083
-Function38083: ; 38083
+SwitchRarely: ; 38083
callab Function34941
ld a, [$c717]
and $f0
- jp z, Function38041
+ jp z, DontSwitch
cp $10
jr nz, .not_10
@@ -88,7 +88,7 @@
call Random
cp 20
jr c, .switch
- jp Function38041
+ jp DontSwitch
.not_10
cp $20
@@ -96,13 +96,13 @@
call Random
cp 30
jr c, .switch
- jp Function38041
+ jp DontSwitch
.not_20
; $30
call Random
cp 200
- jp c, Function38041
+ jp c, DontSwitch
.switch
ld a, [$c717]
@@ -112,11 +112,11 @@
jp AI_TrySwitch
; 380c1
-Function380c1: ; 380c1
+SwitchSometimes: ; 380c1
callab Function34941
ld a, [$c717]
and $f0
- jp z, Function38041
+ jp z, DontSwitch
cp $10
jr nz, .not_10
@@ -123,7 +123,7 @@
call Random
cp 50
jr c, .switch
- jp Function38041
+ jp DontSwitch
.not_10
cp $20
@@ -131,13 +131,13 @@
call Random
cp $80
jr c, .switch
- jp Function38041
+ jp DontSwitch
.not_20
; $30
call Random
cp 50
- jp c, Function38041
+ jp c, DontSwitch
.switch
ld a, [$c717]
@@ -155,17 +155,20 @@
; 38105
-Function38105: ; 38105
+AI_TryItem: ; 38105
ld a, [$cfc0]
and a
ret nz
+
ld a, [$c650]
ld b, a
ld a, [$c651]
or b
ret z
- call Function38170
+
+ call .IsHighestLevel
ret nc
+
ld a, [TrainerClass]
dec a
ld hl, TrainerClassAttributes + 5
@@ -173,76 +176,86 @@
call AddNTimes
ld b, h
ld c, l
- ld hl, Unknown_38196
+ ld hl, AI_Items
ld de, $c650
-.asm_3812c
+.loop
ld a, [hl]
and a
inc a
ret z
+
ld a, [de]
cp [hl]
- jr z, .asm_3813f
+ jr z, .has_item
inc de
ld a, [de]
cp [hl]
- jr z, .asm_3813f
+ jr z, .has_item
+
dec de
inc hl
inc hl
inc hl
- jr .asm_3812c
+ jr .loop
-.asm_3813f
+.has_item
inc hl
+
push hl
push de
- ld de, .asm_3814a
+ ld de, .callback
push de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
-
-.asm_3814a
+.callback
pop de
pop hl
+
inc hl
inc hl
- jr c, .asm_3812c
+ jr c, .loop
+
+.used_item
xor a
ld [de], a
inc a
ld [$c70f], a
+
ld hl, EnemySubStatus3
res SUBSTATUS_BIDE, [hl]
+
xor a
ld [EnemyFuryCutterCount], a
ld [$c681], a
ld [$c72c], a
+
ld hl, EnemySubStatus4
res SUBSTATUS_RAGE, [hl]
+
xor a
ld [LastPlayerCounterMove], a
+
scf
ret
-Function38170: ; 38170
+.IsHighestLevel: ; 38170
ld a, [OTPartyCount]
ld d, a
ld e, 0
ld hl, OTPartyMon1Level
ld bc, OTPartyMon2 - OTPartyMon1
-.asm_3817c
+.next
ld a, [hl]
cp e
- jr c, .asm_38181
+ jr c, .ok
ld e, a
-.asm_38181
+.ok
add hl, bc
dec d
- jr nz, .asm_3817c
+ jr nz, .next
ld a, [CurOTMon]
ld hl, OTPartyMon1Level
@@ -249,16 +262,19 @@
call AddNTimes
ld a, [hl]
cp e
- jr nc, .asm_38194
+ jr nc, .yes
+
+.no
and a
ret
-.asm_38194
+.yes
scf
ret
; 38196
-Unknown_38196: ; 39196
+
+AI_Items: ; 39196
dbw FULL_RESTORE, .FullRestore
dbw MAX_POTION, .MaxPotion
dbw HYPER_POTION, .HyperPotion
@@ -837,7 +853,7 @@
call GetItemName
ld hl, StringBuffer1
ld de, $d050
- ld bc, $000d
+ ld bc, ITEM_NAME_LENGTH
call CopyBytes
ld hl, UnknownText_0x3858c
jp PrintText