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:
163
dat/Rog-strt.lua
Normal file
163
dat/Rog-strt.lua
Normal file
@@ -0,0 +1,163 @@
|
||||
-- NetHack 3.6 Rogue.des $NHDT-Date: 1432512784 2015/05/25 00:13:04 $ $NHDT-Branch: master $:$NHDT-Revision: 1.11 $
|
||||
-- Copyright (c) 1992 by Dean Luick
|
||||
-- NetHack may be freely redistributed. See license for details.
|
||||
--
|
||||
--
|
||||
-- The "start" level for the quest.
|
||||
--
|
||||
-- Here you meet your (besieged) class leader, Master of Thieves
|
||||
-- and receive your quest assignment.
|
||||
--
|
||||
des.level_init({ style = "solidfill", fg = " " });
|
||||
|
||||
des.level_flags("mazelevel", "noteleport", "hardfloor", "nommap")
|
||||
|
||||
-- 1 2 3 4 5 6 7
|
||||
--123456789012345678901234567890123456789012345678901234567890123456789012345
|
||||
des.map([[
|
||||
---------------------------------.------------------------------------------
|
||||
|.....|.||..........|....|......|.|.........|.......+............---.......|
|
||||
|.....|..+..........+....---....S.|...-S-----.-----.|............+.+.......|
|
||||
|.....+.||........---......|....|.|...|.....|.|...|.---.....------.--------|
|
||||
|-----|.-------|..|........------.-----.....|.--..|...-------..............|
|
||||
|.....|........------+------..........+.....|..--S---.........------.-----..
|
||||
|.....|.------...............-----.}}.--------.|....-------.---....|.+...--|
|
||||
|..-+--.|....|-----.--------.|...|.....+.....|.|....|.....+.+......|.--....|
|
||||
|..|....|....|....+.|......|.|...-----.|.....|.--...|.....|.|......|..|....|
|
||||
|..|.-----S----...|.+....-----...|...|.----..|..|.---....--.---S-----.|----|
|
||||
|..|.|........|...------.|.S.....|...|....-----.+.|......|..|.......|.|....|
|
||||
|---.-------..|...|....|.|.|.....|...----.|...|.|---.....|.|-.......|.---..|
|
||||
...........|..S...|....---.----S----..|...|...+.|..-------.---+-....|...--+|
|
||||
|---------.---------...|......|....S..|.---...|.|..|...........----.---....|
|
||||
|........|.........|...+.------....|---.---...|.--+-.----.----....|.+...--+|
|
||||
|........|.---+---.|----.--........|......-----......|..|..|.--+-.|.-S-.|..|
|
||||
|........|.|.....|........----------.----.......---.--..|-.|....|.-----.|..|
|
||||
|----....+.|.....----+---............|..|--------.+.|...SS.|....|.......|..|
|
||||
|...--+-----.....|......|.------------............---...||.------+--+----..|
|
||||
|..........S.....|......|.|..........S............|.....||...|.....|....|..|
|
||||
-------------------------.--------------------------------------------------
|
||||
]]);
|
||||
-- Dungeon Description
|
||||
--REGION:(00,00,75,20),lit,"ordinary"
|
||||
|
||||
local streets = selection.floodfill(selection.new(), 0,12)
|
||||
|
||||
|
||||
-- The down stairs is at one of the 4 "exits". The others are mimics,
|
||||
-- mimicing stairwells.
|
||||
local place = { {33,0}, {0,12}, {25,20}, {75,05} }
|
||||
shuffle(place)
|
||||
|
||||
des.stair({ dir = "down", coord = place[1] })
|
||||
des.monster({ id = "giant mimic", coord = place[2], appear_as = "ter:staircase down" })
|
||||
des.monster({ id = "large mimic", coord = place[3], appear_as = "ter:staircase down" })
|
||||
des.monster({ id = "small mimic", coord = place[4], appear_as = "ter:staircase down" })
|
||||
-- Portal arrival point
|
||||
des.levregion({ region = {19,09,19,09}, type="branch" })
|
||||
-- Doors (secret)
|
||||
--DOOR:locked|closed|open,(xx,yy)
|
||||
des.door("locked", 32, 2)
|
||||
des.door("locked", 63, 9)
|
||||
des.door("locked", 27,10)
|
||||
des.door("locked", 31,12)
|
||||
des.door("locked", 35,13)
|
||||
des.door("locked", 69,15)
|
||||
des.door("locked", 56,17)
|
||||
des.door("locked", 57,17)
|
||||
des.door("locked", 11,19)
|
||||
des.door("locked", 37,19)
|
||||
des.door("locked", 39, 2)
|
||||
des.door("locked", 49, 5)
|
||||
des.door("locked", 10, 9)
|
||||
des.door("locked", 14,12)
|
||||
-- Doors (regular)
|
||||
des.door("closed", 52, 1)
|
||||
des.door("closed", 9, 2)
|
||||
des.door("closed", 20, 2)
|
||||
des.door("closed", 65, 2)
|
||||
des.door("closed", 67, 2)
|
||||
des.door("closed", 6, 3)
|
||||
des.door("closed", 21, 5)
|
||||
des.door("closed", 38, 5)
|
||||
des.door("closed", 69, 6)
|
||||
des.door("closed", 4, 7)
|
||||
des.door("closed", 39, 7)
|
||||
des.door("closed", 58, 7)
|
||||
des.door("closed", 60, 7)
|
||||
des.door("closed", 18, 8)
|
||||
des.door("closed", 20, 9)
|
||||
des.door("closed", 48,10)
|
||||
des.door("closed", 46,12)
|
||||
des.door("closed", 62,12)
|
||||
des.door("closed", 74,12)
|
||||
des.door("closed", 23,14)
|
||||
des.door("closed", 23,14)
|
||||
des.door("closed", 50,14)
|
||||
des.door("closed", 68,14)
|
||||
des.door("closed", 74,14)
|
||||
des.door("closed", 14,15)
|
||||
des.door("closed", 63,15)
|
||||
des.door("closed", 9,17)
|
||||
des.door("closed", 21,17)
|
||||
des.door("closed", 50,17)
|
||||
des.door("closed", 6,18)
|
||||
des.door("closed", 65,18)
|
||||
des.door("closed", 68,18)
|
||||
-- Master of Thieves
|
||||
des.monster("Master of Thieves", 36, 11)
|
||||
-- The treasure of Master of Thieves
|
||||
des.object("chest", 36, 11)
|
||||
-- thug guards, room #1
|
||||
des.monster("thug", 28, 10)
|
||||
des.monster("thug", 29, 11)
|
||||
des.monster("thug", 30, 09)
|
||||
des.monster("thug", 31, 07)
|
||||
-- thug guards, room #2
|
||||
des.monster("thug", 31, 13)
|
||||
des.monster("thug", 33, 14)
|
||||
des.monster("thug", 30, 15)
|
||||
--thug guards, room #3
|
||||
des.monster("thug", 35, 09)
|
||||
des.monster("thug", 36, 13)
|
||||
-- Non diggable walls
|
||||
des.non_diggable(selection.area(00,00,75,20))
|
||||
-- Random traps
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
des.trap()
|
||||
--
|
||||
-- Monsters to get in the way.
|
||||
--
|
||||
-- West exit
|
||||
des.monster({ id = "leprechaun", x=01, y=12, peaceful=0 })
|
||||
des.monster({ id = "water nymph", x=02, y=12, peaceful=0 })
|
||||
-- North exit
|
||||
des.monster({ id = "water nymph", x=33, y=01, peaceful=0 })
|
||||
des.monster({ id = "leprechaun", x=33, y=02, peaceful=0 })
|
||||
-- East exit
|
||||
des.monster({ id = "water nymph", x=74, y=05, peaceful=0 })
|
||||
des.monster({ id = "leprechaun", x=74, y=04, peaceful=0 })
|
||||
-- South exit
|
||||
des.monster({ id = "leprechaun", x=25, y=19, peaceful=0 })
|
||||
des.monster({ id = "water nymph", x=25, y=18, peaceful=0 })
|
||||
-- Wandering the streets.
|
||||
for i=1,4 + math.random(1 - 1,1*3) do
|
||||
des.monster({ id = "water nymph", coord = {streets:rndcoord(1)}, peaceful=0 })
|
||||
des.monster({ id = "leprechaun", coord = {streets:rndcoord(1)}, peaceful=0 })
|
||||
end
|
||||
for i=1,7 + math.random(1 - 1,1*3) do
|
||||
des.monster({ id = "chameleon", coord = {streets:rndcoord(1)}, peaceful=0 })
|
||||
end
|
||||
Reference in New Issue
Block a user