소스 검색

Add schema for spell objects.

Sam Jaffe 8 년 전
부모
커밋
a7b4626e1c
1개의 변경된 파일172개의 추가작업 그리고 0개의 파일을 삭제
  1. 172 0
      schema/spell_schema.json

+ 172 - 0
schema/spell_schema.json

@@ -0,0 +1,172 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "properties": {
+    "allowsSpellResistance": {
+      "type": "boolean"
+    },
+    "area": {
+      "oneOf"[
+        {
+          "properties":{
+            "@type": {"type": "string", "enum": ["Line"]},
+            "distance": {"type": "integer"}
+          }
+        },
+        {
+          "properties":{
+            "@type": {"type": "string", "enum": ["Emission"]},
+            "emit": {"type": "string", "enum": ["BURST", "EMANATION", "SPREAD", "NONE"]}
+          }
+        },
+        {
+          "properties":{
+            "@type": {"type": "string", "enum": ["Sphere"]},
+            "radius": {"type": "integer"},
+            "emit": {"type": "string", "enum": ["BURST", "EMANATION", "SPREAD", "NONE"]},
+            "aroundYou": {"type": "boolean"}
+          }
+        },
+        {
+          "properties":{
+            "@type": {"type": "string", "enum": ["Cylinder"]},
+            "radius": {"type": "integer"},
+            "height": {"type": "integer"}
+          }
+        }
+      ]
+    },
+    "castingTime": {
+      "type": "string"
+    },
+    "classToLevel": {
+      "patternProperties": {
+        "^.*$": {"type": "integer"}
+      },
+      "type": "object"
+    },
+    "components": {
+      "items": { 
+        "type": "string",
+        "enum": ["V", "S", "M", "F", "DF", "M_DF", "F_DF", "XP"]
+      },
+      "type": "array"
+    },
+    "description": {
+      "type": "string"
+    },
+    "duration": {
+      "oneOf":[
+        {"type": "string"},
+        {
+          "dependencies":{
+            "per": ["step"]
+          }
+          "properties"{
+            "duration": {"type": "integer"},
+            "per": {"type": "integer"},
+            "step": {"type": "integer"},
+            "unit":{
+              "type": "string",
+              "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"},
+        "count": {"type": "integer"},
+        "format": {"type": "string"},
+        "per": {"type": "integer"},
+        "resolved": {"type": "string"},
+        "step": {"type": "integer"},
+        "upto": {"type": "integer"}
+      },
+      "required": ["format"],
+      "type": "object",
+      "additionalProperties": false
+    },
+    "keywords": {
+      "items": {"type": "string"},
+      "type": "array"
+    },
+    "name": {
+      "type": "string"
+    },
+    "range": {
+      "oneOf": [
+        { 
+          "type": "string",
+          "enum": ["Touch", "Close", "Medium", "Long", "Unlimited"]
+        },
+        {
+          "dependencies": {
+            "per": ["step"]
+          }
+          "properties": {
+            "name": {"type": "string"},
+            "range": {"type": "integer"},
+            "per": {"type": "integer"},
+            "step": {"type": "integer"}
+          },
+          "type": "object",
+          "required": ["name", "range"],
+          "additionalProperties": false
+        },
+      ]
+    },
+    "savingThrow": {
+      "type": "string"
+    },
+    "school": {
+      "type": "string"
+    },
+    "subSchool": {
+      "type": "string"
+    },
+    "target": {
+      "oneOf":[
+        {
+          "type": "string"
+        },
+        {
+          "properties": {
+            "count": {"type": "integer"},
+            "format": {"type": "string"},
+            "per": {"type": "integer"},
+            "resolved": {"type": "string"},
+            "step": {"type": "integer"},
+          },
+          "required": ["format", "resolved", "count", "per", "step"],
+          "type": "object",
+          "additionalProperties": false
+       }
+      ]
+    }
+  },
+  "required": [
+    "school",
+    "name",
+    "description",
+    "castingTime",
+    "effect",
+    "classToLevel",
+    "duration",
+    "range",
+    "components",
+    "keywords",
+    "savingThrow"
+  ],
+  "type": "object"
+}