From cacacb00dc8485cc18256145b69eec2bc54b9e45 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 27 Apr 2026 03:05:18 +0000 Subject: [PATCH] feat(server): expand daily challenge to 6 goal variants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds three new challenge types (win in 3 min, score ≥5000, win in 8 min) so the daily challenge rotates through a fortnight of variety before any variant repeats. Seeds are still deterministic worldwide. Co-Authored-By: Claude Sonnet 4.6 --- solitaire_server/src/challenge.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/solitaire_server/src/challenge.rs b/solitaire_server/src/challenge.rs index c89075c..22da5b6 100644 --- a/solitaire_server/src/challenge.rs +++ b/solitaire_server/src/challenge.rs @@ -34,8 +34,8 @@ pub fn hash_date_to_u64(date: &str) -> u64 { /// so all players face exactly the same challenge on the same day. fn generate_goal(date: &str, seed: u64) -> ChallengeGoal { // Pick a goal variant based on seed modulo number-of-variants. - // Three variants cycle through: timed, high-score, and open. - match seed % 3 { + // Six variants give a fortnight of variety before any repeat. + match seed % 6 { 0 => ChallengeGoal { date: date.to_string(), seed, @@ -50,6 +50,27 @@ fn generate_goal(date: &str, seed: u64) -> ChallengeGoal { target_score: Some(4_000), max_time_secs: None, }, + 2 => ChallengeGoal { + date: date.to_string(), + seed, + description: "Win in under 3 minutes".to_string(), + target_score: None, + max_time_secs: Some(180), + }, + 3 => ChallengeGoal { + date: date.to_string(), + seed, + description: "Reach a score of 5 000 or more".to_string(), + target_score: Some(5_000), + max_time_secs: None, + }, + 4 => ChallengeGoal { + date: date.to_string(), + seed, + description: "Win in under 8 minutes".to_string(), + target_score: None, + max_time_secs: Some(480), + }, _ => ChallengeGoal { date: date.to_string(), seed,