spell.json 4.1 KB

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