All files / js/levels bigrm-1.js

83.15% Statements 79/95
60% Branches 6/10
100% Functions 1/1
83.15% Lines 79/95

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 962x 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 1x 1x 1x 1x       1x         1x               1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 30x 30x 2x 2x 12x 12x 2x 2x 56x 56x 2x 2x 2x 2x  
/**
 * bigrm-1 - NetHack special level
 * Converted from: bigrm-1.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-1.lua	$NHDT-Date: 1652196021 2022/5/10 15:20:21 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.3 $
    // 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(`\
---------------------------------------------------------------------------
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
---------------------------------------------------------------------------
`);
 
 
    if (percent(80)) {
       let terrains = [ "-", "F", "L", "T", "C" ];
       let tidx = rn2(terrains.length);
       let choice = (rn2((5) - (0) + 1) + (0));
       if (choice == 0) {
          // one horizontal line
          des.terrain(selection.line(10,8, 65,8), terrains[tidx]);
       } else if (choice == 1) {
          // two vertical lines
          let sel = selection.line(15,4, 15, 13).union(selection.line(59,4, 59, 13));
          des.terrain(sel, terrains[tidx]);
       } else if (choice == 2) {
          // plus sign
          sel = selection.line(10,8, 64, 8).union(selection.line(37,3, 37, 14));
          des.terrain(sel, terrains[tidx]);
       } else if (choice == 3) {
          // brackets:  [  ]
          des.terrain(selection.rect(4,4, 70,13), terrains[tidx]);
          sel = selection.line(25,4, 50,4).union(selection.line(25,13, 50,13));
          des.terrain(sel, '.');
       } else if (choice == 4) {
          // snake
          des.terrain(selection.fillrect(5,5, 69, 12), terrains[tidx]);
          for (let i = 0, __end_i = 7; i <= __end_i; i++) {
             let x = 6 + i*8;
             let y = 5 + (i%2);
             des.terrain(selection.fillrect(x, y, x+6, y+6), '.');
          }
       } else {
          // nothing
       }
    }
 
    await des.region(selection.area(1,1, 73, 16), "lit");
 
    des.stair("up");
    des.stair("down");
 
    des.non_diggable();
 
    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();
}