diff --git a/apps/web/src/arcade-games/complement-race/Validator.ts b/apps/web/src/arcade-games/complement-race/Validator.ts index 3d39c2cb..6c4094ac 100644 --- a/apps/web/src/arcade-games/complement-race/Validator.ts +++ b/apps/web/src/arcade-games/complement-race/Validator.ts @@ -812,6 +812,11 @@ export class ComplementRaceValidator private checkWinCondition(state: ComplementRaceState): string | null { const { config, players } = state + // Infinite mode: Never end the game + if (config.winCondition === 'infinite') { + return null + } + // Practice mode: First to reach goal if (config.style === 'practice') { for (const [playerId, player] of Object.entries(players)) { diff --git a/apps/web/src/arcade-games/complement-race/index.tsx b/apps/web/src/arcade-games/complement-race/index.tsx index 44f2b23b..38ff150e 100644 --- a/apps/web/src/arcade-games/complement-race/index.tsx +++ b/apps/web/src/arcade-games/complement-race/index.tsx @@ -41,7 +41,7 @@ const defaultConfig: ComplementRaceConfig = { passengerCount: 6, maxConcurrentPassengers: 3, raceGoal: 20, - winCondition: 'route-based', + winCondition: 'infinite', // Sprint mode is infinite by default (Steam Sprint) routeCount: 3, targetScore: 100, timeLimit: 300, diff --git a/apps/web/src/lib/arcade/game-configs.ts b/apps/web/src/lib/arcade/game-configs.ts index fca0aaf9..7bc8fa8e 100644 --- a/apps/web/src/lib/arcade/game-configs.ts +++ b/apps/web/src/lib/arcade/game-configs.ts @@ -89,7 +89,7 @@ export interface ComplementRaceGameConfig { raceGoal: number // questions to win practice mode (default 20) // Win Conditions - winCondition: 'route-based' | 'score-based' | 'time-based' + winCondition: 'route-based' | 'score-based' | 'time-based' | 'infinite' targetScore?: number // for score-based (e.g., 100) timeLimit?: number // for time-based (e.g., 300 seconds) routeCount?: number // for route-based (e.g., 3 routes) @@ -171,7 +171,7 @@ export const DEFAULT_COMPLEMENT_RACE_CONFIG: ComplementRaceGameConfig = { raceGoal: 20, // Win conditions - winCondition: 'route-based', + winCondition: 'infinite', // Sprint mode is infinite by default (Steam Sprint) routeCount: 3, targetScore: 100, timeLimit: 300,