All files / js/levels soko3-1.js

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

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 951x 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  
/**
 * soko3-1 - NetHack special level
 * Converted from: soko3-1.lua
 */
 
import * as des from '../sp_lev.js';
import { selection } from '../sp_lev.js';
 
export async function generate() {
    // NetHack sokoban soko3-1.lua	$NHDT-Date: 1652196035 2022/5/10 15:20:35 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
    // 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", "premapped", "sokoban", "solidify");
 
    await des.map(`\
-----------       -----------
|....|....|--     |.........|
|....|......|     |.........|
|.........|--     |.........|
|....|....|       |.........|
|-.---------      |.........|
|....|.....|      |.........|
|....|.....|      |.........|
|..........|      |.........|
|....|.....|---------------+|
|....|......................|
-----------------------------
`);
    des.stair("down", 11,2);
    des.stair("up", 23,4);
    des.door("locked", 27,9);
    await des.region(selection.area(0,0,28,11), "lit");
    des.non_diggable(selection.area(0,0,28,11));
    des.non_passwall(selection.area(0,0,28,11));
 
    // Boulders
    await des.object("boulder",3,2);
    await des.object("boulder",4,2);
    // 
    await des.object("boulder",6,2);
    await des.object("boulder",6,3);
    await des.object("boulder",7,2);
    // 
    await des.object("boulder",3,6);
    await des.object("boulder",2,7);
    await des.object("boulder",3,7);
    await des.object("boulder",3,8);
    await des.object("boulder",2,9);
    await des.object("boulder",3,9);
    await des.object("boulder",4,9);
    // 
    await des.object("boulder",6,7);
    await des.object("boulder",6,9);
    await des.object("boulder",8,7);
    await des.object("boulder",8,10);
    await des.object("boulder",9,8);
    await des.object("boulder",9,9);
    await des.object("boulder",10,7);
    await des.object("boulder",10,10);
 
    // prevent monster generation over the (filled) holes
    des.exclusion({ type: "monster-generation", region: [ 11,10, 27,10 ] });
    // Traps
    await des.trap("hole",12,10);
    await des.trap("hole",13,10);
    await des.trap("hole",14,10);
    await des.trap("hole",15,10);
    await des.trap("hole",16,10);
    await des.trap("hole",17,10);
    await des.trap("hole",18,10);
    await des.trap("hole",19,10);
    await des.trap("hole",20,10);
    await des.trap("hole",21,10);
    await des.trap("hole",22,10);
    await des.trap("hole",23,10);
    await des.trap("hole",24,10);
    await des.trap("hole",25,10);
    await des.trap("hole",26,10);
 
    // 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();
}