From 3e646d3bd72e9cf8c24158c5c2a37af9c9a6d90b Mon Sep 17 00:00:00 2001 From: AZero13 <83477269+SiliconA-Z@users.noreply.github.com> Date: Tue, 17 Mar 2026 14:27:36 -0400 Subject: [PATCH] BUGFIX: Wally's ralts can be shiny This actually was not an oversight, but a bug. The reason this never appears in the decomp is because compiler just optimized it out because the original programmer forgot continue does not do what he thought it did in a do-while loop. --- include/pokemon.h | 2 +- src/battle_setup.c | 2 +- src/pokemon.c | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 3d75157f91..8c4794ee9c 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -399,7 +399,7 @@ void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFix void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); void CreateMonWithNature(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 nature); void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 gender, u8 nature, u8 unownLetter); -void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level); +void CreateTutorialMon(struct Pokemon *mon, u16 species, u8 level); void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality); void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId); void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread); diff --git a/src/battle_setup.c b/src/battle_setup.c index 41026de725..003701c48c 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -479,7 +479,7 @@ static void DoBattlePyramidTrainerHillBattle(void) // Initiates battle where Wally catches Ralts void StartWallyTutorialBattle(void) { - CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5); + CreateTutorialMon(&gEnemyParty[0], SPECIES_RALTS, 5); LockPlayerFieldControls(); gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic; gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL; diff --git a/src/pokemon.c b/src/pokemon.c index 7283e0e456..cda13eb40d 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2346,7 +2346,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, } // This is only used to create Wally's Ralts. -void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level) +void CreateTutorialMon(struct Pokemon *mon, u16 species, u8 level) { u32 personality; u32 otId; @@ -2356,7 +2356,12 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level) otId = Random32(); personality = Random32(); } +#ifdef BUGFIX + while (GetGenderFromSpeciesAndPersonality(species, personality) != MON_MALE || + GET_SHINY_VALUE(otId, personality) < SHINY_ODDS); +#else while (GetGenderFromSpeciesAndPersonality(species, personality) != MON_MALE); +#endif CreateMon(mon, species, level, USE_RANDOM_IVS, TRUE, personality, OT_ID_PRESET, otId); }