Skip to content

LaserLlama: feature wiring — Rage does not spend, 6 dead resource keys, ~150 unwired spends #27

Description

@Geph

Feature-level wiring gaps found by importing the six LaserLlama Alternate classes through the real import path and comparing each feature's declared resource spend against its enriched limitedUses / linked modifiers.

Class resource definition problems are tracked separately, as is sheet exposure.

1. Alternate Barbarian Rage never spends the Rage pool (P0)

Side by side with the SRD baseline:

SRD Barbarian       "Rage" limitedUses = {"type":"class_resource","classResourceKey":"rage"}
Alternate Barbarian "Rage" limitedUses = undefined
Alternate Barbarian "Rage" linked characteristics = ["damage_resistance"]

The rage resource itself is produced correctly (2 to 6 uses, unlimited at 20). The feature just never deducts from it, so raging is free.

2. Six dead resource keys point at pools the owning class does not have (P0)

Each of these silently no-ops, because the referenced key is not owned by the class:

Class / feature References Class actually owns
Alternate Fighter / Relentless superiority_dice exploit_dice
Alternate Monk / Way of the Shadow Arts, Cloak of Shadows focus_points alternate_monk_ki_points
Alternate Ranger / Monster Slayer, Knowledge of the Hunt quarry_dice quarry_die (looks like a plain _die / _dice typo)
Alternate Ranger / Buccaneer wild_shape n/a
Alternate Rogue / Psiknife (4 features) psi_points n/a
Alternate Sorcerer / Sorcery Incarnate sorcery_points unprefixed alternate_sorcerer_sorcery_points

A validator asserting that every referenced classResourceKey is owned by the class would catch all six at import time and prevent the next one.

3. Roughly 150 features name a resource spend in their text with no wiring attached

Counts per class, for features whose prose names a spend but which have no limitedUses and no resolved class resource:

Class Features naming a spend with no wiring
Alternate Monk 50
Alternate Sorcerer 49
Alternate Barbarian 18
Alternate Fighter 13
Alternate Ranger 12
Alternate Rogue 10

A 9-feature sample was hand-checked and 7 were unambiguously real spends (literal "expend 1 Ki", "spend 2 Ki" phrasing), so roughly three quarters of these are genuine misses rather than false positives from the detector.

Named base-class offenders worth fixing first because every character of that class hits them: Cunning Strike (Rogue, level 5), Mystic Techniques (Monk), Metamagic (Sorcerer), Magical Flux (Sorcerer).

Reproducing

Import the Drive JSON for a class through prepareImportedContent (not just applyImportEnrichmentPresets — the existing laserllama-*-import.test.ts files stop before the step where several of these surface), then inspect each feature's limitedUses and linked modifier classResourceKey against its description text.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Features to wireMechanics needing a new kind/characteristic or design decision to wire

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions