diff options
| author | Chris <f1ana@users.noreply.github.com> | 2026-10-07 21:31:00 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-10-08 01:31:00 +0000 |
| commit | 41702557d0316bf5d9be4b35cb0bf2aedb54603e (patch) | |
| tree | 1c3dd6db22d123bd7919308d518a7c89d336b7e6 | |
| parent | 0f1f31a1e9f2b45f3b7dbdc3c918137958bd5e66 (diff) | |
Prevent crash when fairy spawn is unknown (#7340)
| -rw-r--r-- | soh/soh/Enhancements/randomizer/ShuffleFairies.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/soh/soh/Enhancements/randomizer/ShuffleFairies.cpp b/soh/soh/Enhancements/randomizer/ShuffleFairies.cpp index 4eef04b33..450dd0387 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<RandomizerInf>(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); |
