All files / js/levels bigrm-10.js

92% Statements 69/75
83.33% Branches 5/6
100% Functions 1/1
92% Lines 69/75

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 761x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x             1x 1x 1x 1x 1x 1x 1x 1x 15x 15x 1x 1x 6x 6x 1x 1x 28x 28x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
/**
 * bigrm-10 - NetHack special level
 * Converted from: bigrm-10.lua
 */
 
import * as des from '../sp_lev.js';
import { selection, percent } from '../sp_lev.js';
import { rn2 } from '../rng.js';
 
export async function generate() {
    // NetHack bigroom bigrm-10.lua	$NHDT-Date: 1652196024 2022/5/10 15:20:24 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
    // Copyright (c) 1989 by Jean-Christophe Collet
    // Copyright (c) 1990 by M. Stephenson
    // NetHack may be freely redistributed.  See license for details.
    // 
    des.level_init({ style: "solidfill", fg: " " });
    des.level_flags("mazelevel", "noflip");
 
    await des.map(`\
.......................................................................
.......................................................................
.......................................................................
.......................................................................
...C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C...
...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
...C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C...
...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
...C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C...
...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
...C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C...
...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
...C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C...
...CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
...C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C...
.......................................................................
.......................................................................
.......................................................................
.......................................................................
`);
 
    if (percent(40)) {
       // occasionally it's not a fog maze
       let terrain = [ "L", "}", "T", "-", "F" ];
       let tidx = rn2(terrain.length);
       // break it up a bit
       des.replace_terrain({ region: [0, 0, 70, 18], fromterrain: "C", toterrain: ".", chance: 5 });
       des.replace_terrain({ region: [0, 0, 70, 18], fromterrain: "C", toterrain: terrain[tidx] });
    };
 
    await des.region(selection.area(0,0,70,18), "lit");
 
    // when falling down on this level, never } up in the fog maze
    des.teleport_region({ region: [0,0,70,18], exclude: [2,3,68,15], dir: "down" });
 
    for (let i = 1, __end_i = 15; i <= __end_i; i++) {
       await des.object();
    }
 
    for (let i = 1, __end_i = 6; i <= __end_i; i++) {
       await des.trap();
    }
 
    for (let i = 1, __end_i = 28; i <= __end_i; i++) {
      await des.monster();
    }
 
    await des.mazewalk({ x: 4, y: 2, dir: "south", stocked: 0 });
 
    // Stairs up, not in the fog maze
    des.levregion({ region: [0,0,70,18], exclude: [2,3,68,15], type: "stair-up"});
    des.stair("down");
 
 
    return des.finalize_level();
}