All ideas tagged "special level parser"

#2559

 · 
vanilla

Add a NAME: directive to the level compiler. Levels that have this will auto-annotate themselves as such (or add an immutable line with the name) once the level is entered.

#2366

 · 
vanilla

Allow magic fountains to be specified in special level files.

#2339

 · 
vanilla

Split up the job of TELEPORT_REGIONs in special level definition files into it and NOENTRY_REGION. Now, TELEPORT_REGION defines a region that cannot be horizontally teleported into or out of, whereas NOENTRY_REGION defines a region where you cannot enter the level if arriving in an unusual way (level teleport, falling in from above, cursed potion of gain level).

Several improvements to the level-defining des files:

  • General goal is to be able to get the MAP as close to pasteable into the wiki as possible.
  • Interpret < and > on the MAP as STAIR commands for that specific spot.
  • Interpret ? on the MAP as “terrain to be filled by this level’s filler algorithm”. (This would allow for things like Asmodeus’ Lair to not have to be chunked into multiple pieces).
  • Allow ^ to be placed on the MAP, and it is an error if there is no TRAP command for that space (the parser will assume that ordinary floor should be the type of floor). Same for + and DOOR, and for boulders.
  • Allow monsters’ inventory to be specified.
  • Allow objects to be specified by random appearance, with a flag that defines whether it will pick a random item or simply fail to generate if that random appearance does not exist in the game.
  • Allow the level size to be specified so that ROWNO and COLNO are out of the question.
  • Extend 3.6.0’s REPLACE_TERRAIN to work with non-rectangular areas.
  • Most importantly, parse the files with something not written in yacc, because this adds an additional layer of complexity to anyone who wants to work with the code. (As of NetHack 3.7, the custom des file format has been replaced with Lua scripting.)
  • Maybe even read in the .des files at runtime, so they can be modified without doing a recompile of them and the intermediate .lev form isn’t even needed. This would require giving each level its own .des file and distributing them with the game. This means you don’t get the benefits of using a parsing library, but you no longer have to code for or depend on that library either.