The attacker's side of a combat exchange. See sohl.entity.result.AttackResult.
One hit location within a sohl.entity.body.BodyPart. See BodyLocation.
One anatomical division (head, torso, a limb). See sohl.entity.body.BodyPart.
Root anatomy: parts, adjacency, and hit-location resolution. See sohl.entity.body.BodyStructure.
One anatomical region (head, arms, torso, legs). See sohl.entity.body.BodyZone.
Combat-tagged mastery-level modifier (attack/defense tests). See CombatModifier.
Full attack-vs-defense exchange outcome. See CombatResult.
The defender's side of a combat exchange. See DefendResult.
Damage/impact modifier — dice plus aspect. See ImpactModifier.
Resolved impact/damage outcome. See ImpactResult.
sohl.entity.modifier.ValueModifier specialized for d100 roll-under mastery tests. See sohl.entity.modifier.MasteryLevelModifier.
A melee strike mode. See MeleeStrikeMode.
A missile (ranged) strike mode. See MissileStrikeMode.
Two success tests compared to determine a winner. See OpposedTestResult.
Executable action — a context-menu entry / chat-card button. See sohl.entity.action.SohlAction.
Abstract base for a weapon/technique's mode of use in combat. See StrikeModeBase.
Single d100 roll-under mastery test outcome. See sohl.entity.result.SuccessTestResult.
Abstract base for test/combat resolution outcomes. See TestResult.
One operator-tagged delta applied by a sohl.entity.modifier.ValueModifier. See ValueDelta.
Auditable base-plus-ordered-deltas value tracker. See sohl.entity.modifier.ValueModifier.
The overridable entity-class registry, keyed by class name. Each value is the class constructor itself (
typeof ClassName), sonew sohl.entity.X(...)andclass Y extends sohl.entity.X {}both type-check. Hand-declared (rather thantypeof someObjectLiteral) because the backing is populated dynamically by self-registration, not a literal — keep it in sync with theENTITY_NAMESlist and theregisterEntitycall in each class module. Each property is the class constructor (typeof X), not an instance.