Files
nethack/dat/wizard1.lua
Pasi Kallinen fd55d9118e Use lua for special level files
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.
2019-11-06 18:43:20 +02:00

93 lines
3.0 KiB
Lua

-- NetHack 3.6 yendor.des $NHDT-Date: 1432512783 2015/05/25 00:13:03 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $
-- 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.
--
--
-- The top (real) wizard level.
-- Keeping the Moat for old-time's sake
des.level_init({ style="mazegrid", bg ="-" });
des.level_flags("mazelevel", "noteleport", "hardfloor")
des.map([[
----------------------------.
|.......|..|.........|.....|.
|.......S..|.}}}}}}}.|.....|.
|..--S--|..|.}}---}}.|---S-|.
|..|....|..|.}--.--}.|..|..|.
|..|....|..|.}|...|}.|..|..|.
|..--------|.}--.--}.|..|..|.
|..|.......|.}}---}}.|..|..|.
|..S.......|.}}}}}}}.|..|..|.
|..|.......|.........|..|..|.
|..|.......|-----------S-S-|.
|..|.......S...............|.
----------------------------.
]]);
des.levregion({ type="stair-up", region={01,00,79,20}, region_islev=1, exclude={0,0,28,12} })
des.levregion({ type="stair-down", region={01,00,79,20}, region_islev=1, exclude={0,0,28,12} })
des.levregion({ type="branch", region={01,00,79,20}, region_islev=1, exclude={0,0,28,12} })
des.teleport_region({ region={01,00,79,20}, region_islev=1, exclude={0,0,27,12} })
-- Make it a morgue for rm id in mkmaze.c
-- for the purpose of random sdoor placement
des.region({ region={12,01, 20,09}, lit=0, type="morgue", prefilled=1 })
-- another region to constrain monster arrival
des.region({ region={01,01, 10,11}, lit=0, type="ordinary", prefilled=0 })
des.mazewalk(28,05,"east")
des.ladder("down", 06,05)
-- Non diggable walls
-- Walls inside the moat stay diggable
des.non_diggable(selection.area(00,00,11,12))
des.non_diggable(selection.area(11,00,21,00))
des.non_diggable(selection.area(11,10,27,12))
des.non_diggable(selection.area(21,00,27,10))
-- Non passable walls
des.non_passwall(selection.area(00,00,11,12))
des.non_passwall(selection.area(11,00,21,00))
des.non_passwall(selection.area(11,10,27,12))
des.non_passwall(selection.area(21,00,27,10))
-- The wizard and his guards
des.monster({ id = "Wizard of Yendor", x=16, y=05, asleep=1 })
des.monster("hell hound", 15, 05)
des.monster("vampire lord", 17, 05)
-- The local treasure
des.object("Book of the Dead", 16, 05)
-- Surrounding terror
des.monster("kraken", 14, 02)
des.monster("giant eel", 17, 02)
des.monster("kraken", 13, 04)
des.monster("giant eel", 13, 06)
des.monster("kraken", 19, 04)
des.monster("giant eel", 19, 06)
des.monster("kraken", 15, 08)
des.monster("giant eel", 17, 08)
des.monster("piranha", 15, 02)
des.monster("piranha", 19, 08)
-- Random monsters
des.monster("D")
des.monster("H")
des.monster("&")
des.monster("&")
des.monster("&")
des.monster("&")
-- And to make things a little harder.
des.trap("board",16,04)
des.trap("board",16,06)
des.trap("board",15,05)
des.trap("board",17,05)
-- Random traps.
des.trap("spiked pit")
des.trap("sleep gas")
des.trap("anti magic")
des.trap("magic")
-- Some random loot.
des.object("ruby")
des.object("!")
des.object("!")
des.object("?")
des.object("?")
des.object("+")
des.object("+")
des.object("+")