Browse Source

Adding new schemas for armor, weapon, enchantable.
Changing weight to integer.
Adding weapon and armor json stores.

Sam Jaffe 8 years ago
parent
commit
30a7e15ce2

+ 2 - 2
resources/Potato.json

@@ -69,7 +69,7 @@
   "alignment": "TN",
   "deity": "Obad-Hai",
   "size": "M",
-  "age": "25",
+  "age": 25,
   "gender": "F",
   "height": "5'0\"",
   "weight": 200,
@@ -113,7 +113,7 @@
         "name": "Quarterstaff",
         "count": 1,
         "countEquipped": 1,
-        "value": {"pp": 0, "gp": 600, "sp": 0, "cp": 0},
+        "value": {"pp": 0, "gp": 0, "sp": 0, "cp": 0},
         "page": "PH116",
         "slot": "TWO_HANDS",
         "weight": 4,

+ 17 - 0
resources/items/armor.json

@@ -0,0 +1,17 @@
+[
+  {
+    "name": "Full Plate Armor",
+    "value": {"pp": 0, "gp": 1500, "sp": 0, "cp": 0},
+    "page": "PH123",
+    "slot": "BODY",
+    "weight": 50,
+    "armor": {
+      "acBonus": 8,
+      "type": "Heavy",
+      "maxDex": 1,
+      "checkPenalty": -6,
+      "spellFailure": 35,
+      "speed": 15
+    }
+  }
+]

+ 17 - 0
resources/items/weapon.json

@@ -0,0 +1,17 @@
+[
+  {
+    "name": "Quarterstaff",
+    "value": {"pp": 0, "gp": 0, "sp": 0, "cp": 0},
+    "page": "PH116",
+    "slot": "TWO_HANDS",
+    "weight": 4,
+    "weapon": {
+      "damage": "1d6",
+      "secondaryDamage": "1d6",
+      "criticalThreat": 20,
+      "criticalDamage": 2,
+      "range": "Melee",
+      "type": "Bludgeoning"
+    }
+  }
+]

+ 28 - 0
schema/armor.json

@@ -0,0 +1,28 @@
+{
+  "allOf": [
+    {"$ref": "file:enchantable.json#"},
+    {
+      "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"
+    }
+  ]
+}

+ 1 - 1
schema/character.json

@@ -21,7 +21,7 @@
         "F", "D", "T", "S", "M", "L", "H", "G", "C"
       ]
     },
-    "age": {"type": "string"},
+    "age": {"type": "integer"},
     "gender": {"type": "string", "enum": ["M", "F", "N"]},
     "height": {"type": "string"},
     "weight": {"type": "number"},

+ 9 - 0
schema/common.json

@@ -5,6 +5,15 @@
       "type": "integer",
       "exclusiveMinimum": 0,
       "multipleOf": 5
+    },
+    "money": {
+      "properties": {
+        "pp": {"type": "integer", "minimum": 0},
+        "gp": {"type": "integer", "minimum": 0},
+        "sp": {"type": "integer", "minimum": 0},
+        "cp": {"type": "integer", "minimum": 0}
+      },
+      "type": "object"
     }
   }
 }

+ 55 - 0
schema/enchantable.json

@@ -0,0 +1,55 @@
+{
+  "properties": {
+    "masterwork": {"type": "boolean"},
+    "bonus": {"$ref": "#/definitions/bonus"},
+    "enchantments": {
+      "items": {
+        "dependencies": {
+          "effectiveBonus": {"properties": {"adHocValue": false}},
+          "adHocValue": {"properties": {"effectiveBonus": false}}
+        },
+        "properties": {
+          "name": {"type": "string"},
+          "effectiveBonus": {"$ref": "#/definitions/bonus"},
+          "adHocValue": {"$ref": "#/definitions/money"},
+          "canAttachTo": {
+            "items": {"$ref": "#/definitions/attachCriteria"},
+            "type": "array"
+          }
+        },
+        "oneOf": [
+          {"required": ["name", "effectiveBonus"]},
+          {"required": ["name", "adHocValue"]}
+        ]
+        "type": "object"
+      },
+      "type": "array"
+    }
+  },
+  "definitions": {
+    "bonus": {
+      "type": "string",
+      "enum": ["+1", "+2", "+3", "+4", "+5"]
+    },
+    "attachCriteria": {
+      "items": {
+        "enum": [
+          "Slashing",
+          "Piercing",
+          "Bludgeoning",
+          "Ranged",
+          "Armor",
+          "Shield",
+          "Light",
+          "Medium",
+          "Heavy",
+          "One-Handed",
+          "Two-Handed"
+        ],
+        "type": "string",
+        "uniqueItems": true
+      },
+      "type": "array"
+    }
+  }
+}

+ 4 - 115
schema/inventory.json

@@ -7,7 +7,7 @@
           "name": {"type": "string"},
           "count": {"type": "integer", "minimum": 1},
           "countEquipped": {"type": "integer", "minimum": 0},
-          "value": {"$ref": "#/definitions/money"},
+          "value": {"$ref": "file:common.json#/definitions/money"},
           "page": {"type": "string"},
           "slot": {
             "allOf":[
@@ -20,14 +20,14 @@
         "oneOf": [
           {
             "properties": {
-              "weapon": {"$ref": "#/definitions/weapon"},
+              "weapon": {"$ref": "file:weapon.json#"},
               "armor": false
             }
           },
           {
             "properties": {
               "weapon": false,
-              "armor": {"$ref": "#/definitions/armor"}
+              "armor": {"$ref": "file:armor.json#"}
             }
           },
           {
@@ -50,7 +50,7 @@
         "$ref": "#/definitions/loadout"
       }
     },
-    "wealth": {"$ref": "#/definitions/money"}
+    "wealth": {"$ref": "file:common.json#/definitions/money"}
   },
   "definitions": {
     "loadout": {
@@ -84,117 +84,6 @@
         "ONE_HAND",
         "TWO_HANDS"
       ]
-    },
-    "enchantable": {
-      "bonus": {
-        "type": "string",
-        "enum": [
-          "+1", "+2", "+3", "+4", "+5"
-        ]
-      },
-      "properties": {
-        "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"
-        }
-      }
-    },
-    "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": {
-      "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": {
-        "pp": {"type": "integer", "minimum": 0},
-        "gp": {"type": "integer", "minimum": 0},
-        "sp": {"type": "integer", "minimum": 0},
-        "cp": {"type": "integer", "minimum": 0}
-      },
-      "type": "object"
     }
   },
   "type": "object",

+ 39 - 0
schema/weapon.json

@@ -0,0 +1,39 @@
+{
+  "allOf": [
+    {"$ref": "file:enchantable.json#"},
+    {
+      "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"
+    }
+  ]
+}