moddables.json 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  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. "removable": true,
  11. "base" : {
  12. "visitableFrom" : [ "+++", "+-+", "+++" ],
  13. "mask" : [ "VV", "VA"]
  14. },
  15. "sounds" : {
  16. "visit" : ["TREASURE"],
  17. "removal" : [ "PICKUP01", "PICKUP02", "PICKUP03", "PICKUP04", "PICKUP05", "PICKUP06", "PICKUP07" ]
  18. }
  19. }
  20. },
  21. // subtype: hero CLASS (not hero).
  22. "hero" : {
  23. "index" :34,
  24. "handler": "hero",
  25. "base" : {
  26. "aiValue" : 7500,
  27. "removable": true,
  28. "base" : {
  29. "visitableFrom" : [ "+++", "+-+", "+++" ],
  30. "mask" : [ "VVV", "VAV"]
  31. },
  32. "sounds" : {
  33. "removal" : ["KILLFADE"]
  34. }
  35. }
  36. },
  37. // subtype: creatures
  38. "monster" : {
  39. "index" :54,
  40. "handler": "monster",
  41. "base" : {
  42. "removable": true,
  43. "base" : {
  44. "visitableFrom" : [ "+++", "+-+", "+++" ],
  45. "mask" : [ "VV", "VA"]
  46. },
  47. "sounds" : {
  48. "removal" : ["KILLFADE"]
  49. }
  50. }
  51. },
  52. "randomResource":
  53. {
  54. "index" :76,
  55. "handler": "randomResource",
  56. "base" : {
  57. "removable": true,
  58. "base" : {
  59. "visitableFrom" : [ "+++", "+-+", "+++" ],
  60. "mask" : [ "VA" ]
  61. }
  62. },
  63. "types" : {
  64. "randomResource" : {
  65. "index" : 0,
  66. "rmg" : {
  67. "value" : 1500,
  68. "rarity" : 2000
  69. },
  70. "templates" :
  71. {
  72. "normal" : {
  73. "animation" : "AVTrndm0",
  74. "visitableFrom" : [ "+++", "+-+", "+++" ],
  75. "mask" : [ "VV", "VA"]
  76. }
  77. }
  78. }
  79. }
  80. },
  81. // subtype: resource ID
  82. "resource" : {
  83. "index" :79,
  84. "handler": "resource",
  85. "lastReservedIndex" : 6,
  86. "base" : {
  87. "removable": true,
  88. "base" : {
  89. "visitableFrom" : [ "+++", "+-+", "+++" ],
  90. "mask" : [ "VA" ]
  91. }
  92. },
  93. "types" : {
  94. "wood" : { "index" : 0, "aiValue" : 1400, "resource" : "wood", "amounts" : [ 6,7,8,9,10], "rmg" : { "value" : 1400, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTwood0.def" } } },
  95. "ore" : { "index" : 2, "aiValue" : 1400, "resource" : "ore", "amounts" : [ 6,7,8,9,10], "rmg" : { "value" : 1400, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTore0.def" } } },
  96. "mercury" : { "index" : 1, "aiValue" : 2000, "resource" : "mercury", "amounts" : [ 3,4,5], "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTmerc0.def" } } },
  97. "sulfur" : { "index" : 3, "aiValue" : 2000, "resource" : "sulfur", "amounts" : [ 3,4,5], "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTsulf0.def" } } },
  98. "crystal" : { "index" : 4, "aiValue" : 2000, "resource" : "crystal", "amounts" : [ 3,4,5], "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTcrys0.def" } } },
  99. "gems" : { "index" : 5, "aiValue" : 2000, "resource" : "gems", "amounts" : [ 3,4,5], "rmg" : { "value" : 2000, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTgems0.def" } } },
  100. "gold" : { "index" : 6, "aiValue" : 750, "resource" : "gold", "amounts" : [ 5,6,7,8,9,10], "amountMultiplier" : 100, "rmg" : { "value" : 750, "rarity" : 300 }, "templates" : { "res" : { "animation" : "AVTgold0.def" } } }
  101. }
  102. },
  103. // subtype: faction
  104. "town" : {
  105. "index" :98,
  106. "handler": "town",
  107. "base" : {
  108. "aiValue" : 20000,
  109. "filters" : {
  110. // village image - fort not present
  111. "village" : [ "noneOf", [ "fort" ] ],
  112. // fort image - fort is here but not capitol
  113. "fort" : [ "allOf", [ "fort" ], [ "noneOf", ["capitol" ] ] ],
  114. // capitol image only when capitol is built
  115. "capitol" : [ "capitol" ]
  116. },
  117. // "faction" : "stringID", // should be set by engine
  118. "base" : {
  119. "visitableFrom" : [ "---", "+++", "+++" ],
  120. "mask" : [
  121. "VVVVVV", // a LOT of just visible rows due to towns like Tower
  122. "VVVVVV",
  123. "VVVVVV",
  124. "VVBBBV",
  125. "VBBBBB",
  126. "VBBABB"
  127. ]
  128. }
  129. }
  130. },
  131. // subtype: one of 3 possible boats
  132. "boat" : {
  133. "index" :8,
  134. "handler": "boat",
  135. "lastReservedIndex" : 2,
  136. "base" : {
  137. "aiValue" : 0,
  138. "removable": true,
  139. "layer" : "sail",
  140. "onboardAssaultAllowed" : true,
  141. "onboardVisitAllowed" : true,
  142. "base" : {
  143. "visitableFrom" : [ "+++", "+-+", "+++" ],
  144. "mask" : [ "VVV", "VAV" ]
  145. }
  146. },
  147. "types" : {
  148. "boatNecropolis" : {
  149. "index" : 0,
  150. "compatibilityIdentifiers" : [ "evil" ],
  151. "actualAnimation" : "AB01_.def",
  152. "overlayAnimation" : "ABM01_.def",
  153. "flagAnimations" : ["ABF01L", "ABF01G", "ABF01R", "ABF01D", "ABF01B", "ABF01P", "ABF01W", "ABF01K"]
  154. },
  155. "boatCastle" : {
  156. "index" : 1,
  157. "compatibilityIdentifiers" : [ "good" ],
  158. "actualAnimation" : "AB02_.def",
  159. "overlayAnimation" : "ABM02_.def",
  160. "flagAnimations" : ["ABF02L", "ABF02G", "ABF02R", "ABF02D", "ABF02B", "ABF02P", "ABF02W", "ABF02K"]
  161. },
  162. "boatFortress" : {
  163. "index" : 2,
  164. "compatibilityIdentifiers" : [ "neutral" ],
  165. "actualAnimation" : "AB03_.def",
  166. "overlayAnimation" : "ABM03_.def",
  167. "flagAnimations" : ["ABF03L", "ABF03G", "ABF03R", "ABF03D", "ABF03B", "ABF03P", "ABF03W", "ABF03K"]
  168. },
  169. }
  170. },
  171. // subtype: color of guard
  172. "borderGuard" : {
  173. "index" :9,
  174. "handler": "borderGuard",
  175. "lastReservedIndex" : 7,
  176. "base" : {
  177. "aiValue" : 0,
  178. "removable": true,
  179. "sounds" : {
  180. "visit" : ["CAVEHEAD"],
  181. "removal" : [ "PICKUP01", "PICKUP02", "PICKUP03", "PICKUP04", "PICKUP05", "PICKUP06", "PICKUP07" ]
  182. }
  183. },
  184. "types" : {
  185. "lblue" : { "index" : 0 },
  186. "green" : { "index" : 1 },
  187. "red" : { "index" : 2 },
  188. "dblue" : { "index" : 3 },
  189. "brown" : { "index" : 4 },
  190. "purple" : { "index" : 5 },
  191. "white" : { "index" : 6 },
  192. "black" : { "index" : 7 }
  193. }
  194. },
  195. "borderGate" : {
  196. "index" :212,
  197. "handler": "borderGate",
  198. "lastReservedIndex" : 7,
  199. "base" : {
  200. "aiValue" : 0,
  201. "sounds" : {
  202. "visit" : ["CAVEHEAD"]
  203. }
  204. },
  205. "types" : {
  206. "lblue" : { "index" : 0 },
  207. "green" : { "index" : 1 },
  208. "red" : { "index" : 2 },
  209. "dblue" : { "index" : 3 },
  210. "brown" : { "index" : 4 },
  211. "purple" : { "index" : 5 },
  212. "white" : { "index" : 6 },
  213. "black" : { "index" : 7 }
  214. }
  215. },
  216. "keymasterTent" : {
  217. "index" :10,
  218. "handler": "keymaster",
  219. "lastReservedIndex" : 7,
  220. "base" : {
  221. "aiValue" : 10000,
  222. "sounds" : {
  223. "visit" : ["CAVEHEAD"]
  224. }
  225. },
  226. "types" : {
  227. "lblue" : { "index" : 0 },
  228. "green" : { "index" : 1 },
  229. "red" : { "index" : 2 },
  230. "dblue" : { "index" : 3 },
  231. "brown" : { "index" : 4 },
  232. "purple" : { "index" : 5 },
  233. "white" : { "index" : 6 },
  234. "black" : { "index" : 7 }
  235. }
  236. },
  237. //Seer Hut object is set off bottom-right corner, need to fix that
  238. "seerHut" : {
  239. "index" :83,
  240. "handler": "seerHut",
  241. "lastReservedIndex" : 2,
  242. "base" : {
  243. "aiValue" : 10000,
  244. "base" : {
  245. "visitableFrom" : [ "---", "+++", "+++" ],
  246. "mask" : [ "VVV", "VVV", "VAV" ]
  247. },
  248. "sounds" : {
  249. "visit" : ["QUEST"]
  250. }
  251. },
  252. "types" : {
  253. "0" : { "index" : 0 },
  254. "1" : { "index" : 1 },
  255. "2" : { "index" : 2 }
  256. }
  257. },
  258. // subtype: resource ID
  259. "mine" : {
  260. "index" :53,
  261. "handler": "mine",
  262. "lastReservedIndex" : 7,
  263. "base" : {
  264. "sounds" : {
  265. "visit" : ["FLAGMINE"]
  266. }
  267. },
  268. "types" : {
  269. "sawmill" : {
  270. "index" : 0,
  271. "aiValue" : 1500,
  272. "rmg" : {
  273. "value" : 1500
  274. },
  275. "sounds" : {
  276. "ambient" : ["LOOPLUMB"]
  277. },
  278. "resource" : "wood",
  279. "defaultQuantity": 2
  280. },
  281. "alchemistLab" : {
  282. "index" : 1,
  283. "aiValue" : 3500,
  284. "rmg" : {
  285. "value" : 3500
  286. },
  287. "sounds" : {
  288. "ambient" : ["LOOPSTAR"]
  289. },
  290. "resource" : "mercury",
  291. "defaultQuantity": 1
  292. },
  293. "orePit" : {
  294. "index" : 2,
  295. "aiValue" : 1500,
  296. "rmg" : {
  297. "value" : 1500
  298. },
  299. "sounds" : {
  300. "ambient" : ["LOOPSULF"]
  301. },
  302. "resource" : "ore",
  303. "defaultQuantity": 2
  304. },
  305. "sulfurDune" : {
  306. "index" : 3,
  307. "aiValue" : 3500,
  308. "rmg" : {
  309. "value" : 3500
  310. },
  311. "sounds" : {
  312. "ambient" : ["LOOPSULF"]
  313. },
  314. "resource" : "sulfur",
  315. "defaultQuantity": 1
  316. },
  317. "crystalCavern" : {
  318. "index" : 4,
  319. "aiValue" : 3500,
  320. "rmg" : {
  321. "value" : 3500
  322. },
  323. "sounds" : {
  324. "ambient" : ["LOOPCRYS"]
  325. },
  326. "battleground": "subterranean",
  327. "resource" : "crystal",
  328. "defaultQuantity": 1
  329. },
  330. "gemPond" : {
  331. "index" : 5,
  332. "aiValue" : 3500,
  333. "rmg" : {
  334. "value" : 3500
  335. },
  336. "sounds" : {
  337. "ambient" : ["LOOPGEMP"]
  338. },
  339. "resource" : "gems",
  340. "defaultQuantity": 1
  341. },
  342. "goldMine" : {
  343. "index" : 6,
  344. "aiValue" : 7000,
  345. "rmg" : {
  346. "value" : 7000
  347. },
  348. "sounds" : {
  349. "ambient" : ["LOOPMINE"]
  350. },
  351. "battleground": "subterranean",
  352. "resource" : "gold",
  353. "defaultQuantity": 1000
  354. },
  355. "abandoned" : {
  356. "index" : 7,
  357. "aiValue" : 3500,
  358. "sounds" : {
  359. "ambient" : ["LOOPCAVE"],
  360. "visit" : ["MYSTERY"]
  361. },
  362. "battleground": "subterranean"
  363. }
  364. }
  365. },
  366. "abandonedMine" : {
  367. "index" :220,
  368. "handler": "mine",
  369. "lastReservedIndex" : 7,
  370. "base" : {
  371. "aiValue" : 3500,
  372. "sounds" : {
  373. "ambient" : ["LOOPCAVE"]
  374. }
  375. },
  376. "types" : {
  377. "mine" : { "index" : 7, "battleground": "subterranean" }
  378. }
  379. },
  380. "garrisonHorizontal": {
  381. "index" :33,
  382. "handler": "garrison",
  383. "lastReservedIndex" : 1,
  384. "base" : {
  385. "aiValue" : 0,
  386. "sounds" : {
  387. "visit" : ["MILITARY"]
  388. }
  389. },
  390. "types": {
  391. "normal": {
  392. "index": 0,
  393. "sounds" : {
  394. "ambient" : ["LOOPSWAR"]
  395. }
  396. },
  397. "antiMagic": {
  398. "index": 1,
  399. "sounds" : {
  400. "ambient" : ["LOOPMAGI"]
  401. }
  402. }
  403. }
  404. },
  405. "garrisonVertical" : {
  406. "index" :219,
  407. "handler": "garrison",
  408. "lastReservedIndex" : 1,
  409. "base" : {
  410. "aiValue" : 0,
  411. "sounds" : {
  412. "visit" : ["MILITARY"]
  413. }
  414. },
  415. "types": {
  416. "normal": {
  417. "index": 0,
  418. "sounds" : {
  419. "ambient" : ["LOOPSWAR"]
  420. }
  421. },
  422. "antiMagic": {
  423. "index": 1,
  424. "sounds" : {
  425. "ambient" : ["LOOPMAGI"]
  426. }
  427. }
  428. }
  429. },
  430. // Subtype: paired monoliths
  431. "monolithOneWayEntrance" : {
  432. "index" :43,
  433. "handler": "monolith",
  434. "lastReservedIndex" : 7,
  435. "base" : {
  436. "sounds" : {
  437. "ambient" : ["LOOPMON1"],
  438. "visit" : ["TELPTOUT"]
  439. }
  440. },
  441. "types" : {
  442. "monolith1" : { "index" : 0 },
  443. "monolith2" : { "index" : 1 },
  444. "monolith3" : { "index" : 2 },
  445. "monolith4" : { "index" : 3 },
  446. "monolith5" : { "index" : 4 },
  447. "monolith6" : { "index" : 5 },
  448. "monolith7" : { "index" : 6 },
  449. "monolith8" : { "index" : 7 }
  450. }
  451. },
  452. "monolithOneWayExit" : {
  453. "index" :44,
  454. "handler": "monolith",
  455. "lastReservedIndex" : 7,
  456. "base" : {
  457. "sounds" : { "ambient" : ["LOOPMON1"] }
  458. },
  459. "types" : {
  460. "monolith1" : { "index" : 0 },
  461. "monolith2" : { "index" : 1 },
  462. "monolith3" : { "index" : 2 },
  463. "monolith4" : { "index" : 3 },
  464. "monolith5" : { "index" : 4 },
  465. "monolith6" : { "index" : 5 },
  466. "monolith7" : { "index" : 6 },
  467. "monolith8" : { "index" : 7 }
  468. }
  469. },
  470. "monolithTwoWay" : {
  471. "index" :45,
  472. "handler": "monolith",
  473. "lastReservedIndex" : 7,
  474. "base" : {
  475. "sounds" : {
  476. "ambient" : ["LOOPMON2"],
  477. "visit" : ["TELPTOUT"]
  478. }
  479. },
  480. "types" : {
  481. "monolith1" : { "index" : 0 },
  482. "monolith2" : { "index" : 1 },
  483. "monolith3" : { "index" : 2 },
  484. "monolith4" : { "index" : 3 },
  485. "monolith5" : { "index" : 4 },
  486. "monolith6" : { "index" : 5 },
  487. "monolith7" : { "index" : 6 },
  488. "monolith8" : { "index" : 7 }
  489. }
  490. },
  491. // subtype: level
  492. "randomDwellingLvl" : {
  493. "index" :217,
  494. "handler": "randomDwelling",
  495. "lastReservedIndex" : 6,
  496. "types" : {
  497. "objectLvl1" : { "index" : 0},
  498. "objectLvl2" : { "index" : 1},
  499. "objectLvl3" : { "index" : 2},
  500. "objectLvl4" : { "index" : 3},
  501. "objectLvl5" : { "index" : 4},
  502. "objectLvl6" : { "index" : 5},
  503. "objectLvl7" : { "index" : 6}
  504. }
  505. },
  506. // subtype: faction ID
  507. "randomDwellingFaction" : {
  508. "index" :218,
  509. "handler": "randomDwelling",
  510. "lastReservedIndex" : 8,
  511. "types" : {
  512. "objectCastle" : { "index" : 0},
  513. "objectRampart" : { "index" : 1},
  514. "objectTower" : { "index" : 2},
  515. "objectInferno" : { "index" : 3},
  516. "objectNecropolis" : { "index" : 4},
  517. "objectDungeon" : { "index" : 5},
  518. "objectStronghold" : { "index" : 6},
  519. "objectFortress" : { "index" : 7},
  520. "objectConflux" : { "index" : 8},
  521. }
  522. },
  523. // don't have subtypes (at least now), but closely connected to this objects
  524. "spellScroll" : {
  525. "index" :93,
  526. "handler": "artifact",
  527. "types" : {
  528. "object" : {
  529. "index" : 0,
  530. "aiValue" : 500,
  531. "sounds" : {
  532. "removal" : [ "PICKUP01", "PICKUP02", "PICKUP03", "PICKUP04", "PICKUP05", "PICKUP06", "PICKUP07" ]
  533. },
  534. "templates" : {
  535. "normal" : {
  536. "visitableFrom" : [ "+++", "+-+", "+++" ],
  537. "mask" : [ "VA" ],
  538. "animation" : "AVA0001.def"
  539. }
  540. }
  541. }
  542. }
  543. },
  544. "heroPlaceholder" : {
  545. "index" : 214,
  546. "handler": "heroPlaceholder",
  547. "types" : { "object" : { "index" : 0 } }
  548. }
  549. }