summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris <f1ana@users.noreply.github.com>2026-10-07 21:31:00 -0400
committerGitHub <noreply@github.com>2026-10-08 01:31:00 +0000
commit41702557d0316bf5d9be4b35cb0bf2aedb54603e (patch)
tree1c3dd6db22d123bd7919308d518a7c89d336b7e6
parent0f1f31a1e9f2b45f3b7dbdc3c918137958bd5e66 (diff)
Prevent crash when fairy spawn is unknown (#7340)
-rw-r--r--soh/soh/Enhancements/randomizer/ShuffleFairies.cpp5
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);