1
2;;;;;;;;;;;;;;;;;;;;;;;;;;
3; Deeps template maps
4
5(kern-mk-map 'm_deeptempl_wall 19 19 pal_expanded
6	(list
7		"rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn "
8		"rn rn rn rn rn r8 r8 rn r8 rn rn r8 r8 rn rn rn rn rn rn "
9		"rn rn rn rn r4 .. .. re .. ra rc {4 {{ r2 rn rn rn rn rn "
10		"rn rn rn r8 rc .. .. .. .. bb .. .. .. .. ra r8 rn rn rn "
11		"rn rn r8 {{ {2 .. .. {8 .. .. .. .. {8 .. {4 {{ r8 rn rn "
12		"rn r4 .. {1 {8 .. rf {{ {2 {8 .. {4 {{ rf .. {1 .. r2 rn "
13		"rn rn rd {4 {{ {6 {{ rb r5 {{ {a .. {1 .. .. .. .. ra rn "
14		"rn rc .. .. {1 .. {5 {{ r2 r5 {{ rf .. .. {8 .. {4 {{ r2 "
15		"r4 .. bb .. .. .. .. {1 ra rn rd {8 .. bb {{ {2 .. r3 rn "
16		"r4 .. .. .. .. rf .. {8 .. r6 {{ {{ {2 .. {1 .. rb rn rn "
17		"rn rd .. .. {4 {{ rf {{ r3 r8 r9 rd .. .. .. .. bb ra rn "
18		"r4 .. .. .. .. {1 .. {9 r6 {{ {6 {{ rf .. .. .. .. .. r2 "
19		"rn r5 {8 .. bb .. {4 {{ re {1 .. {1 .. .. .. .. .. .. r2 "
20		"rn r4 {{ .. .. .. .. rf .. {8 .. .. .. .. bb {8 .. r3 rn "
21		"rn rn r1 .. rf .. .. .. {4 {{ bb .. .. .. {4 {{ r1 rn rn "
22		"rn rn rn r5 {{ {2 .. .. .. {1 .. .. .. .. .. r3 rn rn rn "
23		"rn rn rn rn r4 {{ {2 .. {c {{ {{ {2 bb r2 rn rn rn rn rn "
24		"rn rn rn rn rn r5 .. r7 {{ r3 r5 .. r3 rn rn rn rn rn rn "
25		"rn rn rn rn rn rn r1 rn r1 rn rn r1 rn rn rn rn rn rn rn "
26	)
27)
28
29(kern-mk-map 'm_deeptempl_passage 19 19 pal_expanded
30	(list
31		"rn rn rn rn rn r4 .. .. .. .. {4 {{ {2 .. r2 rn rn rn rn "
32		"rn rn rn rn rn rc .. .. .. .. .. {1 .. rb rn rn rn rn rn "
33		"rn rn rn rn r4 .. .. .. .. .. .. .. .. .. r2 rn rn rn rn "
34		"rn rn rn {{ {2 .. .. .. .. .. .. .. .. .. {4 {{ rn rn rn "
35		"r8 rn r8 {1 .. .. {8 .. .. .. .. .. .. .. .. rb r8 r8 rn "
36		".. re .. .. .. {4 {{ {2 .. .. .. .. .. .. {8 .. .. {8 ra "
37		".. {8 .. .. .. .. {1 .. .. {8 .. .. .. {4 {{ {2 {4 {{ {2 "
38		"{4 {{ {2 .. .. .. .. .. {4 {{ {2 .. .. .. {1 .. .. {1 .. "
39		".. {1 .. .. .. .. .. bb .. {1 .. .. .. .. .. .. .. .. .. "
40		".. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. "
41		".. .. .. .. .. .. .. .. .. .. .. {8 .. .. .. .. .. .. .. "
42		".. .. bb .. .. .. .. .. .. .. {4 {{ {2 .. .. .. .. .. .. "
43		".. .. .. .. .. .. .. {8 .. .. .. {1 .. .. .. .. .. .. .. "
44		"r5 .. .. .. .. .. {4 {{ {2 .. .. .. .. .. .. .. .. r7 .. "
45		"rn r1 r1 .. {8 .. .. {1 .. .. .. .. .. .. .. .. r1 rn r1 "
46		"rn rn rn r5 {{ {2 .. .. .. .. .. .. .. .. .. bb rn rn rn "
47		"rn rn rn rn r4 .. .. .. .. {8 .. .. .. r2 rn rn rn rn rn "
48		"rn rn rn rn rn rd .. .. {4 {{ {a .. .. ra rn rn rn rn rn "
49		"rn rn rn rn r4 .. .. .. .. {5 {{ {2 .. .. r2 rn rn rn rn "
50	)
51)
52
53
54(kern-mk-map 'm_deeptempl_water 19 19 pal_expanded
55	(list
56		"rn rn rn rn rn rc ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ r2 rn rn rn rn "
57		"rn rn rn rn r4 ~b ~8 ~8 ~~ ~~ ~~ ~8 ~~ ~4 r2 rn rn rn rn "
58		"rn rn rn rn r4 .. .. .. ~% ~6 %c .. ~% ~e r2 rn rn rn rn "
59		"rn rn rn rn rc .. .. .. .. .. .. .. .. .. ra r8 rn rn rn "
60		"r8 r8 r8 rc .. .. .. .. .. .. .. .. .. .. .. .. r8 r8 r8 "
61		"~~ ~5 .. .. .. .. ~C ~7 ~A .. .. bb .. .. .. .. .. ~b ~~ "
62		"~~ ~c .. .. .. .. ~3 -- ~d .. .. .. .. .. .. .. .. bb ~~ "
63		"~~ %c bb .. .. .. ~a ~~ {G {2 .. .. .. .. .. .. .. ~3 ~~ "
64		"~4 .. .. .. .. .. %a ~e {1 .. .. .. .. .. .. .. .. ~2 ~~ "
65		"~~ ~A .. .. .. .. .. .. .. .. .. ~7 .. .. .. .. .. ~a ~~ "
66		"~~ ~d .. .. .. .. .. .. .. .. %3 ~~ ~5 ~A .. .. .. ~D ~~ "
67		"~~ %c .. .. .. ~C ~7 ~A .. .. ~3 -- -- ~d .. .. .. ~3 ~~ "
68		"~4 .. .. .. .. ~3 -- ~d .. ~b ~~ -- ~c ~# .. .. .. ~2 ~~ "
69		"~c .. .. .. .. ~a ~c ~# .. .. %a ~e ~# .. .. .. .. ~e r3 "
70		"r1 r1 r1 .. .. .. .. .. .. .. .. .. .. .. bb .. r1 r1 rn "
71		"rn rn rn r1 r5 .. .. .. .. .. .. .. .. .. r3 r1 rn rn rn "
72		"rn rn rn rn r4 .. ~C ~7 ~A .. .. ~C ~3 ~d r2 rn rn rn rn "
73		"rn rn rn rn rn rd ~3 ~~ ~~ ~5 ~E ~3 ~~ rb rn rn rn rn rn "
74		"rn rn rn rn r4 ~3 ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~5 r2 rn rn rn rn "
75	)
76)
77
78
79(kern-mk-map 'm_deeptempl_hole 19 19 pal_expanded
80	(list
81		"rn rn rn rn rn rc vv vv vv vv vv vv vv *c r2 rn rn rn rn "
82		"rn rn rn rn r4 *b vv vv *8 *c .i *e .g rb rn rn rn rn rn "
83		"rn rn rn rn r4 .h *e .g .. .. .. .. .. .. r2 rn rn rn rn "
84		"rn rn rn .. .. .. {8 .. .. .. .. .. .. .. .. .. rn rn rn "
85		"r8 rn r8 .. .. *7 {j .. .. .. .. .. {8 .. .. .. rn r8 r8 "
86		"*5 re .. .. .. *a vv *5 .j .. .. {4 {{ {a .. .. re .. *3 "
87		"vv *5 .. .. .. .. .h vv *5 .j .. .. bb {{ {2 .. .. .l vv "
88		"vv *4 .. .. .. .. .. *a vv *5 .j .. .. {1 .. .. *b vv vv "
89		"vv *c .. .. .. .. {4 {h vv vv *5 .j .. .. .. .. .h *a vv "
90		"vv .g .. .. .. {8 .. .. *2 vv vv *d .. .. .. .. .. .m vv "
91		"vv .j .. .. {c {{ {2 .. *a vv vv .g .. .. {8 .. .. *b vv "
92		"vv *d .. {4 {{ rf .. .. rf *a vv {j {2 {4 {{ {2 .. .m vv "
93		"vv .k .. .. {1 .. .. .. .. .h *a *5 .j .. {1 .. .. *3 vv "
94		"vv *d .. .. .. .. .. .. .. .. .h *a *5 .. .. .. .. *e r3 "
95		"r1 r1 r1 .. .. .. .. .. .. .. {4 {h *e .. .. .. r1 r1 rn "
96		"rn rn rn .. .. .. .. .. .. .. .. {1 .. .. .. .. rn rn rn "
97		"rn rn rn rn r4 .. .. .. .. .. *7 .j .. .. r2 rn rn rn rn "
98		"rn rn rn rn r4 *7 .n *3 *5 .n vv *5 .n *7 r2 rn rn rn rn "
99		"rn rn rn rn r4 vv vv vv vv vv vv vv vv vv r2 rn rn rn rn "
100	)
101)
102
103(kern-mk-map 'm_deeptempl_lava 19 19 pal_expanded
104	(list
105		"rn rn rn rn rn r4 !_ !_ !_ !_ !_ !_ !_ ra rn rn rn rn rn "
106		"rn rn rn rn rn rc !! !! !! !! !! !! !_ !! r2 rn rn rn rn "
107		"rn rn rn rn r4 !! !c .. .. .. bb !a !c .. r2 rn rn rn rn "
108		"rn rn rn bb re .. .. .. .. .. .. .. .. .. {4 {{ rn rn rn "
109		"rn r8 r8 .. .. .. .. .. .. .. .. .. .. .. .. {1 r8 rn rn "
110		"rc !! !! .. .. .. rf .. .. .. .. !3 !! !5 .. .. !! ra r8 "
111		"!_ !_ !c .. .. .. .. {8 .. .. .. !! !_ !c .. .. !! !_ !_ "
112		"!_ !! {# .. .. .. {4 {{ {2 .. .. !a !c .. {8 .. !a !! !_ "
113		"!_ !! {1 .. bb .. .. {1 .. .. .. .. .. {4 {{ {2 .. !! !_ "
114		"!_ !! .. .. .. .. .. !7 .. .. .. .. .. .. {1 .. .. !! !_ "
115		"!_ !! .. .. .. .. !3 !! !5 .. .. .. .. .. .. .. .. !! !_ "
116		"!_ !! .. .. .. !3 !_ !! !c .. .. .. bb .. .. .. .. !! !_ "
117		"!_ !! !5 .. .. !a !c .. .. .. .. !3 !5 .. .. .. {8 !! !_ "
118		"!_ r7 !! .. .. .. .. .. .. .. .. !a !c .. .. .. {{ r7 !_ "
119		"r1 rn r1 .. {8 .. .. .. .. .. .. .. .. .. .. rb r1 rn r1 "
120		"rn rn rn r5 {{ {2 .. .. .. .. .. .. .. .. .. bb rn rn rn "
121		"rn rn rn rn r4 .. .. !7 bb .. .. !3 !! !! r2 rn rn rn rn "
122		"rn rn rn rn r4 !! !! !! !! !! !! !! !_ rb rn rn rn rn rn "
123		"rn rn rn rn rn r5 !_ !_ !_ !_ !_ !_ !_ !_ r2 rn rn rn rn "
124	)
125)
126
127(kern-mk-map 'm_deeptempl_swamp 19 19 pal_expanded
128	(list
129		"rn rn rn rn r4 %a %% %% %% %% %% %% ~f %% r2 rn rn rn rn "
130		"rn rn rn rn r4 {% %a %c {4 {% %% %% %% %c r2 rn rn rn rn "
131		"rn rn rn rn rn r5 .. .. .. {1 %% %% {# {2 r2 rn rn rn rn "
132		"rn rn rn .. re %% .. .. bb .. %% %% %% %% %c r2 rn rn rn "
133		"rn r8 r8 .. %b %% %5 .. %3 %% %% %c {8 .. .. ra r8 r8 rn "
134		"rc {{ {2 .. .. %a %% %% %% %c .. {4 {{ {2 .. .. {{ %7 ra "
135		"%% %5 .. .. bb .. .. %% %% .. .. .. {1 .. .. .. {1 %% %% "
136		"%% ~f %% .. .. .. %3 %% %% %5 .. {8 .. %7 .. .. %% %% ~f "
137		"%% %% %% %% %5 .. %% ~b ~d %% %d {{ %3 %% %% %% %% %% %% "
138		"%% %% .. .. %a %% %% %% %% %c rb rd %% %% %c .. .. .. %% "
139		"%% %% bb .. .. %a %% %% %% .. %3 ~e %% .. .. .. .. {8 %% "
140		"%% %c .. .. .. .. %% .. %a %% %% %% %c .. {8 .. {4 {C %% "
141		"%% .. .. .. .. %3 %% .. .. %a %% %% .. {4 {{ {2 .. %b %% "
142		"%c r7 .. .. .. %% ~f %5 .. .. .. %% .. .. {1 .. .. r7 %a "
143		"r1 rn r1 .. .. %% %% %c .. .. .. %% %5 .. .. r3 r1 rn r1 "
144		"rn rn rn .. r7 %% %% .. .. bb .. %% %% %% %5 r2 rn rn rn "
145		"rn rn rn rn r4 .. {8 .. .. .. %% %% %% {{ r2 rn rn rn rn "
146		"rn rn rn rn rn rd {C %3 %% %% %% %% %% rb rn rn rn rn rn "
147		"rn rn rn rn r4 %3 %% %% %% %% %% ~f %% %5 r2 rn rn rn rn "
148	)
149)
150
151(kern-mk-map 'm_deeptempl_break 19 19 pal_expanded
152	(list
153		"rn rn rn rn rn rn rn r4 bb .. .. r2 rn rn rn rn rn rn rn "
154		"rn rn rn rn rn r8 r8 r4 .. .. bb ra r8 rn rn rn rn rn rn "
155		"rn rn rn rn r4 .. .. re .. .. rf {4 {{ r2 rn rn rn rn rn "
156		"rn rn rn r8 rc .. .. .. .. bb .. .. .. .. ra r8 rn rn rn "
157		"rn rn r8 {{ {2 .. .. {8 .. .. .. .. {8 .. {4 {{ r8 rn rn "
158		"rn r4 .. {1 {8 .. rf {{ {2 {8 .. {4 {{ rf .. {1 .. r2 rn "
159		"rn rn rd {4 {{ {6 {{ rb r5 {{ {a .. {1 .. .. .. .. ra rn "
160		"r8 rc .. .. {1 .. {5 {{ r2 r5 {{ rf .. .. {8 .. {4 {{ ra "
161		"bb .. bb .. .. .. .. {1 ra rn rd {8 .. bb {{ {2 .. {1 bb "
162		".. .. .. .. .. rf .. {8 .. r6 {{ {{ {2 .. {1 .. rf .. .. "
163		".. bb .. .. {4 {{ rf {{ r3 r8 r9 rd .. .. .. .. bb .. .. "
164		"r5 .. .. .. .. {1 .. {9 r6 {{ {6 {{ rf .. .. .. .. .. r3 "
165		"rn r5 {8 .. bb .. {4 {{ re {1 .. {1 .. .. .. .. .. .. r2 "
166		"rn r4 {{ .. .. .. .. rf .. {8 .. .. .. .. bb {8 .. r3 rn "
167		"rn rn r1 .. rf .. .. .. {4 {{ bb .. .. .. {4 {{ r1 rn rn "
168		"rn rn rn r5 {{ {2 .. .. .. {1 .. .. .. .. .. r3 rn rn rn "
169		"rn rn rn rn r4 {{ {2 .. .. .. .. .. bb r2 rn rn rn rn rn "
170		"rn rn rn rn rn r5 .. r7 .. .. bb .. r3 rn rn rn rn rn rn "
171		"rn rn rn rn rn rn r1 r4 bb .. .. r3 rn rn rn rn rn rn rn "
172	)
173)
174
175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
176;; Deeps random map
177
178
179;probability for edge terrains... out of 83
180(define deep-terrain-edges
181	(list
182		(list 20 'm_deeptempl_wall #f)
183		(list 25 'm_deeptempl_water #f)
184		(list 30 'm_deeptempl_hole #f)
185		(list 35 'm_deeptempl_lava #f)
186		(list 40 'm_deeptempl_swamp #t)
187		(list 100 'm_deeptempl_passage #t)
188	))
189
190;probability for area terrains... out of 149
191(define deep-terrain-area
192	(list
193		(list 30 'm_deeptempl_wall)
194		(list 45 'm_deeptempl_water)
195		(list 65 'm_deeptempl_hole)
196		(list 75 'm_deeptempl_lava)
197		(list 80 'm_deeptempl_swamp)
198		(list 150 'm_deeptempl_passage)
199	))
200
201;map areas replaced by the various blitting ops
202(define deep-room-blitstats
203	(prmap-mk-blitstats 19 19 3 4 3))
204
205
206;parameters to random number generators
207(define (deep-rno) (+ (kern-dice-roll "1d70" 33)))
208(define deep-random-type-ew (prmap-mk-prng-params (deep-rno) (deep-rno) 0 (deep-rno) 83))
209(define deep-random-type-ns (prmap-mk-prng-params (deep-rno) (deep-rno) 0 (deep-rno) 83))
210(define deep-random-type-area (prmap-mk-prng-params (deep-rno) (deep-rno) 0 (deep-rno) 149))
211
212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
213;; critter lists
214
215(define deep-monster-types
216	(list
217		(list
218			(list 100 'bat)
219		)
220		(list
221			(list 100 'rat)
222			(list 200 'bat)
223		)
224		(list
225			(list 100 'giant-spider)
226			(list 150 'queen-spider)
227		)
228		(list
229			(list 100 'cave-goblin-slinger)
230			(list 200 'cave-goblin-berserker)
231			(list 250 'cave-goblin-priest)
232		)
233		(list
234			(list 50 'cave-goblin-slinger-m)
235			(list 100 'cave-goblin-berserker-m)
236			(list 300 'troll-m)
237			(list 350 'troll-geomancer-m)
238		)
239		(list
240			(list 100 'green-slime)
241			(list 200 'yellow-slime)
242		)
243		(list
244			(list 100 'zorn)
245		)
246		(list
247			(list 20 'ghast)
248			(list 200 'demon)
249		)
250		(list
251			(list 50 'cave-goblin-slinger-m)
252			(list 100 'cave-goblin-berserker-m)
253			(list 150 'troll-m)
254			(list 350 'gint-warrior-m)
255			(list 400 'gint-mage-m)
256		)
257		(list
258			(list 50 'cave-goblin-slinger-m)
259			(list 100 'headless)
260			(list 150 'cave-goblin-berserker-m)
261			(list 200 'troll-m)
262			(list 250 'gint-warrior-m)
263			(list 350 'gazer)
264		)
265		(list
266			(list 25 'cave-goblin-slinger-m)
267			(list 50 'cave-goblin-berserker-m)
268			(list 300 'dragon)
269		)
270		(list
271			(list 20 'ghast)
272			(list 70 'skeletal-warrior)
273			(list 120 'skeletal-spear-thrower)
274			(list 150 'craven-archer)
275			(list 300 'death-knight)
276			(list 350 'demon)
277		)
278		(list
279			(list 100 'skeletal-warrior)
280			(list 200 'skeletal-spear-thrower)
281			(list 250 'lich)
282		)
283		(list
284			(list 100 'headless)
285			(list 150 'skeletal-warrior)
286			(list 200 'skeletal-spear-thrower)
287			(list 220 'craven-archer)
288			(list 250 'death-knight)
289			(list 260 'demon)
290			(list 330 'warlock)
291		)
292	)
293)
294
295(define deep-group-types
296	(list
297		(list 10 0 100 "1d4+3") ;bats
298		(list 20 1 100 "1d4+3") ;rats
299		(list 30 1 200 "1d6+4") ;bats n rats
300		(list 40 5 100 "1d3+2") ;slime
301		(list 50 2 100 "1d4+3") ;spiders
302		(list 60 3 100 "1d3+1") ;goblins
303		(list 70 2 110 "1d4+3") ;spiders 1q
304		(list 80 13 100 "1d6+4") ;headless
305		(list 90 2 150 "1d6+4") ;spiders +qs
306		(list 100 5 200 "1d6+3") ;slime+
307		(list 110 3 200 "1d6+4") ;goblin war
308		(list 120 7 20 "1d6+1")  ;ghost
309		(list 130 11 120 "1d6+4") ;skels
310		(list 140 4 300 "1d6+3") ;trolls
311		(list 150 6 100 "1d2")   ;zorn
312		(list 160 8 350 "1d6+3") ;gint
313		(list 170 7 22 "1d6+1")  ;ghost + d
314		(list 180 11 300 "2d4+4") ;deathknights
315		(list 190 11 310 "2d4+4") ;deathknights +d
316		(list 200 3 210 "1d6+5") ;goblin war +p
317		(list 210 7 200 "1d3")   ;demons
318		(list 220 3 250 "2d4+4") ;goblin tribe
319		(list 230 4 350 "1d6+5") ;trolls +m
320		(list 240 8 400 "2d4+4") ;gint + m
321		(list 250 10 300 "1d4")  ;dragon
322		(list 260 10 80 "1d6+3") ;dragon + gob
323		(list 270 9 260 "1d6+3") ;gazer
324		(list 280 13 330 "2d4+4") ;warlock
325		(list 290 12 205 "2d4+4") ;lich
326		(list 300 9 320 "2d4+4") ;gazers
327	)
328)
329
330;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
331;; handles
332
333(define (deeps-link-factory x y z map dir)
334		(list 'm_deeptempl_break nil)
335		)
336
337(define (deeps-init-cohesion mapdata)
338	(if (list-ref mapdata 10)
339		(begin
340			;;(kern-log-msg "begin cohesion check")
341			(prmap-ensure-cohesion mapdata -5 6 -6 5 0 deeps-link-factory)
342			;;(kern-log-msg "end cohesion check")
343			(mutable-list-set mapdata 10 #f)
344		)))
345
346(define (deeps-room-handle-deeps kplace kplayer)
347	(let* (
348		(roomdata (get-roomdata kplace))
349		(mapdata (prmap-get-mapdata (eval 'p_deeps_1)))
350		)
351		(prmap-room-freeze-current mapdata)
352		(prmap-room-init-neighbors kplace roomdata)
353		(prmap-room-init-links kplace roomdata mapdata)
354		(prmap-room-cleanout kplace)
355		(prmap-room-thaw kplace mapdata)
356		(prmap-room-blit-map kplace roomdata mapdata)
357		(prmap-room-init-contents kplace roomdata)
358	))
359
360(define (deeps-room-handle-garrison kplace kplayer)
361	(let* (
362		(roomdata (get-roomdata kplace))
363		(mapdata (prmap-get-mapdata (eval 'p_deeps_1)))
364		)
365		(deeps-init-cohesion mapdata)
366		(prmap-room-freeze-current mapdata)
367		(prmap-room-init-neighbors kplace roomdata)
368		(prmap-room-init-links kplace roomdata mapdata)
369	))
370
371;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
372;; Plot type stuff
373
374(mk-reusable-item
375 't_garrison_log "Garrison Log" s_lexicon v-hard
376 (lambda (klexicon kuser)
377   (kern-ui-page-text
378   "Garrison Log"
379   ""
380   (string-append
381	"The log details events at the garrison "
382	"while it was still in operation. Early "
383	"entries detail several attempts to "
384	"clear the surrounding caverns.")
385   ""
386   (string-append
387   "However, the paladins were "
388   "unable to even determine how "
389   "large the dungeon is, and "
390   "eventually settled on a policy "
391   "of containment by fortifying "
392   "this bottleneck position.")
393   )))
394
395