Abilities: fix skill-learn flow, distinct ship names, + handoff docs#1
Merged
Merged
Conversation
Gameplay push for playable solo-vs-AI, plus the rules/state docs needed to
continue in a fresh session.
Ability learn flow (was genuinely broken): the "+1pt" level-up badge only
rendered on castable ability slots, so the PASSIVE hero skills (Enforced/
Reinforced/Super Hull, Onboard Mechanics Crew, Ship Sails, auras) — most of a
hull's progression — had no badge anywhere and could never be ranked; hulls
whose only castable skill was level-gated showed no badges at all. Added
shipPassiveLearnableSkills() + a dedicated SKILLS strip above the inventory bar
with the same +1pt badge, so every learnable skill on every hull is reachable.
Distinct icons for hull/sails/repair/true-sight. Verified live in a solo match
by DOM/state reads (rank 0->1, point spent, full client->server->sim round
trip); a test asserts 0 orphan learnable skills across all hulls.
Distinct ship names: added ShipSpec.properName from the WC3 Proper Name (upro)
field (Sailor, Crusader, Interceptor, Dominator, ...) so colliding class names
("Battle Ship" x4, "Cruiser" x4) are distinguishable; shown in shop/scoreboard/
banner/gallery. Renderer still keys the sprite off .name.
Also in this push: pathfinding routes ships around land; AI trader runs routes
in solo-vs-AI; wave-imitating lane ribbons removed; multi-ability HUD cast bar;
shop arrow no longer overlaps a hotkey.
Docs/rules: add CLAUDE.md (durable working rules + architecture) and
docs/STATUS.md (current-state handoff). Gitignore decoded map imagery
(data/reference/) and local agent config (.claude/) — derived assets / local
tooling, not redistributed.
Tests green: client 398, core 520, server 143; lint clean; build green;
determinism (AI-only seed-equal replay) intact.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Gameplay push for playable solo-vs-AI, plus the rules/state docs needed to continue in a fresh session.
Ability learn flow (was genuinely broken)
The "+1pt" level-up badge only rendered on castable ability slots, so the passive hero skills (Enforced/Reinforced/Super Hull, Onboard Mechanics Crew, Ship Sails, auras) — most of a hull's progression — had no badge anywhere and could never be ranked. Hulls whose only castable skill was level-gated showed no badges at all ("other ships show no skills"). Fix:
shipPassiveLearnableSkills()+ a dedicated SKILLS strip above the inventory bar with the same +1pt badge, so every learnable skill on every hull is reachable. Distinct icons for hull/sails/repair/true-sight.Verified live in a solo match by DOM/state reads (rank 0→1, point spent, full client→server→sim→snapshot round-trip); a deterministic test asserts 0 orphan learnable skills across all hulls.
Distinct ship names
Added
ShipSpec.properNamefrom the WC3 Proper Name (upro) field — Sailor, Crusader, Interceptor, Dominator, Destroyer, Overlord, Juggernaut, … — so colliding class names ("Battle Ship" ×4, "Cruiser" ×4) are distinguishable. Shown in shop/scoreboard/banner/gallery; the renderer still keys the sprite off.name.Also in this push
Pathfinding routes ships around land · AI trader runs routes in solo-vs-AI · wave-imitating lane ribbons removed · multi-ability HUD cast bar · shop arrow no longer overlaps a hotkey.
Docs / rules (session transfer)
CLAUDE.md— durable working rules + architecture (auto-loaded by a new session).docs/STATUS.md— current-state handoff: what's done, open items (crash #15, map parked #14, broad ability cast-audit to re-run)..gitignore— exclude decoded map imagery (data/reference/) and local agent config (.claude/).Verification
Tests green: client 398, core 520, server 143; lint clean; build green; determinism (AI-only seed-equal replay) intact.
Open (tracked in docs/STATUS.md)
🤖 Generated with Claude Code