feat: Implement nausea symptom system and related features
Build / Export windows (push) Successful in 10m56s
Build / Export linux (push) Successful in 6m10s

- Added SymptomManager autoload for managing symptom intensities.
- Introduced nausea tilt effect for camera roll based on nausea intensity.
- Created color desaturation shader and overlay for visual feedback.
- Developed TreatmentManager to handle nausea ramping during IV treatment.
- Added hospital room scene with first-person controller and interactions.
- Implemented sit-down interaction for the treatment chair.
- Created IV insertion sequence with animations and completion signal.
- Added player controller with movement and interaction capabilities.
- Integrated nausea effects into the player experience with smooth transitions.
This commit is contained in:
2026-05-30 14:14:38 +02:00
parent 2eb7f9b2cb
commit 8462a2fde7
16 changed files with 867 additions and 3 deletions
+40
View File
@@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added — Sprint 3: Nausea Symptom System
- **3.1** Symptom manager autoload (`scripts/game_systems/symptom_manager.gd`):
generic per-symptom intensities clamped to [0, 100], `trigger_symptom` /
`add_intensity` / `get_intensity` / `reset_all`, and
`nausea_intensity_changed` + generic `symptom_intensity_changed` signals.
Registered as the `SymptomManager` autoload.
- **3.2** Screen tilt effect (`scripts/symptoms/nausea_tilt.gd`): camera Z-axis
roll oscillating at ~0.3 Hz, amplitude scaled by nausea up to ~5°, smoothly
following intensity. Attached to the player `Camera3D`.
- **3.3** Color desaturation shader (`assets/shaders/desaturation.gdshader` +
`scripts/symptoms/nausea_desaturation.gd` + `scenes/symptoms/nausea_overlay.tscn`):
full-screen ColorRect that blends the screen toward grayscale, reaching full
desaturation at nausea ≥ 80, fading smoothly with intensity.
- **3.4** Treatment manager (`scripts/game_systems/treatment_manager.gd`): on IV
`iv_completed`, ramps nausea from its current value to ~40 over 30 seconds,
then holds. SymptomManager propagates changes to the tilt and desaturation
effects. Wired `IVInsertion.iv_completed → TreatmentManager.start_ramp`.
### Added — Sprint 2: Environment & Character
- **2.1** Hospital room scene (`scenes/hospital/hospital_room.tscn`): floor,
ceiling, four walls (with collision), placeholder furniture (bed, chair,
IV stand, bedside table), fluorescent lighting (directional + omni), and a
start camera/player facing the chair. Set as `run/main_scene`.
- **2.2** First-person controller (`scripts/character/player_controller.gd` +
`scenes/hospital/player.tscn`): `CharacterBody3D` with capsule collision,
child `Camera3D`, WASD movement, captured mouse-look (pitch clamped),
gravity, and an interaction `RayCast3D`. Added `move_*` / `interact` input
actions to `project.godot`.
- **2.3** Sit-down interaction (`scripts/character/chair_interaction.gd` +
`scenes/hospital/chair_interaction.tscn`): Area3D trigger with "Press E to
sit/stand" prompt, smooth tween to a seat marker, movement lock while
seated, and `player_seated` / `player_stood` signals.
- **2.4** IV insertion sequence (`scripts/character/iv_insertion.gd` +
`scenes/hospital/iv_insertion.tscn`): IV arm placeholder with a tweened
needle-approach + tape-press animation, emitting `iv_completed`. Wired
`ChairInteraction.player_seated → IVInsertion.begin_sequence` in the room
scene.
### Added — Sprint 1: Project Scaffolding & Core Tech
- **1.1** Initialized Godot 4.x project: `project.godot` (name `chemo-sim`,