diff options
Diffstat (limited to 'engine/routines/applypokerustick.asm')
-rw-r--r-- | engine/routines/applypokerustick.asm | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/engine/routines/applypokerustick.asm b/engine/routines/applypokerustick.asm new file mode 100644 index 000000000..3c97fdc5e --- /dev/null +++ b/engine/routines/applypokerustick.asm @@ -0,0 +1,26 @@ +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 |