From 6c724a2c015b9ecc7d7303446f0b9386fd10d82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Sat, 3 Jan 2026 16:43:52 +0000 Subject: [PATCH] bean souls: prevent skulltula spawning from bugs (#6084) woe is me thinking bugs reacted to soil patch instead of invisible actor --- .../Enhancements/randomizer/hook_handlers.cpp | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index 51393fbba..c7de84676 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -2329,6 +2329,46 @@ void RandomizerOnActorInitHandler(void* actorRef) { return; } } + if (actor->id == ACTOR_OBJ_MAKEKINSUTA) { + RandomizerInf currentBeanSoulRandInf = RAND_INF_MAX; + switch (gPlayState->sceneNum) { + case SCENE_DEATH_MOUNTAIN_CRATER: + currentBeanSoulRandInf = RAND_INF_DEATH_MOUNTAIN_CRATER_BEAN_SOUL; + break; + case SCENE_DEATH_MOUNTAIN_TRAIL: + currentBeanSoulRandInf = RAND_INF_DEATH_MOUNTAIN_TRAIL_BEAN_SOUL; + break; + case SCENE_DESERT_COLOSSUS: + currentBeanSoulRandInf = RAND_INF_DESERT_COLOSSUS_BEAN_SOUL; + break; + case SCENE_GERUDO_VALLEY: + currentBeanSoulRandInf = RAND_INF_GERUDO_VALLEY_BEAN_SOUL; + break; + case SCENE_GRAVEYARD: + currentBeanSoulRandInf = RAND_INF_GRAVEYARD_BEAN_SOUL; + break; + case SCENE_KOKIRI_FOREST: + currentBeanSoulRandInf = RAND_INF_KOKIRI_FOREST_BEAN_SOUL; + break; + case SCENE_LAKE_HYLIA: + currentBeanSoulRandInf = RAND_INF_LAKE_HYLIA_BEAN_SOUL; + break; + case SCENE_LOST_WOODS: + if (actor->params == 0x4e01) { + currentBeanSoulRandInf = RAND_INF_LOST_WOODS_BRIDGE_BEAN_SOUL; + } else { + currentBeanSoulRandInf = RAND_INF_LOST_WOODS_BEAN_SOUL; + } + break; + case SCENE_ZORAS_RIVER: + currentBeanSoulRandInf = RAND_INF_ZORAS_RIVER_BEAN_SOUL; + break; + } + if (currentBeanSoulRandInf != RAND_INF_MAX && !Flags_GetRandomizerInf(currentBeanSoulRandInf)) { + Actor_Kill(actor); + return; + } + } } // If child is in the adult shooting gallery or adult in the child shooting gallery, then despawn the shooting