ref: 59e6baee1eba3ad659d86f5fff6b73d367b12203
dir: /engine/events/pokerus/apply_pokerus_tick.asm/
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