Better trainer AI comments and finish off trainer attributes.

This commit is contained in:
yenatch
2014-08-13 19:44:56 -07:00
parent 88a15c5038
commit da799c80d4
8 changed files with 893 additions and 854 deletions

View File

@@ -1,37 +1,41 @@
Function38000: ; 38000 Function38000: ; 38000
and a and a
ld a, [IsInBattle] ld a, [IsInBattle]
dec a dec a
ret z ret z
ld a, [InLinkBattle] ld a, [InLinkBattle]
and a and a
ret nz ret nz
callba Function3e8d1 callba Function3e8d1
ret nz ret nz
ld a, [PlayerSubStatus5] ld a, [PlayerSubStatus5]
bit SUBSTATUS_CANT_RUN, a bit SUBSTATUS_CANT_RUN, a
jr nz, Function38041 jr nz, Function38041
ld a, [$c731] ld a, [$c731]
and a and a
jr nz, Function38041 jr nz, Function38041
ld hl, TrainerClassAttributes + 5 ld hl, TrainerClassAttributes + 5
ld a, [$cfc0] ld a, [$cfc0]
and a and a
jr nz, .asm_38032 jr nz, .ok
ld a, [TrainerClass] ld a, [TrainerClass]
dec a dec a
ld bc, 7 ld bc, 7
call AddNTimes call AddNTimes
.ok
.asm_38032 bit SWITCH_OFTEN_F, [hl]
bit 0, [hl]
jp nz, Function38045 jp nz, Function38045
bit 1, [hl] bit SWITCH_RARELY_F, [hl]
jp nz, Function38083 jp nz, Function38083
bit 2, [hl] bit SWITCH_SOMETIMES_F, [hl]
jp nz, Function380c1 jp nz, Function380c1
; fallthrough ; fallthrough
; 38041
Function38041: ; 38041 Function38041: ; 38041
call Function38105 call Function38105
@@ -43,32 +47,34 @@ Function38045: ; 38045
ld a, [$c717] ld a, [$c717]
and $f0 and $f0
jp z, Function38041 jp z, Function38041
cp $10 cp $10
jr nz, .asm_38061 jr nz, .not_10
call Random call Random
cp $80 cp $80
jr c, .asm_38077 jr c, .switch
jp Function38041 jp Function38041
.not_10
.asm_38061
cp $20 cp $20
jr nz, .asm_3806f jr nz, .not_20
call Random call Random
cp $c8 cp 200
jr c, .asm_38077 jr c, .switch
jp Function38041 jp Function38041
.not_20
.asm_3806f ; $30
call Random call Random
cp $a cp 10
jp c, Function38041 jp c, Function38041
.asm_38077 .switch
ld a, [$c717] ld a, [$c717]
and $f and $f
inc a inc a
ld [$c718], a ld [$c718], a
jp Function3844b jp AI_TrySwitch
; 38083 ; 38083
Function38083: ; 38083 Function38083: ; 38083
@@ -76,32 +82,34 @@ Function38083: ; 38083
ld a, [$c717] ld a, [$c717]
and $f0 and $f0
jp z, Function38041 jp z, Function38041
cp $10 cp $10
jr nz, .asm_3809f jr nz, .not_10
call Random call Random
cp $14 cp 20
jr c, .asm_380b5 jr c, .switch
jp Function38041 jp Function38041
.not_10
.asm_3809f
cp $20 cp $20
jr nz, .asm_380ad jr nz, .not_20
call Random call Random
cp $1e cp 30
jr c, .asm_380b5 jr c, .switch
jp Function38041 jp Function38041
.not_20
.asm_380ad ; $30
call Random call Random
cp $c8 cp 200
jp c, Function38041 jp c, Function38041
.asm_380b5 .switch
ld a, [$c717] ld a, [$c717]
and $f and $f
inc a inc a
ld [$c718], a ld [$c718], a
jp Function3844b jp AI_TrySwitch
; 380c1 ; 380c1
Function380c1: ; 380c1 Function380c1: ; 380c1
@@ -109,32 +117,34 @@ Function380c1: ; 380c1
ld a, [$c717] ld a, [$c717]
and $f0 and $f0
jp z, Function38041 jp z, Function38041
cp $10
jr nz, .asm_380dd
call Random
cp $32
jr c, .asm_380f3
jp Function38041
.asm_380dd cp $10
jr nz, .not_10
call Random
cp 50
jr c, .switch
jp Function38041
.not_10
cp $20 cp $20
jr nz, .asm_380eb jr nz, .not_20
call Random call Random
cp $80 cp $80
jr c, .asm_380f3 jr c, .switch
jp Function38041 jp Function38041
.not_20
.asm_380eb ; $30
call Random call Random
cp $32 cp 50
jp c, Function38041 jp c, Function38041
.asm_380f3 .switch
ld a, [$c717] ld a, [$c717]
and $f and $f
inc a inc a
ld [$c718], a ld [$c718], a
jp Function3844b jp AI_TrySwitch
; 380ff ; 380ff
@@ -204,16 +214,16 @@ Function38105: ; 38105
ld [de], a ld [de], a
inc a inc a
ld [$c70f], a ld [$c70f], a
ld hl, EnemySubStatus3 ; $c66f ld hl, EnemySubStatus3
res SUBSTATUS_BIDE, [hl] res SUBSTATUS_BIDE, [hl]
xor a xor a
ld [EnemyFuryCutterCount], a ; $c680 ld [EnemyFuryCutterCount], a
ld [$c681], a ld [$c681], a
ld [$c72c], a ld [$c72c], a
ld hl, EnemySubStatus4 ; $c670 ld hl, EnemySubStatus4
res SUBSTATUS_RAGE, [hl] res SUBSTATUS_RAGE, [hl]
xor a xor a
ld [LastPlayerCounterMove], a ; $c6f9 ld [LastPlayerCounterMove], a
scf scf
ret ret
@@ -249,146 +259,144 @@ Function38170: ; 38170
; 38196 ; 38196
Unknown_38196: ; 39196 Unknown_38196: ; 39196
dbw FULL_RESTORE, Function38208 dbw FULL_RESTORE, .FullRestore
dbw MAX_POTION, Function38220 dbw MAX_POTION, .MaxPotion
dbw HYPER_POTION, Function38284 dbw HYPER_POTION, .HyperPotion
dbw SUPER_POTION, Function38292 dbw SUPER_POTION, .SuperPotion
dbw POTION, Function382a0 dbw POTION, .Potion
dbw X_ACCURACY, Function382f9 dbw X_ACCURACY, .XAccuracy
dbw FULL_HEAL, Function381be dbw FULL_HEAL, .FullHeal
dbw GUARD_SPEC, Function38305 dbw GUARD_SPEC, .GuardSpec
dbw DIRE_HIT, Function38311 dbw DIRE_HIT, .DireHit
dbw X_ATTACK, Function3831d dbw X_ATTACK, .XAttack
dbw X_DEFEND, Function38329 dbw X_DEFEND, .XDefend
dbw X_SPEED, Function38335 dbw X_SPEED, .XSpeed
dbw X_SPECIAL, Function38341 dbw X_SPECIAL, .XSpecial
db $ff db $ff
; 381be ; 381be
Function381be: ; 381be .FullHeal: ; 381be
call Function381ca call .Status
jp c, Function38383 jp c, .DontUse
call Function383a3 call Function383a3
jp Function38385 jp .Use
; 381ca ; 381ca
Function381ca: ; 381ca (e:41ca) .Status: ; 381ca (e:41ca)
ld a, [EnemyMonStatus] ; $d214 ld a, [EnemyMonStatus]
and a and a
jp z, Function38383 jp z, .DontUse
ld a, [bc] ld a, [bc]
bit 6, a bit CONTEXT_USE_F, a
jr nz, .asm_381e7 jr nz, .asm_381e7
ld a, [bc] ld a, [bc]
bit 4, a bit ALWAYS_USE_F, a
jp nz, Function38385 jp nz, .Use
call Random call Random
cp $32 cp 50
jp c, Function38385 jp c, .Use
jp Function38383 jp .DontUse
.asm_381e7 .asm_381e7
ld a, [EnemySubStatus5] ld a, [EnemySubStatus5]
bit SUBSTATUS_TOXIC, a bit SUBSTATUS_TOXIC, a
jr z, .asm_381fd jr z, .asm_381fd
ld a, [$c67c] ld a, [EnemyToxicCount]
cp $4 cp 4
jr c, .asm_381fd jr c, .asm_381fd
call Random call Random
cp $80 cp $80
jp c, Function38385 jp c, .Use
.asm_381fd .asm_381fd
ld a, [EnemyMonStatus] ld a, [EnemyMonStatus]
and 1 << FRZ | SLP and 1 << FRZ | SLP
jp z, Function38383 jp z, .DontUse
jp Function38385 jp .Use
; 38208 ; 38208
Function38208: ; 38208 .FullRestore: ; 38208
call Function3822c call .HealItem
jp nc, Function3821a jp nc, .asm_3821a
ld a, [bc] ld a, [bc]
bit 6, a bit CONTEXT_USE_F, a
jp z, Function38383 jp z, .DontUse
call Function381ca call .Status
jp c, Function38383 jp c, .DontUse
Function3821a: ; 3821a (e:421a) .asm_3821a
call Function383b5 call Function383b5
jp Function38385 jp .Use
; 38220 ; 38220
Function38220: ; 38220 .MaxPotion: ; 38220
call Function3822c call .HealItem
jp c, Function38383 jp c, .DontUse
call Function383ae call Function383ae
jp Function38385 jp .Use
Function3822c: ; 3822c (e:422c) .HealItem: ; 3822c (e:422c)
ld a, [bc] ld a, [bc]
bit 6, a bit CONTEXT_USE_F, a
jr nz, Function38267 jr nz, .asm_38267
callab AICheckEnemyHalfHP callab AICheckEnemyHalfHP
jp c, Function38383 jp c, .DontUse
ld a, [bc] ld a, [bc]
bit 5, a bit UNKNOWN_USE_F, a
jp nz, Function38254 jp nz, .asm_38254
callab AICheckEnemyQuarterHP callab AICheckEnemyQuarterHP
jp nc, Function38281 jp nc, .asm_38281
call Random call Random
cp $80 cp $80
jp c, Function38281 jp c, .asm_38281
jp Function38383 jp .DontUse
Function38254: ; 38254 (e:4254) .asm_38254: ; 38254 (e:4254)
callab AICheckEnemyQuarterHP callab AICheckEnemyQuarterHP
jp c, Function38383 jp c, .DontUse
call Random call Random
cp $32 cp 50
jp c, Function38383 jp c, .DontUse
jr Function38281 jr .asm_38281
Function38267: ; 38267 (e:4267) .asm_38267: ; 38267 (e:4267)
callab AICheckEnemyHalfHP callab AICheckEnemyHalfHP
jp c, Function38383 jp c, .DontUse
callab AICheckEnemyQuarterHP callab AICheckEnemyQuarterHP
jp nc, Function38281 jp nc, .asm_38281
call Random call Random
cp $32 cp 50
jp nc, Function38383 jp nc, .DontUse
Function38281: ; 38281 (e:4281) .asm_38281: ; 38281 (e:4281)
jp Function38385 jp .Use
; 38284 ; 38284
Function38284: ; 38284 .HyperPotion: ; 38284
call Function3822c call .HealItem
jp c, Function38383 jp c, .DontUse
ld b, 200 ld b, 200
call Function383f4 call Function383f4
jp Function38385 jp .Use
; 38292 (e:4292) ; 38292 (e:4292)
Function38292: ; 38292 .SuperPotion: ; 38292
call Function3822c call .HealItem
jp c, Function38383 jp c, .DontUse
Function38298: ; 38298
ld b, 50 ld b, 50
call Function383ee call Function383ee
jp Function38385 jp .Use
; 382a0 ; 382a0
Function382a0: ; 382a0 .Potion: ; 382a0
call Function3822c call .HealItem
jp c, Function38383 jp c, .DontUse
ld b, 20 ld b, 20
call Function383e8 call Function383e8
jp Function38385 jp .Use
; 382ae ; 382ae
Function382ae: ; 382ae .asm_382ae: ; 382ae
callab AICheckEnemyMaxHP callab AICheckEnemyMaxHP
jr c, .asm_382e4 jr c, .asm_382e4
push bc push bc
@@ -412,111 +420,111 @@ Function382ae: ; 382ae
.asm_382d5 .asm_382d5
pop bc pop bc
ld a, [bc] ld a, [bc]
bit 5, a bit UNKNOWN_USE_F, a
jp z, Function38385 jp z, .Use
call Random call Random
cp $80 cp $80
jp c, Function38385 jp c, .Use
.asm_382e4 .asm_382e4
jp Function38383 jp .DontUse
.asm_382e7 .asm_382e7
pop bc pop bc
ld a, [bc] ld a, [bc]
bit 5, a bit UNKNOWN_USE_F, a
jp z, Function38383 jp z, .DontUse
call Random call Random
cp $64 cp 100
jp c, Function38385 jp c, .Use
jp Function38383 jp .DontUse
; 382f9 ; 382f9
Function382f9: ; 382f9 .XAccuracy: ; 382f9
call Function3834d call .XItem
jp c, Function38383 jp c, .DontUse
call Function384f7 call Function384f7
jp Function38385 jp .Use
; 38305 ; 38305
Function38305: ; 38305 .GuardSpec: ; 38305
call Function3834d call .XItem
jp c, Function38383 jp c, .DontUse
call Function38504 call Function38504
jp Function38385 jp .Use
; 38311 ; 38311
Function38311: ; 38311 .DireHit: ; 38311
call Function3834d call .XItem
jp c, Function38383 jp c, .DontUse
call Function38511 call Function38511
jp Function38385 jp .Use
; 3831d (e:431d) ; 3831d (e:431d)
Function3831d: ; 3831d .XAttack: ; 3831d
call Function3834d call .XItem
jp c, Function38383 jp c, .DontUse
call Function38541 call Function38541
jp Function38385 jp .Use
; 38329 ; 38329
Function38329: ; 38329 .XDefend: ; 38329
call Function3834d call .XItem
jp c, Function38383 jp c, .DontUse
call Function38547 call Function38547
jp Function38385 jp .Use
; 38335 ; 38335
Function38335: ; 38335 .XSpeed: ; 38335
call Function3834d call .XItem
jp c, Function38383 jp c, .DontUse
call Function3854d call Function3854d
jp Function38385 jp .Use
; 38341 ; 38341
Function38341: ; 38341 .XSpecial: ; 38341
call Function3834d call .XItem
jp c, Function38383 jp c, .DontUse
call Function38553 call Function38553
jp Function38385 jp .Use
; 3834d ; 3834d
Function3834d: ; 3834d (e:434d) .XItem: ; 3834d (e:434d)
ld a, [EnemyTurnsTaken] ; $c6dc ld a, [EnemyTurnsTaken]
and a and a
jr nz, .asm_38372 jr nz, .asm_38372
ld a, [bc] ld a, [bc]
bit 4, a bit ALWAYS_USE_F, a
jp nz, Function38385 jp nz, .Use
call Random call Random
cp $80 cp $80
jp c, Function38383 jp c, .DontUse
ld a, [bc] ld a, [bc]
bit 6, a bit CONTEXT_USE_F, a
jp nz, Function38385 jp nz, .Use
call Random call Random
cp $80 cp $80
jp c, Function38383 jp c, .DontUse
jp Function38385 jp .Use
.asm_38372 .asm_38372
ld a, [bc] ld a, [bc]
bit 4, a bit ALWAYS_USE_F, a
jp z, Function38383 jp z, .DontUse
call Random call Random
cp $32 cp 50
jp nc, Function38383 jp nc, .DontUse
jp Function38385 jp .Use
Function38383: ; 38383 (e:4383) .DontUse:
scf scf
ret ret
Function38385: ; 38385 (e:4385) .Use:
and a and a
ret ret
Function38387: ; 38387 AIUpdateHUD: ; 38387
call UpdateEnemyMonInParty call UpdateEnemyMonInParty
callba UpdateEnemyHUD callba UpdateEnemyHUD
ld a, $1 ld a, $1
@@ -527,7 +535,7 @@ Function38387: ; 38387
ret ret
; 3839a ; 3839a
Function3839a: ; 3839a AIUsedItemSound: ; 3839a
push de push de
ld de, SFX_FULL_HEAL ld de, SFX_FULL_HEAL
call PlaySFX call PlaySFX
@@ -537,44 +545,45 @@ Function3839a: ; 3839a
Function383a3: ; 383a3 (e:43a3) Function383a3: ; 383a3 (e:43a3)
call Function3839a call AIUsedItemSound
call Function384e0 call AI_HealStatus
ld a, FULL_HEAL ld a, FULL_HEAL
jp Function38568 jp Function38568
Function383ae: ; 383ae (e:43ae) Function383ae: ; 383ae (e:43ae)
ld a, $f ld a, MAX_POTION
ld [$d1f1], a ld [$d1f1], a
jr asm_383c6 jr asm_383c6
Function383b5: ; 383b5 (e:43b5) Function383b5: ; 383b5 (e:43b5)
call Function384e0 call AI_HealStatus
ld a, $e ld a, FULL_RESTORE
ld [$d1f1], a ld [$d1f1], a
ld hl, EnemySubStatus3 ; $c66f ld hl, EnemySubStatus3
res SUBSTATUS_CONFUSED, [hl] res SUBSTATUS_CONFUSED, [hl]
xor a xor a
ld [EnemyConfuseCount], a ; $c67b ld [EnemyConfuseCount], a
asm_383c6: ; 383c6 (e:43c6)
asm_383c6: ; 383c6
ld de, $d1ec ld de, $d1ec
ld hl, EnemyMonHP + 1 ; $d217 ld hl, EnemyMonHP + 1
ld a, [hld] ld a, [hld]
ld [de], a ld [de], a
inc de inc de
ld a, [hl] ld a, [hl]
ld [de], a ld [de], a
inc de inc de
ld hl, EnemyMonMaxHP + 1 ; $d219 ld hl, EnemyMonMaxHP + 1
ld a, [hld] ld a, [hld]
ld [de], a ld [de], a
inc de inc de
ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) ld [Buffer1], a
ld [EnemyMonHP + 1], a ; $d217 ld [EnemyMonHP + 1], a
ld a, [hl] ld a, [hl]
ld [de], a ld [de], a
ld [Buffer2], a ; $d1eb (aliases: MovementType) ld [Buffer2], a
ld [EnemyMonHP], a ; $d216 (aliases: EnemyMonHP) ld [EnemyMonHP], a
jr asm_38436 jr Function38436
; 383e8 (e:43e8) ; 383e8 (e:43e8)
Function383e8: ; 383e8 Function383e8: ; 383e8
@@ -593,34 +602,34 @@ Function383f4: ; 383f4 (e:43f4)
Function383f8: ; 383f8 Function383f8: ; 383f8
ld [$d1f1], a ld [$d1f1], a
ld hl, EnemyMonHP + 1 ; $d217 ld hl, EnemyMonHP + 1
ld a, [hl] ld a, [hl]
ld [$d1ec], a ld [$d1ec], a
add b add b
ld [hld], a ld [hld], a
ld [$d1ee], a ld [$d1ee], a
ld a, [hl] ld a, [hl]
ld [$d1ed], a ld [$d1ec + 1], a
ld [$d1ef], a ld [$d1ee + 1], a
jr nc, .asm_38415 jr nc, .asm_38415
inc a inc a
ld [hl], a ld [hl], a
ld [$d1ef], a ld [$d1ee + 1], a
.asm_38415 .asm_38415
inc hl inc hl
ld a, [hld] ld a, [hld]
ld b, a ld b, a
ld de, EnemyMonMaxHP + 1 ; $d219 ld de, EnemyMonMaxHP + 1
ld a, [de] ld a, [de]
dec de dec de
ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) ld [Buffer1], a
sub b sub b
ld a, [hli] ld a, [hli]
ld b, a ld b, a
ld a, [de] ld a, [de]
ld [Buffer2], a ; $d1eb (aliases: MovementType) ld [Buffer2], a
sbc b sbc b
jr nc, asm_38436 jr nc, .asm_38436
inc de inc de
ld a, [de] ld a, [de]
dec de dec de
@@ -629,17 +638,19 @@ Function383f8: ; 383f8
ld a, [de] ld a, [de]
ld [hl], a ld [hl], a
ld [$d1ef], a ld [$d1ef], a
asm_38436: ; 38436 (e:4436) .asm_38436
Function38436: ; 38436
call Function38571 call Function38571
hlcoord 2, 2 hlcoord 2, 2
xor a xor a
ld [$d10a], a ld [$d10a], a
call Function3839a call AIUsedItemSound
predef Functionc6e0 predef Functionc6e0
jp Function38387 jp AIUpdateHUD
Function3844b: ; 3844b AI_TrySwitch: ; 3844b
ld a, [OTPartyCount] ld a, [OTPartyCount]
ld c, a ld c, a
ld hl, OTPartyMon1HP ld hl, OTPartyMon1HP
@@ -651,7 +662,6 @@ Function3844b: ; 3844b
or b or b
jr z, .asm_3845b jr z, .asm_3845b
inc d inc d
.asm_3845b .asm_3845b
push bc push bc
ld bc, PartyMon2 - PartyMon1 ld bc, PartyMon2 - PartyMon1
@@ -659,14 +669,15 @@ Function3844b: ; 3844b
pop bc pop bc
dec c dec c
jr nz, .asm_38454 jr nz, .asm_38454
ld a, d ld a, d
cp $2 cp 2
jp nc, Function3846c jp nc, AI_Switch
and a and a
ret ret
; 3846c ; 3846c
Function3846c: ; 3846c AI_Switch: ; 3846c
ld a, $1 ld a, $1
ld [$c711], a ld [$c711], a
ld [$c70f], a ld [$c70f], a
@@ -689,7 +700,6 @@ Function3846c: ; 3846c
jr c, .asm_384a3 jr c, .asm_384a3
ld hl, UnknownText_0x384d0 ld hl, UnknownText_0x384d0
call PrintText call PrintText
.asm_384a3 .asm_384a3
ld a, $1 ld a, $1
ld [$d264], a ld [$d264], a
@@ -714,13 +724,13 @@ UnknownText_0x384d0: ; 384d0
; 384d5 ; 384d5
Function384d5: ; 384d5 Function384d5: ; 384d5
call Function3839a call AIUsedItemSound
call Function384e0 call AI_HealStatus
ld a, X_SPEED ld a, FULL_HEAL_RED
jp Function38568 jp Function38568
; 384e0 ; 384e0
Function384e0: ; 384e0 AI_HealStatus: ; 384e0
ld a, [CurOTMon] ld a, [CurOTMon]
ld hl, OTPartyMon1Status ld hl, OTPartyMon1Status
ld bc, PartyMon2 - PartyMon1 ld bc, PartyMon2 - PartyMon1
@@ -734,15 +744,15 @@ Function384e0: ; 384e0
; 384f7 ; 384f7
Function384f7: ; 384f7 Function384f7: ; 384f7
call Function3839a call AIUsedItemSound
ld hl, EnemySubStatus4 ld hl, EnemySubStatus4
set SUBSTATUS_UNLEASH, [hl] set SUBSTATUS_X_ACCURACY, [hl]
ld a, X_ACCURACY ld a, X_ACCURACY
jp Function38568 jp Function38568
; 38504 ; 38504
Function38504: ; 38504 Function38504: ; 38504
call Function3839a call AIUsedItemSound
ld hl, EnemySubStatus4 ld hl, EnemySubStatus4
set SUBSTATUS_MIST, [hl] set SUBSTATUS_MIST, [hl]
ld a, GUARD_SPEC ld a, GUARD_SPEC
@@ -750,7 +760,7 @@ Function38504: ; 38504
; 38511 ; 38511
Function38511: ; 38511 Function38511: ; 38511
call Function3839a call AIUsedItemSound
ld hl, EnemySubStatus4 ld hl, EnemySubStatus4
set SUBSTATUS_FOCUS_ENERGY, [hl] set SUBSTATUS_FOCUS_ENERGY, [hl]
ld a, DIRE_HIT ld a, DIRE_HIT
@@ -805,20 +815,20 @@ Function38553: ; 38553
ld b, SP_ATTACK ld b, SP_ATTACK
ld a, X_SPECIAL ld a, X_SPECIAL
Function38557 Function38557:
ld [$d1f1], a ld [$d1f1], a
push bc push bc
call Function38571 call Function38571
pop bc pop bc
callba Function361ef callba Function361ef
jp Function38387 jp AIUpdateHUD
; 38568 ; 38568
Function38568: ; 38568 Function38568: ; 38568
ld [$d1f1], a ld [$d1f1], a
call Function38571 call Function38571
jp Function38387 jp AIUpdateHUD
; 38571 ; 38571
Function38571: ; 38571 Function38571: ; 38571

File diff suppressed because it is too large Load Diff

View File

@@ -480,7 +480,7 @@ Function3c314: ; 3c314
jp .asm_3c3f1 jp .asm_3c3f1
.asm_3c34c .asm_3c34c
callab Function3846c callab AI_Switch
call SetEnemyTurn call SetEnemyTurn
call SpikesDamage call SpikesDamage
jp Function3c3f3 jp Function3c3f3
@@ -5454,7 +5454,7 @@ Function3e3ad: ; 3e3ad
; 3e3ff ; 3e3ff
Function3e3ff: ; 3e3ff Function3e3ff: ; 3e3ff
callab Function3846c callab AI_Switch
call SetEnemyTurn call SetEnemyTurn
jp SpikesDamage jp SpikesDamage
; 3e40b ; 3e40b

View File

@@ -1041,6 +1041,7 @@ BattleCommand04: ; 34555
ld bc, EnemyTurnsTaken ld bc, EnemyTurnsTaken
.asm_34570 .asm_34570
; If we've gotten this far, this counts as a turn. ; If we've gotten this far, this counts as a turn.
ld a, [bc] ld a, [bc]
inc a inc a
@@ -1052,7 +1053,7 @@ BattleCommand04: ; 34555
ret z ret z
ld a, [de] ld a, [de]
and %111 ; rollout | bide | ??? and 1 << SUBSTATUS_IN_LOOP | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_BIDE
ret nz ret nz
call .asm_345ad call .asm_345ad
@@ -1542,28 +1543,28 @@ Function347d3: ; 347d3
.asm_347e7 .asm_347e7
ld a, [hli] ld a, [hli]
cp $ff cp $ff
jr z, .asm_3482f ; 0x347ea $43 jr z, .asm_3482f
cp $fe cp $fe
jr nz, .asm_347fb ; 0x347ee $b jr nz, .asm_347fb
ld a, BATTLE_VARS_SUBSTATUS1_OPP ld a, BATTLE_VARS_SUBSTATUS1_OPP
call GetBattleVar call GetBattleVar
bit SUBSTATUS_IDENTIFIED, a bit SUBSTATUS_IDENTIFIED, a
jr nz, .asm_3482f ; 0x347f7 $36 jr nz, .asm_3482f
jr .asm_347e7 ; 0x347f9 $ec jr .asm_347e7
.asm_347fb .asm_347fb
cp d cp d
jr nz, .asm_34807 ; 0x347fc $9 jr nz, .asm_34807
ld a, [hli] ld a, [hli]
cp b cp b
jr z, .asm_3480b ; 0x34800 $9 jr z, .asm_3480b
cp c cp c
jr z, .asm_3480b ; 0x34803 $6 jr z, .asm_3480b
jr .asm_34808 ; 0x34805 $1 jr .asm_34808
.asm_34807 .asm_34807
inc hl inc hl
.asm_34808 .asm_34808
inc hl inc hl
jr .asm_347e7 ; 0x34809 $dc jr .asm_347e7
.asm_3480b .asm_3480b
xor a xor a
ld [$ffb3], a ld [$ffb3], a
@@ -1572,17 +1573,18 @@ Function347d3: ; 347d3
ld a, [hli] ld a, [hli]
ld [$ffb6], a ld [$ffb6], a
ld a, [$d265] ld a, [$d265]
ld [$ffb7], a ld [hMultiplier], a
call Multiply call Multiply
ld a, $a ld a, 10
ld [$ffb7], a ld [hDivisor], a
push bc push bc
ld b, $4 ld b, 4
call Divide call Divide
pop bc pop bc
ld a, [$ffb6] ld a, [$ffb6]
ld [$d265], a ld [$d265], a
jr .asm_347e7 ; 0x3482d $b8 jr .asm_347e7
.asm_3482f .asm_3482f
pop bc pop bc
pop de pop de
@@ -1613,7 +1615,7 @@ Function3484e: ; 3484e
push hl push hl
push de push de
push bc push bc
ld a, $a ld a, 10
ld [$c716], a ld [$c716], a
ld hl, PlayerUsedMoves ld hl, PlayerUsedMoves
ld a, [hl] ld a, [hl]
@@ -1795,24 +1797,26 @@ Function34939: ; 34939
Function34941: ; 34941 Function34941: ; 34941
xor a xor a
ld [$c717], a ld [$c717], a
call Function349f4 call CountEnemyAliveMons
ret c ret c
ld a, [EnemySubStatus1] ld a, [EnemySubStatus1]
bit SUBSTATUS_PERISH, a bit SUBSTATUS_PERISH, a
jr z, .asm_34986 jr z, .no_perish
ld a, [EnemyPerishCount] ld a, [EnemyPerishCount]
cp 1 cp 1
jr nz, .asm_34986 jr nz, .no_perish
call Function349f4 ; Perish count is 1
call CountEnemyAliveMons
call Function34b77 call Function34b77
call Function34b20 call Function34b20
call Function34a85 call Function34a85
ld a, e ld a, e
cp $2 cp 2
jr nz, .asm_34971 jr nz, .asm_34971
ld a, [$c716] ld a, [$c716]
@@ -1821,7 +1825,7 @@ Function34941: ; 34941
ret ret
.asm_34971 .asm_34971
call Function349f4 call CountEnemyAliveMons
sla c sla c
sla c sla c
ld b, $ff ld b, $ff
@@ -1836,10 +1840,11 @@ Function34941: ; 34941
ld [$c717], a ld [$c717], a
ret ret
.asm_34986 .no_perish
call Function3484e call Function3484e
ld a, [$c716] ld a, [$c716]
cp $b cp 11
ret nc ret nc
ld a, [LastEnemyCounterMove] ld a, [LastEnemyCounterMove]
@@ -1859,12 +1864,12 @@ Function34941: ; 34941
ld b, a ld b, a
ld a, e ld a, e
cp $2 cp 2
jr z, .asm_349be jr z, .asm_349be
call Function3484e call Function3484e
ld a, [$c716] ld a, [$c716]
cp $a cp 10
ret nc ret nc
ld a, b ld a, b
@@ -1876,7 +1881,7 @@ Function34941: ; 34941
ld c, $10 ld c, $10
call Function3484e call Function3484e
ld a, [$c716] ld a, [$c716]
cp $a cp 10
jr nc, .asm_349cc jr nc, .asm_349cc
ld c, $20 ld c, $20
@@ -1889,10 +1894,10 @@ Function34941: ; 34941
.asm_349d2 .asm_349d2
call Function3484e call Function3484e
ld a, [$c716] ld a, [$c716]
cp $a cp 10
ret nc ret nc
call Function349f4 call CountEnemyAliveMons
call Function34b77 call Function34b77
call Function34b20 call Function34b20
call Function34a85 call Function34a85
@@ -1908,7 +1913,7 @@ Function34941: ; 34941
; 349f4 ; 349f4
Function349f4: ; 349f4 CountEnemyAliveMons: ; 349f4
ld a, [OTPartyCount] ld a, [OTPartyCount]
cp 2 cp 2
jr c, .only_one jr c, .only_one
@@ -1964,7 +1969,7 @@ Function34a2a: ; 34a2a
ld hl, OTPartyMon1 ld hl, OTPartyMon1
ld a, [OTPartyCount] ld a, [OTPartyCount]
ld b, a ld b, a
ld c, $20 ld c, 1 << (PARTY_LENGTH - 1)
ld d, 0 ld d, 0
xor a xor a
ld [$c716], a ld [$c716], a
@@ -2027,8 +2032,8 @@ Function34a85: ; 34a85
ld a, [OTPartyCount] ld a, [OTPartyCount]
ld e, a ld e, a
ld hl, OTPartyMon1HP ld hl, OTPartyMon1HP
ld b, $20 ld b, 1 << (PARTY_LENGTH - 1)
ld c, $0 ld c, 0
.asm_34a91 .asm_34a91
ld a, [hli] ld a, [hli]
or [hl] or [hl]
@@ -2061,9 +2066,9 @@ Function34aa7: ; 34aa7
ld a, $ff ld a, $ff
ld [$c716], a ld [$c716], a
ld hl, OTPartyMon1Moves ld hl, OTPartyMon1Moves
ld b, $20 ld b, 1 << (PARTY_LENGTH - 1)
ld d, $0 ld d, 0
ld e, $0 ld e, 0
.asm_34ab5 .asm_34ab5
ld a, b ld a, b
and c and c
@@ -2072,7 +2077,7 @@ Function34aa7: ; 34aa7
push hl push hl
push bc push bc
ld b, NUM_MOVES ld b, NUM_MOVES
ld c, $0 ld c, 0
.asm_34abf .asm_34abf
ld a, [hli] ld a, [hli]
and a and a
@@ -2090,14 +2095,14 @@ Function34aa7: ; 34aa7
ld hl, BattleMonType1 ld hl, BattleMonType1
call Function347d3 call Function347d3
ld a, [$d265] ld a, [$d265]
cp $a cp 10
jr c, .asm_34ae9 jr c, .asm_34ae9
ld e, $1 ld e, 1
cp $b cp 11
jr c, .asm_34ae9 jr c, .asm_34ae9
ld e, $2 ld e, 2
jr .asm_34aef jr .asm_34aef
.asm_34ae9 .asm_34ae9
@@ -2157,8 +2162,8 @@ Function34aa7: ; 34aa7
Function34b20: ; 34b20 Function34b20: ; 34b20
push bc push bc
ld hl, OTPartySpecies ld hl, OTPartySpecies
ld b, $20 ld b, 1 << (PARTY_LENGTH - 1)
ld c, $0 ld c, 0
.asm_34b28 .asm_34b28
ld a, [hli] ld a, [hli]
@@ -2350,7 +2355,7 @@ BattleCommand09: ; 34d32
call .ThunderRain call .ThunderRain
ret z ret z
call .UnleashedEnergy call .XAccuracy
ret nz ret nz
; Perfect-accuracy moves ; Perfect-accuracy moves
@@ -2545,11 +2550,10 @@ BattleCommand09: ; 34d32
ret ret
.UnleashedEnergy .XAccuracy
; Return nz if unleashing energy from Bide.
ld a, BATTLE_VARS_SUBSTATUS4 ld a, BATTLE_VARS_SUBSTATUS4
call GetBattleVar call GetBattleVar
bit SUBSTATUS_UNLEASH, a bit SUBSTATUS_X_ACCURACY, a
ret ret
@@ -6915,8 +6919,9 @@ BattleCommand21: ; 36671
ld a, BATTLE_VARS_SUBSTATUS3 ld a, BATTLE_VARS_SUBSTATUS3
call GetBattleVar call GetBattleVar
bit 0, a bit SUBSTATUS_BIDE, a
ret z ret z
ld hl, PlayerRolloutCount ld hl, PlayerRolloutCount
ld a, [hBattleTurn] ld a, [hBattleTurn]
and a and a
@@ -6925,9 +6930,10 @@ BattleCommand21: ; 36671
.asm_36684 .asm_36684
dec [hl] dec [hl]
jr nz, .asm_366dc jr nz, .asm_366dc
ld a, BATTLE_VARS_SUBSTATUS3 ld a, BATTLE_VARS_SUBSTATUS3
call GetBattleVarAddr call GetBattleVarAddr
res 0, [hl] res SUBSTATUS_BIDE, [hl]
ld hl, UnleashedEnergyText ld hl, UnleashedEnergyText
call StdBattleTextBox call StdBattleTextBox
@@ -6988,13 +6994,13 @@ BattleCommand22: ; 366e5
ld bc, PlayerRolloutCount ld bc, PlayerRolloutCount
ld a, [hBattleTurn] ld a, [hBattleTurn]
and a and a
jr z, .asm_366f6 ; 366ee $6 jr z, .asm_366f6
ld de, $c684 ld de, $c684
ld bc, EnemyRolloutCount ld bc, EnemyRolloutCount
.asm_366f6 .asm_366f6
ld a, BATTLE_VARS_SUBSTATUS3 ld a, BATTLE_VARS_SUBSTATUS3
call GetBattleVarAddr call GetBattleVarAddr
set 0, [hl] set SUBSTATUS_BIDE, [hl]
xor a xor a
ld [de], a ld [de], a
inc de inc de
@@ -7002,11 +7008,11 @@ BattleCommand22: ; 366e5
ld [wPlayerMoveStruct + MOVE_EFFECT], a ld [wPlayerMoveStruct + MOVE_EFFECT], a
ld [wEnemyMoveStruct + MOVE_EFFECT], a ld [wEnemyMoveStruct + MOVE_EFFECT], a
call BattleRandom call BattleRandom
and $1 and 1
inc a inc a
inc a inc a
ld [bc], a ld [bc], a
ld a, $1 ld a, 1
ld [$c689], a ld [$c689], a
call AnimateCurrentMove call AnimateCurrentMove
jp EndMoveEffect jp EndMoveEffect
@@ -7219,7 +7225,7 @@ BattleCommand23: ; 3680f
ld a, [wPlayerMoveStruct + MOVE_ANIM] ld a, [wPlayerMoveStruct + MOVE_ANIM]
jp .asm_36975 jp .asm_36975
.asm_36869 .asm_36869
call Function349f4 call CountEnemyAliveMons
jr c, .asm_368ca ; 3686c $5c jr c, .asm_368ca ; 3686c $5c
ld a, [$c70f] ld a, [$c70f]
and a and a

View File

@@ -109,15 +109,18 @@ SUBSTATUS_LEECH_SEED EQU 7
SUBSTATUS_RAGE EQU 6 SUBSTATUS_RAGE EQU 6
SUBSTATUS_RECHARGE EQU 5 SUBSTATUS_RECHARGE EQU 5
SUBSTATUS_SUBSTITUTE EQU 4 SUBSTATUS_SUBSTITUTE EQU 4
; EQU 3
SUBSTATUS_FOCUS_ENERGY EQU 2 SUBSTATUS_FOCUS_ENERGY EQU 2
SUBSTATUS_MIST EQU 1 SUBSTATUS_MIST EQU 1
SUBSTATUS_UNLEASH EQU 0 SUBSTATUS_X_ACCURACY EQU 0
SUBSTATUS_CANT_RUN EQU 7 SUBSTATUS_CANT_RUN EQU 7
SUBSTATUS_DESTINY_BOND EQU 6 SUBSTATUS_DESTINY_BOND EQU 6
SUBSTATUS_LOCK_ON EQU 5 SUBSTATUS_LOCK_ON EQU 5
SUBSTATUS_ENCORED EQU 4 SUBSTATUS_ENCORED EQU 4
SUBSTATUS_TRANSFORMED EQU 3 SUBSTATUS_TRANSFORMED EQU 3
; EQU 2
; EQU 1
SUBSTATUS_TOXIC EQU 0 SUBSTATUS_TOXIC EQU 0
; environmental ; environmental

View File

@@ -73,3 +73,18 @@ STEP_TURN EQU 5
STEP_BACK_LEDGE EQU 6 STEP_BACK_LEDGE EQU 6
STEP_WALK_IN_PLACE EQU 7 STEP_WALK_IN_PLACE EQU 7
; ai
CONTEXT_USE_F EQU 6
UNKNOWN_USE_F EQU 5
ALWAYS_USE_F EQU 4
SWITCH_SOMETIMES_F EQU 2
SWITCH_RARELY_F EQU 1
SWITCH_OFTEN_F EQU 0
CONTEXT_USE EQU 1 << CONTEXT_USE_F
UNKNOWN_USE EQU 1 << UNKNOWN_USE_F
ALWAYS_USE EQU 1 << ALWAYS_USE_F
SWITCH_SOMETIMES EQU 1 << SWITCH_SOMETIMES_F
SWITCH_RARELY EQU 1 << SWITCH_RARELY_F
SWITCH_OFTEN EQU 1 << SWITCH_OFTEN_F

313
main.asm
View File

@@ -41681,202 +41681,204 @@ TrainerClassNames:: ; 2c1ef
Function2c41a: ; 2c41a (b:441a) AI_Redundant: ; 2c41a
; More move AI. ; Check if move effect c will fail because it's already been used.
ld a, c ld a, c
ld de, 3 ld de, 3
ld hl, Unknown_2c42c ld hl, .Moves
call IsInArray call IsInArray
jp nc, Function2c545 jp nc, .NotRedundant
inc hl inc hl
ld a, [hli] ld a, [hli]
ld h, [hl] ld h, [hl]
ld l, a ld l, a
jp [hl] jp [hl]
; 2c42c (b:442c)
Unknown_2c42c: ; 2c42c .Moves: ; 2c42c
dbw EFFECT_DREAM_EATER, Function2c524 dbw EFFECT_DREAM_EATER, .DreamEater
dbw EFFECT_HEAL, Function2c539 dbw EFFECT_HEAL, .Heal
dbw EFFECT_LIGHT_SCREEN, Function2c487 dbw EFFECT_LIGHT_SCREEN, .LightScreen
dbw EFFECT_MIST, Function2c48d dbw EFFECT_MIST, .Mist
dbw EFFECT_FOCUS_ENERGY, Function2c493 dbw EFFECT_FOCUS_ENERGY, .FocusEnergy
dbw EFFECT_CONFUSE, Function2c499 dbw EFFECT_CONFUSE, .Confuse
dbw EFFECT_TRANSFORM, Function2c4a5 dbw EFFECT_TRANSFORM, .Transform
dbw EFFECT_REFLECT, Function2c4ab dbw EFFECT_REFLECT, .Reflect
dbw EFFECT_SUBSTITUTE, Function2c4b1 dbw EFFECT_SUBSTITUTE, .Substitute
dbw EFFECT_LEECH_SEED, Function2c4b7 dbw EFFECT_LEECH_SEED, .LeechSeed
dbw EFFECT_DISABLE, Function2c4bd dbw EFFECT_DISABLE, .Disable
dbw EFFECT_ENCORE, Function2c4c2 dbw EFFECT_ENCORE, .Encore
dbw EFFECT_SNORE, Function2c4c8 dbw EFFECT_SNORE, .Snore
dbw EFFECT_SLEEP_TALK, Function2c4c8 dbw EFFECT_SLEEP_TALK, .SleepTalk
dbw EFFECT_MEAN_LOOK, Function2c4d1 dbw EFFECT_MEAN_LOOK, .MeanLook
dbw EFFECT_NIGHTMARE, Function2c4d7 dbw EFFECT_NIGHTMARE, .Nightmare
dbw EFFECT_SPIKES, Function2c4e3 dbw EFFECT_SPIKES, .Spikes
dbw EFFECT_FORESIGHT, Function2c4e9 dbw EFFECT_FORESIGHT, .Foresight
dbw EFFECT_PERISH_SONG, Function2c4ef dbw EFFECT_PERISH_SONG, .PerishSong
dbw EFFECT_SANDSTORM, Function2c4f5 dbw EFFECT_SANDSTORM, .Sandstorm
dbw EFFECT_ATTRACT, Function2c4fe dbw EFFECT_ATTRACT, .Attract
dbw EFFECT_SAFEGUARD, Function2c50c dbw EFFECT_SAFEGUARD, .Safeguard
dbw EFFECT_RAIN_DANCE, Function2c512 dbw EFFECT_RAIN_DANCE, .RainDance
dbw EFFECT_SUNNY_DAY, Function2c51b dbw EFFECT_SUNNY_DAY, .SunnyDay
dbw EFFECT_TELEPORT, Function2c541 dbw EFFECT_TELEPORT, .Teleport
dbw EFFECT_MORNING_SUN, Function2c539 dbw EFFECT_MORNING_SUN, .MorningSun
dbw EFFECT_SYNTHESIS, Function2c539 dbw EFFECT_SYNTHESIS, .Synthesis
dbw EFFECT_MOONLIGHT, Function2c539 dbw EFFECT_MOONLIGHT, .Moonlight
dbw EFFECT_SWAGGER, Function2c52d dbw EFFECT_SWAGGER, .Swagger
dbw EFFECT_FUTURE_SIGHT, Function2c533 dbw EFFECT_FUTURE_SIGHT, .FutureSight
db $ff db -1
; 2c487
Function2c487: ; 2c487 .LightScreen: ; 2c487
ld a, [EnemyScreens] ; $c700 ld a, [EnemyScreens]
bit 3, a bit SCREENS_LIGHT_SCREEN, a
ret ret
Function2c48d: ; 2c48d .Mist: ; 2c48d
ld a, [EnemySubStatus4] ; $c670
bit 1, a
ret
Function2c493: ; 2c493
ld a, [EnemySubStatus4] ; $c670
bit 2, a
ret
Function2c499: ; 2c499
ld a, [PlayerSubStatus3] ; $c66a
bit 7, a
ret nz
ld a, [PlayerScreens] ; $c6ff
bit 2, a
ret
Function2c4a5: ; 2c4a5
ld a, [EnemySubStatus5] ; $c671
bit 3, a
ret
Function2c4ab: ; 2c4ab
ld a, [EnemyScreens] ; $c700
bit 4, a
ret
; 2c4b1 (b:44b1)
Function2c4b1: ; 2c4b1
ld a, [EnemySubStatus4] ld a, [EnemySubStatus4]
bit 4, a bit SUBSTATUS_MIST, a
ret ret
Function2c4b7: ; 2c4b7 .FocusEnergy: ; 2c493
ld a, [PlayerSubStatus4] ; $c66b ld a, [EnemySubStatus4]
bit 7, a bit SUBSTATUS_FOCUS_ENERGY, a
ret ret
Function2c4bd: ; 2c4bd .Confuse: ; 2c499
ld a, [PlayerDisableCount] ; $c675 ld a, [PlayerSubStatus3]
bit SUBSTATUS_CONFUSED, a
ret nz
ld a, [PlayerScreens]
bit SCREENS_SAFEGUARD, a
ret
.Transform: ; 2c4a5
ld a, [EnemySubStatus5]
bit SUBSTATUS_TRANSFORMED, a
ret
.Reflect: ; 2c4ab
ld a, [EnemyScreens]
bit SCREENS_REFLECT, a
ret
.Substitute: ; 2c4b1
ld a, [EnemySubStatus4]
bit SUBSTATUS_SUBSTITUTE, a
ret
.LeechSeed: ; 2c4b7
ld a, [PlayerSubStatus4]
bit SUBSTATUS_LEECH_SEED, a
ret
.Disable: ; 2c4bd
ld a, [PlayerDisableCount]
and a and a
ret ret
Function2c4c2: ; 2c4c2 .Encore: ; 2c4c2
ld a, [PlayerSubStatus5] ; $c66c ld a, [PlayerSubStatus5]
bit 4, a bit SUBSTATUS_ENCORED, a
ret ret
Function2c4c8: ; 2c4c8 .Snore:
ld a, [EnemyMonStatus] ; $d214 .SleepTalk: ; 2c4c8
and $7 ld a, [EnemyMonStatus]
jr z, Function2c541 and SLP
jr Function2c545 jr z, .Redundant
jr .NotRedundant
Function2c4d1: ; 2c4d1 .MeanLook: ; 2c4d1
ld a, [EnemySubStatus5] ; $c671 ld a, [EnemySubStatus5]
bit 7, a bit SUBSTATUS_CANT_RUN, a
ret ret
; 2c4d7 (b:44d7)
Function2c4d7: ; 2c4d7 .Nightmare: ; 2c4d7
ld a, [BattleMonStatus] ld a, [BattleMonStatus]
and a and a
jr z, Function2c541 jr z, .Redundant
ld a, [PlayerSubStatus1] ld a, [PlayerSubStatus1]
bit 0, a bit SUBSTATUS_NIGHTMARE, a
ret ret
Function2c4e3: ; 2c4e3 .Spikes: ; 2c4e3
ld a, [PlayerScreens] ; $c6ff ld a, [PlayerScreens]
bit 0, a bit SCREENS_SPIKES, a
ret ret
Function2c4e9: ; 2c4e9 .Foresight: ; 2c4e9
ld a, [PlayerSubStatus1] ; $c668 ld a, [PlayerSubStatus1]
bit 3, a bit SUBSTATUS_IDENTIFIED, a
ret ret
Function2c4ef: ; 2c4ef .PerishSong: ; 2c4ef
ld a, [PlayerSubStatus1] ; $c668 ld a, [PlayerSubStatus1]
bit 4, a bit SUBSTATUS_PERISH, a
ret ret
Function2c4f5: ; 2c4f5 .Sandstorm: ; 2c4f5
ld a, [Weather] ; $c70a ld a, [Weather]
cp $3 cp WEATHER_SANDSTORM
jr z, Function2c541 jr z, .Redundant
jr Function2c545 jr .NotRedundant
Function2c4fe: ; 2c4fe .Attract: ; 2c4fe
callba Function377f5 callba Function377f5
jr c, Function2c541 jr c, .Redundant
ld a, [PlayerSubStatus1] ; $c668 ld a, [PlayerSubStatus1]
bit 7, a bit SUBSTATUS_IN_LOVE, a
ret ret
Function2c50c: ; 2c50c .Safeguard: ; 2c50c
ld a, [EnemyScreens] ; $c700 ld a, [EnemyScreens]
bit 2, a bit SCREENS_SAFEGUARD, a
ret ret
Function2c512: ; 2c512 .RainDance: ; 2c512
ld a, [Weather] ; $c70a ld a, [Weather]
cp $1 cp WEATHER_RAIN
jr z, Function2c541 jr z, .Redundant
jr Function2c545 jr .NotRedundant
Function2c51b: ; 2c51b .SunnyDay: ; 2c51b
ld a, [Weather] ; $c70a ld a, [Weather]
cp $2 cp WEATHER_SUN
jr z, Function2c541 jr z, .Redundant
jr Function2c545 jr .NotRedundant
Function2c524: ; 2c524 .DreamEater: ; 2c524
ld a, [BattleMonStatus] ; $c63a ld a, [BattleMonStatus]
and $7 and SLP
jr z, Function2c541 jr z, .Redundant
jr Function2c545 jr .NotRedundant
Function2c52d: ; 2c52d .Swagger: ; 2c52d
ld a, [PlayerSubStatus3] ; $c66a ld a, [PlayerSubStatus3]
bit 7, a bit SUBSTATUS_CONFUSED, a
ret ret
Function2c533: ; 2c533 .FutureSight: ; 2c533
ld a, [EnemyScreens] ; $c700 ld a, [EnemyScreens]
bit 5, a bit 5, a
ret ret
Function2c539: ; 2c539 .Heal:
.MorningSun:
.Synthesis:
.Moonlight: ; 2c539
callba AICheckEnemyMaxHP callba AICheckEnemyMaxHP
jr nc, Function2c545 jr nc, .NotRedundant
Function2c541: ; 2c541 .Teleport:
ld a, $1 .Redundant: ; 2c541
ld a, 1
and a and a
ret ret
Function2c545: ; 2c545 (b:4545) .NotRedundant: ; 2c545
xor a xor a
ret ret
Function2c547: ; 2c547 Function2c547: ; 2c547
ld hl, UnknownText_0x2c5ef ld hl, UnknownText_0x2c5ef
call PrintText call PrintText
@@ -47151,7 +47153,7 @@ AIChooseMove: ; 440ce
jr z, .asm_4415e jr z, .asm_4415e
push bc push bc
ld d, $e ; BANK(TrainerAI) ld d, BANK(TrainerClassAttributes)
predef FlagPredef predef FlagPredef
ld d, c ld d, c
pop bc pop bc
@@ -47182,6 +47184,7 @@ AIChooseMove: ; 440ce
ld de, EnemyMonMoves ld de, EnemyMonMoves
ld c, EnemyMonMovesEnd - EnemyMonMoves ld c, EnemyMonMovesEnd - EnemyMonMoves
.asm_44166 .asm_44166
; If the enemy has no moves, this will infinite.
ld a, [de] ld a, [de]
inc de inc de
and a and a
@@ -47247,22 +47250,22 @@ AIChooseMove: ; 440ce
AIScoringPointers: ; 441af AIScoringPointers: ; 441af
dw AIScoring_RedStatus dw AI_Basic
dw AIScoring_RedStatMods dw AI_Setup
dw AIScoring_RedSuperEffective dw AI_Types
dw AIScoring_Offensive dw AI_Offensive
dw AIScoring_Smart dw AI_Smart
dw AIScoring_Opportunist dw AI_Opportunist
dw AIScoring_Aggressive dw AI_Aggressive
dw AIScoring_Cautious dw AI_Cautious
dw AIScoring_StatusImmunity dw AI_Status
dw AIScoring_Risky dw AI_Risky
dw AIScoring_None dw AI_None
dw AIScoring_None dw AI_None
dw AIScoring_None dw AI_None
dw AIScoring_None dw AI_None
dw AIScoring_None dw AI_None
dw AIScoring_None dw AI_None
; 441cf ; 441cf

View File

@@ -1,13 +1,13 @@
NO_AI EQU 0
AI_STATUS_RED EQU 1 << 0 AI_BASIC EQU 1 << 0
AI_STAT_MODS_RED EQU 1 << 1 AI_SETUP EQU 1 << 1
AI_TYPES_RED EQU 1 << 2 AI_TYPES EQU 1 << 2
AI_OFFENSIVE EQU 1 << 3 AI_OFFENSIVE EQU 1 << 3
AI_SMART EQU 1 << 4 AI_SMART EQU 1 << 4
AI_OPPORTUNIST EQU 1 << 5 AI_OPPORTUNIST EQU 1 << 5
AI_AGGRESSIVE EQU 1 << 6 AI_AGGRESSIVE EQU 1 << 6
AI_CAUTIOUS EQU 1 << 7 AI_CAUTIOUS EQU 1 << 7
AI_STATUS_IMMUNE EQU 1 << 8 AI_STATUS EQU 1 << 8
AI_RISKY EQU 1 << 9 AI_RISKY EQU 1 << 9
AI_10 EQU 1 << 10 AI_10 EQU 1 << 10
AI_11 EQU 1 << 11 AI_11 EQU 1 << 11
@@ -22,404 +22,404 @@ TrainerClassAttributes: ; 3959c
; Falkner ; Falkner
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Whitney ; Whitney
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Bugsy ; Bugsy
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Morty ; Morty
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Pryce ; Pryce
db HYPER_POTION, NONE ; items db HYPER_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Jasmine ; Jasmine
db HYPER_POTION, NONE ; items db HYPER_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Chuck ; Chuck
db FULL_HEAL, NONE ; items db FULL_HEAL, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Clair ; Clair
db FULL_HEAL, HYPER_POTION ; items db FULL_HEAL, HYPER_POTION ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Rival1 ; Rival1
db NONE, NONE ; items db NONE, NONE ; items
db 15 ; base reward db 15 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Pokemon Prof ; Pokemon Prof
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_AGGRESSIVE | AI_STATUS_IMMUNE dw AI_BASIC + AI_AGGRESSIVE + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Will ; Will
db MAX_POTION, NONE ; items db MAX_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Cal ; Cal
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Bruno ; Bruno
db MAX_POTION, NONE ; items db MAX_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Karen ; Karen
db FULL_HEAL, MAX_POTION ; items db FULL_HEAL, MAX_POTION ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Koga ; Koga
db FULL_HEAL, FULL_RESTORE ; items db FULL_HEAL, FULL_RESTORE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Champion ; Champion
db FULL_HEAL, FULL_RESTORE ; items db FULL_HEAL, FULL_RESTORE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Brock ; Brock
db HYPER_POTION, NONE ; items db HYPER_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Misty ; Misty
db FULL_HEAL, NONE ; items db FULL_HEAL, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Lt Surge ; Lt Surge
db HYPER_POTION, NONE ; items db HYPER_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Scientist ; Scientist
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_TYPES + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Erika ; Erika
db HYPER_POTION, NONE ; items db HYPER_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Youngster ; Youngster
db NONE, NONE ; items db NONE, NONE ; items
db 4 ; base reward db 4 ; base reward
dw AI_STATUS_RED | AI_STATUS_IMMUNE dw AI_BASIC + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Schoolboy ; Schoolboy
db NONE, NONE ; items db NONE, NONE ; items
db 8 ; base reward db 8 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_TYPES + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS
db $41, $00 dw CONTEXT_USE + SWITCH_OFTEN
; Bird Keeper ; Bird Keeper
db NONE, NONE ; items db NONE, NONE ; items
db 6 ; base reward db 6 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_OFFENSIVE + AI_OPPORTUNIST + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Lass ; Lass
db NONE, NONE ; items db NONE, NONE ; items
db 6 ; base reward db 6 ; base reward
dw AI_STATUS_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_CAUTIOUS + AI_STATUS
db $41, $00 dw CONTEXT_USE + SWITCH_OFTEN
; Janine ; Janine
db DIRE_HIT, NONE ; items db DIRE_HIT, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Cooltrainerm ; Cooltrainerm
db NONE, NONE ; items db NONE, NONE ; items
db 12 ; base reward db 12 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Cooltrainerf ; Cooltrainerf
db NONE, NONE ; items db NONE, NONE ; items
db 12 ; base reward db 12 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Beauty ; Beauty
db NONE, NONE ; items db NONE, NONE ; items
db 22 ; base reward db 22 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Pokemaniac ; Pokemaniac
db NONE, NONE ; items db NONE, NONE ; items
db 15 ; base reward db 15 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_OFFENSIVE | AI_AGGRESSIVE | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_OFFENSIVE + AI_AGGRESSIVE + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Gruntm ; Gruntm
db NONE, NONE ; items db NONE, NONE ; items
db 10 ; base reward db 10 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_TYPES + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Gentleman ; Gentleman
db NONE, NONE ; items db NONE, NONE ; items
db 18 ; base reward db 18 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_AGGRESSIVE | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_AGGRESSIVE + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Skier ; Skier
db NONE, NONE ; items db NONE, NONE ; items
db 18 ; base reward db 18 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_TYPES + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Teacher ; Teacher
db NONE, NONE ; items db NONE, NONE ; items
db 18 ; base reward db 18 ; base reward
dw AI_STATUS_RED | AI_OPPORTUNIST | AI_AGGRESSIVE | AI_STATUS_IMMUNE dw AI_BASIC + AI_OPPORTUNIST + AI_AGGRESSIVE + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Sabrina ; Sabrina
db HYPER_POTION, NONE ; items db HYPER_POTION, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Bug Catcher ; Bug Catcher
db NONE, NONE ; items db NONE, NONE ; items
db 4 ; base reward db 4 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Fisher ; Fisher
db NONE, NONE ; items db NONE, NONE ; items
db 10 ; base reward db 10 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS
db $41, $00 dw CONTEXT_USE + SWITCH_OFTEN
; Swimmerm ; Swimmerm
db NONE, NONE ; items db NONE, NONE ; items
db 2 ; base reward db 2 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_OFFENSIVE | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_TYPES + AI_OFFENSIVE + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Swimmerf ; Swimmerf
db NONE, NONE ; items db NONE, NONE ; items
db 5 ; base reward db 5 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_TYPES + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Sailor ; Sailor
db NONE, NONE ; items db NONE, NONE ; items
db 10 ; base reward db 10 ; base reward
dw AI_STATUS_RED | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS_IMMUNE dw AI_BASIC + AI_OFFENSIVE + AI_OPPORTUNIST + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Super Nerd ; Super Nerd
db NONE, NONE ; items db NONE, NONE ; items
db 8 ; base reward db 8 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_SMART + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Rival2 ; Rival2
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Guitarist ; Guitarist
db NONE, NONE ; items db NONE, NONE ; items
db 8 ; base reward db 8 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_TYPES + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Hiker ; Hiker
db NONE, NONE ; items db NONE, NONE ; items
db 8 ; base reward db 8 ; base reward
dw AI_STATUS_RED | AI_OFFENSIVE | AI_STATUS_IMMUNE dw AI_BASIC + AI_OFFENSIVE + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Biker ; Biker
db NONE, NONE ; items db NONE, NONE ; items
db 8 ; base reward db 8 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_TYPES + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Blaine ; Blaine
db MAX_POTION, FULL_HEAL ; items db MAX_POTION, FULL_HEAL ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Burglar ; Burglar
db NONE, NONE ; items db NONE, NONE ; items
db 22 ; base reward db 22 ; base reward
dw AI_STATUS_RED | AI_OFFENSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_OFFENSIVE + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Firebreather ; Firebreather
db NONE, NONE ; items db NONE, NONE ; items
db 12 ; base reward db 12 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS_IMMUNE dw AI_BASIC + AI_SETUP + AI_OFFENSIVE + AI_OPPORTUNIST + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Juggler ; Juggler
db NONE, NONE ; items db NONE, NONE ; items
db 10 ; base reward db 10 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_SMART + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Blackbelt T ; Blackbelt T
db NONE, NONE ; items db NONE, NONE ; items
db 6 ; base reward db 6 ; base reward
dw AI_STATUS_RED | AI_OFFENSIVE | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_OFFENSIVE + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Executivem ; Executivem
db NONE, NONE ; items db NONE, NONE ; items
db 18 ; base reward db 18 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_TYPES + AI_SMART + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Psychic T ; Psychic T
db NONE, NONE ; items db NONE, NONE ; items
db 8 ; base reward db 8 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Picnicker ; Picnicker
db NONE, NONE ; items db NONE, NONE ; items
db 5 ; base reward db 5 ; base reward
dw AI_STATUS_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Camper ; Camper
db NONE, NONE ; items db NONE, NONE ; items
db 5 ; base reward db 5 ; base reward
dw AI_STATUS_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Executivef ; Executivef
db NONE, NONE ; items db NONE, NONE ; items
db 18 ; base reward db 18 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_TYPES + AI_SMART + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Sage ; Sage
db NONE, NONE ; items db NONE, NONE ; items
db 8 ; base reward db 8 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_TYPES + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Medium ; Medium
db NONE, NONE ; items db NONE, NONE ; items
db 10 ; base reward db 10 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_TYPES_RED | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_TYPES + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Boarder ; Boarder
db NONE, NONE ; items db NONE, NONE ; items
db 18 ; base reward db 18 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_OPPORTUNIST + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Pokefanm ; Pokefanm
db NONE, NONE ; items db NONE, NONE ; items
db 20 ; base reward db 20 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_SMART + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Kimono Girl ; Kimono Girl
db NONE, NONE ; items db NONE, NONE ; items
db 18 ; base reward db 18 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Twins ; Twins
db NONE, NONE ; items db NONE, NONE ; items
db 5 ; base reward db 5 ; base reward
dw NONE dw NO_AI
db $41, $00 dw CONTEXT_USE + SWITCH_OFTEN
; Pokefanf ; Pokefanf
db NONE, NONE ; items db NONE, NONE ; items
db 20 ; base reward db 20 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_SMART | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_SMART + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Red ; Red
db FULL_RESTORE, FULL_RESTORE ; items db FULL_RESTORE, FULL_RESTORE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Blue ; Blue
db FULL_RESTORE, FULL_RESTORE ; items db FULL_RESTORE, FULL_RESTORE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Officer ; Officer
db NONE, NONE ; items db NONE, NONE ; items
db 10 ; base reward db 10 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_STATUS_IMMUNE dw AI_BASIC + AI_TYPES + AI_OPPORTUNIST + AI_STATUS
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Gruntf ; Gruntf
db NONE, NONE ; items db NONE, NONE ; items
db 10 ; base reward db 10 ; base reward
dw AI_STATUS_RED | AI_TYPES_RED | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_TYPES + AI_OPPORTUNIST + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; Mysticalman ; Mysticalman
db NONE, NONE ; items db NONE, NONE ; items
db 25 ; base reward db 25 ; base reward
dw AI_STATUS_RED | AI_STAT_MODS_RED | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS_IMMUNE | AI_RISKY dw AI_BASIC + AI_SETUP + AI_SMART + AI_AGGRESSIVE + AI_CAUTIOUS + AI_STATUS + AI_RISKY
db $44, $00 dw CONTEXT_USE + SWITCH_SOMETIMES
; 39771 ; 39771