# Effect

> Kinbarrow modding reference — content tree `4a103dcdb658a75a`, version `0.2.0+main.e011511f4`.

[Effects and mechanisms](https://kinbarrow.com/modding/latest/mechanisms.md)

Used by [Spell](https://kinbarrow.com/modding/latest/spell.md#effect), [ClassDef](https://kinbarrow.com/modding/latest/class-def.md#effect), [MagicItem](https://kinbarrow.com/modding/latest/magic-item.md#effect), [Npc](https://kinbarrow.com/modding/latest/npc.md#effect), [FeatDef](https://kinbarrow.com/modding/latest/feat-def.md#effect), [RaceDef](https://kinbarrow.com/modding/latest/race-def.md#effect), [SubclassDef](https://kinbarrow.com/modding/latest/subclass-def.md#effect).

This is a nested shape inside a content file. The catalog explains context validation and links real RON examples.

The shared mechanic vocabulary for spells and feature grants, including delivered effects, passive rules, activated actions, and combat triggers. It includes conditions, summons, forced movement, and ongoing effects governed by a spell's concentration. Supported effects depend on their context. Passives, actions, and triggers validate their own supported subsets; delivered spells follow their delivery and composition rules.

<a id="effect--cast-privilege"></a>

## Effect::CastPrivilege

Authorize a cast matching an authored spell predicate and independently state which ordinary casting costs or form restrictions are exempt.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `allowed_while_transformed` | `boolean` | default `false` |  |
| `filter` | `CastSpellFilter` | required |  |
| `ignore_components` | `SpellComponents` | default `{"material":false,"material_consumed":false,"material_costly":false,"somatic":false,"verbal":false}` |  |
| `ignore_consumed_material` | `boolean` | default `false` |  |
| `ignore_costly_material` | `boolean` | default `false` |  |
| `profile` | `PrivilegedCastProfile` | optional | Optional bounded profile for an activated class-granted cast. |
| `requires_prepared` | `boolean` | default `false` |  |
| `requires_selected` | `boolean` | default `false` |  |
| `selection_capacity` | `uint32` | default `0` | Number of distinct spells selected for this privilege. |
| `selection_group` | `string` | optional | Open selection group used to store eligible spell choices. |
| `slotless` | `boolean` | default `false` |  |
| `uses_per_selection` | `integer` | optional | Free casts available independently for each selected spell. |

<a id="effect--cast-transform"></a>

## Effect::CastTransform

Offer parameterized cast changes. Option ids carry provenance only; filters, costs, compatibility, and transformation values drive play.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `known_capacity` | `[uint32, uint32][]` | default `[]` | Strictly increasing `(class level, maximum known options)` rows. |
| `options` | `CastTransformOption[]` | required |  |
| `simultaneous_limit` | `[uint32, uint32][]` | default `[]` | Strictly increasing `(class level, simultaneous option limit)` rows. |

<a id="effect--choice-delivery"></a>

## Effect::ChoiceDelivery

Offer mutually exclusive, explicitly delivered effect compositions.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `choices` | `ChoiceDeliveryOption[]` | required |  |

<a id="effect--preparation-access"></a>

## Effect::PreparationAccess

Admit spells from authored class lists to preparation without changing the bearer's ordinary prepared-spell capacity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `classes` | `string[]` | required |  |
| `exchange_per_rest` | `integer` | optional | Maximum prepared spells replaced through this access after a rest. Absent grants ordinary add-or-replace preparation access. |
| `maximum_spell_level` | `integer` | optional |  |
| `requires_spellbook` | `boolean` | default `false` |  |

<a id="effect--resource-exchange"></a>

## Effect::ResourceExchange

Atomically exchange one authored resource ledger for another through a finite conversion table. Resource identity, rates, caps, and use economy are all parameters; a feature id never selects the rule.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `routes` | `ResourceExchangeRoute[]` | required |  |

<a id="effect--restore-resource-minimum"></a>

## Effect::RestoreResourceMinimum

Raise a named resource ledger to at least an authored amount, without exceeding that ledger's ordinary capacity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ledger` | `FeatureResourceLedger` | required |  |
| `minimum` | `uint32` | required |  |

<a id="effect--hide-eligibility"></a>

## Effect::HideEligibility

Permit an authored Hide context while its action and equipment gates hold. This describes the context, not the granting feature's identity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `allowed_armor` | `ArmorCategory[]` | default `[]` | Authored body-armor categories that remain eligible. |
| `allows_unarmored` | `boolean` | default `false` | Permit no body armor as an eligible equipment state. |
| `requires_bonus_hide` | `boolean` | default `false` | Require the bearer to have the generic bonus-Hide capability. |

<a id="effect--movement-surface-permission"></a>

## Effect::MovementSurfacePermission

Permit one movement mode to traverse the listed otherwise-forbidden surfaces while an optional unarmored gate holds.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `mode` | `MovementMode` | required | Movement mode used to cross those surfaces. |
| `requires_unarmored` | `boolean` | default `false` | Whether wearing body armor suppresses the permission. |
| `surfaces` | `MovementSurface[]` | required | Nonempty, duplicate-free surface set. |

<a id="effect--scaled-fall-reduction"></a>

## Effect::ScaledFallReduction

Spend the creature's Reaction when it falls to reduce the fall's damage by an authored amount per granting-class level.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `damage_per_class_level` | `uint32` | required |  |

<a id="effect--source-linked-condition-lifecycle"></a>

## Effect::SourceLinkedConditionLifecycle

End a source-owned condition when one of the authored lifecycle events occurs. Source ownership is retained by the ordinary persistent effect.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ends_on_damage` | `boolean` | default `false` |  |
| `ends_on_source_death` | `boolean` | default `false` |  |
| `ends_on_source_incapacitated` | `boolean` | default `false` |  |

<a id="effect--timed-resistance"></a>

## Effect::TimedResistance

Grant resistance for a bounded duration after atomically charging an authored resource pool. Exactly one included or excluded set is used.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cost` | `uint32` | required | Positive fixed pool price. |
| `damage_kinds` | `string[]` | default `[]` | Explicit kinds resisted; empty when `excluded_damage_kinds` is used. |
| `excluded_damage_kinds` | `string[]` | default `[]` | Resist every loaded kind except these ids; empty for an include set. |
| `pool` | `string` | required | Authored resource pool charged on acceptance. |
| `rounds` | `uint32` | required | Duration in combat rounds. |

<a id="effect--ability-scaled-damage-dice"></a>

## Effect::AbilityScaledDamageDice

Deal one die per derived ability modifier, subject to an authored positive minimum, using the ordinary damage ladder.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required | Ability whose modifier determines the number of dice. |
| `die_faces` | `uint32` | required | Faces on every die. |
| `kind` | `string` | required | A `tables/damage_kinds.srd.ron` id. |
| `minimum_dice` | `uint32` | required | Minimum number of dice rolled after deriving the modifier. |

<a id="effect--attack-damage-property"></a>

## Effect::AttackDamageProperty

Give attacks selected by authored source filters a damage property.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `magical` | `boolean` | required | Whether matching damage counts as magical. |
| `sources` | `DamageRollSource[]` | required | Nonempty attack-source alternatives. |

<a id="effect--damage-roll-policy"></a>

## Effect::DamageRollPolicy

Amend an eligible damage roll at authored outcomes, with optional once-per-turn accounting.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `amount` | `DamageRollAmount` | required | Damage dice, ability modifier, or die override to apply. |
| `kind` | `string` | optional | Optional replacement damage kind; absent preserves the parent kind. |
| `once_per_turn` | `boolean` | default `false` | Whether the policy may resolve only once during the bearer's turn. |
| `outcomes` | `DamageRollOutcome[]` | required | Nonempty resolved outcomes on which the amount applies. |
| `sources` | `DamageRollSource[]` | required | Nonempty attack, spell, or mark source alternatives. |

<a id="effect--rider-exchange"></a>

## Effect::RiderExchange

Atomically exchange parent damage dice or attack Advantage for one or more distinct, level-gated effect compositions.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `budget` | `RiderExchangeBudget` | required | Kind of budget paid by the accepted choices. |
| `capacity` | `[uint32, uint32][]` | required | Strictly increasing `(class level, maximum choices)` ladder. |
| `choices` | `RiderExchangeChoice[]` | required | Open-id choices with authored prices and consequences. |
| `leave_one_die` | `boolean` | default `false` | For damage-dice budgets, require at least one die to remain. |

<a id="effect--ability-score-increase"></a>

## Effect::AbilityScoreIncrease

Derive an increase for the listed ability scores, bounded by `cap`. This is read from the reached grant and is never repeatedly stamped.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `abilities` | `Ability[]` | required | Nonempty set of abilities receiving the same increase. |
| `amount` | `int64` | required | Positive amount added before applying the cap. |
| `cap` | `int64` | required | Highest derived score. The result is `min(score + amount, cap)`, so an input already above the cap is clamped down to it. |

<a id="effect--aging-rate"></a>

## Effect::AgingRate

Derive apparent age as elapsed years divided by this positive rate. Elapsed world time itself is unchanged.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `divisor` | `uint32` | required |  |

<a id="effect--attunement-capacity"></a>

## Effect::AttunementCapacity

Override the bearer's derived magic-item attunement capacity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `capacity` | `uint32` | required |  |

<a id="effect--arm-d20-edge"></a>

## Effect::ArmD20Edge

Arm one typed one-shot d20 edge on the bearer.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `edge` | `D20Edge` | required |  |

<a id="effect--swap-initiative"></a>

## Effect::SwapInitiative

Offer a willing, conscious ally and exchange the two Initiative values.

<a id="effect--best-of-two-weapon-damage"></a>

## Effect::BestOfTwoWeaponDamage

Roll only the weapon's base damage dice twice and keep the greater sum.

<a id="effect--restore-turn-resource"></a>

## Effect::RestoreTurnResource

Restore one already-spent turn resource to the acting creature.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `economy` | `FeatureActionEconomy` | required |  |

<a id="effect--restore-hit-points"></a>

## Effect::RestoreHitPoints

Restore hit points from authored dice plus a value derived from the invoking grant and its bearer.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `bonus` | `FeatureValue` | required |  |
| `dice` | `string` | required |  |

<a id="effect--grant-temporary-hit-points"></a>

## Effect::GrantTemporaryHitPoints

Grant temporary hit points from authored dice plus a value derived from the invoking grant and its bearer.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `bonus` | `FeatureValue` | required |  |
| `dice` | `string` | required |  |

<a id="effect--timed-condition"></a>

## Effect::TimedCondition

Apply an authored condition to the bearer for a number of rounds. Lifecycle clauses belong to the application, while the condition's combat reads remain composed in `data/conditions`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `condition` | `string` | required |  |
| `ends_without_attack_or_damage` | `boolean` | default `false` |  |
| `rounds` | `uint32` | required |  |

<a id="effect--one-of-next-turn"></a>

## Effect::OneOfNextTurn

On the target's next turn, it can only move, take an action, or take a Bonus Action. Its first choice closes the other two for that turn.

<a id="effect--timed-melee-defense"></a>

## Effect::TimedMeleeDefense

Apply a timed condition whose melee attacks receive a level-scaled flat damage bonus and whose bearer resists authored damage kinds.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `condition` | `string` | required |  |
| `damage_bonus` | `FeatureLevelValue[]` | required |  |
| `ends_without_attack_or_damage` | `boolean` | default `false` |  |
| `resistances` | `string[]` | required |  |
| `rounds` | `uint32` | required |  |

<a id="effect--timed-spell-enhancement"></a>

## Effect::TimedSpellEnhancement

Apply a timed enhancement to spell attack rolls and spell save DCs.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `attack_advantage` | `boolean` | default `false` |  |
| `condition` | `string` | required |  |
| `fallback_cost` | `uint32` | required |  |
| `fallback_pool` | `string` | required |  |
| `rounds` | `uint32` | required |  |
| `save_dc_bonus` | `int64` | required |  |

<a id="effect--timed-movement-mode"></a>

## Effect::TimedMovementMode

Grant an authored movement mode at walking speed for a duration. A dismissible grant may be ended by invoking the same action again.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `condition` | `string` | required |  |
| `dismissible` | `boolean` | default `false` |  |
| `fallback_cost` | `uint32` | required |  |
| `fallback_pool` | `string` | required |  |
| `mode` | `MovementMode` | required |  |
| `rounds` | `uint32` | required |  |

<a id="effect--fallback-pool-cost"></a>

## Effect::FallbackPoolCost

Charge a fixed amount from an authored fallback resource when the action's primary use store is unavailable.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `amount` | `uint32` | required |  |
| `pool` | `string` | required |  |

<a id="effect--timed-damage-aura"></a>

## Effect::TimedDamageAura

Establish a mobile damaging aura around the bearer for the authored duration. Damage and radius are ordinary parameters, not content ids.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `damage` | `FeatureValue` | required |  |
| `kind` | `string` | required |  |
| `radius_ft` | `uint32` | required |  |
| `rounds` | `uint32` | required |  |

<a id="effect--heal-spread"></a>

## Effect::HealSpread

Divide a level-derived healing budget among nearby allies without raising any recipient beyond the authored fraction of maximum HP.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `maximum_percent` | `uint8` | required |  |
| `points_per_level` | `uint32` | required |  |
| `radius_ft` | `uint32` | required |  |

<a id="effect--mark-target"></a>

## Effect::MarkTarget

Install or transfer a source-owned mark onto one target in range.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `damage_die` | `string` | required |  |
| `range_ft` | `uint32` | required |  |

<a id="effect--restore-pool"></a>

## Effect::RestorePool

Restore an authored resource pool to its capacity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `heal_with_capacity_die` | `boolean` | default `false` |  |
| `pool` | `string` | required |  |

<a id="effect--bonus-strikes"></a>

## Effect::BonusStrikes

Offer an authored number of bonus strikes against one legal target.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `count` | `uint8` | required |  |

<a id="effect--bonus-economy"></a>

## Effect::BonusEconomy

Make selected ordinary actions available through the bonus-action economy for the current turn.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dash` | `boolean` | default `false` |  |
| `disengage` | `boolean` | default `false` |  |
| `dodge` | `boolean` | default `false` |  |
| `hide` | `boolean` | default `false` |  |
| `utilize` | `boolean` | default `false` |  |

<a id="effect--hit-rider"></a>

## Effect::HitRider

Arm the bearer's next eligible hit with typed damage and/or a saving throw that applies an authored condition.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `condition` | `string` | optional |  |
| `damage` | `SlotScaledDamage` | optional |  |
| `save` | `Ability` | optional |  |

<a id="effect--attack-advantage"></a>

## Effect::AttackAdvantage

Grant Advantage on the next eligible attack and optionally consume the bearer's remaining movement for this turn.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `consume_movement` | `boolean` | default `false` |  |

<a id="effect--spend-healing-pool"></a>

## Effect::SpendHealingPool

Spend points from an authored pool to heal a touched ally or remove one of its conditions at the authored cleanse price.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cleanse_cost` | `uint32` | required |  |
| `points_per_level` | `uint32` | required |  |
| `pool` | `string` | required |  |

<a id="effect--grant-die"></a>

## Effect::GrantDie

Grant a die selected from an authored level table to one ally in range.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `by_level` | `FeatureLevelValue[]` | required |  |
| `range_ft` | `uint32` | required |  |

<a id="effect--weapon-attack-ability-bonus"></a>

## Effect::WeaponAttackAbilityBonus

Add one ability modifier to weapon attack rolls for the authored duration.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `rounds` | `uint32` | required |  |

<a id="effect--creature-type-save-or-heal"></a>

## Effect::CreatureTypeSaveOrHeal

Offer a save against creatures of an authored type in an area or a level-scaled heal to one target. The choice is made by the action. Each creature that fails the save gains every one of `conditions` for `rounds`, against the action's save DC.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `conditions` | `string[]` | required |  |
| `creature_type` | `string` | required |  |
| `heal_bonus` | `FeatureValue` | required |  |
| `heal_die` | `string` | required |  |
| `radius_ft` | `uint32` | required |  |
| `rounds` | `uint32` | required |  |
| `save` | `Ability` | required |  |

<a id="effect--save-bonus-aura"></a>

## Effect::SaveBonusAura

Add one ability modifier to allied saving throws made within an aura.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `radius_ft` | `uint32` | required |  |

<a id="effect--condition-immunity-aura"></a>

## Effect::ConditionImmunityAura

Prevent allies within an aura from gaining one authored condition.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `condition` | `string` | required |  |
| `radius_ft` | `uint32` | required |  |

<a id="effect--roll-bonus"></a>

## Effect::RollBonus

Add authored dice to the roll currently crossing a trigger boundary.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |

<a id="effect--replace-roll"></a>

## Effect::ReplaceRoll

Replace the d20 currently crossing a trigger boundary with an authored face value.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `value` | `uint8` | required |  |

<a id="effect--reroll-failed-save"></a>

## Effect::RerollFailedSave

Reroll the failed save currently crossing a trigger boundary and add a value derived from the invoking grant and bearer.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `bonus` | `FeatureValue` | required |  |

<a id="effect--conditional-save-reroll"></a>

## Effect::ConditionalSaveReroll

Offer a willing target in range a reroll of a failed save against one of the authored conditions.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `conditions` | `string[]` | required | Nonempty condition ids which make this reroll eligible. |
| `radius_ft` | `uint32` | required | Maximum distance from the feature bearer to the saving creature. |
| `willing` | `boolean` | required | Whether the saving creature must accept the reroll. |
| `with_advantage` | `boolean` | required | Whether the replacement save rolls twice and keeps the higher d20. |

<a id="effect--return-reduced-attack"></a>

## Effect::ReturnReducedAttack

After an incoming attack's damage is reduced to zero, permit an ordinary return attack against an eligible target in range.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cost` | `uint32` | required | Positive amount charged from `pool` for the return attack. |
| `damage_kinds` | `string[]` | required | Nonempty damage-kind ids eligible for the reduction and return. |
| `pool` | `string` | required | Authored resource pool charged only when the return is accepted. |
| `range_ft` | `uint32` | required | Maximum range of the ordinary return attack. |

<a id="effect--suppress-incoming-advantage"></a>

## Effect::SuppressIncomingAdvantage

Suppress Advantage on incoming attacks while the authored awareness gate holds.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `requires_conscious` | `boolean` | required | When true, an unconscious or otherwise incapacitated bearer cannot suppress the incoming Advantage. |

<a id="effect--extra-initiative-turn"></a>

## Effect::ExtraInitiativeTurn

Insert another initiative turn in the first round at the authored penalty from the bearer's initiative.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `initiative_penalty` | `int64` | required |  |

<a id="effect--half-cover-aura"></a>

## Effect::HalfCoverAura

Grant half cover to the bearer and nearby allies until the bearer's next turn begins.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `radius_ft` | `uint32` | required |  |

<a id="effect--move-by-speed-fraction"></a>

## Effect::MoveBySpeedFraction

Move the bearer by a fraction of its current speed as part of the boundary transition.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `denominator` | `uint8` | required |  |

<a id="effect--movement-capability"></a>

## Effect::MovementCapability

Use Dexterity for jump distance and/or grant a Climb Speed equal to walking speed while the row is active.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `climb_speed` | `boolean` | default `false` |  |
| `jump_uses_dexterity` | `boolean` | default `false` |  |

<a id="effect--school-damage-bonus"></a>

## Effect::SchoolDamageBonus

Add one ability modifier to a damage roll for a spell of the authored school.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `school` | `string` | required |  |

<a id="effect--maximize-school-damage"></a>

## Effect::MaximizeSchoolDamage

Maximize damage for a spell in the authored school through the stated level; repeated use may apply the ordinary escalating backlash.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `backlash` | `boolean` | default `false` |  |
| `maximum_spell_level` | `uint8` | required |  |
| `school` | `string` | required |  |

<a id="effect--cleanse-from-pool"></a>

## Effect::CleanseFromPool

Spend authored pool points for each condition removed by a healing boundary.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `points_per_effect` | `uint32` | required |  |
| `pool` | `string` | required |  |

<a id="effect--area-save-condition"></a>

## Effect::AreaSaveCondition

Make foes in range save or gain an authored condition for a number of rounds.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `condition` | `string` | required |  |
| `range_ft` | `uint32` | required |  |
| `rounds` | `uint32` | required |  |
| `save` | `Ability` | required |  |

<a id="effect--healing-bonus"></a>

## Effect::HealingBonus

Add a flat amount plus an amount per spell level to healing crossing the current boundary.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `flat` | `int64` | required |  |
| `per_spell_level` | `int64` | required |  |

<a id="effect--persistent-spell"></a>

## Effect::PersistentSpell

Select the persistent spell behavior.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `payload` | `PersistentSpellPayload` | required |  |

<a id="effect--maximum-hit-points-change"></a>

## Effect::MaximumHitPointsChange

Select the maximum hit points change behavior.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `amount` | `int32` | required |  |

<a id="effect--maximum-hit-points-reduction-from-damage"></a>

## Effect::MaximumHitPointsReductionFromDamage

Reduce the target's maximum HP by the damage the immediately preceding damage step actually dealt, after saves and damage modifiers. The life state kernel floors effective maximum HP at 1.

<a id="effect--adjacent-target-damage"></a>

## Effect::AdjacentTargetDamage

After a weapon-delivered spell hits its primary target, deal typed damage to one explicitly chosen different creature within this many feet of the primary. The casting ability modifier is optional and the dice follow the owning spell's ordinary cantrip ladder.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cantrip_step_offset` | `int8` | default `0` |  |
| `casting_modifier` | `boolean` | default `false` |  |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |
| `max_distance_ft` | `uint32` | required |  |
| `requires_sight` | `boolean` | default `false` |  |

<a id="effect--voluntary-movement-damage"></a>

## Effect::VoluntaryMovementDamage

Arm the delivered target until the source's next turn starts. The first voluntary move of at least `minimum_ft` consumes the handle and deals the scaled typed damage; forced movement never enters this door.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `cantrip_step_offset` | `int8` | default `0` |  |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |
| `minimum_ft` | `uint32` | default `5` |  |

<a id="effect--cantrip-step-damage"></a>

## Effect::CantripStepDamage

Typed damage whose die count follows the cantrip tier multiplier plus an authored signed offset. An offset of -1 expresses riders that begin at level 5 without content-specific branching.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |
| `step_offset` | `int8` | default `0` |  |

<a id="effect--death-prevention"></a>

## Effect::DeathPrevention

Select the death prevention behavior.

<a id="effect--mode-choice"></a>

## Effect::ModeChoice

Require one explicit closed authored option before applying this effect.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `choice` | `AuthoredChoicePayload` | required |  |

<a id="effect--forced-action-control"></a>

## Effect::ForcedActionControl

Compel one typed action; content identity never participates in dispatch.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `action` | `AuthoredForcedAction` | required |  |

<a id="effect--forced-action-choice"></a>

## Effect::ForcedActionChoice

Require the caster to choose one of several typed commands, then arm that exact forced action on the delivered target's next turn.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `option_set` | `string` | required |  |
| `options` | `AuthoredForcedAction[]` | required |  |

<a id="effect--contingent"></a>

## Effect::Contingent

Arm a separately typed delayed predicate and consequence.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `consequence` | `ContingentConsequence` | required |  |
| `predicate` | `ContingentPredicate` | required |  |
| `timing` | `ContingentTiming` | required |  |

<a id="effect--transform"></a>

## Effect::Transform

Replace a target's authored combat form while preserving soul identity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `form` | `FormPayload` | required |  |

<a id="effect--change-size"></a>

## Effect::ChangeSize

Change only the target's occupied size category; all other statistics remain.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `size` | `Size` | required |  |

<a id="effect--speed-grant"></a>

## Effect::SpeedGrant

Temporarily add an authored number of feet to one closed movement mode.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `amount_ft` | `uint32` | required |  |
| `mode` | `MovementMode` | required |  |
| `source_owned` | `boolean` | default `false` |  |

<a id="effect--unarmed-strike-damage-grant"></a>

## Effect::UnarmedStrikeDamageGrant

Add one separately typed damage roll to every Unarmed Strike hit for the effect's duration. The rider is its own damage instance (so its resistance and critical-hit dice are resolved independently).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |

<a id="effect--attack-hit-damage-grant"></a>

## Effect::AttackHitDamageGrant

Add one separately typed damage roll whenever the bearer hits with an attack, provided the hit target is no farther away than the authored range. This applies uniformly to weapon, Unarmed Strike, natural, and spell attacks; the rider is a distinct damage instance and its dice double on a critical hit.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `consequences` | `AttackHitDamageConsequence[]` | default `[]` |  |
| `dice` | `string` | required |  |
| `kinds` | `string[]` | required |  |
| `max_target_distance_ft` | `uint32` | required |  |

<a id="effect--turn-start-proximity-choice"></a>

## Effect::TurnStartProximityChoice

While this source-owned effect lasts, the source is offered a no-cost accept/decline choice whenever a creature it can see starts its turn in the authored radius. Choices are queued independently in source order.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `consequence` | `OptionalEffectConsequence` | required |  |
| `radius_ft` | `uint32` | required |  |
| `requires_sight` | `boolean` | default `false` |  |

<a id="effect--strength-score-floor"></a>

## Effect::StrengthScoreFloor

Raise the target's Strength score to at least this value for the effect's duration. The stored score is never lowered or mutated.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `score` | `uint8` | required |  |

<a id="effect--condition-immunity-grant"></a>

## Effect::ConditionImmunityGrant

Grant immunity to one authored condition for this effect's duration. The grant is source-owned, so concentration loss removes only the granting source's immunity.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `condition` | `string` | required |  |

<a id="effect--breathing-grant"></a>

## Effect::BreathingGrant

Temporarily grant one or both breathing media. This changes only the suffocation predicate; it grants no Swim Speed or movement permission.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `air` | `boolean` | default `false` |  |
| `water` | `boolean` | default `false` |  |

<a id="effect--turn-start-temp-hp"></a>

## Effect::TurnStartTempHp

At the start of each target turn, grant temporary HP equal to the casting ability modifier (minimum zero). Multiple grants obey the ordinary non-stacking temporary-HP rule.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |

<a id="effect--turn-start-damage"></a>

## Effect::TurnStartDamage

Deal typed damage at the start of each affected creature's turn for this effect's duration. An authored action-removal flag exposes the shared self-or-adjacent cleanse action rather than a spell-specific verb.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |
| `plus` | `int64` | default `0` |  |
| `removable_by_action` | `boolean` | default `false` |  |

<a id="effect--vision-grant"></a>

## Effect::VisionGrant

Temporarily grant Truesight to at least this range. Existing longer special senses remain authoritative; expiration reveals them again.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `truesight_ft` | `uint32` | required |  |

<a id="effect--reaction-defense"></a>

## Effect::ReactionDefense

Install or resolve a typed pre-resolution defense/cancellation payload.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `payload` | `ReactionDefensePayload` | required |  |

<a id="effect--fall-protection"></a>

## Effect::FallProtection

Modify the next pending fall impact on the target. This is an event primitive rather than a spell-id branch: reaction content supplies the exact reduction and optional controlled-descent rate.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `damage_divisor` | `uint32` | required | Divide rolled falling damage by this value (minimum 1). |
| `damage_reduction` | `uint32` | required | Flat reduction after division. |
| `descent_ft_per_round` | `integer` | optional | A controlled descent rate; while present, this pending impact deals no falling damage (the rate remains semantic state for consumers). |
| `max_damage` | `integer` | optional | Optional final damage ceiling. |

<a id="effect--damage"></a>

## Effect::Damage

`dice` (+ `plus`) damage of `kind` — halved by a resistance, spared per the delivery's save. A crit doubles the dice (attack deliveries).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `kind` | `string` | required | A `tables/damage_kinds.srd.ron` id, boot-resolved. |
| `plus` | `int64` | default `0` |  |

<a id="effect--conditional-damage"></a>

## Effect::ConditionalDamage

Use `alternate_dice` when the delivered target is below maximum HP.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `alternate_dice` | `string` | required |  |
| `kind` | `string` | required |  |
| `primary_dice` | `string` | required |  |

<a id="effect--damage-type-choice"></a>

## Effect::DamageTypeChoice

Damage whose kind is chosen at cast time from this closed authored set. The live and forked policies choose the first kind with the greatest post-mitigation result; content names never enter combat dispatch.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `kinds` | `string[]` | required |  |
| `plus` | `int64` | default `0` |  |

<a id="effect--heal"></a>

## Effect::Heal

Restore `dice` (+ the casting mod if `add_mod`) hit points.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `add_mod` | `boolean` | required |  |
| `dice` | `string` | required |  |

<a id="effect--flat-heal"></a>

## Effect::FlatHeal

Restore an exact authored number of hit points (no die or modifier).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `amount` | `int64` | required |  |

<a id="effect--heal-from-damage"></a>

## Effect::HealFromDamage

Restore HP to the effect's source from the immediately preceding damage step's actual post-mitigation applied amount.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `divisor` | `uint32` | required |  |

<a id="effect--self-damage-heal-target"></a>

## Effect::SelfDamageHealTarget

Deal irreducible typed damage to the effect's source, then restore the delivered target by an authored multiple of that applied damage.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `heal_multiplier` | `uint32` | required |  |
| `kind` | `string` | required |  |

<a id="effect--cleanse-condition"></a>

## Effect::CleanseCondition

Remove one currently borne condition from a closed authored set. When several qualify, authored order is the deterministic choice order.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `conditions` | `string[]` | required |  |

<a id="effect--remove-exhaustion"></a>

## Effect::RemoveExhaustion

Remove up to this many levels from the target's world-authoritative Exhaustion track. A value of six expresses complete 2024 recovery without coupling the primitive to one item.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `levels` | `uint8` | required |  |

<a id="effect--maximize-hit-die-healing"></a>

## Effect::MaximizeHitDieHealing

For the enclosing duration, every Hit Die the target spends restores the die's maximum result rather than its ordinary roll/average.

<a id="effect--skill-advantage"></a>

## Effect::SkillAdvantage

Advantage on a closed set of skills only when the check explicitly influences a creature within the authored range.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `influence_within_ft` | `uint32` | required |  |
| `skills` | `Skill[]` | required |  |

<a id="effect--stabilize"></a>

## Effect::Stabilize

End a dying ally's death saves (spare the dying).

<a id="effect--kindle"></a>

## Effect::Kindle

Kindle the target with an independently timed illumination handle, cast instead of struck, throwing `bright_ft` of bright light and `dim_ft` MORE of dim — the SRD's own phrasing ("bright light in a 20-foot radius and dim light for an additional 20 feet"). Light is the torch's 20/20; daylight throws 60/60.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `bright_ft` | `uint32` | required |  |
| `dim_ft` | `uint32` | required |  |

<a id="effect--guide"></a>

## Effect::Guide

The glimmer (guiding bolt): the next attack roll against the target has advantage.

<a id="effect--modify"></a>

## Effect::Modify

Bless/bane: `die` rides the bearer's own attack rolls and saving throws for the duration — added, or subtracted when `penalty`. A CONCENTRATION effect (the validator pins it), so it lifts when the caster's focus breaks.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `die` | `string` | required |  |
| `penalty` | `boolean` | default `false` |  |

<a id="effect--afflict"></a>

## Effect::Afflict

Inflict a condition on the target: the id resolves against `data/conditions/` at load — a condition is a DATA bundle of engine [`ConditionComponent`] reads, so hold person's paralysis and a mod's own affliction are the same one-file shape. Behind a `Save` delivery the bearer repeats that save at each of its turns to shake it (SRD save-ends); a CONCENTRATION effect.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `beneficial` | `boolean` | default `false` | Some conditions are grants rather than hostile afflictions (for example an item granting Invisible). This controls side legality; condition identity remains data and is never special-cased here. |
| `condition` | `string` | required |  |
| `ends_on_attack_damage_or_cast` | `boolean` | default `false` | The granted condition ends immediately after its bearer makes an attack or casts a spell. The triggering attack still receives the condition's benefits; item activation itself is not a spell cast. |
| `ends_on_source_side_damage` | `boolean` | default `false` | The condition ends after the spell's source or one of that source's allies deals damage to the bearer. |
| `forced_turn` | `ForcedTurnRule` | optional | Source-relative turn behavior retained with this exact condition relation for as long as it remains active. |
| `initial_save_advantage_if_fighting` | `boolean` | default `false` | A hostile target makes the initial delivery save with Advantage when the source's side is already fighting it. |
| `on_failed_save` | `AfflictionEntryEffect[]` | default `[]` | Consequences applied once, only after the initial affliction lands. |
| `repeat_save` | `RepeatSaveRule` | optional | Whether the target repeats the delivery save at the end of each of its turns. Most combat afflictions do; Charm Person does not. |

<a id="effect--next-weapon-attack-disadvantage"></a>

## Effect::NextWeaponAttackDisadvantage

The target's next weapon attack is made with Disadvantage; if unused, this expires at the end of that target's next turn.

<a id="effect--next-saving-throw-penalty"></a>

## Effect::NextSavingThrowPenalty

Subtract `die` from the target's next saving throw before the end of the source's next turn. The rider is consumed by the first save attempt, whether that save succeeds or fails.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `die` | `string` | required |  |

<a id="effect--push"></a>

## Effect::Push

Forced movement: shove the target `distance_ft` directly AWAY from the effect's origin (the caster, for the self-centered burst/cone/ line spells that carry it), stopping at the first wall, impassable creature's space, or board edge. It can end in an occupied space it may pass through. A harmful, instantaneous rider behind a Save — forgone on a success. Thunderwave's ten-foot push is the first. LEDGERED: pushing away from a SPHERE's center rather than the caster (no shipped sphere-push spell needs it) and prone-on-collision.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `distance_ft` | `uint32` | required |  |
| `max_target_size` | `Size` | optional | Largest creature size this effect can move. Absent means no limit; an ineligible target still receives the spell's other effects. |

<a id="effect--pull"></a>

## Effect::Pull

A pull: forced movement TOWARD the caster — thorn whip's vine yank, the mirror of Push. Drags the struck target `distance_ft` toward the caster (halting adjacent, never onto it). HARMFUL (it rides a to-hit or a save, like Push). LEDGERED: a pull toward a POINT other than the caster.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `distance_ft` | `uint32` | required | Maximum distance the target is moved. |
| `max_target_size` | `Size` | optional | Largest creature size this effect can move. Absent means no limit; an ineligible target still receives the spell's other effects. |

<a id="effect--beam"></a>

## Effect::Beam

A sustained beam: a CONCENTRATION drain that deals `dice` `kind` to the delivered target AUTOMATICALLY at the start of each of the caster's turns — vampiric touch's per-turn drain (the one-time hit is a separate `Damage` step; this is the sustain). HARMFUL (rides a to-hit or a save), an ongoing effect (concentration). LEDGERED: the SRD range-break (the beam ends if the target leaves range/cover — ours holds while concentration does), the life-drain self-HEAL (no heal-from-damage primitive yet), and the upcast.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |

<a id="effect--teleport"></a>

## Effect::Teleport

Teleport: the delivered target vanishes and reappears up to `max_ft` away — misty step's blink. A BENEFICIAL self-move behind a Target delivery. The destination is AI-chosen (the unoccupied on-board square FARTHEST from the nearest enemy — the escape the world uses), following the world-first precedent; a PLAYER-picked destination, the "space you can see" line of sight, and bringing a willing creature (dimension door) are LEDGERED.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `max_ft` | `uint32` | required |  |

<a id="effect--aura"></a>

## Effect::Aura

An aura: a CONCENTRATION area centered on the caster that bites foes who START their turn within `radius_ft` — an `ability` save for half of `dice` `kind` damage (spirit guardians). Established on the delivered target (the caster — a Target self-cast); BENEFICIAL for the delivery's side-legality (you cast it on yourself), the harm emergent per-turn. It moves WITH the caster and lifts when its concentration breaks. LEDGERED: the SRD "enters the area for the first time on a turn" movement trigger (start-turn-in only today), the speed-halving, and the upcast (+dice/slot).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |
| `radius_ft` | `uint32` | required |  |

<a id="effect--obscuration-aura"></a>

## Effect::ObscurationAura

A mobile heavily-obscured area centered on the delivered creature.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `radius_ft` | `uint32` | required |  |
| `source_sees_through` | `boolean` | default `false` |  |

<a id="effect--summon"></a>

## Effect::Summon

A transient summon that mints `creature_id` from the bestiary onto its source's side mid-fight. It may be concentration-bound or independently timed, fights through the ordinary combatant machinery, takes no plunder, and is swept from the world when the fight ends.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `acts_after_source` | `boolean` | default `false` | Insert the summon immediately after its source in Initiative. |
| `augmentation` | `SummonAugmentation` | default `{"choice_binding":null,"dismiss":null,"linked_grants":[]}` | Optional selected-kind binding and source-linked grants. An activated cast privilege may overlay the same reusable shape. |
| `creature_id` | `string` | required |  |
| `dismiss` | `CastTime` | optional | Optional economy with which the source may dismiss this summon. |
| `requires_command` | `boolean` | default `false` | The summon must receive its source's free verbal command each round or it takes only the defensive default. |
| `scaling` | `SummonScaling` | optional | Optional slot/caster-derived stat-block formula for summoned spirits. Absent preserves an ordinary fixed bestiary body. |

<a id="effect--zone"></a>

## Effect::Zone

A zone: a CONCENTRATION area anchored to a FIXED point on the board (the aura's board-bound sibling — an aura moves WITH its caster, a zone stands where it was cast) that bites whoever starts their turn within `radius_ft` — an `ability` save for half of `dice` `kind` damage (moonbeam). Established via a Target self-cast; BENEFICIAL for the delivery's side-legality (the harm is emergent per-turn, like the aura), the placement AI-chosen (the foe cluster within range, never an ally — the world-first precedent). LEDGERED: the SRD "enters the area" movement trigger (start-turn-in only today), a MOVABLE zone (moonbeam's beam-step), the cylinder/cube shapes (a Chebyshev radius today), the PLAYER-picked anchor, and the upcast. The movement-blocking WALL (Wall of Force/Stone — blocked squares + line-of-sight) is a distinct primitive, ledgered as the sibling.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `dice` | `string` | required |  |
| `dispersed_by_strong_wind` | `boolean` | default `false` |  |
| `kind` | `string` | required |  |
| `radius_ft` | `uint32` | required |  |

<a id="effect--triggered-zone"></a>

## Effect::TriggeredZone

A board area whose consequence fires at turn start, on first entry, and/or at turn end. Unlike the older damage-only `Zone`, this carries the complete authored trigger, use ledger, mobility, exclusions, and removable riders needed by creature-selective healing and hazardous fields.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `exclusions` | `string[]` | default `[]` |  |
| `mobile_reposition_ft` | `integer` | optional |  |
| `optional_by_source` | `boolean` | default `false` |  |
| `outcome` | `TriggeredZoneOutcome` | required |  |
| `radius_ft` | `uint32` | required |  |
| `shape` | `TriggeredZoneShape` | default `"Sphere"` |  |
| `trigger_end` | `boolean` | default `false` |  |
| `trigger_entry` | `boolean` | default `true` |  |
| `trigger_start` | `boolean` | default `true` |  |
| `uses` | `TriggeredZoneUses` | optional |  |

<a id="effect--directional-field"></a>

## Effect::DirectionalField

A sustained rectangular field anchored to its source's current square and an authored orientation. The caller establishes it once; creatures in its footprint are consequences of the field, not separate copies.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `length_ft` | `uint32` | required |  |
| `movement_toward_source_multiplier` | `uint8` | default `1` |  |
| `push_ft` | `uint32` | required |  |
| `reaim` | `CastTime` | optional |  |
| `strong_wind` | `boolean` | default `false` |  |
| `trigger_end` | `boolean` | default `false` |  |
| `trigger_initial` | `boolean` | default `true` |  |
| `width_ft` | `uint32` | required |  |

<a id="effect--wall"></a>

## Effect::Wall

A wall: a CONCENTRATION barrier of `length_ft` that stands a line of BLOCKED squares on the board — Wall of Stone / Wall of Force. It deals no direct damage; it BLOCKS. Every mover, the king-step pathing, the cover / line-of-sight trace, teleport, and forced movement already read `board.open`, so the wall gates all of them for free (the board footprint + cover seam). Established via a Target self-cast; BENEFICIAL for the delivery's side-legality (it harms no creature directly), the placement AI-chosen (a line cutting the caster off from the foe cluster, never through a creature — the world-first precedent). LEDGERED: the PLAYER-drawn shape/anchor, the panel/ring/sphere forms (a straight line today), a DAMAGING wall (Wall of Fire — a Wall+Zone compose), and the "creatures in the wall's space are shoved clear" rule (gaps at occupants).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `length_ft` | `uint32` | required |  |

<a id="effect--wall-damage"></a>

## Effect::WallDamage

A damaging wall: Wall of Fire — a CONCENTRATION barrier of `length_ft` that BLOCKS (like `Wall`) AND sears any of the caster's enemies who start their turn on or adjacent to it (an `ability` save for half of `dice` `kind`). Established via a Target self-cast; BENEFICIAL for side-legality (emergent per-turn, like the Zone). LEDGERED: the SRD wall of fire is PASSABLE (ours blocks — a fiery barrier, the fun-first read), its ONE damaging side (ours sears both), the opaque line-of-sight, the player-drawn shape/anchor, and the upcast.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `dice` | `string` | required |  |
| `kind` | `string` | required |  |
| `length_ft` | `uint32` | required |  |

<a id="effect--zone-afflict"></a>

## Effect::ZoneAfflict

A condition zone: the Zone's SNARING sibling — a CONCENTRATION area fixed to a board point that AFFLICTS rather than damages. A creature starting its turn within `radius_ft` makes an `ability` save; on a FAILURE it gains `condition` (a `conditions/` id) for that turn — web's restrained, sleet storm's prone, stinking cloud's incapacitated. Established via a Target self-cast; BENEFICIAL for side-legality (emergent per-turn, like the Zone), the placement AI-chosen. The condition RE-EVALUATES each turn the creature lingers (a made save frees it). LEDGERED: the escape/break-free check, the difficult-terrain rider, the enters-the-area trigger (start-turn-in only), and the upcast.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `ability` | `Ability` | required |  |
| `condition` | `string` | required |  |
| `dispersed_by_strong_wind` | `boolean` | default `false` |  |
| `radius_ft` | `uint32` | required |  |

<a id="effect--temp-hp"></a>

## Effect::TempHp

A temporary hit-point grant: the target gains `dice` + `plus` temporary hit points — false life's ward. BENEFICIAL, instantaneous (NOT concentration): temp HP sits on the combatant and is spent before real HP (the dark-one's-blessing pool), taking the HIGHER of any existing pool and the fresh grant (SRD "decide whether to keep"). The authored expiry applies only when `expires_with_effect` is true.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `dice` | `string` | required |  |
| `expires_with_effect` | `boolean` | default `true` | Whether this grant expires with the effect's authored duration. |
| `plus` | `int64` | required |  |

<a id="effect--resist"></a>

## Effect::Resist

A resistance grant: the delivered target gains resistance to `kind` damage — protection from energy's ward, halving that one kind — for the authored duration. A concentration grant is source-owned and lifts when focus breaks; non-concentration item magic expires on its own clock. LEDGERED: the player's choice among the five energy kinds (ship one — fire) and the SRD 1-hour cap outside a combat bubble.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `kind` | `string` | required |  |

<a id="effect--save-advantage"></a>

## Effect::SaveAdvantage

Source-owned advantage on the listed saving throw abilities for the spell's duration.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `abilities` | `Ability[]` | required |  |


## Supporting shapes

- [Ability](https://kinbarrow.com/modding/latest/spell.md#ability)
- [AfflictionEntryEffect](https://kinbarrow.com/modding/latest/spell.md#affliction-entry-effect)
- [ArmorCategory](https://kinbarrow.com/modding/latest/spell.md#armor-category)
- [AttackHitDamageConsequence](https://kinbarrow.com/modding/latest/spell.md#attack-hit-damage-consequence)
- [AuthoredChoicePayload](https://kinbarrow.com/modding/latest/spell.md#authored-choice-payload)
- [AuthoredForcedAction](https://kinbarrow.com/modding/latest/spell.md#authored-forced-action)
- [CastSpellFilter](https://kinbarrow.com/modding/latest/spell.md#cast-spell-filter)
- [CastTime](https://kinbarrow.com/modding/latest/spell.md#cast-time)
- [CastTransformOption](https://kinbarrow.com/modding/latest/spell.md#cast-transform-option)
- [ChoiceDeliveryOption](https://kinbarrow.com/modding/latest/mechanisms/spell/choice-delivery-option.md)
- [ContingentConsequence](https://kinbarrow.com/modding/latest/spell.md#contingent-consequence)
- [ContingentPredicate](https://kinbarrow.com/modding/latest/spell.md#contingent-predicate)
- [ContingentTiming](https://kinbarrow.com/modding/latest/spell.md#contingent-timing)
- [D20Edge](https://kinbarrow.com/modding/latest/spell.md#d20-edge)
- [DamageRollAmount](https://kinbarrow.com/modding/latest/spell.md#damage-roll-amount)
- [DamageRollOutcome](https://kinbarrow.com/modding/latest/spell.md#damage-roll-outcome)
- [DamageRollSource](https://kinbarrow.com/modding/latest/spell.md#damage-roll-source)
- [FeatureActionEconomy](https://kinbarrow.com/modding/latest/spell.md#feature-action-economy)
- [FeatureLevelValue](https://kinbarrow.com/modding/latest/spell.md#feature-level-value)
- [FeatureResourceLedger](https://kinbarrow.com/modding/latest/mechanisms/spell/feature-resource-ledger.md)
- [FeatureValue](https://kinbarrow.com/modding/latest/spell.md#feature-value)
- [ForcedTurnRule](https://kinbarrow.com/modding/latest/mechanisms/spell/forced-turn-rule.md)
- [FormPayload](https://kinbarrow.com/modding/latest/spell.md#form-payload)
- [MovementMode](https://kinbarrow.com/modding/latest/spell.md#movement-mode)
- [MovementSurface](https://kinbarrow.com/modding/latest/spell.md#movement-surface)
- [OptionalEffectConsequence](https://kinbarrow.com/modding/latest/spell.md#optional-effect-consequence)
- [PersistentSpellPayload](https://kinbarrow.com/modding/latest/spell.md#persistent-spell-payload)
- [PrivilegedCastProfile](https://kinbarrow.com/modding/latest/spell.md#privileged-cast-profile)
- [ReactionDefensePayload](https://kinbarrow.com/modding/latest/spell.md#reaction-defense-payload)
- [RepeatSaveRule](https://kinbarrow.com/modding/latest/mechanisms/spell/repeat-save-rule.md)
- [ResourceExchangeRoute](https://kinbarrow.com/modding/latest/mechanisms/spell/resource-exchange-route.md)
- [RiderExchangeBudget](https://kinbarrow.com/modding/latest/spell.md#rider-exchange-budget)
- [RiderExchangeChoice](https://kinbarrow.com/modding/latest/spell.md#rider-exchange-choice)
- [Size](https://kinbarrow.com/modding/latest/spell.md#size)
- [Skill](https://kinbarrow.com/modding/latest/spell.md#skill)
- [SlotScaledDamage](https://kinbarrow.com/modding/latest/spell.md#slot-scaled-damage)
- [SpellComponents](https://kinbarrow.com/modding/latest/spell.md#spell-components)
- [SummonAugmentation](https://kinbarrow.com/modding/latest/spell.md#summon-augmentation)
- [SummonScaling](https://kinbarrow.com/modding/latest/spell.md#summon-scaling)
- [TriggeredZoneOutcome](https://kinbarrow.com/modding/latest/spell.md#triggered-zone-outcome)
- [TriggeredZoneShape](https://kinbarrow.com/modding/latest/spell.md#triggered-zone-shape)
- [TriggeredZoneUses](https://kinbarrow.com/modding/latest/spell.md#triggered-zone-uses)
