All files / js/levels bigrm-2.js

92.68% Statements 76/82
62.5% Branches 5/8
100% Functions 1/1
92.68% Lines 76/82

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 831x 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 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  
/**
 * bigrm-2 - NetHack special level
 * Converted from: bigrm-2.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-2.lua	$NHDT-Date: 1652196021 2022/5/10 15:20:21 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
    // 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(`\
---------------------------------------------------------------------------
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
|.........................................................................|
---------------------------------------------------------------------------
`);
    // Dungeon Description
    await des.region(selection.area(1,1,73,16),"lit");
 
    let darkness;
 
    let choice = (rn2((3) - (0) + 1) + (0))
    if (choice == 0) {
       darkness = selection.area(1,7,22,9).union(selection.area(24,1,50,5))
          .union(selection.area(24,11,50,16)).union(selection.area(52,7,73,9));
    } else if (choice == 1) {
       darkness = selection.area(24,1,50,16);
    } else if (choice == 2) {
       darkness = selection.area(1,1,22,16).union(selection.area(52,1,73,16));
    }
 
    if (darkness !== null) {
       await des.region(darkness,"unlit");
       if (percent(25)) {
          des.replace_terrain({ selection: darkness.grow(),
                                fromterrain: ".", toterrain: "I" });
       }
    }
 
    // Stairs
    des.stair("up");
    des.stair("down");
    // Non diggable walls
    des.non_diggable();
    // Objects
    for (let i = 1, __end_i = 15; i <= __end_i; i++) {
       await des.object();
    }
    // Random traps
    for (let i = 1, __end_i = 6; i <= __end_i; i++) {
       await des.trap();
    }
    // Random monsters.
    for (let i = 1, __end_i = 28; i <= __end_i; i++) {
       await des.monster();
    }
 
 
    return des.finalize_level();
}