Commit Graph

2 Commits

Author SHA1 Message Date
Brian Fertig 51fc62ec66 Add skill layer: data-driven Skill Tree, combat bar seats, and two Vangu
- New `data/skills.json` (registered in manifest) owns every number/string for the
  per-class skill trees, type taxonomy, seat table, bar look, and window copy;
  code only reads behavior off it so adding a third skill is a data edit.
- Pure skill model + ledger (`js/skills/SkillModel.js`, `SkillState.js`): rank
  points from the class bank, spend-through-unlock edges, seat bindings, save
  round-trip via `record.playerSkills` (old saves load as an empty ledger).
- Combat runtime in `CombatSystem.js`: cast pipeline with per-skill recharge
  clocks, energy spend/regen (now on by default), Ramming Charge dash + arrival
  blast (4x..12x weapon damage by rank), Reinforced Plating hull pool re-rolled
  from base so it never compounds; charge passes through the pack and settles once.
- UI: full-screen Skill Tree console (`js/ui/SkillWindow.js`) opened from the ship
  console's SKILL TREE door (lit when the class owns a tree), combat bar seats draw
  icon/rank/cooldown/affordability states with click-to-assign and right-click clear,
  keys 1-8 cast or place.
- Evidence: new Node + Playwright suites (`skills.test.mjs`, `skills-combat.test.mjs`,
  `skills-bar-browser.test.mjs`, `skills-window-browser.test.mjs`,
  `skills-devdoor-browser.test.mjs`) plus screenshots in `dev/shots/`; README and
  PROJECT_NOTES document the layer and dev doors (`?skill`, `?skilltree`).
2026-09-27 07:20:55 -06:00
Brian Fertig 30b62fc57f Add dev/run-all runner and self-contained test setup
- Every `dev/*.test.mjs` now imports the Phaser stub loader, so plain
  `node dev/<name>.test.mjs` works without `--import`.
- New `dev/run-all.mjs` runs the whole suite in isolated Node processes
  with filtering, concurrency, timeouts, and aggregated failure output.
- Update README and adjust dynamic imports/paths for headless test reliability.
2026-09-14 10:35:55 -06:00