Closed FredrIQ closed 5 years ago
GSC suffers from some of the same Toxic oddities as RBY do
Do you mean this is happening incorrectly on Pokemon Showdown? https://github.com/pret/pokecrystal/blob/master/docs/bugs_and_glitches.md doesn't seem to list this as the in-game behavior?
Can you still reproduce this? Can you share a replay demonstrating the bug? Thanks :)
I will check later on in-game, but that sounds reasonable.
First of, this is Baton Pass code: https://github.com/pret/pokecrystal/blob/3eacab563d0e1ab5557c2443556a7a5e58d14cad/engine/battle/move_effects/baton_pass.asm#L127. It doesn't reset the SUBSTATUS_TOXIC
flag, so it gets passed.
Then in residual damage code (https://github.com/pret/pokecrystal/blob/a999787cb84e8363509ad72d92be8f1fc8b7d321/engine/battle/core.asm#L1000) it uses the same code for burns and poison status.
The Toxic counter is only reset when successfully using Toxic move (de
register comes from .check_toxic
subroutine).
Heal Bell status only removes Nightmare substatus, so it should keep the toxic status and its counter, and the Toxic should continue once burned or poisoned normally (without using Toxic move, which would reset the counter).
Any implementation of this should come with a -hint
message, by the way.
Okay, checked, it works.
Alright, I'll start by writing some tests for the desired behavior, and then look into fixing it.
9186884 adds some tests which I think describe the behavior as I understand it.
Heal Bell status only removes Nightmare status, so it should keep the toxic status and its counter
Can I get some clarification here? Surely Heal Bell removes the status, it just doesn't remove the 'substatus'? ie/ Heal Bell will make it so the Pokemon is no longer poisoned, it just keeps maintaining the toxic counter under the hood? Saying "Heal Bell status only removes the Nightmare status" seems confusing to me because that seems to imply it doesn't cure the Sleep/Burn/etc status. Though 'status' probably means something more intricate than my layperson definition here.
@scheibo Meant "substatus" word here, sorry for confusing you.
GSC suffers from some of the same Toxic oddities as RBY do, allthough only as a result of using Baton Pass or Heal Bell. Basically, Toxic and the Toxic counter is preserved when switching using Baton Pass. If whatever you are switching into is then poisoned or burned (or if it was when you switched into it), it will retain the Toxic status. It will also retain the count, unless the move was Toxic in which the counter is reset.
Leech Seed isn't affected, unlike RBY, only poison and burn is.