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. BodyLogic is a plain, Being-owned domain object (not a SohlLogic) that wraps the persisted body data into live derived state — the anatomy, and weight / reach / bodyScale as 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).

Constructors

Properties

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.

injuryTable: number[]

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.

Accessors

  • get isIncorporeal(): boolean
  • Whether this being is incorporeal — it has no body structure (a spirit). Replaces the former "no corpus item" check.

    Returns boolean

Methods

  • 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.

    Returns void