Build a being's body sub-object bound to its owning logic.
The owning being logic; the entities of this body are
parented to it, and it supplies the str attribute for weight.calc.
Per-creature body-scale factor as a sohl.entity.modifier.ValueModifier
(1.0 = baseline human), seeded from body.bodyScaleBase and floored at
0.01. Active Effects can layer deltas (shrink/enlarge), which re-scale
injuryTable.
This creature's effective injury-level thresholds — the master
BASE_INJURY_THRESHOLDS scaled by bodyScale, derived during
evaluate. Consumed by injuryLevelFromImpact (via
sohl.entity.body.BodyStructure.injuryTable) so an absolute impact
reads size-correct on this body.
The being's base melee reach (feet) as a ValueModifier so runtime
modifiers (size-changing effects) can layer on. Sourced from
body.reachBase; combined with a melee strike mode's effective length to
produce that mode's actual reach.
The anatomical structure of the being — body parts, hit locations, and adjacency. Constructed during initialize.
The being's body weight (pounds, excluding gear) as a
sohl.entity.modifier.ValueModifier, seeded from body.weight.base
(when set) or the body.weight.calc SafeExpression of strength.
Whether this being is incorporeal — it has no body structure (a spirit). Replaces the former "no corpus item" check.
Complete body derivation once sibling items are prepared: seed the
strength-derived weight (when weight.base is null) and derive
the size-scaled injuryTable from bodyScale. Mirrors a
logic's evaluate phase; a bodyScale delta (shrink/enlarge) re-scales
the table within the same prepare cycle.
Build the body structure and seed the bodyScale / weight / reach
modifiers from persisted data. Mirrors a logic's initialize
phase; called from sohl.document.actor.logic.BeingLogic.initialize.
A being's body — its physical baseline, derived from
system.body.Dissolved from the former Corpus item into the Being (#535): rather than a separate embedded document, a Being owns its body directly.
BodyLogicis a plain, Being-owned domain object (not aSohlLogic) that wraps the persisted body data into live derived state — the anatomy, andweight/reach/bodyScaleas sohl.entity.modifier.ValueModifiers so runtime effects (size changes, encumbrance) can layer on.The body's entities (sohl.entity.body.BodyStructure and its parts / locations) are parented to the owning sohl.document.actor.logic.BeingLogic (a real Logic), so ValueModifiers, actor lookups, and persistence resolve against the being document; this object is only the derivation + accessor seam exposed as
being.body.Incorporeality is an empty body —
structure.parts.length === 0— not an absent object (see isIncorporeal).