Shape of the scope payload for this action.
Build a context from SohlActionContext.Data.
The speaker is required: a sohl.core.logic.SohlSpeaker is used directly, while a
plain data object is wrapped in one. A target given as a Token,
TokenDocument, or Actor is normalized to a SohlTokenDocument
(for an actor, its first active token).
Initial context values; all but speaker are optional.
The speaker who initiated this action (required). A plain data object is automatically wrapped in a sohl.core.logic.SohlSpeaker.
The token or actor that is the action's target;
normalized to a SohlTokenDocument. Defaults to null.
When true, bypass any interactive dialog and
use values from scope directly. Defaults to false.
When true, suppress the resulting chat card.
Defaults to false.
A string type label for the action. Defaults to "".
A human-readable title for the action dialog/card.
Defaults to "".
Action-specific scope values (e.g. modifiers, results).
Defaults to {}.
When true, suppress chat-card output for the action.
Arbitrary per-action payload carried through execution.
When true, skip the action's configuration dialog and use defaults.
Who is performing the action (resolved chat-message speaker).
OptionaltargetThe token being acted upon, or undefined when the action has no target.
OptionalthisThe Logic of the document on which this action is running — the stand-in
for the this pointer inside a Script Action's macro (whose real this
is the Foundry Macro, not the Logic). Every executor, intrinsic method or
macro, receives the same single ctx; the macro reaches the intrinsic it
overrides through this handle: ctx.thisLogic.<executor>(ctx). Stamped by
sohl.entity.action.SohlAction.execute at dispatch.
Human-readable title used in dialogs and chat cards.
Action type discriminator (e.g. the action name).
The acting user's assigned character, or null.
The speaker's token, or null.
Fork this context into an independent copy, optionally overriding fields.
Used to retarget or re-scope a received context without mutating the original (e.g. building a sub-test's context from the current one).
A new context with overrides applied over this context's values.
The execution context passed to every SoHL action.
Every intrinsic action — the methods discovered via sohl.core.logic.SohlLogic.getContextOptions and dispatched through the action system — receives a
SohlActionContext. It bundles the four things an action needs to know to run and report its result:speaker), resolved from a token/actor/user and used as the chat-message speaker;targettoken, if any (a raw Token, aSohlTokenDocument, or aSohlActoris normalized to the actor's first active token);skipDialog(bypass the action's configuration dialog) andnoChat(suppress the chat-card output);typeandtitlefor labelling, plus a genericscopebag (S) that carries arbitrary per-action data (selected options, intermediate results) through the call.The context is a runtime value, not a persisted entity: it is built fresh at every action dispatch and never revived from its own JSON. Only its scope crosses the client boundary — carried in the chat-card
data-*attributes and rehydrated per-payload by the result machinery. clone produces a modified copy so an action can fork the context (e.g. to retarget or adjust scope) without mutating the original.Example
Example
Example
Example