All files / js/levels baalz.js

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

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 802x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x  
/**
 * baalz - NetHack special level
 * Converted from: baalz.lua
 */
 
import * as des from '../sp_lev.js';
import { selection } from '../sp_lev.js';
 
export async function generate() {
    // NetHack gehennom baalz.lua	$NHDT-Date: 1652196020 2022/5/10 15:20:20 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
    // Copyright (c) 1989 by Jean-Christophe Collet
    // Copyright (c) 1992 by M. Stephenson and Izchak Miller
    // NetHack may be freely redistributed.  See license for details.
    // 
    des.level_init({ style: "solidfill", fg: " ", lit: 0 });
 
    // TODO FIXME: see baalz_fixup - the legs get removed currently.
 
    des.level_flags("mazelevel", "corrmaze");
    // the two pools are fakes used to mark spots which need special wall fixups
    // the two iron bars are eyes and spots to their left will be made diggable
    await des.map({ halign: "right", valign: "center", map: `\
-------------------------------------------------
|                   ----               ----      
|          ----     |     -----------  |         
| ------      |  ---------|.........|--P         
| F....|  -------|...........--------------      
---....|--|..................S............|----  
+...--....S..----------------|............S...|  
---....|--|..................|............|----  
| F....|  -------|...........-----S--------      
| ------      |  ---------|.........|--P         
|          ----     |     -----------  |         
|                   ----               ----      
-------------------------------------------------
` });
    des.levregion({ region: [1,0,15,20], region_islev: 1, exclude: [15,1,70,16], exclude_islev: 1, type: "stair-up" });
    des.levregion({ region: [1,0,15,20], region_islev: 1, exclude: [15,1,70,16], exclude_islev: 1, type: "branch" });
    des.teleport_region({region: [1,0,15,20], region_islev: 1, exclude: [15,1,70,16], exclude_islev: 1 });
    // this actually leaves the farthest right column diggable
    des.non_diggable(selection.area(0,0,47,12));
    await des.mazewalk(0,6,"west");
    des.stair("down", 44,6);
    des.door("locked",0,6);
    // The fellow in residence
    await des.monster("Baalzebub",35,6);
    // Some random weapons and armor.
    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("?");
    // Some traps.
    await des.trap("spiked pit");
    await des.trap("fire");
    await des.trap("sleep gas");
    await des.trap("anti magic");
    await des.trap("fire");
    await des.trap("magic");
    await des.trap("magic");
    // Random monsters.
    await des.monster("ghost",37,7);
    await des.monster("horned devil",32,5);
    await des.monster("barbed devil",38,7);
    await des.monster("L");
    // Some Vampires for good measure
    await des.monster("V");
    await des.monster("V");
    await des.monster("V");
 
 
 
    return des.finalize_level();
}