pokered/engine/battle/1.asm

105 lines
1.8 KiB
NASM
Raw Normal View History

2014-05-22 22:13:20 +00:00
DrainHPEffect_: ; 783f (1:783f)
ld hl, W_DAMAGE
2014-05-22 22:13:20 +00:00
ld a, [hl]
srl a ; divide damage by 2
ld [hli], a
ld a, [hl]
rr a
ld [hld], a
2015-02-07 21:40:14 +00:00
or [hl] ; is damage 0?
jr nz, .getAttackerHP
; if damage is 0, increase to 1 so that the attacker gains at least 1 HP
2014-05-22 22:13:20 +00:00
inc hl
inc [hl]
2015-02-07 21:40:14 +00:00
.getAttackerHP
ld hl, wBattleMonHP
ld de, wBattleMonMaxHP
ld a, [H_WHOSETURN]
2014-05-22 22:13:20 +00:00
and a
2015-02-07 21:40:14 +00:00
jp z, .addDamageToAttackerHP
ld hl, wEnemyMonHP
ld de, wEnemyMonMaxHP
2015-02-07 21:40:14 +00:00
.addDamageToAttackerHP
2014-05-22 22:13:20 +00:00
ld bc, wHPBarOldHP+1
2015-02-07 21:40:14 +00:00
; copy current HP to wHPBarOldHP
2014-05-22 22:13:20 +00:00
ld a, [hli]
ld [bc], a
ld a, [hl]
dec bc
ld [bc], a
2015-02-07 21:40:14 +00:00
; copy max HP to wHPBarMaxHP
2014-05-22 22:13:20 +00:00
ld a, [de]
dec bc
ld [bc], a
inc de
ld a, [de]
dec bc
ld [bc], a
2015-02-07 21:40:14 +00:00
; add damage to attacker's HP and copy new HP to wHPBarNewHP
ld a, [W_DAMAGE + 1]
2014-05-22 22:13:20 +00:00
ld b, [hl]
add b
ld [hld], a
ld [wHPBarNewHP], a
ld a, [W_DAMAGE]
2014-05-22 22:13:20 +00:00
ld b, [hl]
adc b
ld [hli], a
ld [wHPBarNewHP+1], a
2015-02-07 21:40:14 +00:00
jr c, .capToMaxHP ; if HP > 65,535, cap to max HP
; compare HP with max HP
2014-05-22 22:13:20 +00:00
ld a, [hld]
ld b, a
ld a, [de]
dec de
sub b
ld a, [hli]
ld b, a
ld a, [de]
inc de
sbc b
2015-02-07 21:40:14 +00:00
jr nc, .next
.capToMaxHP
2014-05-22 22:13:20 +00:00
ld a, [de]
ld [hld], a
ld [wHPBarNewHP], a
dec de
ld a, [de]
ld [hli], a
ld [wHPBarNewHP+1], a
inc de
2015-02-07 21:40:14 +00:00
.next
ld a, [H_WHOSETURN]
2014-05-22 22:13:20 +00:00
and a
hlCoord 10, 9
2014-05-22 22:13:20 +00:00
ld a, $1
2015-02-07 21:40:14 +00:00
jr z, .next2
hlCoord 2, 2
2014-05-22 22:13:20 +00:00
xor a
2015-02-07 21:40:14 +00:00
.next2
ld [wListMenuID], a
predef UpdateHPBar2
2014-08-09 05:39:13 +00:00
predef DrawPlayerHUDAndHPBar
predef DrawEnemyHUDAndHPBar
2014-05-22 22:13:20 +00:00
callab ReadPlayerMonCurHPAndStatus
2015-02-07 21:40:14 +00:00
ld hl, SuckedHealthText
ld a, [H_WHOSETURN]
2014-05-22 22:13:20 +00:00
and a
2015-02-07 21:40:14 +00:00
ld a, [W_PLAYERMOVEEFFECT]
jr z, .next3
ld a, [W_ENEMYMOVEEFFECT]
2015-02-07 21:40:14 +00:00
.next3
2014-05-22 22:13:20 +00:00
cp DREAM_EATER_EFFECT
2015-02-07 21:40:14 +00:00
jr nz, .printText
2014-05-22 22:13:20 +00:00
ld hl, DreamWasEatenText
2015-02-07 21:40:14 +00:00
.printText
2014-05-22 22:13:20 +00:00
jp PrintText
SuckedHealthText: ; 78dc (1:78dc)
TX_FAR _SuckedHealthText
db "@"
DreamWasEatenText: ; 78e1 (1:78e1)
TX_FAR _DreamWasEatenText
db "@"