summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Bird <Archez@users.noreply.github.com>2023-05-20 16:25:29 -0400
committerGitHub <noreply@github.com>2023-05-20 16:25:29 -0400
commitcf42057842b812c194041599e64a6b3eb956b003 (patch)
treeefbd3ff8d58662aba517d84136c147dcf0a4a704
parent0b47a19c2c6e17c45349a2f47e07d75024249701 (diff)
Fix: seed srand on launch and fix spoiler log for seed testing generation (#2902)
-rw-r--r--soh/soh/Enhancements/randomizer/3drando/menu.cpp15
-rw-r--r--soh/soh/Enhancements/randomizer/3drando/playthrough.cpp5
-rw-r--r--soh/soh/Enhancements/randomizer/randomizer.cpp4
-rw-r--r--soh/soh/OTRGlobals.cpp2
4 files changed, 12 insertions, 14 deletions
diff --git a/soh/soh/Enhancements/randomizer/3drando/menu.cpp b/soh/soh/Enhancements/randomizer/3drando/menu.cpp
index de6c20be0..c2fd5061d 100644
--- a/soh/soh/Enhancements/randomizer/3drando/menu.cpp
+++ b/soh/soh/Enhancements/randomizer/3drando/menu.cpp
@@ -518,7 +518,7 @@ std::string GenerateRandomizer(std::unordered_map<RandomizerSettingKey, uint8_t>
srand(time(NULL));
// if a blank seed was entered, make a random one
if (seedString.empty()) {
- Settings::seed = rand() & 0xFFFFFFFF;
+ seedString = std::to_string(rand() % 0xFFFFFFFF);
} else if (seedString.rfind("seed_testing_count", 0) == 0 && seedString.length() > 18) {
int count;
try {
@@ -530,17 +530,12 @@ std::string GenerateRandomizer(std::unordered_map<RandomizerSettingKey, uint8_t>
}
Playthrough::Playthrough_Repeat(cvarSettings, excludedLocations, count);
return "";
- } else {
- try {
- uint32_t seedHash = boost::hash_32<std::string>{}(seedString);
- int seed = seedHash & 0xFFFFFFFF;
- Settings::seed = seed;
- Settings::seedString = seedString;
- } catch (...) {
- return "";
- }
}
+ Settings::seedString = seedString;
+ uint32_t seedHash = boost::hash_32<std::string>{}(Settings::seedString);
+ Settings::seed = seedHash & 0xFFFFFFFF;
+
int ret = Playthrough::Playthrough_Init(Settings::seed, cvarSettings, excludedLocations);
if (ret < 0) {
if (ret == -1) { // Failed to generate after 5 tries
diff --git a/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp b/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp
index 67ccb5276..dbcb93e42 100644
--- a/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp
+++ b/soh/soh/Enhancements/randomizer/3drando/playthrough.cpp
@@ -87,8 +87,9 @@ int Playthrough_Repeat(std::unordered_map<RandomizerSettingKey, uint8_t> cvarSet
printf("\x1b[0;0HGENERATING %d SEEDS", count);
uint32_t repeatedSeed = 0;
for (int i = 0; i < count; i++) {
- repeatedSeed = rand() % 0xFFFFFFFF;
- Settings::seed = repeatedSeed;
+ Settings::seedString = std::to_string(rand() % 0xFFFFFFFF);
+ repeatedSeed = boost::hash_32<std::string>{}(Settings::seedString);
+ Settings::seed = repeatedSeed % 0xFFFFFFFF;
CitraPrint("testing seed: " + std::to_string(Settings::seed));
ClearProgress();
Playthrough_Init(Settings::seed, cvarSettings, excludedLocations);
diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp
index 6fd58e908..203dd8cfd 100644
--- a/soh/soh/Enhancements/randomizer/randomizer.cpp
+++ b/soh/soh/Enhancements/randomizer/randomizer.cpp
@@ -3191,8 +3191,8 @@ void DrawRandoEditor(bool& open) {
}
UIWidgets::Spacer(0);
- if (ImGui::Button("Generate Randomizer")) {
- GenerateRandomizer(CVarGetInteger("gRandoManualSeedEntry", 0) ? seedString : std::to_string(rand() & 0xFFFFFFFF).c_str());
+ if (ImGui::Button("Generate Randomizer")) {
+ GenerateRandomizer(CVarGetInteger("gRandoManualSeedEntry", 0) ? seedString : "");
}
UIWidgets::Spacer(0);
diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp
index 2757e1b03..b0a207dfd 100644
--- a/soh/soh/OTRGlobals.cpp
+++ b/soh/soh/OTRGlobals.cpp
@@ -782,6 +782,8 @@ extern "C" void InitOTR() {
} else {
CVarClear("gLetItSnow");
}
+
+ srand(now);
#ifdef ENABLE_CROWD_CONTROL
CrowdControl::Instance = new CrowdControl();
CrowdControl::Instance->Init();