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.
This commit is contained in:
104
dat/Wiz-strt.lua
Normal file
104
dat/Wiz-strt.lua
Normal file
@@ -0,0 +1,104 @@
|
||||
-- NetHack 3.6 Wizard.des $NHDT-Date: 1432512783 2015/05/25 00:13:03 $ $NHDT-Branch: master $:$NHDT-Revision: 1.11 $
|
||||
-- Copyright (c) 1992 by David Cohrs
|
||||
-- NetHack may be freely redistributed. See license for details.
|
||||
--
|
||||
--
|
||||
-- The "start" level for the quest.
|
||||
--
|
||||
-- Here you meet your (besieged) class leader, Neferet the Green
|
||||
-- and receive your quest assignment.
|
||||
--
|
||||
des.level_init({ style = "solidfill", fg = " " });
|
||||
|
||||
des.level_flags("mazelevel", "noteleport", "hardfloor")
|
||||
|
||||
des.map([[
|
||||
............................................................................
|
||||
.....................C....CC.C........................C.....................
|
||||
..........CCC.....................CCC.......................................
|
||||
........CC........-----------.......C.C...C...C....C........................
|
||||
.......C.....---------------------...C..C..C..C.............................
|
||||
......C..C...------....\....------....C.....C...............................
|
||||
........C...||....|.........|....||.........................................
|
||||
.......C....||....|.........+....||.........................................
|
||||
.......C...||---+--.........|....|||........................................
|
||||
......C....||...............|--S--||........................................
|
||||
...........||--+--|++----|---|..|.SS..........C......C......................
|
||||
........C..||.....|..|...|...|--|.||..CC..C.....C..........C................
|
||||
.......C...||.....|..|.--|.|.|....||.................C..C...................
|
||||
.....C......||....|..|.....|.|.--||..C..C..........C...........}}}..........
|
||||
......C.C...||....|..-----.|.....||...C.C.C..............C....}}}}}}........
|
||||
.........C...------........|------....C..C.....C..CC.C......}}}}}}}}}}}.....
|
||||
.........CC..---------------------...C.C..C.....CCCCC.C.......}}}}}}}}......
|
||||
.........C........-----------..........C.C.......CCC.........}}}}}}}}}......
|
||||
..........C.C.........................C............C...........}}}}}........
|
||||
......................CCC.C.................................................
|
||||
]]);
|
||||
|
||||
-- first do cloud everywhere
|
||||
des.replace_terrain({ region={0,0, 75,19}, fromterrain=".", toterrain="C", chance=10 })
|
||||
-- then replace clouds inside the tower back to floor
|
||||
des.replace_terrain({ region={13,5, 33,15}, fromterrain="C", toterrain=".", chance=100 })
|
||||
|
||||
-- Dungeon Description
|
||||
des.region(selection.area(00,00,75,19), "lit")
|
||||
des.region(selection.area(35,00,49,03), "unlit")
|
||||
des.region(selection.area(43,12,49,16), "unlit")
|
||||
des.region({ region={19,11,33,15}, lit=0, type="ordinary", prefilled=0, irregular=1 })
|
||||
des.region(selection.area(30,10,31,10), "unlit")
|
||||
-- Stairs
|
||||
des.stair("down", 30,10)
|
||||
-- Portal arrival point
|
||||
des.terrain({63,06}, ".")
|
||||
des.levregion({ region = {63,06,63,06}, type="branch" })
|
||||
-- Doors
|
||||
des.door("closed",31,09)
|
||||
des.door("closed",16,08)
|
||||
des.door("closed",28,07)
|
||||
des.door("locked",34,10)
|
||||
des.door("locked",35,10)
|
||||
des.door("closed",15,10)
|
||||
des.door("locked",19,10)
|
||||
des.door("locked",20,10)
|
||||
-- Neferet the Green, the quest leader
|
||||
des.monster("Neferet the Green", 23, 05)
|
||||
-- The treasure of the quest leader
|
||||
des.object("chest", 24, 05)
|
||||
-- apprentice guards for the audience chamber
|
||||
des.monster("apprentice", 30, 07)
|
||||
des.monster("apprentice", 24, 06)
|
||||
des.monster("apprentice", 15, 06)
|
||||
des.monster("apprentice", 15, 12)
|
||||
des.monster("apprentice", 26, 11)
|
||||
des.monster("apprentice", 27, 11)
|
||||
des.monster("apprentice", 19, 09)
|
||||
des.monster("apprentice", 20, 09)
|
||||
-- Eels in the pond
|
||||
des.monster("giant eel", 62, 14)
|
||||
des.monster("giant eel", 69, 15)
|
||||
des.monster("giant eel", 67, 17)
|
||||
-- Non diggable walls
|
||||
des.non_diggable(selection.area(00,00,75,19))
|
||||
-- Random traps
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
-- Monsters on siege duty.
|
||||
des.monster({ class = "B", x=60, y=09, peaceful = 0 })
|
||||
des.monster({ class = "W", x=60, y=10, peaceful = 0 })
|
||||
des.monster({ class = "B", x=60, y=11, peaceful = 0 })
|
||||
des.monster({ class = "B", x=60, y=12, peaceful = 0 })
|
||||
des.monster({ class = "i", x=60, y=13, peaceful = 0 })
|
||||
des.monster({ class = "B", x=61, y=10, peaceful = 0 })
|
||||
des.monster({ class = "B", x=61, y=11, peaceful = 0 })
|
||||
des.monster({ class = "B", x=61, y=12, peaceful = 0 })
|
||||
des.monster({ class = "B", x=35, y=03, peaceful = 0 })
|
||||
des.monster({ class = "i", x=35, y=17, peaceful = 0 })
|
||||
des.monster({ class = "B", x=36, y=17, peaceful = 0 })
|
||||
des.monster({ class = "B", x=34, y=16, peaceful = 0 })
|
||||
des.monster({ class = "i", x=34, y=17, peaceful = 0 })
|
||||
des.monster({ class = "W", x=67, y=02, peaceful = 0 })
|
||||
des.monster({ class = "B", x=10, y=19, peaceful = 0 })
|
||||
Reference in New Issue
Block a user