The logic class bound to this data.
Serialized action definitions used to build the logic's actions map.
The logic of the owning actor — this actor's own logic when the data is
an actor's, the owning actor's logic when it is an item's, or null.
Additional sub-categorization within the affliction type
Risk of transmitting this affliction to others
World-time (seconds) at which the affliction was contracted.
Rich-text description shown on the item's sheet and chat cards.
Rolled seconds between course/recovery checks; null until rolled.
Formula rolled to seed the recurring course/recovery-check interval.
Rate of natural recovery; null means no natural healing
The owning document's id.
Whether the affliction is inactive but potentially contagious
Whether the current user owns the document (edit permission).
The document kind (its actor or item type id).
OptionallastGeneric run record (issue #579) — a map of actionName → the world
time (seconds) that action last performed on this document, stamped at the
action chokepoint for actions flagged recordsLastRun. The past-tense
mirror of scheduledActions: "when did X last happen here?" for any
action, without a bespoke field, and it survives after a schedule ends. For
an event-driven trigger (no computable next fire) it is the only meaningful
temporal fact.
Severity of the affliction
The logic instance built from this data.
The owning document's name.
Rich-text GM/player notes for the item.
World-time at which symptoms began (onset crystallized); null while incubating.
Rolled seconds of incubation; null until rolled.
Formula rolled to seed the incubation (contract → onset) interval.
A sohl.entity.roll.SimpleRoll formula giving the number of days
between contracting the affliction and the start of onset, rolled by the
receiving actor's Contagion Test. null means no incubation.
UUID of an optional author Macro run when the affliction becomes symptomatic at onset (a reference, never source). May schedule further events. Blank means no onset macro.
The authored outcome applied at resolution when the affliction was not
defeated — an AFFLICTION_OUTCOME value (DEATH or CURED).
Optional sohl.entity.expr.SafeExpression source evaluating to a trauma shortcode — or an array of shortcodes — the host contracts as part of the outcome. Blank means none; combines with outcome.
The Foundry document (actor or item) this data belongs to, or null.
World-time at which the affliction resolved (death/disability/cure); null until resolved.
Rolled seconds from onset to resolution; null until rolled.
Formula rolled to seed the onset → resolution interval.
OptionalscheduledPersisted recurring/deferred schedules for this document (issue #588) —
each entry defers actionName to anchor + interval. The generic store
that replaces the retired bespoke last*Date anchors; a recurring effect's
finalize() re-arms these into the event queue on every preparation. Only
documents whose data model extends the base SohlDataModel (actors, items,
combatants) carry it — hence optional here. See
https://kb.heroiclands.org/dev/reference/event-queue/.
Short identity code for this document.
Affliction category (Disease, Poison, Fatigue, etc.)
How this affliction spreads (Contact, Airborne, etc.)
World-time (seconds) at which medical treatment was applied, or null
if untreated. isTreated is derived from this on the logic.
The owning document's type (its actor or item kind).
The owning document's globally-unique id, treated as an opaque
identity token: pass it through (e.g. into chat-card data) and resolve it
back to logic via fvttLogicFromUuid / fvttLogicFromUuidSync — never fromUuid
it to a Foundry document inside the logic layer.
Persisted data model for an Affliction item.
Remarks
The shape of
systemon aafflictionitem — i.e.item.system(equivalentlyitem.logic.data) whenitem.type === "affliction". The backing DataModel implements this interface.