All files / js/levels Mon-goal.js

100% Statements 89/89
100% Branches 2/2
100% Functions 1/1
100% Lines 89/89

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 901x 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 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  
/**
 * Mon-goal - NetHack special level
 * Converted from: Mon-goal.lua
 */
 
import * as des from '../sp_lev.js';
import { selection } from '../sp_lev.js';
import { rn2 } from '../rng.js';
 
export async function generate() {
    // NetHack Monk Mon-goal.lua	$NHDT-Date: 1652196007 2022/5/10 15:20:7 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
    // Copyright (c) 1989 by Jean-Christophe Collet
    // Copyright (c) 1991-2 by M. Stephenson
    // NetHack may be freely redistributed.  See license for details.
    // 
    // des.level_init({ style: "solidfill", fg: " " });
 
    des.level_flags("mazelevel");
 
    des.level_init({ style: "mines", fg: "L", bg: ".", smoothed: false, joined: false, lit: 0, walled: false });
 
    await des.map(`\
xxxxxx..xxxxxx...xxxxxxxxx
xxxx......xx......xxxxxxxx
xx.xx.............xxxxxxxx
x....................xxxxx
......................xxxx
......................xxxx
xx........................
xxx......................x
xxx................xxxxxxx
xxxx.....x.xx.......xxxxxx
xxxxx...xxxxxx....xxxxxxxx
`);
    // Dungeon Description
    let place = [ [14,4],[13,7] ]
    let placeidx = rn2(place.length);
 
    await des.region(selection.area(0,0,25,10), "unlit");
    // Stairs
    des.stair("up", 20,5);
    // Objects
    await des.object({ id: "lenses", coord: place[placeidx], buc: "blessed", spe: 0, name: "The Eyes of the Overworld" });
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    await des.object();
    // Random traps
    await des.trap("fire");
    await des.trap("fire");
    await des.trap("fire");
    await des.trap("fire");
    await des.trap();
    await des.trap();
    // Random monsters.
    await des.monster("Master Kaen",place[placeidx]);
    await des.altar({ coord: place[placeidx], align: "noalign", type: "altar" });
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("earth elemental");
    await des.monster("xorn");
    await des.monster("xorn");
    await des.monster("xorn");
    await des.monster("xorn");
    await des.monster("xorn");
    await des.monster("xorn");
    await des.monster("xorn");
    await des.monster("xorn");
    await des.monster("xorn");
 
 
    return des.finalize_level();
}