All files / js/levels Pri-goal.js

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

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 97 98 991x 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 1x 1x 1x 1x 1x 1x 1x 1x 1x  
/**
 * Pri-goal - NetHack special level
 * Converted from: Pri-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 Priest Pri-goal.lua	$NHDT-Date: 1687033651 2023/6/17 20:27:31 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
    // 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 [note: eroded=-1 => obj->oerodeproof=1]
    await des.object({ id: "helm of brilliance", coord: place[placeidx],
                 buc: "blessed", spe: 0, eroded: -1, name: "The Mitre of Holiness" })
    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("Nalzok",place[placeidx]);
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("human zombie");
    await des.monster("Z");
    await des.monster("Z");
    await des.monster("wraith");
    await des.monster("wraith");
    await des.monster("wraith");
    await des.monster("wraith");
    await des.monster("wraith");
    await des.monster("wraith");
    await des.monster("wraith");
    await des.monster("wraith");
    await des.monster("W");
 
 
    return des.finalize_level();
}