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