moddables.json 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. {
  2. /// These are objects that have subtypes that change various aspects of their mechanics
  3. /// Should be made configurable (either directly or via other parts of modding system ASAP)
  4. /// Editing these objects either directly or via mod may have negative effect on game since they are handled by engine
  5. // subtype: artifact ID
  6. "artifact" : {
  7. "index" :5,
  8. "handler": "artifact",
  9. "base" : {
  10. "base" : {
  11. "visitableFrom" : [ "+++", "+-+", "+++" ],
  12. "mask" : [ "VV", "VA"]
  13. }
  14. }
  15. },
  16. // subtype: hero CLASS (not hero).
  17. "hero" : {
  18. "index" :34,
  19. "handler": "hero",
  20. "base" : {
  21. "base" : {
  22. "visitableFrom" : [ "+++", "+-+", "+++" ],
  23. "mask" : [ "VV", "AV"]
  24. }
  25. }
  26. },
  27. // subtype: creatures
  28. "monster" : {
  29. "index" :54,
  30. "handler": "monster",
  31. "base" : {
  32. "base" : {
  33. "visitableFrom" : [ "+++", "+-+", "+++" ],
  34. "mask" : [ "VV", "VA"]
  35. }
  36. }
  37. },
  38. // subtype: resource ID
  39. "resource" : {
  40. "index" :79,
  41. "handler": "resource",
  42. "base" : {
  43. "base" : {
  44. "visitableFrom" : [ "+++", "+-+", "+++" ],
  45. "mask" : [ "VA" ]
  46. }
  47. },
  48. "types" : {
  49. "wood" : { "index" : 0, "rmg" : { "value" : 1400, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTwood0.def" } } },
  50. "mercury" : { "index" : 1, "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTmerc0.def" } } },
  51. "ore" : { "index" : 2, "rmg" : { "value" : 1400, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTore0.def" } } },
  52. "sulfur" : { "index" : 3, "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTsulf0.def" } } },
  53. "crystal" : { "index" : 4, "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTcrys0.def" } } },
  54. "gems" : { "index" : 5, "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTgems0.def" } } },
  55. "gold" : { "index" : 6, "rmg" : { "value" : 750, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTgold0.def" } } },
  56. "mithril" : { "index" : 7 } // TODO: move to WoG?
  57. }
  58. },
  59. // subtype: faction
  60. "town" : {
  61. "index" :98,
  62. "handler": "town",
  63. "base" : {
  64. "filters" : {
  65. // village image - fort not present
  66. "village" : [ "noneOf", [ "fort" ] ],
  67. // fort image - fort is here but not capitol
  68. "fort" : [ "allOf", [ "fort" ], [ "noneOf", ["capitol" ] ] ],
  69. // capitol image only when capitol is built
  70. "capitol" : [ "capitol" ]
  71. },
  72. // "faction" : "stringID", // should be set by engine
  73. "base" : {
  74. "visitableFrom" : [ "---", "+++", "+++" ],
  75. "mask" : [
  76. "VVVVVV", // a LOT of just visible rows due to towns like Tower
  77. "VVVVVV",
  78. "VVVVVV",
  79. "VVBBBV",
  80. "VBBBBB",
  81. "VBBABB"
  82. ]
  83. }
  84. }
  85. },
  86. // subtype: one of 3 possible boats
  87. "boat" : {
  88. "index" :8,
  89. "handler": "boat",
  90. "base" : {
  91. "base" : {
  92. "visitableFrom" : [ "+++", "+-+", "+++" ],
  93. "mask" : [ "VVV", "VAV" ]
  94. }
  95. },
  96. "types" : {
  97. "evil" : { "index" : 0, "rmg" : { "mapLimit" : 64 } },
  98. "good" : { "index" : 1, "rmg" : { "mapLimit" : 64 } },
  99. "neutral" : { "index" : 2, "rmg" : { "mapLimit" : 64 } },
  100. }
  101. },
  102. // subtype: color of guard
  103. "borderGuard" : {
  104. "index" :9,
  105. "handler": "borderGuard",
  106. "types" : {
  107. "lblue" : { "index" : 0 },
  108. "green" : { "index" : 1 },
  109. "red" : { "index" : 2 },
  110. "dblue" : { "index" : 3 },
  111. "brown" : { "index" : 4 },
  112. "purple" : { "index" : 5 },
  113. "white" : { "index" : 6 },
  114. "black" : { "index" : 7 }
  115. }
  116. },
  117. "borderGate" : {
  118. "index" :212,
  119. "handler": "borderGate",
  120. "types" : {
  121. "lblue" : { "index" : 0 },
  122. "green" : { "index" : 1 },
  123. "red" : { "index" : 2 },
  124. "dblue" : { "index" : 3 },
  125. "brown" : { "index" : 4 },
  126. "purple" : { "index" : 5 },
  127. "white" : { "index" : 6 },
  128. "black" : { "index" : 7 }
  129. }
  130. },
  131. "keymasterTent" : {
  132. "index" :10,
  133. "handler": "keymaster",
  134. "types" : {
  135. "lblue" : { "index" : 0 },
  136. "green" : { "index" : 1 },
  137. "red" : { "index" : 2 },
  138. "dblue" : { "index" : 3 },
  139. "brown" : { "index" : 4 },
  140. "purple" : { "index" : 5 },
  141. "white" : { "index" : 6 },
  142. "black" : { "index" : 7 }
  143. }
  144. },
  145. //Seer Hut object is set off bottom-right corner, need to fix that
  146. "seerHut" : {
  147. "index" :83,
  148. "handler": "seerHut",
  149. "base" : {
  150. "base" : {
  151. "visitableFrom" : [ "---", "+++", "+++" ],
  152. "mask" : [ "VVV", "VVV", "VAV" ]
  153. }
  154. },
  155. "types" : {
  156. "0" : { "index" : 0 },
  157. "1" : { "index" : 1 },
  158. "2" : { "index" : 2 }
  159. }
  160. },
  161. // subtype: different revealed areas
  162. "cartographer" : {
  163. "index" :13,
  164. "handler": "cartographer",
  165. "types" : {
  166. "water" : { "index" : 0, "rmg" : { "zoneLimit" : 1, "value" : 5000, "rarity" : 20 } },
  167. "land" : { "index" : 1, "rmg" : { "zoneLimit" : 1, "value" : 10000, "rarity" : 20 } },
  168. "subterra" : { "index" : 2, "rmg" : { "zoneLimit" : 1, "value" : 7500, "rarity" : 20 } }
  169. }
  170. },
  171. // subtype: resource ID
  172. "mine" : {
  173. "index" :53,
  174. "handler": "mine",
  175. "types" : {
  176. "sawmill" : { "index" : 0, "rmg" : { "value" : 1500 } },
  177. "alchemistLab" : { "index" : 1, "rmg" : { "value" : 3500 } },
  178. "orePit" : { "index" : 2, "rmg" : { "value" : 1500 } },
  179. "sulfurDune" : { "index" : 3, "rmg" : { "value" : 3500 } },
  180. "crystalCavern" : { "index" : 4, "rmg" : { "value" : 3500 } },
  181. "gemPond" : { "index" : 5, "rmg" : { "value" : 3500 } },
  182. "goldMine" : { "index" : 6, "rmg" : { "value" : 7000 } },
  183. "abandoned" : { "index" : 7}
  184. }
  185. },
  186. "abandonedMine" : {
  187. "index" :220,
  188. "handler": "mine",
  189. "types" : {
  190. "mine" : { "index" : 7 }
  191. }
  192. },
  193. "garrisonHorizontal": {
  194. "index" :33,
  195. "handler": "garrison",
  196. "types":{
  197. "normal":{"index": 0},
  198. "antiMagic":{"index": 1}
  199. }
  200. },
  201. "garrisonVertical": {
  202. "index" :219,
  203. "handler": "garrison",
  204. "types":{
  205. "normal":{"index": 0},
  206. "antiMagic":{"index": 1}
  207. }
  208. },
  209. // Subtype: paired monoliths
  210. "monolithOneWayEntrance" : {
  211. "index" :43,
  212. "handler": "monolith",
  213. "types" : {
  214. "monolith1" : { "index" : 0 },
  215. "monolith2" : { "index" : 1 },
  216. "monolith3" : { "index" : 2 },
  217. "monolith4" : { "index" : 3 },
  218. "monolith5" : { "index" : 4 },
  219. "monolith6" : { "index" : 5 },
  220. "monolith7" : { "index" : 6 },
  221. "monolith8" : { "index" : 7 }
  222. }
  223. },
  224. "monolithOneWayExit" : {
  225. "index" :44,
  226. "handler": "monolith",
  227. "types" : {
  228. "monolith1" : { "index" : 0 },
  229. "monolith2" : { "index" : 1 },
  230. "monolith3" : { "index" : 2 },
  231. "monolith4" : { "index" : 3 },
  232. "monolith5" : { "index" : 4 },
  233. "monolith6" : { "index" : 5 },
  234. "monolith7" : { "index" : 6 },
  235. "monolith8" : { "index" : 7 }
  236. }
  237. },
  238. "monolithTwoWay" : {
  239. "index" :45,
  240. "handler": "monolith",
  241. "types" : {
  242. "monolith1" : { "index" : 0 },
  243. "monolith2" : { "index" : 1 },
  244. "monolith3" : { "index" : 2 },
  245. "monolith4" : { "index" : 3 },
  246. "monolith5" : { "index" : 4 },
  247. "monolith6" : { "index" : 5 },
  248. "monolith7" : { "index" : 6 },
  249. "monolith8" : { "index" : 7 }
  250. }
  251. },
  252. // subtype: level
  253. "randomDwellingLvl" : {
  254. "index" :217, "handler": "randomDwelling",
  255. "types" : {
  256. "objectLvl1" : { "index" : 0},
  257. "objectLvl2" : { "index" : 1},
  258. "objectLvl3" : { "index" : 2},
  259. "objectLvl4" : { "index" : 3},
  260. "objectLvl5" : { "index" : 4},
  261. "objectLvl6" : { "index" : 5},
  262. "objectLvl7" : { "index" : 6}
  263. }
  264. },
  265. // subtype: faction ID
  266. "randomDwellingFaction" : {
  267. "index" :218,
  268. "handler": "randomDwelling",
  269. "types" : {
  270. "objectCastle" : { "index" : 0},
  271. "objectRampart" : { "index" : 1},
  272. "objectTower" : { "index" : 2},
  273. "objectInferno" : { "index" : 3},
  274. "objectNecropolis" : { "index" : 4},
  275. "objectDungeon" : { "index" : 5},
  276. "objectStronghold" : { "index" : 6},
  277. "objectFortress" : { "index" : 7},
  278. "objectConflux" : { "index" : 8},
  279. }
  280. },
  281. // don't have subtypes (at least now), but closely connected to this objects
  282. "spellScroll" : {
  283. "index" :93,
  284. "handler": "artifact",
  285. "types" : {
  286. "object" : {
  287. "index" : 0,
  288. "templates" : {
  289. "normal" : {
  290. "visitableFrom" : [ "+++", "+-+", "+++" ],
  291. "mask" : [ "VA" ],
  292. "animation" : "AVA0001.def"
  293. }
  294. }
  295. }
  296. }
  297. },
  298. "heroPlaceholder" : { "index" :214, "handler": "heroPlaceholder", "types" : { "object" : { "index" : 0 } } }
  299. }