spell.json 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. {
  2. "$schema": "http://json-schema.org/draft-06/schema#",
  3. "properties": {
  4. "allowsSpellResistance": {
  5. "type": "boolean"
  6. },
  7. "area": {
  8. "oneOf":[
  9. {"$ref": "#/definitions/area/Line"},
  10. {"$ref": "#/definitions/area/Emission"},
  11. {"$ref": "#/definitions/area/Sphere"},
  12. {"$ref": "#/definitions/area/Cylinder"}
  13. ]
  14. },
  15. "castingTime": {
  16. "type": "string"
  17. },
  18. "classToLevel": {
  19. "patternProperties": {
  20. "^.*$": {"type": "integer", "minimum":0, "maximum":9}
  21. },
  22. "type": "object"
  23. },
  24. "components": {
  25. "items": {
  26. "enum": ["V", "S", "M", "F", "DF", "M_DF", "F_DF", "XP"]
  27. },
  28. "type": "array"
  29. },
  30. "description": {
  31. "type": "string"
  32. },
  33. "duration": {
  34. "oneOf":[
  35. {"type": "string"},
  36. {"$ref": "#/definitions/duration"}
  37. ]
  38. },
  39. "effect": {"$ref": "#/definitions/effect"},
  40. "keywords": {
  41. "items": {"type": "string"},
  42. "type": "array"
  43. },
  44. "name": {
  45. "type": "string"
  46. },
  47. "range": {
  48. "oneOf": [
  49. {"enum": ["Touch", "Close", "Medium", "Long", "Unlimited"]},
  50. {"$ref": "#/definitions/range"}
  51. ]
  52. },
  53. "savingThrow": {
  54. "type": "string"
  55. },
  56. "school": {
  57. "type": "string"
  58. },
  59. "subSchool": {
  60. "type": "string"
  61. },
  62. "target": {
  63. "oneOf":[
  64. {"type": "string"},
  65. {"$ref": "#/definitions/target"}
  66. ]
  67. }
  68. },
  69. "required": [
  70. "school",
  71. "name",
  72. "description",
  73. "castingTime",
  74. "effect",
  75. "classToLevel",
  76. "duration",
  77. "range",
  78. "components",
  79. "keywords",
  80. "savingThrow"
  81. ],
  82. "type": "object",
  83. "definitions": {
  84. "area": {
  85. "Line": {
  86. "properties":{
  87. "@type": {"const": "Line"},
  88. "distance": {"type": "integer"}
  89. },
  90. "additionalProperties": false
  91. },
  92. "Emission": {
  93. "properties":{
  94. "@type": {"const": "Emission"},
  95. "emit": {"enum": ["BURST", "EMANATION", "SPREAD", "NONE"]}
  96. },
  97. "additionalProperties": false
  98. },
  99. "Sphere": {
  100. "properties":{
  101. "@type": {"const": "Sphere"},
  102. "radius": {"type": "integer"},
  103. "emit": {"enum": ["BURST", "EMANATION", "SPREAD", "NONE"]},
  104. "aroundYou": {"type": "boolean"}
  105. },
  106. "additionalProperties": false
  107. },
  108. "Cylinder": {
  109. "properties":{
  110. "@type": {"const": "Cylinder"},
  111. "radius": {"type": "integer"},
  112. "height": {"type": "integer"}
  113. },
  114. "additionalProperties": false
  115. }
  116. },
  117. "duration": {
  118. "dependencies":{
  119. "per": ["step"]
  120. },
  121. "properties":{
  122. "duration": {"type": "integer"},
  123. "per": {"type": "integer"},
  124. "step": {"type": "integer"},
  125. "unit":{
  126. "enum": ["round", "minute", "hour", "day"]
  127. }
  128. },
  129. "required": ["unit", "duration"],
  130. "type": "object",
  131. "additionalProperties": false
  132. },
  133. "effect": {
  134. "dependencies":{
  135. "beyond":["per", "resolved"],
  136. "count":["resolved"],
  137. "per":["resolved"],
  138. "step":["per", "resolved"],
  139. "upto":["per", "resolved"]
  140. },
  141. "properties": {
  142. "beyond": {"type": "integer"},
  143. "count": {"type": "integer"},
  144. "format": {"type": "string"},
  145. "per": {"type": "integer"},
  146. "resolved": {"type": "string"},
  147. "step": {"type": "integer"},
  148. "upto": {"type": "integer"}
  149. },
  150. "required": ["format"],
  151. "type": "object",
  152. "additionalProperties": false
  153. },
  154. "range": {
  155. "dependencies": {
  156. "per": ["step"]
  157. },
  158. "properties": {
  159. "name": {"type": "string"},
  160. "range": {"type": "integer"},
  161. "per": {"type": "integer"},
  162. "step": {"type": "integer"}
  163. },
  164. "type": "object",
  165. "required": ["name", "range"],
  166. "additionalProperties": false
  167. },
  168. "target": {
  169. "properties": {
  170. "count": {"type": "integer"},
  171. "format": {"type": "string"},
  172. "per": {"type": "integer"},
  173. "resolved": {"type": "string"},
  174. "step": {"type": "integer"}
  175. },
  176. "required": ["format", "resolved", "count", "per", "step"],
  177. "type": "object",
  178. "additionalProperties": false
  179. }
  180. }
  181. }