mirror of
https://github.com/pret/pokered.git
synced 2024-10-23 06:58:24 +00:00
bd533aa79b
Using 'Coord =' doesn't like using wTileMap So use hlCoord, deCoord, bcCoord, aCoord, Coorda, or dwCoord to avoid static addresses
302 lines
5.3 KiB
NASM
Executable file
302 lines
5.3 KiB
NASM
Executable file
HealEffect_: ; 3b9ec (e:79ec)
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
ld de, wBattleMonHP ; wd015
|
|
ld hl, wBattleMonMaxHP ; wd023
|
|
ld a, [W_PLAYERMOVENUM] ; wcfd2
|
|
jr z, .asm_3ba03
|
|
ld de, wEnemyMonHP ; wEnemyMonHP
|
|
ld hl, wEnemyMonMaxHP ; wEnemyMonMaxHP
|
|
ld a, [W_ENEMYMOVENUM] ; W_ENEMYMOVENUM
|
|
.asm_3ba03
|
|
ld b, a
|
|
ld a, [de]
|
|
cp [hl]
|
|
inc de
|
|
inc hl
|
|
ld a, [de]
|
|
sbc [hl]
|
|
jp z, Func_3ba97
|
|
ld a, b
|
|
cp REST
|
|
jr nz, .asm_3ba37
|
|
push hl
|
|
push de
|
|
push af
|
|
ld c, $32
|
|
call DelayFrames
|
|
ld hl, wBattleMonStatus ; wBattleMonStatus
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
jr z, .asm_3ba25
|
|
ld hl, wEnemyMonStatus ; wcfe9
|
|
.asm_3ba25
|
|
ld a, [hl]
|
|
and a
|
|
ld [hl], 2 ; Number of turns from Rest
|
|
ld hl, StartedSleepingEffect ; $7aa2
|
|
jr z, .asm_3ba31
|
|
ld hl, FellAsleepBecameHealthyText ; $7aa7
|
|
.asm_3ba31
|
|
call PrintText
|
|
pop af
|
|
pop de
|
|
pop hl
|
|
.asm_3ba37
|
|
ld a, [hld]
|
|
ld [wHPBarMaxHP], a
|
|
ld c, a
|
|
ld a, [hl]
|
|
ld [wHPBarMaxHP+1], a
|
|
ld b, a
|
|
jr z, .asm_3ba47
|
|
srl b
|
|
rr c
|
|
.asm_3ba47
|
|
ld a, [de]
|
|
ld [wHPBarOldHP], a
|
|
add c
|
|
ld [de], a
|
|
ld [wHPBarNewHP], a
|
|
dec de
|
|
ld a, [de]
|
|
ld [wHPBarOldHP+1], a
|
|
adc b
|
|
ld [de], a
|
|
ld [wHPBarNewHP+1], a
|
|
inc hl
|
|
inc de
|
|
ld a, [de]
|
|
dec de
|
|
sub [hl]
|
|
dec hl
|
|
ld a, [de]
|
|
sbc [hl]
|
|
jr c, .asm_3ba6f
|
|
ld a, [hli]
|
|
ld [de], a
|
|
ld [wHPBarNewHP+1], a
|
|
inc de
|
|
ld a, [hl]
|
|
ld [de], a
|
|
ld [wHPBarNewHP], a
|
|
.asm_3ba6f
|
|
ld hl, Func_3fba8 ; $7ba8
|
|
call BankswitchEtoF
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
hlCoord 10, 9
|
|
ld a, $1
|
|
jr z, .asm_3ba83
|
|
hlCoord 2, 2
|
|
xor a
|
|
.asm_3ba83
|
|
ld [wListMenuID], a ; wListMenuID
|
|
predef UpdateHPBar2
|
|
ld hl, Func_3cd5a ; $4d5a
|
|
call BankswitchEtoF
|
|
ld hl, RegainedHealthText ; $7aac
|
|
jp PrintText
|
|
|
|
Func_3ba97: ; 3ba97 (e:7a97)
|
|
ld c, $32
|
|
call DelayFrames
|
|
ld hl, PrintButItFailedText_
|
|
jp BankswitchEtoF
|
|
|
|
StartedSleepingEffect: ; 3baa2 (e:7aa2)
|
|
TX_FAR _StartedSleepingEffect
|
|
db "@"
|
|
|
|
FellAsleepBecameHealthyText: ; 3baa7 (e:7aa7)
|
|
TX_FAR _FellAsleepBecameHealthyText
|
|
db "@"
|
|
|
|
RegainedHealthText: ; 3baac (e:7aac)
|
|
TX_FAR _RegainedHealthText
|
|
db "@"
|
|
|
|
TransformEffect_: ; 3bab1 (e:7ab1)
|
|
ld hl, wBattleMonSpecies
|
|
ld de, wEnemyMonSpecies
|
|
ld bc, W_ENEMYBATTSTATUS3 ; W_ENEMYBATTSTATUS3
|
|
ld a, [W_ENEMYBATTSTATUS1] ; W_ENEMYBATTSTATUS1
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
jr nz, .asm_3bad1
|
|
ld hl, wEnemyMonSpecies
|
|
ld de, wBattleMonSpecies
|
|
ld bc, W_PLAYERBATTSTATUS3 ; W_PLAYERBATTSTATUS3
|
|
ld [wPlayerMoveListIndex], a ; wPlayerMoveListIndex
|
|
ld a, [W_PLAYERBATTSTATUS1] ; W_PLAYERBATTSTATUS1
|
|
.asm_3bad1
|
|
bit 6, a ; is mon invulnerable to typical attacks? (fly/dig)
|
|
jp nz, Func_3bb8c
|
|
push hl
|
|
push de
|
|
push bc
|
|
ld hl, W_PLAYERBATTSTATUS2 ; W_PLAYERBATTSTATUS2
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
jr z, .asm_3bae4
|
|
ld hl, W_ENEMYBATTSTATUS2 ; W_ENEMYBATTSTATUS2
|
|
.asm_3bae4
|
|
bit 4, [hl]
|
|
push af
|
|
ld hl, Func_79747
|
|
ld b, BANK(Func_79747)
|
|
call nz, Bankswitch
|
|
ld a, [W_OPTIONS] ; W_OPTIONS
|
|
add a
|
|
ld hl, Func_3fba8 ; $7ba8
|
|
ld b, BANK(Func_3fba8)
|
|
jr nc, .asm_3baff
|
|
ld hl, AnimationTransformMon
|
|
ld b, BANK(AnimationTransformMon)
|
|
.asm_3baff
|
|
call Bankswitch
|
|
ld hl, Func_79771
|
|
ld b, BANK(Func_79771)
|
|
pop af
|
|
call nz, Bankswitch
|
|
pop bc
|
|
ld a, [bc]
|
|
set 3, a
|
|
ld [bc], a
|
|
pop de
|
|
pop hl
|
|
push hl
|
|
ld a, [hl]
|
|
ld [de], a
|
|
ld bc, $5
|
|
add hl, bc
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
inc bc
|
|
inc bc
|
|
call CopyData
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
jr z, .asm_3bb32
|
|
ld a, [de]
|
|
ld [wcceb], a
|
|
inc de
|
|
ld a, [de]
|
|
ld [wccec], a
|
|
dec de
|
|
.asm_3bb32
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
inc hl
|
|
inc hl
|
|
inc hl
|
|
inc de
|
|
inc de
|
|
inc de
|
|
ld bc, $8
|
|
call CopyData
|
|
ld bc, $ffef
|
|
add hl, bc
|
|
ld b, $4
|
|
.asm_3bb4a
|
|
ld a, [hli]
|
|
and a
|
|
jr z, .asm_3bb57
|
|
ld a, $5
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_3bb4a
|
|
jr .asm_3bb5d
|
|
.asm_3bb57
|
|
xor a
|
|
ld [de], a
|
|
inc de
|
|
dec b
|
|
jr nz, .asm_3bb57
|
|
.asm_3bb5d
|
|
pop hl
|
|
ld a, [hl]
|
|
ld [wd11e], a
|
|
call GetMonName
|
|
ld hl, wcd26
|
|
ld de, wcd12
|
|
call Func_3bb7d
|
|
ld hl, wEnemyMonStatMods ; wcd2e
|
|
ld de, wPlayerMonStatMods ; wcd1a
|
|
call Func_3bb7d
|
|
ld hl, TransformedText ; $7b92
|
|
jp PrintText
|
|
|
|
Func_3bb7d: ; 3bb7d (e:7b7d)
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
jr z, .asm_3bb86
|
|
push hl
|
|
ld h, d
|
|
ld l, e
|
|
pop de
|
|
.asm_3bb86
|
|
ld bc, $8
|
|
jp CopyData
|
|
|
|
Func_3bb8c: ; 3bb8c (e:7b8c)
|
|
ld hl, PrintButItFailedText_ ; $7b53
|
|
jp BankswitchEtoF
|
|
|
|
TransformedText: ; 3bb92 (e:7b92)
|
|
TX_FAR _TransformedText
|
|
db "@"
|
|
|
|
ReflectLightScreenEffect_: ; 3bb97 (e:7b97)
|
|
ld hl, W_PLAYERBATTSTATUS3 ; W_PLAYERBATTSTATUS3
|
|
ld de, W_PLAYERMOVEEFFECT ; wcfd3
|
|
ld a, [H_WHOSETURN] ; $fff3
|
|
and a
|
|
jr z, .asm_3bba8
|
|
ld hl, W_ENEMYBATTSTATUS3 ; W_ENEMYBATTSTATUS3
|
|
ld de, W_ENEMYMOVEEFFECT ; W_ENEMYMOVEEFFECT
|
|
.asm_3bba8
|
|
ld a, [de]
|
|
cp LIGHT_SCREEN_EFFECT
|
|
jr nz, .reflect
|
|
bit 1, [hl] ; is mon already protected by light screen?
|
|
jr nz, .moveFailed
|
|
set 1, [hl] ; mon is now protected by light screen
|
|
ld hl, LightScreenProtectedText ; $7bd7
|
|
jr .asm_3bbc1
|
|
.reflect
|
|
bit 2, [hl] ; is mon already protected by reflect?
|
|
jr nz, .moveFailed
|
|
set 2, [hl] ; mon is now protected by reflect
|
|
ld hl, ReflectGainedArmorText ; $7bdc
|
|
.asm_3bbc1
|
|
push hl
|
|
ld hl, Func_3fba8 ; $7ba8
|
|
call BankswitchEtoF
|
|
pop hl
|
|
jp PrintText
|
|
.moveFailed
|
|
ld c, $32
|
|
call DelayFrames
|
|
ld hl, PrintButItFailedText_ ; $7b53
|
|
jp BankswitchEtoF
|
|
|
|
LightScreenProtectedText: ; 3bbd7 (e:7bd7)
|
|
TX_FAR _LightScreenProtectedText
|
|
db "@"
|
|
|
|
ReflectGainedArmorText: ; 3bbdc (e:7bdc)
|
|
TX_FAR _ReflectGainedArmorText
|
|
db "@"
|
|
|
|
BankswitchEtoF: ; 3bbe1 (e:7be1)
|
|
ld b, BANK(BattleCore)
|
|
jp Bankswitch
|