Class Playstyle, Subclasses, and Build Ladders
Status: DESIGN LOCKED 2026-07-27 (owner: automatic combat + subclass ladder + skill-tree direction) Parents: combat.md, act-1-class-signatures.md, progression.md, class-identity.md, star-map.md
Last updated: July 27, 2026
Darkness Falls — Class Playstyle, Subclasses, and Build Ladders
Status: DESIGN LOCKED 2026-07-27 (owner: automatic combat + subclass ladder + skill-tree direction) Parents: combat.md, act-1-class-signatures.md, progression.md, class-identity.md, star-map.md Alignment plan: design-code-alignment.md
0. Non-negotiable combat law
- Default power is automatic. Players do not run a cast bar for class identity.
- Player job in combat = movement, positioning, dodge, potions, flee. Not "use ability 3".
- Build job outside combat = class, promotion (subclass), paragon path, gear, Star Map, skill gems.
- At most zero required cast verbs for class signatures. Leftover cast NLU soft-redirects.
- Ignore-path: walk-and-auto-attack alone must remain viable.
Violating this law is a design bug, not a feature.
1. Automatic power layers (how power fires)
| Layer | When it fires | Tuned by |
|---|---|---|
| Basic Attack | Every combat attack | Weapon, stats, Star Map |
| Rotation specials | Every N attacks (howOftenSwings) |
Class signature, promotion, paragon, gems |
| Stationary specials | Every N consecutive combat rounds without moving | Class (Guard/Mend), gear MEGA_*, promotion |
| Mobile momentum | Attacks on a turn where the player moved | Class defaults, promotion, gear |
| Skill gems / Star Map attacks | Existing cadence tables in combat.md | Gear slots, Star Map nodes |
Act I base signatures (L1)
| Class | Signature | Kind | Default cadence |
|---|---|---|---|
| Fighter | Guard | Stationary | Every 4 hold rounds, brace next hit (40% reduce) |
| Cleric | Mend | Stationary | Every 3 hold rounds while hurt, heal |
| Rogue | Strike | Rotation | Every 3 attacks |
| Sorcerer | Blast | Rotation | Every 4 attacks |
| Barbarian | Rage | Rotation | Every 4 attacks (damage amp pulse) |
| Ranger | Mark | Rotation | Every 3 attacks (bonus damage proc) |
| Necromancer | Drain | Rotation | Every 4 attacks (damage + small self heal) |
| Paladin | Smite | Rotation | Every 3 attacks (hybrid hit) |
| All | Mobile momentum | Mobile | +15% damage if moved this combat turn (promotion can raise) |
2. Subclass ladder (LOCKED mapping — do not invent a third system)
Use the existing progression milestones. Do not add parallel pick UIs.
| Tier | Level | Existing system | Player-facing name | What it customizes | Code status |
|---|---|---|---|---|---|
| T0 Base | 1 | Base class | Class | Signature kind + default cadence | HAVE — auto signatures + profile |
| T1 Subclass | 40 | Promotion class (DarknessFallsParagonClass) |
Promotion / subclass | Mutates signature cadence + flavor; grants existing promotion abilities | HAVE — profile mutations |
| T2 Branch | 50 | Paragon path (DarknessFallsParagonPath) |
Paragon path | Further mutates signature + grants path augment | HAVE — profile mutations |
| T3 (future) | 70+ | Class skill trees | Class tree nodes | Optional picks that stack onto the same signature profile | NOT IMPLEMENTED — design direction only |
Archetype classes (Barbarian, Ranger, Necromancer, Paladin) skip T1 promotions today and go T0 to T2 at 50. That remains true; their T1 flavor is baked into the base twin signature until a future design reopens mid-tier forks for them.
T1 examples (signature mutation, not new cast verbs)
| Base | Promotion | Signature mutation |
|---|---|---|
| Rogue | Assassin | Strike every 2 attacks; higher Strike crit |
| Rogue | Bandit | Strike every 3; mobile momentum +25% |
| Rogue | Swashbuckler | Strike every 4; mobile momentum +15% |
| Fighter | Champion | Guard every 3 hold rounds |
| Fighter | Mercenary | Guard every 5; mobile momentum +20% |
| Fighter | Demon Slayer | Guard every 4; guard reduction 50% |
| Cleric | High Priest | Mend every 2 hold rounds |
| Cleric | Rune Master | Mend every 3; larger heal |
| Cleric | Avenger | Mend every 4; mobile momentum +20% |
| Sorcerer | Firestarter | Blast every 3 |
| Sorcerer | Ice Maven | Blast every 4 |
| Sorcerer | Lightning Thief | Blast every 4; mobile momentum +20% |
(Typo guard: Demon Slayer not Spayer — correct in code.)
T2 examples
Paragon paths (3 per class) further adjust the same SignaturePlaystyleProfile (cadence clamp, momentum, heal/guard strength) and set paragonAugment. Never introduces cast verbs.
3. Code contract
- Single resolver:
DarknessFallsSignaturePlaystyleProfilebuilt from base class + promotion + paragon path. - Applied at stat rebuild after
addClassAbilitiesso signature rows match the profile. - Stationary/mobile runtime uses one streak tracker (
consecutiveStationaryCombatRounds,movedThisCombatTurn). - View abilities describes automatic playstyle; cast soft-redirects.
- Scenarios + JUnit prove profile math and ignore-path.
4. Gear hooks (stationary / mobile)
Gems designed "while stationary" (MEGA_*, ARCANE_*) MUST use the same playstyle flags. Do not invent a second stationary tracker.
HAVE today: mild +15% armor/evasion while holding ground (stationary stance). MEGA_* skill-gem defense bonuses exist as equip-time stats; full "only while stationary" gating for every MEGA_* row is partial — extend when gear content needs it.
5. Star Map vs class skill trees (do not confuse)
Today (locked and shipped)
- Star Map (
star-map.md) is the live shared four-path (N/S/E/W) skill-point spend. Not class-locked. - Class identity lives in signature profile + promotion + paragon + gear gems.
- That is the complete build surface agents may implement against right now.
T3 class skill trees — FUTURE ONLY
CAVEAT (binding): Class skill trees do not exist in code, content, NLU, or UI. There is no tree table, no spend handler, no respec, no voice flow. until the owner runs a design pass and flips this status out of FUTURE. Until then, this section is direction for later design, not a build backlog item.
If / when designed, T3 would:
- Spend points into a class-scoped node set (or a class lens on Star Map).
- Only mutate the automatic profile (cadence, elemental flavor, stationary/mobile bias).
- Never require cast commands.
- Enable replayability via multiple trees per class and a respec cost.
Open questions before any code (owner design pass required):
| Question | Why it blocks |
|---|---|
| Point economy vs Star Map | Double spend or shared pool? |
| Voice UX for tree pick | Chip lists vs free text; depth budget |
| Respec / season interaction | Current Season fairness contract |
| Twin-class uniqueness | Barb vs Fighter trees must not collapse |
| Level gate (70+ vs earlier) | Interaction with Mastery |
Forbidden until that pass:
- New tables / handlers named skill_tree / class_tree
- Pulling promotion skills to L1
- Parallel pick UIs outside promotion / paragon / Star Map
6. Phase order (implementation truth)
| # | Work | Status |
|---|---|---|
| 1 | Playstyle auto signatures (T0) — pilot 4 + twins | local_proved (ship pending USER /deploy) |
| 2 | Profile mutations from T1/T2 — promotion + path | HAVE in code (JUnit); more scenario claims optional |
| 3 | Stationary/mobile gear hooks — MEGA_* / ARCANE_* | PARTIAL (stance buff live; full gem gating later) |
| 4 | Class skill trees (T3) | FUTURE — design only; not a coding task |
7. Success tests
- Walk-and-fight without class verbs still works (ignore-path).
- Holding ground as Fighter braces; as Cleric mends when hurt.
- Moving in a fight increases damage (momentum).
- Promotion changes cadence or momentum vs base (JUnit profile table).
- No combat cast chips for class signatures.
- Cast NLU never starts a second mini-game; soft-redirect only.
Refs
- combat.md — Class playstyle signatures
- act-1-class-signatures.md — Hard rule + Capability Contracts
- progression.md — Promotion / Paragon
- class-identity.md — Lever toolbox
- star-map.md — Live skill-point tree (not T3)
- design-code-alignment.md — Full HAVE vs SHOULD inventory + close-the-gap plan