All files / js/levels bigrm-13.js

100% Statements 96/96
100% Branches 9/9
30% Functions 3/10
100% Lines 96/96

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 972x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 6x 42x 42x 42x 42x 42x 6x 6x 2x 2x 2x 2x 2x 2x 2x 30x 30x 2x 12x 12x 2x 56x 56x 2x 2x 2x 2x 2x  
/**
 * bigrm-13 - NetHack special level
 * Converted from: bigrm-13.lua
 */
 
import * as des from '../sp_lev.js';
import { selection } from '../sp_lev.js';
import { rn2 } from '../rng.js';
 
export async function generate() {
    // NetHack bigroom bigrm-13.lua	$NHDT-Date: 1652196024 2022/5/10 15:20:24 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $
    // Copyright (c) 2026 by Pasi Kallinen
    // NetHack may be freely redistributed.  See license for details.
    // 
    // Pillars
 
    des.level_init({ style: "solidfill", fg: " " });
    des.level_flags("mazelevel", "noflip");
 
    await des.map(`\
---------------------------------------------------------------------------
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
---------------------------------------------------------------------------
`);
 
    let pillar = `\
---
| |
---`;
 
    let filters = [
       // 1: all pillars
       async function(x, y) { return true; },
       // 2: 3 vertical lines
       async function(x, y) { return (x%2 == 1); },
       // 3: checkerboard
       async function(x, y) { return (((x+y)%2) == 0); },
       // 4: center row
       async function(x, y) { return (y%2 == 1); },
       // 5: top and bottom rows
       async function(x, y) { return (y%2 == 0); },
       // 6: random 50%
       async function(x, y) { return ((rn2((1) - (0) + 1) + (0)) == 0); },
       // 7: corners and center
       async function(x, y) { return ((x/3)%2 == y%2); },
       // 8: slanted
       async function(x, y) { return (Math.floor((x+1)/3) == y); },
    ];
 
    let idx = rn2(filters.length);
 
    for (let y = 0, __end_y = 2; y <= __end_y; y++) {
       for (let x = 0, __end_x = 6; x <= __end_x; x++) {
          if ((filters[idx](x, y))) {
             await des.map({ coord: [12 + x*9, 4 + y*5], map: pillar, contents: async function() { } });
          }
       }
    }
 
    await des.region(selection.area(0,0,75,18), "lit");
    des.wallify();
    des.non_diggable();
 
    des.stair("up");
    des.stair("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();
    }
 
 
 
    return des.finalize_level();
}