Skip to content

Canon-figure-as-PC build completeness + armor inspector metadata (optimizer build-inspection gaps) #896

Description

@100yenadmin

Context

The build-optimizer persona (sat=5, the lone cross_persona_sat holdout) plays a seeded canon figure as PC (e.g. Devella Fountainhead, an L10 Paladin via load_canon_character). Ground-truth from its live snapshot showed the canon figure arrives incompletely built, and the item inspector lacks SRD armor metadata. These are legitimate D&D-completeness gaps a real player adopting a canon figure also hits.

The 5 optimizer majors, root-caused:

# Complaint Root cause Status
1 L10 Paladin "Choose Subclass" — no Sacred Oath _apply_srd_class_defaults only granted subclass features if sub (already set) → canon figure kept subclass=null FIXED #895 (auto-set the sole SRD subclass on canon-load seat at/past the choice level)
5 No Fighting Style selected (blank at L10) The Character model has no fighting_style field — "Fighting Style" is only a feature name; no specific style is tracked/selected OPEN — needs a fighting_style field + a default-on-canon-load (multiple SRD styles, so pick a sensible default e.g. Defense, or surface as a build choice) + viewer render
2 Only 3 of 7 spells prepared (under-prepared) Canon record supplied 3 spells; the seat path's starter-loadout only fires when spell lists are empty (server.py ~1392), so it never tops a canon caster up to the prepared cap OPEN — on canon-load, fill an under-prepared prepared-caster to the SRD prepared-max (level/2 + ability mod) from _preparable_spells
3 No spell-preparation UI in Rest & Prepare Viewer: the rest-prep spell-selection step (the #887 engine half landed) isn't reachable/rendered OPEN — viewer (OpenWorlds Rest & Prepare dialog)
4 Chain Mail inspector shallow — no category/STR-req/stealth Engine itemcatalog Chain Mail has armor_category: heavy, ac: 16, weight: 55 but lacks stealth_disadvantage and str_requirement (STR 13 in SRD 5.2); the inspector also doesn't render category/STR-req/stealth OPEN — add SRD armor metadata (stealth-disadvantage, STR-req) to the heavy/medium armor catalog entries (Chain Mail STR 13, Plate/Splint STR 15, etc.) + render in the viewer item inspector

Suggested next wave (engine = my lane; viewer separate)

Evidence

Snapshot (vm2-optimizer @27d8002): classes:[{Paladin,10,subclass:null}], pending_choices:[], spells_prepared:[Bless,Cure Wounds,Shield of Faith] (3, cap 7), no fighting_style field. Item: itemcatalog.resolve("Chain Mail"){armor_category:heavy, ac:16, weight:55} (no stealth/STR-req).

NOTE: #895 (oath auto-set) lands the #1 fix; a fresh sweep @3582dc2 will show the residual optimizer sat after it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions