All files / js/levels soko4-2.js

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

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 851x 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  
/**
 * soko4-2 - NetHack special level
 * Converted from: soko4-2.lua
 */
 
import * as des from '../sp_lev.js';
import { selection } from '../sp_lev.js';
 
export async function generate() {
    // NetHack sokoban soko4-2.lua	$NHDT-Date: 1652196036 2022/5/10 15:20:36 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
    // Copyright (c) 1998-1999 by Kevin Hugo
    // NetHack may be freely redistributed.  See license for details.
    // 
    des.level_init({ style: "solidfill", fg: " " });
 
    des.level_flags("mazelevel", "noteleport", "hardfloor", "premapped", "sokoban", "solidify");
 
    await des.map(`\
-------- ------
|.|....|-|....|
|.|-..........|
|.||....|.....|
|.||....|.....|
|.|-----|.-----
|.|    |......|
|.-----|......|
|.............|
|..|---|......|
----   --------
`);
    des.levregion({ region: [3,1,3,1], type: "branch" });
    des.stair("up", 1,1);
    await des.region(selection.area(0,0,14,10),"lit");
    des.non_diggable(selection.area(0,0,14,10));
    des.non_passwall(selection.area(0,0,14,10));
 
    // Boulders
    await des.object("boulder",5,2);
    await des.object("boulder",6,2);
    await des.object("boulder",6,3);
    await des.object("boulder",7,3);
    // 
    await des.object("boulder",9,5);
    await des.object("boulder",10,3);
    await des.object("boulder",11,2);
    await des.object("boulder",12,3);
    // 
    await des.object("boulder",7,8);
    await des.object("boulder",8,8);
    await des.object("boulder",9,8);
    await des.object("boulder",10,8);
 
    // prevent monster generation over the (filled) pits
    des.exclusion({ type: "monster-generation", region: [ 1,1, 1,9 ] });
    des.exclusion({ type: "monster-generation", region: [ 1,8, 7,9 ] });
    // Traps
    await des.trap("pit",1,2);
    await des.trap("pit",1,3);
    await des.trap("pit",1,4);
    await des.trap("pit",1,5);
    await des.trap("pit",1,6);
    await des.trap("pit",1,7);
    await des.trap("pit",3,8);
    await des.trap("pit",4,8);
    await des.trap("pit",5,8);
    await des.trap("pit",6,8);
 
    // A little help
    await des.object("scroll of earth",1,9);
    await des.object("scroll of earth",2,9);
 
    // Random objects
    await des.object({ class: "%" });
    await des.object({ class: "%" });
    await des.object({ class: "%" });
    await des.object({ class: "%" });
    await des.object({ class: "=" });
    await des.object({ class: "/" });
 
 
 
 
    return des.finalize_level();
}