addedInput schema / $schema
Added value: +"http://json-schema.org/draft-07/schema#"
addedInput schema / additionalProperties
Added value: +{}
addedInput schema / properties / _parent
Added value: +{
+ "description": "Parent spell ObjectId for variant spells.",
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / abilityScoreBump
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "options": {
+ "description": "Alternatives the player picks exactly ONE of (OR).",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "lines": {
+ "description": "Lines that ALL apply when this option is chosen (AND).",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "amount": {
+ "description": "How much each chosen ability goes up (usually positive).",
+ "type": "number"
+ },
+ "count": {
+ "description": "How many distinct abilities this line raises.",
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "eligible": {
+ "description": "Pool to choose from. Empty / absent = any of the six.",
+ "items": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "max": {
+ "description": "Ceiling no chosen score may exceed after the bump (ASI = 20).",
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / abilityScoreSet
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "ability": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "value": {
+ "description": "Score to set the ability to while in effect.",
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / actionType
Added value: +{
+ "description": "Authoring hint — when set, the character sheet's rule modal shows an 'Add to Actions' button that mints an action row with this `type`.",
+ "type": "string"
+}
addedInput schema / properties / actions
Added value: +{
+ "description": "PF Playtest action-economy marker (F/1/2/3/R).",
+ "type": "string"
+}
addedInput schema / properties / active
Added value: +{
+ "type": "boolean"
+}
addedInput schema / properties / area
Added value: +{
+ "additionalProperties": {},
+ "description": "Area of effect. shape ∈ cone|cube|cylinder|emanation|line|sphere; size (ft); width for line.",
+ "properties": {
+ "shape": {
+ "enum": [
+ "cone",
+ "cube",
+ "cylinder",
+ "emanation",
+ "line",
+ "sphere"
+ ],
+ "type": "string"
+ },
+ "size": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "width": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / castingTime
Added value: +{
+ "additionalProperties": {},
+ "description": "Casting time. unit ∈ action|bonusAction|reaction|minute|hour; count for minute/hour.",
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "unit": {
+ "enum": [
+ "action",
+ "bonusAction",
+ "reaction",
+ "minute",
+ "hour"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / categories
Added value: +{
+ "description": "Go-forward class membership. The field `spellChoices[].allowedCategories` filters on; the vault UI labels it 'Class(es)'. Free-form, taggable.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedInput schema / properties / classes
Added value: +{
+ "description": "Class-membership list for non-5.5e rulesets (e.g. PFRPG); 5.5e spells use `categories` instead. Free-form per ruleset.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedInput schema / properties / components
Added value: +{
+ "additionalProperties": {},
+ "description": "Components: verbal/somatic/material flags, plus material text, gp cost, and consumed flag.",
+ "properties": {
+ "material": {
+ "type": "boolean"
+ },
+ "materialConsumed": {
+ "type": "boolean"
+ },
+ "materialCost": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "materialText": {
+ "type": "string"
+ },
+ "somatic": {
+ "type": "boolean"
+ },
+ "verbal": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / damage
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "appliesTo": {
+ "enum": [
+ "melee",
+ "ranged",
+ "either"
+ ],
+ "type": "string"
+ },
+ "area": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "shape": {
+ "enum": [
+ "cone",
+ "line",
+ "sphere",
+ "cube",
+ "cylinder",
+ "emanation",
+ "radius"
+ ],
+ "type": "string"
+ },
+ "size": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "width": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "modifierAbility": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "modifierType": {
+ "enum": [
+ "flat",
+ "proficiency",
+ "ability"
+ ],
+ "type": "string"
+ },
+ "onSave": {
+ "enum": [
+ "half",
+ "negates",
+ "full"
+ ],
+ "type": "string"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "save": {
+ "additionalProperties": {},
+ "properties": {
+ "ability": {
+ "enum": [
+ "none",
+ "spellcasting",
+ "attackAttribute",
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "dcBase": {
+ "type": "number"
+ },
+ "includesProficiency": {
+ "type": "boolean"
+ },
+ "saveType": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "scaling": {
+ "enum": [
+ "fixed",
+ "byLevel",
+ "spellSlot"
+ ],
+ "type": "string"
+ },
+ "scalingAttribute": {
+ "type": "string"
+ },
+ "slotIncrement": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "targets": {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "targets": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "trigger": {
+ "enum": [
+ "passive",
+ "toggled",
+ "reaction",
+ "perRoll",
+ "resource",
+ "targetBound"
+ ],
+ "type": "string"
+ },
+ "types": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / damageReduction
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "amount": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "includesProficiency": {
+ "type": "boolean"
+ },
+ "modifierSource": {
+ "enum": [
+ "spellcasting",
+ "attackAttribute",
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "range": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "requires": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ },
+ "target": {
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "trigger": {
+ "enum": [
+ "passive",
+ "toggled",
+ "reaction",
+ "perRoll",
+ "resource",
+ "targetBound"
+ ],
+ "type": "string"
+ },
+ "types": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / description
Added value: +{
+ "description": "Full spell body. Markdown is supported.",
+ "type": "string"
+}
addedInput schema / properties / diceFloors
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "appliesTo": {
+ "enum": [
+ "damage",
+ "damage.melee",
+ "damage.ranged",
+ "damage.spell",
+ "healing"
+ ],
+ "type": "string"
+ },
+ "floor": {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "requires": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ },
+ "threshold": {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "trigger": {
+ "enum": [
+ "passive",
+ "toggled",
+ "reaction",
+ "perRoll",
+ "resource",
+ "targetBound"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / diceReplacements
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "_target": {
+ "description": "Mongo `_id` reference (24-character hex string).",
+ "minLength": 1,
+ "type": "string"
+ },
+ "dice": {
+ "type": "string"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / duration
Added value: +{
+ "additionalProperties": {},
+ "description": "Spell duration. unit ∈ instantaneous | round | minute | hour | day | untilDispelled | untilDispelledOrTriggered | special; count for timed units; concentration flag; upTo flag for a non-concentration capped duration (\"Up to 1 minute\").",
+ "properties": {
+ "concentration": {
+ "type": "boolean"
+ },
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "unit": {
+ "enum": [
+ "instantaneous",
+ "round",
+ "minute",
+ "hour",
+ "day",
+ "untilDispelled",
+ "untilDispelledOrTriggered",
+ "special"
+ ],
+ "type": "string"
+ },
+ "upTo": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / effect
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "audience": {
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "conditions": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "applyWhen": {
+ "enum": [
+ "always",
+ "onFail",
+ "onSuccess"
+ ],
+ "type": "string"
+ },
+ "durationCount": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "durationUnit": {
+ "enum": [
+ "round",
+ "minute",
+ "hour",
+ "day",
+ "untilShortRest",
+ "untilLongRest",
+ "special"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "target": {
+ "enum": [
+ "self",
+ "target"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "save": {
+ "additionalProperties": {},
+ "properties": {
+ "ability": {
+ "enum": [
+ "none",
+ "spellcasting",
+ "attackAttribute",
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "dcBase": {
+ "type": "number"
+ },
+ "includesProficiency": {
+ "type": "boolean"
+ },
+ "saveType": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "triggerEvent": {
+ "enum": [
+ "onHit",
+ "onMiss",
+ "onDamage",
+ "startOfYourTurn",
+ "endOfYourTurn",
+ "startOfTargetTurn",
+ "endOfTargetTurn"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / forcedMovement
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "audience": {
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "direction": {
+ "enum": [
+ "awayFromSelf",
+ "towardSelf",
+ "anywhere"
+ ],
+ "type": "string"
+ },
+ "distance": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxTargetSize": {
+ "enum": [
+ "tiny",
+ "small",
+ "medium",
+ "large",
+ "huge",
+ "gargantuan"
+ ],
+ "type": "string"
+ },
+ "requires": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ },
+ "triggerEvent": {
+ "enum": [
+ "onHit",
+ "onMiss",
+ "onDamage",
+ "startOfYourTurn",
+ "endOfYourTurn",
+ "startOfTargetTurn",
+ "endOfTargetTurn"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / healing
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "modifierSource": {
+ "enum": [
+ "level",
+ "spellcasting",
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "scaling": {
+ "enum": [
+ "fixed",
+ "byLevel",
+ "proficiency",
+ "spellSlot"
+ ],
+ "type": "string"
+ },
+ "slotIncrement": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "target": {
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "multiple"
+ ],
+ "type": "string"
+ },
+ "targets": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / higherLevel
Added value: +{
+ "description": "Higher-Level / cantrip-scaling text (what changes when cast with a higher slot).",
+ "type": "string"
+}
addedInput schema / properties / level
Added value: +{
+ "description": "Spell level. 0 for cantrips; 1–9 for leveled spells (5e/5e24).",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+}
addedInput schema / properties / mechanicsKey
Added value: +{
+ "type": "string"
+}
addedInput schema / properties / name
Added value: +{
+ "description": "Display name. Required.",
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / ogl
Added value: +{
+ "type": "boolean"
+}
addedInput schema / properties / parameters
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "label": {
+ "type": "string"
+ },
+ "max": {
+ "type": "number"
+ },
+ "min": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "number",
+ "string",
+ "enum"
+ ],
+ "type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / preparedSpells
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / prerequisites
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "abilities": {
+ "description": "For abilityScore: ANY listed ability meeting `min` satisfies ('Str or Dex 13+').",
+ "items": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "category": {
+ "description": "For rule (filter): matches any held rule in this category.",
+ "type": "string"
+ },
+ "class": {
+ "description": "For a `level` predicate: a Class rule id that scopes `min` to 'Nth level in that class'. Absent = total character level.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "min": {
+ "description": "Numeric minimum — character level (level), class level (class), or ability score (abilityScore).",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'must NOT meet this'.",
+ "type": "boolean"
+ },
+ "proficiency": {
+ "description": "For proficiency: the proficiency name (e.g. 'Martial', 'Stealth').",
+ "type": "string"
+ },
+ "proficiencyType": {
+ "description": "For proficiency: the family.",
+ "enum": [
+ "skill",
+ "tool",
+ "weapon",
+ "armor",
+ "save",
+ "language"
+ ],
+ "type": "string"
+ },
+ "rule": {
+ "description": "For rule: a specific held Rule id.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "ruleType": {
+ "description": "For rule (filter): matches any held rule of this type.",
+ "type": "string"
+ },
+ "spell": {
+ "description": "For spell: a specific known Spell id.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "spellList": {
+ "description": "For spell (filter): knows any spell from this class list.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate kind: level / abilityScore / rule / spell / proficiency / spellcasting. (A class is required via a `rule` predicate pointing at the class rule.)",
+ "enum": [
+ "level",
+ "abilityScore",
+ "rule",
+ "spell",
+ "proficiency",
+ "spellcasting"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / prerequisitesLogic
Added value: +{
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+}
addedInput schema / properties / proficiencyChoices
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "allowedItems": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "level": {
+ "enum": [
+ "proficient",
+ "expertise"
+ ],
+ "type": "string"
+ },
+ "mode": {
+ "enum": [
+ "specific",
+ "all"
+ ],
+ "type": "string"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "types": {
+ "items": {
+ "enum": [
+ "skill",
+ "tool",
+ "save",
+ "weapon",
+ "armor",
+ "language"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / publisher
Added value: +{
+ "type": "string"
+}
addedInput schema / properties / range
Added value: +{
+ "additionalProperties": {},
+ "description": "Range. kind ∈ self|touch|ranged|sight|unlimited|special; distance for ranged; unit ∈ feet|miles (default feet).",
+ "properties": {
+ "distance": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "kind": {
+ "enum": [
+ "self",
+ "touch",
+ "ranged",
+ "sight",
+ "unlimited",
+ "special"
+ ],
+ "type": "string"
+ },
+ "unit": {
+ "enum": [
+ "feet",
+ "miles"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / rank
Added value: +{
+ "description": "PFRPG2 rank field. Free-form.",
+ "type": "string"
+}
addedInput schema / properties / reactionTrigger
Added value: +{
+ "description": "When castingTime.unit is 'reaction', the trigger text ('which you take when…').",
+ "type": "string"
+}
addedInput schema / properties / recurringDamage
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "amount": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "includesProficiency": {
+ "type": "boolean"
+ },
+ "modifierSource": {
+ "enum": [
+ "spellcasting",
+ "attackAttribute",
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "audience": {
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "durationCount": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "durationUnit": {
+ "enum": [
+ "instantaneous",
+ "untilStartOfNextTurn",
+ "untilEndOfNextTurn",
+ "round",
+ "minute",
+ "hour",
+ "untilShortRest",
+ "untilLongRest"
+ ],
+ "type": "string"
+ },
+ "ignoreResistances": {
+ "type": "boolean"
+ },
+ "inheritDamageType": {
+ "type": "boolean"
+ },
+ "range": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "requires": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ },
+ "triggerEvent": {
+ "enum": [
+ "startOfYourTurn",
+ "endOfYourTurn",
+ "startOfTargetTurn",
+ "endOfTargetTurn",
+ "whenTargetEntersArea",
+ "onHit",
+ "onMiss",
+ "onDamage"
+ ],
+ "type": "string"
+ },
+ "types": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / resistances
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "enum": [
+ "resistance",
+ "immunity",
+ "vulnerability"
+ ],
+ "type": "string"
+ },
+ "range": {
+ "description": "Aura radius in feet for ally/any-targeted resistances (Warding Aura's 10 ft.). Absent = self-only.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "target": {
+ "description": "Who the resistance protects — mirrors damageReduction's target/range pair. Absent = self.",
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "trigger": {
+ "enum": [
+ "passive",
+ "toggled",
+ "reaction",
+ "perRoll",
+ "resource",
+ "targetBound"
+ ],
+ "type": "string"
+ },
+ "types": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / ritual
Added value: +{
+ "description": "5.5e ritual tag — the spell can be cast as a ritual (no spell slot).",
+ "type": "boolean"
+}
addedInput schema / properties / rollMods
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "audience": {
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "consumeOnUse": {
+ "type": "boolean"
+ },
+ "durationCount": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "durationUnit": {
+ "enum": [
+ "instantaneous",
+ "untilStartOfNextTurn",
+ "untilEndOfNextTurn",
+ "round",
+ "minute",
+ "hour",
+ "untilShortRest",
+ "untilLongRest"
+ ],
+ "type": "string"
+ },
+ "mode": {
+ "enum": [
+ "advantage",
+ "disadvantage"
+ ],
+ "type": "string"
+ },
+ "range": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "requires": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ },
+ "rollScope": {
+ "enum": [
+ "attack",
+ "save",
+ "abilityCheck",
+ "skillCheck"
+ ],
+ "type": "string"
+ },
+ "trigger": {
+ "enum": [
+ "passive",
+ "toggled",
+ "reaction",
+ "perRoll",
+ "resource",
+ "targetBound"
+ ],
+ "type": "string"
+ },
+ "triggerEvent": {
+ "enum": [
+ "onHit",
+ "onMiss",
+ "onDamage",
+ "startOfYourTurn",
+ "endOfYourTurn",
+ "startOfTargetTurn",
+ "endOfTargetTurn"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / ruleChoice
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "allowedCategories": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "allowedRuleParameters": {
+ "additionalProperties": {
+ "additionalProperties": {},
+ "properties": {
+ "damageType": {
+ "type": "string"
+ },
+ "number": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "range": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "speed": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "allowedRules": {
+ "items": {
+ "description": "Mongo `_id` reference (24-character hex string).",
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "allowedTypes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "label": {
+ "type": "string"
+ },
+ "mode": {
+ "enum": [
+ "filter",
+ "specific"
+ ],
+ "type": "string"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "scaling": {
+ "enum": [
+ "fixed",
+ "byLevel"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / ruleset
Added value: +{
+ "description": "Ruleset code (e.g. '5th Edition', '5e24', 'PFRPG', 'Savage Worlds').",
+ "type": "string"
+}
addedInput schema / properties / school
Added value: +{
+ "description": "Spell school (Abjuration, Conjuration, Divination, Enchantment, Evocation, Illusion, Necromancy, Transmutation).",
+ "type": "string"
+}
addedInput schema / properties / source
Added value: +{
+ "type": "string"
+}
addedInput schema / properties / spellChoices
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "allowedCategories": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "allowedSchools": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "allowedSpells": {
+ "items": {
+ "description": "Mongo `_id` reference (24-character hex string).",
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "castingAbility": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "castingAbilityOptions": {
+ "items": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "freeCast": {
+ "additionalProperties": {},
+ "properties": {
+ "atWill": {
+ "type": "boolean"
+ },
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "recovery": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "on": {
+ "enum": [
+ "Short",
+ "Long"
+ ],
+ "type": "string"
+ },
+ "restoreAll": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "label": {
+ "type": "string"
+ },
+ "maxLevel": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "minLevel": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "mode": {
+ "enum": [
+ "filter",
+ "specific"
+ ],
+ "type": "string"
+ },
+ "prepared": {
+ "type": "boolean"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / spellListChoices
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "allowedCategories": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "castingAbility": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "castingAbilityOptions": {
+ "items": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "label": {
+ "type": "string"
+ },
+ "picks": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "freeCast": {
+ "additionalProperties": {},
+ "properties": {
+ "atWill": {
+ "type": "boolean"
+ },
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "recovery": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "on": {
+ "enum": [
+ "Short",
+ "Long"
+ ],
+ "type": "string"
+ },
+ "restoreAll": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "label": {
+ "type": "string"
+ },
+ "maxLevel": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "minLevel": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "prepared": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / statBonuses
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "description": "For valueType: 'attribute' — which ability's modifier to use.",
+ "type": "string"
+ },
+ "audience": {
+ "description": "Who the bonus contributes to. Absent = self.",
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "dice": {
+ "description": "For valueType: 'dice' — dice expression (e.g. '1d4').",
+ "type": "string"
+ },
+ "durationCount": {
+ "description": "Numeric count paired with durationUnit (e.g. count: 3, unit: 'round').",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "durationUnit": {
+ "description": "How long the bonus persists once fired. Only meaningful for event-driven bonuses.",
+ "enum": [
+ "instantaneous",
+ "untilStartOfNextTurn",
+ "untilEndOfNextTurn",
+ "round",
+ "minute",
+ "hour",
+ "untilShortRest",
+ "untilLongRest"
+ ],
+ "type": "string"
+ },
+ "fixed": {
+ "description": "For valueType: 'fixed' — the literal numeric contribution.",
+ "type": "number"
+ },
+ "progression": {
+ "description": "For valueType: 'byLevel' — per-level rows; walker picks the row with level <= current level.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "range": {
+ "description": "Aura radius in feet for ally/any-audience bonuses (Aura of Protection's 10 ft.). Absent = no range filter.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "requires": {
+ "description": "Optional predicate list that gates this bonus. Absent / empty = always-on.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "description": "How `requires` predicates compose. 'and' (default) = ALL must hold. 'or' = ANY one is sufficient.",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ },
+ "target": {
+ "description": "Stat the bonus contributes to (e.g. 'skills.Acrobatics.misc', 'attributes.strength.misc').",
+ "type": "string"
+ },
+ "trigger": {
+ "description": "Action-economy / cost shape of the bonus. passive / toggled / reaction / perRoll / resource / targetBound.",
+ "enum": [
+ "passive",
+ "toggled",
+ "reaction",
+ "perRoll",
+ "resource",
+ "targetBound"
+ ],
+ "type": "string"
+ },
+ "triggerEvent": {
+ "description": "Game-time event that fires the bonus (onHit / onDamage / startOfYourTurn / etc.). Absent = not event-driven (passive walker contributes whenever `requires` holds).",
+ "enum": [
+ "onHit",
+ "onMiss",
+ "onDamage",
+ "startOfYourTurn",
+ "endOfYourTurn",
+ "startOfTargetTurn",
+ "endOfTargetTurn"
+ ],
+ "type": "string"
+ },
+ "types": {
+ "description": "Damage type tags for damage.* targets. No-op for non-damage targets.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "valueType": {
+ "description": "How the contribution is computed. 'fixed' uses `fixed`; 'attribute' uses the mod of `attribute`; 'attackAttribute' uses the action's attack-roll ability (per-attack only); others scale by level/PB/dice.",
+ "enum": [
+ "fixed",
+ "attribute",
+ "proficiency",
+ "level",
+ "halfLevel",
+ "dice",
+ "byLevel",
+ "attackAttribute"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / summary
Added value: +{
+ "description": "Short one-line summary.",
+ "type": "string"
+}
addedInput schema / properties / type
Added value: +{
+ "description": "Spell type. 5e / 5e24 use 'Spell'; Savage Worlds uses 'Power'. Required at create.",
+ "enum": [
+ "Spell",
+ "Power"
+ ],
+ "type": "string"
+}
addedInput schema / properties / uses
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "mode": {
+ "enum": [
+ "fixed",
+ "byLevel",
+ "proficiency"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "progression": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "countAbility": {
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "countSource": {
+ "enum": [
+ "fixed",
+ "proficiency",
+ "abilityMod"
+ ],
+ "type": "string"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "slotLevel": {
+ "maximum": 9,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "recovery": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "on": {
+ "enum": [
+ "Short",
+ "Long"
+ ],
+ "type": "string"
+ },
+ "restoreAll": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "rest": {
+ "enum": [
+ "Short",
+ "Long"
+ ],
+ "type": "string"
+ },
+ "slotLevel": {
+ "maximum": 9,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / required
Added value: +[
+ "name"
+]