diff --git a/include/d/d_save.h b/include/d/d_save.h index 3f83f7aa74..ab4ccdf7d9 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -971,6 +971,8 @@ public: std::unordered_map> mTreasureChestOverrides{}; std::unordered_map> mPoeOverrides{}; + u8 mStartHour{0}; + void clear(); }; #endif diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index c1d7f603ff..3dec83ebfb 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -2980,6 +2980,17 @@ void dComIfGs_setupRandomizerSave() { execItemGet(static_cast(item->GetID())); } + // Set starting time of day + const auto startTimeSetting = world->Setting("Starting Time of Day"); + if (startTimeSetting == "Morning") + randoData.mStartHour = 6; + else if (startTimeSetting == "Noon") + randoData.mStartHour = 12; + else if (startTimeSetting == "Evening") + randoData.mStartHour = 18; + else if (startTimeSetting == "Night") + randoData.mStartHour = 24; + DuskLog.debug("Created Rando Save"); } #endif diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index f3cdfed17b..79facbd69e 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -2929,6 +2929,12 @@ int dStage_changeScene4Event(int i_exitId, s8 room_no, int i_wipe, bool param_3, } if (timeH < 31) { +#if TARGET_PC + // If randomizer is active and we're loading the first spawn, set our starting time of day + if (dComIfG_isRandomizer() && strcmp(scls_info->mStage, "F_SP103") == 0 && + scls_info->mRoom == 1 && scls_info->mStart == 1) + timeH = dComIfG_getRandomizer().mStartHour; +#endif dKy_set_nexttime(15.0f * timeH); }