mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-17 02:40:50 +12:00
More trainer AI: status healing items, stat-raising items
hg-commit-id: dd1cceb189ec
This commit is contained in:
parent
1f4d36f5e8
commit
abf21e5383
225
pokered.asm
225
pokered.asm
|
@ -4,6 +4,16 @@ RGB: MACRO
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
; wram locations
|
; wram locations
|
||||||
|
W_OPPONENTSTATUS EQU $CFE9 ; active opponent's status condition
|
||||||
|
; bit 0 slp
|
||||||
|
; bit 1 slp
|
||||||
|
; bit 2 slp
|
||||||
|
; bit 3 psn
|
||||||
|
; bit 4 brn
|
||||||
|
; bit 5 frz
|
||||||
|
; bit 6 par
|
||||||
|
; unused? (XXX confirm)
|
||||||
|
|
||||||
W_CUROPPONENT EQU $D059 ; in a wild battle, this is the species of pokemon
|
W_CUROPPONENT EQU $D059 ; in a wild battle, this is the species of pokemon
|
||||||
; in a trainer battle, this is the trainer class
|
; in a trainer battle, this is the trainer class
|
||||||
|
|
||||||
|
@ -3456,17 +3466,17 @@ JugglerAI:
|
||||||
BlackbeltAI:
|
BlackbeltAI:
|
||||||
cp $20
|
cp $20
|
||||||
ret nc
|
ret nc
|
||||||
jp $67F2
|
jp AIUseXAttack
|
||||||
|
|
||||||
GiovanniAI:
|
GiovanniAI:
|
||||||
cp $40
|
cp $40
|
||||||
ret nc
|
ret nc
|
||||||
jp $67B5
|
jp AIUseGuardSpec
|
||||||
|
|
||||||
CooltrainerMAI:
|
CooltrainerMAI:
|
||||||
cp $40
|
cp $40
|
||||||
ret nc
|
ret nc
|
||||||
jp $67F2
|
jp AIUseXAttack
|
||||||
|
|
||||||
CooltrainerFAI:
|
CooltrainerFAI:
|
||||||
cp $40
|
cp $40
|
||||||
|
@ -3479,7 +3489,8 @@ CooltrainerFAI:
|
||||||
jp $672A
|
jp $672A
|
||||||
|
|
||||||
BrockAI:
|
BrockAI:
|
||||||
ld a,[$CFE9]
|
; if his active monster has a status condition, use a full heal
|
||||||
|
ld a,[W_OPPONENTSTATUS]
|
||||||
and a
|
and a
|
||||||
ret z
|
ret z
|
||||||
jp $6786
|
jp $6786
|
||||||
|
@ -3487,12 +3498,12 @@ BrockAI:
|
||||||
MistyAI:
|
MistyAI:
|
||||||
cp $40
|
cp $40
|
||||||
ret nc
|
ret nc
|
||||||
jp $67F8
|
jp AIUseXDefend
|
||||||
|
|
||||||
LtSurgeAI:
|
LtSurgeAI:
|
||||||
cp $40
|
cp $40
|
||||||
ret nc
|
ret nc
|
||||||
jp $67FE
|
jp AIUseXSpeed
|
||||||
|
|
||||||
ErikaAI:
|
ErikaAI:
|
||||||
cp $80
|
cp $80
|
||||||
|
@ -3505,7 +3516,7 @@ ErikaAI:
|
||||||
KogaAI:
|
KogaAI:
|
||||||
cp $40
|
cp $40
|
||||||
ret nc
|
ret nc
|
||||||
jp $67F2
|
jp AIUseXAttack
|
||||||
|
|
||||||
BlaineAI:
|
BlaineAI:
|
||||||
cp $40
|
cp $40
|
||||||
|
@ -3534,7 +3545,7 @@ Sony3AI:
|
||||||
ld a,5
|
ld a,5
|
||||||
call $67CF
|
call $67CF
|
||||||
ret nc
|
ret nc
|
||||||
jp $66A0
|
jp AIUseFullRestore
|
||||||
|
|
||||||
LoreleiAI:
|
LoreleiAI:
|
||||||
cp $80
|
cp $80
|
||||||
|
@ -3547,7 +3558,7 @@ LoreleiAI:
|
||||||
BrunoAI:
|
BrunoAI:
|
||||||
cp $40
|
cp $40
|
||||||
ret nc
|
ret nc
|
||||||
jp $67F8
|
jp AIUseXDefend
|
||||||
|
|
||||||
AgathaAI:
|
AgathaAI:
|
||||||
cp $14
|
cp $14
|
||||||
|
@ -3585,10 +3596,9 @@ Function669B: ; 669B
|
||||||
ld a,$8E
|
ld a,$8E
|
||||||
jp $3740
|
jp $3740
|
||||||
|
|
||||||
Function66A0: ; 66A0
|
AIUseFullRestore:
|
||||||
; XXX what does this do
|
call AICureStatus
|
||||||
call $6791
|
ld a,FULL_RESTORE
|
||||||
ld a,$10
|
|
||||||
ld [$CF05],a
|
ld [$CF05],a
|
||||||
ld de,$CEEB
|
ld de,$CEEB
|
||||||
ld hl,$CFE7
|
ld hl,$CFE7
|
||||||
|
@ -3678,7 +3688,194 @@ Function6718: ; 6718
|
||||||
call $3E6D
|
call $3E6D
|
||||||
jp $6695
|
jp $6695
|
||||||
|
|
||||||
INCBIN "baserom.gbc",$3A72A,$3C000 - $3A72A
|
Function672A: ; 672A
|
||||||
|
ld a,[$D89C]
|
||||||
|
ld c,a
|
||||||
|
ld hl,$D8A5
|
||||||
|
ld d,0
|
||||||
|
.next2\@
|
||||||
|
ld a,[hli]
|
||||||
|
ld b,a
|
||||||
|
ld a,[hld]
|
||||||
|
or b
|
||||||
|
jr z,.next\@
|
||||||
|
inc d
|
||||||
|
.next\@
|
||||||
|
push bc
|
||||||
|
ld bc,$2C
|
||||||
|
add hl,bc
|
||||||
|
pop bc
|
||||||
|
dec c
|
||||||
|
jr nz,.next2\@
|
||||||
|
ld a,d
|
||||||
|
cp 2
|
||||||
|
jp nc,Function674B
|
||||||
|
and a
|
||||||
|
ret
|
||||||
|
|
||||||
|
Function674B: ; 674B
|
||||||
|
ld a,[$CFE8] ; pokemon in party to switch to?
|
||||||
|
|
||||||
|
; copy current enemy hp and two more bytes (XXX) to a position in the party
|
||||||
|
ld hl,$D8A5
|
||||||
|
ld bc,$2C
|
||||||
|
call AddNTimes
|
||||||
|
ld d,h
|
||||||
|
ld e,l
|
||||||
|
ld hl,$CFE6
|
||||||
|
ld bc,4
|
||||||
|
call CopyData
|
||||||
|
|
||||||
|
ld hl,BattleWithdrawText
|
||||||
|
call $3C49 ; print text
|
||||||
|
ld a,1
|
||||||
|
ld [$D11D],a
|
||||||
|
ld hl,$490E
|
||||||
|
ld b,$F
|
||||||
|
call $35D6 ; bankswitch
|
||||||
|
xor a
|
||||||
|
ld [$D11D],a
|
||||||
|
ld a,[$D12B]
|
||||||
|
cp 4
|
||||||
|
ret z
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
BattleWithdrawText:
|
||||||
|
db $17
|
||||||
|
dw $40BE
|
||||||
|
db $22
|
||||||
|
db $50
|
||||||
|
|
||||||
|
AIUseFullHeal:
|
||||||
|
call $669B
|
||||||
|
call AICureStatus
|
||||||
|
ld a,FULL_HEAL
|
||||||
|
jp AIPrintItemUse
|
||||||
|
|
||||||
|
AICureStatus:
|
||||||
|
ld a,[$CFE8]
|
||||||
|
ld hl,$D8A8
|
||||||
|
ld bc,$2C
|
||||||
|
call AddNTimes
|
||||||
|
xor a
|
||||||
|
ld [hl],a ; clear status in enemy team roster
|
||||||
|
ld [W_OPPONENTSTATUS],a ; clear status of active enemy
|
||||||
|
ld hl,$D069
|
||||||
|
res 0,[hl]
|
||||||
|
ret
|
||||||
|
|
||||||
|
AIUseXAccuracy: ; unused
|
||||||
|
call $669B
|
||||||
|
ld hl,$D068
|
||||||
|
set 0,[hl]
|
||||||
|
ld a,X_ACCURACY
|
||||||
|
jp AIPrintItemUse
|
||||||
|
|
||||||
|
AIUseGuardSpec:
|
||||||
|
call $669B
|
||||||
|
ld hl,$D068
|
||||||
|
set 1,[hl]
|
||||||
|
ld a,GUARD_SPEC_
|
||||||
|
jp AIPrintItemUse
|
||||||
|
|
||||||
|
AIUseDireHit: ; unused
|
||||||
|
call $669B
|
||||||
|
ld hl,$D068
|
||||||
|
set 2,[hl]
|
||||||
|
ld a,DIRE_HIT
|
||||||
|
jp AIPrintItemUse
|
||||||
|
|
||||||
|
Function67CF: ; 67CF
|
||||||
|
ld [$FF99],a
|
||||||
|
ld hl,$CFF4
|
||||||
|
ld a,[hli]
|
||||||
|
ld [$FF95],a
|
||||||
|
ld a,[hl]
|
||||||
|
ld [$FF96],a
|
||||||
|
ld b,2
|
||||||
|
call $38B9
|
||||||
|
ld a,[$FF98]
|
||||||
|
ld c,a
|
||||||
|
ld a,[$FF97]
|
||||||
|
ld b,a
|
||||||
|
ld hl,$CFE7
|
||||||
|
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
|
||||||
|
|
||||||
|
AIUseXAttack:
|
||||||
|
ld b,$A
|
||||||
|
ld a,X_ATTACK
|
||||||
|
jr AIIncreaseStat
|
||||||
|
|
||||||
|
AIUseXDefend:
|
||||||
|
ld b,$B
|
||||||
|
ld a,X_DEFEND
|
||||||
|
jr AIIncreaseStat
|
||||||
|
|
||||||
|
AIUseXSpeed:
|
||||||
|
ld b,$C
|
||||||
|
ld a,X_SPEED
|
||||||
|
jr AIIncreaseStat
|
||||||
|
|
||||||
|
AIUseXSpecial:
|
||||||
|
ld b,$D
|
||||||
|
ld a,X_SPECIAL
|
||||||
|
; fallthrough
|
||||||
|
|
||||||
|
AIIncreaseStat:
|
||||||
|
ld [$CF05],a
|
||||||
|
push bc
|
||||||
|
call AIPrintItemUse_
|
||||||
|
pop bc
|
||||||
|
ld hl,$CFCD
|
||||||
|
ld a,[hld]
|
||||||
|
push af
|
||||||
|
ld a,[hl]
|
||||||
|
push af
|
||||||
|
push hl
|
||||||
|
ld a,$AF
|
||||||
|
ld [hli],a
|
||||||
|
ld [hl],b
|
||||||
|
ld hl,$7428
|
||||||
|
ld b,$F
|
||||||
|
call $35D6 ; bankswitch
|
||||||
|
pop hl
|
||||||
|
pop af
|
||||||
|
ld [hli],a
|
||||||
|
pop af
|
||||||
|
ld [hl],a
|
||||||
|
jp $6695
|
||||||
|
|
||||||
|
AIPrintItemUse:
|
||||||
|
ld [$CF05],a
|
||||||
|
call AIPrintItemUse_
|
||||||
|
jp $6695
|
||||||
|
|
||||||
|
AIPrintItemUse_:
|
||||||
|
; print "x used [$CF05] on z!"
|
||||||
|
ld a,[$CF05]
|
||||||
|
ld [$D11E],a
|
||||||
|
call $2FCF ; get item name
|
||||||
|
ld hl,AIBattleUseItemText
|
||||||
|
jp $3C49 ; print text
|
||||||
|
|
||||||
|
AIBattleUseItemText:
|
||||||
|
db $17
|
||||||
|
dw $40D5
|
||||||
|
db $22
|
||||||
|
db $50
|
||||||
|
|
||||||
|
|
||||||
|
INCBIN "baserom.gbc",$3A849,$3C000 - $3A849
|
||||||
|
|
||||||
SECTION "bankF",DATA,BANK[$F]
|
SECTION "bankF",DATA,BANK[$F]
|
||||||
INCBIN "baserom.gbc",$3C000,$4000
|
INCBIN "baserom.gbc",$3C000,$4000
|
||||||
|
|
Loading…
Reference in a new issue