default.lua 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. -- Todo:
  2. -- Add T-junctions & corners for bridge causeways.
  3. -- Add 3-length passage chunks; alternate between 3 and 1-length chunks.
  4. -- Add grand staircases (bridge and passage variants). (Note: maybe we don't want these? Fortresses should be 2D only ....)
  5. -- Add connections between sections of gatehouse tower.
  6. -- Allow fortress to generate off of gatehouse tower sections.
  7. -- Add thicker pillar variants.
  8. -- Add raised plaza.
  9. -- Add lava-well room.
  10. -- Add throne room.
  11. -- Add balconies.
  12. -- Add large plazas.
  13. -- Add lava aquaducts.
  14. -- Add bluegrass farm.
  15. -- Add single-room chambers.
  16. -- Add great hall.
  17. -- Add dungeon prison.
  18. -- Add portal chamber.
  19. -- Add ziggurat plaza.
  20. -- Add table/alter room.
  21. fortress.default = {
  22. -- The initial schem placed by the spawner.
  23. -- This starts the rest of the fortress growing off it.
  24. initial = {
  25. "junction",
  26. "junction_walk_bridge",
  27. "ew_gatehouse",
  28. "ns_gatehouse",
  29. "ns_bridge_passage",
  30. "ew_bridge_passage",
  31. },
  32. -- Size of cells.
  33. -- This is how much the algorithm steps in a direction before generating the
  34. -- next chunk of fortress.
  35. step = {x=11, y=11, z=11},
  36. chunks = {
  37. -- Corridor sections.
  38. junction = {
  39. schem = {{file="nf_passage_4x_junction"}},
  40. next = {
  41. ["+x"] = {
  42. {chunk="ew", chance=90, shift={x=0, y=0, z=0}},
  43. {chunk="w_capped"},
  44. },
  45. ["+z"] = {
  46. {chunk="ns", chance=90},
  47. {chunk="s_capped"},
  48. },
  49. ["-x"] = {
  50. {chunk="ew", chance=90},
  51. {chunk="e_capped"},
  52. },
  53. ["-z"] = {
  54. {chunk="ns", chance=90},
  55. {chunk="n_capped"},
  56. },
  57. ["-y"] = {{chunk="solid"}},
  58. ["+y"] = {{chunk="junction_walk"}},
  59. }
  60. },
  61. ew = {
  62. schem = {{file="nf_passage_ew"}},
  63. next = {
  64. ["+x"] = {
  65. {chunk="ew", chance=80},
  66. {chunk="ew_stair", chance=40},
  67. {chunk="ew_bridge_passage", chance=30},
  68. {chunk="sw_corner", chance=20},
  69. {chunk="nw_corner", chance=20},
  70. {chunk="swn_t", chance=10},
  71. {chunk="esw_t", chance=10},
  72. {chunk="wne_t", chance=10},
  73. {chunk="junction", chance=20},
  74. {chunk="w_capped"},
  75. },
  76. ["-x"] = {
  77. {chunk="ew", chance=80},
  78. {chunk="ew_stair", chance=40},
  79. {chunk="ew_bridge_passage", chance=30},
  80. {chunk="se_corner", chance=20},
  81. {chunk="ne_corner", chance=20},
  82. {chunk="wne_t", chance=10},
  83. {chunk="esw_t", chance=10},
  84. {chunk="nes_t", chance=10},
  85. {chunk="junction", chance=20},
  86. {chunk="e_capped"},
  87. },
  88. ["-y"] = {{chunk="solid"}},
  89. ["+y"] = {{chunk="ew_walk"}},
  90. },
  91. },
  92. ns = {
  93. schem = {{file="nf_passage_ns"}},
  94. next = {
  95. ["+z"] = {
  96. {chunk="ns", chance=60},
  97. {chunk="ns_stair", chance=40},
  98. {chunk="ns_bridge_passage", chance=20},
  99. {chunk="se_corner", chance=20},
  100. {chunk="sw_corner", chance=20},
  101. {chunk="nes_t", chance=10},
  102. {chunk="esw_t", chance=10},
  103. {chunk="swn_t", chance=10},
  104. {chunk="junction", chance=20},
  105. {chunk="s_capped"},
  106. },
  107. ["-z"] = {
  108. {chunk="ns", chance=60},
  109. {chunk="ns_stair", chance=40},
  110. {chunk="ns_bridge_passage", chance=20},
  111. {chunk="ne_corner", chance=20},
  112. {chunk="nw_corner", chance=20},
  113. {chunk="nes_t", chance=10},
  114. {chunk="wne_t", chance=10},
  115. {chunk="swn_t", chance=10},
  116. {chunk="junction", chance=20},
  117. {chunk="n_capped"},
  118. },
  119. ["-y"] = {{chunk="solid"}},
  120. ["+y"] = {{chunk="ns_walk"}},
  121. },
  122. },
  123. n_capped = {
  124. schem = {{file="nf_passage_n_capped"}},
  125. next = {
  126. ["-y"] = {{chunk="solid"}},
  127. ["+y"] = {{chunk="n_capped_walk"}},
  128. },
  129. },
  130. s_capped = {
  131. schem = {{file="nf_passage_s_capped"}},
  132. next = {
  133. ["-y"] = {{chunk="solid"}},
  134. ["+y"] = {{chunk="s_capped_walk"}},
  135. },
  136. },
  137. e_capped = {
  138. schem = {{file="nf_passage_e_capped"}},
  139. next = {
  140. ["-y"] = {{chunk="solid"}},
  141. ["+y"] = {{chunk="e_capped_walk"}},
  142. },
  143. },
  144. w_capped = {
  145. schem = {{file="nf_passage_w_capped"}},
  146. next = {
  147. ["-y"] = {{chunk="solid"}},
  148. ["+y"] = {{chunk="w_capped_walk"}},
  149. },
  150. },
  151. ne_corner = {
  152. schem = {{file="nf_passage_ne_corner"}},
  153. next = {
  154. ["+z"] = {
  155. {chunk="ns", chance=50},
  156. {chunk="s_capped"},
  157. },
  158. ["+x"] = {
  159. {chunk="ew", chance=70},
  160. {chunk="w_capped"},
  161. },
  162. ["-y"] = {{chunk="solid"}},
  163. ["+y"] = {{chunk="ne_corner_walk"}},
  164. },
  165. },
  166. nw_corner = {
  167. schem = {{file="nf_passage_nw_corner"}},
  168. next = {
  169. ["-x"] = {
  170. {chunk="ew", chance=70},
  171. {chunk="e_capped"},
  172. },
  173. ["+z"] = {
  174. {chunk="ns", chance=50},
  175. {chunk="s_capped"},
  176. },
  177. ["-y"] = {{chunk="solid"}},
  178. ["+y"] = {{chunk="nw_corner_walk"}},
  179. },
  180. },
  181. sw_corner = {
  182. schem = {{file="nf_passage_sw_corner"}},
  183. next = {
  184. ["-z"] = {
  185. {chunk="ns", chance=50},
  186. {chunk="n_capped"},
  187. },
  188. ["-x"] = {
  189. {chunk="ew", chance=70},
  190. {chunk="e_capped"},
  191. },
  192. ["-y"] = {{chunk="solid"}},
  193. ["+y"] = {{chunk="sw_corner_walk"}},
  194. },
  195. },
  196. se_corner = {
  197. schem = {{file="nf_passage_se_corner"}},
  198. next = {
  199. ["-z"] = {
  200. {chunk="ns", chance=50},
  201. {chunk="n_capped"},
  202. },
  203. ["+x"] = {
  204. {chunk="ew", chance=70},
  205. {chunk="w_capped"},
  206. },
  207. ["-y"] = {{chunk="solid"}},
  208. ["+y"] = {{chunk="se_corner_walk"}},
  209. },
  210. },
  211. esw_t = {
  212. schem = {{file="nf_passage_esw_t"}},
  213. next = {
  214. ["+x"] = {
  215. {chunk="ew", chance=70},
  216. {chunk="w_capped"},
  217. },
  218. ["-x"] = {
  219. {chunk="ew", chance=70},
  220. {chunk="e_capped"},
  221. },
  222. ["-z"] = {
  223. {chunk="ns", chance=50},
  224. {chunk="n_capped"},
  225. },
  226. ["-y"] = {{chunk="solid"}},
  227. ["+y"] = {{chunk="esw_t_walk"}},
  228. },
  229. },
  230. nes_t = {
  231. schem = {{file="nf_passage_nes_t"}},
  232. next = {
  233. ["+z"] = {
  234. {chunk="ns", chance=50},
  235. {chunk="s_capped"},
  236. },
  237. ["-z"] = {
  238. {chunk="ns", chance=50},
  239. {chunk="n_capped"},
  240. },
  241. ["+x"] = {
  242. {chunk="ew", chance=70},
  243. {chunk="w_capped"},
  244. },
  245. ["-y"] = {{chunk="solid"}},
  246. ["+y"] = {{chunk="nes_t_walk"}},
  247. },
  248. },
  249. swn_t = {
  250. schem = {{file="nf_passage_swn_t"}},
  251. next = {
  252. ["-z"] = {
  253. {chunk="ns", chance=50},
  254. {chunk="n_capped"},
  255. },
  256. ["+z"] = {
  257. {chunk="ns", chance=50},
  258. {chunk="s_capped"},
  259. },
  260. ["-x"] = {
  261. {chunk="ew", chance=70},
  262. {chunk="e_capped"},
  263. },
  264. ["-y"] = {{chunk="solid"}},
  265. ["+y"] = {{chunk="swn_t_walk"}},
  266. },
  267. },
  268. wne_t = {
  269. schem = {{file="nf_passage_wne_t"}},
  270. next = {
  271. ["-x"] = {
  272. {chunk="ew", chance=70},
  273. {chunk="e_capped"},
  274. },
  275. ["+x"] = {
  276. {chunk="ew", chance=70},
  277. {chunk="w_capped"},
  278. },
  279. ["+z"] = {
  280. {chunk="ns", chance=50},
  281. {chunk="s_capped"},
  282. },
  283. ["-y"] = {{chunk="solid"}},
  284. ["+y"] = {{chunk="wne_t_walk"}},
  285. },
  286. },
  287. -- Bridge/passage connections.
  288. ns_bridge_passage = {
  289. schem = {{file="nf_ns_passage_ew_bridge_access"}},
  290. offset = {x=-1, y=0, z=0},
  291. size = {x=3, y=1, z=1},
  292. limit = 4,
  293. next = {
  294. ["+z"] = {{chunk="ns", shift={x=1, y=0, z=0}}},
  295. ["-z"] = {{chunk="ns", shift={x=1, y=0, z=0}}},
  296. ["+x"] = {{chunk="ew_walk_bridge", shift={x=2, y=0, z=0}}},
  297. ["-x"] = {{chunk="ew_walk_bridge", shift={x=-2, y=0, z=0}}},
  298. ["-y"] = {
  299. {chunk="bridge_arch_ew", shift={x=0, y=0, z=0}, continue=true},
  300. {chunk="bridge_arch_ew", shift={x=2, y=0, z=0}, continue=true},
  301. {chunk="solid", shift={x=1, y=0, z=0}},
  302. },
  303. ["+y"] = {{chunk="ns_walk", shift={x=1, y=0, z=0}}},
  304. },
  305. },
  306. ew_bridge_passage = {
  307. schem = {{file="nf_ew_passage_ns_bridge_access"}},
  308. offset = {x=0, y=0, z=-1},
  309. size = {x=1, y=1, z=3},
  310. limit = 4,
  311. next = {
  312. ["+x"] = {{chunk="ew", shift={x=0, y=0, z=1}}},
  313. ["-x"] = {{chunk="ew", shift={x=0, y=0, z=1}}},
  314. ["+z"] = {{chunk="ns_walk_bridge", shift={x=0, y=0, z=2}}},
  315. ["-z"] = {{chunk="ns_walk_bridge", shift={x=0, y=0, z=-2}}},
  316. ["-y"] = {
  317. {chunk="bridge_arch_ns", shift={x=0, y=0, z=0}, continue=true},
  318. {chunk="bridge_arch_ns", shift={x=0, y=0, z=2}, continue=true},
  319. {chunk="solid", shift={x=0, y=0, z=1}},
  320. },
  321. ["+y"] = {{chunk="ew_walk", shift={x=0, y=0, z=1}}},
  322. },
  323. },
  324. -- Bridges.
  325. junction_walk_bridge = {
  326. schem = {{file="nf_walkway_4x_junction", force=false}},
  327. -- If number of chunks excees this limit, then algorithm reduces
  328. -- the chance by 10% for every unit over the limit. This affects
  329. -- all chunks which have this chunk as a possible follow-up.
  330. limit = 3,
  331. next = {
  332. ["-y"] = {{chunk="bridge_pillar_top"}},
  333. ["+x"] = {
  334. {chunk="ew_walk_bridge_short", chance=80, shift={x=0, y=0, z=0}},
  335. {chunk="w_broken_walk", shift={x=0, y=0, z=0}},
  336. },
  337. ["-x"] = {
  338. {chunk="ew_walk_bridge_short", chance=80, shift={x=0, y=0, z=0}},
  339. {chunk="e_broken_walk", shift={x=0, y=0, z=0}},
  340. },
  341. ["+z"] = {
  342. {chunk="ns_walk_bridge_short", chance=80, shift={x=0, y=0, z=0}},
  343. {chunk="s_broken_walk", shift={x=0, y=0, z=0}},
  344. },
  345. ["-z"] = {
  346. {chunk="ns_walk_bridge_short", chance=80, shift={x=0, y=0, z=0}},
  347. {chunk="n_broken_walk", shift={x=0, y=0, z=0}},
  348. },
  349. },
  350. },
  351. ew_walk_bridge = {
  352. schem = {
  353. {file="nf_walkway_ew", force=false, adjust={x=0, y=0, z=0}},
  354. {file="nf_walkway_ew", force=false, adjust={x=11, y=0, z=0}},
  355. {file="nf_walkway_ew", force=false, adjust={x=22, y=0, z=0}},
  356. },
  357. offset = {x=0, y=0, z=0},
  358. size = {x=3, y=1, z=1},
  359. next = {
  360. ["+x"] = {
  361. {chunk="ew_walk_bridge_short", chance=50, shift={x=2, y=0, z=0}},
  362. {chunk="w_broken_walk", shift={x=2, y=0, z=0}},
  363. },
  364. ["-x"] = {
  365. {chunk="ew_walk_bridge_short", chance=50, shift={x=0, y=0, z=0}},
  366. {chunk="e_broken_walk", shift={x=0, y=0, z=0}},
  367. },
  368. ["-y"] = {
  369. {chunk="bridge_arch_pillar_ew", shift={x=0, y=0, z=0}, continue=true},
  370. {chunk="bridge_arch_ew", shift={x=1, y=0, z=0}, continue=true},
  371. {chunk="bridge_arch_pillar_ew", shift={x=2, y=0, z=0}, continue=true},
  372. },
  373. },
  374. },
  375. ns_walk_bridge = {
  376. schem = {
  377. {file="nf_walkway_ns", force=false, adjust={x=0, y=0, z=0}},
  378. {file="nf_walkway_ns", force=false, adjust={x=0, y=0, z=11}},
  379. {file="nf_walkway_ns", force=false, adjust={x=0, y=0, z=22}},
  380. },
  381. offset = {x=0, y=0, z=0},
  382. size = {x=1, y=1, z=3},
  383. next = {
  384. ["+z"] = {
  385. {chunk="ns_walk_bridge_short", chance=80, shift={x=0, y=0, z=2}},
  386. {chunk="s_broken_walk", shift={x=0, y=0, z=2}},
  387. },
  388. ["-z"] = {
  389. {chunk="ns_walk_bridge_short", chance=80, shift={x=0, y=0, z=0}},
  390. {chunk="n_broken_walk", shift={x=0, y=0, z=0}},
  391. },
  392. ["-y"] = {
  393. {chunk="bridge_arch_pillar_ns", shift={x=0, y=0, z=0}, continue=true},
  394. {chunk="bridge_arch_ns", shift={x=0, y=0, z=1}, continue=true},
  395. {chunk="bridge_arch_pillar_ns", shift={x=0, y=0, z=2}, continue=true},
  396. },
  397. },
  398. },
  399. ew_walk_bridge_short = {
  400. schem = {
  401. {file="nf_walkway_ew", force=false},
  402. },
  403. next = {
  404. ["+x"] = {
  405. {chunk="ew_gatehouse", chance=10, shift={x=0, y=0, z=0}},
  406. {chunk="ns_bridge_passage", chance=20},
  407. {chunk="junction_walk_bridge", chance=20},
  408. {chunk="ew_walk_bridge", shift={x=0, y=0, z=0}},
  409. },
  410. ["-x"] = {
  411. {chunk="ew_gatehouse", chance=10, shift={x=-1, y=0, z=0}},
  412. {chunk="ns_bridge_passage", chance=20},
  413. {chunk="junction_walk_bridge", chance=20},
  414. {chunk="ew_walk_bridge", shift={x=-2, y=0, z=0}},
  415. },
  416. ["-y"] = {{chunk="bridge_arch_ew"}},
  417. },
  418. },
  419. ns_walk_bridge_short = {
  420. schem = {
  421. {file="nf_walkway_ns", force=false},
  422. },
  423. next = {
  424. ["+z"] = {
  425. {chunk="ns_gatehouse", chance=10, shift={x=0, y=0, z=0}},
  426. {chunk="ew_bridge_passage", chance=20},
  427. {chunk="junction_walk_bridge", chance=20},
  428. {chunk="ns_walk_bridge", shift={x=0, y=0, z=0}},
  429. },
  430. ["-z"] = {
  431. {chunk="ns_gatehouse", chance=10, shift={x=0, y=0, z=-1}},
  432. {chunk="ew_bridge_passage", chance=20},
  433. {chunk="junction_walk_bridge", chance=20},
  434. {chunk="ns_walk_bridge", shift={x=0, y=0, z=-2}},
  435. },
  436. ["-y"] = {{chunk="bridge_arch_ns"}},
  437. },
  438. },
  439. -- Walkways.
  440. junction_walk = {schem = {{file="nf_walkway_4x_junction", force=false}}},
  441. ew_walk = {schem = {{file="nf_walkway_ew", force=false}}},
  442. ns_walk = {schem = {{file="nf_walkway_ns", force=false}}},
  443. n_capped_walk = {
  444. schem = {{file="nf_walkway_n_capped", force=false}},
  445. next = {
  446. ["+y"] = {{chunk="tower", chance=50}},
  447. },
  448. },
  449. s_capped_walk = {
  450. schem = {{file="nf_walkway_s_capped", force=false}},
  451. next = {
  452. ["+y"] = {{chunk="tower", chance=50}},
  453. },
  454. },
  455. e_capped_walk = {
  456. schem = {{file="nf_walkway_e_capped", force=false}},
  457. next = {
  458. ["+y"] = {{chunk="tower", chance=50}},
  459. },
  460. },
  461. w_capped_walk = {
  462. schem = {{file="nf_walkway_w_capped", force=false}},
  463. next = {
  464. ["+y"] = {{chunk="tower", chance=50}},
  465. },
  466. },
  467. -- Broken causeway ends.
  468. n_broken_walk = {
  469. schem = {{file="nf_walkway_n_broken", force=false}},
  470. next = {
  471. ["-y"] = {{chunk="bridge_broken_walk_arch_n"}},
  472. },
  473. },
  474. s_broken_walk = {
  475. schem = {{file="nf_walkway_s_broken", force=false}},
  476. next = {
  477. ["-y"] = {{chunk="bridge_broken_walk_arch_s"}},
  478. },
  479. },
  480. e_broken_walk = {
  481. schem = {{file="nf_walkway_e_broken", force=false}},
  482. next = {
  483. ["-y"] = {{chunk="bridge_broken_walk_arch_e"}},
  484. },
  485. },
  486. w_broken_walk = {
  487. schem = {{file="nf_walkway_w_broken", force=false}},
  488. next = {
  489. ["-y"] = {{chunk="bridge_broken_walk_arch_w"}},
  490. },
  491. },
  492. ne_corner_walk = {schem = {{file="nf_walkway_ne_corner", force=false}}},
  493. nw_corner_walk = {schem = {{file="nf_walkway_nw_corner", force=false}}},
  494. sw_corner_walk = {schem = {{file="nf_walkway_sw_corner", force=false}}},
  495. se_corner_walk = {schem = {{file="nf_walkway_se_corner", force=false}}},
  496. esw_t_walk = {schem = {{file="nf_walkway_esw_t", force=false}}},
  497. nes_t_walk = {schem = {{file="nf_walkway_nes_t", force=false}}},
  498. swn_t_walk = {schem = {{file="nf_walkway_swn_t", force=false}}},
  499. wne_t_walk = {schem = {{file="nf_walkway_wne_t", force=false}}},
  500. ew_stair = {
  501. schem = {{file="nf_passage_ew_stair"}},
  502. next = {
  503. ["+x"] = {
  504. {chunk="swn_t", chance=20},
  505. {chunk="wne_t", chance=20},
  506. {chunk="esw_t"},
  507. },
  508. ["-x"] = {
  509. {chunk="wne_t", chance=20},
  510. {chunk="esw_t", chance=20},
  511. {chunk="nes_t"},
  512. },
  513. ["+y"] = {{chunk="ew_walk_stair"}},
  514. ["-y"] = {{chunk="solid"}},
  515. },
  516. },
  517. ew_walk_stair = {
  518. schem = {{file="nf_walkway_ew_stair"}},
  519. },
  520. ns_stair = {
  521. schem = {{file="nf_passage_ew_stair", rotation="90"}},
  522. next = {
  523. ["+z"] = {
  524. {chunk="nes_t", chance=20},
  525. {chunk="swn_t", chance=20},
  526. {chunk="esw_t"},
  527. },
  528. ["-z"] = {
  529. {chunk="nes_t", chance=10},
  530. {chunk="swn_t", chance=10},
  531. {chunk="wne_t"},
  532. },
  533. ["+y"] = {{chunk="ns_walk_stair"}},
  534. ["-y"] = {{chunk="solid"}},
  535. },
  536. },
  537. ns_walk_stair = {
  538. schem = {{file="nf_walkway_ew_stair", rotation="90", force=false}},
  539. },
  540. tower = {
  541. schem = {{file="nf_tower", force=false, adjust={x=3, y=-10, z=3}}},
  542. },
  543. -- Gatehouses.
  544. ew_gatehouse = {
  545. schem = {
  546. {file="nf_gatehouse_ew", adjust={x=0, y=0, z=7}},
  547. {file="nf_gatehouse_bridge_shim_w", force=false, adjust={x=0, y=-11, z=11}},
  548. {file="nf_gatehouse_bridge_shim_e", force=false, adjust={x=20, y=-11, z=11}},
  549. },
  550. offset = {x=0, y=0, z=-1},
  551. size = {x=2, y=1, z=3},
  552. limit = 2,
  553. next = {
  554. ["+x"] = {
  555. {chunk="ew_walk_bridge_short", chance=80, shift={x=1, y=0, z=1}},
  556. {chunk="w_broken_walk", shift={x=1, y=0, z=1}},
  557. },
  558. ["-x"] = {
  559. {chunk="ew_walk_bridge_short", chance=80, shift={x=0, y=0, z=1}},
  560. {chunk="e_broken_walk", shift={x=1, y=0, z=1}},
  561. },
  562. ["-y"] = {{chunk="gatehouse_pillar_ew", shift={x=0, y=0, z=0}}},
  563. },
  564. },
  565. ns_gatehouse = {
  566. schem = {
  567. {file="nf_gatehouse_ns", adjust={x=7, y=0, z=0}},
  568. {file="nf_gatehouse_bridge_shim_s", force=false, adjust={x=11, y=-11, z=0}},
  569. {file="nf_gatehouse_bridge_shim_n", force=false, adjust={x=11, y=-11, z=20}},
  570. },
  571. offset = {x=-1, y=0, z=0},
  572. size = {x=3, y=1, z=2},
  573. limit = 2,
  574. next = {
  575. ["+z"] = {
  576. {chunk="ns_walk_bridge_short", chance=80, shift={x=1, y=0, z=1}},
  577. {chunk="s_broken_walk", shift={x=1, y=0, z=1}},
  578. },
  579. ["-z"] = {
  580. {chunk="ns_walk_bridge_short", chance=80, shift={x=1, y=0, z=0}},
  581. {chunk="n_broken_walk", shift={x=1, y=0, z=0}},
  582. },
  583. ["-y"] = {{chunk="gatehouse_pillar_ns", shift={x=0, y=0, z=0}}},
  584. },
  585. },
  586. gatehouse_pillar_ew = {
  587. schem = {
  588. {file="nf_gatehouse_tower_ew", force=false, adjust={x=2, y=0, z=7}},
  589. {file="nf_gatehouse_tower_ew", force=false, adjust={x=2, y=11, z=7}},
  590. {file="nf_gatehouse_tower_ew", force=false, adjust={x=2, y=22, z=7}},
  591. {file="nf_gatehouse_tower_ew", force=false, adjust={x=2, y=33, z=7}},
  592. },
  593. offset = {x=0, y=-3, z=0},
  594. size = {x=2, y=4, z=3},
  595. },
  596. gatehouse_pillar_ns = {
  597. schem = {
  598. {file="nf_gatehouse_tower_ns", force=false, adjust={x=7, y=0, z=2}},
  599. {file="nf_gatehouse_tower_ns", force=false, adjust={x=7, y=11, z=2}},
  600. {file="nf_gatehouse_tower_ns", force=false, adjust={x=7, y=22, z=2}},
  601. {file="nf_gatehouse_tower_ns", force=false, adjust={x=7, y=33, z=2}},
  602. },
  603. offset = {x=0, y=-3, z=0},
  604. size = {x=3, y=4, z=2},
  605. },
  606. pillar = {
  607. schem = {{file="nf_pillar", force=false}},
  608. next = {
  609. ["-y"] = {{chunk="pillar_straight"}},
  610. },
  611. },
  612. pillar_straight = {
  613. schem = {
  614. {file="nf_pillar_straight", force=false, adjust={x=3, y=0, z=3}},
  615. {file="nf_pillar_straight", force=false, adjust={x=3, y=11, z=3}},
  616. {file="nf_pillar_straight", force=false, adjust={x=3, y=22, z=3}},
  617. },
  618. size = {x=1, y=3, z=1},
  619. offset = {x=0, y=-2, z=0},
  620. },
  621. solid = {
  622. schem = {{file="nf_building_solid", force=false, adjust={x=0, y=0, z=0}}},
  623. offset = {x=0, y=0, z=0},
  624. size = {x=1, y=1, z=1},
  625. next = {
  626. ["-y"] = {{chunk="pillar"}},
  627. },
  628. },
  629. -- Bridge arches & pillars.
  630. bridge_arch_ns = {
  631. schem = {{file="nf_bridge_arch_ns", force=false, adjust={x=0, y=6, z=0}}},
  632. },
  633. bridge_arch_ew = {
  634. schem = {{file="nf_bridge_arch_ew", force=false, adjust={x=0, y=6, z=0}}},
  635. },
  636. bridge_arch_pillar_ns = {
  637. schem = {{file="nf_bridge_arch_pillar_ns", force=false}},
  638. offset = {x=0, y=-1, z=0},
  639. size = {x=1, y=2, z=1},
  640. next = {
  641. ["-y"] = {{chunk="bridge_arch_pillar_bottom_ns"}},
  642. },
  643. },
  644. bridge_arch_pillar_ew = {
  645. schem = {{file="nf_bridge_arch_pillar_ew", force=false}},
  646. offset = {x=0, y=-1, z=0},
  647. size = {x=1, y=2, z=1},
  648. next = {
  649. ["-y"] = {{chunk="bridge_arch_pillar_bottom_ew"}},
  650. },
  651. },
  652. bridge_arch_pillar_bottom_ns = {
  653. schem = {
  654. {file="nf_bridge_arch_pillar_bottom_ns", force=false, adjust={x=0, y=0, z=3}},
  655. {file="nf_bridge_arch_pillar_bottom_ns", force=false, adjust={x=0, y=22, z=3}},
  656. },
  657. offset = {x=0, y=-3, z=0},
  658. size = {x=1, y=4, z=1},
  659. },
  660. bridge_arch_pillar_bottom_ew = {
  661. schem = {
  662. {file="nf_bridge_arch_pillar_bottom_ew", force=false, adjust={x=3, y=0, z=0}},
  663. {file="nf_bridge_arch_pillar_bottom_ew", force=false, adjust={x=3, y=22, z=0}},
  664. },
  665. offset = {x=0, y=-3, z=0},
  666. size = {x=1, y=4, z=1},
  667. },
  668. bridge_pillar_top = {
  669. schem = {{file="nf_center_pillar_top", force=false}},
  670. offset = {x=0, y=-1, z=0},
  671. size = {x=1, y=2, z=1},
  672. next = {
  673. ["-y"] = {{chunk="bridge_pillar_bottom"}},
  674. },
  675. },
  676. bridge_pillar_bottom = {
  677. schem = {
  678. {file="nf_center_pillar_bottom", force=false, adjust={x=1, y=0, z=1}},
  679. {file="nf_center_pillar_bottom", force=false, adjust={x=1, y=22, z=1}},
  680. },
  681. offset = {x=0, y=-3, z=0},
  682. size = {x=1, y=4, z=1},
  683. },
  684. -- Broken bits of arch underneath broken causeway ends.
  685. bridge_broken_walk_arch_n = {
  686. schem = {{file="nf_bridge_walk_broken_arch_n", force=false}},
  687. },
  688. bridge_broken_walk_arch_s = {
  689. schem = {{file="nf_bridge_walk_broken_arch_s", force=false}},
  690. },
  691. bridge_broken_walk_arch_e = {
  692. schem = {{file="nf_bridge_walk_broken_arch_e", force=false}},
  693. },
  694. bridge_broken_walk_arch_w = {
  695. schem = {{file="nf_bridge_walk_broken_arch_w", force=false}},
  696. },
  697. },
  698. }