spell_schema.json 4.1 KB

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