From 41702557d0316bf5d9be4b35cb0bf2aedb54603e Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 7 Oct 2026 21:31:00 -0400 Subject: [PATCH] Prevent crash when fairy spawn is unknown (#7340) --- soh/soh/Enhancements/randomizer/ShuffleFairies.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/soh/soh/Enhancements/randomizer/ShuffleFairies.cpp b/soh/soh/Enhancements/randomizer/ShuffleFairies.cpp index 4eef04b33c..450dd0387e 100644 --- a/soh/soh/Enhancements/randomizer/ShuffleFairies.cpp +++ b/soh/soh/Enhancements/randomizer/ShuffleFairies.cpp @@ -64,6 +64,7 @@ CheckIdentity ShuffleFairies_GetFairyIdentity(int32_t params, ActorID id) { CheckIdentity fairyIdentity; s16 sceneNum = gPlayState->sceneNum; fairyIdentity.randomizerInf = RAND_INF_MAX; + fairyIdentity.randomizerCheck = RC_UNKNOWN_CHECK; if (sceneNum == SCENE_TEMPLE_OF_TIME_EXTERIOR_NIGHT || sceneNum == SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS) { sceneNum = SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY; @@ -73,7 +74,6 @@ CheckIdentity ShuffleFairies_GetFairyIdentity(int32_t params, ActorID id) { if (location->GetRandomizerCheck() == RC_UNKNOWN_CHECK) { SPDLOG_WARN("FairyGetIdentity did not receive a valid RC value ({}).", location->GetRandomizerCheck()); - assert(false); } else { fairyIdentity.randomizerInf = static_cast(location->GetCollectionCheck().flag); fairyIdentity.randomizerCheck = location->GetRandomizerCheck(); @@ -84,6 +84,9 @@ CheckIdentity ShuffleFairies_GetFairyIdentity(int32_t params, ActorID id) { static bool SpawnFairy(f32 posX, f32 posY, f32 posZ, int32_t params, FairyType fairyType, ActorID id) { CheckIdentity fairyIdentity = ShuffleFairies_GetFairyIdentity(params, id); + if (fairyIdentity.randomizerCheck == RC_UNKNOWN_CHECK) { + return false; + } if (!Flags_GetRandomizerInf(fairyIdentity.randomizerInf)) { Actor* fairy = Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_EN_ELF, posX, posY - 30.0f, posZ, 0, 0, 0, fairyType);