PokéBase - Pokémon Q&A
1 vote
164 views

There’s a LOT of conflicting information out there. I heard originally that if Gen 3 roamers use a move to end the battle, that they will despawn for good. But a while ago, I saw a video that I cannot recall, where someone say it is possible to respawn them, but I can’t remember the details. I believe it was from a well-informed FRLG RNG manipulator, but I’m not sure.

Before answering, please ensure you have up to date information from a reliable source explaining it.

Thank you

by

1 Answer

3 votes
 
Best answer

(this is filler text that makes the code block look like a code block)

if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
    {
        UpdateRoamerHPStatus(&gEnemyParty[0]);
#if defined(BUGFIX) || REVISION >= 0xA
        if ((gBattleOutcome == B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT || gBattleOutcome == B_OUTCOME_DREW)
#else
        if ((gBattleOutcome & B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT) // Bug: When Roar is used by roamer, gBattleOutcome is B_OUTCOME_PLAYER_TELEPORTED (5).
#endif

In RS they didn't handle the draw outcome to despawn roamers, so if you explode on Latias/Latios and kill them while whiting out, they'll still be roaming at 0HP.
In GBA FRLG they check for gBattleOutcome & B_OUTCOME_WON (bitwise AND on 1) instead of == to handle both the WON (1) and DREW (3) cases, but this also leads to returning true on teleport/roars (5) which infamously despawns them.
So in Switch FRLG they just check equality for each win/catch/draw battle outcome individually to despawn the roamer now.

source

ago by
selected ago by