{ "$schema": "http://json-schema.org/draft-06/schema#", "properties": { "allowsSpellResistance": { "type": "boolean" }, "area": { "oneOf":[ {"$ref": "#/definitions/area/Line"}, {"$ref": "#/definitions/area/Emission"}, {"$ref": "#/definitions/area/Sphere"}, {"$ref": "#/definitions/area/Cylinder"} ] }, "castingTime": { "type": "string", "enum": ["Free", "Swift", "Move", "Standard", "Full"] }, "classToLevel": { "patternProperties": { "^.*$": {"type": "integer", "minimum":0, "maximum":9} }, "type": "object" }, "components": { "items": { "enum": ["V", "S", "M", "F", "DF", "M_DF", "F_DF", "XP"] }, "type": "array" }, "description": { "type": "string" }, "duration": { "oneOf":[ {"type": "string"}, {"$ref": "#/definitions/duration"} ] }, "effect": {"$ref": "#/definitions/effect"}, "keywords": { "items": {"type": "string"}, "type": "array" }, "name": { "type": "string" }, "range": { "oneOf": [ {"enum": ["Touch", "Close", "Medium", "Long", "Unlimited"]}, {"$ref": "#/definitions/range"} ] }, "savingThrow": { "type": "string" }, "school": { "type": "string" }, "subSchool": { "type": "string" }, "target": { "oneOf":[ {"type": "string"}, {"$ref": "#/definitions/target"} ] } }, "required": [ "school", "name", "description", "castingTime", "effect", "classToLevel", "duration", "range", "components", "keywords", "savingThrow" ], "type": "object", "definitions": { "area": { "Line": { "properties":{ "@type": {"const": "Line"}, "distance": {"$ref": "file:common.json#/definitions/distance"} }, "additionalProperties": false }, "Emission": { "properties":{ "@type": {"const": "Emission"}, "emit": {"enum": ["BURST", "EMANATION", "SPREAD", "NONE"]} }, "additionalProperties": false }, "Sphere": { "properties":{ "@type": {"const": "Sphere"}, "radius": { "oneOf": [ {"const": 0}, {"$ref": "file:common.json#/definitions/distance"} ] }, "emit": {"enum": ["BURST", "EMANATION", "SPREAD", "NONE"]}, "aroundYou": {"type": "boolean"} }, "additionalProperties": false }, "Cylinder": { "properties":{ "@type": {"const": "Cylinder"}, "radius": {"$ref": "file:common.json#/definitions/distance"}, "height": {"$ref": "file:common.json#/definitions/distance"} }, "additionalProperties": false } }, "duration": { "dependencies":{ "per": ["step"] }, "properties":{ "duration": {"type": "integer", "exclusiveMinimum": 0}, "per": {"type": "integer", "exclusiveMinimum": 0}, "step": {"type": "integer", "exclusiveMinimum": 0}, "unit":{ "enum": ["round", "minute", "hour", "day"] } }, "required": ["unit", "duration"], "type": "object", "additionalProperties": false }, "effect": { "dependencies":{ "beyond":["per", "resolved"], "count":["resolved"], "per":["resolved"], "step":["per", "resolved"], "upto":["per", "resolved"] }, "properties": { "beyond": {"type": "integer", "exclusiveMinimum": 0}, "count": {"type": "integer", "exclusiveMinimum": 0}, "format": {"type": "string"}, "per": {"type": "integer", "exclusiveMinimum": 0}, "resolved": {"type": "string"}, "step": {"type": "integer", "exclusiveMinimum": 0}, "upto": {"type": "integer", "exclusiveMinimum": 0} }, "required": ["format"], "type": "object", "additionalProperties": false }, "range": { "dependencies": { "per": ["step"] }, "properties": { "name": {"type": "string"}, "range": {"$ref": "file:common.json#/definitions/distance"}, "per": {"$ref": "file:common.json#/definitions/distance"}, "step": {"type": "integer", "exclusiveMinimum": 0} }, "type": "object", "required": ["name", "range"], "additionalProperties": false }, "target": { "properties": { "count": {"type": "integer", "exclusiveMinimum": 0}, "format": {"type": "string"}, "per": {"type": "integer", "exclusiveMinimum": 0}, "resolved": {"type": "string"}, "step": {"type": "integer", "exclusiveMinimum": 0} }, "required": ["format", "resolved", "count", "per", "step"], "type": "object", "additionalProperties": false } } }