diff --git a/art/portraits/martlet.svg b/art/portraits/martlet.svg index e0a94b4..3c0dcf4 100644 --- a/art/portraits/martlet.svg +++ b/art/portraits/martlet.svg @@ -1,17 +1,20 @@ The martlet - The martlet — baseline, SIZ 3, 7 hit locations, natural armour 0, antique. Generated by tools/make-portraits.mjs; do not edit by hand. + The martlet — winged, SIZ 3, 10 hit locations, natural armour 0, antique. Generated by tools/make-portraits.mjs; do not edit by hand. - - - - - - - - - + + + + + + + + + + + + diff --git a/art/portraits/moor_cat.svg b/art/portraits/moor_cat.svg index e968f27..6cdbb83 100644 --- a/art/portraits/moor_cat.svg +++ b/art/portraits/moor_cat.svg @@ -1,24 +1,26 @@ The moor cat - The moor cat — baseline, SIZ 14, 7 hit locations, natural armour 2, antique. Generated by tools/make-portraits.mjs; do not edit by hand. + The moor cat — quadruped, SIZ 14, 8 hit locations, natural armour 2, antique. Generated by tools/make-portraits.mjs; do not edit by hand. - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/packs/weapons/000014.log b/packs/weapons/000006.log similarity index 100% rename from packs/weapons/000014.log rename to packs/weapons/000006.log diff --git a/packs/weapons/CURRENT b/packs/weapons/CURRENT index 625d147..cacca75 100644 --- a/packs/weapons/CURRENT +++ b/packs/weapons/CURRENT @@ -1 +1 @@ -MANIFEST-000013 +MANIFEST-000004 diff --git a/packs/weapons/MANIFEST-000004 b/packs/weapons/MANIFEST-000004 new file mode 100644 index 0000000..e0cdc92 Binary files /dev/null and b/packs/weapons/MANIFEST-000004 differ diff --git a/packs/weapons/MANIFEST-000013 b/packs/weapons/MANIFEST-000013 deleted file mode 100644 index c0ec63e..0000000 Binary files a/packs/weapons/MANIFEST-000013 and /dev/null differ diff --git a/tools/make-portraits.mjs b/tools/make-portraits.mjs index b266ea0..8ef8ebc 100644 --- a/tools/make-portraits.mjs +++ b/tools/make-portraits.mjs @@ -250,9 +250,20 @@ function part(shape, attrs) { } export function portraitSvg(spec, kind = "npc") { + /* THE BODY PLAN, not the species — `spec.bodyPlan ?? spec.species`, which is the rule + R-264 settled for the harness and build-packs:294 writes to the actor's + speciesProfile. This read `species` alone, and every creature with a non-baseline + body has `species: "baseline"`: the guildhall gryphon's own generated portrait + described it as "baseline, 7 hit locations" and drew a human silhouette for an + eagle-lion with wings. 48 creatures were affected, 32 quadrupeds and 16 winged. + + The same defect, in the same shape, as the one in mj-queue's anatomy clause — fixed + there earlier and not looked for here, one file away, in the other tool that draws a + creature from its statblock. */ const species = spec.species ?? "baseline"; - const art = BODY_ART[species] ?? BODY_ART.baseline; - const table = LOCATION_TABLES[species] ?? LOCATION_TABLES.baseline; + const plan = spec.bodyPlan ?? species; + const art = BODY_ART[plan] ?? BODY_ART[species] ?? BODY_ART.baseline; + const table = LOCATION_TABLES[plan] ?? LOCATION_TABLES[species] ?? LOCATION_TABLES.baseline; const era = eraOf(spec); const muted = era === "antique"; @@ -329,7 +340,7 @@ export function portraitSvg(spec, kind = "npc") { return ` ${esc(spec.name)} - ${esc(spec.name)} — ${species}, SIZ ${spec.ch?.siz ?? "?"}, ` + ${esc(spec.name)} — ${plan}, SIZ ${spec.ch?.siz ?? "?"}, ` + `${table.locations.length} hit locations, natural armour ${nat}, ${era}. ` + `Generated by tools/make-portraits.mjs; do not edit by hand.