and actually do so in the lua files. Before this, it was not possible to specify (for example) "scroll of teleportation" in des.object() because there is actually no object defined in objects.h named "scroll of teleportation", so find_objtype() failed to find it. Instead, one had to request "teleportation", but that is ambiguous, and find_objtype() would find the first defined item with that name instead (ring of teleportation). In cases of ambiguity, I referred to the des files from 3.6.6 (before the lua conversion).
98 lines
2.8 KiB
Lua
98 lines
2.8 KiB
Lua
-- NetHack 3.7 sokoban.des $NHDT-Date: 1432512784 2015/05/25 00:13:04 $ $NHDT-Branch: master $:$NHDT-Revision: 1.13 $
|
|
-- Copyright (c) 1998-1999 by Kevin Hugo
|
|
-- NetHack may be freely redistributed. See license for details.
|
|
--
|
|
--
|
|
-- In case you haven't played the game Sokoban, you'll learn
|
|
-- quickly. This branch isn't particularly difficult, just time
|
|
-- consuming. Some players may wish to skip this branch.
|
|
--
|
|
-- The following actions are currently permitted without penalty:
|
|
-- Carrying or throwing a boulder already in inventory
|
|
-- (player or nonplayer).
|
|
-- Teleporting boulders.
|
|
-- Digging in the floor.
|
|
-- The following actions are permitted, but with a luck penalty:
|
|
-- Breaking boulders.
|
|
-- Stone-to-fleshing boulders.
|
|
-- Creating new boulders (e.g., with a scroll of earth).
|
|
-- Jumping.
|
|
-- Being pulled by a thrown iron ball.
|
|
-- Hurtling through the air from Newton's 3rd law.
|
|
-- Squeezing past boulders when naked or as a giant.
|
|
-- These actions are not permitted:
|
|
-- Moving diagonally between two boulders and/or walls.
|
|
-- Pushing a boulder diagonally.
|
|
-- Picking up boulders (player or nonplayer).
|
|
-- Digging or walking through walls.
|
|
-- Teleporting within levels or between levels of this branch.
|
|
-- Using cursed potions of gain level.
|
|
-- Escaping a pit/hole (e.g., by flying, levitation, or
|
|
-- passing a dexterity check).
|
|
-- Bones files are not permitted.
|
|
|
|
|
|
--## Bottom (first) level of Sokoban ###
|
|
des.level_init({ style = "solidfill", fg = " " });
|
|
|
|
des.level_flags("mazelevel", "noteleport", "hardfloor", "premapped", "solidify");
|
|
|
|
des.map([[
|
|
------ -----
|
|
|....| |...|
|
|
|....----...|
|
|
|...........|
|
|
|..|-|.|-|..|
|
|
---------|.---
|
|
|......|.....|
|
|
|..----|.....|
|
|
--.| |.....|
|
|
|.|---|.....|
|
|
|...........|
|
|
|..|---------
|
|
----
|
|
]]);
|
|
des.levregion({ region = {06,04,06,04}, type = "branch" })
|
|
des.stair("up", 06,06)
|
|
des.region(selection.area(00,00,13,12), "lit")
|
|
des.non_diggable(selection.area(00,00,13,12))
|
|
des.non_passwall(selection.area(00,00,13,12))
|
|
|
|
-- Boulders
|
|
des.object("boulder",02,02)
|
|
des.object("boulder",02,03)
|
|
--
|
|
des.object("boulder",10,02)
|
|
des.object("boulder",09,03)
|
|
des.object("boulder",10,04)
|
|
--
|
|
des.object("boulder",08,07)
|
|
des.object("boulder",09,08)
|
|
des.object("boulder",09,09)
|
|
des.object("boulder",08,10)
|
|
des.object("boulder",10,10)
|
|
|
|
-- Traps
|
|
des.trap("pit",03,06)
|
|
des.trap("pit",04,06)
|
|
des.trap("pit",05,06)
|
|
des.trap("pit",02,08)
|
|
des.trap("pit",02,09)
|
|
des.trap("pit",04,10)
|
|
des.trap("pit",05,10)
|
|
des.trap("pit",06,10)
|
|
des.trap("pit",07,10)
|
|
|
|
-- A little help
|
|
des.object("scroll of earth",02,11)
|
|
des.object("scroll of earth",03,11)
|
|
|
|
-- Random objects
|
|
des.object({ class = "%" });
|
|
des.object({ class = "%" });
|
|
des.object({ class = "%" });
|
|
des.object({ class = "%" });
|
|
des.object({ class = "=" });
|
|
des.object({ class = "/" });
|
|
|