feat: Implement nausea symptom system and related features
- 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:
@@ -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`,
|
||||
|
||||
Reference in New Issue
Block a user