|
|
@@ -85,66 +85,107 @@
|
|
|
"TWO_HANDS"
|
|
|
]
|
|
|
},
|
|
|
- "weapon": {
|
|
|
- "dependencies":{
|
|
|
- "secondaryCriticalDamage": ["secondaryDamage"]
|
|
|
+ "enchantable": {
|
|
|
+ "bonus": {
|
|
|
+ "type": "string",
|
|
|
+ "enum": [
|
|
|
+ "+1", "+2", "+3", "+4", "+5"
|
|
|
+ ]
|
|
|
},
|
|
|
"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"
|
|
|
- ]
|
|
|
+ "masterwork": {"type": "boolean"},
|
|
|
+ "bonus": {"$ref": "#/definitions/enchantable/bonus"},
|
|
|
+ "enchantments": {
|
|
|
+ "items": {
|
|
|
+ "oneOf": [
|
|
|
+ {
|
|
|
+ "properties": {
|
|
|
+ "name": {"type": "string"},
|
|
|
+ "effectiveBonus": {"$ref": "#/definitions/enchantable/bonus"}
|
|
|
+ },
|
|
|
+ "required": ["name", "effectiveBonus"],
|
|
|
+ "type": "object"
|
|
|
+ }
|
|
|
+ {
|
|
|
+ "properties": {
|
|
|
+ "name": {"type": "string"},
|
|
|
+ "adHocValue": {"$ref": "#/definitions/money"}
|
|
|
+ },
|
|
|
+ "required": ["name", "adHocValue"],
|
|
|
+ "type": "object"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "type": "array"
|
|
|
}
|
|
|
- },
|
|
|
- "required": [
|
|
|
- "damage",
|
|
|
- "type",
|
|
|
- "range",
|
|
|
- "criticalThreat",
|
|
|
- "criticalDamage"
|
|
|
- ],
|
|
|
- "type": "object",
|
|
|
- "additionalProperties": false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "weapon": {
|
|
|
+ "allOf": [
|
|
|
+ {"$ref": "#/definitions/enchantable"}
|
|
|
+ {
|
|
|
+ "dependencies":{
|
|
|
+ "secondaryCriticalDamage": ["secondaryDamage"]
|
|
|
+ },
|
|
|
+ "properties": {
|
|
|
+ "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"
|
|
|
+ }
|
|
|
+ ]
|
|
|
},
|
|
|
"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
|
|
|
+ "allOf": [
|
|
|
+ {"$ref": "#/definitions/enchantable"}
|
|
|
+ {
|
|
|
+ "dependencies": {
|
|
|
+ "speed": {"properties": {"type": {"not": {"const": "Shield"}}}}
|
|
|
+ },
|
|
|
+ "properties": {
|
|
|
+ "acBonus": {"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"
|
|
|
+ }
|
|
|
+ ]
|
|
|
},
|
|
|
"money": {
|
|
|
"properties": {
|