spell.json 3.9 KB

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