feat(city): add plaza exercise system with health tracking
- Adds CityPlazas support class for deterministic public plaza generation with outdoor gym equipment - Implements exercise and stop-exercise actions with proximity validation to equipment - Introduces health (0-100) and exercise_count attributes to Character model - Reduces hospital stay duration from two game days to one game hour - Adds 3D gym equipment rendering (bench, bars, bike, treadmill) in city viewer - Includes exercise state machine handling in world ticker with energy drain - Adds comprehensive PlazaExerciseTest and updates HospitalAdmissionTest - Provides localized UI strings for health HUD and exercise prompts
This commit is contained in:
+14
-2
@@ -192,7 +192,7 @@
|
||||
"city.citizens_near": "Citizens",
|
||||
"city.apply_job": "Apply for",
|
||||
"city.buy_hint": "Buys 1 food + 1 water + 10 materials",
|
||||
"city.hospital_hit": "You were hit by a vehicle! Hospitalized for 2 days.",
|
||||
"city.hospital_hit": "You were hit by a vehicle! Hospitalized for 1 hour.",
|
||||
"city.hospital_already": "You are already in the hospital.",
|
||||
"city.hospital_blocked": "You are hospitalized and cannot do that right now.",
|
||||
"city.hospital_bed": "Hospitalized",
|
||||
@@ -204,5 +204,17 @@
|
||||
"city.vol_music": "Music",
|
||||
"city.vol_sfx": "Effects",
|
||||
"city.mute": "Mute",
|
||||
"city.audio_hint": "Volume saved on this device."
|
||||
"city.audio_hint": "Volume saved on this device.",
|
||||
"city.hud_health": "Health",
|
||||
"city.hud_exercise": "Workouts",
|
||||
"city.exercise_use": "Press E to exercise",
|
||||
"city.exercise_active": "Exercising",
|
||||
"city.exercise_stopHint": "to stop",
|
||||
"city.exercise_ok": "Nice! +2 health.",
|
||||
"city.exercise_need_equipment": "Get closer to plaza gym equipment.",
|
||||
"city.exercise_need_awake": "You must be awake to exercise.",
|
||||
"city.exercise_tired": "You are too tired to exercise.",
|
||||
"city.exercise_max_health": "Health is already at maximum!",
|
||||
"city.exerciseStart": "Starting exercise…",
|
||||
"city.exerciseStop": "Exercise stopped."
|
||||
}
|
||||
|
||||
+14
-2
@@ -192,7 +192,7 @@
|
||||
"city.citizens_near": "Ciudadanos",
|
||||
"city.apply_job": "Solicitar",
|
||||
"city.buy_hint": "Compra 1 comida + 1 agua + 10 materiales",
|
||||
"city.hospital_hit": "¡Te atropelló un vehículo! Internado en el hospital por 2 días.",
|
||||
"city.hospital_hit": "¡Te atropelló un vehículo! Internado en el hospital por 1 hora.",
|
||||
"city.hospital_already": "Ya está internado en el hospital.",
|
||||
"city.hospital_blocked": "Está internado y no puede hacer eso ahora.",
|
||||
"city.hospital_bed": "Internado en el hospital",
|
||||
@@ -204,5 +204,17 @@
|
||||
"city.vol_music": "Música",
|
||||
"city.vol_sfx": "Efectos",
|
||||
"city.mute": "Silenciar",
|
||||
"city.audio_hint": "Volumen guardado en este dispositivo."
|
||||
"city.audio_hint": "Volumen guardado en este dispositivo.",
|
||||
"city.hud_health": "Salud",
|
||||
"city.hud_exercise": "Ejercicios",
|
||||
"city.exercise_use": "Pulse E para ejercitarse",
|
||||
"city.exercise_active": "Ejercitándose",
|
||||
"city.exercise_stopHint": "para parar",
|
||||
"city.exercise_ok": "¡Bien! +2 de salud.",
|
||||
"city.exercise_need_equipment": "Acérquese a un equipo de la plaza.",
|
||||
"city.exercise_need_awake": "Debe estar despierto para ejercitarse.",
|
||||
"city.exercise_tired": "Está demasiado cansado para ejercitarse.",
|
||||
"city.exercise_max_health": "¡La salud ya está en el máximo!",
|
||||
"city.exerciseStart": "Empezando a ejercitarse…",
|
||||
"city.exerciseStop": "Ejercicio terminado."
|
||||
}
|
||||
|
||||
+14
-2
@@ -192,7 +192,7 @@
|
||||
"city.citizens_near": "Cidadãos",
|
||||
"city.apply_job": "Aplicar para",
|
||||
"city.buy_hint": "Compra 1 comida+1 água+10 materiais",
|
||||
"city.hospital_hit": "Você foi atropelado! Internado no hospital por 2 dias.",
|
||||
"city.hospital_hit": "Você foi atropelado! Internado no hospital por 1 hora.",
|
||||
"city.hospital_already": "Você já está internado no hospital.",
|
||||
"city.hospital_blocked": "Você está internado no hospital e não pode fazer isso agora.",
|
||||
"city.hospital_bed": "Internado no hospital",
|
||||
@@ -204,5 +204,17 @@
|
||||
"city.vol_music": "Música",
|
||||
"city.vol_sfx": "Efeitos",
|
||||
"city.mute": "Mudo",
|
||||
"city.audio_hint": "Volume salvo neste dispositivo."
|
||||
"city.audio_hint": "Volume salvo neste dispositivo.",
|
||||
"city.hud_health": "Saúde",
|
||||
"city.hud_exercise": "Exercícios",
|
||||
"city.exercise_use": "Pressione E para exercitar",
|
||||
"city.exercise_active": "Exercitando",
|
||||
"city.exercise_stopHint": "para parar",
|
||||
"city.exercise_ok": "Boa! +2 de saúde.",
|
||||
"city.exercise_need_equipment": "Aproxime-se de um equipamento da praça.",
|
||||
"city.exercise_need_awake": "Você precisa estar acordado para se exercitar.",
|
||||
"city.exercise_tired": "Você está cansado demais para se exercitar.",
|
||||
"city.exercise_max_health": "Saúde já está no máximo!",
|
||||
"city.exerciseStart": "Começando a se exercitar…",
|
||||
"city.exerciseStop": "Exercício encerrado."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user