addedInput schema / properties / changes / items / properties / conditions
Added value: +{
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ {
+ "items": {
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ ],
+ "description": "Per-change Filter — this change applies only while it holds. roll.* keys work ONLY on a RULES-type change (dnd5e.advantage / bonus / minimum / maximum), the only changes evaluated at roll time: roll.ability, roll.skill, roll.type, roll.attack.type / .mode / .classification, roll.damage.type, roll.proficient, roll.tool …, e.g. {k:\"roll.attack.type\", v:\"ranged\"}. A core-type change is evaluated at data preparation, where there is no roll data."
+}
changedInput schema / properties / changes / items / properties / key / description
Previous value: -"Data path to modify, e.g. \"system.attributes.ac.bonus\" or \"system.traits.dr.value\"."New value: +"Data path to modify, e.g. \"system.attributes.ac.bonus\" or \"system.traits.dr.value\" — OR, for a dnd5e.* rules type, a roll CATEGORY: attack | check | d20 | save | damage | healing (damage/healing take dnd5e.bonus only)."
addedInput schema / properties / changes / items / properties / phase
Added value: +{
+ "description": "When the change applies during data preparation: \"initial\" (the default, before derived data) or \"final\" (after).",
+ "enum": [
+ "initial",
+ "final"
+ ],
+ "type": "string"
+}
addedInput schema / properties / changes / items / properties / priority
Added value: +{
+ "description": "Application order (lower first). Omit for the default.",
+ "type": "number"
+}
addedInput schema / properties / changes / items / properties / replacement
Added value: +{
+ "description": "Substitute @attribute strings in the value with static data from the ORIGIN actor (the one applying the effect) or the TARGET actor, instead of evaluating them live. Omit = evaluate live.",
+ "enum": [
+ "origin",
+ "target"
+ ],
+ "type": "string"
+}
changedInput schema / properties / changes / items / properties / type / description
Previous value: -"How the value is applied. Default \"add\"."New value: +"How the value is applied. Core (CONST.ACTIVE_EFFECT_CHANGE_TYPES): add / subtract / multiply / override / upgrade / downgrade / custom on a data path. dnd5e 6.0 RULES (evaluated at roll time, key = a roll category): dnd5e.advantage, dnd5e.bonus, dnd5e.minimum, dnd5e.maximum. Default \"add\"."
changedInput schema / properties / changes / items / properties / type / enum
Previous value: -[
- "add",
- "multiply",
- "override",
- "upgrade",
- "downgrade",
- "custom"
-]New value: +[
+ "add",
+ "subtract",
+ "multiply",
+ "override",
+ "upgrade",
+ "downgrade",
+ "custom",
+ "dnd5e.advantage",
+ "dnd5e.bonus",
+ "dnd5e.maximum",
+ "dnd5e.minimum"
+]
changedInput schema / properties / changes / items / properties / value / description
Previous value: -"The change value (stored as a string; e.g. \"2\", \"fire\")."New value: +"The change value (stored as a string; e.g. \"2\", \"fire\"). Rules: dnd5e.bonus = \"1d4\" / \"2\" / \"@prof\" / \"1d4[fire]\"; dnd5e.advantage = +1 -1 =+1 =-1 >=0 <=0 (+1 add advantage, -1 add disadvantage, =+1/=-1 force, >=0 ignore disadvantage, <=0 ignore advantage); dnd5e.minimum / maximum = a deterministic formula (\"10\", \"@prof\") — the d20 floor / ceiling."
addedInput schema / properties / conditions
Added value: +{
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ {
+ "items": {
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ ],
+ "description": "A Filter: {k: \"<roll-data path>\", v: <value>, o?: \"<comparison>\"} (exact when o is omitted; comparisons: in has hasany hasall contains icontains startswith endswith empty gt gte lt lte subsetof), an operator {o: \"AND\"|\"OR\"|\"NAND\"|\"NOR\"|\"XOR\", v: [filters]} / {o: \"NOT\", v: filter}, or a bare array (AND). Examples: {k:\"statuses.bloodied\", v:1} · {k:\"item.properties\", o:\"has\", v:\"thr\"} · {k:\"roll.ability\", v:\"str\"} (roll.* keys only on a CHANGE). Also accepts the JSON string."
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Effect-level Filter — the WHOLE effect is suppressed while it is false, e.g. {k:\"statuses.bloodied\", v:1} (\"while Bloodied\") or, on an enchantment, {o:\"OR\", v:[{k:\"item.type.value\", o:\"in\", v:[\"simpleR\",\"martialR\"]}, {k:\"item.properties\", o:\"has\", v:\"thr\"}]}. roll.* keys are NOT available here (use a change condition). On edit, pass null / {} to clear."
+}
addedInput schema / properties / duration
Added value: +{
+ "description": "Effect duration ({value, units, expiry?}); omit for a permanent/passive effect.",
+ "properties": {
+ "expiry": {
+ "anyOf": [
+ {
+ "enum": [
+ "combatStart",
+ "roundStart",
+ "turnStart",
+ "combatEnd",
+ "roundEnd",
+ "turnEnd",
+ "shortRest",
+ "longRest",
+ "sourceStart",
+ "sourceEnd",
+ "targetStart",
+ "targetEnd"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "When the effect lapses. Core combat events (combatStart roundStart turnStart combatEnd roundEnd turnEnd): with NO value the effect expires at the FIRST matching event; with a value+units, at the first matching event after the value elapses. The dnd5e events are duration-less and take no value: shortRest / longRest, and the source/target turn pseudo-expiries: \"until the end of the target's next turn\" = targetEnd, \"until the start of your next turn\" = sourceStart. Omit for the default; null clears."
+ },
+ "rounds": {
+ "description": "DEPRECATED 5.x alias for value + units \"rounds\".",
+ "minimum": 0,
+ "type": "number"
+ },
+ "seconds": {
+ "description": "DEPRECATED 5.x alias for value + units \"seconds\".",
+ "minimum": 0,
+ "type": "number"
+ },
+ "turns": {
+ "description": "DEPRECATED 5.x alias for value + units \"turns\".",
+ "minimum": 0,
+ "type": "number"
+ },
+ "units": {
+ "description": "Foundry v14 duration units (CONST.ACTIVE_EFFECT_DURATION_UNITS; rounds/turns count in combat).",
+ "enum": [
+ "seconds",
+ "minutes",
+ "hours",
+ "days",
+ "months",
+ "years",
+ "rounds",
+ "turns"
+ ],
+ "type": "string"
+ },
+ "value": {
+ "description": "How long, in `units`.",
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / magical
Added value: +{
+ "description": "dnd5e 6.0: mark the effect as magical (e.g. a magic-item or spell effect).",
+ "type": "boolean"
+}
changedInput schema / properties / patch / description
Previous value: -"Edit: extra dot-paths relative to the effect, e.g. {\"duration.rounds\": 10}."New value: +"Edit: extra dot-paths relative to the effect, e.g. {\"duration.value\": 10, \"duration.units\": \"rounds\"} or {\"tint\": \"#ff0000\"}. Changes live at \"system.changes\"."