{ "$schema": "http://json-schema.org/draft-06/schema#", "properties": { "items": { "items": { "properties": { "name": {"type": "string"}, "count": {"type": "integer", "minimum": 1}, "countEquipped": {"type": "integer", "minimum": 0}, "value": {"$ref": "#/definitions/money"}, "page": {"type": "string"}, "slot": { "allOf":[ {"$ref": "#/definitions/slot"}, {"not": {"enum": ["RING1", "RING2"]}} ] }, "weight": {"type": "number"} }, "oneOf": [ { "properties": { "weapon": {"$ref": "#/definitions/weapon"}, "armor": false } }, { "properties": { "weapon": false, "armor": {"$ref": "#/definitions/armor"} } }, { "properties": {"weapon": false, "armor": false} } ], "required": [ "name", "count", "value", "weight" ], "type": "object" }, "type": "array" }, "equipment": {"$ref": "#/definitions/loadout"}, "favorites": { "additionalProperties": { "$ref": "#/definitions/loadout" } }, "wealth": {"$ref": "#/definitions/money"} }, "definitions": { "loadout": { "propertyNames": {"$ref": "#/definitions/slot"}, "properties": { "RING": false, "ONE_HAND": false, "TWO_HANDS": false }, "additionalProperties": {"type": "string"}, "type": "object" }, "slot": { "type": "string", "enum": [ "HEAD", "FACE", "NECK", "TORSO", "BODY", "WAIST", "SHOULDER", "ARM", "HAND", "RING", "RING1", "RING2", "FEET", "MAIN_HAND", "OFF_HAND", "ONE_HAND", "TWO_HANDS" ] }, "weapon": { "dependencies":{ "secondaryCriticalDamage": ["secondaryDamage"] }, "properties": { "attackBonus": {"type": "integer"}, "damageBonus": {"type": "integer"}, "damage": {"type": "string"}, "secondaryDamage": {"type": "string"}, "criticalThreat": {"type": "integer", "maximum": 20}, "criticalDamage": {"type": "integer", "minimum": 2}, "secondaryCriticalDamage": {"type": "integer", "minimum": 2}, "range": { "oneOf": [ {"type": "string", "const":"Melee"}, {"$ref": "file:common.json#/definitions/distance"} ] }, "type": { "type": "string", "enum": [ "Slashing", "Piercing", "Bludgeoning" ] } }, "required": [ "damage", "type", "range", "criticalThreat", "criticalDamage" ], "type": "object", "additionalProperties": false }, "armor": { "dependencies": { "speed": {"properties": {"type": {"not": {"const": "Shield"}}}} }, "properties": { "bonus": {"type": "integer", "minimum": 0}, "type": { "type": "string", "enum": ["Light", "Medium", "Heavy", "Shield"] }, "maxDex": {"type": "integer", "minimum": 0}, "checkPenalty": {"type": "integer", "maximum": 0}, "spellFailure": {"type": "integer", "minimum": 0, "maximum": 100}, "speed": {"type": "integer"} }, "required": [ "bonus", "type", "checkPenalty", "spellFailure" ], "type": "object", "additionalProperties": false }, "money": { "properties": { "pp": {"type": "integer", "minimum": 0}, "gp": {"type": "integer", "minimum": 0}, "sp": {"type": "integer", "minimum": 0}, "cp": {"type": "integer", "minimum": 0} }, "type": "object" } }, "type": "object", "additionalProperties": false }