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:
Pasi Kallinen
2019-05-10 21:11:50 +03:00
parent 3e029d2900
commit fd55d9118e
189 changed files with 16653 additions and 27346 deletions

View File

@@ -19,9 +19,6 @@ all: $(VARDAT) spec_levs quest_levs dungeon
../util/dgn_comp:
(cd ../util ; $(MAKE) dgn_comp)
../util/lev_comp:
(cd ../util ; $(MAKE) lev_comp)
../util/tile2x11:
(cd ../util ; $(MAKE) tile2x11)
@@ -126,39 +123,10 @@ options: ../util/makedefs
../util/makedefs -v
spec_levs: ../util/lev_comp \
bigroom.des castle.des endgame.des gehennom.des knox.des medusa.des \
mines.des oracle.des sokoban.des tower.des yendor.des
../util/lev_comp bigroom.des
../util/lev_comp castle.des
../util/lev_comp endgame.des
../util/lev_comp gehennom.des
../util/lev_comp knox.des
../util/lev_comp medusa.des
../util/lev_comp mines.des
../util/lev_comp oracle.des
../util/lev_comp sokoban.des
../util/lev_comp tower.des
../util/lev_comp yendor.des
spec_levs:
touch spec_levs
quest_levs: ../util/lev_comp \
Arch.des Barb.des Caveman.des Healer.des Knight.des Monk.des \
Priest.des Ranger.des Rogue.des Samurai.des Tourist.des Valkyrie.des \
Wizard.des
../util/lev_comp Arch.des
../util/lev_comp Barb.des
../util/lev_comp Caveman.des
../util/lev_comp Healer.des
../util/lev_comp Knight.des
../util/lev_comp Monk.des
../util/lev_comp Priest.des
../util/lev_comp Ranger.des
../util/lev_comp Rogue.des
../util/lev_comp Samurai.des
../util/lev_comp Tourist.des
../util/lev_comp Valkyrie.des
../util/lev_comp Wizard.des
quest_levs:
touch quest_levs
dungeon: dungeon.def ../util/makedefs ../util/dgn_comp