# Chemo-Sim — A First-Person Chemo Treatment Simulator Changelog for Chemo-Sim. See [README.md](README.md) for game overview and [docs/DEVELOPMENT_ROADMAP.md](docs/DEVELOPMENT_ROADMAP.md) for development plans. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [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`, version `0.1.0`, Forward+ renderer with mobile fallback, 1920×1080 window). - **1.2** Created directory structure per `docs/ARCHITECTURE.md` (`scenes/`, `scripts/`, `assets/`, `export_templates/`, `build/`), with `.gitkeep` placeholders so empty dirs are tracked. - **1.3** Set up Gitea Actions CI/CD (`.gitea/workflows/build.yml`): builds on push/PR to `main`, exports Windows `.exe` + Linux `.x86_64` via the `barichello/godot-ci:4.3` container, uploads artifacts per run. Removed the GitHub Actions workflow in favor of Gitea-only CI. - **1.4** Configured export presets (`export_presets.cfg`) for Windows Desktop and Linux (x86_64). Verified both export locally via `godot --export-release` (Windows .exe ~80 MB, Linux .x86_64 ~63 MB). - Added placeholder `icon.svg` referenced by `project.godot`. ### Fixed - Corrected `.gitignore`: removed `*.godot` rule that would have ignored the required `project.godot`; added Godot 4 cache (`.godot/`), local toolchain (`tools/`), and build output ignores.