diff --git a/dat/sokoban.des b/dat/sokoban.des new file mode 100644 index 000000000..56f04e3a4 --- /dev/null +++ b/dat/sokoban.des @@ -0,0 +1,618 @@ +# SCCS Id: @(#)sokoban.des 3.3 99/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 +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,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,random + + +MAZE:"soko4-2",' ' +FLAGS:noteleport,hardfloor +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,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,random + + +### Second level ### +MAZE:"soko3-1",' ' +FLAGS:noteleport +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,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,random + + +MAZE:"soko3-2",' ' +FLAGS:noteleport +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,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,random + + +### Third level ### +MAZE:"soko2-1",' ' +FLAGS:noteleport +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,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,random + + +MAZE:"soko2-2",' ' +FLAGS:noteleport +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,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,random + + +### Top (last) level of Sokoban ### +MAZE:"soko1-1",' ' +FLAGS:noteleport +GEOMETRY:center,center +#12345678901234567890123456789012345678901234567890 +MAP +-------------------------- +|........................| +|.......|---------------.| +-------.------ |.| + |...........| |.| + |...........| |.| +--------.----- |.| +|............| |.| +|............| |.| +-----.-------- ------|.| + |..........| --|.....|.| + |..........| |.+.....|.| + |.........|- |-|.....|.| +-------.---- |.+.....+.| +|........| |-|.....|-- +|........| |.+.....| +|...|----- --|.....| +----- ------- +ENDMAP +RANDOM_PLACES:(16,11),(16,13),(16,15) +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) + +# Random objects +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,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,true +OBJECT:'(',"bag of holding",place[0] +ENGRAVING:place[0],burn,"Elbereth" + + +MAZE:"soko1-2",' ' +FLAGS:noteleport +GEOMETRY:center,center +#12345678901234567890123456789012345678901234567890 +MAP + ------------------------ + |......................| + |..-------------------.| +----.| ----- |.| +|..|.-- --...| |.| +|.....|--|....| |.| +|.....|..|....| |.| +--....|......-- |.| + |.......|...| ------|.| + |....|..|...| --|.....|.| + |....|--|...| |.+.....|.| + |.......|..-- |-|.....|.| + ----....|.-- |.+.....+.| + ---.--.| |-|.....|-- + |.....| |.+.....| + |..|..| --|.....| + ------- ------- +ENDMAP +RANDOM_PLACES:(16,10),(16,12),(16,14) +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) + + +# Random objects +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'%',random,random +OBJECT:'=',random,random +OBJECT:'/',random,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,true +OBJECT:'"',"amulet of reflection",place[0] +ENGRAVING:place[0],burn,"Elbereth"