diff --git a/rust/data/presets/full-settings/Community Race Season 5.json b/rust/data/presets/full-settings/Community Race Season 5.json index 5b0351866..bb8ac788e 100644 --- a/rust/data/presets/full-settings/Community Race Season 5.json +++ b/rust/data/presets/full-settings/Community Race Season 5.json @@ -4912,7 +4912,6 @@ "all_enemies_respawn": false, "race_mode": true, "savestate": "No", - "random_seed": null, "disable_spikesuit": false, "disable_bluesuit": false, "enable_major_glitches": false diff --git a/rust/data/presets/full-settings/Default.json b/rust/data/presets/full-settings/Default.json index 4c5664427..31130449b 100644 --- a/rust/data/presets/full-settings/Default.json +++ b/rust/data/presets/full-settings/Default.json @@ -4826,7 +4826,6 @@ "enable_major_glitches": false, "speed_booster": "Vanilla", "race_mode": false, - "savestate": "No", - "random_seed": null + "savestate": "No" } } \ No newline at end of file diff --git a/rust/data/presets/full-settings/Mentor Tournament.json b/rust/data/presets/full-settings/Mentor Tournament.json index 38da78e3b..db84d7484 100644 --- a/rust/data/presets/full-settings/Mentor Tournament.json +++ b/rust/data/presets/full-settings/Mentor Tournament.json @@ -4912,7 +4912,6 @@ "all_enemies_respawn": false, "race_mode": true, "savestate": "No", - "random_seed": null, "disable_spikesuit": false, "disable_bluesuit": false, "enable_major_glitches": false diff --git a/rust/data/presets/full-settings/Summer Series Expert Challenge.json b/rust/data/presets/full-settings/Summer Series Expert Challenge.json index 08a2d637d..f7e22a14a 100644 --- a/rust/data/presets/full-settings/Summer Series Expert Challenge.json +++ b/rust/data/presets/full-settings/Summer Series Expert Challenge.json @@ -4824,7 +4824,6 @@ "all_enemies_respawn": false, "race_mode": true, "savestate": "No", - "random_seed": null, "disable_spikesuit": false, "disable_bluesuit": false, "enable_major_glitches": false diff --git a/rust/maprando-web/src/main.rs b/rust/maprando-web/src/main.rs index 6235587c1..19da5b4f5 100644 --- a/rust/maprando-web/src/main.rs +++ b/rust/maprando-web/src/main.rs @@ -497,6 +497,7 @@ struct SeedData { struct RandomizeRequest { spoiler_token: Text, settings: Text, + random_seed: Option>, } #[derive(Serialize)] @@ -524,9 +525,10 @@ enum AttemptError { fn handle_randomize_request( settings: RandomizerSettings, app_data: actix_web::web::Data, + requested_seed: Option, ) -> Result { let race_mode = settings.other_settings.race_mode; - let random_seed = match (settings.other_settings.random_seed, race_mode) { + let random_seed = match (requested_seed, race_mode) { (_, true) | (None, _) => get_random_seed(), (Some(s), false) => s, }; @@ -683,9 +685,14 @@ async fn randomize( settings.name = Some("Custom".to_string()); } - if settings.other_settings.random_seed == Some(0) { - return HttpResponse::BadRequest().body("Invalid random seed: 0"); - } + let requested_seed: Option = match req.random_seed.as_ref().map(|s| s.0.trim()) { + None | Some("") => None, + Some(s) => match s.parse::() { + Ok(v) if v != 0 => Some(v), + Ok(_) => None, + Err(_) => return HttpResponse::BadRequest().body("Invalid random seed"), + }, + }; if settings.skill_assumption_settings.ridley_proficiency < 0.0 || settings.skill_assumption_settings.ridley_proficiency > 1.0 @@ -694,9 +701,10 @@ async fn randomize( } let settings_copy = settings.clone(); + let app_data_copy = app_data.clone(); - let output_result = actix_web::rt::task::spawn_blocking(|| { - handle_randomize_request(settings_copy, app_data_copy) + let output_result = actix_web::rt::task::spawn_blocking(move || { + handle_randomize_request(settings_copy, app_data_copy, requested_seed) }) .await .unwrap(); diff --git a/rust/maprando-web/templates/generate/scripts.html b/rust/maprando-web/templates/generate/scripts.html index e7b5a762f..3ee5a65a9 100644 --- a/rust/maprando-web/templates/generate/scripts.html +++ b/rust/maprando-web/templates/generate/scripts.html @@ -374,7 +374,6 @@ "all_enemies_respawn": formData.get("all_enemies_respawn") == "true", "race_mode": formData.get("race_mode") == "true", "savestate": formData.get("savestate"), - "random_seed": tryParseInt(formData.get("random_seed")), "disable_spikesuit": formData.get("disable_spike_suit") == "true", "disable_bluesuit": formData.get("disable_blue_suit") == "true", "enable_major_glitches": formData.get("enable_major_glitches") == "true", @@ -503,6 +502,7 @@ let formData = new FormData(); formData.append("spoiler_token", document.getElementById("spoilerToken").value); formData.append("settings", JSON.stringify(settings)); + formData.append("random_seed", document.getElementById("randomSeed").value); let errorEl = document.getElementById("errorMsg"); let response; try { @@ -694,7 +694,6 @@ applyRadioValue("speedBooster", other.speed_booster); applyRadioValue("raceMode", other.race_mode); applyRadioValue("saveStateMode", other.savestate); - document.getElementById("randomSeed").value = other.random_seed; } async function upgradeSettings(settings) { @@ -1467,7 +1466,6 @@ document.getElementById("spoilerToken").value = localStorage["spoilerToken"]; } function checkOtherOptions() { - document.getElementById("randomSeed").value = ""; if (document.getElementById("fullSettingsPreset").value !== "") { return; } diff --git a/rust/maprando/src/bin/maprando-cli.rs b/rust/maprando/src/bin/maprando-cli.rs index 9c1333ab8..7aaf2b3a6 100644 --- a/rust/maprando/src/bin/maprando-cli.rs +++ b/rust/maprando/src/bin/maprando-cli.rs @@ -90,7 +90,6 @@ fn get_settings(args: &Args, preset_data: &PresetData) -> Result, } #[derive(Clone, Copy, Serialize, Deserialize, Debug, PartialEq, Eq)] diff --git a/rust/maprando/tests/logic_scenarios.rs b/rust/maprando/tests/logic_scenarios.rs index 64b009cd6..52e945b1f 100644 --- a/rust/maprando/tests/logic_scenarios.rs +++ b/rust/maprando/tests/logic_scenarios.rs @@ -359,7 +359,6 @@ fn get_settings(scenario: &Scenario) -> Result { enable_major_glitches: false, race_mode: false, savestate: maprando::settings::SaveState::No, - random_seed: None, }, debug: false, })