Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x | /**
* minetn-6 - NetHack special level
* Converted from: minetn-6.lua
*/
import * as des from '../sp_lev.js';
import { selection, shuffle, monkfoodshop } from '../sp_lev.js';
import { A_CHAOTIC, A_NEUTRAL, A_LAWFUL } from '../const.js';
export async function generate(_nhlib_align) {
const align = _nhlib_align;
// NetHack mines minetn-6.lua $NHDT-Date: 1652196031 2022/5/10 15:20:31 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.3 $
// Copyright (c) 1989-95 by Jean-Christophe Collet
// Copyright (c) 1991-95 by M. Stephenson
// NetHack may be freely redistributed. See license for details.
//
// "Bustling Town" by Kelly Bailey
des.level_init({ style: "solidfill", fg: " " });
des.level_flags("mazelevel", "inaccessibles");
des.level_init({ style: "mines", fg: ".", bg: "-", smoothed: true, joined: true,lit: 1,walled: true });
// Map extends the full height of the playable area in order to prevent any of
// the cavern fill from getting cut off by walls of the town buildings and
// creating inaccessible spaces. The inaccessibles flag does compensate for
// this, but it does so by doing things like creating backdoors into adjacent
// shops which we don't want.
await des.map({ halign: "center", valign: "top", map: `\
x--------xxxxxxxxxxx-------------------x
x------xxxxxxxxxxxxxx-----------------xx
.-----................----------------.x
.|...|................|...|..|...|...|..
.|...+..--+--.........|...|..|...|...|..
.|...|..|...|..-----..|...|..|-+---+--..
.-----..|...|--|...|..--+---+-.........x
........|...|..|...+.............-----.x
........-----..|...|......--+-...|...|..
x----...|...|+------..{...|..|...+...|..
x|..+...|...|.............|..|...|...|..
.|..|...|...|-+-.....---+-------------.x
.----...--+--..|..-+-|..................
...|........|..|..|..|----....--------.x
...|..T.....----..|..|...+....|......|..
...|-....{........|..|...|....+......|x.
...--..-....T.....--------....|......|x.
.......--.....................----------
.xxxx-----xxxxxxxxxxxxxxxxxx------------
xxxx-------xxxxxxxxxxxxxxx--------------
` });
await des.region(selection.area(0,0,39,19),"lit");
// stairs can generate 1 column left or right inside the map,
// in case the randomly generated mines layout doesn't extend outside the map
des.levregion({ type: "stair-up", region: [1,3,21,19], region_islev: 1, exclude: [1,0,39,18] });
des.levregion({ type: "stair-down", region: [60,3,75,19], region_islev: 1, exclude: [0,0,38,18] });
await des.region(selection.area(13,7,14,8),"unlit");
await des.region({ region: [9,9, 11,11], lit: 1, type: "candle shop", filled: 1 });
await des.region({ region: [16,6, 18,8], lit: 1, type: "tool shop", filled: 1 });
await des.region({ region: [23,3, 25,5], lit: 1, type: "shop", filled: 1 });
await des.region({ region: [22,14, 24,15], lit: 1, type: monkfoodshop(), filled: 1 });
await des.region({ region: [31,14, 36,16], lit: 1, type: "temple", filled: 1 });
await des.altar({ x: 35,y: 15,align: align[0],type: "shrine"});
des.door("closed",5,4);
des.door("locked",4,10);
des.door("closed",10,4);
des.door("closed",10,12);
des.door("locked",13,9);
des.door("locked",14,11);
des.door("closed",19,7);
des.door("closed",19,12);
des.door("closed",24,6);
des.door("closed",24,11);
des.door("closed",25,14);
des.door("closed",28,6);
des.door("locked",28,8);
des.door("closed",30,15);
des.door("closed",31,5);
des.door("closed",35,5);
des.door("closed",33,9);
await des.monster("gnome");
await des.monster("gnome");
await des.monster("gnome");
await des.monster("gnome");
await des.monster("gnome");
await des.monster("gnome");
await des.monster("gnome", 14, 8);
await des.monster("gnome lord", 14, 7);
await des.monster("gnome", 27, 10);
await des.monster("gnome lord");
await des.monster("gnome lord");
await des.monster("dwarf");
await des.monster("dwarf");
await des.monster("dwarf");
await des.monster({ id: "dwarf", peaceful: 1 });
await des.monster({ id: "dwarf", peaceful: 1 });
await des.monster({ id: "gnome", peaceful: 1 });
await des.monster({ id: "gnome", peaceful: 1 });
await des.monster({ id: "hobbit", peaceful: 1 });
await des.monster({ id: "goblin", peaceful: 1 });
await des.monster({ id: "kobold", peaceful: 1 });
await des.monster({ id: "dog", peaceful: 1 });
await des.monster({ id: "watchman", peaceful: 1 });
await des.monster({ id: "watchman", peaceful: 1 });
await des.monster({ id: "watchman", peaceful: 1 });
await des.monster({ id: "watch captain", peaceful: 1 });
await des.monster({ id: "watch captain", peaceful: 1 });
return des.finalize_level();
}
|