This commit is contained in:
keni
2015-04-05 20:57:28 -04:00
78 changed files with 20625 additions and 11149 deletions
+1
View File
@@ -36,6 +36,7 @@ Debug/
Release/
binary/
build/
ipch/
Nethack.sln
Nethack.sdf
Nethack.opensdf
+184 -172
View File
@@ -70,25 +70,25 @@ DOOR:locked,(24,14)
DOOR:closed,(31,14)
DOOR:locked,(49,14)
# Lord Carnarvon
MONSTER:'@',"Lord Carnarvon",(25,10)
MONSTER:('@',"Lord Carnarvon"),(25,10)
# The treasure of Lord Carnarvon
OBJECT:'(',"chest",(25,10)
OBJECT:('(',"chest"),(25,10)
# student guards for the audience chamber
MONSTER:'@',"student",(26,09)
MONSTER:'@',"student",(27,09)
MONSTER:'@',"student",(28,09)
MONSTER:'@',"student",(26,10)
MONSTER:'@',"student",(28,10)
MONSTER:'@',"student",(26,11)
MONSTER:'@',"student",(27,11)
MONSTER:'@',"student",(28,11)
MONSTER:('@',"student"),(26,09)
MONSTER:('@',"student"),(27,09)
MONSTER:('@',"student"),(28,09)
MONSTER:('@',"student"),(26,10)
MONSTER:('@',"student"),(28,10)
MONSTER:('@',"student"),(26,11)
MONSTER:('@',"student"),(27,11)
MONSTER:('@',"student"),(28,11)
# city watch guards in the antechambers
MONSTER:'@',"watchman",(50,06)
MONSTER:'@',"watchman",(50,14)
MONSTER:('@',"watchman"),(50,06)
MONSTER:('@',"watchman"),(50,14)
# Eels in the moat
MONSTER:';',"giant eel",(20,10)
MONSTER:';',"giant eel",(45,04)
MONSTER:';',"giant eel",(33,16)
MONSTER:(';',"giant eel"),(20,10)
MONSTER:(';',"giant eel"),(45,04)
MONSTER:(';',"giant eel"),(33,16)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Random traps
@@ -99,18 +99,18 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty.
MONSTER: 'S',random,(60,09)
MONSTER: 'M',random,(60,10)
MONSTER: 'S',random,(60,11)
MONSTER: 'S',random,(60,12)
MONSTER: 'M',random,(60,13)
MONSTER: 'S',random,(61,10)
MONSTER: 'S',random,(61,11)
MONSTER: 'S',random,(61,12)
MONSTER: 'S',random,(30,03)
MONSTER: 'M',random,(20,17)
MONSTER: 'S',random,(67,02)
MONSTER: 'S',random,(10,19)
MONSTER: 'S',(60,09)
MONSTER: 'M',(60,10)
MONSTER: 'S',(60,11)
MONSTER: 'S',(60,12)
MONSTER: 'M',(60,13)
MONSTER: 'S',(61,10)
MONSTER: 'S',(61,11)
MONSTER: 'S',(61,12)
MONSTER: 'S',(30,03)
MONSTER: 'M',(20,17)
MONSTER: 'S',(67,02)
MONSTER: 'S',(10,19)
#
# The "locate" level for the quest.
@@ -151,13 +151,13 @@ REGION:(25,09,28,11),unlit,"temple"
REGION:(25,13,28,16),lit,"temple"
REGION:(30,04,30,16),lit,"ordinary"
REGION:(32,04,32,16),unlit,"ordinary"
REGION:(33,04,53,04),unlit,"ordinary",unfilled,true
REGION:(33,04,53,04),unlit,"ordinary",unfilled,irregular
REGION:(36,10,37,10),unlit,"ordinary"
REGION:(39,09,39,11),unlit,"ordinary"
REGION:(36,06,42,08),unlit,"ordinary",unfilled,true
REGION:(36,12,42,14),unlit,"ordinary",unfilled,true
REGION:(36,06,42,08),unlit,"ordinary",unfilled,irregular
REGION:(36,12,42,14),unlit,"ordinary",unfilled,irregular
REGION:(46,06,51,09),unlit,"ordinary"
REGION:(46,11,49,11),unlit,"ordinary",unfilled,true
REGION:(46,11,49,11),unlit,"ordinary",unfilled,irregular
REGION:(48,13,51,14),unlit,"ordinary"
# Doors
DOOR:closed,(31,04)
@@ -186,21 +186,21 @@ ALTAR:(26,15),align[2],altar
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Treasure?
ENGRAVING:random,engrave,"X marks the spot."
ENGRAVING:random,engrave,"X marks the spot."
@@ -231,33 +231,33 @@ TRAP:"dart",random
TRAP:"rolling boulder",(32,10)
TRAP:"rolling boulder",(40,16)
# Random monsters.
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'M',random,random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',random,random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'M',random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:'M',random
#
# The "goal" level for the quest.
@@ -323,21 +323,21 @@ NON_DIGGABLE:(00,00,75,19)
# The altar of Huhetotl. Unattended.
ALTAR:(50,14),chaos,altar
# Objects
OBJECT:'(',"crystal ball",(50,14),blessed,5,"The Orb of Detection"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('(',"crystal ball"),(50,14),blessed,5,name:"The Orb of Detection"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -347,34 +347,34 @@ TRAP:random,random
TRAP:random,random
TRAP:"rolling boulder",(46,14)
# Random monsters.
MONSTER:'&',"Minion of Huhetotl",(50,14)
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'S',random,random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',"human mummy",random
MONSTER:'M',random,random
MONSTER:('&',"Minion of Huhetotl"),(50,14)
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:'S',random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:('M',"human mummy"),random
MONSTER:'M',random
#
# The "fill" levels for the quest.
@@ -387,76 +387,88 @@ MONSTER:'M',random,random
LEVEL: "Arc-fila"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: 'S', random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: 'S', random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: 'S', random
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
MONSTER: 'M', "human mummy", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
MONSTER: 'S', random
MONSTER: ('M', "human mummy"), random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: 'S', random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: 'S', random
}
RANDOM_CORRIDORS
LEVEL: "Arc-filb"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'M', random, random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: 'M', random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'M', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: 'M', random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'M', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: 'M', random
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
MONSTER: 'M', "human mummy", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
MONSTER: 'S', random
MONSTER: ('M', "human mummy"), random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: 'S', random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: 'S', random
}
RANDOM_CORRIDORS
+146 -146
View File
@@ -60,38 +60,38 @@ DOOR:open,(23,13)
DOOR:open,(25,10)
DOOR:open,(28,05)
# Elder
MONSTER:'@',"Pelias",(10,07)
MONSTER:('@',"Pelias"),(10,07)
# The treasure of Pelias
OBJECT:'(',"chest",(09,05)
OBJECT:('(',"chest"),(09,05)
# chieftain guards for the audience chamber
MONSTER:'@',"chieftain",(10,05)
MONSTER:'@',"chieftain",(10,09)
MONSTER:'@',"chieftain",(11,05)
MONSTER:'@',"chieftain",(11,09)
MONSTER:'@',"chieftain",(14,05)
MONSTER:'@',"chieftain",(14,09)
MONSTER:'@',"chieftain",(16,05)
MONSTER:'@',"chieftain",(16,09)
MONSTER:('@',"chieftain"),(10,05)
MONSTER:('@',"chieftain"),(10,09)
MONSTER:('@',"chieftain"),(11,05)
MONSTER:('@',"chieftain"),(11,09)
MONSTER:('@',"chieftain"),(14,05)
MONSTER:('@',"chieftain"),(14,09)
MONSTER:('@',"chieftain"),(16,05)
MONSTER:('@',"chieftain"),(16,09)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# One trap to keep the ogres at bay.
TRAP:"spiked pit",(37,07)
# Eels in the river
MONSTER:';',"giant eel",(36,01)
MONSTER:';',"giant eel",(37,09)
MONSTER:';',"giant eel",(39,15)
MONSTER:(';',"giant eel"),(36,01)
MONSTER:(';',"giant eel"),(37,09)
MONSTER:(';',"giant eel"),(39,15)
# Monsters on siege duty.
MONSTER:'O',"ogre",(40,08),hostile
MONSTER:'O',"ogre",(41,06),hostile
MONSTER:'O',"ogre",(41,07),hostile
MONSTER:'O',"ogre",(41,08),hostile
MONSTER:'O',"ogre",(41,09),hostile
MONSTER:'O',"ogre",(41,10),hostile
MONSTER:'O',"ogre",(42,06),hostile
MONSTER:'O',"ogre",(42,07),hostile
MONSTER:'O',"ogre",(42,08),hostile
MONSTER:'O',"ogre",(42,09),hostile
MONSTER:'O',"ogre",(42,10),hostile
MONSTER:('O',"ogre"),(40,08),hostile
MONSTER:('O',"ogre"),(41,06),hostile
MONSTER:('O',"ogre"),(41,07),hostile
MONSTER:('O',"ogre"),(41,08),hostile
MONSTER:('O',"ogre"),(41,09),hostile
MONSTER:('O',"ogre"),(41,10),hostile
MONSTER:('O',"ogre"),(42,06),hostile
MONSTER:('O',"ogre"),(42,07),hostile
MONSTER:('O',"ogre"),(42,08),hostile
MONSTER:('O',"ogre"),(42,09),hostile
MONSTER:('O',"ogre"),(42,10),hostile
#
# The "locate" level for the quest.
@@ -148,21 +148,21 @@ DOOR:locked,(55,06)
STAIR:(05,02),up
STAIR:(70,13),down
# Objects
OBJECT:random,random,(42,03)
OBJECT:random,random,(42,03)
OBJECT:random,random,(42,03)
OBJECT:random,random,(41,03)
OBJECT:random,random,(41,03)
OBJECT:random,random,(41,03)
OBJECT:random,random,(41,03)
OBJECT:random,random,(41,08)
OBJECT:random,random,(41,08)
OBJECT:random,random,(42,08)
OBJECT:random,random,(42,08)
OBJECT:random,random,(42,08)
OBJECT:random,random,(71,13)
OBJECT:random,random,(71,13)
OBJECT:random,random,(71,13)
OBJECT:random,(42,03)
OBJECT:random,(42,03)
OBJECT:random,(42,03)
OBJECT:random,(41,03)
OBJECT:random,(41,03)
OBJECT:random,(41,03)
OBJECT:random,(41,03)
OBJECT:random,(41,08)
OBJECT:random,(41,08)
OBJECT:random,(42,08)
OBJECT:random,(42,08)
OBJECT:random,(42,08)
OBJECT:random,(71,13)
OBJECT:random,(71,13)
OBJECT:random,(71,13)
# Random traps
TRAP:"spiked pit",(10,13)
TRAP:"spiked pit",(21,07)
@@ -173,33 +173,33 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'O',"ogre",(12,09),hostile
MONSTER:'O',"ogre",(18,11),hostile
MONSTER:'O',"ogre",(45,05),hostile
MONSTER:'O',"ogre",(45,06),hostile
MONSTER:'O',"ogre",(47,05),hostile
MONSTER:'O',"ogre",(46,05),hostile
MONSTER:'O',"ogre",(56,03),hostile
MONSTER:'O',"ogre",(56,04),hostile
MONSTER:'O',"ogre",(56,05),hostile
MONSTER:'O',"ogre",(56,06),hostile
MONSTER:'O',"ogre",(57,03),hostile
MONSTER:'O',"ogre",(57,04),hostile
MONSTER:'O',"ogre",(57,05),hostile
MONSTER:'O',"ogre",(57,06),hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',random,random,hostile
MONSTER:'T',random,random,hostile
MONSTER:'T',"rock troll",(46,06),hostile
MONSTER:'T',"rock troll",(47,06),hostile
MONSTER:'T',"rock troll",(56,07),hostile
MONSTER:'T',"rock troll",(57,07),hostile
MONSTER:'T',"rock troll",(70,13),hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',random,random,hostile
MONSTER:('O',"ogre"),(12,09),hostile
MONSTER:('O',"ogre"),(18,11),hostile
MONSTER:('O',"ogre"),(45,05),hostile
MONSTER:('O',"ogre"),(45,06),hostile
MONSTER:('O',"ogre"),(47,05),hostile
MONSTER:('O',"ogre"),(46,05),hostile
MONSTER:('O',"ogre"),(56,03),hostile
MONSTER:('O',"ogre"),(56,04),hostile
MONSTER:('O',"ogre"),(56,05),hostile
MONSTER:('O',"ogre"),(56,06),hostile
MONSTER:('O',"ogre"),(57,03),hostile
MONSTER:('O',"ogre"),(57,04),hostile
MONSTER:('O',"ogre"),(57,05),hostile
MONSTER:('O',"ogre"),(57,06),hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:'O',random,hostile
MONSTER:'T',random,hostile
MONSTER:('T',"rock troll"),(46,06),hostile
MONSTER:('T',"rock troll"),(47,06),hostile
MONSTER:('T',"rock troll"),(56,07),hostile
MONSTER:('T',"rock troll"),(57,07),hostile
MONSTER:('T',"rock troll"),(70,13),hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:'T',random,hostile
#
# The "goal" level for the quest.
@@ -244,21 +244,21 @@ STAIR:(36,05),up
ALTAR:(63,04),noncoaligned,altar
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:'*',"luckstone",(63,04),blessed,0,"The Heart of Ahriman"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('*',"luckstone"),(63,04),blessed,0,name:"The Heart of Ahriman"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -267,34 +267,34 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'@',"Thoth Amon",(63,04),hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',"ogre",random,hostile
MONSTER:'O',random,random,hostile
MONSTER:'O',random,random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',"rock troll",random,hostile
MONSTER:'T',random,random,hostile
MONSTER:('@',"Thoth Amon"),(63,04),hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:('O',"ogre"),random,hostile
MONSTER:'O',random,hostile
MONSTER:'O',random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:('T',"rock troll"),random,hostile
MONSTER:'T',random,hostile
WALLIFY
#
@@ -307,64 +307,64 @@ WALLIFY
#
MAZE: "Bar-fila" , ' '
INIT_MAP: '.' , '.' , true , true , unlit , false
INIT_MAP: mines, '.' , '.' , true , true , unlit , false
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', random, random, hostile
MONSTER: 'T', "rock troll", random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: 'O', random, hostile
MONSTER: ('T', "rock troll"), random, hostile
MAZE: "Bar-filb" , ' '
INIT_MAP: '.' , ' ' , true , true , unlit , true
INIT_MAP: mines, '.' , ' ' , true , true , unlit , true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', "ogre", random, hostile
MONSTER: 'O', random , random, hostile
MONSTER: 'T', "rock troll", random, hostile
MONSTER: 'T', "rock troll", random, hostile
MONSTER: 'T', "rock troll", random, hostile
MONSTER: 'T', random , random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: ('O', "ogre"), random, hostile
MONSTER: 'O' , random, hostile
MONSTER: ('T', "rock troll"), random, hostile
MONSTER: ('T', "rock troll"), random, hostile
MONSTER: ('T', "rock troll"), random, hostile
MONSTER: 'T' , random, hostile
+127 -127
View File
@@ -37,14 +37,14 @@ MAP
ENDMAP
# Dungeon Description
REGION:(00,00,75,19),unlit,"ordinary"
REGION:(13,01,40,05),lit,"temple",unfilled,true
REGION:(13,01,40,05),lit,"temple",unfilled,irregular
# The occupied rooms.
REGION:(02,01,08,03),lit,"ordinary",unfilled,true
REGION:(01,11,06,14),lit,"ordinary",unfilled,true
REGION:(13,08,18,10),lit,"ordinary",unfilled,true
REGION:(05,17,14,18),lit,"ordinary",unfilled,true
REGION:(17,16,23,18),lit,"ordinary",unfilled,true
REGION:(35,16,44,18),lit,"ordinary",unfilled,true
REGION:(02,01,08,03),lit,"ordinary",unfilled,irregular
REGION:(01,11,06,14),lit,"ordinary",unfilled,irregular
REGION:(13,08,18,10),lit,"ordinary",unfilled,irregular
REGION:(05,17,14,18),lit,"ordinary",unfilled,irregular
REGION:(17,16,23,18),lit,"ordinary",unfilled,irregular
REGION:(35,16,44,18),lit,"ordinary",unfilled,irregular
# Stairs
STAIR:(02,03),down
# Portal arrival point
@@ -54,18 +54,18 @@ DOOR:locked,(19,06)
# The temple altar (this will force a priest(ess) to be created)
ALTAR:(36,02),coaligned,shrine
# Shaman Karnov
MONSTER:'@',"Shaman Karnov",(35,02)
MONSTER:('@',"Shaman Karnov"),(35,02)
# The treasure of Shaman Karnov
OBJECT:'(',"chest",(34,02)
OBJECT:('(',"chest"),(34,02)
# neanderthal guards for the audience chamber
MONSTER:'@',"neanderthal",(20,03)
MONSTER:'@',"neanderthal",(20,02)
MONSTER:'@',"neanderthal",(20,01)
MONSTER:'@',"neanderthal",(21,03)
MONSTER:'@',"neanderthal",(21,02)
MONSTER:'@',"neanderthal",(21,01)
MONSTER:'@',"neanderthal",(22,01)
MONSTER:'@',"neanderthal",(26,09)
MONSTER:('@',"neanderthal"),(20,03)
MONSTER:('@',"neanderthal"),(20,02)
MONSTER:('@',"neanderthal"),(20,01)
MONSTER:('@',"neanderthal"),(21,03)
MONSTER:('@',"neanderthal"),(21,02)
MONSTER:('@',"neanderthal"),(21,01)
MONSTER:('@',"neanderthal"),(22,01)
MONSTER:('@',"neanderthal"),(26,09)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Random traps
@@ -76,18 +76,18 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty (in the outer caves).
MONSTER: 'h',"bugbear",(47,02),hostile
MONSTER: 'h',"bugbear",(48,03),hostile
MONSTER: 'h',"bugbear",(49,04),hostile
MONSTER: 'h',"bugbear",(67,03),hostile
MONSTER: 'h',"bugbear",(69,04),hostile
MONSTER: 'h',"bugbear",(51,13),hostile
MONSTER: 'h',"bugbear",(53,14),hostile
MONSTER: 'h',"bugbear",(55,15),hostile
MONSTER: 'h',"bugbear",(63,10),hostile
MONSTER: 'h',"bugbear",(65,09),hostile
MONSTER: 'h',"bugbear",(67,10),hostile
MONSTER: 'h',"bugbear",(69,11),hostile
MONSTER: ('h',"bugbear"),(47,02),hostile
MONSTER: ('h',"bugbear"),(48,03),hostile
MONSTER: ('h',"bugbear"),(49,04),hostile
MONSTER: ('h',"bugbear"),(67,03),hostile
MONSTER: ('h',"bugbear"),(69,04),hostile
MONSTER: ('h',"bugbear"),(51,13),hostile
MONSTER: ('h',"bugbear"),(53,14),hostile
MONSTER: ('h',"bugbear"),(55,15),hostile
MONSTER: ('h',"bugbear"),(63,10),hostile
MONSTER: ('h',"bugbear"),(65,09),hostile
MONSTER: ('h',"bugbear"),(67,10),hostile
MONSTER: ('h',"bugbear"),(69,11),hostile
WALLIFY
#
@@ -124,7 +124,7 @@ MAP
ENDMAP
# Dungeon Description
REGION:(00,00,75,19),unlit,"ordinary"
REGION:(52,06,73,15),lit,"ordinary",unfilled,true
REGION:(52,06,73,15),lit,"ordinary",unfilled,irregular
# Doors
DOOR:locked,(28,11)
# Stairs
@@ -133,21 +133,21 @@ STAIR:(73,10),down
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -156,33 +156,33 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'h',"bugbear",(02,10),hostile
MONSTER:'h',"bugbear",(03,11),hostile
MONSTER:'h',"bugbear",(04,12),hostile
MONSTER:'h',"bugbear",(02,11),hostile
MONSTER:'h',"bugbear",(16,16),hostile
MONSTER:'h',"bugbear",(17,17),hostile
MONSTER:'h',"bugbear",(18,18),hostile
MONSTER:'h',"bugbear",(19,16),hostile
MONSTER:'h',"bugbear",(30,06),hostile
MONSTER:'h',"bugbear",(31,07),hostile
MONSTER:'h',"bugbear",(32,08),hostile
MONSTER:'h',"bugbear",(33,06),hostile
MONSTER:'h',"bugbear",(34,07),hostile
MONSTER:'h',"bugbear",random,hostile
MONSTER:'h',"bugbear",random,hostile
MONSTER:'h',"bugbear",random,hostile
MONSTER:'h',"bugbear",random,hostile
MONSTER:'h',random,random,hostile
MONSTER:'H',random,random,hostile
MONSTER:'H',"hill giant",(03,12),hostile
MONSTER:'H',"hill giant",(20,17),hostile
MONSTER:'H',"hill giant",(35,08),hostile
MONSTER:'H',"hill giant",random,hostile
MONSTER:'H',"hill giant",random,hostile
MONSTER:'H',"hill giant",random,hostile
MONSTER:'H',"hill giant",random,hostile
MONSTER:'H',random,random,hostile
MONSTER:('h',"bugbear"),(02,10),hostile
MONSTER:('h',"bugbear"),(03,11),hostile
MONSTER:('h',"bugbear"),(04,12),hostile
MONSTER:('h',"bugbear"),(02,11),hostile
MONSTER:('h',"bugbear"),(16,16),hostile
MONSTER:('h',"bugbear"),(17,17),hostile
MONSTER:('h',"bugbear"),(18,18),hostile
MONSTER:('h',"bugbear"),(19,16),hostile
MONSTER:('h',"bugbear"),(30,06),hostile
MONSTER:('h',"bugbear"),(31,07),hostile
MONSTER:('h',"bugbear"),(32,08),hostile
MONSTER:('h',"bugbear"),(33,06),hostile
MONSTER:('h',"bugbear"),(34,07),hostile
MONSTER:('h',"bugbear"),random,hostile
MONSTER:('h',"bugbear"),random,hostile
MONSTER:('h',"bugbear"),random,hostile
MONSTER:('h',"bugbear"),random,hostile
MONSTER:'h',random,hostile
MONSTER:'H',random,hostile
MONSTER:('H',"hill giant"),(03,12),hostile
MONSTER:('H',"hill giant"),(20,17),hostile
MONSTER:('H',"hill giant"),(35,08),hostile
MONSTER:('H',"hill giant"),random,hostile
MONSTER:('H',"hill giant"),random,hostile
MONSTER:('H',"hill giant"),random,hostile
MONSTER:('H',"hill giant"),random,hostile
MONSTER:'H',random,hostile
WALLIFY
#
@@ -224,26 +224,26 @@ STAIR:random,up
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:')',"mace",(23,10),blessed,0,"The Sceptre of Might"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:(')',"mace"),(23,10),blessed,0,name:"The Sceptre of Might"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# monsters.
MONSTER:'D',"Chromatic Dragon",(23,10),asleep
MONSTER:'F',"shrieker",(26,13)
MONSTER:'F',"shrieker",(25,8)
MONSTER:'F',"shrieker",(45,11)
MONSTER:('D',"Chromatic Dragon"),(23,10),asleep
MONSTER:('F',"shrieker"),(26,13)
MONSTER:('F',"shrieker"),(25,8)
MONSTER:('F',"shrieker"),(45,11)
WALLIFY
#
@@ -256,63 +256,63 @@ WALLIFY
#
MAZE: "Cav-fila" , ' '
INIT_MAP: '.' , ' ' , true , true , random , true
INIT_MAP: mines, '.' , ' ' , true , true , random , true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', random, random, hostile
MONSTER: 'H', "hill giant", random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: 'h', random, hostile
MONSTER: ('H', "hill giant"), random, hostile
MAZE: "Cav-filb" , ' '
INIT_MAP: '.' , ' ' , true , true , random , true
INIT_MAP: mines, '.' , ' ' , true , true , random , true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', "bugbear", random, hostile
MONSTER: 'h', random, random, hostile
MONSTER: 'h', random, random, hostile
MONSTER: 'H', "hill giant", random, hostile
MONSTER: 'H', "hill giant", random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: ('h', "bugbear"), random, hostile
MONSTER: 'h', random, hostile
MONSTER: 'h', random, hostile
MONSTER: ('H', "hill giant"), random, hostile
MONSTER: ('H', "hill giant"), random, hostile
+185 -185
View File
@@ -57,18 +57,18 @@ DOOR:closed,(47,08)
DOOR:closed,(48,12)
DOOR:locked,(50,10)
# Hippocrates
MONSTER:'@',"Hippocrates",(37,10)
MONSTER:('@',"Hippocrates"),(37,10)
# The treasure of Hippocrates
OBJECT:'(',"chest",(37,10)
OBJECT:('(',"chest"),(37,10)
# intern guards for the audience chamber
MONSTER:'@',"attendant",(29,08)
MONSTER:'@',"attendant",(29,09)
MONSTER:'@',"attendant",(29,10)
MONSTER:'@',"attendant",(29,11)
MONSTER:'@',"attendant",(40,09)
MONSTER:'@',"attendant",(40,10)
MONSTER:'@',"attendant",(40,11)
MONSTER:'@',"attendant",(40,13)
MONSTER:('@',"attendant"),(29,08)
MONSTER:('@',"attendant"),(29,09)
MONSTER:('@',"attendant"),(29,10)
MONSTER:('@',"attendant"),(29,11)
MONSTER:('@',"attendant"),(40,09)
MONSTER:('@',"attendant"),(40,10)
MONSTER:('@',"attendant"),(40,11)
MONSTER:('@',"attendant"),(40,13)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Random traps
@@ -79,29 +79,29 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty.
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: 'r',"rabid rat",random
MONSTER: ';',"giant eel",random
MONSTER: ';',"shark",random
MONSTER: ';', random, random
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: ('r',"rabid rat"),random
MONSTER: (';',"giant eel"),random
MONSTER: (';',"shark"),random
MONSTER: ';', random
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
#
# The "locate" level for the quest.
#
@@ -112,7 +112,7 @@ MONSTER: 'S',random,random,hostile
MAZE: "Hea-loca",' '
FLAGS: hardfloor
#
INIT_MAP: '.' , 'P', true , true , lit , false
INIT_MAP: mines, '.' , 'P', true , true , lit , false
GEOMETRY:center,center
MAP
PPPPPPPPPPPPP.......PPPPPPPPPPP
@@ -142,21 +142,21 @@ NON_DIGGABLE:(11,02,21,07)
# Altar in the temple.
ALTAR:(13,05), chaos, shrine
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -165,41 +165,41 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',random,random,hostile
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"kraken",random
MONSTER:';',"shark",random
MONSTER:';',"shark",random
MONSTER:';',random, random,hostile
MONSTER:';',random, random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:'r',random,hostile
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"shark"),random
MONSTER:(';',"shark"),random
MONSTER:';', random,hostile
MONSTER:';', random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
#
# The "goal" level for the quest.
@@ -211,7 +211,7 @@ MONSTER: 'S',random,random,hostile
MAZE: "Hea-goal", 'P'
#
INIT_MAP: '.' , 'P' , false , true , lit , false
INIT_MAP: mines, '.' , 'P' , false , true , lit , false
GEOMETRY:center,center
MAP
.P....................................PP.
@@ -234,22 +234,22 @@ STAIR:(39,10),up
# Non diggable walls
NON_DIGGABLE:(00,00,40,11)
# Objects
OBJECT:')',"quarterstaff",(20,06),blessed,0,"The Staff of Aesculapius"
OBJECT:'/',"lightning",(20,06)
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:(')',"quarterstaff"),(20,06),blessed,0,name:"The Staff of Aesculapius"
OBJECT:('/',"lightning"),(20,06)
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -258,38 +258,38 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'H',"Cyclops",(20,06),hostile
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',"rabid rat",random
MONSTER:'r',random,random,hostile
MONSTER:'r',random,random,hostile
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"shark",random
MONSTER:';',"shark",random
MONSTER:';',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER:('H',"Cyclops"),(20,06),hostile
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:('r',"rabid rat"),random
MONSTER:'r',random,hostile
MONSTER:'r',random,hostile
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"shark"),random
MONSTER:(';',"shark"),random
MONSTER:';',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
#
# The "fill" levels for the quest.
@@ -301,34 +301,34 @@ MONSTER: 'S',random,random,hostile
#
MAZE: "Hea-fila" , 'P'
INIT_MAP: '.' , 'P' , false , true , lit , false
INIT_MAP: mines, '.' , 'P' , false , true , lit , false
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'r', "rabid rat", random
MONSTER: 'r', random, random,hostile
MONSTER: 'r', random, random,hostile
MONSTER: ';', "giant eel", random
MONSTER: ';', "giant eel", random
MONSTER: ';', "electric eel", random
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: ('r', "rabid rat"), random
MONSTER: 'r', random,hostile
MONSTER: 'r', random,hostile
MONSTER: (';', "giant eel"), random
MONSTER: (';', "giant eel"), random
MONSTER: (';', "electric eel"), random
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
#
TRAP: random, random
TRAP: random, random
@@ -336,42 +336,42 @@ TRAP: random, random
TRAP: random, random
MAZE: "Hea-filb" , 'P'
INIT_MAP: '.' , 'P' , false , true , lit , false
INIT_MAP: mines, '.' , 'P' , false , true , lit , false
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'r', "rabid rat", random
MONSTER: 'r', "rabid rat", random
MONSTER: 'r', random, random,hostile
MONSTER: 'r', random, random,hostile
MONSTER: ';', "giant eel", random
MONSTER: ';', "giant eel", random
MONSTER: ';', "giant eel", random
MONSTER: ';', "giant eel", random
MONSTER: ';', "giant eel", random
MONSTER: ';', "electric eel", random
MONSTER: ';', "electric eel", random
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'D',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: ('r', "rabid rat"), random
MONSTER: ('r', "rabid rat"), random
MONSTER: 'r', random,hostile
MONSTER: 'r', random,hostile
MONSTER: (';', "giant eel"), random
MONSTER: (';', "giant eel"), random
MONSTER: (';', "giant eel"), random
MONSTER: (';', "giant eel"), random
MONSTER: (';', "giant eel"), random
MONSTER: (';', "electric eel"), random
MONSTER: (';', "electric eel"), random
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'D',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
MONSTER: 'S',random,hostile
#
TRAP: random, random
TRAP: random, random
+153 -153
View File
@@ -13,7 +13,7 @@
MAZE: "Kni-strt",'.'
FLAGS: noteleport,hardfloor
# This is a kludge to init the level as a lit field.
INIT_MAP: '.' , '.' , false , false , lit , false
INIT_MAP: mines, '.' , '.' , false , false , lit , false
GEOMETRY:center,center
MAP
..................................................
@@ -62,21 +62,21 @@ DOOR:closed,(45,03)
DOOR:closed,(04,12)
DOOR:closed,(45,12)
# King Arthur
MONSTER:'@',"King Arthur",(09,07)
MONSTER:('@',"King Arthur"),(09,07)
# The treasure of King Arthur
OBJECT:'(',"chest",(09,07)
OBJECT:('(',"chest"),(09,07)
# knight guards for the watchrooms
MONSTER:'@',"knight",(04,02),peaceful
MONSTER:'@',"knight",(04,13),peaceful
MONSTER:'@',"knight",(45,02),peaceful
MONSTER:'@',"knight",(45,13),peaceful
MONSTER:('@',"knight"),(04,02),peaceful
MONSTER:('@',"knight"),(04,13),peaceful
MONSTER:('@',"knight"),(45,02),peaceful
MONSTER:('@',"knight"),(45,13),peaceful
# page guards for the audience chamber
MONSTER:'@',"page",(16,06)
MONSTER:'@',"page",(18,06)
MONSTER:'@',"page",(20,06)
MONSTER:'@',"page",(16,09)
MONSTER:'@',"page",(18,09)
MONSTER:'@',"page",(20,09)
MONSTER:('@',"page"),(16,06)
MONSTER:('@',"page"),(18,06)
MONSTER:('@',"page"),(20,06)
MONSTER:('@',"page"),(16,09)
MONSTER:('@',"page"),(18,09)
MONSTER:('@',"page"),(20,09)
# Non diggable walls
NON_DIGGABLE:(00,00,49,15)
# Random traps
@@ -87,18 +87,18 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty.
MONSTER: 'i',"quasit",(14,00),hostile
MONSTER: 'i',"quasit",(16,00),hostile
MONSTER: 'i',"quasit",(18,00),hostile
MONSTER: 'i',"quasit",(20,00),hostile
MONSTER: 'i',"quasit",(22,00),hostile
MONSTER: 'i',"quasit",(24,00),hostile
MONSTER: 'i',"quasit",(26,00),hostile
MONSTER: 'i',"quasit",(28,00),hostile
MONSTER: 'i',"quasit",(30,00),hostile
MONSTER: 'i',"quasit",(32,00),hostile
MONSTER: 'i',"quasit",(34,00),hostile
MONSTER: 'i',"quasit",(36,00),hostile
MONSTER: ('i',"quasit"),(14,00),hostile
MONSTER: ('i',"quasit"),(16,00),hostile
MONSTER: ('i',"quasit"),(18,00),hostile
MONSTER: ('i',"quasit"),(20,00),hostile
MONSTER: ('i',"quasit"),(22,00),hostile
MONSTER: ('i',"quasit"),(24,00),hostile
MONSTER: ('i',"quasit"),(26,00),hostile
MONSTER: ('i',"quasit"),(28,00),hostile
MONSTER: ('i',"quasit"),(30,00),hostile
MONSTER: ('i',"quasit"),(32,00),hostile
MONSTER: ('i',"quasit"),(34,00),hostile
MONSTER: ('i',"quasit"),(36,00),hostile
#
# The "locate" level for the quest.
@@ -109,7 +109,7 @@ MONSTER: 'i',"quasit",(36,00),hostile
MAZE: "Kni-loca",' '
FLAGS: hardfloor
INIT_MAP: '.' , 'P' , false , true , lit , false
INIT_MAP: mines, '.' , 'P' , false , true , lit , false
GEOMETRY:center,center
MAP
...PPP.........PPPP..............PPPP...
@@ -136,21 +136,21 @@ STAIR:(18,05),down
# The altar atop the Tor and its attendant (creating altar makes the priest).
ALTAR:(17,05),neutral,shrine
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
# All of the avenues are guarded by magic except for the East.
# South
@@ -210,33 +210,33 @@ TRAP:"anti magic",random
TRAP:"anti magic",random
TRAP:"anti magic",random
# Random monsters.
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'j',random,random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',random,random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:'i',random,hostile
MONSTER:'j',random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:'j',random,hostile
#
# The "goal" level for the quest.
@@ -278,28 +278,28 @@ STAIR:(03,08),up
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:'(',"mirror",(50,06),blessed,0,"The Magic Mirror of Merlin"
OBJECT:random,random,(33,01)
OBJECT:random,random,(33,02)
OBJECT:random,random,(33,03)
OBJECT:random,random,(33,04)
OBJECT:random,random,(33,05)
OBJECT:random,random,(34,01)
OBJECT:random,random,(34,02)
OBJECT:random,random,(34,03)
OBJECT:random,random,(34,04)
OBJECT:random,random,(34,05)
OBJECT:random,random,(35,01)
OBJECT:random,random,(35,02)
OBJECT:random,random,(35,03)
OBJECT:random,random,(35,04)
OBJECT:random,random,(35,05)
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('(',"mirror"),(50,06),blessed,0,name:"The Magic Mirror of Merlin"
OBJECT:random,(33,01)
OBJECT:random,(33,02)
OBJECT:random,(33,03)
OBJECT:random,(33,04)
OBJECT:random,(33,05)
OBJECT:random,(34,01)
OBJECT:random,(34,02)
OBJECT:random,(34,03)
OBJECT:random,(34,04)
OBJECT:random,(34,05)
OBJECT:random,(35,01)
OBJECT:random,(35,02)
OBJECT:random,(35,03)
OBJECT:random,(35,04)
OBJECT:random,(35,05)
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:"spiked pit",(13,07)
TRAP:"spiked pit",(12,08)
@@ -310,34 +310,34 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'D',"Ixoth",(50,06),hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',"quasit",random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',"ochre jelly",random,hostile
MONSTER:'j',random,random,hostile
MONSTER:('D',"Ixoth"),(50,06),hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:('i',"quasit"),random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:('j',"ochre jelly"),random,hostile
MONSTER:'j',random,hostile
#
# The "fill" levels for the quest.
@@ -349,27 +349,27 @@ MONSTER:'j',random,random,hostile
#
MAZE: "Kni-fila" , '.'
INIT_MAP: '.' , 'P' , false , true , lit , false
INIT_MAP: mines, '.' , 'P' , false , true , lit , false
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', random, random, hostile
MONSTER: 'j', "ochre jelly", random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: 'i', random, hostile
MONSTER: ('j', "ochre jelly"), random, hostile
#
TRAP: random, random
TRAP: random, random
@@ -377,32 +377,32 @@ TRAP: random, random
TRAP: random, random
MAZE: "Kni-filb" , '.'
INIT_MAP: '.' , 'P' , false , true , lit , false
INIT_MAP: mines, '.' , 'P' , false , true , lit , false
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', "quasit", random, hostile
MONSTER: 'i', random, random, hostile
MONSTER: 'j', "ochre jelly", random, hostile
MONSTER: 'j', "ochre jelly", random, hostile
MONSTER: 'j', "ochre jelly", random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: ('i', "quasit"), random, hostile
MONSTER: 'i', random, hostile
MONSTER: ('j', "ochre jelly"), random, hostile
MONSTER: ('j', "ochre jelly"), random, hostile
MONSTER: ('j', "ochre jelly"), random, hostile
#
TRAP: random, random
TRAP: random, random
+176 -156
View File
@@ -64,17 +64,17 @@ DOOR:closed,(52,14)
# Unattended Altar - unaligned due to conflict - player must align it.
ALTAR:(28,09),noalign,altar
# The Grand Master
MONSTER:'@',"Grand Master",(28,10)
MONSTER:('@',"Grand Master"),(28,10)
# No treasure chest!
# guards for the audience chamber
MONSTER:'@',"abbot",(32,07)
MONSTER:'@',"abbot",(32,08)
MONSTER:'@',"abbot",(32,11)
MONSTER:'@',"abbot",(32,12)
MONSTER:'@',"abbot",(33,07)
MONSTER:'@',"abbot",(33,08)
MONSTER:'@',"abbot",(33,11)
MONSTER:'@',"abbot",(33,12)
MONSTER:('@',"abbot"),(32,07)
MONSTER:('@',"abbot"),(32,08)
MONSTER:('@',"abbot"),(32,11)
MONSTER:('@',"abbot"),(32,12)
MONSTER:('@',"abbot"),(33,07)
MONSTER:('@',"abbot"),(33,08)
MONSTER:('@',"abbot"),(33,11)
MONSTER:('@',"abbot"),(33,12)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Random traps
@@ -85,18 +85,18 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty.
MONSTER: 'E',"earth elemental",(37,01)
MONSTER: 'E',"earth elemental",(37,18)
MONSTER: 'E',"earth elemental",(03,03)
MONSTER: 'E',"earth elemental",(65,04)
MONSTER: 'E',"earth elemental",(12,11)
MONSTER: 'E',"earth elemental",(60,12)
MONSTER: 'E',"earth elemental",(14,08)
MONSTER: 'E',"earth elemental",(55,00)
MONSTER: 'X',"xorn",(18,18)
MONSTER: 'X',"xorn",(59,10)
MONSTER: 'X',"xorn",(13,09)
MONSTER: 'X',"xorn",(01,17)
MONSTER: ('E',"earth elemental"),(37,01)
MONSTER: ('E',"earth elemental"),(37,18)
MONSTER: ('E',"earth elemental"),(03,03)
MONSTER: ('E',"earth elemental"),(65,04)
MONSTER: ('E',"earth elemental"),(12,11)
MONSTER: ('E',"earth elemental"),(60,12)
MONSTER: ('E',"earth elemental"),(14,08)
MONSTER: ('E',"earth elemental"),(55,00)
MONSTER: ('X',"xorn"),(18,18)
MONSTER: ('X',"xorn"),(59,10)
MONSTER: ('X',"xorn"),(13,09)
MONSTER: ('X',"xorn"),(01,17)
#
# The "locate" level for the quest.
@@ -133,7 +133,9 @@ MAP
------------------------------------------ ------
ENDMAP
# Random Monsters
RANDOM_MONSTERS: 'E', 'X'
$monster = monster: { 'E', 'X' }
SHUFFLE: $monster
# Dungeon Description
REGION:(00,00,75,20),lit,"ordinary"
# Stairs
@@ -142,21 +144,21 @@ STAIR:random,down
# Non diggable walls
NON_DIGGABLE:(00,00,75,20)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -165,29 +167,29 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
#
# The "goal" level for the quest.
@@ -198,7 +200,7 @@ MONSTER: 'X',"xorn",random
#
MAZE: "Mon-goal", ' '
INIT_MAP: 'L' , '.' , false , false , unlit , false
INIT_MAP: mines, 'L' , '.' , false , false , unlit , false
GEOMETRY:center,center
MAP
.L......L.LLL.......LL....
@@ -214,26 +216,28 @@ LL........................
.........LLL.........L....
ENDMAP
# Dungeon Description
RANDOM_PLACES:(14,04),(13,07)
$place = { (14,04),(13,07) }
SHUFFLE: $place
REGION:(00,00,25,10),unlit,"ordinary"
# Stairs
STAIR:(20,05),up
# Objects
OBJECT:'(',"lenses",place[0],blessed,0,"The Eyes of the Overworld"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('(',"lenses"),$place[0],blessed,0,name:"The Eyes of the Overworld"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:"fire",random
TRAP:"fire",random
@@ -242,26 +246,26 @@ TRAP:"fire",random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'@',"Master Kaen",place[0]
ALTAR:place[0],noalign,altar
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'E',"earth elemental",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER: 'X',"xorn",random
MONSTER:('@',"Master Kaen"),$place[0]
ALTAR:$place[0],noalign,altar
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('E',"earth elemental"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
MONSTER: ('X',"xorn"),random
#
# The "fill" levels for the quest.
@@ -274,82 +278,98 @@ MONSTER: 'X',"xorn",random
LEVEL: "Mon-fila"
# Random Monsters
RANDOM_MONSTERS: 'E', 'X'
$monster = monster: { 'E', 'X' }
SHUFFLE: $monster
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'E', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: 'E', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'E', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: 'E', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'X', "xorn", random
MONSTER: 'E', "earth elemental", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: ('X', "xorn"), random
MONSTER: ('E', "earth elemental"), random
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'E', random, random, hostile
MONSTER: 'E', "earth elemental", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
MONSTER: 'E', random, hostile
MONSTER: ('E', "earth elemental"), random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'X', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: 'X', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'E', "earth elemental", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: ('E', "earth elemental"), random
}
RANDOM_CORRIDORS
LEVEL: "Mon-filb"
# Random Monsters
RANDOM_MONSTERS: 'E', 'X'
$monster = monster: { 'E', 'X' }
SHUFFLE: $monster
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'X', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: 'X', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'X', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: 'X', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'E', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: 'E', random, hostile
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'E', random, random, hostile
MONSTER: 'E', "earth elemental", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
MONSTER: 'E', random, hostile
MONSTER: ('E', "earth elemental"), random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'X', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: 'X', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'E', "earth elemental", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: ('E', "earth elemental"), random
}
RANDOM_CORRIDORS
+152 -138
View File
@@ -64,18 +64,18 @@ DOOR:closed,(52,14)
# Unattended Altar - unaligned due to conflict - player must align it.
ALTAR:(28,09),noalign,altar
# High Priest
MONSTER:'@',"Arch Priest",(28,10)
MONSTER:('@',"Arch Priest"),(28,10)
# The treasure of High Priest
OBJECT:'(',"chest",(27,10)
OBJECT:('(',"chest"),(27,10)
# knight guards for the audience chamber
MONSTER:'@',"acolyte",(32,07)
MONSTER:'@',"acolyte",(32,08)
MONSTER:'@',"acolyte",(32,11)
MONSTER:'@',"acolyte",(32,12)
MONSTER:'@',"acolyte",(33,07)
MONSTER:'@',"acolyte",(33,08)
MONSTER:'@',"acolyte",(33,11)
MONSTER:'@',"acolyte",(33,12)
MONSTER:('@',"acolyte"),(32,07)
MONSTER:('@',"acolyte"),(32,08)
MONSTER:('@',"acolyte"),(32,11)
MONSTER:('@',"acolyte"),(32,12)
MONSTER:('@',"acolyte"),(33,07)
MONSTER:('@',"acolyte"),(33,08)
MONSTER:('@',"acolyte"),(33,11)
MONSTER:('@',"acolyte"),(33,12)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Random traps
@@ -86,18 +86,18 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty.
MONSTER: 'Z',"human zombie",(37,01)
MONSTER: 'Z',"human zombie",(37,18)
MONSTER: 'Z',"human zombie",(03,03)
MONSTER: 'Z',"human zombie",(65,04)
MONSTER: 'Z',"human zombie",(12,11)
MONSTER: 'Z',"human zombie",(60,12)
MONSTER: 'Z',"human zombie",(14,08)
MONSTER: 'Z',"human zombie",(55,00)
MONSTER: 'Z',"human zombie",(18,18)
MONSTER: 'Z',"human zombie",(59,10)
MONSTER: 'Z',"human zombie",(13,09)
MONSTER: 'Z',"human zombie",(01,17)
MONSTER: ('Z',"human zombie"),(37,01)
MONSTER: ('Z',"human zombie"),(37,18)
MONSTER: ('Z',"human zombie"),(03,03)
MONSTER: ('Z',"human zombie"),(65,04)
MONSTER: ('Z',"human zombie"),(12,11)
MONSTER: ('Z',"human zombie"),(60,12)
MONSTER: ('Z',"human zombie"),(14,08)
MONSTER: ('Z',"human zombie"),(55,00)
MONSTER: ('Z',"human zombie"),(18,18)
MONSTER: ('Z',"human zombie"),(59,10)
MONSTER: ('Z',"human zombie"),(13,09)
MONSTER: ('Z',"human zombie"),(01,17)
#
# The "locate" level for the quest.
@@ -109,7 +109,7 @@ MONSTER: 'Z',"human zombie",(01,17)
MAZE: "Pri-loca",' '
FLAGS: hardfloor
# This is a kludge to init the level as a lit field.
INIT_MAP: '.' , '.' , false , false , lit , false
INIT_MAP: mines, '.' , '.' , false , false , lit , false
GEOMETRY:center,center
MAP
........................................
@@ -132,10 +132,10 @@ REGION:(00,00,09,13),unlit,"morgue"
REGION:(09,00,30,01),unlit,"morgue"
REGION:(09,12,30,13),unlit,"morgue"
REGION:(31,00,39,13),unlit,"morgue"
REGION:(11,03,29,10),lit,"temple",filled,true
REGION:(11,03,29,10),lit,"temple",filled,irregular
# The altar inside the temple
ALTAR:(20,07),noalign,shrine
MONSTER:'@',"aligned priest",(20,07),noalign,hostile
MONSTER:('@',"aligned priest"),(20,07),noalign,hostile
# Doors
DOOR:locked,(10,06)
DOOR:locked,(10,07)
@@ -150,21 +150,21 @@ STAIR:(20,06),down
# Non diggable walls
NON_DIGGABLE:(10,02,30,13)
# Objects (inside the antechambers).
OBJECT:random,random,(14,03)
OBJECT:random,random,(15,03)
OBJECT:random,random,(16,03)
OBJECT:random,random,(14,10)
OBJECT:random,random,(15,10)
OBJECT:random,random,(16,10)
OBJECT:random,random,(17,10)
OBJECT:random,random,(24,03)
OBJECT:random,random,(25,03)
OBJECT:random,random,(26,03)
OBJECT:random,random,(27,03)
OBJECT:random,random,(24,10)
OBJECT:random,random,(25,10)
OBJECT:random,random,(26,10)
OBJECT:random,random,(27,10)
OBJECT:random,(14,03)
OBJECT:random,(15,03)
OBJECT:random,(16,03)
OBJECT:random,(14,10)
OBJECT:random,(15,10)
OBJECT:random,(16,10)
OBJECT:random,(17,10)
OBJECT:random,(24,03)
OBJECT:random,(25,03)
OBJECT:random,(26,03)
OBJECT:random,(27,03)
OBJECT:random,(24,10)
OBJECT:random,(25,10)
OBJECT:random,(26,10)
OBJECT:random,(27,10)
# Random traps
TRAP:random,(15,04)
TRAP:random,(25,04)
@@ -183,7 +183,7 @@ TRAP:random,random
#
MAZE: "Pri-goal", ' '
INIT_MAP: 'L' , '.' , false , false , unlit , false
INIT_MAP: mines, 'L' , '.' , false , false , unlit , false
GEOMETRY:center,center
MAP
.L......L.LLL.......LL....
@@ -199,26 +199,28 @@ LL........................
.........LLL.........L....
ENDMAP
# Dungeon Description
RANDOM_PLACES:(14,04),(13,07)
$place = { (14,04),(13,07) }
SHUFFLE: $place
REGION:(00,00,25,10),unlit,"ordinary"
# Stairs
STAIR:(20,05),up
# Objects
OBJECT:'[',"helm of brilliance",place[0],blessed,0,"The Mitre of Holiness"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('[',"helm of brilliance"),$place[0],blessed,0,name:"The Mitre of Holiness"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:"fire",random
TRAP:"fire",random
@@ -227,34 +229,34 @@ TRAP:"fire",random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'&',"Nalzok",place[0]
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',random,random
MONSTER:'Z',random,random
MONSTER:'W',"wraith",random
MONSTER:'W',"wraith",random
MONSTER:'W',"wraith",random
MONSTER:'W',"wraith",random
MONSTER:'W',"wraith",random
MONSTER:'W',"wraith",random
MONSTER:'W',"wraith",random
MONSTER:'W',"wraith",random
MONSTER:'W',random,random
MONSTER:('&',"Nalzok"),$place[0]
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:'Z',random
MONSTER:'Z',random
MONSTER:('W',"wraith"),random
MONSTER:('W',"wraith"),random
MONSTER:('W',"wraith"),random
MONSTER:('W',"wraith"),random
MONSTER:('W',"wraith"),random
MONSTER:('W',"wraith"),random
MONSTER:('W',"wraith"),random
MONSTER:('W',"wraith"),random
MONSTER:'W',random
#
# The "fill" levels for the quest.
@@ -267,73 +269,85 @@ MONSTER:'W',random,random
LEVEL: "Pri-fila"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'Z', "human zombie", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: ('Z', "human zombie"), random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'Z', "human zombie", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: ('Z', "human zombie"), random
}
ROOM: "morgue" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
ROOM: "morgue" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'W', "wraith", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: ('W', "wraith"), random
}
ROOM: "morgue" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
ROOM: "morgue" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
}
RANDOM_CORRIDORS
LEVEL: "Pri-filb"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'Z', "human zombie", random
MONSTER: 'W', "wraith", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: ('Z', "human zombie"), random
MONSTER: ('W', "wraith"), random
}
ROOM: "morgue" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
ROOM: "morgue" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
OBJECT: random,random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'Z', "human zombie", random
MONSTER: 'W', "wraith", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: ('Z', "human zombie"), random
MONSTER: ('W', "wraith"), random
}
ROOM: "morgue" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
ROOM: "morgue" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'Z', "human zombie", random
MONSTER: 'W', "wraith", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: ('Z', "human zombie"), random
MONSTER: ('W', "wraith"), random
}
ROOM: "morgue" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
ROOM: "morgue" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
}
RANDOM_CORRIDORS
+146 -146
View File
@@ -12,7 +12,7 @@
#
MAZE: "Ran-strt",'.'
FLAGS: noteleport,hardfloor,arboreal
INIT_MAP:'.','.',true,true,lit,false
INIT_MAP:mines,'.','.',true,true,lit,false
GEOMETRY:left,center
#1234567890123456789012345678901234567890123456789012345678901234567890
MAP
@@ -45,18 +45,18 @@ STAIR:(10,10),down
# Portal arrival point; just about anywhere on the right hand side of the map
BRANCH:levregion(51,2,77,18),(0,0,40,20)
# Orion
MONSTER:'@',"Orion",(20,10)
MONSTER:('@',"Orion"),(20,10)
# The treasure of Orion
OBJECT:'(',"chest",(20,10)
OBJECT:('(',"chest"),(20,10)
# Guards for the audience chamber
MONSTER:'@',"hunter",(19,09)
MONSTER:'@',"hunter",(20,09)
MONSTER:'@',"hunter",(21,09)
MONSTER:'@',"hunter",(19,10)
MONSTER:'@',"hunter",(21,10)
MONSTER:'@',"hunter",(19,11)
MONSTER:'@',"hunter",(20,11)
MONSTER:'@',"hunter",(21,11)
MONSTER:('@',"hunter"),(19,09)
MONSTER:('@',"hunter"),(20,09)
MONSTER:('@',"hunter"),(21,09)
MONSTER:('@',"hunter"),(19,10)
MONSTER:('@',"hunter"),(21,10)
MONSTER:('@',"hunter"),(19,11)
MONSTER:('@',"hunter"),(20,11)
MONSTER:('@',"hunter"),(21,11)
# Non diggable walls
NON_DIGGABLE:(00,00,40,20)
# Traps
@@ -67,33 +67,33 @@ TRAP:"spiked pit",random
TRAP:"bear",random
TRAP:"bear",random
# Monsters on siege duty.
MONSTER: 'H',"minotaur",(33,09),hostile,asleep
MONSTER: 'C',"forest centaur",(19,03),hostile
MONSTER: 'C',"forest centaur",(19,04),hostile
MONSTER: 'C',"forest centaur",(19,05),hostile
MONSTER: 'C',"forest centaur",(21,03),hostile
MONSTER: 'C',"forest centaur",(21,04),hostile
MONSTER: 'C',"forest centaur",(21,05),hostile
MONSTER: 'C',"forest centaur",(01,09),hostile
MONSTER: 'C',"forest centaur",(02,09),hostile
MONSTER: 'C',"forest centaur",(03,09),hostile
MONSTER: 'C',"forest centaur",(01,11),hostile
MONSTER: 'C',"forest centaur",(02,11),hostile
MONSTER: 'C',"forest centaur",(03,11),hostile
MONSTER: 'C',"forest centaur",(19,15),hostile
MONSTER: 'C',"forest centaur",(19,16),hostile
MONSTER: 'C',"forest centaur",(19,17),hostile
MONSTER: 'C',"forest centaur",(21,15),hostile
MONSTER: 'C',"forest centaur",(21,16),hostile
MONSTER: 'C',"forest centaur",(21,17),hostile
MONSTER: 'C',"plains centaur",random,hostile
MONSTER: 'C',"plains centaur",random,hostile
MONSTER: 'C',"plains centaur",random,hostile
MONSTER: 'C',"plains centaur",random,hostile
MONSTER: 'C',"plains centaur",random,hostile
MONSTER: 'C',"plains centaur",random,hostile
MONSTER: 's',"scorpion",random,hostile
MONSTER: 's',"scorpion",random,hostile
MONSTER: ('H',"minotaur"),(33,09),hostile,asleep
MONSTER: ('C',"forest centaur"),(19,03),hostile
MONSTER: ('C',"forest centaur"),(19,04),hostile
MONSTER: ('C',"forest centaur"),(19,05),hostile
MONSTER: ('C',"forest centaur"),(21,03),hostile
MONSTER: ('C',"forest centaur"),(21,04),hostile
MONSTER: ('C',"forest centaur"),(21,05),hostile
MONSTER: ('C',"forest centaur"),(01,09),hostile
MONSTER: ('C',"forest centaur"),(02,09),hostile
MONSTER: ('C',"forest centaur"),(03,09),hostile
MONSTER: ('C',"forest centaur"),(01,11),hostile
MONSTER: ('C',"forest centaur"),(02,11),hostile
MONSTER: ('C',"forest centaur"),(03,11),hostile
MONSTER: ('C',"forest centaur"),(19,15),hostile
MONSTER: ('C',"forest centaur"),(19,16),hostile
MONSTER: ('C',"forest centaur"),(19,17),hostile
MONSTER: ('C',"forest centaur"),(21,15),hostile
MONSTER: ('C',"forest centaur"),(21,16),hostile
MONSTER: ('C',"forest centaur"),(21,17),hostile
MONSTER: ('C',"plains centaur"),random,hostile
MONSTER: ('C',"plains centaur"),random,hostile
MONSTER: ('C',"plains centaur"),random,hostile
MONSTER: ('C',"plains centaur"),random,hostile
MONSTER: ('C',"plains centaur"),random,hostile
MONSTER: ('C',"plains centaur"),random,hostile
MONSTER: ('s',"scorpion"),random,hostile
MONSTER: ('s',"scorpion"),random,hostile
#
@@ -137,14 +137,14 @@ STAIR:(27,18),down
# Non diggable walls
NON_DIGGABLE:(00,00,54,19)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:"spiked pit",random
TRAP:"spiked pit",random
@@ -153,29 +153,29 @@ TRAP:"teleport",random
TRAP:"arrow",random
TRAP:"arrow",random
# Random monsters.
MONSTER:'q',"wumpus",(27,18),hostile,asleep
MONSTER:'B',"giant bat",random,hostile
MONSTER:'B',"giant bat",random,hostile
MONSTER:'B',"giant bat",random,hostile
MONSTER:'B',"giant bat",random,hostile
MONSTER:'C',"forest centaur",random,hostile
MONSTER:'C',"forest centaur",random,hostile
MONSTER:'C',"forest centaur",random,hostile
MONSTER:'C',"forest centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'s',"scorpion",random,hostile
MONSTER:'s',"scorpion",random,hostile
MONSTER:'s',"scorpion",random,hostile
MONSTER:'s',"scorpion",random,hostile
MONSTER:'s',random,random,hostile
MONSTER:'s',random,random,hostile
MONSTER:('q',"wumpus"),(27,18),hostile,asleep
MONSTER:('B',"giant bat"),random,hostile
MONSTER:('B',"giant bat"),random,hostile
MONSTER:('B',"giant bat"),random,hostile
MONSTER:('B',"giant bat"),random,hostile
MONSTER:('C',"forest centaur"),random,hostile
MONSTER:('C',"forest centaur"),random,hostile
MONSTER:('C',"forest centaur"),random,hostile
MONSTER:('C',"forest centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('s',"scorpion"),random,hostile
MONSTER:('s',"scorpion"),random,hostile
MONSTER:('s',"scorpion"),random,hostile
MONSTER:('s',"scorpion"),random,hostile
MONSTER:'s',random,hostile
MONSTER:'s',random,hostile
#
@@ -217,21 +217,21 @@ STAIR:(19,10),up
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:')',"bow",(37,10),blessed,0,"The Longbow of Diana"
OBJECT:'(',"chest",(37,10)
OBJECT:random,random,(36,09)
OBJECT:random,random,(36,10)
OBJECT:random,random,(36,11)
OBJECT:random,random,(37,09)
OBJECT:random,random,(37,11)
OBJECT:random,random,(38,09)
OBJECT:random,random,(38,10)
OBJECT:random,random,(38,11)
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:(')',"bow"),(37,10),blessed,0,name:"The Longbow of Diana"
OBJECT:('(',"chest"),(37,10)
OBJECT:random,(36,09)
OBJECT:random,(36,10)
OBJECT:random,(36,11)
OBJECT:random,(37,09)
OBJECT:random,(37,11)
OBJECT:random,(38,09)
OBJECT:random,(38,10)
OBJECT:random,(38,11)
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -255,34 +255,34 @@ DOOR:closed,(51,10)
DOOR:locked,(53,08)
DOOR:closed,(65,05)
# Random monsters.
MONSTER:'s',"Scorpius",(37,10),hostile
MONSTER:'C',"forest centaur",(36,09),hostile
MONSTER:'C',"forest centaur",(36,10),hostile
MONSTER:'C',"forest centaur",(36,11),hostile
MONSTER:'C',"forest centaur",(37,09),hostile
MONSTER:'C',"forest centaur",(37,11),hostile
MONSTER:'C',"forest centaur",(38,09),hostile
MONSTER:'C',"mountain centaur",(38,10),hostile
MONSTER:'C',"mountain centaur",(38,11),hostile
MONSTER:'C',"mountain centaur",(02,02),hostile
MONSTER:'C',"mountain centaur",(71,02),hostile
MONSTER:'C',"mountain centaur",(02,16),hostile
MONSTER:'C',"mountain centaur",(71,16),hostile
MONSTER:'C',"forest centaur",random,hostile
MONSTER:'C',"forest centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',"mountain centaur",random,hostile
MONSTER:'C',random,random,hostile
MONSTER:'C',random,random,hostile
MONSTER:'s',"scorpion",(03,02),hostile
MONSTER:'s',"scorpion",(72,02),hostile
MONSTER:'s',"scorpion",(03,17),hostile
MONSTER:'s',"scorpion",(72,17),hostile
MONSTER:'s',"scorpion",(41,10),hostile
MONSTER:'s',"scorpion",(33,09),hostile
MONSTER:'s',"scorpion",random,hostile
MONSTER:'s',"scorpion",random,hostile
MONSTER:'s',random,random,hostile
MONSTER:('s',"Scorpius"),(37,10),hostile
MONSTER:('C',"forest centaur"),(36,09),hostile
MONSTER:('C',"forest centaur"),(36,10),hostile
MONSTER:('C',"forest centaur"),(36,11),hostile
MONSTER:('C',"forest centaur"),(37,09),hostile
MONSTER:('C',"forest centaur"),(37,11),hostile
MONSTER:('C',"forest centaur"),(38,09),hostile
MONSTER:('C',"mountain centaur"),(38,10),hostile
MONSTER:('C',"mountain centaur"),(38,11),hostile
MONSTER:('C',"mountain centaur"),(02,02),hostile
MONSTER:('C',"mountain centaur"),(71,02),hostile
MONSTER:('C',"mountain centaur"),(02,16),hostile
MONSTER:('C',"mountain centaur"),(71,16),hostile
MONSTER:('C',"forest centaur"),random,hostile
MONSTER:('C',"forest centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:('C',"mountain centaur"),random,hostile
MONSTER:'C',random,hostile
MONSTER:'C',random,hostile
MONSTER:('s',"scorpion"),(03,02),hostile
MONSTER:('s',"scorpion"),(72,02),hostile
MONSTER:('s',"scorpion"),(03,17),hostile
MONSTER:('s',"scorpion"),(72,17),hostile
MONSTER:('s',"scorpion"),(41,10),hostile
MONSTER:('s',"scorpion"),(33,09),hostile
MONSTER:('s',"scorpion"),random,hostile
MONSTER:('s',"scorpion"),random,hostile
MONSTER:'s',random,hostile
WALLIFY
@@ -296,62 +296,62 @@ WALLIFY
#
MAZE: "Ran-fila" , ' '
INIT_MAP: '.' , 'T', true, true, random, true
INIT_MAP: mines, '.' , 'T', true, true, random, true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: 'C', "mountain centaur", random, hostile
MONSTER: 'C', "mountain centaur", random, hostile
MONSTER: 'C', "forest centaur", random, hostile
MONSTER: 'C', "forest centaur", random, hostile
MONSTER: 'C', "forest centaur", random, hostile
MONSTER: 'C', random, random, hostile
MONSTER: 's', "scorpion", random, hostile
MONSTER: ('C', "mountain centaur"), random, hostile
MONSTER: ('C', "mountain centaur"), random, hostile
MONSTER: ('C', "forest centaur"), random, hostile
MONSTER: ('C', "forest centaur"), random, hostile
MONSTER: ('C', "forest centaur"), random, hostile
MONSTER: 'C', random, hostile
MONSTER: ('s', "scorpion"), random, hostile
MAZE: "Ran-filb" , ' '
INIT_MAP: '.' , ' ', true, true, random, true
INIT_MAP: mines, '.' , ' ', true, true, random, true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: 'C', "mountain centaur", random, hostile
MONSTER: 'C', "mountain centaur", random, hostile
MONSTER: 'C', "mountain centaur", random, hostile
MONSTER: 'C', "mountain centaur", random, hostile
MONSTER: 'C', random, random, hostile
MONSTER: 's', "scorpion", random, hostile
MONSTER: 's', "scorpion", random, hostile
MONSTER: ('C', "mountain centaur"), random, hostile
MONSTER: ('C', "mountain centaur"), random, hostile
MONSTER: ('C', "mountain centaur"), random, hostile
MONSTER: ('C', "mountain centaur"), random, hostile
MONSTER: 'C', random, hostile
MONSTER: ('s', "scorpion"), random, hostile
MONSTER: ('s', "scorpion"), random, hostile
+225 -211
View File
@@ -41,11 +41,13 @@ ENDMAP
#REGION:(00,00,75,20),lit,"ordinary"
# The down stairs is at one of the 4 "exits". The others are mimics,
# mimicing stairwells.
RANDOM_PLACES: (33,0), (0,12), (25,20), (75,05)
STAIR:place[0],down
MONSTER:'m',"giant mimic", place[1], m_feature "staircase down"
MONSTER:'m',"large mimic", place[2], m_feature "staircase down"
MONSTER:'m',"small mimic", place[3], m_feature "staircase down"
$place = { (33,0), (0,12), (25,20), (75,05) }
SHUFFLE: $place
STAIR:$place[0],down
MONSTER:('m',"giant mimic"), $place[1], m_feature "staircase down"
MONSTER:('m',"large mimic"), $place[2], m_feature "staircase down"
MONSTER:('m',"small mimic"), $place[3], m_feature "staircase down"
# Portal arrival point
BRANCH:(19,09,19,09),(0,0,0,0)
# Doors (secret)
@@ -98,21 +100,21 @@ DOOR: closed, ( 6,18)
DOOR: closed, (65,18)
DOOR: closed, (68,18)
# Master of Thieves
MONSTER:'@',"Master of Thieves",(36,11)
MONSTER:('@',"Master of Thieves"),(36,11)
# The treasure of Master of Thieves
OBJECT:'(',"chest",(36,11)
OBJECT:('(',"chest"),(36,11)
# thug guards, room #1
MONSTER:'@',"thug",(28,10)
MONSTER:'@',"thug",(29,11)
MONSTER:'@',"thug",(30,09)
MONSTER:'@',"thug",(31,07)
MONSTER:('@',"thug"),(28,10)
MONSTER:('@',"thug"),(29,11)
MONSTER:('@',"thug"),(30,09)
MONSTER:('@',"thug"),(31,07)
# thug guards, room #2
MONSTER:'@',"thug",(31,13)
MONSTER:'@',"thug",(33,14)
MONSTER:'@',"thug",(30,15)
MONSTER:('@',"thug"),(31,13)
MONSTER:('@',"thug"),(33,14)
MONSTER:('@',"thug"),(30,15)
#thug guards, room #3
MONSTER:'@',"thug",(35,09)
MONSTER:'@',"thug",(36,13)
MONSTER:('@',"thug"),(35,09)
MONSTER:('@',"thug"),(36,13)
# Non diggable walls
NON_DIGGABLE:(00,00,75,20)
# Random traps
@@ -136,37 +138,37 @@ TRAP:random,random
# Monsters to get in the way.
#
# West exit
MONSTER: 'l',"leprechaun",(01,12),hostile
MONSTER: 'n',"water nymph",(02,12),hostile
MONSTER: ('l',"leprechaun"),(01,12),hostile
MONSTER: ('n',"water nymph"),(02,12),hostile
# North exit
MONSTER: 'n',"water nymph",(33,01),hostile
MONSTER: 'l',"leprechaun",(33,02),hostile
MONSTER: ('n',"water nymph"),(33,01),hostile
MONSTER: ('l',"leprechaun"),(33,02),hostile
# East exit
MONSTER: 'n',"water nymph",(74,05),hostile
MONSTER: 'l',"leprechaun",(74,04),hostile
MONSTER: ('n',"water nymph"),(74,05),hostile
MONSTER: ('l',"leprechaun"),(74,04),hostile
# South exit
MONSTER: 'l',"leprechaun",(25,19),hostile
MONSTER: 'n',"water nymph",(25,18),hostile
MONSTER: ('l',"leprechaun"),(25,19),hostile
MONSTER: ('n',"water nymph"),(25,18),hostile
# Wandering the streets. What I'd really like for this is a random
# location, but make sure we're on a given type, e.g. street (if they
# existed, of course).
MONSTER: 'n',"water nymph",(07,05),hostile
MONSTER: 'l',"leprechaun",(28,06),hostile
MONSTER: 'n',"water nymph",(38,07),hostile
MONSTER: 'l',"leprechaun",(45,01),hostile
MONSTER: 'n',"water nymph",(59,07),hostile
MONSTER: 'l',"leprechaun",(62,14),hostile
MONSTER: 'n',"water nymph",(71,14),hostile
MONSTER: 'l',"leprechaun",(39,13),hostile
MONSTER: 'n',"water nymph",(18,14),hostile
MONSTER: ':',"chameleon",(19,08),hostile
MONSTER: ':',"chameleon",(22,08),hostile
MONSTER: ':',"chameleon",(16,08),hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ('n',"water nymph"),(07,05),hostile
MONSTER: ('l',"leprechaun"),(28,06),hostile
MONSTER: ('n',"water nymph"),(38,07),hostile
MONSTER: ('l',"leprechaun"),(45,01),hostile
MONSTER: ('n',"water nymph"),(59,07),hostile
MONSTER: ('l',"leprechaun"),(62,14),hostile
MONSTER: ('n',"water nymph"),(71,14),hostile
MONSTER: ('l',"leprechaun"),(39,13),hostile
MONSTER: ('n',"water nymph"),(18,14),hostile
MONSTER: (':',"chameleon"),(19,08),hostile
MONSTER: (':',"chameleon"),(22,08),hostile
MONSTER: (':',"chameleon"),(16,08),hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
#
# The "locate" level for the quest.
@@ -212,21 +214,21 @@ STAIR:random,down
# Non diggable walls
NON_DIGGABLE:(00,00,75,20)
# Objects
OBJECT:'?',"teleportation",(11,18),cursed,0
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('?',"teleportation"),(11,18),cursed,0
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -235,39 +237,39 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',random,random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',random,random,hostile
MONSTER:'N',random,random,hostile
MONSTER:'N',random,random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:'l',random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:'N',random,hostile
MONSTER:'N',random,hostile
MONSTER:'N',random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
#
# The "goal" level for the quest. Teleportation and digging are
@@ -315,21 +317,21 @@ NON_DIGGABLE:(00,00,75,20)
# One trap to keep the gnomes at bay.
TRAP:"spiked pit",(37,07)
# Objects
OBJECT:'(',"skeleton key",(38,10),blessed,0,"The Master Key of Thievery"
OBJECT:'%',"tin",(26,12),"chameleon",0
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('(',"skeleton key"),(38,10),blessed,0,name:"The Master Key of Thievery"
OBJECT:('%',"tin"),(26,12),montype:"chameleon"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -343,45 +345,45 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'@',"Master Assassin",(38,10),hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',"leprechaun",random,hostile
MONSTER:'l',random,random,hostile
MONSTER:'l',random,random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',"guardian naga",random,hostile
MONSTER:'N',random,random,hostile
MONSTER:'N',random,random,hostile
MONSTER:'N',random,random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER: ':',"chameleon",random,hostile
MONSTER:';',"shark",(51,14),hostile
MONSTER:';',"shark",(53,09),hostile
MONSTER:';',"shark",(55,15),hostile
MONSTER:';',"shark",(58,10),hostile
MONSTER:('@',"Master Assassin"),(38,10),hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:('l',"leprechaun"),random,hostile
MONSTER:'l',random,hostile
MONSTER:'l',random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:('N',"guardian naga"),random,hostile
MONSTER:'N',random,hostile
MONSTER:'N',random,hostile
MONSTER:'N',random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER:(';',"shark"),(51,14),hostile
MONSTER:(';',"shark"),(53,09),hostile
MONSTER:(';',"shark"),(55,15),hostile
MONSTER:(';',"shark"),(58,10),hostile
#
# The "fill" level for the quest.
@@ -391,45 +393,51 @@ MONSTER:';',"shark",(58,10),hostile
#
LEVEL: "Rog-fila"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'l', "leprechaun", random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: ('l', "leprechaun"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'l', "leprechaun", random, hostile
MONSTER: 'N', "guardian naga", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: ('l', "leprechaun"), random, hostile
MONSTER: ('N', "guardian naga"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'n', "water nymph", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: ('n', "water nymph"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', random, random, hostile
MONSTER: 'N', "guardian naga", random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', random, hostile
MONSTER: ('N', "guardian naga"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', "leprechaun", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
TRAP: random, random
MONSTER: ('l', "leprechaun"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', "leprechaun", random, hostile
MONSTER: 'n', "water nymph", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
TRAP: random, random
MONSTER: ('l', "leprechaun"), random, hostile
MONSTER: ('n', "water nymph"), random, hostile
}
RANDOM_CORRIDORS
@@ -438,44 +446,50 @@ RANDOM_CORRIDORS
#
LEVEL: "Rog-filb"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'l', "leprechaun", random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: ('l', "leprechaun"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'l', "leprechaun", random, hostile
MONSTER: 'N', "guardian naga", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: ('l', "leprechaun"), random, hostile
MONSTER: ('N', "guardian naga"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'n', "water nymph", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: ('n', "water nymph"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', random, random, hostile
MONSTER: 'N', "guardian naga", random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', random, hostile
MONSTER: ('N', "guardian naga"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', "leprechaun", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
TRAP: random, random
MONSTER: ('l', "leprechaun"), random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
TRAP: random, random
MONSTER: 'l', "leprechaun", random, hostile
MONSTER: 'n', "water nymph", random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
TRAP: random, random
MONSTER: ('l', "leprechaun"), random, hostile
MONSTER: ('n', "water nymph"), random, hostile
}
RANDOM_CORRIDORS
+167 -165
View File
@@ -54,18 +54,18 @@ DOOR:locked,(39,08)
DOOR:closed,(50,04)
DOOR:closed,(50,06)
# Lord Sato
MONSTER:'@',"Lord Sato",(20,04)
MONSTER:('@',"Lord Sato"),(20,04)
# The treasure of Lord Sato
OBJECT:'(',"chest",(20,04)
OBJECT:('(',"chest"),(20,04)
# roshi guards for the audience chamber
MONSTER:'@',"roshi",(18,04)
MONSTER:'@',"roshi",(18,05)
MONSTER:'@',"roshi",(18,06)
MONSTER:'@',"roshi",(18,07)
MONSTER:'@',"roshi",(26,04)
MONSTER:'@',"roshi",(26,05)
MONSTER:'@',"roshi",(26,06)
MONSTER:'@',"roshi",(26,07)
MONSTER:('@',"roshi"),(18,04)
MONSTER:('@',"roshi"),(18,05)
MONSTER:('@',"roshi"),(18,06)
MONSTER:('@',"roshi"),(18,07)
MONSTER:('@',"roshi"),(26,04)
MONSTER:('@',"roshi"),(26,05)
MONSTER:('@',"roshi"),(26,06)
MONSTER:('@',"roshi"),(26,07)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Random traps
@@ -76,19 +76,19 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty.
MONSTER: '@',"ninja",(64,00),hostile
MONSTER: 'd',"wolf",(65,01)
MONSTER: '@',"ninja",(67,02),hostile
MONSTER: '@',"ninja",(69,05),hostile
MONSTER: '@',"ninja",(69,06),hostile
MONSTER: 'd',"wolf",(69,07)
MONSTER: '@',"ninja",(70,06),hostile
MONSTER: '@',"ninja",(70,07),hostile
MONSTER: '@',"ninja",(72,01),hostile
MONSTER: 'd',"wolf",(75,09)
MONSTER: '@',"ninja",(73,05),hostile
MONSTER: '@',"ninja",(68,02),hostile
MONSTER:'E',"stalker",random
MONSTER: ('@',"ninja"),(64,00),hostile
MONSTER: ('d',"wolf"),(65,01)
MONSTER: ('@',"ninja"),(67,02),hostile
MONSTER: ('@',"ninja"),(69,05),hostile
MONSTER: ('@',"ninja"),(69,06),hostile
MONSTER: ('d',"wolf"),(69,07)
MONSTER: ('@',"ninja"),(70,06),hostile
MONSTER: ('@',"ninja"),(70,07),hostile
MONSTER: ('@',"ninja"),(72,01),hostile
MONSTER: ('d',"wolf"),(75,09)
MONSTER: ('@',"ninja"),(73,05),hostile
MONSTER: ('@',"ninja"),(68,02),hostile
MONSTER:('E',"stalker"),random
#
# The "locate" level for the quest.
@@ -155,41 +155,41 @@ STAIR:(25,14),down
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:'*',random,(25,05)
OBJECT:'*',random,(26,05)
OBJECT:'*',random,(27,05)
OBJECT:'*',random,(28,05)
OBJECT:'*',random,(25,06)
OBJECT:'*',random,(26,06)
OBJECT:'*',random,(27,06)
OBJECT:'*',random,(28,06)
OBJECT:'*',(25,05)
OBJECT:'*',(26,05)
OBJECT:'*',(27,05)
OBJECT:'*',(28,05)
OBJECT:'*',(25,06)
OBJECT:'*',(26,06)
OBJECT:'*',(27,06)
OBJECT:'*',(28,06)
#
OBJECT:'[',random,(40,05)
OBJECT:'[',random,(41,05)
OBJECT:'[',random,(42,05)
OBJECT:'[',random,(43,05)
OBJECT:'[',random,(40,06)
OBJECT:'[',random,(41,06)
OBJECT:'[',random,(42,06)
OBJECT:'[',random,(43,06)
OBJECT:'[',(40,05)
OBJECT:'[',(41,05)
OBJECT:'[',(42,05)
OBJECT:'[',(43,05)
OBJECT:'[',(40,06)
OBJECT:'[',(41,06)
OBJECT:'[',(42,06)
OBJECT:'[',(43,06)
#
OBJECT:')',random,(27,13)
OBJECT:')',random,(28,13)
OBJECT:')',random,(29,13)
OBJECT:')',random,(30,13)
OBJECT:')',random,(27,14)
OBJECT:')',random,(28,14)
OBJECT:')',random,(29,14)
OBJECT:')',random,(30,14)
OBJECT:')',(27,13)
OBJECT:')',(28,13)
OBJECT:')',(29,13)
OBJECT:')',(30,13)
OBJECT:')',(27,14)
OBJECT:')',(28,14)
OBJECT:')',(29,14)
OBJECT:')',(30,14)
#
OBJECT:'(',random,(37,13)
OBJECT:'(',random,(38,13)
OBJECT:'(',random,(39,13)
OBJECT:'(',random,(40,13)
OBJECT:'(',random,(37,14)
OBJECT:'(',random,(38,14)
OBJECT:'(',random,(39,14)
OBJECT:'(',random,(40,14)
OBJECT:'(',(37,13)
OBJECT:'(',(38,13)
OBJECT:'(',(39,13)
OBJECT:'(',(40,13)
OBJECT:'(',(37,14)
OBJECT:'(',(38,14)
OBJECT:'(',(39,14)
OBJECT:'(',(40,14)
# Random traps
TRAP:random,random
TRAP:random,random
@@ -198,40 +198,40 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'@',"ninja",(15,05),hostile
MONSTER:'@',"ninja",(16,05),hostile
MONSTER:'d',"wolf",(17,05)
MONSTER:'d',"wolf",(18,05)
MONSTER:'@',"ninja",(19,05),hostile
MONSTER:'d',"wolf",(15,14)
MONSTER:'d',"wolf",(16,14)
MONSTER:'@',"ninja",(17,14),hostile
MONSTER:'@',"ninja",(18,14),hostile
MONSTER:'d',"wolf",(56,05)
MONSTER:'@',"ninja",(57,05),hostile
MONSTER:'d',"wolf",(58,05)
MONSTER:'d',"wolf",(59,05)
MONSTER:'@',"ninja",(56,14),hostile
MONSTER:'d',"wolf",(57,14)
MONSTER:'@',"ninja",(58,14),hostile
MONSTER:'d',random,(59,14)
MONSTER:'d',"wolf",(60,14)
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:('@',"ninja"),(15,05),hostile
MONSTER:('@',"ninja"),(16,05),hostile
MONSTER:('d',"wolf"),(17,05)
MONSTER:('d',"wolf"),(18,05)
MONSTER:('@',"ninja"),(19,05),hostile
MONSTER:('d',"wolf"),(15,14)
MONSTER:('d',"wolf"),(16,14)
MONSTER:('@',"ninja"),(17,14),hostile
MONSTER:('@',"ninja"),(18,14),hostile
MONSTER:('d',"wolf"),(56,05)
MONSTER:('@',"ninja"),(57,05),hostile
MONSTER:('d',"wolf"),(58,05)
MONSTER:('d',"wolf"),(59,05)
MONSTER:('@',"ninja"),(56,14),hostile
MONSTER:('d',"wolf"),(57,14)
MONSTER:('@',"ninja"),(58,14),hostile
MONSTER:'d',(59,14)
MONSTER:('d',"wolf"),(60,14)
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
# "guards" for the central courtyard.
MONSTER:'@',"samurai",(30,05),hostile
MONSTER:'@',"samurai",(31,05),hostile
MONSTER:'@',"samurai",(32,05),hostile
MONSTER:'@',"samurai",(32,14),hostile
MONSTER:'@',"samurai",(33,14),hostile
MONSTER:'@',"samurai",(34,14),hostile
MONSTER:('@',"samurai"),(30,05),hostile
MONSTER:('@',"samurai"),(31,05),hostile
MONSTER:('@',"samurai"),(32,05),hostile
MONSTER:('@',"samurai"),(32,14),hostile
MONSTER:('@',"samurai"),(33,14),hostile
MONSTER:('@',"samurai"),(34,14),hostile
#
# The "goal" level for the quest.
@@ -267,7 +267,9 @@ MAP
.......................
ENDMAP
# Dungeon Description
RANDOM_PLACES:(02,11),(42,09)
$place = { (02,11),(42,09) }
SHUFFLE: $place
REGION:(00,00,44,19),unlit,"ordinary"
# Doors
DOOR:closed,(19,10)
@@ -275,25 +277,25 @@ DOOR:closed,(22,08)
DOOR:closed,(22,12)
DOOR:closed,(25,10)
# Stairs
STAIR:place[0],up
STAIR:$place[0],up
# Non diggable walls
NON_DIGGABLE:(00,00,44,19)
# Objects
OBJECT:')',"tsurugi",(22,10),blessed,0,"The Tsurugi of Muramasa"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:(')',"tsurugi"),(22,10),blessed,0,name:"The Tsurugi of Muramasa"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
#
TRAP:"board",(22,09)
TRAP:"board",(24,10)
@@ -306,32 +308,32 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'@',"Ashikaga Takauji",(22,10)
MONSTER:'@',"samurai",random,hostile
MONSTER:'@',"samurai",random,hostile
MONSTER:'@',"samurai",random,hostile
MONSTER:'@',"samurai",random,hostile
MONSTER:'@',"samurai",random,hostile
MONSTER:'@',"ninja",random,hostile
MONSTER:'@',"ninja",random,hostile
MONSTER:'@',"ninja",random,hostile
MONSTER:'@',"ninja",random,hostile
MONSTER:'@',"ninja",random,hostile
MONSTER:'d',"wolf",random
MONSTER:'d',"wolf",random
MONSTER:'d',"wolf",random
MONSTER:'d',"wolf",random
MONSTER:'d',random,random
MONSTER:'d',random,random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:'E',"stalker",random
MONSTER:('@',"Ashikaga Takauji"),(22,10)
MONSTER:('@',"samurai"),random,hostile
MONSTER:('@',"samurai"),random,hostile
MONSTER:('@',"samurai"),random,hostile
MONSTER:('@',"samurai"),random,hostile
MONSTER:('@',"samurai"),random,hostile
MONSTER:('@',"ninja"),random,hostile
MONSTER:('@',"ninja"),random,hostile
MONSTER:('@',"ninja"),random,hostile
MONSTER:('@',"ninja"),random,hostile
MONSTER:('@',"ninja"),random,hostile
MONSTER:('d',"wolf"),random
MONSTER:('d',"wolf"),random
MONSTER:('d',"wolf"),random
MONSTER:('d',"wolf"),random
MONSTER:'d',random
MONSTER:'d',random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
MONSTER:('E',"stalker"),random
#
@@ -344,29 +346,29 @@ MONSTER:'E',"stalker",random
#
MAZE: "Sam-fila", ' '
INIT_MAP: '.' , 'P', true, true, random, true
INIT_MAP: mines, '.' , 'P', true, true, random, true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'd', random, random
MONSTER: 'd', "wolf", random
MONSTER: 'd', "wolf", random
MONSTER: 'd', "wolf", random
MONSTER: 'd', "wolf", random
MONSTER: 'd', "wolf", random
MONSTER: 'E', "stalker", random
MONSTER: 'd', random
MONSTER: ('d', "wolf"), random
MONSTER: ('d', "wolf"), random
MONSTER: ('d', "wolf"), random
MONSTER: ('d', "wolf"), random
MONSTER: ('d', "wolf"), random
MONSTER: ('E', "stalker"), random
#
TRAP: random, random
TRAP: random, random
@@ -403,24 +405,24 @@ DOOR:closed,(43,08)
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'd', random, random
MONSTER: 'd', "wolf", random
MONSTER: 'd', "wolf", random
MONSTER: 'd', "wolf", random
MONSTER: 'd', "wolf", random
MONSTER: 'E', "stalker", random
MONSTER: 'E', "stalker", random
MONSTER: 'E', "stalker", random
MONSTER: 'd', random
MONSTER: ('d', "wolf"), random
MONSTER: ('d', "wolf"), random
MONSTER: ('d', "wolf"), random
MONSTER: ('d', "wolf"), random
MONSTER: ('E', "stalker"), random
MONSTER: ('E', "stalker"), random
MONSTER: ('E', "stalker"), random
#
TRAP: random, random
TRAP: random, random
+164 -164
View File
@@ -72,54 +72,54 @@ DOOR:open,(16,17)
DOOR:locked,(35,07)
DOOR:locked,(36,07)
# Monsters on siege duty.
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',"giant spider",random
MONSTER: 's',random,random
MONSTER: 's',random,random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',"forest centaur",random
MONSTER: 'C',random,random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: ('s',"giant spider"),random
MONSTER: 's',random
MONSTER: 's',random
MONSTER: ('C',"forest centaur"),random
MONSTER: ('C',"forest centaur"),random
MONSTER: ('C',"forest centaur"),random
MONSTER: ('C',"forest centaur"),random
MONSTER: ('C',"forest centaur"),random
MONSTER: ('C',"forest centaur"),random
MONSTER: ('C',"forest centaur"),random
MONSTER: ('C',"forest centaur"),random
MONSTER: 'C',random
# Twoflower
MONSTER:'@',"Twoflower",(64,03)
MONSTER:('@',"Twoflower"),(64,03)
# The treasure of Twoflower
OBJECT:'(',"chest",(64,03)
OBJECT:('(',"chest"),(64,03)
# guides for the audience chamber
MONSTER:'@',"guide",(29,03)
MONSTER:'@',"guide",(32,04)
MONSTER:'@',"guide",(35,02)
MONSTER:'@',"guide",(38,03)
MONSTER:'@',"guide",(45,03)
MONSTER:'@',"guide",(48,02)
MONSTER:'@',"guide",(49,04)
MONSTER:'@',"guide",(51,03)
MONSTER:'@',"guide",(57,03)
MONSTER:'@',"guide",(62,04)
MONSTER:'@',"guide",(66,04)
MONSTER:('@',"guide"),(29,03)
MONSTER:('@',"guide"),(32,04)
MONSTER:('@',"guide"),(35,02)
MONSTER:('@',"guide"),(38,03)
MONSTER:('@',"guide"),(45,03)
MONSTER:('@',"guide"),(48,02)
MONSTER:('@',"guide"),(49,04)
MONSTER:('@',"guide"),(51,03)
MONSTER:('@',"guide"),(57,03)
MONSTER:('@',"guide"),(62,04)
MONSTER:('@',"guide"),(66,04)
# path guards
MONSTER:'@',"watchman",(35,08)
MONSTER:'@',"watchman",(36,08)
MONSTER:('@',"watchman"),(35,08)
MONSTER:('@',"watchman"),(36,08)
# river monsters
MONSTER:';',"giant eel",(62,12)
MONSTER:';',"piranha",(47,10)
MONSTER:';',"piranha",(29,11)
MONSTER:';',"kraken",(34,09)
MONSTER:';',"kraken",(37,09)
MONSTER:(';',"giant eel"),(62,12)
MONSTER:(';',"piranha"),(47,10)
MONSTER:(';',"piranha"),(29,11)
MONSTER:(';',"kraken"),(34,09)
MONSTER:(';',"kraken"),(37,09)
# Random traps
TRAP:random,random
TRAP:random,random
@@ -244,23 +244,23 @@ DOOR:closed,(60,16)
DOOR:closed,(73,16)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Toilet paper
OBJECT:'?',"blank paper",(71,12)
OBJECT:'?',"blank paper",(71,12)
OBJECT:('?',"blank paper"),(71,12)
OBJECT:('?',"blank paper"),(71,12)
# Random traps
TRAP:random,random
TRAP:random,random
@@ -272,24 +272,24 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',random,random
MONSTER:'s',random,random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:'s',random
MONSTER:'s',random
#
# The "goal" level for the quest.
@@ -386,21 +386,21 @@ DOOR:random,(51,15)
DOOR:open,(59,14)
DOOR:open,(59,17)
# Objects
OBJECT:'(',"credit card",(04,01),blessed,0,"The Platinum Yendorian Express Card"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('(',"credit card"),(04,01),blessed,0,name:"The Platinum Yendorian Express Card"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -409,47 +409,47 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'@',"Master of Thieves",(04,01),hostile
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',"giant spider",random
MONSTER:'s',random,random
MONSTER:'s',random,random
MONSTER:('@',"Master of Thieves"),(04,01),hostile
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:('s',"giant spider"),random
MONSTER:'s',random
MONSTER:'s',random
# ladies of the evening
MONSTER:'&',"succubus",(02,08)
MONSTER:'&',"succubus",(08,08)
MONSTER:'&',"incubus",(02,14)
MONSTER:'&',"incubus",(08,14)
MONSTER:'&',"incubus",(02,17)
MONSTER:'&',"incubus",(08,17)
MONSTER:('&',"succubus"),(02,08)
MONSTER:('&',"succubus"),(08,08)
MONSTER:('&',"incubus"),(02,14)
MONSTER:('&',"incubus"),(08,14)
MONSTER:('&',"incubus"),(02,17)
MONSTER:('&',"incubus"),(08,17)
# Police station (with drunken prisoners)
MONSTER:'K',"Kop Kaptain",(24,09),hostile
MONSTER:'K',"Kop Lieutenant",(20,09),hostile
MONSTER:'K',"Kop Lieutenant",(22,11),hostile
MONSTER:'K',"Kop Lieutenant",(22,07),hostile
MONSTER:'K',"Keystone Kop",(19,07),hostile
MONSTER:'K',"Keystone Kop",(19,08),hostile
MONSTER:'K',"Keystone Kop",(22,09),hostile
MONSTER:'K',"Keystone Kop",(24,11),hostile
MONSTER:'K',"Keystone Kop",(19,11),hostile
MONSTER:'@',"prisoner",(19,13)
MONSTER:'@',"prisoner",(21,13)
MONSTER:'@',"prisoner",(24,13)
MONSTER:('K',"Kop Kaptain"),(24,09),hostile
MONSTER:('K',"Kop Lieutenant"),(20,09),hostile
MONSTER:('K',"Kop Lieutenant"),(22,11),hostile
MONSTER:('K',"Kop Lieutenant"),(22,07),hostile
MONSTER:('K',"Keystone Kop"),(19,07),hostile
MONSTER:('K',"Keystone Kop"),(19,08),hostile
MONSTER:('K',"Keystone Kop"),(22,09),hostile
MONSTER:('K',"Keystone Kop"),(24,11),hostile
MONSTER:('K',"Keystone Kop"),(19,11),hostile
MONSTER:('@',"prisoner"),(19,13)
MONSTER:('@',"prisoner"),(21,13)
MONSTER:('@',"prisoner"),(24,13)
#
MONSTER:'@',"watchman",(33,10),hostile
MONSTER:('@',"watchman"),(33,10),hostile
WALLIFY
@@ -461,61 +461,61 @@ WALLIFY
#
MAZE: "Tou-fila" , ' '
INIT_MAP: '.' , ' ', true, true, random, true
INIT_MAP: mines, '.' , ' ', true, true, random, true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: '@', "soldier", random, hostile
MONSTER: '@', "soldier", random, hostile
MONSTER: '@', "soldier", random, hostile
MONSTER: '@', "soldier", random, hostile
MONSTER: '@', "soldier", random, hostile
MONSTER: 'H', random, random, hostile
MONSTER: 'C', random, random, hostile
MONSTER: ('@', "soldier"), random, hostile
MONSTER: ('@', "soldier"), random, hostile
MONSTER: ('@', "soldier"), random, hostile
MONSTER: ('@', "soldier"), random, hostile
MONSTER: ('@', "soldier"), random, hostile
MONSTER: 'H', random, hostile
MONSTER: 'C', random, hostile
MAZE: "Tou-filb" , ' '
INIT_MAP: '.' , ' ', true, true, random, true
INIT_MAP: mines, '.' , ' ', true, true, random, true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: '@', "soldier", random, hostile
MONSTER: '@', "captain", random, hostile
MONSTER: '@', "captain", random, hostile
MONSTER: 'H', random, random, hostile
MONSTER: 'H', random, random, hostile
MONSTER: 'C', random, random, hostile
MONSTER: 's', random, random
MONSTER: ('@', "soldier"), random, hostile
MONSTER: ('@', "captain"), random, hostile
MONSTER: ('@', "captain"), random, hostile
MONSTER: 'H', random, hostile
MONSTER: 'H', random, hostile
MONSTER: 'C', random, hostile
MONSTER: 's', random
+142 -140
View File
@@ -11,8 +11,7 @@
# and receive your quest assignment.
#
MAZE: "Val-strt",' '
FLAGS: noteleport,hardfloor
INIT_MAP: '.', 'I', true, true, lit, false, true
FLAGS: noteleport,hardfloor,icedpools
GEOMETRY:center,center
MAP
IIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
@@ -48,18 +47,18 @@ FOUNTAIN:(53,02)
DOOR:locked,(26,10)
DOOR:locked,(43,10)
# Norn
MONSTER:'@',"Norn",(35,10)
MONSTER:('@',"Norn"),(35,10)
# The treasure of the Norn
OBJECT:'(',"chest",(36,10)
OBJECT:('(',"chest"),(36,10)
# valkyrie guards for the audience chamber
MONSTER:'@',"warrior",(27,08)
MONSTER:'@',"warrior",(27,09)
MONSTER:'@',"warrior",(27,11)
MONSTER:'@',"warrior",(27,12)
MONSTER:'@',"warrior",(42,08)
MONSTER:'@',"warrior",(42,09)
MONSTER:'@',"warrior",(42,11)
MONSTER:'@',"warrior",(42,12)
MONSTER:('@',"warrior"),(27,08)
MONSTER:('@',"warrior"),(27,09)
MONSTER:('@',"warrior"),(27,11)
MONSTER:('@',"warrior"),(27,12)
MONSTER:('@',"warrior"),(42,08)
MONSTER:('@',"warrior"),(42,09)
MONSTER:('@',"warrior"),(42,11)
MONSTER:('@',"warrior"),(42,12)
# Non diggable walls
NON_DIGGABLE:(26,07,43,13)
# Random traps
@@ -70,18 +69,18 @@ TRAP:"fire",random
TRAP:"fire",random
TRAP:"fire",random
# Monsters on siege duty.
MONSTER: 'a',"fire ant",(04,12)
MONSTER: 'a',"fire ant",(08,08)
MONSTER: 'a',"fire ant",(14,04)
MONSTER: 'a',"fire ant",(17,11)
MONSTER: 'a',"fire ant",(24,10)
MONSTER: 'a',"fire ant",(45,10)
MONSTER: 'a',"fire ant",(54,02)
MONSTER: 'a',"fire ant",(55,07)
MONSTER: 'a',"fire ant",(58,14)
MONSTER: 'a',"fire ant",(63,17)
MONSTER: 'H',"fire giant",(18,01),hostile
MONSTER: 'H',"fire giant",(10,16),hostile
MONSTER: ('a',"fire ant"),(04,12)
MONSTER: ('a',"fire ant"),(08,08)
MONSTER: ('a',"fire ant"),(14,04)
MONSTER: ('a',"fire ant"),(17,11)
MONSTER: ('a',"fire ant"),(24,10)
MONSTER: ('a',"fire ant"),(45,10)
MONSTER: ('a',"fire ant"),(54,02)
MONSTER: ('a',"fire ant"),(55,07)
MONSTER: ('a',"fire ant"),(58,14)
MONSTER: ('a',"fire ant"),(63,17)
MONSTER: ('H',"fire giant"),(18,01),hostile
MONSTER: ('H',"fire giant"),(10,16),hostile
#
# The "locate" level for the quest.
@@ -91,8 +90,8 @@ MONSTER: 'H',"fire giant",(10,16),hostile
#
MAZE: "Val-loca",' '
FLAGS: hardfloor
INIT_MAP: '.', 'I', true, true, lit, false, true
FLAGS: hardfloor,icedpools
INIT_MAP: mines, '.', 'I', true, true, lit, false
GEOMETRY:center,center
MAP
PPPP.... ....PPPPP.
@@ -117,21 +116,21 @@ STAIR:(20,06),down
# Non diggable walls
NON_DIGGABLE:(00,00,39,12)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:"fire",random
TRAP:"fire",random
@@ -140,33 +139,33 @@ TRAP:"fire",random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',random,random
MONSTER:'H',random,random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',random,random,hostile
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:'a',random
MONSTER:'H',random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:'H',random,hostile
#
# The "goal" level for the quest.
@@ -177,7 +176,8 @@ MONSTER:'H',random,random,hostile
#
MAZE: "Val-goal", 'L'
INIT_MAP: '.', 'L', true, true, lit, false, true
FLAGS: icedpools
INIT_MAP: mines, '.', 'L', true, true, lit, false
GEOMETRY:center,center
MAP
.L............................LLLLL
@@ -209,21 +209,21 @@ NON_DIGGABLE:(00,00,34,16)
DRAWBRIDGE:(17,02),south,random
DRAWBRIDGE:(17,14),north,open
# Objects
OBJECT:'(',"crystal ball",(17,08),blessed,5,"The Orb of Fate"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('(',"crystal ball"),(17,08),blessed,5,name:"The Orb of Fate"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Traps
TRAP:"board",(13,08)
TRAP:"board",(21,08)
@@ -236,26 +236,26 @@ TRAP:"board",random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'H',"Lord Surtur",(17,08)
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',"fire ant",random
MONSTER:'a',random,random
MONSTER:'a',random,random
MONSTER:'H',"fire giant",(10,06),hostile
MONSTER:'H',"fire giant",(10,07),hostile
MONSTER:'H',"fire giant",(10,08),hostile
MONSTER:'H',"fire giant",(10,09),hostile
MONSTER:'H',"fire giant",(10,10),hostile
MONSTER:'H',"fire giant",(24,06),hostile
MONSTER:'H',"fire giant",(24,07),hostile
MONSTER:'H',"fire giant",(24,08),hostile
MONSTER:'H',"fire giant",(24,09),hostile
MONSTER:'H',"fire giant",(24,10),hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',"fire giant",random,hostile
MONSTER:'H',random,random,hostile
MONSTER:('H',"Lord Surtur"),(17,08)
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:('a',"fire ant"),random
MONSTER:'a',random
MONSTER:'a',random
MONSTER:('H',"fire giant"),(10,06),hostile
MONSTER:('H',"fire giant"),(10,07),hostile
MONSTER:('H',"fire giant"),(10,08),hostile
MONSTER:('H',"fire giant"),(10,09),hostile
MONSTER:('H',"fire giant"),(10,10),hostile
MONSTER:('H',"fire giant"),(24,06),hostile
MONSTER:('H',"fire giant"),(24,07),hostile
MONSTER:('H',"fire giant"),(24,08),hostile
MONSTER:('H',"fire giant"),(24,09),hostile
MONSTER:('H',"fire giant"),(24,10),hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:('H',"fire giant"),random,hostile
MONSTER:'H',random,hostile
#
# The "fill" levels for the quest.
@@ -267,29 +267,30 @@ MONSTER:'H',random,random,hostile
#
MAZE: "Val-fila" , 'I'
INIT_MAP: '.', 'I', true, true, lit, false, true
FLAGS: icedpools
INIT_MAP: mines, '.', 'I', true, true, lit, false
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'a', "fire ant", random
MONSTER: 'a', "fire ant", random
MONSTER: 'a', "fire ant", random
MONSTER: 'a', "fire ant", random
MONSTER: 'a', "fire ant", random
MONSTER: 'a', random, random
MONSTER: 'H', "fire giant", random, hostile
MONSTER: ('a', "fire ant"), random
MONSTER: ('a', "fire ant"), random
MONSTER: ('a', "fire ant"), random
MONSTER: ('a', "fire ant"), random
MONSTER: ('a', "fire ant"), random
MONSTER: 'a', random
MONSTER: ('H', "fire giant"), random, hostile
#
TRAP: random, random
TRAP: random, random
@@ -300,31 +301,32 @@ TRAP: random, random
TRAP: random, random
MAZE: "Val-filb" , 'L'
INIT_MAP: '.', 'L', true, true, lit, false, true
FLAGS: icedpools
INIT_MAP: mines, '.', 'L', true, true, lit, false
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
OBJECT: random, random
#
MONSTER: 'a', "fire ant", random
MONSTER: 'a', "fire ant", random
MONSTER: 'a', "fire ant", random
MONSTER: 'a', random, random
MONSTER: 'H', "fire giant", random, hostile
MONSTER: 'H', "fire giant", random, hostile
MONSTER: 'H', "fire giant", random, hostile
MONSTER: ('a', "fire ant"), random
MONSTER: ('a', "fire ant"), random
MONSTER: ('a', "fire ant"), random
MONSTER: 'a', random
MONSTER: ('H', "fire giant"), random, hostile
MONSTER: ('H', "fire giant"), random, hostile
MONSTER: ('H', "fire giant"), random, hostile
#
TRAP: "fire", random
TRAP: "fire", random
+191 -179
View File
@@ -38,7 +38,7 @@ ENDMAP
REGION:(00,00,75,19),lit,"ordinary"
REGION:(35,00,49,03),unlit,"ordinary"
REGION:(43,12,49,16),unlit,"ordinary"
REGION:(19,11,33,15),unlit,"ordinary",unfilled,true
REGION:(19,11,33,15),unlit,"ordinary",unfilled,irregular
REGION:(30,10,31,10),unlit,"ordinary"
# Stairs
STAIR:(30,10),down
@@ -54,22 +54,22 @@ DOOR:closed,(15,10)
DOOR:locked,(19,10)
DOOR:locked,(20,10)
# Neferet the Green, the quest leader
MONSTER:'@',"Neferet the Green",(23,05)
MONSTER:('@',"Neferet the Green"),(23,05)
# The treasure of the quest leader
OBJECT:'(',"chest",(24,05)
OBJECT:('(',"chest"),(24,05)
# apprentice guards for the audience chamber
MONSTER:'@',"apprentice",(30,07)
MONSTER:'@',"apprentice",(24,06)
MONSTER:'@',"apprentice",(15,06)
MONSTER:'@',"apprentice",(15,12)
MONSTER:'@',"apprentice",(26,11)
MONSTER:'@',"apprentice",(27,11)
MONSTER:'@',"apprentice",(19,09)
MONSTER:'@',"apprentice",(20,09)
MONSTER:('@',"apprentice"),(30,07)
MONSTER:('@',"apprentice"),(24,06)
MONSTER:('@',"apprentice"),(15,06)
MONSTER:('@',"apprentice"),(15,12)
MONSTER:('@',"apprentice"),(26,11)
MONSTER:('@',"apprentice"),(27,11)
MONSTER:('@',"apprentice"),(19,09)
MONSTER:('@',"apprentice"),(20,09)
# Eels in the pond
MONSTER:';',"giant eel",(62,14)
MONSTER:';',"giant eel",(69,15)
MONSTER:';',"giant eel",(67,17)
MONSTER:(';',"giant eel"),(62,14)
MONSTER:(';',"giant eel"),(69,15)
MONSTER:(';',"giant eel"),(67,17)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Random traps
@@ -80,21 +80,21 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters on siege duty.
MONSTER: 'B',random,(60,09),hostile
MONSTER: 'W',random,(60,10),hostile
MONSTER: 'B',random,(60,11),hostile
MONSTER: 'B',random,(60,12),hostile
MONSTER: 'i',random,(60,13),hostile
MONSTER: 'B',random,(61,10),hostile
MONSTER: 'B',random,(61,11),hostile
MONSTER: 'B',random,(61,12),hostile
MONSTER: 'B',random,(35,03),hostile
MONSTER: 'i',random,(35,17),hostile
MONSTER: 'B',random,(36,17),hostile
MONSTER: 'B',random,(34,16),hostile
MONSTER: 'i',random,(34,17),hostile
MONSTER: 'W',random,(67,02),hostile
MONSTER: 'B',random,(10,19),hostile
MONSTER: 'B',(60,09),hostile
MONSTER: 'W',(60,10),hostile
MONSTER: 'B',(60,11),hostile
MONSTER: 'B',(60,12),hostile
MONSTER: 'i',(60,13),hostile
MONSTER: 'B',(61,10),hostile
MONSTER: 'B',(61,11),hostile
MONSTER: 'B',(61,12),hostile
MONSTER: 'B',(35,03),hostile
MONSTER: 'i',(35,17),hostile
MONSTER: 'B',(36,17),hostile
MONSTER: 'B',(34,16),hostile
MONSTER: 'i',(34,17),hostile
MONSTER: 'W',(67,02),hostile
MONSTER: 'B',(10,19),hostile
#
# The "locate" level for the quest.
@@ -153,21 +153,21 @@ STAIR:(48,10),down
# Non diggable walls
NON_DIGGABLE:(00,00,75,20)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:"spiked pit",(24,02)
TRAP:"spiked pit",(07,10)
@@ -191,33 +191,33 @@ TRAP:"dart",random
TRAP:"dart",random
TRAP:"dart",random
# Random monsters.
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'i',random,random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:'i',random,hostile
#
# The "goal" level for the quest.
@@ -293,21 +293,21 @@ NON_DIGGABLE:(00,00,75,19)
# The altar. This is not a shrine.
ALTAR:(16,11),noncoaligned,altar
# Objects
OBJECT:'"',"amulet of ESP",(16,11),blessed,0,"The Eye of the Aethiopica"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:('"',"amulet of ESP"),(16,11),blessed,0,name:"The Eye of the Aethiopica"
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -316,43 +316,43 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:'@',"Dark One",(16,11)
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'B',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'i',random,random,hostile
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'i',random,random,hostile
MONSTER:('@',"Dark One"),(16,11)
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'B',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:'i',random,hostile
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:'i',random,hostile
# Captive Monsters in the dungeon
MONSTER:'@',"rogue",(35,06),peaceful,"Pug"
MONSTER:'Y',"owlbear",(47,06),peaceful,asleep
MONSTER:'@',"wizard",(32,11),peaceful,asleep,"Newt"
MONSTER:'@',"Grey-elf",(44,11),peaceful
MONSTER:'H',"hill giant",(47,11),peaceful,asleep
MONSTER:'G',"gnomish wizard",(38,06),peaceful
MONSTER:'@',"prisoner",(35,11),peaceful
MONSTER:'@',"prisoner",(41,11),peaceful,asleep
MONSTER:('@',"rogue"),(35,06),peaceful,"Pug"
MONSTER:('Y',"owlbear"),(47,06),peaceful,asleep
MONSTER:('@',"wizard"),(32,11),peaceful,asleep,"Newt"
MONSTER:('@',"Grey-elf"),(44,11),peaceful
MONSTER:('H',"hill giant"),(47,11),peaceful,asleep
MONSTER:('G',"gnomish wizard"),(38,06),peaceful
MONSTER:('@',"prisoner"),(35,11),peaceful
MONSTER:('@',"prisoner"),(41,11),peaceful,asleep
#
# The "fill" levels for the quest.
@@ -365,77 +365,89 @@ MONSTER:'@',"prisoner",(41,11),peaceful,asleep
LEVEL: "Wiz-fila"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'i', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: 'i', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'i', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: 'i', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'B', "vampire bat", random
MONSTER: 'B', "vampire bat", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: ('B', "vampire bat"), random
MONSTER: ('B', "vampire bat"), random
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'i', random, random, hostile
MONSTER: 'B', "vampire bat", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
MONSTER: 'i', random, hostile
MONSTER: ('B', "vampire bat"), random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'i', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: 'i', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'B', "vampire bat", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: ('B', "vampire bat"), random
}
RANDOM_CORRIDORS
LEVEL: "Wiz-filb"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'X', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
MONSTER: 'X', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'i', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random,random
MONSTER: 'i', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 'X', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
OBJECT: random,random
MONSTER: 'X', random, hostile
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'i', random, random, hostile
MONSTER: 'B', "vampire bat", random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
MONSTER: 'i', random, hostile
MONSTER: ('B', "vampire bat"), random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'i', random, random, hostile
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
TRAP: random, random
MONSTER: 'i', random, hostile
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'B', "vampire bat", random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: ('B', "vampire bat"), random
}
RANDOM_CORRIDORS
+215 -215
View File
@@ -38,21 +38,21 @@ STAIR:random,down
# Non diggable walls
NON_DIGGABLE:(00,00,74,17)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -61,34 +61,34 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
# Here, just play with the lighting...
@@ -130,21 +130,21 @@ STAIR:random,down
# Non diggable walls
NON_DIGGABLE:(00,00,74,17)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -153,34 +153,34 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
# Now, let's get fancy...
@@ -214,21 +214,21 @@ STAIR:random,down
# Non diggable walls
NON_DIGGABLE:(00,00,74,17)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -237,34 +237,34 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:random,random,(01,01)
MONSTER:random,random,(13,01)
MONSTER:random,random,(25,01)
MONSTER:random,random,(37,01)
MONSTER:random,random,(49,01)
MONSTER:random,random,(61,01)
MONSTER:random,random,(73,01)
MONSTER:random,random,(07,07)
MONSTER:random,random,(13,07)
MONSTER:random,random,(25,07)
MONSTER:random,random,(37,07)
MONSTER:random,random,(49,07)
MONSTER:random,random,(61,07)
MONSTER:random,random,(67,07)
MONSTER:random,random,(07,09)
MONSTER:random,random,(13,09)
MONSTER:random,random,(25,09)
MONSTER:random,random,(37,09)
MONSTER:random,random,(49,09)
MONSTER:random,random,(61,09)
MONSTER:random,random,(67,09)
MONSTER:random,random,(01,16)
MONSTER:random,random,(13,16)
MONSTER:random,random,(25,16)
MONSTER:random,random,(37,16)
MONSTER:random,random,(49,16)
MONSTER:random,random,(61,16)
MONSTER:random,random,(73,16)
MONSTER:random,(01,01)
MONSTER:random,(13,01)
MONSTER:random,(25,01)
MONSTER:random,(37,01)
MONSTER:random,(49,01)
MONSTER:random,(61,01)
MONSTER:random,(73,01)
MONSTER:random,(07,07)
MONSTER:random,(13,07)
MONSTER:random,(25,07)
MONSTER:random,(37,07)
MONSTER:random,(49,07)
MONSTER:random,(61,07)
MONSTER:random,(67,07)
MONSTER:random,(07,09)
MONSTER:random,(13,09)
MONSTER:random,(25,09)
MONSTER:random,(37,09)
MONSTER:random,(49,09)
MONSTER:random,(61,09)
MONSTER:random,(67,09)
MONSTER:random,(01,16)
MONSTER:random,(13,16)
MONSTER:random,(25,16)
MONSTER:random,(37,16)
MONSTER:random,(49,16)
MONSTER:random,(61,16)
MONSTER:random,(73,16)
MAZE:"bigrm-4",' '
GEOMETRY:center,center
MAP
@@ -300,21 +300,21 @@ FOUNTAIN:(05,15)
FOUNTAIN:(69,02)
FOUNTAIN:(69,15)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -323,34 +323,34 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
# Try an oval room...
@@ -385,21 +385,21 @@ STAIR:random,down
# Non diggable walls
NON_DIGGABLE:(00,00,72,18)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -408,31 +408,31 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
+126 -119
View File
@@ -42,9 +42,15 @@ MAP
ENDMAP
# Random registers initialisation
RANDOM_OBJECTS:'[',')','*','%'
RANDOM_PLACES:(04,02),(58,02),(04,14),(58,14)
RANDOM_MONSTERS:'L','N','E','H','M','O','R','T','X','Z'
$object = object: { '[',')','*','%' }
SHUFFLE: $object
$place = { (04,02),(58,02),(04,14),(58,14) }
SHUFFLE: $place
$monster = monster: { 'L','N','E','H','M','O','R','T','X','Z' }
SHUFFLE: $monster
TELEPORT_REGION:levregion(01,00,10,20),(1,1,61,15),down
TELEPORT_REGION:levregion(69,00,79,20),(1,1,61,15),up
@@ -72,72 +78,73 @@ DOOR:closed,(55,13)
# The drawbridge
DRAWBRIDGE:(05,08),east,closed
# Storeroom number 1
OBJECT:object[0],random,(39,05)
OBJECT:object[0],random,(40,05)
OBJECT:object[0],random,(41,05)
OBJECT:object[0],random,(42,05)
OBJECT:object[0],random,(43,05)
OBJECT:object[0],random,(44,05)
OBJECT:object[0],random,(45,05)
OBJECT:object[0],random,(39,06)
OBJECT:object[0],random,(40,06)
OBJECT:object[0],random,(41,06)
OBJECT:object[0],random,(42,06)
OBJECT:object[0],random,(43,06)
OBJECT:object[0],random,(44,06)
OBJECT:object[0],random,(45,06)
OBJECT:$object[0],(39,05)
OBJECT:$object[0],(40,05)
OBJECT:$object[0],(41,05)
OBJECT:$object[0],(42,05)
OBJECT:$object[0],(43,05)
OBJECT:$object[0],(44,05)
OBJECT:$object[0],(45,05)
OBJECT:$object[0],(39,06)
OBJECT:$object[0],(40,06)
OBJECT:$object[0],(41,06)
OBJECT:$object[0],(42,06)
OBJECT:$object[0],(43,06)
OBJECT:$object[0],(44,06)
OBJECT:$object[0],(45,06)
# Storeroom number 2
OBJECT:object[1],random,(49,05)
OBJECT:object[1],random,(50,05)
OBJECT:object[1],random,(51,05)
OBJECT:object[1],random,(52,05)
OBJECT:object[1],random,(53,05)
OBJECT:object[1],random,(54,05)
OBJECT:object[1],random,(55,05)
OBJECT:object[1],random,(49,06)
OBJECT:object[1],random,(50,06)
OBJECT:object[1],random,(51,06)
OBJECT:object[1],random,(52,06)
OBJECT:object[1],random,(53,06)
OBJECT:object[1],random,(54,06)
OBJECT:object[1],random,(55,06)
OBJECT:$object[1],(49,05)
OBJECT:$object[1],(50,05)
OBJECT:$object[1],(51,05)
OBJECT:$object[1],(52,05)
OBJECT:$object[1],(53,05)
OBJECT:$object[1],(54,05)
OBJECT:$object[1],(55,05)
OBJECT:$object[1],(49,06)
OBJECT:$object[1],(50,06)
OBJECT:$object[1],(51,06)
OBJECT:$object[1],(52,06)
OBJECT:$object[1],(53,06)
OBJECT:$object[1],(54,06)
OBJECT:$object[1],(55,06)
# Storeroom number 3
OBJECT:object[2],random,(39,10)
OBJECT:object[2],random,(40,10)
OBJECT:object[2],random,(41,10)
OBJECT:object[2],random,(42,10)
OBJECT:object[2],random,(43,10)
OBJECT:object[2],random,(44,10)
OBJECT:object[2],random,(45,10)
OBJECT:object[2],random,(39,11)
OBJECT:object[2],random,(40,11)
OBJECT:object[2],random,(41,11)
OBJECT:object[2],random,(42,11)
OBJECT:object[2],random,(43,11)
OBJECT:object[2],random,(44,11)
OBJECT:object[2],random,(45,11)
OBJECT:$object[2],(39,10)
OBJECT:$object[2],(40,10)
OBJECT:$object[2],(41,10)
OBJECT:$object[2],(42,10)
OBJECT:$object[2],(43,10)
OBJECT:$object[2],(44,10)
OBJECT:$object[2],(45,10)
OBJECT:$object[2],(39,11)
OBJECT:$object[2],(40,11)
OBJECT:$object[2],(41,11)
OBJECT:$object[2],(42,11)
OBJECT:$object[2],(43,11)
OBJECT:$object[2],(44,11)
OBJECT:$object[2],(45,11)
# Storeroom number 4
OBJECT:object[3],random,(49,10)
OBJECT:object[3],random,(50,10)
OBJECT:object[3],random,(51,10)
OBJECT:object[3],random,(52,10)
OBJECT:object[3],random,(53,10)
OBJECT:object[3],random,(54,10)
OBJECT:object[3],random,(55,10)
OBJECT:object[3],random,(49,11)
OBJECT:object[3],random,(50,11)
OBJECT:object[3],random,(51,11)
OBJECT:object[3],random,(52,11)
OBJECT:object[3],random,(53,11)
OBJECT:object[3],random,(54,11)
OBJECT:object[3],random,(55,11)
OBJECT:$object[3],(49,10)
OBJECT:$object[3],(50,10)
OBJECT:$object[3],(51,10)
OBJECT:$object[3],(52,10)
OBJECT:$object[3],(53,10)
OBJECT:$object[3],(54,10)
OBJECT:$object[3],(55,10)
OBJECT:$object[3],(49,11)
OBJECT:$object[3],(50,11)
OBJECT:$object[3],(51,11)
OBJECT:$object[3],(52,11)
OBJECT:$object[3],(53,11)
OBJECT:$object[3],(54,11)
OBJECT:$object[3],(55,11)
# THE WAND OF WISHING in 1 of the 4 towers
CONTAINER:'(',"chest",place[0]
OBJECT:'/',"wishing",contained
CONTAINER:('(',"chest"),$place[0] {
OBJECT:('/',"wishing")
}
# Prevent monsters from eating it. (@'s never eat objects)
ENGRAVING:place[0],burn,"Elbereth"
ENGRAVING:$place[0],burn,"Elbereth"
# The treasure of the lord
OBJECT:'(',"chest",(37,08)
OBJECT:('(',"chest"),(37,08)
# Traps
TRAP:"trap door",(40,08)
TRAP:"trap door",(44,08)
@@ -145,66 +152,66 @@ TRAP:"trap door",(48,08)
TRAP:"trap door",(52,08)
TRAP:"trap door",(55,08)
# Soldiers guarding the entry hall
MONSTER:'@',"soldier",(08,06)
MONSTER:'@',"soldier",(09,05)
MONSTER:'@',"soldier",(11,05)
MONSTER:'@',"soldier",(12,06)
MONSTER:'@',"soldier",(08,10)
MONSTER:'@',"soldier",(09,11)
MONSTER:'@',"soldier",(11,11)
MONSTER:'@',"soldier",(12,10)
MONSTER:'@',"lieutenant",(09,08)
MONSTER:('@',"soldier"),(08,06)
MONSTER:('@',"soldier"),(09,05)
MONSTER:('@',"soldier"),(11,05)
MONSTER:('@',"soldier"),(12,06)
MONSTER:('@',"soldier"),(08,10)
MONSTER:('@',"soldier"),(09,11)
MONSTER:('@',"soldier"),(11,11)
MONSTER:('@',"soldier"),(12,10)
MONSTER:('@',"lieutenant"),(09,08)
# Soldiers guarding the towers
MONSTER:'@',"soldier",(03,02)
MONSTER:'@',"soldier",(05,02)
MONSTER:'@',"soldier",(57,02)
MONSTER:'@',"soldier",(59,02)
MONSTER:'@',"soldier",(03,14)
MONSTER:'@',"soldier",(05,14)
MONSTER:'@',"soldier",(57,14)
MONSTER:'@',"soldier",(59,14)
MONSTER:('@',"soldier"),(03,02)
MONSTER:('@',"soldier"),(05,02)
MONSTER:('@',"soldier"),(57,02)
MONSTER:('@',"soldier"),(59,02)
MONSTER:('@',"soldier"),(03,14)
MONSTER:('@',"soldier"),(05,14)
MONSTER:('@',"soldier"),(57,14)
MONSTER:('@',"soldier"),(59,14)
# The four dragons that are guarding the storerooms
MONSTER:'D',random,(47,05)
MONSTER:'D',random,(47,06)
MONSTER:'D',random,(47,10)
MONSTER:'D',random,(47,11)
MONSTER:'D',(47,05)
MONSTER:'D',(47,06)
MONSTER:'D',(47,10)
MONSTER:'D',(47,11)
# Sea monsters in the moat
MONSTER:';',"giant eel",(05,07)
MONSTER:';',"giant eel",(05,09)
MONSTER:';',"giant eel",(57,07)
MONSTER:';',"giant eel",(57,09)
MONSTER:';',"shark",(05,00)
MONSTER:';',"shark",(05,16)
MONSTER:';',"shark",(57,00)
MONSTER:';',"shark",(57,16)
MONSTER:(';',"giant eel"),(05,07)
MONSTER:(';',"giant eel"),(05,09)
MONSTER:(';',"giant eel"),(57,07)
MONSTER:(';',"giant eel"),(57,09)
MONSTER:(';',"shark"),(05,00)
MONSTER:(';',"shark"),(05,16)
MONSTER:(';',"shark"),(57,00)
MONSTER:(';',"shark"),(57,16)
# The throne room and the court monsters
MONSTER:monster[0],random,(27,05)
MONSTER:monster[1],random,(30,05)
MONSTER:monster[2],random,(33,05)
MONSTER:monster[3],random,(36,05)
MONSTER:monster[4],random,(28,06)
MONSTER:monster[5],random,(31,06)
MONSTER:monster[6],random,(34,06)
MONSTER:monster[7],random,(37,06)
MONSTER:monster[8],random,(27,07)
MONSTER:monster[9],random,(30,07)
MONSTER:monster[0],random,(33,07)
MONSTER:monster[1],random,(36,07)
MONSTER:monster[2],random,(28,08)
MONSTER:monster[3],random,(31,08)
MONSTER:monster[4],random,(34,08)
MONSTER:monster[5],random,(27,09)
MONSTER:monster[6],random,(30,09)
MONSTER:monster[7],random,(33,09)
MONSTER:monster[8],random,(36,09)
MONSTER:monster[9],random,(28,10)
MONSTER:monster[0],random,(31,10)
MONSTER:monster[1],random,(34,10)
MONSTER:monster[2],random,(37,10)
MONSTER:monster[3],random,(27,11)
MONSTER:monster[4],random,(30,11)
MONSTER:monster[5],random,(33,11)
MONSTER:monster[6],random,(36,11)
MONSTER:$monster[0],(27,05)
MONSTER:$monster[1],(30,05)
MONSTER:$monster[2],(33,05)
MONSTER:$monster[3],(36,05)
MONSTER:$monster[4],(28,06)
MONSTER:$monster[5],(31,06)
MONSTER:$monster[6],(34,06)
MONSTER:$monster[7],(37,06)
MONSTER:$monster[8],(27,07)
MONSTER:$monster[9],(30,07)
MONSTER:$monster[0],(33,07)
MONSTER:$monster[1],(36,07)
MONSTER:$monster[2],(28,08)
MONSTER:$monster[3],(31,08)
MONSTER:$monster[4],(34,08)
MONSTER:$monster[5],(27,09)
MONSTER:$monster[6],(30,09)
MONSTER:$monster[7],(33,09)
MONSTER:$monster[8],(36,09)
MONSTER:$monster[9],(28,10)
MONSTER:$monster[0],(31,10)
MONSTER:$monster[1],(34,10)
MONSTER:$monster[2],(37,10)
MONSTER:$monster[3],(27,11)
MONSTER:$monster[4],(30,11)
MONSTER:$monster[5],(33,11)
MONSTER:$monster[6],(36,11)
# MazeWalks
MAZEWALK:(00,10),west
MAZEWALK:(62,06),east
+312 -310
View File
@@ -51,79 +51,79 @@ PORTAL:(0,0,75,19),(65,13,75,19),"air"
# Some helpful monsters. Making sure a
# pick axe and at least one wand of digging
# are available.
MONSTER:'@',"Elvenking",(67,16)
MONSTER:'H',"minotaur",(67,14)
MONSTER:('@',"Elvenking"),(67,16)
MONSTER:('H',"minotaur"),(67,14)
# An assortment of earth-appropriate nasties
# in each cavern.
MONSTER:'E',"earth elemental",(52,13),hostile
MONSTER:'E',"earth elemental",(53,13),hostile
MONSTER:'T',"rock troll",(53,12)
MONSTER:'H',"stone giant",(54,12)
MONSTER:('E',"earth elemental"),(52,13),hostile
MONSTER:('E',"earth elemental"),(53,13),hostile
MONSTER:('T',"rock troll"),(53,12)
MONSTER:('H',"stone giant"),(54,12)
#
MONSTER:'S',"pit viper",(70,05)
MONSTER:'&',"barbed devil",(69,06)
MONSTER:'H',"stone giant",(69,08)
MONSTER:''',"stone golem",(71,08)
MONSTER:'&',"pit fiend",(70,09)
MONSTER:'E',"earth elemental",(70,08),hostile
MONSTER:('S',"pit viper"),(70,05)
MONSTER:('&',"barbed devil"),(69,06)
MONSTER:('H',"stone giant"),(69,08)
MONSTER:(''',"stone golem"),(71,08)
MONSTER:('&',"pit fiend"),(70,09)
MONSTER:('E',"earth elemental"),(70,08),hostile
#
MONSTER:'E',"earth elemental",(60,03),hostile
MONSTER:'H',"stone giant",(61,04)
MONSTER:'E',"earth elemental",(62,04),hostile
MONSTER:'E',"earth elemental",(61,05),hostile
MONSTER:'s',"scorpion",(62,05)
MONSTER:'p',"rock piercer",(63,05)
MONSTER:('E',"earth elemental"),(60,03),hostile
MONSTER:('H',"stone giant"),(61,04)
MONSTER:('E',"earth elemental"),(62,04),hostile
MONSTER:('E',"earth elemental"),(61,05),hostile
MONSTER:('s',"scorpion"),(62,05)
MONSTER:('p',"rock piercer"),(63,05)
#
MONSTER:'U',"umber hulk",(40,05)
MONSTER:'v',"dust vortex",(42,05)
MONSTER:'T',"rock troll",(38,06)
MONSTER:'E',"earth elemental",(39,06),hostile
MONSTER:'E',"earth elemental",(41,06),hostile
MONSTER:'E',"earth elemental",(38,07),hostile
MONSTER:'H',"stone giant",(39,07)
MONSTER:'E',"earth elemental",(43,07),hostile
MONSTER:''',"stone golem",(37,08)
MONSTER:'S',"pit viper",(43,08)
MONSTER:'S',"pit viper",(43,09)
MONSTER:'T',"rock troll",(44,10)
MONSTER:('U',"umber hulk"),(40,05)
MONSTER:('v',"dust vortex"),(42,05)
MONSTER:('T',"rock troll"),(38,06)
MONSTER:('E',"earth elemental"),(39,06),hostile
MONSTER:('E',"earth elemental"),(41,06),hostile
MONSTER:('E',"earth elemental"),(38,07),hostile
MONSTER:('H',"stone giant"),(39,07)
MONSTER:('E',"earth elemental"),(43,07),hostile
MONSTER:(''',"stone golem"),(37,08)
MONSTER:('S',"pit viper"),(43,08)
MONSTER:('S',"pit viper"),(43,09)
MONSTER:('T',"rock troll"),(44,10)
#
MONSTER:'E',"earth elemental",(02,01),hostile
MONSTER:'E',"earth elemental",(03,01),hostile
MONSTER:''',"stone golem",(01,02)
MONSTER:'E',"earth elemental",(02,02),hostile
MONSTER:'T',"rock troll",(04,03)
MONSTER:'T',"rock troll",(03,03)
MONSTER:'&',"pit fiend",(03,04)
MONSTER:'E',"earth elemental",(04,05),hostile
MONSTER:'S',"pit viper",(05,06)
MONSTER:('E',"earth elemental"),(02,01),hostile
MONSTER:('E',"earth elemental"),(03,01),hostile
MONSTER:(''',"stone golem"),(01,02)
MONSTER:('E',"earth elemental"),(02,02),hostile
MONSTER:('T',"rock troll"),(04,03)
MONSTER:('T',"rock troll"),(03,03)
MONSTER:('&',"pit fiend"),(03,04)
MONSTER:('E',"earth elemental"),(04,05),hostile
MONSTER:('S',"pit viper"),(05,06)
#
MONSTER:'E',"earth elemental",(21,02),hostile
MONSTER:'E',"earth elemental",(21,03),hostile
MONSTER:'H',"minotaur",(21,04)
MONSTER:'E',"earth elemental",(21,05),hostile
MONSTER:'T',"rock troll",(22,05)
MONSTER:'E',"earth elemental",(22,06),hostile
MONSTER:'E',"earth elemental",(23,06),hostile
MONSTER:('E',"earth elemental"),(21,02),hostile
MONSTER:('E',"earth elemental"),(21,03),hostile
MONSTER:('H',"minotaur"),(21,04)
MONSTER:('E',"earth elemental"),(21,05),hostile
MONSTER:('T',"rock troll"),(22,05)
MONSTER:('E',"earth elemental"),(22,06),hostile
MONSTER:('E',"earth elemental"),(23,06),hostile
#
MONSTER:'S',"pit viper",(14,08)
MONSTER:'&',"barbed devil",(14,09)
MONSTER:'E',"earth elemental",(13,10),hostile
MONSTER:'T',"rock troll",(12,11)
MONSTER:'E',"earth elemental",(14,12),hostile
MONSTER:'E',"earth elemental",(15,13),hostile
MONSTER:'H',"stone giant",(17,13)
MONSTER:''',"stone golem",(18,13)
MONSTER:'&',"pit fiend",(18,12)
MONSTER:'E',"earth elemental",(18,11),hostile
MONSTER:'E',"earth elemental",(18,10),hostile
MONSTER:('S',"pit viper"),(14,08)
MONSTER:('&',"barbed devil"),(14,09)
MONSTER:('E',"earth elemental"),(13,10),hostile
MONSTER:('T',"rock troll"),(12,11)
MONSTER:('E',"earth elemental"),(14,12),hostile
MONSTER:('E',"earth elemental"),(15,13),hostile
MONSTER:('H',"stone giant"),(17,13)
MONSTER:(''',"stone golem"),(18,13)
MONSTER:('&',"pit fiend"),(18,12)
MONSTER:('E',"earth elemental"),(18,11),hostile
MONSTER:('E',"earth elemental"),(18,10),hostile
#
MONSTER:'&',"barbed devil",(02,16)
MONSTER:'E',"earth elemental",(03,16),hostile
MONSTER:'T',"rock troll",(02,17)
MONSTER:'E',"earth elemental",(04,17),hostile
MONSTER:'E',"earth elemental",(04,18),hostile
MONSTER:('&',"barbed devil"),(02,16)
MONSTER:('E',"earth elemental"),(03,16),hostile
MONSTER:('T',"rock troll"),(02,17)
MONSTER:('E',"earth elemental"),(04,17),hostile
MONSTER:('E',"earth elemental"),(04,18),hostile
OBJECT:'`',"boulder",random
OBJECT:('`',"boulder"),random
MAZE:"air",' '
@@ -168,63 +168,63 @@ TELEPORT_REGION:levregion(01,00,24,20),levregion(25,00,79,20),up
TELEPORT_REGION:levregion(56,00,79,20),levregion(01,00,55,20),down
PORTAL:levregion(57,01,78,19),(0,0,0,0),"fire"
REGION:(00,00,75,19),lit,"ordinary"
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:'E',"air elemental",random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:('E',"air elemental"),random,hostile
MONSTER:'e',"floating eye",random,hostile
MONSTER:'e',"floating eye",random,hostile
MONSTER:'e',"floating eye",random,hostile
MONSTER:('e',"floating eye"),random,hostile
MONSTER:('e',"floating eye"),random,hostile
MONSTER:('e',"floating eye"),random,hostile
MONSTER:'y',"yellow light",random,hostile
MONSTER:'y',"yellow light",random,hostile
MONSTER:'y',"yellow light",random,hostile
MONSTER:('y',"yellow light"),random,hostile
MONSTER:('y',"yellow light"),random,hostile
MONSTER:('y',"yellow light"),random,hostile
MONSTER:'A',"couatl",random
MONSTER:('A',"couatl"),random
MONSTER:'D',random,random
MONSTER:'D',random,random
MONSTER:'D',random,random
MONSTER:'D',random,random
MONSTER:'D',random,random
MONSTER:'D',random
MONSTER:'D',random
MONSTER:'D',random
MONSTER:'D',random
MONSTER:'D',random
MONSTER:'E',random,random
MONSTER:'E',random,random
MONSTER:'E',random,random
MONSTER:'J',random,random
MONSTER:'J',random,random
MONSTER:'E',random
MONSTER:'E',random
MONSTER:'E',random
MONSTER:'J',random
MONSTER:'J',random
MONSTER:'&',"djinni",random,hostile
MONSTER:'&',"djinni",random,hostile
MONSTER:'&',"djinni",random,hostile
MONSTER:('&',"djinni"),random,hostile
MONSTER:('&',"djinni"),random,hostile
MONSTER:('&',"djinni"),random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"fog cloud",random,hostile
MONSTER:'v',"energy vortex",random,hostile
MONSTER:'v',"energy vortex",random,hostile
MONSTER:'v',"energy vortex",random,hostile
MONSTER:'v',"energy vortex",random,hostile
MONSTER:'v',"energy vortex",random,hostile
MONSTER:'v',"steam vortex",random,hostile
MONSTER:'v',"steam vortex",random,hostile
MONSTER:'v',"steam vortex",random,hostile
MONSTER:'v',"steam vortex",random,hostile
MONSTER:'v',"steam vortex",random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"fog cloud"),random,hostile
MONSTER:('v',"energy vortex"),random,hostile
MONSTER:('v',"energy vortex"),random,hostile
MONSTER:('v',"energy vortex"),random,hostile
MONSTER:('v',"energy vortex"),random,hostile
MONSTER:('v',"energy vortex"),random,hostile
MONSTER:('v',"steam vortex"),random,hostile
MONSTER:('v',"steam vortex"),random,hostile
MONSTER:('v',"steam vortex"),random,hostile
MONSTER:('v',"steam vortex"),random,hostile
MONSTER:('v',"steam vortex"),random,hostile
MAZE:"fire",' '
@@ -301,81 +301,81 @@ TRAP:"fire",random
TRAP:"fire",random
TRAP:"fire",random
# An assortment of fire-appropriate nasties
MONSTER:'D',"red dragon",random
MONSTER:'&',"balrog",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'v',"fire vortex",random
MONSTER:'d',"hell hound",random
MONSTER:('D',"red dragon"),random
MONSTER:('&',"balrog"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('v',"fire vortex"),random
MONSTER:('d',"hell hound"),random
#
MONSTER:'H',"fire giant",random
MONSTER:'&',"barbed devil",random
MONSTER:'d',"hell hound",random
MONSTER:''',"stone golem",random
MONSTER:'&',"pit fiend",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:('H',"fire giant"),random
MONSTER:('&',"barbed devil"),random
MONSTER:('d',"hell hound"),random
MONSTER:(''',"stone golem"),random
MONSTER:('&',"pit fiend"),random
MONSTER:('E',"fire elemental"),random,hostile
#
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'d',"hell hound",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'s',"scorpion",random
MONSTER:'H',"fire giant",random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('d',"hell hound"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('s',"scorpion"),random
MONSTER:('H',"fire giant"),random
#
MONSTER:'d',"hell hound",random
MONSTER:'v',"dust vortex",random
MONSTER:'v',"fire vortex",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'d',"hell hound",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:''',"stone golem",random
MONSTER:'S',"pit viper",random
MONSTER:'S',"pit viper",random
MONSTER:'v',"fire vortex",random
MONSTER:('d',"hell hound"),random
MONSTER:('v',"dust vortex"),random
MONSTER:('v',"fire vortex"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('d',"hell hound"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:(''',"stone golem"),random
MONSTER:('S',"pit viper"),random
MONSTER:('S',"pit viper"),random
MONSTER:('v',"fire vortex"),random
#
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'H',"fire giant",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'v',"fire vortex",random
MONSTER:'v',"fire vortex",random
MONSTER:'&',"pit fiend",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'S',"pit viper",random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('H',"fire giant"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('v',"fire vortex"),random
MONSTER:('v',"fire vortex"),random
MONSTER:('&',"pit fiend"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('S',"pit viper"),random
#
MONSTER:':',"salamander",random,hostile
MONSTER:':',"salamander",random,hostile
MONSTER:'H',"minotaur",random
MONSTER:':',"salamander",random,hostile
MONSTER:'v',"steam vortex",random
MONSTER:':',"salamander",random,hostile
MONSTER:':',"salamander",random,hostile
MONSTER:(':',"salamander"),random,hostile
MONSTER:(':',"salamander"),random,hostile
MONSTER:('H',"minotaur"),random
MONSTER:(':',"salamander"),random,hostile
MONSTER:('v',"steam vortex"),random
MONSTER:(':',"salamander"),random,hostile
MONSTER:(':',"salamander"),random,hostile
#
MONSTER:'H',"fire giant",random
MONSTER:'&',"barbed devil",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'v',"fire vortex",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'d',"hell hound",random
MONSTER:'H',"fire giant",random
MONSTER:'&',"pit fiend",random
MONSTER:'E',"fire elemental",random,hostile
MONSTER:'E',"fire elemental",random,hostile
MONSTER:('H',"fire giant"),random
MONSTER:('&',"barbed devil"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('v',"fire vortex"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('d',"hell hound"),random
MONSTER:('H',"fire giant"),random
MONSTER:('&',"pit fiend"),random
MONSTER:('E',"fire elemental"),random,hostile
MONSTER:('E',"fire elemental"),random,hostile
#
MONSTER:'&',"barbed devil",random
MONSTER:':',"salamander",random,hostile
MONSTER:'v',"steam vortex",random
MONSTER:':',"salamander",random,hostile
MONSTER:':',"salamander",random,hostile
MONSTER:('&',"barbed devil"),random
MONSTER:(':',"salamander"),random,hostile
MONSTER:('v',"steam vortex"),random
MONSTER:(':',"salamander"),random,hostile
MONSTER:(':',"salamander"),random,hostile
OBJECT:'`',"boulder",random
OBJECT:'`',"boulder",random
OBJECT:'`',"boulder",random
OBJECT:'`',"boulder",random
OBJECT:'`',"boulder",random
OBJECT:('`',"boulder"),random
OBJECT:('`',"boulder"),random
OBJECT:('`',"boulder"),random
OBJECT:('`',"boulder"),random
OBJECT:('`',"boulder"),random
MAZE:"water",' '
@@ -412,67 +412,67 @@ ENDMAP
TELEPORT_REGION:(0,0,25,19),(0,0,0,0)
PORTAL:(51,0,75,19),(0,0,0,0),"astral"
# A fisherman's dream...
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"giant eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"electric eel",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"kraken",random
MONSTER:';',"shark",random
MONSTER:';',"shark",random
MONSTER:';',"shark",random
MONSTER:';',"shark",random
MONSTER:';',"piranha",random
MONSTER:';',"piranha",random
MONSTER:';',"piranha",random
MONSTER:';',"piranha",random
MONSTER:';',"jellyfish",random
MONSTER:';',"jellyfish",random
MONSTER:';',"jellyfish",random
MONSTER:';',"jellyfish",random
MONSTER:';',random,random
MONSTER:';',random,random
MONSTER:';',random,random
MONSTER:';',random,random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"giant eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"electric eel"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"kraken"),random
MONSTER:(';',"shark"),random
MONSTER:(';',"shark"),random
MONSTER:(';',"shark"),random
MONSTER:(';',"shark"),random
MONSTER:(';',"piranha"),random
MONSTER:(';',"piranha"),random
MONSTER:(';',"piranha"),random
MONSTER:(';',"piranha"),random
MONSTER:(';',"jellyfish"),random
MONSTER:(';',"jellyfish"),random
MONSTER:(';',"jellyfish"),random
MONSTER:(';',"jellyfish"),random
MONSTER:';',random
MONSTER:';',random
MONSTER:';',random
MONSTER:';',random
# These guys feel like home here
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:'E',"water elemental",random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MONSTER:('E',"water elemental"),random,hostile
MAZE:"astral",' '
@@ -504,13 +504,15 @@ MAP
-----------------
ENDMAP
# Rider locations
RANDOM_PLACES:(23,9),(37,14),(51,9)
$place = { (23,9),(37,14),(51,9) }
SHUFFLE: $place
# Where the player will land on arrival
TELEPORT_REGION:(29,15,45,15),(30,15,44,15)
# Lit courts
REGION:(01,05,16,14),lit,"ordinary",filled,true
REGION:(31,01,44,10),lit,"ordinary",filled,true
REGION:(61,05,74,14),lit,"ordinary",filled,true
REGION:(01,05,16,14),lit,"ordinary",filled,irregular
REGION:(31,01,44,10),lit,"ordinary",filled,irregular
REGION:(61,05,74,14),lit,"ordinary",filled,irregular
# A Sanctum for each alignment
# The shrines' alignments are shuffled for
# each game
@@ -535,29 +537,29 @@ NON_DIGGABLE:(00,00,74,19)
NON_PASSWALL:(00,00,74,19)
# Moloch's horde
# West round room
MONSTER:'@',"aligned priest",(18,09),noalign,hostile
MONSTER:'@',"aligned priest",(19,08),noalign,hostile
MONSTER:'@',"aligned priest",(19,09),noalign,hostile
MONSTER:'@',"aligned priest",(19,10),noalign,hostile
MONSTER:'A',"Angel",(20,09),noalign,hostile
MONSTER:'A',"Angel",(20,10),noalign,hostile
MONSTER:'&',"Pestilence",place[0],hostile
MONSTER:('@',"aligned priest"),(18,09),noalign,hostile
MONSTER:('@',"aligned priest"),(19,08),noalign,hostile
MONSTER:('@',"aligned priest"),(19,09),noalign,hostile
MONSTER:('@',"aligned priest"),(19,10),noalign,hostile
MONSTER:('A',"Angel"),(20,09),noalign,hostile
MONSTER:('A',"Angel"),(20,10),noalign,hostile
MONSTER:('&',"Pestilence"),$place[0],hostile
# South-central round room
MONSTER:'@',"aligned priest",(36,12),noalign,hostile
MONSTER:'@',"aligned priest",(37,12),noalign,hostile
MONSTER:'@',"aligned priest",(38,12),noalign,hostile
MONSTER:'@',"aligned priest",(36,13),noalign,hostile
MONSTER:'A',"Angel",(38,13),noalign,hostile
MONSTER:'A',"Angel",(37,13),noalign,hostile
MONSTER:'&',"Death",place[1],hostile
MONSTER:('@',"aligned priest"),(36,12),noalign,hostile
MONSTER:('@',"aligned priest"),(37,12),noalign,hostile
MONSTER:('@',"aligned priest"),(38,12),noalign,hostile
MONSTER:('@',"aligned priest"),(36,13),noalign,hostile
MONSTER:('A',"Angel"),(38,13),noalign,hostile
MONSTER:('A',"Angel"),(37,13),noalign,hostile
MONSTER:('&',"Death"),$place[1],hostile
# East round room
MONSTER:'@',"aligned priest",(56,09),noalign,hostile
MONSTER:'@',"aligned priest",(55,08),noalign,hostile
MONSTER:'@',"aligned priest",(55,09),noalign,hostile
MONSTER:'@',"aligned priest",(55,10),noalign,hostile
MONSTER:'A',"Angel",(54,09),noalign,hostile
MONSTER:'A',"Angel",(54,10),noalign,hostile
MONSTER:'&',"Famine",place[2],hostile
MONSTER:('@',"aligned priest"),(56,09),noalign,hostile
MONSTER:('@',"aligned priest"),(55,08),noalign,hostile
MONSTER:('@',"aligned priest"),(55,09),noalign,hostile
MONSTER:('@',"aligned priest"),(55,10),noalign,hostile
MONSTER:('A',"Angel"),(54,09),noalign,hostile
MONSTER:('A',"Angel"),(54,10),noalign,hostile
MONSTER:('&',"Famine"),$place[2],hostile
#
# The aligned horde
#
@@ -567,52 +569,52 @@ MONSTER:'&',"Famine",place[2],hostile
# but a place holder.
#
# West court
MONSTER:'@',"aligned priest",(12,07),chaos,hostile
MONSTER:'@',"aligned priest",(13,07),chaos,peaceful
MONSTER:'@',"aligned priest",(14,07),law,hostile
MONSTER:'@',"aligned priest",(12,11),law,peaceful
MONSTER:'@',"aligned priest",(13,11),neutral,hostile
MONSTER:'@',"aligned priest",(14,11),neutral,peaceful
MONSTER:'A',"Angel",(11,05),chaos,hostile
MONSTER:'A',"Angel",(12,05),chaos,peaceful
MONSTER:'A',"Angel",(13,05),law,hostile
MONSTER:'A',"Angel",(11,13),law,peaceful
MONSTER:'A',"Angel",(12,13),neutral,hostile
MONSTER:'A',"Angel",(13,13),neutral,peaceful
MONSTER:('@',"aligned priest"),(12,07),chaos,hostile
MONSTER:('@',"aligned priest"),(13,07),chaos,peaceful
MONSTER:('@',"aligned priest"),(14,07),law,hostile
MONSTER:('@',"aligned priest"),(12,11),law,peaceful
MONSTER:('@',"aligned priest"),(13,11),neutral,hostile
MONSTER:('@',"aligned priest"),(14,11),neutral,peaceful
MONSTER:('A',"Angel"),(11,05),chaos,hostile
MONSTER:('A',"Angel"),(12,05),chaos,peaceful
MONSTER:('A',"Angel"),(13,05),law,hostile
MONSTER:('A',"Angel"),(11,13),law,peaceful
MONSTER:('A',"Angel"),(12,13),neutral,hostile
MONSTER:('A',"Angel"),(13,13),neutral,peaceful
# Central court
MONSTER:'@',"aligned priest",(32,09),chaos,hostile
MONSTER:'@',"aligned priest",(33,09),chaos,peaceful
MONSTER:'@',"aligned priest",(34,09),law,hostile
MONSTER:'@',"aligned priest",(40,09),law,peaceful
MONSTER:'@',"aligned priest",(41,09),neutral,hostile
MONSTER:'@',"aligned priest",(42,09),neutral,peaceful
MONSTER:'A',"Angel",(31,08),chaos,hostile
MONSTER:'A',"Angel",(32,08),chaos,peaceful
MONSTER:'A',"Angel",(31,09),law,hostile
MONSTER:'A',"Angel",(42,08),law,peaceful
MONSTER:'A',"Angel",(43,08),neutral,hostile
MONSTER:'A',"Angel",(43,09),neutral,peaceful
MONSTER:('@',"aligned priest"),(32,09),chaos,hostile
MONSTER:('@',"aligned priest"),(33,09),chaos,peaceful
MONSTER:('@',"aligned priest"),(34,09),law,hostile
MONSTER:('@',"aligned priest"),(40,09),law,peaceful
MONSTER:('@',"aligned priest"),(41,09),neutral,hostile
MONSTER:('@',"aligned priest"),(42,09),neutral,peaceful
MONSTER:('A',"Angel"),(31,08),chaos,hostile
MONSTER:('A',"Angel"),(32,08),chaos,peaceful
MONSTER:('A',"Angel"),(31,09),law,hostile
MONSTER:('A',"Angel"),(42,08),law,peaceful
MONSTER:('A',"Angel"),(43,08),neutral,hostile
MONSTER:('A',"Angel"),(43,09),neutral,peaceful
# East court
MONSTER:'@',"aligned priest",(60,07),chaos,hostile
MONSTER:'@',"aligned priest",(61,07),chaos,peaceful
MONSTER:'@',"aligned priest",(62,07),law,hostile
MONSTER:'@',"aligned priest",(60,11),law,peaceful
MONSTER:'@',"aligned priest",(61,11),neutral,hostile
MONSTER:'@',"aligned priest",(62,11),neutral,peaceful
MONSTER:'A',"Angel",(61,05),chaos,hostile
MONSTER:'A',"Angel",(62,05),chaos,peaceful
MONSTER:'A',"Angel",(63,05),law,hostile
MONSTER:'A',"Angel",(61,13),law,peaceful
MONSTER:'A',"Angel",(62,13),neutral,hostile
MONSTER:'A',"Angel",(63,13),neutral,peaceful
MONSTER:('@',"aligned priest"),(60,07),chaos,hostile
MONSTER:('@',"aligned priest"),(61,07),chaos,peaceful
MONSTER:('@',"aligned priest"),(62,07),law,hostile
MONSTER:('@',"aligned priest"),(60,11),law,peaceful
MONSTER:('@',"aligned priest"),(61,11),neutral,hostile
MONSTER:('@',"aligned priest"),(62,11),neutral,peaceful
MONSTER:('A',"Angel"),(61,05),chaos,hostile
MONSTER:('A',"Angel"),(62,05),chaos,peaceful
MONSTER:('A',"Angel"),(63,05),law,hostile
MONSTER:('A',"Angel"),(61,13),law,peaceful
MONSTER:('A',"Angel"),(62,13),neutral,hostile
MONSTER:('A',"Angel"),(63,13),neutral,peaceful
#
# Assorted nasties
MONSTER:'L',random,random,hostile
MONSTER:'L',random,random,hostile
MONSTER:'L',random,random,hostile
MONSTER:'V',random,random,hostile
MONSTER:'V',random,random,hostile
MONSTER:'V',random,random,hostile
MONSTER:'D',random,random,hostile
MONSTER:'D',random,random,hostile
MONSTER:'D',random,random,hostile
MONSTER:'L',random,hostile
MONSTER:'L',random,hostile
MONSTER:'L',random,hostile
MONSTER:'V',random,hostile
MONSTER:'V',random,hostile
MONSTER:'V',random,hostile
MONSTER:'D',random,hostile
MONSTER:'D',random,hostile
MONSTER:'D',random,hostile
+271 -267
View File
@@ -35,9 +35,9 @@ ENDMAP
# The shrine to Moloch.
REGION:(01,06,05,14),lit,"temple"
# The Morgues
REGION:(19,01,24,08),unlit,"morgue",filled,true
REGION:(09,14,16,18),unlit,"morgue",filled,true
REGION:(37,09,43,14),unlit,"morgue",filled,true
REGION:(19,01,24,08),unlit,"morgue",filled,irregular
REGION:(09,14,16,18),unlit,"morgue",filled,irregular
REGION:(37,09,43,14),unlit,"morgue",filled,irregular
# Stairs
STAIR:(01,01),down
# Branch location
@@ -60,60 +60,60 @@ NON_DIGGABLE:(00,00,75,19)
# note: no priest(esse)s or monks - maybe Moloch has a *special*
# fate reserved for members of *those* classes.
#
OBJECT:'%',"corpse",random,"archeologist",0
OBJECT:'%',"corpse",random,"archeologist",0
OBJECT:'%',"corpse",random,"barbarian",0
OBJECT:'%',"corpse",random,"barbarian",0
OBJECT:'%',"corpse",random,"caveman",0
OBJECT:'%',"corpse",random,"cavewoman",0
OBJECT:'%',"corpse",random,"healer",0
OBJECT:'%',"corpse",random,"healer",0
OBJECT:'%',"corpse",random,"knight",0
OBJECT:'%',"corpse",random,"knight",0
OBJECT:'%',"corpse",random,"ranger",0
OBJECT:'%',"corpse",random,"ranger",0
OBJECT:'%',"corpse",random,"rogue",0
OBJECT:'%',"corpse",random,"rogue",0
OBJECT:'%',"corpse",random,"samurai",0
OBJECT:'%',"corpse",random,"samurai",0
OBJECT:'%',"corpse",random,"tourist",0
OBJECT:'%',"corpse",random,"tourist",0
OBJECT:'%',"corpse",random,"valkyrie",0
OBJECT:'%',"corpse",random,"valkyrie",0
OBJECT:'%',"corpse",random,"wizard",0
OBJECT:'%',"corpse",random,"wizard",0
OBJECT:('%',"corpse"),random,montype:"archeologist"
OBJECT:('%',"corpse"),random,montype:"archeologist"
OBJECT:('%',"corpse"),random,montype:"barbarian"
OBJECT:('%',"corpse"),random,montype:"barbarian"
OBJECT:('%',"corpse"),random,montype:"caveman"
OBJECT:('%',"corpse"),random,montype:"cavewoman"
OBJECT:('%',"corpse"),random,montype:"healer"
OBJECT:('%',"corpse"),random,montype:"healer"
OBJECT:('%',"corpse"),random,montype:"knight"
OBJECT:('%',"corpse"),random,montype:"knight"
OBJECT:('%',"corpse"),random,montype:"ranger"
OBJECT:('%',"corpse"),random,montype:"ranger"
OBJECT:('%',"corpse"),random,montype:"rogue"
OBJECT:('%',"corpse"),random,montype:"rogue"
OBJECT:('%',"corpse"),random,montype:"samurai"
OBJECT:('%',"corpse"),random,montype:"samurai"
OBJECT:('%',"corpse"),random,montype:"tourist"
OBJECT:('%',"corpse"),random,montype:"tourist"
OBJECT:('%',"corpse"),random,montype:"valkyrie"
OBJECT:('%',"corpse"),random,montype:"valkyrie"
OBJECT:('%',"corpse"),random,montype:"wizard"
OBJECT:('%',"corpse"),random,montype:"wizard"
#
# Some random weapons and armor.
#
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:')',random,random
OBJECT:')',random,random
OBJECT:')',random,random
OBJECT:')',random,random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:')',random
OBJECT:')',random
OBJECT:')',random
OBJECT:')',random
#
# Some random loot.
#
OBJECT:'*',"ruby",random
OBJECT:'*',random,random
OBJECT:'*',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'/',random,random
OBJECT:'/',random,random
OBJECT:'=',random,random
OBJECT:'=',random,random
OBJECT:'+',random,random
OBJECT:'+',random,random
OBJECT:'(',random,random
OBJECT:'(',random,random
OBJECT:'(',random,random
OBJECT:('*',"ruby"),random
OBJECT:'*',random
OBJECT:'*',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'/',random
OBJECT:'/',random
OBJECT:'=',random
OBJECT:'=',random
OBJECT:'+',random
OBJECT:'+',random
OBJECT:'(',random
OBJECT:'(',random
OBJECT:'(',random
# (Not so) Random traps.
TRAP:"spiked pit", (05,02)
@@ -130,36 +130,36 @@ TRAP:"magic", random
# Random monsters.
# The ghosts.
MONSTER:' ',"ghost",random
MONSTER:' ',"ghost",random
MONSTER:' ',"ghost",random
MONSTER:' ',"ghost",random
MONSTER:' ',"ghost",random
MONSTER:' ',"ghost",random
MONSTER:(' ',"ghost"),random
MONSTER:(' ',"ghost"),random
MONSTER:(' ',"ghost"),random
MONSTER:(' ',"ghost"),random
MONSTER:(' ',"ghost"),random
MONSTER:(' ',"ghost"),random
# Add a few bats for atmosphere.
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:'B',"vampire bat",random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
MONSTER:('B',"vampire bat"),random
# And a lich for good measure.
MONSTER:'L',random,random
MONSTER:'L',random
# Some undead nasties for good measure
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'Z',random,random
MONSTER:'Z',random,random
MONSTER:'Z',random,random
MONSTER:'Z',random,random
MONSTER:'M',random,random
MONSTER:'M',random,random
MONSTER:'M',random,random
MONSTER:'M',random,random
MONSTER:'V',random
MONSTER:'V',random
MONSTER:'V',random
MONSTER:'Z',random
MONSTER:'Z',random
MONSTER:'Z',random
MONSTER:'Z',random
MONSTER:'M',random
MONSTER:'M',random
MONSTER:'M',random
MONSTER:'M',random
#
# The Juiblex level
#
MAZE:"juiblex",' '
FLAGS:noteleport,shortsighted
INIT_MAP:'.','}',true,true,unlit,false
INIT_MAP:mines,'.','}',true,true,unlit,false
# guarantee at least one open spot to ensure successful stair placement
GEOMETRY:left,bottom
MAP
@@ -169,7 +169,7 @@ MAP
}}}}.}}}
}}}}}}}}
ENDMAP
OBJECT:'`',"boulder",random
OBJECT:('`',"boulder"),random
GEOMETRY:right,top
MAP
}}}}}}}}
@@ -178,7 +178,7 @@ MAP
}}...}}}
}}}}}}}}
ENDMAP
OBJECT:'`',"boulder",random
OBJECT:('`',"boulder"),random
# lair
GEOMETRY:center,center
MAP
@@ -202,8 +202,12 @@ MAP
..}}}}}.}}}}}.}}}}}.}}}}}.}}}}}.}}}}}.}}}}}.}}}}}..
ENDMAP
# Random registers
RANDOM_MONSTERS:'j','b','P','F'
RANDOM_PLACES:(04,02),(46,02),(04,15),(46,15)
$monster = monster: { 'j','b','P','F' }
SHUFFLE: $monster
$place = { (04,02),(46,02),(04,15),(46,15) }
SHUFFLE: $place
# Dungeon description
REGION:(00,00,50,17),unlit,"swamp"
MAZEWALK:(00,09),west
@@ -213,57 +217,57 @@ STAIR:levregion(69,00,79,20),(0,0,50,17),up
BRANCH:levregion(01,00,11,20),(0,0,50,17)
TELEPORT_REGION:levregion(01,00,11,20),(0,0,50,17),up
TELEPORT_REGION:levregion(69,00,79,20),(0,0,50,17),down
FOUNTAIN:place[0]
MONSTER:'m',"giant mimic",place[1],m_feature "fountain"
MONSTER:'m',"giant mimic",place[2],m_feature "fountain"
MONSTER:'m',"giant mimic",place[3],m_feature "fountain"
FOUNTAIN:$place[0]
MONSTER:('m',"giant mimic"),$place[1],m_feature "fountain"
MONSTER:('m',"giant mimic"),$place[2],m_feature "fountain"
MONSTER:('m',"giant mimic"),$place[3],m_feature "fountain"
# The demon of the swamp
MONSTER:'&',"Juiblex",(25,08)
MONSTER:('&',"Juiblex"),(25,08)
# And a couple demons
MONSTER:'i',"lemure",(43,08)
MONSTER:'i',"lemure",(44,08)
MONSTER:'i',"lemure",(45,08)
MONSTER:('i',"lemure"),(43,08)
MONSTER:('i',"lemure"),(44,08)
MONSTER:('i',"lemure"),(45,08)
# Some liquids and gems
OBJECT:'*',random,(43,06)
OBJECT:'*',random,(45,06)
OBJECT:'!',random,(43,09)
OBJECT:'!',random,(44,09)
OBJECT:'!',random,(45,09)
OBJECT:'*',(43,06)
OBJECT:'*',(45,06)
OBJECT:'!',(43,09)
OBJECT:'!',(44,09)
OBJECT:'!',(45,09)
# And lots of blobby monsters
MONSTER:monster[0],random,(25,06)
MONSTER:monster[1],random,(24,07)
MONSTER:monster[2],random,(26,07)
MONSTER:monster[3],random,(23,08)
MONSTER:monster[3],random,(27,08)
MONSTER:monster[2],random,(24,09)
MONSTER:monster[1],random,(26,09)
MONSTER:monster[0],random,(25,10)
MONSTER:'j',random,random
MONSTER:'j',random,random
MONSTER:'j',random,random
MONSTER:'j',random,random
MONSTER:'P',random,random
MONSTER:'P',random,random
MONSTER:'P',random,random
MONSTER:'P',random,random
MONSTER:'b',random,random
MONSTER:'b',random,random
MONSTER:'b',random,random
MONSTER:'F',random,random
MONSTER:'F',random,random
MONSTER:'F',random,random
MONSTER:'m',random,random
MONSTER:'m',random,random
MONSTER:';',"jellyfish",random
MONSTER:';',"jellyfish",random
MONSTER:$monster[0],(25,06)
MONSTER:$monster[1],(24,07)
MONSTER:$monster[2],(26,07)
MONSTER:$monster[3],(23,08)
MONSTER:$monster[3],(27,08)
MONSTER:$monster[2],(24,09)
MONSTER:$monster[1],(26,09)
MONSTER:$monster[0],(25,10)
MONSTER:'j',random
MONSTER:'j',random
MONSTER:'j',random
MONSTER:'j',random
MONSTER:'P',random
MONSTER:'P',random
MONSTER:'P',random
MONSTER:'P',random
MONSTER:'b',random
MONSTER:'b',random
MONSTER:'b',random
MONSTER:'F',random
MONSTER:'F',random
MONSTER:'F',random
MONSTER:'m',random
MONSTER:'m',random
MONSTER:(';',"jellyfish"),random
MONSTER:(';',"jellyfish"),random
# Some random objects
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'`',"boulder",random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:('`',"boulder"),random
# Some traps
TRAP:"sleep gas",random
TRAP:"sleep gas",random
@@ -305,30 +309,30 @@ STAIR:levregion(01,00,12,20),levregion(20,01,70,20),up
BRANCH:levregion(01,00,12,20),levregion(20,01,70,20)
TELEPORT_REGION:levregion(01,00,12,20),levregion(20,01,70,20)
# Wall "ruins"
OBJECT:'`',"boulder",(19,02)
OBJECT:'`',"boulder",(20,02)
OBJECT:'`',"boulder",(21,02)
OBJECT:'`',"boulder",(36,02)
OBJECT:'`',"boulder",(36,03)
OBJECT:'`',"boulder",(06,04)
OBJECT:'`',"boulder",(05,05)
OBJECT:'`',"boulder",(06,05)
OBJECT:'`',"boulder",(07,05)
OBJECT:'`',"boulder",(39,05)
OBJECT:'`',"boulder",(08,08)
OBJECT:'`',"boulder",(09,08)
OBJECT:'`',"boulder",(10,08)
OBJECT:'`',"boulder",(11,08)
OBJECT:'`',"boulder",(06,10)
OBJECT:'`',"boulder",(05,11)
OBJECT:'`',"boulder",(06,11)
OBJECT:'`',"boulder",(07,11)
OBJECT:'`',"boulder",(21,11)
OBJECT:'`',"boulder",(21,12)
OBJECT:'`',"boulder",(13,13)
OBJECT:'`',"boulder",(14,13)
OBJECT:'`',"boulder",(15,13)
OBJECT:'`',"boulder",(14,14)
OBJECT:('`',"boulder"),(19,02)
OBJECT:('`',"boulder"),(20,02)
OBJECT:('`',"boulder"),(21,02)
OBJECT:('`',"boulder"),(36,02)
OBJECT:('`',"boulder"),(36,03)
OBJECT:('`',"boulder"),(06,04)
OBJECT:('`',"boulder"),(05,05)
OBJECT:('`',"boulder"),(06,05)
OBJECT:('`',"boulder"),(07,05)
OBJECT:('`',"boulder"),(39,05)
OBJECT:('`',"boulder"),(08,08)
OBJECT:('`',"boulder"),(09,08)
OBJECT:('`',"boulder"),(10,08)
OBJECT:('`',"boulder"),(11,08)
OBJECT:('`',"boulder"),(06,10)
OBJECT:('`',"boulder"),(05,11)
OBJECT:('`',"boulder"),(06,11)
OBJECT:('`',"boulder"),(07,11)
OBJECT:('`',"boulder"),(21,11)
OBJECT:('`',"boulder"),(21,12)
OBJECT:('`',"boulder"),(13,13)
OBJECT:('`',"boulder"),(14,13)
OBJECT:('`',"boulder"),(15,13)
OBJECT:('`',"boulder"),(14,14)
# Doors
DOOR:closed,(23,02)
DOOR:open,(31,03)
@@ -361,56 +365,56 @@ TRAP:"fire", random
TRAP:"magic", random
TRAP:"magic", random
# Some random objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# The resident nasty
MONSTER:'&',"Orcus",(33,15)
MONSTER:('&',"Orcus"),(33,15)
# And its preferred companions
MONSTER:'Z',"human zombie",(32,15)
MONSTER:' ',"shade",(32,14)
MONSTER:' ',"shade",(32,16)
MONSTER:'V',"vampire",(35,16)
MONSTER:'V',"vampire",(35,14)
MONSTER:'V',"vampire lord",(36,14)
MONSTER:'V',"vampire lord",(36,15)
MONSTER:('Z',"human zombie"),(32,15)
MONSTER:(' ',"shade"),(32,14)
MONSTER:(' ',"shade"),(32,16)
MONSTER:('V',"vampire"),(35,16)
MONSTER:('V',"vampire"),(35,14)
MONSTER:('V',"vampire lord"),(36,14)
MONSTER:('V',"vampire lord"),(36,15)
# Randomly placed companions
MONSTER:'Z',"skeleton",random
MONSTER:'Z',"skeleton",random
MONSTER:'Z',"skeleton",random
MONSTER:'Z',"skeleton",random
MONSTER:'Z',"skeleton",random
MONSTER:' ',"shade",random
MONSTER:' ',"shade",random
MONSTER:' ',"shade",random
MONSTER:' ',"shade",random
MONSTER:'Z',"giant zombie",random
MONSTER:'Z',"giant zombie",random
MONSTER:'Z',"giant zombie",random
MONSTER:'Z',"ettin zombie",random
MONSTER:'Z',"ettin zombie",random
MONSTER:'Z',"ettin zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'Z',"human zombie",random
MONSTER:'V',"vampire",random
MONSTER:'V',"vampire",random
MONSTER:'V',"vampire",random
MONSTER:'V',"vampire lord",random
MONSTER:'V',"vampire lord",random
MONSTER:('Z',"skeleton"),random
MONSTER:('Z',"skeleton"),random
MONSTER:('Z',"skeleton"),random
MONSTER:('Z',"skeleton"),random
MONSTER:('Z',"skeleton"),random
MONSTER:(' ',"shade"),random
MONSTER:(' ',"shade"),random
MONSTER:(' ',"shade"),random
MONSTER:(' ',"shade"),random
MONSTER:('Z',"giant zombie"),random
MONSTER:('Z',"giant zombie"),random
MONSTER:('Z',"giant zombie"),random
MONSTER:('Z',"ettin zombie"),random
MONSTER:('Z',"ettin zombie"),random
MONSTER:('Z',"ettin zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('Z',"human zombie"),random
MONSTER:('V',"vampire"),random
MONSTER:('V',"vampire"),random
MONSTER:('V',"vampire"),random
MONSTER:('V',"vampire lord"),random
MONSTER:('V',"vampire lord"),random
# A few more for the party
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
#
# The Asmodeus Level
#
@@ -447,18 +451,18 @@ NON_DIGGABLE:(00,00,20,11)
# Entire main area
REGION:(01,01,20,10),unlit,"ordinary"
# The fellow in residence
MONSTER:'&',"Asmodeus",(12,07)
MONSTER:('&',"Asmodeus"),(12,07)
# Some random weapons and armor.
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:')',random,random
OBJECT:')',random,random
OBJECT:'*',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:')',random
OBJECT:')',random
OBJECT:'*',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'?',random
# Some traps.
TRAP:"spiked pit", (05,02)
TRAP:"fire", (08,06)
@@ -468,13 +472,13 @@ TRAP:"fire", random
TRAP:"magic", random
TRAP:"magic", random
# Random monsters.
MONSTER:' ',"ghost",(11,07)
MONSTER:'&',"horned devil",(10,05)
MONSTER:'L',random,random
MONSTER:(' ',"ghost"),(11,07)
MONSTER:('&',"horned devil"),(10,05)
MONSTER:'L',random
# Some Vampires for good measure
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'V',random
MONSTER:'V',random
MONSTER:'V',random
# Second part
GEOMETRY:half-right,center
MAP
@@ -488,9 +492,9 @@ MAZEWALK:(32,02),east
# Non diggable walls
NON_DIGGABLE:(00,00,32,04)
DOOR:closed,(32,02)
MONSTER:'&',random,random
MONSTER:'&',random,random
MONSTER:'&',random,random
MONSTER:'&',random
MONSTER:'&',random
MONSTER:'&',random
TRAP:"anti magic", random
TRAP:"fire", random
TRAP:"magic", random
@@ -523,18 +527,18 @@ NON_DIGGABLE:(00,00,46,12)
MAZEWALK:(00,06),west
STAIR:(44,06),down
# The fellow in residence
MONSTER:'&',"Baalzebub",(35,06)
MONSTER:('&',"Baalzebub"),(35,06)
# Some random weapons and armor.
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:')',random,random
OBJECT:')',random,random
OBJECT:'*',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:')',random
OBJECT:')',random
OBJECT:'*',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'?',random
# Some traps.
TRAP:"spiked pit", random
TRAP:"fire", random
@@ -544,14 +548,14 @@ TRAP:"fire", random
TRAP:"magic", random
TRAP:"magic", random
# Random monsters.
MONSTER:' ',"ghost",(37,07)
MONSTER:'&',"horned devil",(32,05)
MONSTER:'&',"barbed devil",(38,07)
MONSTER:'L',random,random
MONSTER:(' ',"ghost"),(37,07)
MONSTER:('&',"horned devil"),(32,05)
MONSTER:('&',"barbed devil"),(38,07)
MONSTER:'L',random
# Some Vampires for good measure
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'V',random
MONSTER:'V',random
MONSTER:'V',random
#
# The Sanctum Level
#
@@ -582,7 +586,7 @@ MAP
ENDMAP
REGION:(15,07,21,10),lit,"temple"
ALTAR:(18,08),noalign,sanctum
REGION:(41,06,48,11),unlit,"morgue",filled,true
REGION:(41,06,48,11),unlit,"morgue",filled,irregular
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Invisible barrier separating the left & right halves of the level
@@ -635,44 +639,44 @@ TRAP:"anti magic", random
TRAP:"fire", random
TRAP:"magic", random
# Some random objects
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:'[',random,random
OBJECT:')',random,random
OBJECT:')',random,random
OBJECT:'*',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:'[',random
OBJECT:')',random
OBJECT:')',random
OBJECT:'*',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'?',random
# Some monsters.
MONSTER:'&',"horned devil",(14,12),hostile
MONSTER:'&',"barbed devil",(18,08),hostile
MONSTER:'&',"erinys",(10,04),hostile
MONSTER:'&',"marilith",(07,09),hostile
MONSTER:'&',"nalfeshnee",(27,08),hostile
MONSTER:('&',"horned devil"),(14,12),hostile
MONSTER:('&',"barbed devil"),(18,08),hostile
MONSTER:('&',"erinys"),(10,04),hostile
MONSTER:('&',"marilith"),(07,09),hostile
MONSTER:('&',"nalfeshnee"),(27,08),hostile
# Moloch's horde
MONSTER:'@',"aligned priest",(20,03),noalign,hostile
MONSTER:'@',"aligned priest",(15,04),noalign,hostile
MONSTER:'@',"aligned priest",(11,05),noalign,hostile
MONSTER:'@',"aligned priest",(11,07),noalign,hostile
MONSTER:'@',"aligned priest",(11,09),noalign,hostile
MONSTER:'@',"aligned priest",(11,12),noalign,hostile
MONSTER:'@',"aligned priest",(15,13),noalign,hostile
MONSTER:'@',"aligned priest",(17,13),noalign,hostile
MONSTER:'@',"aligned priest",(21,13),noalign,hostile
MONSTER:('@',"aligned priest"),(20,03),noalign,hostile
MONSTER:('@',"aligned priest"),(15,04),noalign,hostile
MONSTER:('@',"aligned priest"),(11,05),noalign,hostile
MONSTER:('@',"aligned priest"),(11,07),noalign,hostile
MONSTER:('@',"aligned priest"),(11,09),noalign,hostile
MONSTER:('@',"aligned priest"),(11,12),noalign,hostile
MONSTER:('@',"aligned priest"),(15,13),noalign,hostile
MONSTER:('@',"aligned priest"),(17,13),noalign,hostile
MONSTER:('@',"aligned priest"),(21,13),noalign,hostile
# A few nasties
MONSTER:'L',random,random
MONSTER:'L',random,random
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'V',random,random
MONSTER:'L',random
MONSTER:'L',random
MONSTER:'V',random
MONSTER:'V',random
MONSTER:'V',random
STAIR:(63,15),up
# Teleporting to this level is allowed after the invocation creates its
# entrance. Force arrival in that case to be on rightmost third of level.
+40 -40
View File
@@ -39,7 +39,7 @@ TELEPORT_REGION:(06,16,09,17),(0,0,0,0),up
TELEPORT_REGION:(06,16,09,17),(0,0,0,0),down
# Throne room, with Croesus on the throne
REGION:(37,08,46,11),lit,"throne"
MONSTER:'@',"Croesus",(43,10),hostile
MONSTER:('@',"Croesus"),(43,10),hostile
# The Vault
# Using unfilled morgue for
# identification in mkmaze.c
@@ -50,12 +50,12 @@ REGION:(46,06,48,06),lit,"ordinary"
REGION:(19,13,21,13),lit,"ordinary"
REGION:(46,13,48,13),lit,"ordinary"
# A welcoming committee
REGION:(03,10,07,13),lit,"zoo",filled,true
REGION:(03,10,07,13),lit,"zoo",filled,irregular
# arrival chamber; needs to be a real room to control migrating monsters,
# and `unfilled' is a kludge to force an ordinary room to remain a room
REGION:(06,15,09,16),unlit,"ordinary",unfilled
# Barracks
REGION:(62,03,71,04),lit,"barracks",filled,true
REGION:(62,03,71,04),lit,"barracks",filled,irregular
# Doors
DOOR:closed,(06,14)
DOOR:closed,(09,03)
@@ -67,43 +67,43 @@ DOOR:open,(68,11)
DOOR:closed,(63,14)
DOOR:closed,(66,14)
# Soldiers guarding the fort
MONSTER:'@',"soldier",(12,14)
MONSTER:'@',"soldier",(12,13)
MONSTER:'@',"soldier",(11,10)
MONSTER:'@',"soldier",(13,02)
MONSTER:'@',"soldier",(14,03)
MONSTER:'@',"soldier",(20,02)
MONSTER:'@',"soldier",(30,02)
MONSTER:'@',"soldier",(40,02)
MONSTER:'@',"soldier",(30,16)
MONSTER:'@',"soldier",(32,16)
MONSTER:'@',"soldier",(40,16)
MONSTER:'@',"soldier",(54,16)
MONSTER:'@',"soldier",(54,14)
MONSTER:'@',"soldier",(54,13)
MONSTER:'@',"soldier",(57,10)
MONSTER:'@',"soldier",(57,09)
MONSTER:'@',"lieutenant",(15,08)
MONSTER:('@',"soldier"),(12,14)
MONSTER:('@',"soldier"),(12,13)
MONSTER:('@',"soldier"),(11,10)
MONSTER:('@',"soldier"),(13,02)
MONSTER:('@',"soldier"),(14,03)
MONSTER:('@',"soldier"),(20,02)
MONSTER:('@',"soldier"),(30,02)
MONSTER:('@',"soldier"),(40,02)
MONSTER:('@',"soldier"),(30,16)
MONSTER:('@',"soldier"),(32,16)
MONSTER:('@',"soldier"),(40,16)
MONSTER:('@',"soldier"),(54,16)
MONSTER:('@',"soldier"),(54,14)
MONSTER:('@',"soldier"),(54,13)
MONSTER:('@',"soldier"),(57,10)
MONSTER:('@',"soldier"),(57,09)
MONSTER:('@',"lieutenant"),(15,08)
# Four dragons guarding each side
MONSTER:'D',random,(18,09)
MONSTER:'D',random,(49,10)
MONSTER:'D',random,(33,05)
MONSTER:'D',random,(33,14)
MONSTER:'D',(18,09)
MONSTER:'D',(49,10)
MONSTER:'D',(33,05)
MONSTER:'D',(33,14)
# Eels in the moat
MONSTER:';',"giant eel",(17,08)
MONSTER:';',"giant eel",(17,11)
MONSTER:';',"giant eel",(48,08)
MONSTER:';',"giant eel",(48,11)
MONSTER:(';',"giant eel"),(17,08)
MONSTER:(';',"giant eel"),(17,11)
MONSTER:(';',"giant eel"),(48,08)
MONSTER:(';',"giant eel"),(48,11)
# The corner rooms treasures
OBJECT:'*',"diamond",(19,06)
OBJECT:'*',"diamond",(20,06)
OBJECT:'*',"diamond",(21,06)
OBJECT:'*',"emerald",(19,13)
OBJECT:'*',"emerald",(20,13)
OBJECT:'*',"emerald",(21,13)
OBJECT:'*',"ruby",(46,06)
OBJECT:'*',"ruby",(47,06)
OBJECT:'*',"ruby",(48,06)
OBJECT:'*',"amethyst",(46,13)
OBJECT:'*',"amethyst",(47,13)
OBJECT:'*',"amethyst",(48,13)
OBJECT:('*',"diamond"),(19,06)
OBJECT:('*',"diamond"),(20,06)
OBJECT:('*',"diamond"),(21,06)
OBJECT:('*',"emerald"),(19,13)
OBJECT:('*',"emerald"),(20,13)
OBJECT:('*',"emerald"),(21,13)
OBJECT:('*',"ruby"),(46,06)
OBJECT:('*',"ruby"),(47,06)
OBJECT:('*',"ruby"),(48,06)
OBJECT:('*',"amethyst"),(46,13)
OBJECT:('*',"amethyst"),(47,13)
OBJECT:('*',"amethyst"),(48,13)
+99 -97
View File
@@ -55,28 +55,29 @@ BRANCH:levregion(01,00,79,20),(30,06,46,13)
# Non diggable walls
NON_DIGGABLE:(30,06,46,13)
# Objects
CONTAINER:'`',"statue",(36,10),uncursed,"knight",3,"Perseus"
OBJECT[75%]:'[',"shield of reflection",contained,cursed,+0
OBJECT[25%]:'[',"levitation boots",contained,random,+0
OBJECT[50%]:')',"scimitar",contained,blessed,+2
OBJECT[50%]:'(',"sack",contained
CONTAINER:('`',"statue"),(36,10),uncursed,montype:"knight",3,name:"Perseus" {
[75%]: OBJECT:('[',"shield of reflection"),cursed,+0
[25%]: OBJECT:('[',"levitation boots"),+0
[50%]: OBJECT:(')',"scimitar"),blessed,+2
[50%]: OBJECT:('(',"sack")
}
# These aren't really containers, but specifying CONTAINER forces them to be
# empty, since CONTAINERs contain only what is explicitly specified.
CONTAINER:'`',"statue",random
CONTAINER:'`',"statue",random
CONTAINER:'`',"statue",random
CONTAINER:'`',"statue",random
CONTAINER:'`',"statue",random
CONTAINER:'`',"statue",random
CONTAINER:'`',"statue",random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
CONTAINER:('`',"statue"),random { }
CONTAINER:('`',"statue"),random { }
CONTAINER:('`',"statue"),random { }
CONTAINER:('`',"statue"),random { }
CONTAINER:('`',"statue"),random { }
CONTAINER:('`',"statue"),random { }
CONTAINER:('`',"statue"),random { }
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Random traps
TRAP:random,random
TRAP:random,random
@@ -86,27 +87,27 @@ TRAP:random,random
TRAP:"board",(38,07)
TRAP:"board",(38,12)
# Random monsters
MONSTER:'@',"Medusa",(36,10),asleep
MONSTER:';',"giant eel",(11,06)
MONSTER:';',"giant eel",(23,13)
MONSTER:';',"giant eel",(29,02)
MONSTER:';',"jellyfish",(02,02)
MONSTER:';',"jellyfish",(00,08)
MONSTER:';',"jellyfish",(04,18)
MONSTER:'T',"water troll",(51,03)
MONSTER:'T',"water troll",(64,11)
MONSTER:'S',random,(38,07)
MONSTER:'S',random,(38,12)
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:('@',"Medusa"),(36,10),asleep
MONSTER:(';',"giant eel"),(11,06)
MONSTER:(';',"giant eel"),(23,13)
MONSTER:(';',"giant eel"),(29,02)
MONSTER:(';',"jellyfish"),(02,02)
MONSTER:(';',"jellyfish"),(00,08)
MONSTER:(';',"jellyfish"),(04,18)
MONSTER:('T',"water troll"),(51,03)
MONSTER:('T',"water troll"),(64,11)
MONSTER:'S',(38,07)
MONSTER:'S',(38,12)
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MAZE:"medusa-2",' '
FLAGS: noteleport
@@ -136,7 +137,7 @@ ENDMAP
# Dungeon Description
REGION:(00,00,74,19),lit,"ordinary"
REGION:(02,03,05,16),unlit,"ordinary"
REGION:(61,03,72,16),unlit,"ordinary",unfilled,true
REGION:(61,03,72,16),unlit,"ordinary",unfilled,irregular
REGION:(71,08,72,11),unlit,"ordinary"
REGION:(67,08,69,11),lit,"ordinary"
# Teleport: down to up stairs island, up to Medusa's island
@@ -153,28 +154,29 @@ BRANCH:levregion(01,00,79,20),(59,01,73,17)
NON_DIGGABLE:(01,02,06,17)
NON_DIGGABLE:(60,02,73,17)
# Objects
CONTAINER:'`',"statue",(68,10),uncursed,"knight",3,"Perseus"
OBJECT[25%]:'[',"shield of reflection",contained,cursed,+0
OBJECT[75%]:'[',"levitation boots",contained,random,+0
OBJECT[50%]:')',"scimitar",contained,blessed,+2
OBJECT[50%]:'(',"sack",contained
CONTAINER:'`',"statue",(64,08)
CONTAINER:'`',"statue",(65,08)
CONTAINER:'`',"statue",(64,09)
CONTAINER:'`',"statue",(65,09)
CONTAINER:'`',"statue",(64,10)
CONTAINER:'`',"statue",(65,10)
CONTAINER:'`',"statue",(64,11)
CONTAINER:'`',"statue",(65,11)
OBJECT:'`',"boulder",(04,04)
OBJECT:'/',random,(52,09)
OBJECT:'`',"boulder",(52,09)
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
CONTAINER:('`',"statue"),(68,10),uncursed,montype:"knight",3,name:"Perseus" {
[25%]: OBJECT:('[',"shield of reflection"),cursed,+0
[75%]: OBJECT:('[',"levitation boots"),+0
[50%]: OBJECT:(')',"scimitar"),blessed,+2
[50%]: OBJECT:('(',"sack")
}
CONTAINER:('`',"statue"),(64,08) { }
CONTAINER:('`',"statue"),(65,08) { }
CONTAINER:('`',"statue"),(64,09) { }
CONTAINER:('`',"statue"),(65,09) { }
CONTAINER:('`',"statue"),(64,10) { }
CONTAINER:('`',"statue"),(65,10) { }
CONTAINER:('`',"statue"),(64,11) { }
CONTAINER:('`',"statue"),(65,11) { }
OBJECT:('`',"boulder"),(04,04)
OBJECT:'/',(52,09)
OBJECT:('`',"boulder"),(52,09)
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
OBJECT:random,random
# Traps
TRAP:"magic",(03,12)
TRAP:random,random
@@ -182,36 +184,36 @@ TRAP:random,random
TRAP:random,random
TRAP:random,random
# Monsters.
MONSTER:'@',"Medusa",(68,10),asleep
MONSTER:'g',"gremlin",(02,14)
MONSTER:'H',"titan",(02,05)
MONSTER:';',"electric eel",(10,13)
MONSTER:';',"electric eel",(11,13)
MONSTER:';',"electric eel",(10,14)
MONSTER:';',"electric eel",(11,14)
MONSTER:';',"electric eel",(10,15)
MONSTER:';',"electric eel",(11,15)
MONSTER:';',"jellyfish",(01,01)
MONSTER:';',"jellyfish",(00,08)
MONSTER:';',"jellyfish",(04,19)
MONSTER:''',"stone golem",(64,08),asleep
MONSTER:''',"stone golem",(65,08),asleep
MONSTER:''',"stone golem",(64,09),asleep
MONSTER:''',"stone golem",(65,09),asleep
MONSTER:'S',"cobra",(64,10),asleep
MONSTER:'S',"cobra",(65,10),asleep
MONSTER:'A',random,(72,08)
MONSTER:'y',"yellow light",(72,11),asleep
MONSTER:random,random,(17,07)
MONSTER:random,random,(28,11)
MONSTER:random,random,(32,13)
MONSTER:random,random,(49,09)
MONSTER:random,random,(48,07)
MONSTER:random,random,(65,03)
MONSTER:random,random,(70,04)
MONSTER:random,random,(70,15)
MONSTER:random,random,(65,16)
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:('@',"Medusa"),(68,10),asleep
MONSTER:('g',"gremlin"),(02,14)
MONSTER:('H',"titan"),(02,05)
MONSTER:(';',"electric eel"),(10,13)
MONSTER:(';',"electric eel"),(11,13)
MONSTER:(';',"electric eel"),(10,14)
MONSTER:(';',"electric eel"),(11,14)
MONSTER:(';',"electric eel"),(10,15)
MONSTER:(';',"electric eel"),(11,15)
MONSTER:(';',"jellyfish"),(01,01)
MONSTER:(';',"jellyfish"),(00,08)
MONSTER:(';',"jellyfish"),(04,19)
MONSTER:(''',"stone golem"),(64,08),asleep
MONSTER:(''',"stone golem"),(65,08),asleep
MONSTER:(''',"stone golem"),(64,09),asleep
MONSTER:(''',"stone golem"),(65,09),asleep
MONSTER:('S',"cobra"),(64,10),asleep
MONSTER:('S',"cobra"),(65,10),asleep
MONSTER:'A',(72,08)
MONSTER:('y',"yellow light"),(72,11),asleep
MONSTER:random,(17,07)
MONSTER:random,(28,11)
MONSTER:random,(32,13)
MONSTER:random,(49,09)
MONSTER:random,(48,07)
MONSTER:random,(65,03)
MONSTER:random,(70,04)
MONSTER:random,(70,15)
MONSTER:random,(65,16)
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
+700 -570
View File
File diff suppressed because it is too large Load Diff
+48 -40
View File
@@ -8,51 +8,59 @@
LEVEL: "oracle"
ROOM: "ordinary" , lit, (3,3), (center,center), (11,9)
NAME: "central"
OBJECT:'`',"statue",(0,0),"forest centaur",1
OBJECT:'`',"statue",(0,8),"mountain centaur",1
OBJECT:'`',"statue",(10,0),"mountain centaur",1
OBJECT:'`',"statue",(10,8),"forest centaur",1
OBJECT:'`',"statue",(5,1),"plains centaur",1
OBJECT:'`',"statue",(5,7),"plains centaur",1
OBJECT:'`',"statue",(2,4),"plains centaur",1
OBJECT:'`',"statue",(8,4),"plains centaur",1
MONSTER: random, random, random
MONSTER: random, random, random
ROOM: "ordinary" , lit, (3,3), (center,center), (11,9) {
OBJECT:('`',"statue"),(0,0),montype:'C',1
OBJECT:('`',"statue"),(0,8),montype:'C',1
OBJECT:('`',"statue"),(10,0),montype:'C',1
OBJECT:('`',"statue"),(10,8),montype:'C',1
OBJECT:('`',"statue"),(5,1),montype:'C',1
OBJECT:('`',"statue"),(5,7),montype:'C',1
OBJECT:('`',"statue"),(2,4),montype:'C',1
OBJECT:('`',"statue"),(8,4),montype:'C',1
SUBROOM: "delphi" , lit , (4,3) , (3,3), "central"
FOUNTAIN: (0, 1)
FOUNTAIN: (1, 0)
FOUNTAIN: (1, 2)
FOUNTAIN: (2, 1)
MONSTER: '@', "Oracle", (1,1)
DOOR: false , nodoor , random, random
SUBROOM: "delphi" , lit , (4,3) , (3,3) {
FOUNTAIN: (0, 1)
FOUNTAIN: (1, 0)
FOUNTAIN: (1, 2)
FOUNTAIN: (2, 1)
MONSTER: ('@', "Oracle"), (1,1)
ROOMDOOR: false , nodoor , random, random
}
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: random, random
MONSTER: random, random
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: random, random, random
MONSTER: random, random, random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
MONSTER: random, random, random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, up
OBJECT: random,random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: random, random, random
ROOM: "ordinary" , random, random, random, random {
STAIR: random, down
OBJECT: random, random
TRAP: random, random
MONSTER: random, random
MONSTER: random, random
}
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: random, random, random
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
OBJECT: random, random
MONSTER: random, random
}
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: random, random
}
ROOM: "ordinary" , random, random, random, random {
OBJECT: random, random
TRAP: random, random
MONSTER: random, random
}
RANDOM_CORRIDORS
+209 -197
View File
@@ -35,7 +35,7 @@
### Bottom (first) level of Sokoban ###
MAZE:"soko4-1",' '
FLAGS:noteleport,hardfloor
FLAGS:noteleport,hardfloor,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -60,18 +60,18 @@ NON_DIGGABLE:(00,00,13,12)
NON_PASSWALL:(00,00,13,12)
# Boulders
OBJECT:'`',"boulder",(02,02)
OBJECT:'`',"boulder",(02,03)
OBJECT:('`',"boulder"),(02,02)
OBJECT:('`',"boulder"),(02,03)
#
OBJECT:'`',"boulder",(10,02)
OBJECT:'`',"boulder",(09,03)
OBJECT:'`',"boulder",(10,04)
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)
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)
@@ -85,20 +85,20 @@ TRAP:"pit",(06,10)
TRAP:"pit",(07,10)
# A little help
OBJECT:'?',"earth",(02,11)
OBJECT:'?',"earth",(03,11)
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
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
MAZE:"soko4-2",' '
FLAGS:noteleport,hardfloor
FLAGS:noteleport,hardfloor,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -121,20 +121,20 @@ 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"),(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"),(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)
OBJECT:('`',"boulder"),(07,08)
OBJECT:('`',"boulder"),(08,08)
OBJECT:('`',"boulder"),(09,08)
OBJECT:('`',"boulder"),(10,08)
# Traps
TRAP:"pit",(01,02)
@@ -149,21 +149,21 @@ TRAP:"pit",(05,08)
TRAP:"pit",(06,08)
# A little help
OBJECT:'?',"earth",(01,09)
OBJECT:'?',"earth",(02,09)
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
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
### Second level ###
MAZE:"soko3-1",' '
FLAGS:noteleport
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -188,29 +188,29 @@ NON_DIGGABLE:(00,00,28,11)
NON_PASSWALL:(00,00,28,11)
# Boulders
OBJECT:'`',"boulder",(03,02)
OBJECT:'`',"boulder",(04,02)
OBJECT:('`',"boulder"),(03,02)
OBJECT:('`',"boulder"),(04,02)
#
OBJECT:'`',"boulder",(06,02)
OBJECT:'`',"boulder",(06,03)
OBJECT:'`',"boulder",(07,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"),(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)
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)
@@ -230,16 +230,16 @@ 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
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
MAZE:"soko3-2",' '
FLAGS:noteleport
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -266,22 +266,22 @@ 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)
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)
@@ -298,17 +298,17 @@ 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
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
### Third level ###
MAZE:"soko2-1",' '
FLAGS:noteleport
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -333,23 +333,23 @@ NON_DIGGABLE:(00,00,19,11)
NON_PASSWALL:(00,00,19,11)
# Boulders
OBJECT:'`',"boulder",(02,02)
OBJECT:'`',"boulder",(03,02)
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"),(05,03)
OBJECT:('`',"boulder"),(07,03)
OBJECT:('`',"boulder"),(07,02)
OBJECT:('`',"boulder"),(08,02)
#
OBJECT:'`',"boulder",(10,03)
OBJECT:'`',"boulder",(11,03)
OBJECT:('`',"boulder"),(10,03)
OBJECT:('`',"boulder"),(11,03)
#
OBJECT:'`',"boulder",(02,07)
OBJECT:'`',"boulder",(02,08)
OBJECT:'`',"boulder",(03,09)
OBJECT:('`',"boulder"),(02,07)
OBJECT:('`',"boulder"),(02,08)
OBJECT:('`',"boulder"),(03,09)
#
OBJECT:'`',"boulder",(05,07)
OBJECT:'`',"boulder",(06,06)
OBJECT:('`',"boulder"),(05,07)
OBJECT:('`',"boulder"),(06,06)
# Traps
TRAP:"hole",(08,09)
@@ -364,16 +364,16 @@ 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
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
MAZE:"soko2-2",' '
FLAGS:noteleport
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -399,22 +399,22 @@ 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)
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)
@@ -430,17 +430,17 @@ 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
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'%',random
OBJECT:'=',random
OBJECT:'/',random
### Top (last) level of Sokoban ###
MAZE:"soko1-1",' '
FLAGS:noteleport
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -463,34 +463,36 @@ MAP
|...|----- --|.....|
----- -------
ENDMAP
RANDOM_PLACES:(16,11),(16,13),(16,15)
$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"),(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"),(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,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)
OBJECT:('`',"boulder"),(03,14)
# Traps
TRAP:"hole",(08,01)
@@ -510,29 +512,33 @@ 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"
MONSTER:('m',"giant mimic"), random, m_object "boulder"
MONSTER:('m',"giant mimic"), random, m_object "boulder"
# Random objects
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'=',random,random
OBJECT:'/',random,random
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,true
OBJECT:'(',"bag of holding",place[0]
ENGRAVING:place[0],burn,"Elbereth"
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"
MAZE:"soko1-2",' '
FLAGS:noteleport
FLAGS:noteleport,premapped,solidify
GEOMETRY:center,center
#12345678901234567890123456789012345678901234567890
MAP
@@ -554,35 +560,37 @@ MAP
|..|..| --|.....|
------- -------
ENDMAP
RANDOM_PLACES:(16,10),(16,12),(16,14)
$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"),(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"),(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)
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)
@@ -604,22 +612,26 @@ 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"
MONSTER:('m',"giant mimic"), random, m_object "boulder"
MONSTER:('m',"giant mimic"), random, m_object "boulder"
# Random objects
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'%',random,random
OBJECT:'=',random,random
OBJECT:'/',random,random
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,true
OBJECT:'"',"amulet of reflection",place[0]
ENGRAVING:place[0],burn,"Elbereth"
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"
+54 -50
View File
@@ -6,7 +6,7 @@
#
# Upper stage of Vlad's tower
MAZE:"tower1",' '
FLAGS: noteleport,hardfloor
FLAGS: noteleport,hardfloor,solidify
GEOMETRY:half-left,center
MAP
--- --- ---
@@ -23,13 +23,13 @@ MAP
ENDMAP
LADDER:(11,05),down
# The lord and his court
MONSTER:'V',"Vlad the Impaler",(06,05)
MONSTER:'V',random,(03,09)
MONSTER:'V',random,(07,09)
MONSTER:'V',random,(11,09)
MONSTER:'V',random,(03,01)
MONSTER:'V',random,(07,01)
MONSTER:'V',random,(11,01)
MONSTER:('V',"Vlad the Impaler"),(06,05)
MONSTER:'V',(03,09)
MONSTER:'V',(07,09)
MONSTER:'V',(11,09)
MONSTER:'V',(03,01)
MONSTER:'V',(07,01)
MONSTER:'V',(11,01)
# The doors
DOOR:closed,(08,03)
DOOR:closed,(10,03)
@@ -39,20 +39,20 @@ DOOR:locked,(08,07)
DOOR:locked,(10,07)
DOOR:closed,(03,06)
# treasures
OBJECT:'(',"chest",(07,05)
OBJECT:'(',"chest",(03,09)
OBJECT:'(',"chest",(07,09)
OBJECT:'(',"chest",(11,09)
OBJECT:'(',"chest",(03,01)
OBJECT:'(',"chest",(07,01)
OBJECT:'(',"chest",(11,01)
OBJECT:('(',"chest"),(07,05)
OBJECT:('(',"chest"),(03,09)
OBJECT:('(',"chest"),(07,09)
OBJECT:('(',"chest"),(11,09)
OBJECT:('(',"chest"),(03,01)
OBJECT:('(',"chest"),(07,01)
OBJECT:('(',"chest"),(11,01)
# We have to protect the tower against outside attacks
NON_DIGGABLE:(00,00,14,10)
# Intermediate stage of Vlad's tower
MAZE:"tower2",' '
FLAGS: noteleport,hardfloor
FLAGS: noteleport,hardfloor,solidify
GEOMETRY:half-left,center
MAP
--- --- ---
@@ -68,31 +68,34 @@ MAP
--- --- ---
ENDMAP
# Random places are the 10 niches
RANDOM_PLACES:(03,01),(07,01),(11,01),(01,03),(13,03),
(01,07),(13,07),(03,09),(07,09),(11,09)
$place = { (03,01),(07,01),(11,01),(01,03),(13,03),
(01,07),(13,07),(03,09),(07,09),(11,09) }
SHUFFLE: $place
LADDER:(11,05),up
LADDER:(03,07),down
DOOR:locked,(10,04)
DOOR:locked,(09,07)
MONSTER:'&',random,place[0]
MONSTER:'&',random,place[1]
MONSTER:'d',"hell hound pup",place[2]
MONSTER:'d',"hell hound pup",place[3]
MONSTER:'d',"winter wolf",place[4]
CONTAINER:'(',"chest",place[5]
OBJECT:'"',"amulet of life saving",contained
CONTAINER:'(',"chest",place[6]
OBJECT:'"',"amulet of strangulation",contained
OBJECT:'[',"water walking boots",place[7]
OBJECT:'[',"crystal plate mail",place[8]
OBJECT:'+',"invisibility",place[9]
MONSTER:'&',$place[0]
MONSTER:'&',$place[1]
MONSTER:('d',"hell hound pup"),$place[2]
MONSTER:('d',"hell hound pup"),$place[3]
MONSTER:('d',"winter wolf"),$place[4]
CONTAINER:('(',"chest"),$place[5] {
OBJECT:('"',"amulet of life saving")
}
CONTAINER:('(',"chest"),$place[6] {
OBJECT:('"',"amulet of strangulation")
}
OBJECT:('[',"water walking boots"),$place[7]
OBJECT:('[',"crystal plate mail"),$place[8]
OBJECT:('+',"invisibility"),$place[9]
# Walls in the tower are non diggable
NON_DIGGABLE:(00,00,14,10)
# Bottom most stage of Vlad's tower
MAZE:"tower3",' '
FLAGS: noteleport,hardfloor
FLAGS: noteleport,hardfloor,solidify
GEOMETRY:half-left,center
MAP
--- --- ---
@@ -110,29 +113,30 @@ MAP
---------------
ENDMAP
# Random places are the 10 niches
RANDOM_PLACES:(05,01),(09,01),(13,01),(03,03),(15,03),
(03,07),(15,07),(05,09),(09,09),(13,09)
$place = { (05,01),(09,01),(13,01),(03,03),(15,03),
(03,07),(15,07),(05,09),(09,09),(13,09) }
SHUFFLE: $place
BRANCH:(02,05,02,05),(00,00,00,00)
LADDER:(05,07),up
# Entry door is, of course, locked
DOOR:locked,(14,05)
# Let's put a dragon behind the door, just for the fun...
MONSTER:'D',random,(13,05)
MONSTER:random,random,(12,04)
MONSTER:random,random,(12,06)
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
MONSTER:random,random,random
OBJECT:')',"long sword",place[0]
TRAP:random,place[0]
OBJECT:'(',"lock pick",place[1]
TRAP:random,place[1]
OBJECT:'[',"elven cloak",place[2]
TRAP:random,place[2]
OBJECT:'(',"blindfold",place[3]
TRAP:random,place[3]
MONSTER:'D',(13,05)
MONSTER:random,(12,04)
MONSTER:random,(12,06)
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
MONSTER:random,random
OBJECT:(')',"long sword"),$place[0]
TRAP:random,$place[0]
OBJECT:('(',"lock pick"),$place[1]
TRAP:random,$place[1]
OBJECT:('[',"elven cloak"),$place[2]
TRAP:random,$place[2]
OBJECT:('(',"blindfold"),$place[3]
TRAP:random,$place[3]
# Walls in the tower are non diggable
NON_DIGGABLE:(00,00,18,12)
+61 -61
View File
@@ -48,29 +48,29 @@ NON_PASSWALL:(11,00,21,00)
NON_PASSWALL:(11,10,27,12)
NON_PASSWALL:(21,00,27,10)
# The wizard and his guards
MONSTER:'@',"Wizard of Yendor",(16,05),asleep
MONSTER:'d',"hell hound",(15,05)
MONSTER:'V',"vampire lord",(17,05)
MONSTER:('@',"Wizard of Yendor"),(16,05),asleep
MONSTER:('d',"hell hound"),(15,05)
MONSTER:('V',"vampire lord"),(17,05)
# The local treasure
OBJECT:'+',"Book of the Dead",(16,05)
OBJECT:('+',"Book of the Dead"),(16,05)
# Surrounding terror
MONSTER:';',"kraken",(14,02)
MONSTER:';',"giant eel",(17,02)
MONSTER:';',"kraken",(13,04)
MONSTER:';',"giant eel",(13,06)
MONSTER:';',"kraken",(19,04)
MONSTER:';',"giant eel",(19,06)
MONSTER:';',"kraken",(15,08)
MONSTER:';',"giant eel",(17,08)
MONSTER:';',"piranha",(15,02)
MONSTER:';',"piranha",(19,08)
MONSTER:(';',"kraken"),(14,02)
MONSTER:(';',"giant eel"),(17,02)
MONSTER:(';',"kraken"),(13,04)
MONSTER:(';',"giant eel"),(13,06)
MONSTER:(';',"kraken"),(19,04)
MONSTER:(';',"giant eel"),(19,06)
MONSTER:(';',"kraken"),(15,08)
MONSTER:(';',"giant eel"),(17,08)
MONSTER:(';',"piranha"),(15,02)
MONSTER:(';',"piranha"),(19,08)
# Random monsters
MONSTER:'D',random,random
MONSTER:'H',random,random
MONSTER:'&',random,random
MONSTER:'&',random,random
MONSTER:'&',random,random
MONSTER:'&',random,random
MONSTER:'D',random
MONSTER:'H',random
MONSTER:'&',random
MONSTER:'&',random
MONSTER:'&',random
MONSTER:'&',random
# And to make things a little harder.
TRAP:"board",(16,04)
TRAP:"board",(16,06)
@@ -82,14 +82,14 @@ TRAP:"sleep gas",random
TRAP:"anti magic",random
TRAP:"magic",random
# Some random loot.
OBJECT:'*',"ruby",random
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'+',random,random
OBJECT:'+',random,random
OBJECT:'+',random,random
OBJECT:('*',"ruby"),random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'+',random
OBJECT:'+',random
OBJECT:'+',random
# The middle wizard level.
@@ -136,13 +136,13 @@ TRAP:"sleep gas",random
TRAP:"anti magic",random
TRAP:"magic",random
# Some random loot.
OBJECT:'!',random,random
OBJECT:'!',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'+',random,random
OBJECT:'!',random
OBJECT:'!',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'+',random
# treasures
OBJECT:'"',random,(04,06)
OBJECT:'"',(04,06)
# The bottom wizard level.
@@ -191,33 +191,33 @@ NON_PASSWALL:(06,00,27,02)
NON_PASSWALL:(16,02,27,12)
NON_PASSWALL:(06,12,16,12)
#
MONSTER:'L',random,(10,07)
MONSTER:'V',"vampire lord",(12,07)
MONSTER:'L',(10,07)
MONSTER:('V',"vampire lord"),(12,07)
# Some surrounding horrors
MONSTER:';',"kraken",(08,05)
MONSTER:';',"giant eel",(08,08)
MONSTER:';',"kraken",(14,05)
MONSTER:';',"giant eel",(14,08)
MONSTER:(';',"kraken"),(08,05)
MONSTER:(';',"giant eel"),(08,08)
MONSTER:(';',"kraken"),(14,05)
MONSTER:(';',"giant eel"),(14,08)
# Other monsters
MONSTER:'L',random,random
MONSTER:'D',random,random
MONSTER:'D',random,(26,09)
MONSTER:'&',random,random
MONSTER:'&',random,random
MONSTER:'&',random,random
MONSTER:'L',random
MONSTER:'D',random
MONSTER:'D',(26,09)
MONSTER:'&',random
MONSTER:'&',random
MONSTER:'&',random
# And to make things a little harder.
TRAP:"board",(10,07)
TRAP:"board",(12,07)
TRAP:"board",(11,06)
TRAP:"board",(11,08)
# Some loot
OBJECT:')',random,random
OBJECT:'!',random,random
OBJECT:'?',random,random
OBJECT:'?',random,random
OBJECT:'(',random,random
OBJECT:')',random
OBJECT:'!',random
OBJECT:'?',random
OBJECT:'?',random
OBJECT:'(',random
# treasures
OBJECT:'"',random,(11,07)
OBJECT:'"',(11,07)
# The former decoy wizard levels.
@@ -241,10 +241,10 @@ BRANCH:levregion(01,00,79,20),(0,0,8,7)
TELEPORT_REGION:levregion(01,00,79,20),(2,2,6,6)
PORTAL:(4,4,4,4),(0,0,0,0),"wizard3"
MAZEWALK:(08,05),east
REGION:(04,03,06,06),unlit,"ordinary",unfilled,true
MONSTER:'L',random,(04,04)
MONSTER:'V',"vampire lord",(03,04)
MONSTER:';',"kraken",(06,06)
REGION:(04,03,06,06),unlit,"ordinary",unfilled,irregular
MONSTER:'L',(04,04)
MONSTER:('V',"vampire lord"),(03,04)
MONSTER:(';',"kraken"),(06,06)
# And to make things a little harder.
TRAP:"board",(04,03)
TRAP:"board",(04,05)
@@ -269,14 +269,14 @@ STAIR:levregion(01,00,79,20),(0,0,8,7),down
BRANCH:levregion(01,00,79,20),(0,0,8,7)
TELEPORT_REGION:levregion(01,00,79,20),(2,2,6,6)
MAZEWALK:(08,05),east
REGION:(04,03,06,06),unlit,"ordinary",unfilled,true
MONSTER:'L',random,(04,04)
MONSTER:'V',"vampire lord",(03,04)
MONSTER:';',"kraken",(06,06)
REGION:(04,03,06,06),unlit,"ordinary",unfilled,irregular
MONSTER:'L',(04,04)
MONSTER:('V',"vampire lord"),(03,04)
MONSTER:(';',"kraken"),(06,06)
# And to make things a little harder.
TRAP:"board",(04,03)
TRAP:"board",(04,05)
TRAP:"board",(03,04)
TRAP:"board",(05,04)
# treasures
OBJECT:'"',random,(04,04)
OBJECT:'"',(04,04)
+54
View File
@@ -2051,6 +2051,9 @@ An obsolete synonym for ``gender:male''.
Cannot be set with the `O' command.
.lp mention_walls
Give feedback when walking against a wall (default off).
.lp menucolors
Enable coloring menu lines (default off).
See ``Configuring Menu Colors'' on how to configure the colors.
.lp menustyle
Controls the interface used when you need to choose various objects (in
response to the Drop command, for instance). The value specified should
@@ -2604,6 +2607,56 @@ The second example results in the exclusion of any corpse from autopickup.
The last example results in the exclusion of items known to be cursed from
autopickup.
.hn 2
Configuring Menu Colors
.pg
Some platforms allow you to define colors used in menu lines when the
line matches a user-defined pattern. At this time the tty, win32tty and
win32gui support this.
.pg
In general, the config file entries to configure the menu color mappings
look like this:
.si
.lp MENUCOLOR="pattern"=color&attribute
.ei
.PS "menu color"
.PL pattern
the pattern to match;
.PL color
the color to use for lines matching the pattern;
.PL attribute
the attribute to use for lines matching the pattern. The attribute is
optional, and if left out, you must also leave out the preceding ampersand.
If no attribute is defined, no attribute is used.
.PE
.lp ""
For explanation on pattern format and the matching routines, see
the pattern in the ``Configuring User Sounds'' -section.
.lp ""
Allowed colors are black, red, green, brown, blue, magenta, cyan, gray,
orange, lightgreen, yellow, lightblue, lightmagenta, lightcyan, and white.
.lp ""
Allowed attributes are none, bold, dim, underline, blink, and inverse.
Note that the platform used may interpret the attributes any way it
wants.
.lp ""
Here's an example of menu colors using NetHack's internal
pattern matching facility:
.sd
.si
MENUCOLOR="* blessed *"=green
MENUCOLOR="* cursed *"=red
MENUCOLOR="* cursed *(being worn)"=red&underline
.ei
.ed
specifies that any menu line with " blessed " contained
in it will be shown in green color, lines with " cursed " will be
shown in red, and lines with " cursed " followed by "(being worn)"
on the same line will be shown in red color and underlined.
You can have multiple MENUCOLOR entries in your config file,
and the last MENUCOLOR-line in your config file that matches
a menu line will be used for the line.
.pg
.hn 2
Configuring User Sounds
.pg
Some platforms allow you to define sound files to be played when a message
@@ -2784,6 +2837,7 @@ O S_ogre (ogre)
o S_orc (orc)
p S_piercer (piercer)
^ S_pit (pit)
# S_poisoncloud (poison cloud)
^ S_polymorph_trap (polymorph trap)
} S_pool (water)
! S_potion (potion)
+70
View File
@@ -2479,6 +2479,10 @@ An obsolete synonym for ``{\tt gender:male}''. Cannot be set with the
\item[\ib{mention\_walls}]
Give feedback when walking against a wall (default off).
%.lp
\item[\ib{menucolors}]
Enable coloring menu lines (default off).
See ``{\it Configuring Menu Colors\/}'' on how to configure the colors.
%.lp
\item[\ib{menustyle}]
Controls the interface used when you need to choose various objects (in
response to the Drop command, for instance). The value specified should
@@ -3141,6 +3145,71 @@ The second example results in the exclusion of any corpse from autopickup.
The last example results in the exclusion of items known to be cursed from
autopickup.
%.lp
%.hn 2
\subsection*{Configuring Menu Colors}
%.pg
Some platforms allow you to define colors used in menu lines when the
line matches a user-defined pattern. At this time the tty, win32tty and
win32gui support this.
%.pg
In general, the config file entries to configure the menu color mappings
look like this:
\begin{verbatim}
MENUCOLOR="pattern"=color&attribute
\end{verbatim}
\blist{}
%.lp
\item[\ib{pattern}]
the pattern to match;
%.lp
\item[\ib{color}]
the color to use for lines matching the pattern;
%.lp
\item[\ib{attribute}]
the attribute to use for lines matching the pattern. The attribute is
optional, and if left out, you must also leave out the preceding ampersand.
If no attribute is defined, no attribute is used.
\elist
%.lp ""
For explanation on pattern format and the matching routines, see
the pattern in the {\it Configuring User Sounds} -section.
%.lp ""
Allowed colors are {\it black}, {\it red}, {\it green}, {\it brown},
{\it blue}, {\it magenta}, {\it cyan}, {\it gray}, {\it orange},
{\it lightgreen}, {\it yellow}, {\it lightblue}, {\it lightmagenta},
{\it lightcyan}, and {\it white}.
%.lp ""
Allowed attributes are {\it none}, {\it bold}, {\it dim}, {\it underline},
{\it blink}, and {\it inverse}.
Note that the platform used may interpret the attributes any way it
wants.
%.lp ""
Here's an example of menu colors using NetHack's internal
pattern matching facility:
\begin{verbatim}
MENUCOLOR="* blessed *"=green
MENUCOLOR="* cursed *"=red
MENUCOLOR="* cursed *(being worn)"=red&underline
\end{verbatim}
specifies that any menu line with " blessed " contained
in it will be shown in green color, lines with " cursed " will be
shown in red, and lines with " cursed " followed by "(being worn)"
on the same line will be shown in red color and underlined.
You can have multiple MENUCOLOR entries in your config file,
and the last MENUCOLOR-line in your config file that matches
a menu line will be used for the line.
%.pg
%.lp
%.hn 2
\subsection*{Configuring User Sounds}
@@ -3343,6 +3412,7 @@ Default & Symbol Name & Description\\
\verb@o@ & S\_orc & (orc)\\
\verb@p@ & S\_piercer & (piercer)\\
\verb@^@ & S\_pit & (pit)\\
\verb@#@ & S\_poisoncloud & (poison cloud)\\
\verb@^@ & S\_polymorph\_trap & (polymorph trap)\\
\verb@}@ & S\_pool & (water)\\
\verb@!@ & S\_potion & (potion)\\
+3 -2
View File
@@ -887,13 +887,13 @@ show object symbols in menu headings in menus where those object symbols
act as menu accelerators, toggleable via "menu_objsyms" option
show t-shirt text at end of game inventory disclose
hitting with a polearm remembers the position of the last monster you hit
allow showing legal polearm positions when asked for location to hit
add messages for trying to pick up some terrain features
boomerang makes noise when hitting a sink
non-pet rust monsters would eat rust-proofed non-digestibles but ignore
those non-digestibles otherwise
kicking a grave may topple the gravestone
allow showing legal jumping positions when asked for location to jump to
allow showing legal positions for stinking cloud, jumping and polearms
when asked for a location
Platform- and/or Interface-Specific Fixes
@@ -1132,6 +1132,7 @@ smartphone: added "Type Cmd" command that allows to type arbitrary commands
smartphone: added Q(quiver) command to "Attack" layout
smartphone: fixed F command to prompt for direction
unix,vms: altmeta option to handle terminals which send "ESC c" for Alt+c
tty,win32gui,win32tty: add menucolors
NetHack Community Patches (or Variation) Included
+18
View File
@@ -7,6 +7,10 @@
#ifndef COLOR_H
#define COLOR_H
#ifdef MENU_COLOR_REGEX
#include <regex.h>
#endif
/*
* The color scheme used is tailored for an IBM PC. It consists of the
* standard 8 colors, folowed by their bright counterparts. There are
@@ -51,4 +55,18 @@
#define DRAGON_SILVER CLR_BRIGHT_CYAN
#define HI_ZAP CLR_BRIGHT_BLUE
struct menucoloring {
# ifdef MENU_COLOR_REGEX
# ifdef MENU_COLOR_REGEX_POSIX
regex_t match;
# else
struct re_pattern_buffer match;
# endif
# else
char *match;
# endif
int color, attr;
struct menucoloring *next;
};
#endif /* COLOR_H */
+8
View File
@@ -437,6 +437,14 @@ typedef unsigned char uchar;
* bugs left here.
*/
/* Menucolors */
# define MENU_COLOR_REGEX /* use GNU regex */
/*# define MENU_COLOR_REGEX_POSIX*/ /* use POSIX regex */
/* if neither is defined, uses pmatch()
* pmatch() provides basic globbing: '*' and '?' wildcards.
*/
#define STATUS_VIA_WINDOWPORT /* re-work of the status line updating process */
#define STATUS_HILITES /* support hilites of status fields */
/* #define WINCHAIN*/ /* stacked window systems */
+8 -2
View File
@@ -276,7 +276,7 @@ E int FDECL(use_pick_axe2, (struct obj *));
E boolean FDECL(mdig_tunnel, (struct monst *));
E void FDECL(watch_dig, (struct monst *,XCHAR_P,XCHAR_P,BOOLEAN_P));
E void NDECL(zap_dig);
E struct obj *FDECL(bury_an_obj, (struct obj *));
E struct obj *FDECL(bury_an_obj, (struct obj *, boolean *));
E void FDECL(bury_objs, (int,int));
E void FDECL(unearth_objs, (int,int));
E void FDECL(rot_organic, (ANY_P *, long));
@@ -828,6 +828,7 @@ E char *FDECL(sitoa, (int));
E int FDECL(sgn, (int));
E int FDECL(rounddiv, (long,int));
E int FDECL(dist2, (int,int,int,int));
E int FDECL(isqrt, (int));
E int FDECL(distmin, (int,int,int,int));
E boolean FDECL(online2, (int,int,int,int));
E boolean FDECL(pmatch, (const char *,const char *));
@@ -1138,6 +1139,7 @@ E void FDECL(dodoor, (int,int,struct mkroom *));
E void FDECL(mktrap, (int,int,struct mkroom *,coord*));
E void FDECL(mkstairs, (XCHAR_P,XCHAR_P,CHAR_P,struct mkroom *));
E void NDECL(mkinvokearea);
E void FDECL(mineralize, (int, int, int, int, BOOLEAN_P));
/* ### mkmap.c ### */
@@ -1147,7 +1149,7 @@ void FDECL(remove_rooms, (int,int,int,int));
/* ### mkmaze.c ### */
E void FDECL(wallification, (int,int,int,int));
E void FDECL(walkfrom, (int,int));
E void FDECL(walkfrom, (int,int,SCHAR_P));
E void FDECL(makemaz, (const char *));
E void FDECL(mazexy, (coord *));
E void NDECL(bound_digging);
@@ -1156,6 +1158,7 @@ E boolean FDECL(bad_location, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P))
E void FDECL(place_lregion, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,
XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,
XCHAR_P,d_level *));
E void NDECL(fumaroles);
E void NDECL(movebubbles);
E void NDECL(water_friction);
E void FDECL(save_waterlevel, (int,int));
@@ -1581,6 +1584,9 @@ E void FDECL(parsesymbols, (char *));
E struct symparse *FDECL(match_sym, (char *));
E void NDECL(set_playmode);
E int FDECL(sym_val, (char *));
E boolean FDECL(add_menu_coloring, (char *));
E boolean FDECL(get_menu_coloring, (char *, int *, int *));
E void NDECL(free_menu_coloring);
/* ### pager.c ### */
+1
View File
@@ -201,6 +201,7 @@ struct instance_flags {
boolean rlecomp; /* run-length comp of levels when writing savefile */
uchar num_pad_mode;
boolean echo; /* 1 to echo characters */
boolean use_menu_color; /* use color in menus; only if wc_color */
#if 0
boolean DECgraphics; /* use DEC VT-xxx extended character set */
boolean IBMgraphics; /* use IBM extended character set */
+2
View File
@@ -13,6 +13,8 @@ struct mkroom {
schar rtype; /* type of room (zoo, throne, etc...) */
schar orig_rtype; /* same as rtype, but not zeroed later */
schar rlit; /* is the room lit ? */
schar needfill; /* sp_lev: does the room need filling? */
schar needjoining; /* sp_lev */
schar doorct; /* door count */
schar fdoor; /* index for the first door of the room */
schar nsubrooms; /* number of subrooms */
+7
View File
@@ -127,8 +127,15 @@ extern void FDECL(interject, (int));
#define strncmpi(a,b,c) strnicmp(a,b,c)
#endif
/* Visual Studio defines this in their own headers, which we don't use */
#ifndef snprintf
#define snprintf _snprintf
#pragma warning(disable:4996) /* deprecation warning suggesting snprintf_s */
#endif
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#ifdef __BORLANDC__
#undef randomize
#undef random
+1 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.5 obj.h $NHDT-Date: 1426949157 2015/03/21 14:45:57 $ $NHDT-Branch: master $:$NHDT-Revision: 1.36 $ */
/* NetHack 3.5 obj.h $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 obj.h $Date: 2012/01/10 17:47:16 $ $Revision: 1.31 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
+1 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.5 patchlevel.h $NHDT-Date: 1426948844 2015/03/21 14:40:44 $ $NHDT-Branch: master $:$NHDT-Revision: 1.95 $ */
/* NetHack 3.5 patchlevel.h $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 patchlevel.h $Date: 2012/04/14 08:31:03 $ $Revision: 1.93 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
+34 -19
View File
@@ -189,34 +189,35 @@
#define S_ss2 72
#define S_ss3 73
#define S_ss4 74
#define S_poisoncloud 75
/* The 8 swallow symbols. Do NOT separate. To change order or add, see */
/* the function swallow_to_glyph() in display.c. */
#define S_sw_tl 75 /* swallow top left [1] */
#define S_sw_tc 76 /* swallow top center [2] Order: */
#define S_sw_tr 77 /* swallow top right [3] */
#define S_sw_ml 78 /* swallow middle left [4] 1 2 3 */
#define S_sw_mr 79 /* swallow middle right [6] 4 5 6 */
#define S_sw_bl 80 /* swallow bottom left [7] 7 8 9 */
#define S_sw_bc 81 /* swallow bottom center [8] */
#define S_sw_br 82 /* swallow bottom right [9] */
#define S_sw_tl 76 /* swallow top left [1] */
#define S_sw_tc 77 /* swallow top center [2] Order: */
#define S_sw_tr 78 /* swallow top right [3] */
#define S_sw_ml 79 /* swallow middle left [4] 1 2 3 */
#define S_sw_mr 80 /* swallow middle right [6] 4 5 6 */
#define S_sw_bl 81 /* swallow bottom left [7] 7 8 9 */
#define S_sw_bc 82 /* swallow bottom center [8] */
#define S_sw_br 83 /* swallow bottom right [9] */
#define S_explode1 83 /* explosion top left */
#define S_explode2 84 /* explosion top center */
#define S_explode3 85 /* explosion top right Ex. */
#define S_explode4 86 /* explosion middle left */
#define S_explode5 87 /* explosion middle center /-\ */
#define S_explode6 88 /* explosion middle right |@| */
#define S_explode7 89 /* explosion bottom left \-/ */
#define S_explode8 90 /* explosion bottom center */
#define S_explode9 91 /* explosion bottom right */
#define S_explode1 84 /* explosion top left */
#define S_explode2 85 /* explosion top center */
#define S_explode3 86 /* explosion top right Ex. */
#define S_explode4 87 /* explosion middle left */
#define S_explode5 88 /* explosion middle center /-\ */
#define S_explode6 89 /* explosion middle right |@| */
#define S_explode7 90 /* explosion bottom left \-/ */
#define S_explode8 91 /* explosion bottom center */
#define S_explode9 92 /* explosion bottom right */
/* end effects */
#define MAXPCHARS 92 /* maximum number of mapped characters */
#define MAXPCHARS 93 /* maximum number of mapped characters */
#define MAXDCHARS 41 /* maximum of mapped dungeon characters */
#define MAXTCHARS 22 /* maximum of mapped trap characters */
#define MAXECHARS 29 /* maximum of mapped effects characters */
#define MAXECHARS 30 /* maximum of mapped effects characters */
#define MAXEXPCHARS 9 /* number of explosion characters */
struct symdef {
@@ -291,6 +292,7 @@ extern struct symsetentry symset[NUM_GRAPHICS]; /* from drawing.c */
#define D_CLOSED 4
#define D_LOCKED 8
#define D_TRAPPED 16
#define D_SECRET 32 /* only used by sp_lev.c, NOT in rm-struct */
/*
* Some altars are considered as shrines, so we need a flag.
@@ -393,6 +395,19 @@ struct rm {
Bitfield(candig,1); /* Exception to Can_dig_down; was a trapdoor */
};
#define SET_TYPLIT(x,y,ttyp,llit) \
{ \
if ((x) >= 0 && (y) >= 0 && (x) < COLNO && (y) < ROWNO) { \
if ((ttyp) < MAX_TYPE) levl[(x)][(y)].typ = (ttyp); \
if ((ttyp) == LAVAPOOL) levl[(x)][(y)].lit = 1; \
else if ((schar)(llit) != -2) { \
if ((schar)(llit) == -1) levl[(x)][(y)].lit = rn2(2); \
else levl[(x)][(y)].lit = (llit); \
} \
} \
}
/*
* Add wall angle viewing by defining "modes" for each wall type. Each
* mode describes which parts of a wall are finished (seen as as wall)
+382 -158
View File
@@ -19,92 +19,378 @@
#define MAP_Y_LIM 21
/* Per level flags */
#define NOTELEPORT 1
#define HARDFLOOR 2
#define NOMMAP 4
#define SHORTSIGHTED 8
#define ARBOREAL 16
#define NOTELEPORT 0x00000001L
#define HARDFLOOR 0x00000002L
#define NOMMAP 0x00000004L
#define SHORTSIGHTED 0x00000008L
#define ARBOREAL 0x00000010L
#define MAZELEVEL 0x00000020L
#define PREMAPPED 0x00000040L /* premapped level & sokoban rules */
#define SHROUD 0x00000080L
#define GRAVEYARD 0x00000100L
#define ICEDPOOLS 0x00000200L /* for ice locations: ICED_POOL vs ICED_MOAT */
#define SOLIDIFY 0x00000400L /* outer areas are nondiggable & nonpasswall */
/* special level types */
#define SP_LEV_ROOMS 1
#define SP_LEV_MAZE 2
/* different level layout initializers */
#define LVLINIT_NONE 0
#define LVLINIT_SOLIDFILL 1
#define LVLINIT_MAZEGRID 2
#define LVLINIT_MINES 3
#define LVLINIT_ROGUE 4
/* max. layers of object containment */
#define MAX_CONTAINMENT 10
/* max. # of random registers */
#define MAX_REGISTERS 10
/* max. nested depth of subrooms */
#define MAX_NESTED_ROOMS 5
/* max. # of opcodes per special level */
#define SPCODER_MAX_RUNTIME 65536
/* Opcodes for creating the level
* If you change these, also change opcodestr[] in util/lev_main.c
*/
enum opcode_defs {
SPO_NULL = 0,
SPO_MESSAGE,
SPO_MONSTER,
SPO_OBJECT,
SPO_ENGRAVING,
SPO_ROOM,
SPO_SUBROOM,
SPO_DOOR,
SPO_STAIR,
SPO_LADDER,
SPO_ALTAR,
SPO_FOUNTAIN,
SPO_SINK,
SPO_POOL,
SPO_TRAP,
SPO_GOLD,
SPO_CORRIDOR,
SPO_LEVREGION,
SPO_DRAWBRIDGE,
SPO_MAZEWALK,
SPO_NON_DIGGABLE,
SPO_NON_PASSWALL,
SPO_WALLIFY,
SPO_MAP,
SPO_ROOM_DOOR,
SPO_REGION,
SPO_MINERALIZE,
SPO_CMP,
SPO_JMP,
SPO_JL,
SPO_JLE,
SPO_JG,
SPO_JGE,
SPO_JE,
SPO_JNE,
SPO_TERRAIN,
SPO_REPLACETERRAIN,
SPO_EXIT,
SPO_ENDROOM,
SPO_POP_CONTAINER,
SPO_PUSH,
SPO_POP,
SPO_RN2,
SPO_DEC,
SPO_INC,
SPO_MATH_ADD,
SPO_MATH_SUB,
SPO_MATH_MUL,
SPO_MATH_DIV,
SPO_MATH_MOD,
SPO_MATH_SIGN,
SPO_COPY,
SPO_END_MONINVENT,
SPO_GRAVE,
SPO_FRAME_PUSH,
SPO_FRAME_POP,
SPO_CALL,
SPO_RETURN,
SPO_INITLEVEL,
SPO_LEVEL_FLAGS,
SPO_VAR_INIT, /* variable_name data */
SPO_SHUFFLE_ARRAY,
SPO_DICE,
SPO_SEL_ADD,
SPO_SEL_POINT,
SPO_SEL_RECT,
SPO_SEL_FILLRECT,
SPO_SEL_LINE,
SPO_SEL_RNDLINE,
SPO_SEL_GROW,
SPO_SEL_FLOOD,
SPO_SEL_RNDCOORD,
SPO_SEL_ELLIPSE,
SPO_SEL_FILTER,
SPO_SEL_GRADIENT,
SPO_SEL_COMPLEMENT,
MAX_SP_OPCODES
};
/* MONSTER and OBJECT can take a variable number of parameters,
* they also pop different # of values from the stack. So,
* first we pop a value that tells what the _next_ value will
* mean.
*/
/* MONSTER */
#define SP_M_V_PEACEFUL 0
#define SP_M_V_ALIGN 1
#define SP_M_V_ASLEEP 2
#define SP_M_V_APPEAR 3
#define SP_M_V_NAME 4
#define SP_M_V_FEMALE 5
#define SP_M_V_INVIS 6
#define SP_M_V_CANCELLED 7
#define SP_M_V_REVIVED 8
#define SP_M_V_AVENGE 9
#define SP_M_V_FLEEING 10
#define SP_M_V_BLINDED 11
#define SP_M_V_PARALYZED 12
#define SP_M_V_STUNNED 13
#define SP_M_V_CONFUSED 14
#define SP_M_V_SEENTRAPS 15
#define SP_M_V_END 16 /* end of variable parameters */
/* OBJECT */
#define SP_O_V_SPE 0
#define SP_O_V_CURSE 1
#define SP_O_V_CORPSENM 2
#define SP_O_V_NAME 3
#define SP_O_V_QUAN 4
#define SP_O_V_BURIED 5
#define SP_O_V_LIT 6
#define SP_O_V_ERODED 7
#define SP_O_V_LOCKED 8
#define SP_O_V_TRAPPED 9
#define SP_O_V_RECHARGED 10
#define SP_O_V_INVIS 11
#define SP_O_V_GREASED 12
#define SP_O_V_BROKEN 13
#define SP_O_V_COORD 14
#define SP_O_V_END 15 /* end of variable parameters */
/* When creating objects, we need to know whether
* it's a container and/or contents.
*/
#define SP_OBJ_CONTENT 0x1
#define SP_OBJ_CONTAINER 0x2
/* SPO_FILTER types */
#define SPOFILTER_PERCENT 0
#define SPOFILTER_SELECTION 1
#define SPOFILTER_MAPCHAR 2
/* gradient filter types */
#define SEL_GRADIENT_RADIAL 0
#define SEL_GRADIENT_SQUARE 1
/* variable types */
#define SPOVAR_NULL 0x00
#define SPOVAR_INT 0x01 /* l */
#define SPOVAR_STRING 0x02 /* str */
#define SPOVAR_VARIABLE 0x03 /* str (contains the variable name) */
#define SPOVAR_COORD 0x04 /* coordinate, encoded in l; use SP_COORD_X() and SP_COORD_Y() */
#define SPOVAR_REGION 0x05 /* region, encoded in l; use SP_REGION_X1() etc */
#define SPOVAR_MAPCHAR 0x06 /* map char, in l */
#define SPOVAR_MONST 0x07 /* monster class & specific monster, encoded in l; use SP_MONST_... */
#define SPOVAR_OBJ 0x08 /* object class & specific object type, encoded in l; use SP_OBJ_... */
#define SPOVAR_SEL 0x09 /* selection. char[COLNO][ROWNO] in str */
#define SPOVAR_ARRAY 0x40 /* used in splev_var & lc_vardefs, not in opvar */
#define SP_COORD_IS_RANDOM 0x01000000
/* Humidity flags for get_location() and friends, used with SP_COORD_PACK_RANDOM() */
#define DRY 0x1
#define WET 0x2
#define HOT 0x4
#define SOLID 0x8
#define ANY_LOC 0x10 /* even outside the level */
#define NO_LOC_WARN 0x20 /* no complaints and set x & y to -1, if no loc */
#define SP_COORD_X(l) (l & 0xff)
#define SP_COORD_Y(l) ((l >> 16) & 0xff)
#define SP_COORD_PACK(x,y) ((( x ) & 0xff) + ((( y ) & 0xff) << 16))
#define SP_COORD_PACK_RANDOM(f) (SP_COORD_IS_RANDOM | (f))
#define SP_REGION_X1(l) (l & 0xff)
#define SP_REGION_Y1(l) ((l >> 8) & 0xff)
#define SP_REGION_X2(l) ((l >> 16) & 0xff)
#define SP_REGION_Y2(l) ((l >> 24) & 0xff)
#define SP_REGION_PACK(x1,y1,x2,y2) ((( x1 ) & 0xff) + ((( y1 ) & 0xff) << 8) + ((( x2 ) & 0xff) << 16) + ((( y2 ) & 0xff) << 24))
#define SP_MONST_CLASS(l) (l & 0xff)
#define SP_MONST_PM(l) ((l >> 8) & 0xffff)
#define SP_MONST_PACK(m,c) ((( m ) << 8) + ((char)( c )))
#define SP_OBJ_CLASS(l) (l & 0xff)
#define SP_OBJ_TYP(l) ((l >> 8) & 0xffff)
#define SP_OBJ_PACK(o,c) ((( o ) << 8) + ((char)( c )))
#define SP_MAPCHAR_TYP(l) (l & 0xff)
#define SP_MAPCHAR_LIT(l) ((l >> 8) & 0xff)
#define SP_MAPCHAR_PACK(typ,lit) ((( lit ) << 8) + ((char)( typ )))
struct opvar {
xchar spovartyp; /* one of SPOVAR_foo */
union {
char *str;
long l;
} vardata;
};
struct splev_var {
struct splev_var *next;
char *name;
xchar svtyp; /* SPOVAR_foo */
union {
struct opvar *value;
struct opvar **arrayvalues;
} data;
long array_len;
};
struct splevstack {
long depth;
long depth_alloc;
struct opvar **stackdata;
};
struct sp_frame {
struct sp_frame *next;
struct splevstack *stack;
struct splev_var *variables;
long n_opcode;
};
struct sp_coder {
struct splevstack *stack;
struct sp_frame *frame;
int premapped;
boolean solidify;
struct mkroom *croom;
struct mkroom *tmproomlist[MAX_NESTED_ROOMS+1];
boolean failed_room[MAX_NESTED_ROOMS+1];
int n_subroom;
boolean exit_script;
int lvl_is_joined;
int opcode; /* current opcode */
struct opvar *opdat; /* current push data (req. opcode == SPO_PUSH) */
};
/* special level coder CPU flags */
#define SP_CPUFLAG_LT 1
#define SP_CPUFLAG_GT 2
#define SP_CPUFLAG_EQ 4
#define SP_CPUFLAG_ZERO 8
/*
* Structures manipulated by the special levels loader & compiler
*/
#define packed_coord long
typedef struct {
xchar is_random;
long getloc_flags;
int x, y;
} unpacked_coord;
typedef struct {
int cmp_what;
int cmp_val;
} opcmp;
typedef struct {
long jmp_target;
} opjmp;
typedef union str_or_len {
char *str;
int len;
} Str_or_Len;
typedef struct {
xchar init_style; /* one of LVLINIT_foo */
long flags;
schar filling;
boolean init_present, padding;
char fg, bg;
boolean smoothed, joined;
xchar lit, walled;
boolean icedpools; /* for ice locations: ICED_POOL vs ICED_MOAT */
boolean icedpools;
} lev_init;
typedef struct {
xchar x, y, mask;
} door;
typedef struct {
xchar wall, pos, secret, mask;
} room_door;
typedef struct {
xchar x, y, chance, type;
packed_coord coord;
xchar x, y, type;
} trap;
typedef struct {
Str_or_Len name, appear_as;
short id;
aligntyp align;
xchar x, y, chance, class, appear;
packed_coord coord;
xchar x, y, class, appear;
schar peaceful, asleep;
short female, invis, cancelled, revived, avenge, fleeing, blinded, paralyzed, stunned, confused;
long seentraps;
short has_invent;
} monster;
typedef struct {
Str_or_Len name;
int corpsenm;
short id, spe;
xchar x, y, chance, class, containment;
packed_coord coord;
xchar x, y, class, containment;
schar curse_state;
int quan;
short buried;
short lit;
short eroded, locked, trapped, recharged, invis, greased, broken;
} object;
typedef struct {
packed_coord coord;
xchar x, y;
aligntyp align;
xchar shrine;
} altar;
typedef struct {
xchar x, y, dir, db_open;
} drawbridge;
typedef struct {
xchar x, y, dir;
} walk;
typedef struct {
xchar x1, y1, x2, y2;
} digpos;
typedef struct {
xchar x, y, up;
} lad;
typedef struct {
xchar x, y, up;
} stair;
typedef struct {
xchar x1, y1, x2, y2;
xchar rtype, rlit, rirreg;
} region;
typedef struct {
xchar ter, tlit;
} terrain;
typedef struct {
xchar chance;
xchar x1,y1,x2,y2;
xchar fromter, toter, tolit;
} replaceterrain;
/* values for rtype are defined in dungeon.h */
typedef struct {
struct { xchar x1, y1, x2, y2; } inarea;
@@ -114,116 +400,6 @@ typedef struct {
Str_or_Len rname;
} lev_region;
typedef struct {
xchar x, y;
int amount;
} gold;
typedef struct {
xchar x, y;
Str_or_Len engr;
xchar etype;
} engraving;
typedef struct {
xchar x, y;
} fountain;
typedef struct {
xchar x, y;
} sink;
typedef struct {
xchar x, y;
} pool;
typedef struct {
char halign, valign;
char xsize, ysize;
char **map;
char nrobjects;
char *robjects;
char nloc;
char *rloc_x;
char *rloc_y;
char nrmonst;
char *rmonst;
char nreg;
region **regions;
char nlreg;
lev_region **lregions;
char ndoor;
door **doors;
char ntrap;
trap **traps;
char nmonster;
monster **monsters;
char nobject;
object **objects;
char ndrawbridge;
drawbridge **drawbridges;
char nwalk;
walk **walks;
char ndig;
digpos **digs;
char npass;
digpos **passs;
char nlad;
lad **lads;
char nstair;
stair **stairs;
char naltar;
altar **altars;
char ngold;
gold **golds;
char nengraving;
engraving **engravings;
char nfountain;
fountain **fountains;
} mazepart;
typedef struct {
long flags;
lev_init init_lev;
schar filling;
char numpart;
mazepart **parts;
} specialmaze;
typedef struct _room {
char *name;
char *parent;
xchar x, y, w, h;
xchar xalign, yalign;
xchar rtype, chance, rlit, filled;
char ndoor;
room_door **doors;
char ntrap;
trap **traps;
char nmonster;
monster **monsters;
char nobject;
object **objects;
char naltar;
altar **altars;
char nstair;
stair **stairs;
char ngold;
gold **golds;
char nengraving;
engraving **engravings;
char nfountain;
fountain **fountains;
char nsink;
sink **sinks;
char npool;
pool **pools;
/* These three fields are only used when loading the level... */
int nsubroom;
struct _room *subrooms[MAX_SUBROOMS];
struct mkroom *mkr;
} room;
typedef struct {
struct {
xchar room;
@@ -232,18 +408,66 @@ typedef struct {
} src, dest;
} corridor;
/* used only by lev_comp */
typedef struct _room {
Str_or_Len name;
Str_or_Len parent;
xchar x, y, w, h;
xchar xalign, yalign;
xchar rtype, chance, rlit, filled, joined;
} room;
typedef struct {
long flags;
lev_init init_lev;
char nrobjects;
char *robjects;
char nrmonst;
char *rmonst;
xchar nroom;
room **rooms;
xchar ncorr;
corridor **corrs;
} splev;
schar zaligntyp;
schar keep_region;
schar halign, valign;
char xsize, ysize;
char **map;
} mazepart;
typedef struct {
int opcode;
struct opvar *opdat;
} _opcode;
typedef struct {
_opcode *opcodes;
long n_opcodes;
} sp_lev;
typedef struct {
xchar x, y, direction, count, lit;
char typ;
} spill;
/* only used by lev_comp */
struct lc_funcdefs_parm {
char *name;
char parmtype;
struct lc_funcdefs_parm *next;
};
struct lc_funcdefs {
struct lc_funcdefs *next;
char *name;
long addr;
sp_lev code;
long n_called;
struct lc_funcdefs_parm *params;
long n_params;
};
struct lc_vardefs {
struct lc_vardefs *next;
char *name;
long var_type; /* SPOVAR_foo */
long n_used;
};
struct lc_breakdef {
struct lc_breakdef *next;
struct opvar *breakpoint;
int break_depth;
};
#endif /* SP_LEV_H */
+1
View File
@@ -95,6 +95,7 @@ struct u_conduct { /* number of times... */
struct u_roleplay {
boolean blind; /* permanently blind */
boolean nudist; /* has not worn any armor, ever */
long numbones; /* # of bones files loaded */
};
/*** Unified structure containing role information ***/
+2
View File
@@ -294,6 +294,8 @@ boolean resuming;
/* underwater and waterlevel vision are done here */
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
movebubbles();
else if (Is_firelevel(&u.uz))
fumaroles();
else if (Underwater)
under_water(0);
/* vision while buried done here */
+5 -2
View File
@@ -37,6 +37,8 @@ STATIC_DCL boolean FDECL(figurine_location_checks,
(struct obj *, coord *, BOOLEAN_P));
STATIC_DCL void FDECL(add_class, (char *, CHAR_P));
STATIC_DCL void FDECL(setapplyclasses, (char *));
STATIC_DCL boolean FDECL(is_valid_jump_pos, (int, int, int, BOOLEAN_P));
STATIC_DCL boolean FDECL(find_poleable_mon, (coord *, int, int));
#ifdef AMIGA
void FDECL( amii_speaker, ( struct obj *, char *, int ) );
@@ -1401,7 +1403,8 @@ int state;
for (dy = -4; dy <= 4; dy++) {
x = dx + (int)u.ux;
y = dy + (int)u.uy;
if (isok(x,y) && is_valid_jump_pos(x,y, jumping_is_magic, FALSE))
if (isok(x,y) && ACCESSIBLE(levl[x][y].typ) &&
is_valid_jump_pos(x,y, jumping_is_magic, FALSE))
tmp_at(x,y);
}
} else {
@@ -2609,7 +2612,7 @@ int state;
for (dy = -4; dy <= 4; dy++) {
x = dx + (int)u.ux;
y = dy + (int)u.uy;
if (isok(x, y) &&
if (isok(x, y) && ACCESSIBLE(levl[x][y].typ) &&
distu(x, y) >= polearm_range_min &&
distu(x, y) <= polearm_range_max) {
tmp_at(x, y);
+1
View File
@@ -597,6 +597,7 @@ getbones()
}
(void) close(fd);
sanitize_engravings();
u.uroleplay.numbones++;
if(wizard) {
if(yn("Unlink bones?") == 'n') {
+5 -3
View File
@@ -103,9 +103,9 @@ NEARDATA struct multishot m_shot = { 0, 0, STRANGE_OBJECT, FALSE };
NEARDATA dungeon dungeons[MAXDUNGEON]; /* ini'ed by init_dungeon() */
NEARDATA s_level *sp_levchn;
NEARDATA stairway upstair = { 0, 0 }, dnstair = { 0, 0 };
NEARDATA stairway upladder = { 0, 0 }, dnladder = { 0, 0 };
NEARDATA stairway sstairs = { 0, 0 };
NEARDATA stairway upstair = { 0, 0, { 0,0 }, 0 }, dnstair = { 0, 0, { 0,0 }, 0 };
NEARDATA stairway upladder = { 0, 0, { 0,0 }, 0 }, dnladder = { 0, 0, { 0,0 }, 0 };
NEARDATA stairway sstairs = { 0, 0, { 0,0 }, 0 };
NEARDATA dest_area updest = { 0, 0, 0, 0, 0, 0, 0, 0 };
NEARDATA dest_area dndest = { 0, 0, 0, 0, 0, 0, 0, 0 };
NEARDATA coord inv_pos = { 0, 0 };
@@ -219,6 +219,8 @@ NEARDATA struct c_color_names c_color_names = {
"white"
};
struct menucoloring *menu_colorings = NULL;
const char *c_obj_colors[] = {
"black", /* CLR_BLACK */
"red", /* CLR_RED */
+6 -3
View File
@@ -1684,13 +1684,15 @@ buried_ball_to_freedom()
/* move objects from fobj/nexthere lists to buriedobjlist, keeping position */
/* information */
struct obj *
bury_an_obj(otmp)
bury_an_obj(otmp, dealloced)
struct obj *otmp;
boolean *dealloced;
{
struct obj *otmp2;
boolean under_ice;
debugpline1("bury_an_obj: %s", xname(otmp));
if (dealloced) *dealloced = FALSE;
if (otmp == uball) {
unpunish();
u.utrap = rn1(50,20);
@@ -1721,6 +1723,7 @@ bury_an_obj(otmp)
under_ice = is_ice(otmp->ox, otmp->oy);
if (otmp->otyp == ROCK && !under_ice) {
/* merges into burying material */
if (dealloced) *dealloced = TRUE;
obfree(otmp, (struct obj *)0);
return(otmp2);
}
@@ -1755,7 +1758,7 @@ int x, y;
if(level.objects[x][y] != (struct obj *)0)
debugpline2("bury_objs: at <%d,%d>", x, y);
for (otmp = level.objects[x][y]; otmp; otmp = otmp2)
otmp2 = bury_an_obj(otmp);
otmp2 = bury_an_obj(otmp, NULL);
/* don't expect any engravings here, but just in case */
del_engr_at(x, y);
@@ -1815,7 +1818,7 @@ long timeout UNUSED;
/* Everything which can be held in a container can also be
buried, so bury_an_obj's use of obj_extract_self insures
that Has_contents(obj) will eventually become false. */
(void)bury_an_obj(obj->cobj);
(void)bury_an_obj(obj->cobj, NULL);
}
obj_extract_self(obj);
obfree(obj, (struct obj *) 0);
+10 -3
View File
@@ -674,7 +674,12 @@ newsym(x,y)
*/
lev->waslit = (lev->lit!=0); /* remember lit condition */
if (reg != NULL && ACCESSIBLE(lev->typ)) {
/* normal region shown only on accessible positions, but poison clouds
* also shown above lava, pools and moats.
*/
if (reg != NULL && (ACCESSIBLE(lev->typ) ||
(reg->glyph == cmap_to_glyph(S_poisoncloud) &&
(lev->typ == LAVAPOOL || lev->typ == POOL || lev->typ == MOAT)))) {
show_region(reg,x,y);
return;
}
@@ -824,8 +829,10 @@ shieldeff(x,y)
* DISP_ALWAYS- Like DISP_FLASH, but vision is not taken into account.
*/
#define TMP_AT_MAX_GLYPHS (COLNO*2)
static struct tmp_glyph {
coord saved[COLNO]; /* previously updated positions */
coord saved[TMP_AT_MAX_GLYPHS]; /* previously updated positions */
int sidx; /* index of next unused slot in saved[] */
int style; /* either DISP_BEAM or DISP_FLASH or DISP_ALWAYS */
int glyph; /* glyph to use when printing */
@@ -895,7 +902,7 @@ tmp_at(x, y)
default: /* do it */
if (tglyph->style == DISP_BEAM || tglyph->style == DISP_ALL) {
if (tglyph->style != DISP_ALL && !cansee(x,y)) break;
if (tglyph->sidx >= COLNO) break; /* too many locations */
if (tglyph->sidx >= TMP_AT_MAX_GLYPHS) break; /* too many locations */
/* save pos for later erasing */
tglyph->saved[tglyph->sidx].x = x;
tglyph->saved[tglyph->sidx].y = y;
+2
View File
@@ -1288,6 +1288,8 @@ boolean at_stairs, falling, portal;
/* initial movement of bubbles just before vision_recalc */
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
movebubbles();
else if (Is_firelevel(&u.uz))
fumaroles();
if (level_info[new_ledger].flags & FORGOTTEN) {
forget_map(ALL_MAP); /* forget the map */
+2
View File
@@ -211,6 +211,7 @@ const struct symdef defsyms[MAXPCHARS] = {
{'#', "", C(HI_ZAP)},
{'@', "", C(HI_ZAP)},
{'*', "", C(HI_ZAP)},
{'#', "poison cloud", C(CLR_BRIGHT_GREEN)}, /* [part of] a poison cloud */
{'/', "", C(CLR_GREEN)}, /* swallow top left */
{'-', "", C(CLR_GREEN)}, /* swallow top center */
{'\\', "", C(CLR_GREEN)}, /* swallow top right */
@@ -614,6 +615,7 @@ struct symparse loadsyms[] = {
{SYM_PCHAR, S_hcdbridge, "S_hcdbridge"},
{SYM_PCHAR, S_air, "S_air"},
{SYM_PCHAR, S_cloud, "S_cloud"},
{SYM_PCHAR, S_poisoncloud, "S_poisoncloud"},
{SYM_PCHAR, S_water, "S_water"},
{SYM_PCHAR, S_arrow_trap, "S_arrow_trap"},
{SYM_PCHAR, S_dart_trap, "S_dart_trap"},
+2
View File
@@ -2290,6 +2290,8 @@ int src;
} else if (match_varname(buf, "BOULDER", 3)) {
(void) get_uchars(fp, buf, bufp, &iflags.bouldersym, TRUE,
1, "BOULDER");
} else if (match_varname(buf, "MENUCOLOR", 9)) {
(void) add_menu_coloring(bufp);
} else if (match_varname(buf, "WARNINGS", 5)) {
(void) get_uchars(fp, buf, bufp, translate, FALSE,
WARNCOUNT, "WARNINGS");
+22
View File
@@ -432,6 +432,28 @@ dist2(x0, y0, x1, y1) /* square of euclidean distance between pair of pts */
return dx * dx + dy * dy;
}
/* Integer square root function without using floating point.
* This could be replaced by a faster algorithm, but has not been because:
* + the simple algorithm is easy to read
* + this algorithm does not require 64-bit support
* + in current usage, the values passed to isqrt() are not really that
* large, so the performance difference is negligible
* + isqrt() is used in only few places, which are not bottle-necks
*/
int
isqrt(val)
int val;
{
int rt = 0;
int odd = 1;
while(val >= odd) {
val = val-odd;
odd = odd+2;
rt = rt + 1;
}
return rt;
}
boolean
online2(x0, y0, x1, y1) /* are two points lined up (on a straight line)? */
int x0, y0, x1, y1;
+9 -7
View File
@@ -122,13 +122,15 @@ register int x, y, n;
*/
if (enexto(&mm, mm.x, mm.y, mtmp->data)) {
mon = makemon(mtmp->data, mm.x, mm.y, NO_MM_FLAGS);
mon->mpeaceful = FALSE;
mon->mavenge = 0;
set_malign(mon);
/* Undo the second peace_minded() check in makemon(); if the
* monster turned out to be peaceful the first time we
* didn't create it at all; we don't want a second check.
*/
if (mon) {
mon->mpeaceful = FALSE;
mon->mavenge = 0;
set_malign(mon);
/* Undo the second peace_minded() check in makemon(); if the
* monster turned out to be peaceful the first time we
* didn't create it at all; we don't want a second check.
*/
}
}
}
}
+1
View File
@@ -2558,6 +2558,7 @@ cloneu()
if (u.mh <= 1) return(struct monst *)0;
if (mvitals[mndx].mvflags & G_EXTINCT) return(struct monst *)0;
mon = makemon(youmonst.data, u.ux, u.uy, NO_MINVENT|MM_EDOG);
if (!mon) return NULL;
mon->mcloned = 1;
mon = christen_monst(mon, plname);
initedog(mon);
+25 -19
View File
@@ -17,7 +17,6 @@ STATIC_DCL void FDECL(mkgrave,(struct mkroom *));
STATIC_DCL void NDECL(makevtele);
STATIC_DCL void NDECL(clear_level_structures);
STATIC_DCL void NDECL(makelevel);
STATIC_DCL void NDECL(mineralize);
STATIC_DCL boolean FDECL(bydoor,(XCHAR_P,XCHAR_P));
STATIC_DCL struct mkroom *FDECL(find_branch_room, (coord *));
STATIC_DCL struct mkroom *FDECL(pos_to_room, (XCHAR_P, XCHAR_P));
@@ -538,7 +537,7 @@ STATIC_OVL void
clear_level_structures()
{
static struct rm zerorm = { cmap_to_glyph(S_stone),
0, 0, 0, 0, 0, 0, 0, 0 };
0, 0, 0, 0, 0, 0, 0, 0, 0 };
register int x,y;
register struct rm *lev;
@@ -814,43 +813,50 @@ skip0:
* Place deposits of minerals (gold and misc gems) in the stone
* surrounding the rooms on the map.
* Also place kelp in water.
* mineralize(-1, -1, -1, -1, FALSE); => "default" behaviour
*/
STATIC_OVL void
mineralize()
void
mineralize(kelp_pool, kelp_moat, goldprob, gemprob, skip_lvl_checks)
int kelp_pool, kelp_moat, goldprob, gemprob;
boolean skip_lvl_checks;
{
s_level *sp;
struct obj *otmp;
int goldprob, gemprob, x, y, cnt;
int x, y, cnt;
if (kelp_pool < 0) kelp_pool = 10;
if (kelp_moat < 0) kelp_moat = 30;
/* Place kelp, except on the plane of water */
if (In_endgame(&u.uz)) return;
if (!skip_lvl_checks && In_endgame(&u.uz)) return;
for (x = 2; x < (COLNO - 2); x++)
for (y = 1; y < (ROWNO - 1); y++)
if ((levl[x][y].typ == POOL && !rn2(10)) ||
(levl[x][y].typ == MOAT && !rn2(30)))
if ((kelp_pool && levl[x][y].typ == POOL && !rn2(kelp_pool)) ||
(kelp_moat && levl[x][y].typ == MOAT && !rn2(kelp_moat)))
(void) mksobj_at(KELP_FROND, x, y, TRUE, FALSE);
/* determine if it is even allowed;
almost all special levels are excluded */
if (In_hell(&u.uz) || In_V_tower(&u.uz) ||
if (!skip_lvl_checks && (In_hell(&u.uz) || In_V_tower(&u.uz) ||
Is_rogue_level(&u.uz) ||
level.flags.arboreal ||
((sp = Is_special(&u.uz)) != 0 && !Is_oracle_level(&u.uz)
&& (!In_mines(&u.uz) || sp->flags.town)
)) return;
))) return;
/* basic level-related probabilities */
goldprob = 20 + depth(&u.uz) / 3;
gemprob = goldprob / 4;
if (goldprob < 0) goldprob = 20 + depth(&u.uz) / 3;
if (gemprob < 0) gemprob = goldprob / 4;
/* mines have ***MORE*** goodies - otherwise why mine? */
if (In_mines(&u.uz)) {
goldprob *= 2;
gemprob *= 3;
} else if (In_quest(&u.uz)) {
goldprob /= 4;
gemprob /= 6;
if (!skip_lvl_checks) {
if (In_mines(&u.uz)) {
goldprob *= 2;
gemprob *= 3;
} else if (In_quest(&u.uz)) {
goldprob /= 4;
gemprob /= 6;
}
}
/*
@@ -905,7 +911,7 @@ mklev()
in_mklev = TRUE;
makelevel();
bound_digging();
mineralize();
mineralize(-1, -1, -1, -1, FALSE);
in_mklev = FALSE;
/* has_morgue gets cleared once morgue is entered; graveyard stays
set (graveyard might already be set even when has_morgue is clear
+44 -30
View File
@@ -407,10 +407,6 @@ fixup_special()
place_lregion(0,0,0,0,0,0,0,0,LR_BRANCH,(d_level *)0);
}
/* KMH -- Sokoban levels */
if(In_sokoban(&u.uz))
sokoban_detect();
/* Still need to add some stuff to level file */
if (Is_medusa_level(&u.uz)) {
struct obj *otmp;
@@ -557,7 +553,7 @@ register const char *s;
#endif
maze0xy(&mm);
walkfrom((int) mm.x, (int) mm.y);
walkfrom((int) mm.x, (int) mm.y, 0);
/* put a boulder at the maze center */
(void) mksobj_at(BOULDER, (int) mm.x, (int) mm.y, TRUE, FALSE);
@@ -645,14 +641,21 @@ register const char *s;
* that is totally safe.
*/
void
walkfrom(x,y)
walkfrom(x,y,typ)
int x,y;
schar typ;
{
#define CELLS (ROWNO * COLNO) / 4 /* a maze cell is 4 squares */
char mazex[CELLS + 1], mazey[CELLS + 1]; /* char's are OK */
int q, a, dir, pos;
int dirs[4];
#ifndef WALLIFIED_MAZE
if (!typ) typ = CORR;
#else
if (!typ) typ = ROOM;
#endif
pos = 1;
mazex[pos] = (char) x;
mazey[pos] = (char) y;
@@ -661,11 +664,7 @@ int x,y;
y = (int) mazey[pos];
if(!IS_DOOR(levl[x][y].typ)) {
/* might still be on edge of MAP, so don't overwrite */
#ifndef WALLIFIED_MAZE
levl[x][y].typ = CORR;
#else
levl[x][y].typ = ROOM;
#endif
levl[x][y].typ = typ;
levl[x][y].flags = 0;
}
q = 0;
@@ -676,11 +675,7 @@ int x,y;
else {
dir = dirs[rn2(q)];
move(&x, &y, dir);
#ifndef WALLIFIED_MAZE
levl[x][y].typ = CORR;
#else
levl[x][y].typ = ROOM;
#endif
levl[x][y].typ = typ;
move(&x, &y, dir);
pos++;
if (pos > CELLS)
@@ -693,19 +688,22 @@ int x,y;
#else
void
walkfrom(x,y)
walkfrom(x,y,typ)
int x,y;
schar typ;
{
register int q,a,dir;
int dirs[4];
#ifndef WALLIFIED_MAZE
if (!typ) typ = CORR;
#else
if (!typ) typ = ROOM;
#endif
if(!IS_DOOR(levl[x][y].typ)) {
/* might still be on edge of MAP, so don't overwrite */
#ifndef WALLIFIED_MAZE
levl[x][y].typ = CORR;
#else
levl[x][y].typ = ROOM;
#endif
levl[x][y].typ = typ;
levl[x][y].flags = 0;
}
@@ -716,13 +714,9 @@ int x,y;
if(!q) return;
dir = dirs[rn2(q)];
move(&x,&y,dir);
#ifndef WALLIFIED_MAZE
levl[x][y].typ = CORR;
#else
levl[x][y].typ = ROOM;
#endif
levl[x][y].typ = typ;
move(&x,&y,dir);
walkfrom(x,y);
walkfrom(x,y,typ);
}
}
#endif /* MICRO */
@@ -885,6 +879,26 @@ register xchar x, y, todnum, todlevel;
return;
}
void
fumaroles()
{
xchar n;
boolean snd = FALSE, loud = FALSE;
for (n = rn2(3)+2; n; n--) {
xchar x = rn1(COLNO-4,3);
xchar y = rn1(ROWNO-4,3);
struct trap *ttmp = t_at(x,y);
if (levl[x][y].typ == LAVAPOOL) {
NhRegion *r = create_gas_cloud(x,y, 4+rn2(5), rn1(10,5));
clear_heros_fault(r);
snd = TRUE;
if (distu(x,y) < 15) loud = TRUE;
}
}
if (snd && !Deaf)
Norep("You hear a %swhoosh!", loud ? "loud " : "");
}
/*
* Special waterlevel stuff in endgame (TH).
*
@@ -922,9 +936,9 @@ movebubbles()
register int x, y, i, j;
struct trap *btrap;
static const struct rm water_pos =
{ cmap_to_glyph(S_water), WATER, 0, 0, 0, 0, 0, 0, 0 };
{ cmap_to_glyph(S_water), WATER, 0, 0, 0, 0, 0, 0, 0, 0 };
static const struct rm air_pos =
{ cmap_to_glyph(S_cloud), AIR, 0, 0, 0, 1, 0, 0, 0 };
{ cmap_to_glyph(S_cloud), AIR, 0, 0, 0, 1, 0, 0, 0, 0 };
/* set up the portal the first time bubbles are moved */
if (!wportal) set_wportal();
+3 -2
View File
@@ -278,9 +278,10 @@ unsigned corpseflags;
obj = mkcorpstat(CORPSE, KEEPTRAITS(mtmp) ? mtmp : 0,
mdat, x, y, corpstatflags);
if (burythem) {
(void) bury_an_obj(obj);
boolean dealloc;
(void) bury_an_obj(obj, &dealloc);
newsym(x, y);
return obj;
return (dealloc ? NULL : obj);
}
}
break;
+3 -3
View File
@@ -1367,14 +1367,14 @@ NEARDATA struct permonst mons[] = {
A(ATTK(AT_ENGL, AD_PHYS, 1, 10),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_POISON|MR_STONE, 0,
M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_UNSOLID|M1_FLY,
M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_BREATHLESS|M1_UNSOLID|M1_FLY,
M2_STRONG|M2_NEUTER, 0, CLR_CYAN),
MON("fire elemental", S_ELEMENTAL,
LVL(8, 12, 2, 30, 0), (G_NOCORPSE|1),
A(ATTK(AT_CLAW, AD_FIRE, 3, 6), ATTK(AT_NONE, AD_FIRE, 0, 4),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(0, 0, MS_SILENT, MZ_HUGE), MR_FIRE|MR_POISON|MR_STONE, 0,
M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_UNSOLID|M1_FLY|M1_NOTAKE,
M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_BREATHLESS|M1_UNSOLID|M1_FLY|M1_NOTAKE,
M2_STRONG|M2_NEUTER, M3_INFRAVISIBLE, CLR_YELLOW),
MON("earth elemental", S_ELEMENTAL,
LVL(8, 6, 2, 30, 0), (G_NOCORPSE|1),
@@ -1390,7 +1390,7 @@ NEARDATA struct permonst mons[] = {
A(ATTK(AT_CLAW, AD_PHYS, 5, 6),
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(2500, 0, MS_SILENT, MZ_HUGE), MR_POISON|MR_STONE, 0,
M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_UNSOLID|
M1_NOEYES|M1_NOLIMBS|M1_NOHEAD|M1_MINDLESS|M1_BREATHLESS|M1_UNSOLID|
M1_AMPHIBIOUS|M1_SWIM,
M2_STRONG|M2_NEUTER, 0, CLR_BLUE),
/*
+179
View File
@@ -141,6 +141,7 @@ static struct Bool_Opt
{"mail", (boolean *)0, TRUE, SET_IN_FILE},
#endif
{"mention_walls", &iflags.mention_walls, FALSE, SET_IN_GAME},
{"menucolors", &iflags.use_menu_color, FALSE, SET_IN_GAME},
/* for menu debugging only*/
{"menu_tab_sep", &iflags.menu_tab_sep, FALSE, SET_IN_GAME},
{"menu_objsyms", &iflags.menu_head_objsym, FALSE, SET_IN_GAME},
@@ -1090,6 +1091,174 @@ STATIC_VAR const struct paranoia_opts {
{ ~0, "all", 3, 0, 0, 0 }, /* ditto */
};
extern struct menucoloring *menu_colorings;
static const struct {
const char *name;
const int color;
} colornames[] = {
{"black", CLR_BLACK},
{"red", CLR_RED},
{"green", CLR_GREEN},
{"brown", CLR_BROWN},
{"blue", CLR_BLUE},
{"magenta", CLR_MAGENTA},
{"cyan", CLR_CYAN},
{"gray", CLR_GRAY},
{"grey", CLR_GRAY},
{"orange", CLR_ORANGE},
{"lightgreen", CLR_BRIGHT_GREEN},
{"yellow", CLR_YELLOW},
{"lightblue", CLR_BRIGHT_BLUE},
{"lightmagenta", CLR_BRIGHT_MAGENTA},
{"lightcyan", CLR_BRIGHT_CYAN},
{"white", CLR_WHITE}
};
static const struct {
const char *name;
const int attr;
} attrnames[] = {
{"none", ATR_NONE},
{"bold", ATR_BOLD},
{"dim", ATR_DIM},
{"underline", ATR_ULINE},
{"blink", ATR_BLINK},
{"inverse", ATR_INVERSE}
};
/* parse '"regex_string"=color&attr' and add it to menucoloring */
boolean
add_menu_coloring(str)
char *str;
{
int i, c = NO_COLOR, a = ATR_NONE;
struct menucoloring *tmp;
char *tmps, *cs = strchr(str, '=');
#ifdef MENU_COLOR_REGEX_POSIX
int errnum;
char errbuf[80];
#endif
const char *err = (char *)0;
if (!cs || !str) return FALSE;
tmps = cs;
tmps++;
while (*tmps && isspace(*tmps)) tmps++;
for (i = 0; i < SIZE(colornames); i++)
if (strstri(tmps, colornames[i].name) == tmps) {
c = colornames[i].color;
break;
}
if ((i == SIZE(colornames)) && (*tmps >= '0' && *tmps <='9'))
c = atoi(tmps);
if (c > 15) return FALSE;
tmps = strchr(str, '&');
if (tmps) {
tmps++;
while (*tmps && isspace(*tmps)) tmps++;
for (i = 0; i < SIZE(attrnames); i++)
if (strstri(tmps, attrnames[i].name) == tmps) {
a = attrnames[i].attr;
break;
}
if ((i == SIZE(attrnames)) && (*tmps >= '0' && *tmps <='9'))
a = atoi(tmps);
}
*cs = '\0';
tmps = str;
if ((*tmps == '"') || (*tmps == '\'')) {
cs--;
while (isspace(*cs)) cs--;
if (*cs == *tmps) {
*cs = '\0';
tmps++;
}
}
tmp = (struct menucoloring *)alloc(sizeof(struct menucoloring));
#ifdef MENU_COLOR_REGEX
#ifdef MENU_COLOR_REGEX_POSIX
errnum = regcomp(&tmp->match, tmps, REG_EXTENDED | REG_NOSUB);
if (errnum != 0)
{
regerror(errnum, &tmp->match, errbuf, sizeof(errbuf));
err = errbuf;
}
#else
tmp->match.translate = 0;
tmp->match.fastmap = 0;
tmp->match.buffer = 0;
tmp->match.allocated = 0;
tmp->match.regs_allocated = REGS_FIXED;
err = re_compile_pattern(tmps, strlen(tmps), &tmp->match);
#endif
#else
tmp->match = (char *)alloc(strlen(tmps)+1);
(void) memcpy((genericptr_t)tmp->match, (genericptr_t)tmps, strlen(tmps)+1);
#endif
if (err) {
raw_printf("\nMenucolor regex error: %s\n", err);
wait_synch();
free(tmp);
return FALSE;
} else {
tmp->next = menu_colorings;
tmp->color = c;
tmp->attr = a;
menu_colorings = tmp;
return TRUE;
}
}
boolean
get_menu_coloring(str, color, attr)
char *str;
int *color, *attr;
{
struct menucoloring *tmpmc;
if (iflags.use_menu_color)
for (tmpmc = menu_colorings; tmpmc; tmpmc = tmpmc->next)
#ifdef MENU_COLOR_REGEX
# ifdef MENU_COLOR_REGEX_POSIX
if (regexec(&tmpmc->match, str, 0, NULL, 0) == 0) {
# else
if (re_search(&tmpmc->match, str, strlen(str), 0, 9999, 0) >= 0) {
# endif
#else
if (pmatch(tmpmc->match, str)) {
#endif
*color = tmpmc->color;
*attr = tmpmc->attr;
return TRUE;
}
return FALSE;
}
void
free_menu_coloring()
{
struct menucoloring *tmp = menu_colorings;
while (tmp) {
struct menucoloring *tmp2 = tmp->next;
#ifdef MENU_COLOR_REGEX
(void) regfree(&tmp->match);
#else
free(tmp->match);
#endif
free(tmp);
tmp = tmp2;
}
}
void
parseoptions(opts, tinitial, tfrom_file)
register char *opts;
@@ -1431,6 +1600,16 @@ boolean tinitial, tfrom_file;
return;
}
/* menucolor:"regex_string"=color */
fullname = "menucolor";
if (match_optname(opts, fullname, 9, TRUE)) {
if (negated) bad_negation(fullname, FALSE);
else if ((op = string_for_env_opt(fullname, opts, FALSE)) != 0)
if (!add_menu_coloring(op))
badoption(opts);
return;
}
fullname = "msghistory";
if (match_optname(opts, fullname, 3, TRUE)) {
if (duplicate) complain_about_duplicate(opts,1);
+37 -4
View File
@@ -27,7 +27,8 @@ STATIC_DCL void FDECL(randomize,(int *, int));
STATIC_DCL void FDECL(forget_single_object, (int));
STATIC_DCL void FDECL(forget, (int));
STATIC_DCL int FDECL(maybe_tame, (struct monst *,struct obj *));
STATIC_DCL boolean FDECL(is_valid_stinking_cloud_pos, (int, int, BOOLEAN_P));
STATIC_DCL void FDECL(display_stinking_cloud_positions, (int));
STATIC_PTR void FDECL(set_lit, (int,int,genericptr_t));
STATIC_OVL boolean
@@ -868,6 +869,39 @@ struct obj *sobj;
return 0;
}
boolean
is_valid_stinking_cloud_pos(x,y, showmsg)
int x,y;
boolean showmsg;
{
if (!cansee(x, y) || !ACCESSIBLE(levl[x][y].typ) || distu(x, y) >= 32) {
if (showmsg) You("smell rotten eggs.");
return FALSE;
}
return TRUE;
}
void
display_stinking_cloud_positions(state)
int state;
{
if (state == 0) {
tmp_at(DISP_BEAM, cmap_to_glyph(S_flashbeam));
} else if (state == 1) {
int x,y, dx, dy;
int dist = 6;
for (dx = -dist; dx <= dist; dx++)
for (dy = -dist; dy <= dist; dy++) {
x = u.ux + dx;
y = u.uy + dy;
if (isok(x,y) && is_valid_stinking_cloud_pos(x,y, FALSE))
tmp_at(x,y);
}
} else {
tmp_at(DISP_END, 0);
}
}
/* scroll effects; return 1 if we use up the scroll and possibly make it
become discovered, 0 if caller should take care of those side-effects */
int
@@ -1613,14 +1647,13 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */
already_known ? "stinking " : "");
cc.x = u.ux;
cc.y = u.uy;
getpos_sethilite(display_stinking_cloud_positions);
if (getpos(&cc, TRUE, "the desired position") < 0) {
pline1(Never_mind);
break;
}
if (!cansee(cc.x, cc.y) || distu(cc.x, cc.y) >= 32) {
You("smell rotten eggs.");
if (!is_valid_stinking_cloud_pos(cc.x, cc.y, TRUE))
break;
}
(void) create_gas_cloud(cc.x, cc.y, 3+bcsign(sobj),
8+4*bcsign(sobj));
break;
+1 -1
View File
@@ -996,7 +996,7 @@ int damage;
cloud->arg = zeroany;
cloud->arg.a_int = damage;
cloud->visible = TRUE;
cloud->glyph = cmap_to_glyph(S_cloud);
cloud->glyph = cmap_to_glyph(damage ? S_poisoncloud : S_cloud);
add_region(cloud);
return cloud;
}
+1
View File
@@ -1296,6 +1296,7 @@ void
freedynamicdata()
{
unload_qtlist();
free_menu_coloring();
free_invbuf(); /* let_to_name (invent.c) */
free_youbuf(); /* You_buf,&c (pline.c) */
tmp_at(DISP_FREEMEM, 0); /* temporary display effects */
+3789 -1326
View File
File diff suppressed because it is too large Load Diff
-24
View File
@@ -42,7 +42,6 @@ STATIC_DCL int NDECL(throwspell);
STATIC_DCL void NDECL(cast_protection);
STATIC_DCL void FDECL(spell_backfire, (int));
STATIC_DCL const char *FDECL(spelltypemnemonic, (int));
STATIC_DCL int FDECL(isqrt, (int));
/* The roles[] table lists the role-specific values for tuning
* percent_success().
@@ -1433,29 +1432,6 @@ int *spell_no;
return FALSE;
}
/* Integer square root function without using floating point.
* This could be replaced by a faster algorithm, but has not been because:
* + the simple algorithm is easy to read
* + this algorithm does not require 64-bit support
* + in current usage, the values passed to isqrt() are not really that
* large, so the performance difference is negligible
* + isqrt() is used in only one place
* + that one place is not a bottle-neck
*/
STATIC_OVL int
isqrt(val)
int val;
{
int rt = 0;
int odd = 1;
while(val >= odd) {
val = val-odd;
odd = odd+2;
rt = rt + 1;
}
return rt;
}
STATIC_OVL int
percent_success(spell)
int spell;
+4 -3
View File
@@ -1,4 +1,4 @@
/* NetHack 3.5 topten.c $NHDT-Date: 1426731079 2015/03/19 02:11:19 $ $NHDT-Branch: harder_d8 $:$NHDT-Revision: 1.25 $ */
/* NetHack 3.5 topten.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 topten.c $Date: 2012/01/24 04:26:15 $ $Revision: 1.23 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -353,8 +353,9 @@ encodexlogflags()
{
long e = 0L;
if (wizard) e |= 1L << 0;
if (discover) e |= 1L << 1;
if (wizard) e |= 1L << 0;
if (discover) e |= 1L << 1;
if (!u.uroleplay.numbones) e |= 1L << 2;
return e;
}
+2 -2
View File
@@ -1,4 +1,4 @@
/* NetHack 3.5 trap.c $NHDT-Date: 1427331767 2015/03/26 01:02:47 $ $NHDT-Branch: master $:$NHDT-Revision: 1.199 $ */
/* NetHack 3.5 trap.c $NHDT-Date: 1427934551 2015/04/02 00:29:11 $ $NHDT-Branch: master $:$NHDT-Revision: 1.223 $ */
/* NetHack 3.5 trap.c $Date: 2013/03/14 01:58:21 $ $Revision: 1.179 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -3575,7 +3575,7 @@ boolean bury_it;
place_object(otmp, ttmp->tx, ttmp->ty);
if (bury_it) {
/* magical digging first disarms this trap, then will unearth it */
(void) bury_an_obj(otmp);
(void) bury_an_obj(otmp, NULL);
} else {
/* Sell your own traps only... */
if (ttmp->madeby_u) sellobj(otmp, ttmp->tx, ttmp->ty);
+11
View File
@@ -121,3 +121,14 @@ OPTIONS=time,noshowexp,number_pad:2,lit_corridor
# DEC Rainbows will hang if rawio is set, so they should instead use:
#OPTIONS=BIOS,DECgraphics
# Colored menus.
#OPTIONS=menucolors
# Syntax is: MENUCOLOR="string_to_match"=color&attribute
# Colors: black, red, green, brown, blue, magenta, cyan, gray, orange,
# lightgreen, yellow, lightblue, lightmagenta, lightcyan, white.
# Attributes: none, bold, dim, underline, blink, inverse.
#MENUCOLOR=" blessed "=green
#MENUCOLOR=" holy "=green
#MENUCOLOR=" cursed "=red
#MENUCOLOR=" unholy "=red
#MENUCOLOR=" cursed .* (being worn)"=orange&underline
+448 -74
View File
@@ -1,79 +1,453 @@
#define CHAR 257
#define INTEGER 258
#define BOOLEAN 259
#define PERCENT 260
#define MESSAGE_ID 261
#define MAZE_ID 262
#define LEVEL_ID 263
#define LEV_INIT_ID 264
#define GEOMETRY_ID 265
#define NOMAP_ID 266
#define OBJECT_ID 267
#define COBJECT_ID 268
#define MONSTER_ID 269
#define TRAP_ID 270
#define DOOR_ID 271
#define DRAWBRIDGE_ID 272
#define MAZEWALK_ID 273
#define WALLIFY_ID 274
#define REGION_ID 275
#define FILLING 276
#define RANDOM_OBJECTS_ID 277
#define RANDOM_MONSTERS_ID 278
#define RANDOM_PLACES_ID 279
#define ALTAR_ID 280
#define LADDER_ID 281
#define STAIR_ID 282
#define NON_DIGGABLE_ID 283
#define NON_PASSWALL_ID 284
#define ROOM_ID 285
#define PORTAL_ID 286
#define TELEPRT_ID 287
#define BRANCH_ID 288
#define LEV 289
#define CHANCE_ID 290
#define CORRIDOR_ID 291
#define GOLD_ID 292
#define ENGRAVING_ID 293
#define FOUNTAIN_ID 294
#define POOL_ID 295
#define SINK_ID 296
#define NONE 297
#define RAND_CORRIDOR_ID 298
#define DOOR_STATE 299
#define LIGHT_STATE 300
#define CURSE_TYPE 301
#define ENGRAVING_TYPE 302
#define DIRECTION 303
#define RANDOM_TYPE 304
#define O_REGISTER 305
#define M_REGISTER 306
#define P_REGISTER 307
#define A_REGISTER 308
#define ALIGNMENT 309
#define LEFT_OR_RIGHT 310
#define CENTER 311
#define TOP_OR_BOT 312
#define ALTAR_TYPE 313
#define UP_OR_DOWN 314
#define SUBROOM_ID 315
#define NAME_ID 316
#define FLAGS_ID 317
#define FLAG_TYPE 318
#define MON_ATTITUDE 319
#define MON_ALERTNESS 320
#define MON_APPEARANCE 321
#define CONTAINED 322
#define STRING 323
#define MAP_ID 324
typedef union
/* A Bison parser, made by GNU Bison 3.0.2. */
/* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
#ifndef YY_YY_Y_TAB_H_INCLUDED
# define YY_YY_Y_TAB_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int yydebug;
#endif
/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
CHAR = 258,
INTEGER = 259,
BOOLEAN = 260,
PERCENT = 261,
SPERCENT = 262,
MINUS_INTEGER = 263,
PLUS_INTEGER = 264,
MAZE_GRID_ID = 265,
SOLID_FILL_ID = 266,
MINES_ID = 267,
ROGUELEV_ID = 268,
MESSAGE_ID = 269,
MAZE_ID = 270,
LEVEL_ID = 271,
LEV_INIT_ID = 272,
GEOMETRY_ID = 273,
NOMAP_ID = 274,
OBJECT_ID = 275,
COBJECT_ID = 276,
MONSTER_ID = 277,
TRAP_ID = 278,
DOOR_ID = 279,
DRAWBRIDGE_ID = 280,
object_ID = 281,
monster_ID = 282,
terrain_ID = 283,
MAZEWALK_ID = 284,
WALLIFY_ID = 285,
REGION_ID = 286,
FILLING = 287,
IRREGULAR = 288,
JOINED = 289,
ALTAR_ID = 290,
LADDER_ID = 291,
STAIR_ID = 292,
NON_DIGGABLE_ID = 293,
NON_PASSWALL_ID = 294,
ROOM_ID = 295,
PORTAL_ID = 296,
TELEPRT_ID = 297,
BRANCH_ID = 298,
LEV = 299,
MINERALIZE_ID = 300,
CORRIDOR_ID = 301,
GOLD_ID = 302,
ENGRAVING_ID = 303,
FOUNTAIN_ID = 304,
POOL_ID = 305,
SINK_ID = 306,
NONE = 307,
RAND_CORRIDOR_ID = 308,
DOOR_STATE = 309,
LIGHT_STATE = 310,
CURSE_TYPE = 311,
ENGRAVING_TYPE = 312,
DIRECTION = 313,
RANDOM_TYPE = 314,
RANDOM_TYPE_BRACKET = 315,
A_REGISTER = 316,
ALIGNMENT = 317,
LEFT_OR_RIGHT = 318,
CENTER = 319,
TOP_OR_BOT = 320,
ALTAR_TYPE = 321,
UP_OR_DOWN = 322,
SUBROOM_ID = 323,
NAME_ID = 324,
FLAGS_ID = 325,
FLAG_TYPE = 326,
MON_ATTITUDE = 327,
MON_ALERTNESS = 328,
MON_APPEARANCE = 329,
ROOMDOOR_ID = 330,
IF_ID = 331,
ELSE_ID = 332,
TERRAIN_ID = 333,
HORIZ_OR_VERT = 334,
REPLACE_TERRAIN_ID = 335,
EXIT_ID = 336,
SHUFFLE_ID = 337,
QUANTITY_ID = 338,
BURIED_ID = 339,
LOOP_ID = 340,
FOR_ID = 341,
TO_ID = 342,
SWITCH_ID = 343,
CASE_ID = 344,
BREAK_ID = 345,
DEFAULT_ID = 346,
ERODED_ID = 347,
TRAPPED_ID = 348,
RECHARGED_ID = 349,
INVIS_ID = 350,
GREASED_ID = 351,
FEMALE_ID = 352,
CANCELLED_ID = 353,
REVIVED_ID = 354,
AVENGE_ID = 355,
FLEEING_ID = 356,
BLINDED_ID = 357,
PARALYZED_ID = 358,
STUNNED_ID = 359,
CONFUSED_ID = 360,
SEENTRAPS_ID = 361,
ALL_ID = 362,
MONTYPE_ID = 363,
GRAVE_ID = 364,
ERODEPROOF_ID = 365,
FUNCTION_ID = 366,
MSG_OUTPUT_TYPE = 367,
COMPARE_TYPE = 368,
UNKNOWN_TYPE = 369,
rect_ID = 370,
fillrect_ID = 371,
line_ID = 372,
randline_ID = 373,
grow_ID = 374,
selection_ID = 375,
flood_ID = 376,
rndcoord_ID = 377,
circle_ID = 378,
ellipse_ID = 379,
filter_ID = 380,
complement_ID = 381,
gradient_ID = 382,
GRADIENT_TYPE = 383,
LIMITED = 384,
HUMIDITY_TYPE = 385,
STRING = 386,
MAP_ID = 387,
NQSTRING = 388,
VARSTRING = 389,
CFUNC = 390,
CFUNC_INT = 391,
CFUNC_STR = 392,
CFUNC_COORD = 393,
CFUNC_REGION = 394,
VARSTRING_INT = 395,
VARSTRING_INT_ARRAY = 396,
VARSTRING_STRING = 397,
VARSTRING_STRING_ARRAY = 398,
VARSTRING_VAR = 399,
VARSTRING_VAR_ARRAY = 400,
VARSTRING_COORD = 401,
VARSTRING_COORD_ARRAY = 402,
VARSTRING_REGION = 403,
VARSTRING_REGION_ARRAY = 404,
VARSTRING_MAPCHAR = 405,
VARSTRING_MAPCHAR_ARRAY = 406,
VARSTRING_MONST = 407,
VARSTRING_MONST_ARRAY = 408,
VARSTRING_OBJ = 409,
VARSTRING_OBJ_ARRAY = 410,
VARSTRING_SEL = 411,
VARSTRING_SEL_ARRAY = 412,
METHOD_INT = 413,
METHOD_INT_ARRAY = 414,
METHOD_STRING = 415,
METHOD_STRING_ARRAY = 416,
METHOD_VAR = 417,
METHOD_VAR_ARRAY = 418,
METHOD_COORD = 419,
METHOD_COORD_ARRAY = 420,
METHOD_REGION = 421,
METHOD_REGION_ARRAY = 422,
METHOD_MAPCHAR = 423,
METHOD_MAPCHAR_ARRAY = 424,
METHOD_MONST = 425,
METHOD_MONST_ARRAY = 426,
METHOD_OBJ = 427,
METHOD_OBJ_ARRAY = 428,
METHOD_SEL = 429,
METHOD_SEL_ARRAY = 430,
DICE = 431
};
#endif
/* Tokens. */
#define CHAR 258
#define INTEGER 259
#define BOOLEAN 260
#define PERCENT 261
#define SPERCENT 262
#define MINUS_INTEGER 263
#define PLUS_INTEGER 264
#define MAZE_GRID_ID 265
#define SOLID_FILL_ID 266
#define MINES_ID 267
#define ROGUELEV_ID 268
#define MESSAGE_ID 269
#define MAZE_ID 270
#define LEVEL_ID 271
#define LEV_INIT_ID 272
#define GEOMETRY_ID 273
#define NOMAP_ID 274
#define OBJECT_ID 275
#define COBJECT_ID 276
#define MONSTER_ID 277
#define TRAP_ID 278
#define DOOR_ID 279
#define DRAWBRIDGE_ID 280
#define object_ID 281
#define monster_ID 282
#define terrain_ID 283
#define MAZEWALK_ID 284
#define WALLIFY_ID 285
#define REGION_ID 286
#define FILLING 287
#define IRREGULAR 288
#define JOINED 289
#define ALTAR_ID 290
#define LADDER_ID 291
#define STAIR_ID 292
#define NON_DIGGABLE_ID 293
#define NON_PASSWALL_ID 294
#define ROOM_ID 295
#define PORTAL_ID 296
#define TELEPRT_ID 297
#define BRANCH_ID 298
#define LEV 299
#define MINERALIZE_ID 300
#define CORRIDOR_ID 301
#define GOLD_ID 302
#define ENGRAVING_ID 303
#define FOUNTAIN_ID 304
#define POOL_ID 305
#define SINK_ID 306
#define NONE 307
#define RAND_CORRIDOR_ID 308
#define DOOR_STATE 309
#define LIGHT_STATE 310
#define CURSE_TYPE 311
#define ENGRAVING_TYPE 312
#define DIRECTION 313
#define RANDOM_TYPE 314
#define RANDOM_TYPE_BRACKET 315
#define A_REGISTER 316
#define ALIGNMENT 317
#define LEFT_OR_RIGHT 318
#define CENTER 319
#define TOP_OR_BOT 320
#define ALTAR_TYPE 321
#define UP_OR_DOWN 322
#define SUBROOM_ID 323
#define NAME_ID 324
#define FLAGS_ID 325
#define FLAG_TYPE 326
#define MON_ATTITUDE 327
#define MON_ALERTNESS 328
#define MON_APPEARANCE 329
#define ROOMDOOR_ID 330
#define IF_ID 331
#define ELSE_ID 332
#define TERRAIN_ID 333
#define HORIZ_OR_VERT 334
#define REPLACE_TERRAIN_ID 335
#define EXIT_ID 336
#define SHUFFLE_ID 337
#define QUANTITY_ID 338
#define BURIED_ID 339
#define LOOP_ID 340
#define FOR_ID 341
#define TO_ID 342
#define SWITCH_ID 343
#define CASE_ID 344
#define BREAK_ID 345
#define DEFAULT_ID 346
#define ERODED_ID 347
#define TRAPPED_ID 348
#define RECHARGED_ID 349
#define INVIS_ID 350
#define GREASED_ID 351
#define FEMALE_ID 352
#define CANCELLED_ID 353
#define REVIVED_ID 354
#define AVENGE_ID 355
#define FLEEING_ID 356
#define BLINDED_ID 357
#define PARALYZED_ID 358
#define STUNNED_ID 359
#define CONFUSED_ID 360
#define SEENTRAPS_ID 361
#define ALL_ID 362
#define MONTYPE_ID 363
#define GRAVE_ID 364
#define ERODEPROOF_ID 365
#define FUNCTION_ID 366
#define MSG_OUTPUT_TYPE 367
#define COMPARE_TYPE 368
#define UNKNOWN_TYPE 369
#define rect_ID 370
#define fillrect_ID 371
#define line_ID 372
#define randline_ID 373
#define grow_ID 374
#define selection_ID 375
#define flood_ID 376
#define rndcoord_ID 377
#define circle_ID 378
#define ellipse_ID 379
#define filter_ID 380
#define complement_ID 381
#define gradient_ID 382
#define GRADIENT_TYPE 383
#define LIMITED 384
#define HUMIDITY_TYPE 385
#define STRING 386
#define MAP_ID 387
#define NQSTRING 388
#define VARSTRING 389
#define CFUNC 390
#define CFUNC_INT 391
#define CFUNC_STR 392
#define CFUNC_COORD 393
#define CFUNC_REGION 394
#define VARSTRING_INT 395
#define VARSTRING_INT_ARRAY 396
#define VARSTRING_STRING 397
#define VARSTRING_STRING_ARRAY 398
#define VARSTRING_VAR 399
#define VARSTRING_VAR_ARRAY 400
#define VARSTRING_COORD 401
#define VARSTRING_COORD_ARRAY 402
#define VARSTRING_REGION 403
#define VARSTRING_REGION_ARRAY 404
#define VARSTRING_MAPCHAR 405
#define VARSTRING_MAPCHAR_ARRAY 406
#define VARSTRING_MONST 407
#define VARSTRING_MONST_ARRAY 408
#define VARSTRING_OBJ 409
#define VARSTRING_OBJ_ARRAY 410
#define VARSTRING_SEL 411
#define VARSTRING_SEL_ARRAY 412
#define METHOD_INT 413
#define METHOD_INT_ARRAY 414
#define METHOD_STRING 415
#define METHOD_STRING_ARRAY 416
#define METHOD_VAR 417
#define METHOD_VAR_ARRAY 418
#define METHOD_COORD 419
#define METHOD_COORD_ARRAY 420
#define METHOD_REGION 421
#define METHOD_REGION_ARRAY 422
#define METHOD_MAPCHAR 423
#define METHOD_MAPCHAR_ARRAY 424
#define METHOD_MONST 425
#define METHOD_MONST_ARRAY 426
#define METHOD_OBJ 427
#define METHOD_OBJ_ARRAY 428
#define METHOD_SEL 429
#define METHOD_SEL_ARRAY 430
#define DICE 431
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE YYSTYPE;
union YYSTYPE
{
int i;
#line 148 "lev_comp.y" /* yacc.c:1909 */
long i;
char* map;
struct {
xchar room;
xchar wall;
xchar door;
long room;
long wall;
long door;
} corpos;
} YYSTYPE;
struct {
long area;
long x1;
long y1;
long x2;
long y2;
} lregn;
struct {
long x;
long y;
} crd;
struct {
long ter;
long lit;
} terr;
struct {
long height;
long width;
} sze;
struct {
long die;
long num;
} dice;
struct {
long cfunc;
char *varstr;
} meth;
#line 443 "y.tab.h" /* yacc.c:1909 */
};
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
extern YYSTYPE yylval;
int yyparse (void);
#endif /* !YY_YY_Y_TAB_H_INCLUDED */
+2365 -870
View File
File diff suppressed because it is too large Load Diff
+5527 -2291
View File
File diff suppressed because it is too large Load Diff
+57
View File
@@ -133,6 +133,63 @@ cc=cl
link=link
rc=Rc
#
#=============================================
# Visual Studio versions >= 2013 specific stuff
#=============================================
!IF "$(TARGET_CPU)" == ""
TARGET_CPU=x86
!ENDIF
# Common compiler flags:
# -c - compile without linking
# -W3 - Set warning level to level 3 (-W4 for 64-bit compilations)
# -Zi - generate debugging information
# -Od - disable all optimizations
# -Ox - use maximum optimizations
# -Zd - generate only public symbols and line numbers for debugging
# -GS - enable security checks
#
ccommon=-c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -c
lflags=/INCREMENTAL:NO /NOLOGO
!IF "$(TARGET_CPU)" == "x86"
cflags = $(ccommon) -D_X86_=1 -DWIN32 -D_WIN32 -W3
scall = -Gz
!ELSEIF "$(TARGET_CPU)" == "x64"
cflags = $(ccommon) -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32
cflags = $(cflags) -W4
scall =
!ENDIF
# declarations for use on Intel x86 systems
!IF "$(TARGET_CPU)" == "x86"
DLLENTRY = @12
!ENDIF
# declarations for use on AMD64 systems
!IF "$(TARGET_CPU)" == "x64"
DLLENTRY =
!ENDIF
# for Windows applications
conlflags = $(lflags) -subsystem:console,$(EXEVER)
guilflags = $(lflags) -subsystem:windows,$(EXEVER)
dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
# basic subsystem specific libraries, less the C Run-Time
baselibs = kernel32.lib $(optlibs) $(winsocklibs) advapi32.lib
winlibs = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib
# for Windows applications that use the C Run-Time libraries
conlibs = $(baselibs)
guilibs = $(winlibs)
#
# End of VS2013 and greater stuff
#=============================================
#
#==========================================
# Exe File Info.
+285 -114
View File
@@ -1,5 +1,5 @@
%{
/* NetHack 3.5 lev_comp.l $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */
/* NetHack 3.5 lev_comp.l $NHDT-Date: 1428240296 2015/04/05 13:24:56 $ $NHDT-Branch: master $:$NHDT-Revision: 1.13 $ */
/* NetHack 3.5 lev_comp.l $Date: 2009/05/06 10:54:31 $ $Revision: 1.9 $ */
/* SCCS Id: @(#)lev_lex.c 3.5 2002/03/27 */
/* Copyright (c) 1989 by Jean-Christophe Collet */
@@ -66,16 +66,37 @@ int FDECL(yyoutput, (int));
void FDECL(init_yyin, (FILE *));
void FDECL(init_yyout, (FILE *));
long NDECL(handle_varstring_check);
long FDECL(corefunc_str_check, (char *, long));
extern void VDECL(lc_error, (const char *, ...));
extern struct lc_vardefs *FDECL(vardef_defined,(struct lc_vardefs *,char *, int));
extern struct lc_vardefs *variable_definitions;
extern long FDECL(method_defined, (char *, long, long *));
void FDECL(savetoken, (char *));
void NDECL(newline);
void FDECL(advancepos, (char *));
/*
* This doesn't always get put in lev_comp.h
* (esp. when using older versions of bison).
*/
extern YYSTYPE yylval;
int nh_line_number = 1, colon_line_number = 1;
int nh_line_number = 1;
int token_start_pos = 0;
char curr_token[512];
static char map[4096];
static int map_cnt = 0;
FILE *orig_yyin = NULL;
#define ST_RET(x) do { savetoken(yytext); return x; } while (0);
#define ST_RETF(y, x) do { savetoken(yytext); y; return x; } while (0);
%}
%e 1500
%p 5000
@@ -83,6 +104,7 @@ static int map_cnt = 0;
%s MAPC
%%
<MAPC>ENDMAP {
savetoken(yytext);
BEGIN(INITIAL);
yylval.map = (char *) alloc(map_cnt + 1);
(void) strncpy(yylval.map, map, map_cnt);
@@ -90,129 +112,230 @@ static int map_cnt = 0;
map_cnt = 0;
return MAP_ID;
}
<MAPC>[-|}{+ABCISHKPLWTF\\#. 0123456789]*\r?\n {
<MAPC>[-|}{+xABCISHKMPLWTtFYU\\#. 0123456789]*\r?\n {
int len = yyleng;
savetoken(yytext);
/* convert \r\n to \n */
if (len >= 2 && yytext[len - 2] == '\r') len -= 1;
nh_line_number++;
(void) strncpy(map + map_cnt, yytext, len);
map_cnt += len;
map[map_cnt - 1] = '\n';
map[map_cnt] = '\0';
newline();
}
^#.*\n { nh_line_number++; }
: { colon_line_number = nh_line_number; return ':'; }
MESSAGE return MESSAGE_ID;
MAZE return MAZE_ID;
NOMAP return NOMAP_ID;
LEVEL return LEVEL_ID;
INIT_MAP return LEV_INIT_ID;
FLAGS return FLAGS_ID;
GEOMETRY return GEOMETRY_ID;
^MAP\r?\n { BEGIN(MAPC); nh_line_number++; }
OBJECT return OBJECT_ID;
CONTAINER return COBJECT_ID;
MONSTER return MONSTER_ID;
TRAP return TRAP_ID;
DOOR return DOOR_ID;
DRAWBRIDGE return DRAWBRIDGE_ID;
MAZEWALK return MAZEWALK_ID;
WALLIFY return WALLIFY_ID;
REGION return REGION_ID;
RANDOM_OBJECTS return RANDOM_OBJECTS_ID;
RANDOM_MONSTERS return RANDOM_MONSTERS_ID;
RANDOM_PLACES return RANDOM_PLACES_ID;
ALTAR return ALTAR_ID;
LADDER return LADDER_ID;
STAIR return STAIR_ID;
PORTAL return PORTAL_ID;
TELEPORT_REGION return TELEPRT_ID;
BRANCH return BRANCH_ID;
FOUNTAIN return FOUNTAIN_ID;
SINK return SINK_ID;
POOL return POOL_ID;
NON_DIGGABLE return NON_DIGGABLE_ID;
NON_PASSWALL return NON_PASSWALL_ID;
ROOM return ROOM_ID;
SUBROOM return SUBROOM_ID;
RANDOM_CORRIDORS return RAND_CORRIDOR_ID;
CORRIDOR return CORRIDOR_ID;
GOLD return GOLD_ID;
ENGRAVING return ENGRAVING_ID;
NAME return NAME_ID;
CHANCE return CHANCE_ID;
levregion return LEV;
open { yylval.i=D_ISOPEN; return DOOR_STATE; }
closed { yylval.i=D_CLOSED; return DOOR_STATE; }
locked { yylval.i=D_LOCKED; return DOOR_STATE; }
nodoor { yylval.i=D_NODOOR; return DOOR_STATE; }
broken { yylval.i=D_BROKEN; return DOOR_STATE; }
north { yylval.i=W_NORTH; return DIRECTION; }
east { yylval.i=W_EAST; return DIRECTION; }
south { yylval.i=W_SOUTH; return DIRECTION; }
west { yylval.i=W_WEST; return DIRECTION; }
random { yylval.i = -1; return RANDOM_TYPE; }
none { yylval.i = -2; return NONE; }
object return O_REGISTER;
monster return M_REGISTER;
place return P_REGISTER;
align return A_REGISTER;
left { yylval.i=1; return LEFT_OR_RIGHT; }
half-left { yylval.i=2; return LEFT_OR_RIGHT; }
center { yylval.i=3; return CENTER; }
half-right { yylval.i=4; return LEFT_OR_RIGHT; }
right { yylval.i=5; return LEFT_OR_RIGHT; }
top { yylval.i=1; return TOP_OR_BOT; }
bottom { yylval.i=5; return TOP_OR_BOT; }
lit { yylval.i=1; return LIGHT_STATE; }
unlit { yylval.i=0; return LIGHT_STATE; }
filled { yylval.i=0; return FILLING; }
unfilled { yylval.i=1; return FILLING; }
noalign { yylval.i= AM_NONE; return ALIGNMENT; }
law { yylval.i= AM_LAWFUL; return ALIGNMENT; }
neutral { yylval.i= AM_NEUTRAL; return ALIGNMENT; }
chaos { yylval.i= AM_CHAOTIC; return ALIGNMENT; }
coaligned { yylval.i= AM_SPLEV_CO; return ALIGNMENT; }
noncoaligned { yylval.i= AM_SPLEV_NONCO; return ALIGNMENT; }
peaceful { yylval.i=1; return MON_ATTITUDE; }
hostile { yylval.i=0; return MON_ATTITUDE; }
asleep { yylval.i=1; return MON_ALERTNESS; }
awake { yylval.i=0; return MON_ALERTNESS; }
m_feature { yylval.i= M_AP_FURNITURE; return MON_APPEARANCE; }
m_monster { yylval.i= M_AP_MONSTER; return MON_APPEARANCE; }
m_object { yylval.i= M_AP_OBJECT; return MON_APPEARANCE; }
sanctum { yylval.i=2; return ALTAR_TYPE; }
shrine { yylval.i=1; return ALTAR_TYPE; }
altar { yylval.i=0; return ALTAR_TYPE; }
up { yylval.i=1; return UP_OR_DOWN; }
down { yylval.i=0; return UP_OR_DOWN; }
false { yylval.i=0; return BOOLEAN; }
true { yylval.i=1; return BOOLEAN; }
dust { yylval.i=DUST; return ENGRAVING_TYPE; }
engrave { yylval.i=ENGRAVE; return ENGRAVING_TYPE; }
burn { yylval.i=BURN; return ENGRAVING_TYPE; }
mark { yylval.i=MARK; return ENGRAVING_TYPE; }
blood { yylval.i=ENGR_BLOOD; return ENGRAVING_TYPE; }
blessed { yylval.i=1; return CURSE_TYPE; }
uncursed { yylval.i=2; return CURSE_TYPE; }
cursed { yylval.i=3; return CURSE_TYPE; }
contained { return CONTAINED; }
noteleport { yylval.i=NOTELEPORT; return FLAG_TYPE; }
hardfloor { yylval.i=HARDFLOOR; return FLAG_TYPE; }
nommap { yylval.i=NOMMAP; return FLAG_TYPE; }
arboreal { yylval.i=ARBOREAL; return FLAG_TYPE; } /* KMH */
shortsighted { yylval.i=SHORTSIGHTED; return FLAG_TYPE; }
\[\ *[0-9]+\%\ *\] { yylval.i = atoi(yytext + 1); return PERCENT; }
[+\-]?[0-9]+ { yylval.i=atoi(yytext); return INTEGER; }
\"[^"]*\" { yytext[yyleng-1] = 0; /* Discard the trailing \" */
^[ \t]*#.*\n { savetoken(yytext); newline(); }
MESSAGE ST_RET(MESSAGE_ID);
NOMAP ST_RET(NOMAP_ID);
MAZE ST_RET(MAZE_ID);
LEVEL ST_RET(LEVEL_ID);
INIT_MAP ST_RET(LEV_INIT_ID);
mazegrid ST_RET(MAZE_GRID_ID);
solidfill ST_RET(SOLID_FILL_ID);
mines ST_RET(MINES_ID);
rogue ST_RET(ROGUELEV_ID);
FLAGS ST_RET(FLAGS_ID);
GEOMETRY ST_RET(GEOMETRY_ID);
^MAP\r?\n { savetoken(yytext); BEGIN(MAPC); newline(); }
obj(ect)? ST_RET(object_ID);
OBJECT ST_RET(OBJECT_ID);
CONTAINER ST_RET(COBJECT_ID);
MONSTER ST_RET(MONSTER_ID);
monster ST_RET(monster_ID);
TRAP ST_RET(TRAP_ID);
DOOR ST_RET(DOOR_ID);
ROOMDOOR ST_RET(ROOMDOOR_ID);
DRAWBRIDGE ST_RET(DRAWBRIDGE_ID);
MAZEWALK ST_RET(MAZEWALK_ID);
WALLIFY ST_RET(WALLIFY_ID);
REGION ST_RET(REGION_ID);
ALTAR ST_RET(ALTAR_ID);
LADDER ST_RET(LADDER_ID);
STAIR ST_RET(STAIR_ID);
PORTAL ST_RET(PORTAL_ID);
TELEPORT_REGION ST_RET(TELEPRT_ID);
BRANCH ST_RET(BRANCH_ID);
FOUNTAIN ST_RET(FOUNTAIN_ID);
SINK ST_RET(SINK_ID);
POOL ST_RET(POOL_ID);
NON_DIGGABLE ST_RET(NON_DIGGABLE_ID);
NON_PASSWALL ST_RET(NON_PASSWALL_ID);
IF ST_RET(IF_ID);
ELSE ST_RET(ELSE_ID);
EXIT ST_RET(EXIT_ID);
ROOM ST_RET(ROOM_ID);
SUBROOM ST_RET(SUBROOM_ID);
RANDOM_CORRIDORS ST_RET(RAND_CORRIDOR_ID);
CORRIDOR ST_RET(CORRIDOR_ID);
TERRAIN ST_RET(TERRAIN_ID);
terrain ST_RET(terrain_ID);
REPLACE_TERRAIN ST_RET(REPLACE_TERRAIN_ID);
GOLD ST_RET(GOLD_ID);
GRAVE ST_RET(GRAVE_ID);
ENGRAVING ST_RET(ENGRAVING_ID);
MINERALIZE ST_RET(MINERALIZE_ID);
(NAME|name) ST_RET(NAME_ID);
FOR ST_RET(FOR_ID);
TO ST_RET(TO_ID);
LOOP ST_RET(LOOP_ID);
SWITCH ST_RET(SWITCH_ID);
CASE ST_RET(CASE_ID);
BREAK ST_RET(BREAK_ID);
DEFAULT ST_RET(DEFAULT_ID);
FUNCTION ST_RET(FUNCTION_ID);
SHUFFLE ST_RET(SHUFFLE_ID);
montype ST_RET(MONTYPE_ID);
selection ST_RET(selection_ID);
rect ST_RET(rect_ID);
fillrect ST_RET(fillrect_ID);
line ST_RET(line_ID);
randline ST_RET(randline_ID);
grow ST_RET(grow_ID);
floodfill ST_RET(flood_ID);
rndcoord ST_RET(rndcoord_ID);
circle ST_RET(circle_ID);
ellipse ST_RET(ellipse_ID);
filter ST_RET(filter_ID);
gradient ST_RET(gradient_ID);
complement ST_RET(complement_ID);
radial { savetoken(yytext); yylval.i=SEL_GRADIENT_RADIAL; return GRADIENT_TYPE; }
square { savetoken(yytext); yylval.i=SEL_GRADIENT_SQUARE; return GRADIENT_TYPE; }
dry { savetoken(yytext); yylval.i=DRY; return HUMIDITY_TYPE; }
wet { savetoken(yytext); yylval.i=WET; return HUMIDITY_TYPE; }
hot { savetoken(yytext); yylval.i=HOT; return HUMIDITY_TYPE; }
solid { savetoken(yytext); yylval.i=SOLID; return HUMIDITY_TYPE; }
any { savetoken(yytext); yylval.i=ANY_LOC; return HUMIDITY_TYPE; }
levregion ST_RET(LEV);
quantity ST_RET(QUANTITY_ID);
buried ST_RET(BURIED_ID);
eroded ST_RET(ERODED_ID);
erodeproof ST_RET(ERODEPROOF_ID);
trapped ST_RET(TRAPPED_ID);
recharged ST_RET(RECHARGED_ID);
invisible ST_RET(INVIS_ID);
greased ST_RET(GREASED_ID);
female ST_RET(FEMALE_ID);
cancelled ST_RET(CANCELLED_ID);
revived ST_RET(REVIVED_ID);
avenge ST_RET(AVENGE_ID);
fleeing ST_RET(FLEEING_ID);
blinded ST_RET(BLINDED_ID);
paralyzed ST_RET(PARALYZED_ID);
stunned ST_RET(STUNNED_ID);
confused ST_RET(CONFUSED_ID);
seen_traps ST_RET(SEENTRAPS_ID);
all ST_RET(ALL_ID);
horizontal ST_RETF((yylval.i=1), HORIZ_OR_VERT);
vertical { savetoken(yytext); yylval.i=2; return HORIZ_OR_VERT; }
open { savetoken(yytext); yylval.i=D_ISOPEN; return DOOR_STATE; }
closed { savetoken(yytext); yylval.i=D_CLOSED; return DOOR_STATE; }
locked { savetoken(yytext); yylval.i=D_LOCKED; return DOOR_STATE; }
nodoor { savetoken(yytext); yylval.i=D_NODOOR; return DOOR_STATE; }
broken { savetoken(yytext); yylval.i=D_BROKEN; return DOOR_STATE; }
secret { savetoken(yytext); yylval.i=D_SECRET; return DOOR_STATE; }
north { savetoken(yytext); yylval.i=W_NORTH; return DIRECTION; }
east { savetoken(yytext); yylval.i=W_EAST; return DIRECTION; }
south { savetoken(yytext); yylval.i=W_SOUTH; return DIRECTION; }
west { savetoken(yytext); yylval.i=W_WEST; return DIRECTION; }
random { savetoken(yytext); yylval.i = -1; return RANDOM_TYPE; }
random\[ { savetoken(yytext); yylval.i = -1; return RANDOM_TYPE_BRACKET; }
none { savetoken(yytext); yylval.i = -2; return NONE; }
align ST_RET(A_REGISTER);
left { savetoken(yytext); yylval.i=1; return LEFT_OR_RIGHT; }
half-left { savetoken(yytext); yylval.i=2; return LEFT_OR_RIGHT; }
center { savetoken(yytext); yylval.i=3; return CENTER; }
half-right { savetoken(yytext); yylval.i=4; return LEFT_OR_RIGHT; }
right { savetoken(yytext); yylval.i=5; return LEFT_OR_RIGHT; }
top { savetoken(yytext); yylval.i=1; return TOP_OR_BOT; }
bottom { savetoken(yytext); yylval.i=5; return TOP_OR_BOT; }
lit { savetoken(yytext); yylval.i=1; return LIGHT_STATE; }
unlit { savetoken(yytext); yylval.i=0; return LIGHT_STATE; }
filled { savetoken(yytext); yylval.i=1; return FILLING; }
unfilled { savetoken(yytext); yylval.i=0; return FILLING; }
regular { savetoken(yytext); yylval.i=0; return IRREGULAR; }
irregular { savetoken(yytext); yylval.i=1; return IRREGULAR; }
unjoined { savetoken(yytext); yylval.i=1; return JOINED; }
joined { savetoken(yytext); yylval.i=0; return JOINED; }
limited { savetoken(yytext); yylval.i=1; return LIMITED; }
unlimited { savetoken(yytext); yylval.i=0; return LIMITED; }
noalign { savetoken(yytext); yylval.i= AM_NONE; return ALIGNMENT; }
law { savetoken(yytext); yylval.i= AM_LAWFUL; return ALIGNMENT; }
neutral { savetoken(yytext); yylval.i= AM_NEUTRAL; return ALIGNMENT; }
chaos { savetoken(yytext); yylval.i= AM_CHAOTIC; return ALIGNMENT; }
coaligned { savetoken(yytext); yylval.i= AM_SPLEV_CO; return ALIGNMENT; }
noncoaligned { savetoken(yytext); yylval.i= AM_SPLEV_NONCO; return ALIGNMENT; }
peaceful { savetoken(yytext); yylval.i=1; return MON_ATTITUDE; }
hostile { savetoken(yytext); yylval.i=0; return MON_ATTITUDE; }
asleep { savetoken(yytext); yylval.i=1; return MON_ALERTNESS; }
awake { savetoken(yytext); yylval.i=0; return MON_ALERTNESS; }
m_feature { savetoken(yytext); yylval.i= M_AP_FURNITURE; return MON_APPEARANCE; }
m_monster { savetoken(yytext); yylval.i= M_AP_MONSTER; return MON_APPEARANCE; }
m_object { savetoken(yytext); yylval.i= M_AP_OBJECT; return MON_APPEARANCE; }
sanctum { savetoken(yytext); yylval.i=2; return ALTAR_TYPE; }
shrine { savetoken(yytext); yylval.i=1; return ALTAR_TYPE; }
altar { savetoken(yytext); yylval.i=0; return ALTAR_TYPE; }
up { savetoken(yytext); yylval.i=1; return UP_OR_DOWN; }
down { savetoken(yytext); yylval.i=0; return UP_OR_DOWN; }
false { savetoken(yytext); yylval.i=0; return BOOLEAN; }
true { savetoken(yytext); yylval.i=1; return BOOLEAN; }
dust { savetoken(yytext); yylval.i=DUST; return ENGRAVING_TYPE; }
engrave { savetoken(yytext); yylval.i=ENGRAVE; return ENGRAVING_TYPE; }
burn { savetoken(yytext); yylval.i=BURN; return ENGRAVING_TYPE; }
mark { savetoken(yytext); yylval.i=MARK; return ENGRAVING_TYPE; }
blood { savetoken(yytext); yylval.i=ENGR_BLOOD; return ENGRAVING_TYPE; }
blessed { savetoken(yytext); yylval.i=1; return CURSE_TYPE; }
uncursed { savetoken(yytext); yylval.i=2; return CURSE_TYPE; }
cursed { savetoken(yytext); yylval.i=3; return CURSE_TYPE; }
noteleport { savetoken(yytext); yylval.i=NOTELEPORT; return FLAG_TYPE; }
hardfloor { savetoken(yytext); yylval.i=HARDFLOOR; return FLAG_TYPE; }
nommap { savetoken(yytext); yylval.i=NOMMAP; return FLAG_TYPE; }
arboreal { savetoken(yytext); yylval.i=ARBOREAL; return FLAG_TYPE; } /* KMH */
shortsighted { savetoken(yytext); yylval.i=SHORTSIGHTED; return FLAG_TYPE; }
mazelevel { savetoken(yytext); yylval.i=MAZELEVEL; return FLAG_TYPE; }
premapped { savetoken(yytext); yylval.i=PREMAPPED; return FLAG_TYPE; }
shroud { savetoken(yytext); yylval.i=SHROUD; return FLAG_TYPE; }
graveyard { savetoken(yytext); yylval.i=GRAVEYARD; return FLAG_TYPE; }
icedpools { savetoken(yytext); yylval.i=ICEDPOOLS; return FLAG_TYPE; }
solidify { savetoken(yytext); yylval.i=SOLIDIFY; return FLAG_TYPE; }
[0-9]+d[0-9]+ { char *p = strchr(yytext, 'd');
savetoken(yytext);
if (p) {
*p = '\0';
p++;
yylval.dice.num=atoi(yytext);
yylval.dice.die=atoi(p);
} else { yylval.dice.num = yylval.dice.die = 1; }
return DICE;
}
\[\ *[0-9]+\%\ *\] { savetoken(yytext); yylval.i = atoi(yytext + 1);
if (yylval.i < 0 || yylval.i > 100)
lc_error("Unexpected percentile '%li%%'", yylval.i);
return PERCENT; }
-[0-9]+ { savetoken(yytext); yylval.i=atoi(yytext); return MINUS_INTEGER; }
\+[0-9]+ { savetoken(yytext); yylval.i=atoi(yytext); return PLUS_INTEGER; }
[0-9]+\% { savetoken(yytext); yylval.i = atoi(yytext);
if (yylval.i < 0 || yylval.i > 100)
lc_error("Unexpected percentile '%li%%'", yylval.i);
return SPERCENT; }
[0-9]+ { savetoken(yytext); yylval.i=atoi(yytext); return INTEGER; }
\"[^"]*\" { savetoken(yytext);
yytext[yyleng-1] = 0; /* Discard the trailing \" */
yylval.map = (char *) alloc(strlen(yytext+1)+1);
Strcpy(yylval.map, yytext+1); /* Discard the first \" */
return STRING; }
\r?\n { nh_line_number++; }
[ \t]+ ;
'\\.' { yylval.i = yytext[2]; return CHAR; }
'.' { yylval.i = yytext[1]; return CHAR; }
. { return yytext[0]; }
\$[a-zA-Z_]+ { savetoken(yytext); return handle_varstring_check(); }
"==" { savetoken(yytext); yylval.i = SPO_JE; return COMPARE_TYPE; }
"!=" { savetoken(yytext); yylval.i = SPO_JNE; return COMPARE_TYPE; }
"<>" { savetoken(yytext); yylval.i = SPO_JNE; return COMPARE_TYPE; }
"<=" { savetoken(yytext); yylval.i = SPO_JLE; return COMPARE_TYPE; }
">=" { savetoken(yytext); yylval.i = SPO_JGE; return COMPARE_TYPE; }
"<" { savetoken(yytext); yylval.i = SPO_JL; return COMPARE_TYPE; }
">" { savetoken(yytext); yylval.i = SPO_JG; return COMPARE_TYPE; }
\r?\n { newline(); }
[ \t]+ { advancepos(yytext); }
'\\.' { savetoken(yytext); yylval.i = yytext[2]; return CHAR; }
'.' { savetoken(yytext); yylval.i = yytext[1]; return CHAR; }
[-_a-zA-Z0-9]+ ST_RET(UNKNOWN_TYPE);
. { savetoken(yytext); return yytext[0]; }
%%
#ifdef AMIGA
long *alloc(n)
@@ -232,6 +355,7 @@ FILE *input_f;
else
#endif
yyin = input_f;
if (!orig_yyin) orig_yyin = yyin;
}
/* analogous routine (for completeness) */
void init_yyout( output_f )
@@ -240,4 +364,51 @@ FILE *output_f;
yyout = output_f;
}
long
handle_varstring_check()
{
struct lc_vardefs *vd;
yylval.map = (char *) alloc(strlen(yytext)+1);
Strcpy(yylval.map, yytext);
if ((vd = vardef_defined(variable_definitions, yytext, 1))) {
long l = vd->var_type;
long a = ((l & SPOVAR_ARRAY) == SPOVAR_ARRAY);
l = (l & ~SPOVAR_ARRAY);
if (l == SPOVAR_INT) return (a ? VARSTRING_INT_ARRAY : VARSTRING_INT);
if (l == SPOVAR_STRING) return (a ? VARSTRING_STRING_ARRAY : VARSTRING_STRING);
if (l == SPOVAR_VARIABLE) return (a ? VARSTRING_VAR_ARRAY : VARSTRING_VAR);
if (l == SPOVAR_COORD) return (a ? VARSTRING_COORD_ARRAY : VARSTRING_COORD);
if (l == SPOVAR_REGION) return (a ? VARSTRING_REGION_ARRAY : VARSTRING_REGION);
if (l == SPOVAR_MAPCHAR) return (a ? VARSTRING_MAPCHAR_ARRAY : VARSTRING_MAPCHAR);
if (l == SPOVAR_MONST) return (a ? VARSTRING_MONST_ARRAY : VARSTRING_MONST);
if (l == SPOVAR_OBJ) return (a ? VARSTRING_OBJ_ARRAY : VARSTRING_OBJ);
if (l == SPOVAR_SEL) return (a ? VARSTRING_SEL_ARRAY : VARSTRING_SEL);
}
return VARSTRING;
}
void
newline()
{
nh_line_number++;
token_start_pos = 0;
memset(curr_token, 0, 512);
}
void
savetoken(s)
char *s;
{
sprintf(curr_token, "%s", s);
advancepos(s);
}
void
advancepos(s)
char *s;
{
token_start_pos += strlen(s);
}
/*lev_comp.l*/
+1997 -1181
View File
File diff suppressed because it is too large Load Diff
+828 -952
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -1294,6 +1294,11 @@ static const char *build_opts[] = {
#ifdef NEWS
"news file",
#endif
#ifdef MENU_COLOR_REGEX
"menu colors via regular expressions",
#else
"menu colors via pmatch",
#endif
#ifdef OVERLAY
# ifdef MOVERLAY
"MOVE overlays",
+19
View File
@@ -1439,6 +1439,25 @@ P = (108, 145, 182)
MMMMMNNNNNMMMMMM
MMMMMMMMMMMMMMMM
}
# tile 75 (poison cloud)
{
BBBBBBBBBBBBBBBB
BBBBBFFFFFFFBBBB
BBBFFFFFFFFFFBBB
BBFFFFFFFFFGFFBB
BBFFFFFFFFFFFFFB
BFFFFFFFFFFFFGFB
FFFGFFFFFFFFGFFF
FFFFFFFFFFGGFFFF
FFFFFFFFFFFFFGFF
FFGGFFFFFFFGGFFG
FFFFFGGGGGFFFFGG
BGFFFFFFFFFFGGGB
BBGGGFFFFGGGGGGB
BBBGGGGGGGGGGBBB
BBBBBBGGGGBBBBBB
BBBBBBBBBBBBBBBB
}
# tile 75 (cmap 75)
{
AAAAAAADDDDDDAAA
+11
View File
@@ -1462,6 +1462,8 @@ struct WinDesc *cw;
for (page_lines = 0, curr = page_start;
curr != page_end;
page_lines++, curr = curr->next) {
int color = NO_COLOR, attr = ATR_NONE;
boolean menucolr = FALSE;
if (curr->selector)
*rp++ = curr->selector;
@@ -1477,6 +1479,11 @@ struct WinDesc *cw;
* actually output the character. We're faster doing
* this.
*/
if (iflags.use_menu_color &&
(menucolr = get_menu_coloring(curr->str, &color,&attr))) {
term_start_attr(attr);
if (color != NO_COLOR) term_start_color(color);
} else
term_start_attr(curr->attr);
for (n = 0, cp = curr->str;
#ifndef WIN32CON
@@ -1494,6 +1501,10 @@ struct WinDesc *cw;
(void) putchar('#'); /* count selected */
} else
(void) putchar(*cp);
if (iflags.use_menu_color && menucolr) {
if (color != NO_COLOR) term_end_color();
term_end_attr(attr);
} else
term_end_attr(curr->attr);
}
} else {
+22 -3
View File
@@ -17,10 +17,14 @@
@echo LEXYYC set to $(LEXYYC)
!ENDIF
# these won't have an impact unless YACC/LEX are defined
YTABC = y.tab.c
YTABH = y.tab.h
LEXYYC = lex.yy.c
default: all
all: ..\util\lev_yacc.c ..\util\lev_lex.c
all: tools ..\util\lev_yacc.c ..\util\lev_lex.c
rebuild: clean all
@@ -29,15 +33,29 @@ clean:
-del ..\util\lev_yacc.c
-del ..\include\lev_comp.h
tools:
!IFDEF YACC
@echo Yacc-alike set to $(YACC)
@echo YTABC set to $(YTABC)
@echo YTABH set to $(YTABH)
!ENDIF
!IFDEF LEX
@echo Lex-alike set to $(LEX)
@echo LEXYYC set to $(LEXYYC)
!ENDIF
#==========================================
# Level Compiler Stuff
#==========================================
..\util\lev_yacc.c ..\include\lev_comp.h: ..\util\lev_comp.y
!IF "$(YACC)"==""
!IFNDEF YACC
@echo Using pre-built lev_yacc.c and lev_comp.h
@copy ..\sys\share\lev_yacc.c ..\util\lev_yacc.c
@copy ..\sys\share\lev_comp.h ..\include\lev_comp.h
!ELSE
@echo Generating lev_yacc.c and lev_comp.h
chdir ..\util
$(YACC) -d lev_comp.y
copy $(YTABC) $@
@@ -48,10 +66,11 @@ clean:
!ENDIF
..\util\lev_lex.c: ..\util\lev_comp.l
!IF "$(LEX)"==""
!IFNDEF LEX
@echo Using pre-built lev_lex.c
@copy ..\sys\share\lev_lex.c $@
!ELSE
@echo Generating lev_lex.c
chdir ..\util
$(LEX) lev_comp.l
copy $(LEXYYC) $@
-1
View File
@@ -45,7 +45,6 @@ static void nhcoord2display(PNHMapWindow data, int x, int y, LPRECT lpOut);
#if (VERSION_MAJOR < 4) && (VERSION_MINOR < 4) && (PATCHLEVEL < 2)
static void nhglyph2charcolor(short glyph, uchar* ch, int* color);
#endif
static COLORREF nhcolor_to_RGB(int c);
HWND mswin_init_map_window () {
static int run_once = 0;
+1
View File
@@ -12,6 +12,7 @@
#include "global.h"
COLORREF nhcolor_to_RGB (int c);
HWND mswin_init_map_window (void);
void mswin_map_stretch(HWND hWnd, LPSIZE lpsz, BOOL redraw);
int mswin_map_mode(HWND hWnd, int mode);
+10
View File
@@ -917,6 +917,9 @@ BOOL onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
int column;
int spacing = 0;
int color = NO_COLOR, attr;
boolean menucolr = FALSE;
lpdis = (LPDRAWITEMSTRUCT) lParam;
/* If there are no list box items, skip this message. */
@@ -967,6 +970,13 @@ BOOL onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
buf[0] = item->accelerator;
buf[1] = '\x0';
if (iflags.use_menu_color &&
(menucolr = get_menu_coloring(item->str, &color,&attr))) {
/* TODO: use attr too */
if (color != NO_COLOR)
SetTextColor(lpdis->hDC, nhcolor_to_RGB(color));
}
SetRect( &drawRect, x, lpdis->rcItem.top, lpdis->rcItem.right, lpdis->rcItem.bottom );
DrawText(lpdis->hDC, NH_A2W(buf, wbuf, 2), 1, &drawRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
}