diff --git a/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp b/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp index 74e604590d..33eb5278a7 100644 --- a/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp +++ b/soh/soh/Enhancements/TimeSavers/timesaver_hook_handlers.cpp @@ -441,7 +441,9 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_li // If it's near a jailed carpenter, skip it along with introduction of Gerudo mini-boss if (gPlayState->sceneNum == SCENE_THIEVES_HIDEOUT && - CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.BossIntro"), IS_RANDO)) { + CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.BossIntro"), IS_RANDO) && + (!IS_RANDO || !RAND_GET_OPTION(RSK_SHUFFLE_SPEAK) || + Flags_GetRandomizerInf(RAND_INF_CAN_SPEAK_HYLIAN))) { EnWonderTalk2* enWonderTalk = va_arg(args, EnWonderTalk2*); EnDaiku* enDaiku = (EnDaiku*)Actor_FindNearby(gPlayState, &enWonderTalk->actor, ACTOR_EN_DAIKU, ACTORCAT_NPC, 999.0f); diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/thieves_hideout.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/thieves_hideout.cpp index 276d7161c0..4814dee000 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/thieves_hideout.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/thieves_hideout.cpp @@ -12,7 +12,7 @@ void RegionTable_Init_ThievesHideout() { EVENT_ACCESS(LOGIC_TH_RESCUED_ALL_CARPENTERS, logic->SmallKeys(SCENE_THIEVES_HIDEOUT, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)), }, { //Locations - LOCATION(RC_TH_1_TORCH_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)), + LOCATION(RC_TH_1_TORCH_CARPENTER, logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER)), LOCATION(RC_TH_1_TORCH_CELL_RIGHT_POT, logic->CanBreakPots()), LOCATION(RC_TH_1_TORCH_CELL_MID_POT, logic->CanBreakPots()), LOCATION(RC_TH_1_TORCH_CELL_LEFT_POT, logic->CanBreakPots()), @@ -32,7 +32,7 @@ void RegionTable_Init_ThievesHideout() { EVENT_ACCESS(LOGIC_TH_RESCUED_ALL_CARPENTERS, logic->SmallKeys(SCENE_THIEVES_HIDEOUT, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)), }, { //Locations - LOCATION(RC_TH_DOUBLE_CELL_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)), + LOCATION(RC_TH_DOUBLE_CELL_CARPENTER, logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER)), LOCATION(RC_TH_NEAR_DOUBLE_CELL_RIGHT_POT, logic->CanBreakPots()), LOCATION(RC_TH_NEAR_DOUBLE_CELL_MID_POT, logic->CanBreakPots()), LOCATION(RC_TH_NEAR_DOUBLE_CELL_LEFT_POT, logic->CanBreakPots()), @@ -58,7 +58,7 @@ void RegionTable_Init_ThievesHideout() { EVENT_ACCESS(LOGIC_TH_RESCUED_ALL_CARPENTERS, logic->SmallKeys(SCENE_THIEVES_HIDEOUT, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)), }, { //Locations - LOCATION(RC_TH_DEAD_END_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)), + LOCATION(RC_TH_DEAD_END_CARPENTER, logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER)), LOCATION(RC_TH_DEAD_END_CELL_CRATE, logic->CanBreakCrates()), LOCATION(RC_TH_WONDER_DEAD_END_SKULL_ENTRANCE, logic->CanUse(RG_FAIRY_BOW)), LOCATION(RC_TH_WONDER_DEAD_END_SKULL_NEAR_JAIL, logic->CanUse(RG_FAIRY_BOW)), @@ -74,7 +74,7 @@ void RegionTable_Init_ThievesHideout() { EVENT_ACCESS(LOGIC_TH_RESCUED_ALL_CARPENTERS, logic->SmallKeys(SCENE_THIEVES_HIDEOUT, ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_NORMAL) ? 4 : 1) && logic->Get(LOGIC_TH_COULD_FREE_1_TORCH_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DOUBLE_CELL_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_DEAD_END_CARPENTER) && logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)), }, { //Locations - LOCATION(RC_TH_STEEP_SLOPE_CARPENTER, logic->CanKillEnemy(RE_GERUDO_WARRIOR)), + LOCATION(RC_TH_STEEP_SLOPE_CARPENTER, logic->Get(LOGIC_TH_COULD_FREE_SLOPE_CARPENTER)), LOCATION(RC_TH_STEEP_SLOPE_RIGHT_POT, logic->CanBreakPots()), LOCATION(RC_TH_STEEP_SLOPE_LEFT_POT, logic->CanBreakPots()), LOCATION(RC_TH_WONDER_STEEP_SLOPE_LOWER_EXIT, logic->CanUse(RG_FAIRY_BOW)),