Commit Graph

4 Commits

Author SHA1 Message Date
Brian Fertig a5f69f3221 Add Inferno and Nanobots skills to the Vanguard tree
- Inferno (Offense, seat 2): flame arcs home on the nearest 2 hostiles
  (3 from rank 4) and ignite a burn that ticks on the combat loop's clock;
  scales in duration and per-tick damage with rank.
- Nanobots (Passive, no seat): mends 1% of max hull every 2s per point;
  a full hull banks nothing.
- Wire flameArc + hullRegen effect handlers in SkillEffects.js and the
  arc/burn/step logic in CombatSystem.js.
- Add firstPassiveOf() / hullRegen() to the skill ledger so the combat
  loop can read the mend's interval and color off the ranked def.
- Update icon sheet, dev shots, and the browser/combat/data test suites for
  the two new skills.
2026-09-27 22:06:03 -06:00
Brian Fertig a28aa6f7fa Add stun visual read to Boleadoras-strung enemies
- Strung hostiles dim to the data's fx.stunAlpha and show a crackling discharge (Fx.stunArms) while the snare holds, then recover with a release beat when the stun expires or on kill/revive
- Add Fx.stunArms/killStunArms + jagBolt helpers for the per-frame discharge (jagged bolts, sparks, hull stutters) tied to the snare's clock
- Store per-craft stun color/alpha from the bola catch and drive hold/release via _stunHoldFrame/_stunRelease in CombatSystem
- Add dev/stun-shot.mjs CDP script + screenshots, extend combat tests for dim/discharge/release, bump skills-bar test timeout, reformat skills.json, refresh toxic-land video
2026-09-27 16:58:59 -06:00
Brian Fertig 4aa0785b0d Remove rank stamp from combat bar seats
- Drop the `rankT` text object, its draw/update logic and data spec (`rankTextPx`) so seats only show icon, veil, sweep and seconds.
- Update `_ensureSkillIcons` fallback wording to reference frame/veil/sweep instead of rank stamp.
- Adjust browser test: stop asserting on rank text, recompute seat clip from the seat box center, and remove the rank-pixel regression check.
- Refresh screenshot fixtures (`dev/shots/*`) to match the new seat layout.
2026-09-27 11:52:49 -06:00
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