Game is playable, and should compile on linux and Windows. Assumes you have a lua 5.3 library available. Removes level compiler and associated files. Replaces special level des-files with lua scripts. Exposes some NetHack internals to lua: - des-table with commands to create special levels - nh-table with NetHack core commands - nhc-table with some constants - u-table with some player-specific data (u-struct) - selection userdata Adds some rudimentary tests. Adds new extended command #wizloadlua to run a specific script, and #wizloaddes to run a specific level-creation script. nhlib.lua is loaded for every lua script. Download and untar lua: mkdir lib cd lib curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxf lua-5.3.5.tar.gz Then make nethack normally.
153 lines
4.8 KiB
Lua
153 lines
4.8 KiB
Lua
-- NetHack 3.6 mines.des $NHDT-Date: 1432512783 2015/05/25 00:13:03 $ $NHDT-Branch: master $:$NHDT-Revision: 1.25 $
|
|
-- Copyright (c) 1989-95 by Jean-Christophe Collet
|
|
-- Copyright (c) 1991-95 by M. Stephenson
|
|
-- NetHack may be freely redistributed. See license for details.
|
|
--
|
|
-- Mine end level variant 2
|
|
-- "Gnome King's Wine Cellar"
|
|
|
|
des.level_init({ style = "solidfill", fg = " " });
|
|
|
|
des.level_flags("mazelevel");
|
|
|
|
des.map([[
|
|
---------------------------------------------------------------------------
|
|
|...................................................| |
|
|
|.|---------S--.--|...|--------------------------|..| |
|
|
|.||---| |.||-| |...|..........................|..| |
|
|
|.||...| |-|.|.|---...|.............................| .. |
|
|
|.||...|-|.....|....|-|..........................|..|. .. |
|
|
|.||.....|-S|..|....|............................|..|.. |
|
|
|.||--|..|..|..|-|..|----------------------------|..|-. |
|
|
|.| |..|..|....|..................................|... |
|
|
|.| |..|..|----|..-----------------------------|..|.... |
|
|
|.|---|..|--|.......|----------------------------|..|..... |
|
|
|...........|----.--|......................| |..|....... |
|
|
|-----------|...|.| |------------------|.|.|-----|..|.....|.. |
|
|
|-----------|.{.|.|--------------------|.|..........|.....|.... |
|
|
|...............|.S......................|-------------..-----... |
|
|
|.--------------|.|--------------------|.|......................... |
|
|
|.................| |.....................|........ |
|
|
---------------------------------------------------------------------------
|
|
]]);
|
|
|
|
if math.random(0, 99) < 50 then
|
|
des.terrain({55,14},"-")
|
|
des.terrain({56,14},"-")
|
|
des.terrain({61,15},"|")
|
|
des.terrain({52,5}, "S")
|
|
des.door("locked", 52,5)
|
|
end
|
|
if math.random(0, 99) < 50 then
|
|
des.terrain({18,1}, "|")
|
|
des.terrain(selection.area(7,12, 8,13), ".")
|
|
end
|
|
if math.random(0, 99) < 50 then
|
|
des.terrain({49,4}, "|")
|
|
des.terrain({21,5}, ".")
|
|
end
|
|
if math.random(0, 99) < 50 then
|
|
if math.random(0, 99) < 50 then
|
|
des.terrain({22,1}, "|")
|
|
else
|
|
des.terrain({50,7}, "-")
|
|
des.terrain({51,7}, "-")
|
|
end
|
|
end
|
|
|
|
|
|
-- Dungeon Description
|
|
des.feature("fountain", {14,13})
|
|
des.region(selection.area(23,03,48,06),"lit")
|
|
des.region(selection.area(21,06,22,06),"lit")
|
|
des.region(selection.area(14,04,14,04),"unlit")
|
|
des.region(selection.area(10,05,14,08),"unlit")
|
|
des.region(selection.area(10,09,11,09),"unlit")
|
|
des.region(selection.area(15,08,16,08),"unlit")
|
|
-- Secret doors
|
|
des.door("locked",12,02)
|
|
des.door("locked",11,06)
|
|
-- Stairs
|
|
des.stair("up", 36,04)
|
|
-- Non diggable walls
|
|
des.non_diggable(selection.area(00,00,52,17))
|
|
des.non_diggable(selection.area(53,00,74,00))
|
|
des.non_diggable(selection.area(53,17,74,17))
|
|
des.non_diggable(selection.area(74,01,74,16))
|
|
des.non_diggable(selection.area(53,07,55,07))
|
|
des.non_diggable(selection.area(53,14,61,14))
|
|
-- The Gnome King's wine cellar.
|
|
-- the Trespassers sign is a long-running joke
|
|
des.engraving({12,03},"engrave","You are now entering the Gnome King's wine cellar.")
|
|
des.engraving({12,04},"engrave","Trespassers will be persecuted!")
|
|
des.object("booze", 10, 07)
|
|
des.object("booze", 10, 07)
|
|
des.object("!", 10, 07)
|
|
des.object("booze", 10, 08)
|
|
des.object("booze", 10, 08)
|
|
des.object("!", 10, 08)
|
|
des.object("booze", 10, 09)
|
|
des.object("booze", 10, 09)
|
|
des.object("object detection", 10, 09)
|
|
-- Objects
|
|
-- The Treasure chamber...
|
|
des.object("diamond", 69, 04)
|
|
des.object("*", 69, 04)
|
|
des.object("diamond", 69, 04)
|
|
des.object("*", 69, 04)
|
|
des.object("emerald", 70, 04)
|
|
des.object("*", 70, 04)
|
|
des.object("emerald", 70, 04)
|
|
des.object("*", 70, 04)
|
|
des.object("emerald", 69, 05)
|
|
des.object("*", 69, 05)
|
|
des.object("ruby", 69, 05)
|
|
des.object("*", 69, 05)
|
|
des.object("ruby", 70, 05)
|
|
des.object("amethyst", 70, 05)
|
|
des.object("*", 70, 05)
|
|
des.object("amethyst", 70, 05)
|
|
des.object("luckstone", 70, 05)
|
|
-- Scattered gems...
|
|
des.object("*")
|
|
des.object("*")
|
|
des.object("*")
|
|
des.object("*")
|
|
des.object("*")
|
|
des.object("*")
|
|
des.object("*")
|
|
des.object("(")
|
|
des.object("(")
|
|
des.object()
|
|
des.object()
|
|
des.object()
|
|
-- Random traps
|
|
des.trap()
|
|
des.trap()
|
|
des.trap()
|
|
des.trap()
|
|
des.trap()
|
|
des.trap()
|
|
-- Random monsters.
|
|
des.monster("gnome king")
|
|
des.monster("gnome lord")
|
|
des.monster("gnome lord")
|
|
des.monster("gnome lord")
|
|
des.monster("gnomish wizard")
|
|
des.monster("gnomish wizard")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("gnome")
|
|
des.monster("hobbit")
|
|
des.monster("hobbit")
|
|
des.monster("dwarf")
|
|
des.monster("dwarf")
|
|
des.monster("dwarf")
|
|
des.monster("h")
|