Files
nethack/dat/sokoban.des
Derek S. Ray 9c8f4d1fad ensure that the 'safe' objects remain safe
since Elbereth doesn't work if you're not on the square anymore, we need
to make sure that critters are discouraged from grabbing the sokoban
prize or the castle wand.

also, fix up the level compiler makefiles so that uncommenting the
YACC/LEX definitions (presuming you have the right tools installed)
works properly.
2015-04-29 19:07:24 -04:00

640 lines
14 KiB
Plaintext

# NetHack 3.5 sokoban.des $NHDT-Date: 1430348694 2015/04/29 23:04:54 $ $NHDT-Branch: derek-elbereth $:$NHDT-Revision: 1.11 $
# NetHack 3.5 sokoban.des $Date: 2009/05/06 10:44:24 $ $Revision: 1.5 $
# SCCS Id: @(#)sokoban.des 3.5 1999/03/15
# 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 ###
MAZE:"soko4-1",' '
FLAGS:noteleport,hardfloor,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
------ -----
|....| |...|
|....----...|
|...........|
|..|-|.|-|..|
---------|.---
|......|.....|
|..----|.....|
--.| |.....|
|.|---|.....|
|...........|
|..|---------
----
ENDMAP
BRANCH:(06,04,06,04),(0,0,0,0)
STAIR:(06,06),up
REGION:(00,00,13,12),lit,"ordinary"
NON_DIGGABLE:(00,00,13,12)
NON_PASSWALL:(00,00,13,12)
# Boulders
OBJECT:('`',"boulder"),(02,02)
OBJECT:('`',"boulder"),(02,03)
#
OBJECT:('`',"boulder"),(10,02)
OBJECT:('`',"boulder"),(09,03)
OBJECT:('`',"boulder"),(10,04)
#
OBJECT:('`',"boulder"),(08,07)
OBJECT:('`',"boulder"),(09,08)
OBJECT:('`',"boulder"),(09,09)
OBJECT:('`',"boulder"),(08,10)
OBJECT:('`',"boulder"),(10,10)
# Traps
TRAP:"pit",(03,06)
TRAP:"pit",(04,06)
TRAP:"pit",(05,06)
TRAP:"pit",(02,08)
TRAP:"pit",(02,09)
TRAP:"pit",(04,10)
TRAP:"pit",(05,10)
TRAP:"pit",(06,10)
TRAP:"pit",(07,10)
# A little help
OBJECT:('?',"earth"),(02,11)
OBJECT:('?',"earth"),(03,11)
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
MAZE:"soko4-2",' '
FLAGS:noteleport,hardfloor,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
-------- ------
|.|....|-|....|
|.|-..........|
|.||....|.....|
|.||....|.....|
|.|-----|.-----
|.| |......|
|.-----|......|
|.............|
|..|---|......|
---- --------
ENDMAP
BRANCH:(03,01,03,01),(0,0,0,0)
STAIR:(01,01),up
REGION:(00,00,14,10),lit,"ordinary"
NON_DIGGABLE:(00,00,14,10)
NON_PASSWALL:(00,00,14,10)
# Boulders
OBJECT:('`',"boulder"),(05,02)
OBJECT:('`',"boulder"),(06,02)
OBJECT:('`',"boulder"),(06,03)
OBJECT:('`',"boulder"),(07,03)
#
OBJECT:('`',"boulder"),(09,05)
OBJECT:('`',"boulder"),(10,03)
OBJECT:('`',"boulder"),(11,02)
OBJECT:('`',"boulder"),(12,03)
#
OBJECT:('`',"boulder"),(07,08)
OBJECT:('`',"boulder"),(08,08)
OBJECT:('`',"boulder"),(09,08)
OBJECT:('`',"boulder"),(10,08)
# Traps
TRAP:"pit",(01,02)
TRAP:"pit",(01,03)
TRAP:"pit",(01,04)
TRAP:"pit",(01,05)
TRAP:"pit",(01,06)
TRAP:"pit",(01,07)
TRAP:"pit",(03,08)
TRAP:"pit",(04,08)
TRAP:"pit",(05,08)
TRAP:"pit",(06,08)
# A little help
OBJECT:('?',"earth"),(01,09)
OBJECT:('?',"earth"),(02,09)
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
### Second level ###
MAZE:"soko3-1",' '
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
----------- -----------
|....|....|-- |.........|
|....|......| |.........|
|.........|-- |.........|
|....|....| |.........|
|-.--------- |.........|
|....|.....| |.........|
|....|.....| |.........|
|..........| |.........|
|....|.....|---------------+|
|....|......................|
-----------------------------
ENDMAP
STAIR:(11,02),down
STAIR:(23,04),up
DOOR:locked,(27,09)
REGION:(00,00,28,11),lit,"ordinary"
NON_DIGGABLE:(00,00,28,11)
NON_PASSWALL:(00,00,28,11)
# Boulders
OBJECT:('`',"boulder"),(03,02)
OBJECT:('`',"boulder"),(04,02)
#
OBJECT:('`',"boulder"),(06,02)
OBJECT:('`',"boulder"),(06,03)
OBJECT:('`',"boulder"),(07,02)
#
OBJECT:('`',"boulder"),(03,06)
OBJECT:('`',"boulder"),(02,07)
OBJECT:('`',"boulder"),(03,07)
OBJECT:('`',"boulder"),(03,08)
OBJECT:('`',"boulder"),(02,09)
OBJECT:('`',"boulder"),(03,09)
OBJECT:('`',"boulder"),(04,09)
#
OBJECT:('`',"boulder"),(06,07)
OBJECT:('`',"boulder"),(06,09)
OBJECT:('`',"boulder"),(08,07)
OBJECT:('`',"boulder"),(08,10)
OBJECT:('`',"boulder"),(09,08)
OBJECT:('`',"boulder"),(09,09)
OBJECT:('`',"boulder"),(10,07)
OBJECT:('`',"boulder"),(10,10)
# Traps
TRAP:"hole",(12,10)
TRAP:"hole",(13,10)
TRAP:"hole",(14,10)
TRAP:"hole",(15,10)
TRAP:"hole",(16,10)
TRAP:"hole",(17,10)
TRAP:"hole",(18,10)
TRAP:"hole",(19,10)
TRAP:"hole",(20,10)
TRAP:"hole",(21,10)
TRAP:"hole",(22,10)
TRAP:"hole",(23,10)
TRAP:"hole",(24,10)
TRAP:"hole",(25,10)
TRAP:"hole",(26,10)
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
MAZE:"soko3-2",' '
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
---- -----------
-|..|------- |.........|
|..........| |.........|
|..-----.-.| |.........|
|..|...|...| |.........|
|.........-| |.........|
|.......|..| |.........|
|.----..--.| |.........|
|........|.-- |.........|
|.---.-.....------------+|
|...|...-................|
|.........----------------
----|..|..|
-------
ENDMAP
STAIR:(03,01),down
STAIR:(20,04),up
DOOR:locked,(24,09)
REGION:(00,00,25,13),lit,"ordinary"
NON_DIGGABLE:(00,00,25,13)
NON_PASSWALL:(00,00,25,13)
# Boulders
OBJECT:('`',"boulder"),(02,03)
OBJECT:('`',"boulder"),(08,03)
OBJECT:('`',"boulder"),(09,04)
OBJECT:('`',"boulder"),(02,05)
OBJECT:('`',"boulder"),(04,05)
OBJECT:('`',"boulder"),(09,05)
OBJECT:('`',"boulder"),(02,06)
OBJECT:('`',"boulder"),(05,06)
OBJECT:('`',"boulder"),(06,07)
OBJECT:('`',"boulder"),(03,08)
OBJECT:('`',"boulder"),(07,08)
OBJECT:('`',"boulder"),(05,09)
OBJECT:('`',"boulder"),(10,09)
OBJECT:('`',"boulder"),(07,10)
OBJECT:('`',"boulder"),(10,10)
OBJECT:('`',"boulder"),(03,11)
# Traps
TRAP:"hole",(12,10)
TRAP:"hole",(13,10)
TRAP:"hole",(14,10)
TRAP:"hole",(15,10)
TRAP:"hole",(16,10)
TRAP:"hole",(17,10)
TRAP:"hole",(18,10)
TRAP:"hole",(19,10)
TRAP:"hole",(20,10)
TRAP:"hole",(21,10)
TRAP:"hole",(22,10)
TRAP:"hole",(23,10)
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
### Third level ###
MAZE:"soko2-1",' '
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
--------------------
|........|...|.....|
|.....-..|.-.|.....|
|..|.....|...|.....|
|-.|..-..|.-.|.....|
|...--.......|.....|
|...|...-...-|.....|
|...|..|...--|.....|
|-..|..|----------+|
|..................|
|...|..|------------
--------
ENDMAP
STAIR:(06,10),down
STAIR:(16,04),up
DOOR:locked,(18,08)
REGION:(00,00,19,11),lit,"ordinary"
NON_DIGGABLE:(00,00,19,11)
NON_PASSWALL:(00,00,19,11)
# Boulders
OBJECT:('`',"boulder"),(02,02)
OBJECT:('`',"boulder"),(03,02)
#
OBJECT:('`',"boulder"),(05,03)
OBJECT:('`',"boulder"),(07,03)
OBJECT:('`',"boulder"),(07,02)
OBJECT:('`',"boulder"),(08,02)
#
OBJECT:('`',"boulder"),(10,03)
OBJECT:('`',"boulder"),(11,03)
#
OBJECT:('`',"boulder"),(02,07)
OBJECT:('`',"boulder"),(02,08)
OBJECT:('`',"boulder"),(03,09)
#
OBJECT:('`',"boulder"),(05,07)
OBJECT:('`',"boulder"),(06,06)
# Traps
TRAP:"hole",(08,09)
TRAP:"hole",(09,09)
TRAP:"hole",(10,09)
TRAP:"hole",(11,09)
TRAP:"hole",(12,09)
TRAP:"hole",(13,09)
TRAP:"hole",(14,09)
TRAP:"hole",(15,09)
TRAP:"hole",(16,09)
TRAP:"hole",(17,09)
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
MAZE:"soko2-2",' '
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
--------
--|.|....|
|........|----------
|.-...-..|.|.......|
|...-......|.......|
|.-....|...|.......|
|....-.--.-|.......|
|..........|.......|
|.--...|...|.......|
|....-.|---|.......|
--|....|----------+|
|................|
------------------
ENDMAP
STAIR:(06,11),down
STAIR:(15,06),up
DOOR:locked,(18,10)
REGION:(00,00,19,12),lit,"ordinary"
NON_DIGGABLE:(00,00,19,12)
NON_PASSWALL:(00,00,19,12)
# Boulders
OBJECT:('`',"boulder"),(04,02)
OBJECT:('`',"boulder"),(04,03)
OBJECT:('`',"boulder"),(05,03)
OBJECT:('`',"boulder"),(07,03)
OBJECT:('`',"boulder"),(08,03)
OBJECT:('`',"boulder"),(02,04)
OBJECT:('`',"boulder"),(03,04)
OBJECT:('`',"boulder"),(05,05)
OBJECT:('`',"boulder"),(06,06)
OBJECT:('`',"boulder"),(09,06)
OBJECT:('`',"boulder"),(03,07)
OBJECT:('`',"boulder"),(04,07)
OBJECT:('`',"boulder"),(07,07)
OBJECT:('`',"boulder"),(06,09)
OBJECT:('`',"boulder"),(05,10)
OBJECT:('`',"boulder"),(05,11)
# Traps
TRAP:"hole",(07,11)
TRAP:"hole",(08,11)
TRAP:"hole",(09,11)
TRAP:"hole",(10,11)
TRAP:"hole",(11,11)
TRAP:"hole",(12,11)
TRAP:"hole",(13,11)
TRAP:"hole",(14,11)
TRAP:"hole",(15,11)
TRAP:"hole",(16,11)
TRAP:"hole",(17,11)
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
### Top (last) level of Sokoban ###
MAZE:"soko1-1",' '
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
--------------------------
|........................|
|.......|---------------.|
-------.------ |.|
|...........| |.|
|...........| |.|
--------.----- |.|
|............| |.|
|............| |.|
-----.-------- ------|.|
|..........| --|.....|.|
|..........| |.+.....|.|
|.........|- |-|.....|.|
-------.---- |.+.....+.|
|........| |-|.....|--
|........| |.+.....|
|...|----- --|.....|
----- -------
ENDMAP
$place = { (16,11),(16,13),(16,15) }
SHUFFLE: $place
STAIR:(01,01),down
REGION:(00,00,25,17),lit,"ordinary"
NON_DIGGABLE:(00,00,25,17)
NON_PASSWALL:(00,00,25,17)
# Boulders
OBJECT:('`',"boulder"),(03,05)
OBJECT:('`',"boulder"),(05,05)
OBJECT:('`',"boulder"),(07,05)
OBJECT:('`',"boulder"),(09,05)
OBJECT:('`',"boulder"),(11,05)
#
OBJECT:('`',"boulder"),(04,07)
OBJECT:('`',"boulder"),(04,08)
OBJECT:('`',"boulder"),(06,07)
OBJECT:('`',"boulder"),(09,07)
OBJECT:('`',"boulder"),(11,07)
#
OBJECT:('`',"boulder"),(03,12)
OBJECT:('`',"boulder"),(04,10)
OBJECT:('`',"boulder"),(05,12)
OBJECT:('`',"boulder"),(06,10)
OBJECT:('`',"boulder"),(07,11)
OBJECT:('`',"boulder"),(08,10)
OBJECT:('`',"boulder"),(09,12)
#
OBJECT:('`',"boulder"),(03,14)
# Traps
TRAP:"hole",(08,01)
TRAP:"hole",(09,01)
TRAP:"hole",(10,01)
TRAP:"hole",(11,01)
TRAP:"hole",(12,01)
TRAP:"hole",(13,01)
TRAP:"hole",(14,01)
TRAP:"hole",(15,01)
TRAP:"hole",(16,01)
TRAP:"hole",(17,01)
TRAP:"hole",(18,01)
TRAP:"hole",(19,01)
TRAP:"hole",(20,01)
TRAP:"hole",(21,01)
TRAP:"hole",(22,01)
TRAP:"hole",(23,01)
MONSTER:('m',"giant mimic"), random, m_object "boulder"
MONSTER:('m',"giant mimic"), random, m_object "boulder"
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
# Rewards
DOOR:locked,(23,13)
DOOR:closed,(17,11)
DOOR:closed,(17,13)
DOOR:closed,(17,15)
REGION:(18,10,22,16),lit,"zoo",filled,irregular
IF [50%] {
OBJECT:('(',"bag of holding"),$place[0]
} ELSE {
OBJECT:('"',"amulet of reflection"),$place[0]
}
ENGRAVING:$place[0],burn,"Elbereth"
OBJECT:('?', "scare monster"),$place[0],cursed
MAZE:"soko1-2",' '
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
------------------------
|......................|
|..-------------------.|
----.| ----- |.|
|..|.-- --...| |.|
|.....|--|....| |.|
|.....|..|....| |.|
--....|......-- |.|
|.......|...| ------|.|
|....|..|...| --|.....|.|
|....|--|...| |.+.....|.|
|.......|..-- |-|.....|.|
----....|.-- |.+.....+.|
---.--.| |-|.....|--
|.....| |.+.....|
|..|..| --|.....|
------- -------
ENDMAP
$place = { (16,10),(16,12),(16,14) }
SHUFFLE: $place
STAIR:(06,15),down
REGION:(00,00,25,16),lit,"ordinary"
NON_DIGGABLE:(00,00,25,16)
NON_PASSWALL:(00,00,25,16)
# Boulders
OBJECT:('`',"boulder"),(04,04)
OBJECT:('`',"boulder"),(02,06)
OBJECT:('`',"boulder"),(03,06)
OBJECT:('`',"boulder"),(04,07)
OBJECT:('`',"boulder"),(05,07)
OBJECT:('`',"boulder"),(02,08)
OBJECT:('`',"boulder"),(05,08)
OBJECT:('`',"boulder"),(03,09)
OBJECT:('`',"boulder"),(04,09)
OBJECT:('`',"boulder"),(03,10)
OBJECT:('`',"boulder"),(05,10)
OBJECT:('`',"boulder"),(06,12)
#
OBJECT:('`',"boulder"),(07,14)
#
OBJECT:('`',"boulder"),(11,05)
OBJECT:('`',"boulder"),(12,06)
OBJECT:('`',"boulder"),(10,07)
OBJECT:('`',"boulder"),(11,07)
OBJECT:('`',"boulder"),(10,08)
OBJECT:('`',"boulder"),(12,09)
OBJECT:('`',"boulder"),(11,10)
# Traps
TRAP:"hole",(05,01)
TRAP:"hole",(06,01)
TRAP:"hole",(07,01)
TRAP:"hole",(08,01)
TRAP:"hole",(09,01)
TRAP:"hole",(10,01)
TRAP:"hole",(11,01)
TRAP:"hole",(12,01)
TRAP:"hole",(13,01)
TRAP:"hole",(14,01)
TRAP:"hole",(15,01)
TRAP:"hole",(16,01)
TRAP:"hole",(17,01)
TRAP:"hole",(18,01)
TRAP:"hole",(19,01)
TRAP:"hole",(20,01)
TRAP:"hole",(21,01)
TRAP:"hole",(22,01)
MONSTER:('m',"giant mimic"), random, m_object "boulder"
MONSTER:('m',"giant mimic"), random, m_object "boulder"
# Random objects
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
# Rewards
DOOR:locked,(23,12)
DOOR:closed,(17,10)
DOOR:closed,(17,12)
DOOR:closed,(17,14)
REGION:(18,09,22,15),lit,"zoo",filled,irregular
IF [50%] {
OBJECT:('(',"bag of holding"),$place[0]
} ELSE {
OBJECT:('"',"amulet of reflection"),$place[0]
}
ENGRAVING:$place[0],burn,"Elbereth"
OBJECT:('?', "scare monster"),$place[0],cursed