mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
27 lines
721 B
NASM
27 lines
721 B
NASM
|
ApplyPokerusTick: ; 13988
|
||
|
; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
|
||
|
ld hl, PartyMon1PokerusStatus ; PartyMon1 + MON_PKRS
|
||
|
ld a, [PartyCount]
|
||
|
and a
|
||
|
ret z ; make sure it's not wasting time on an empty party
|
||
|
ld c, a
|
||
|
.loop
|
||
|
ld a, [hl]
|
||
|
and $f ; lower nybble is the number of days remaining
|
||
|
jr z, .next ; if already 0, skip
|
||
|
sub b ; subtract the number of days
|
||
|
jr nc, .ok ; max(result, 0)
|
||
|
xor a
|
||
|
.ok
|
||
|
ld d, a ; back up this value because we need to preserve the strain (upper nybble)
|
||
|
ld a, [hl]
|
||
|
and $f0
|
||
|
add d
|
||
|
ld [hl], a ; this prevents a cured pokemon from recontracting pokerus
|
||
|
.next
|
||
|
ld de, PARTYMON_STRUCT_LENGTH
|
||
|
add hl, de
|
||
|
dec c
|
||
|
jr nz, .loop
|
||
|
ret
|