commit 141ec649635f64c468dce4c74d79924505c15d4e Author: Warren H Date: Fri Jul 10 17:54:26 2026 -0400 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..0f671a8 --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +# I Want To Heal — Thor healer roguelike + +Playable low-poly third-person combat vertical slice for AYN Thor's dual displays. + +Offline-first frontend includes three timestamped save slots, optional account sync, local/online overwrite controls, Hunter Profile statistics, boss collection logs, Settings, and PvE/PvP mode entry points. + +## Run + +```bash +pnpm install +pnpm dev +``` + +The development server listens on `0.0.0.0:4173`. + +## TrueNAS deployment + +The production preview server uses the existing deployment address and port: + +- Public URL: `https://iwanttoheal.phenomrom.com` +- Host/container port: `4173` +- App directory: `/mnt/usbssds/apps/iwanttoheal/app` + +Copy the repository into the app directory, then deploy `compose.yaml`. The old +app's `db:init` step is intentionally omitted because this game has no database. +The existing reverse proxy can keep forwarding the public hostname to port +`4173`. + +## Publish updates to Gitea + +The repository target is: + +```text +https://git.whoagland.com/phenom/i-want-to-heal-mmo.git +``` + +Publish a checked update from the `main` branch: + +```bash +pnpm publish:gitea -- --message "Describe the update" +``` + +The script installs locked dependencies, builds, runs tests, commits all project +changes, and pushes `main`. If the TrueNAS app directory is mounted locally, it +also performs a fast-forward-only pull. Otherwise it prints the clone/pull command +to run on TrueNAS before restarting the app. The pull refuses to run when the +TrueNAS checkout still points at the old game's repository; move or archive that +checkout and clone the new repository first. + +Preview checks without changing Git or TrueNAS: + +```bash +pnpm publish:gitea -- --dry-run +``` + +Gitea credentials must come from Git's credential manager or an SSH remote. Do +not store access tokens in this repository. + +## Controls + +- `WASD` / left stick: move +- `Q` and `E` / D-pad: cycle party target +- `1`–`6`: cast Smite, Renew, Shield, Purify, Radiance, Flash Heal +- Gamepad: `X`, `Y`, `B`, `A`, `LB`, `RB` map to those abilities +- `M`: tactical map +- `I`: inventory and item tooltip +- `Enter` / Start: begin or reset encounter + +Touch controls on lower display support party targeting, ability casting, map, and inventory. + +## Prototype scope + +- Five-member AI party with Disc Priest healer +- Animated Druid healer, Knight tank, Ranger, Rogue, and Mage party models +- One animated boss: Bulldrome, using the Bull model at 180% of its original prototype scale +- Telegraph, charge, 0.75-second knockdown, and return-to-tank behavior +- Three-charge cycle into a five-second stack marker and 300-damage shared pounce +- Tank pressure, party-wide Cinder Nova, dispellable Ember Brand +- Full cooldown, mana, healing-over-time, shield absorption, and victory/defeat simulation +- True display ratios: 1920×1080 top and 1240×1080 bottom +- Android layout targets: approximately 960×540 CSS pixels top and 620×540 CSS pixels bottom +- Lower-screen typography scales against its own container, never the main page viewport + +Current build is browser-based for fast iteration. Shipping to separate physical Thor displays needs an Android host that presents the game viewport and tactical React surface on distinct display contexts.