Don't lose HP from poisoning in the overworld - pret/pokecrystal GitHub Wiki
In older generations (up to the 4th gen) poisoned Pokémon used to lose 1 HP every four steps taken and even faint from it (except in the 4th gen, where they survive with 1 HP). In the 5th generation onwards this no longer happens, so the objective of this simple tutorial is to implement this change and stop our poisoned Pokémon from losing HP in the overworld.
Contents
1. Stop wPoisonStepCounter from counting our steps
Edit engine/overworld/events.asm:
CountStep:
...
- ; Count the step for poison and total steps
- ld hl, wPoisonStepCount
- inc [hl]
ld hl, wStepCount
inc [hl]
; Every 256 steps, increase the happiness of all your Pokemon.
jr nz, .skip_happiness
...
2. Get rid of useless routines
In the same file:
...
.skip_egg
; Increase the EXP of (both) DayCare Pokemon by 1.
farcall DayCareStep
- ; Every 4 steps, deal damage to all poisoned Pokemon.
- ld hl, wPoisonStepCount
- ld a, [hl]
- cp 4
- jr c, .skip_poison
- ld [hl], 0
- farcall DoPoisonStep
- jr c, .doscript
-.skip_poison
farcall DoBikeStep
...
Since wPoisonStepCounter
has stopped counting our steps, we no longer need to check how many steps we've taken to determine whether to take poison damage or not.
And that's it! Our Pokémon will no longer lose HP while walking in the overworld. Optionally, you can safely delete engine/events/poisonstep.asm, since this was the only instance where DoPoisonStep
was called.