Initial data from which to construct the Combatant
Construction context options
This combatant's actor as a SohlActor, or null.
An array of combatants which are considered allies of this combatant: the other combatants sharing this one's (non-null) CombatantGroup. The inverse of isEnemyOf.
.
True if the combatant has performed an action, false otherwise.
The computed move for the medium the combat tracker should display for this combatant. Tracker rows read this getter.
The id of this combatant's CombatantGroup, or null when ungrouped.
_source.group is the canonical stored id. Core's _prepareGroup()
reassigns the derived this.group to the resolved CombatantGroup
document when it resolves, but leaves it as the raw id (or null)
otherwise — so reading _source avoids that heterogeneity.
The strike mode last used to attack, or undefined (combat-scoped).
The strike mode last used to block, or undefined (combat-scoped).
The sohl.document.combatant.logic.SohlCombatantLogic for this combatant.
This combatant's melee reach (feet): the reach of its actor — the greatest reach among the actor's currently available melee strike modes. 0 when the actor is absent or is not a Being.
The number of spaces this combatant has moved since the start of its turn.
The number of spaces moved this turn.
The combatants currently threatening this one — enemies that are not defeated, not incapacitated, not hidden, and within reach. See sohl.document.combatant.logic.SohlCombatantLogic.threatenedBy.
The context-menu entries for this combatant — the combatant's available
actions. Delegates to sohl.document.combatant.logic.SohlCombatantLogic.getContextOptions (the shared
sohl.core.logic.SohlLogic contract), mirroring SohlActor/SohlItem. The combat
tracker's row context menu is built from these.
The combatant's context-menu entries.
Pure relational predicate: two combatants are enemies iff they belong to different CombatantGroups. A combatant is never its own enemy, and an absent group on either side is treated defensively as enemy.
Reads only already-loaded combatant fields — no Foundry API calls.
The combatant to compare against.
true if the two combatants are enemies.
Prompt the GM to move this combatant into an existing CombatantGroup
or a new one, then apply the assignment. Selecting the combatant's current
group is a no-op. Backs the moveToGroup intrinsic action.
Dispatch a chat-card button click to this combatant's logic — the
automated-combat defense resumes (Block/Dodge/Counterstrike/Ignore) live
on sohl.document.combatant.logic.SohlCombatantLogic as intrinsic actions, and the attack card's
defense buttons address the defender's combatant. The button's dataset
becomes the action's scope.
The clicked chat-card button element.
Whether this combatant's melee reach extends to other — i.e. the
center-to-center grid distance between the two combatants' tokens is
within this combatant's reach. Returns false when either token
position is unavailable.
The combatant to test reach against.
true if this combatant's reach extends to other.
SoHL's Combatant document. Adds strike-mode memory (last attack/block) and threat queries on top of Foundry's combatant.