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