diff -rwBEN -U4 nethack-3.4.2-test/dat/Arch.des nethack-3.4.2-diff/dat/Arch.des --- nethack-3.4.2-test/dat/Arch.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Arch.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, Lord Carnarvon # and receive your quest assignment. # MAZE: "Arc-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP ............................................................................ ............................................................................ @@ -33,9 +33,10 @@ ............................................................................ ............................................................................ ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION: (21,05,57,15),lit,"ordinary",inside REGION: (22,06,23,06),unlit,"ordinary" REGION: (25,06,30,06),unlit,"ordinary" REGION: (32,06,48,06),unlit,"ordinary" REGION: (50,06,56,08),lit,"ordinary" @@ -117,9 +118,9 @@ # to go further towards your assigned quest. # MAZE: "Arc-loca",' ' -FLAGS: hardfloor +FLAGS: hardfloor,skylevel GEOMETRY:center,center MAP ............................................................................ ............................................................................ @@ -142,9 +143,10 @@ ............................................................................ ............................................................................ ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(24,03,54,17),lit,"ordinary",inside REGION:(25,04,28,07),lit,"temple" REGION:(25,09,28,11),unlit,"temple" REGION:(25,13,28,16),lit,"temple" REGION:(30,04,30,16),lit,"ordinary" diff -rwBEN -U4 nethack-3.4.2-test/dat/Barb.des nethack-3.4.2-diff/dat/Barb.des --- nethack-3.4.2-test/dat/Barb.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Barb.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, Pelias, # and receive your quest assignment. # MAZE: "Bar-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP ..................................PP........................................ ...................................PP....................................... @@ -33,18 +33,18 @@ ....................................PP...PP................................. ....................................PP....PP................................ ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" -REGION:(09,05,11,05),unlit,"ordinary" -REGION:(09,07,11,07),lit,"ordinary" -REGION:(09,09,11,09),unlit,"ordinary" -REGION:(13,05,20,09),lit,"ordinary" -REGION:(29,05,31,06),lit,"ordinary" -REGION:(26,10,28,11),lit,"ordinary" -REGION:(04,13,06,14),lit,"ordinary" -REGION:(15,13,17,14),lit,"ordinary" -REGION:(22,14,24,15),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(09,05,11,05),unlit,"ordinary",inside +REGION:(09,07,11,07),lit,"ordinary",inside +REGION:(09,09,11,09),unlit,"ordinary",inside +REGION:(13,05,20,09),lit,"ordinary",inside +REGION:(29,05,31,06),lit,"ordinary",inside +REGION:(26,10,28,11),lit,"ordinary",inside +REGION:(04,13,06,14),lit,"ordinary",inside +REGION:(15,13,17,14),lit,"ordinary",inside +REGION:(22,14,24,15),lit,"ordinary",inside # Stairs STAIR:(09,09),down # Portal arrival point BRANCH:(62,02,62,02),(0,0,0,0) @@ -98,9 +98,9 @@ # further towards your assigned quest. # MAZE: "Bar-loca",' ' -FLAGS: hardfloor +FLAGS: hardfloor,skylevel GEOMETRY:center,center MAP ..........PPP......................................... ...........PP.......................................... ....... @@ -123,15 +123,15 @@ ...............PP.................................................... ................PPP................................................... ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" -REGION:(24,03,26,04),unlit,"ordinary" -REGION:(31,08,33,09),unlit,"ordinary" -REGION:(35,14,37,15),unlit,"ordinary" -REGION:(39,03,54,08),lit,"ordinary" -REGION:(56,00,75,08),unlit,"ordinary" -REGION:(64,09,75,16),unlit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(24,03,26,04),unlit,"ordinary",inside +REGION:(31,08,33,09),unlit,"ordinary",inside +REGION:(35,14,37,15),unlit,"ordinary",inside +REGION:(39,03,54,08),lit,"ordinary",inside +REGION:(56,00,75,08),unlit,"ordinary",inside +REGION:(64,09,75,16),unlit,"ordinary",inside # Doors DOOR:open,(23,03) DOOR:open,(30,08) DOOR:open,(34,14) @@ -304,9 +304,10 @@ # and goal levels. # MAZE: "Bar-fila" , ' ' -INIT_MAP: '.' , '.' , true , true , unlit , false +FLAGS: skylevel +INIT_MAP: '.' , '.' , true , true , unlit , false , outside NOMAP # STAIR: random, up STAIR: random, down diff -rwBEN -U4 nethack-3.4.2-test/dat/Healer.des nethack-3.4.2-diff/dat/Healer.des --- nethack-3.4.2-test/dat/Healer.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Healer.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, Hippocrates # and receive your quest assignment. # MAZE: "Hea-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP PPPP........PPPP.....PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP.P..PPPPP......PPPPPPPP @@ -33,9 +33,13 @@ PPP.............PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP....PPPPPP PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(26,06,48,14),lit,"ordinary",inside +REGION:(24,07,25,13),lit,"ordinary",inside +REGION:(49,07,50,13),lit,"ordinary",inside + # Stairs STAIR:(37,9),down # Portal arrival point BRANCH:(04,12,04,12),(0,0,0,0) @@ -99,19 +103,20 @@ MONSTER: 'S',random,random,hostile MONSTER: 'S',random,random,hostile MONSTER: 'S',random,random,hostile MONSTER: 'S',random,random,hostile +MONSTER:'y',"will o' wisp",(65,11) # # The "locate" level for the quest. # # Here you have to find the Temple of Coeus to go # further towards your assigned quest. # MAZE: "Hea-loca",' ' -FLAGS: hardfloor +FLAGS: hardfloor,skylevel # -INIT_MAP: '.' , 'P', true , true , lit , false +INIT_MAP: '.' , 'P', true , true , lit , false , outside GEOMETRY:center,center MAP PPPPPPPPPPPPP.......PPPPPPPPPPP PPPPPPPP...............PPPPPPPP @@ -124,9 +129,10 @@ PPPPPPPP...............PPPPPPPP PPPPPPPPPPP........PPPPPPPPPPPP ENDMAP # Dungeon Description -REGION:(00,00,30,09),lit,"ordinary" +REGION:(00,00,30,09),lit,"ordinary",outside +REGION:(10,03,20,06),lit,"ordinary",inside REGION:(12,03,20,06),lit,"temple" # Doors DOOR:closed,(09,04) DOOR:closed,(09,05) @@ -197,9 +203,9 @@ MONSTER: 'S',random,random,hostile MONSTER: 'S',random,random,hostile MONSTER: 'S',random,random,hostile MONSTER: 'S',random,random,hostile - +MONSTER:'y',"will o' wisp",random # # The "goal" level for the quest. # # Here you meet Cyclops your nemesis monster. You have to @@ -207,10 +213,11 @@ # been assigned to retrieve. # MAZE: "Hea-goal", 'P' +FLAGS: skylevel # -INIT_MAP: '.' , 'P' , false , true , lit , false +INIT_MAP: '.' , 'P' , false , true , lit , false , outside GEOMETRY:center,center MAP .P....................................PP. PP.......PPPPPPP....PPPPPPP....PPPP...PP. @@ -225,9 +232,9 @@ P....PPPPP...PPPP..PPPPP...PPPPPPP...PP.. PPP..................................PPP. ENDMAP # Dungeon Description -REGION:(00,00,40,11),lit,"ordinary" +REGION:(00,00,40,11),lit,"ordinary",outside # Stairs STAIR:(39,10),up # Non diggable walls NON_DIGGABLE:(00,00,40,11) @@ -298,9 +305,10 @@ # and goal levels. # MAZE: "Hea-fila" , 'P' -INIT_MAP: '.' , 'P' , false , true , lit , false +FLAGS: skylevel +INIT_MAP: '.' , 'P' , false , true , lit , false , outside NOMAP # STAIR: random, up STAIR: random, down @@ -333,9 +341,10 @@ TRAP: random, random TRAP: random, random MAZE: "Hea-filb" , 'P' -INIT_MAP: '.' , 'P' , false , true , lit , false +FLAGS: skylevel +INIT_MAP: '.' , 'P' , false , true , lit , false , outside NOMAP # STAIR: random, up STAIR: random, down diff -rwBEN -U4 nethack-3.4.2-test/dat/Knight.des nethack-3.4.2-diff/dat/Knight.des --- nethack-3.4.2-test/dat/Knight.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Knight.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,11 +8,11 @@ # Here you meet your (besieged) class leader, King Arthur # and receive your quest assignment. # MAZE: "Kni-strt",'.' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel # This is a kludge to init the level as a lit field. -INIT_MAP: '.' , '.' , false , false , lit , false +INIT_MAP: '.' , '.' , false , false , lit , false,outside GEOMETRY:center,center MAP .................................................. .-----......................................-----. @@ -31,12 +31,18 @@ .-----......................................-----. .................................................. ENDMAP # Dungeon Description -REGION:(00,00,49,15),lit,"ordinary" +REGION:(00,00,49,15),lit,"ordinary",outside +REGION:(03,03,46,12),lit,"ordinary",inside REGION:(04,04,45,11),unlit,"ordinary" REGION:(06,06,22,09),lit,"throne" , unfilled REGION:(27,06,43,09),lit,"ordinary" +REGION:(01,01,05,03),lit,"ordinary",inside +REGION:(44,01,48,03),lit,"ordinary",inside +REGION:(01,12,05,14),lit,"ordinary",inside +REGION:(44,12,48,14),lit,"ordinary",inside + # Portal arrival point BRANCH:(20,14,20,14),(0,0,0,0) # Stairs STAIR:(40,7),down @@ -105,10 +111,10 @@ # further towards your assigned quest. # MAZE: "Kni-loca",' ' -FLAGS: hardfloor -INIT_MAP: '.' , 'P' , false , true , lit , false +FLAGS: hardfloor,skylevel +INIT_MAP: '.' , 'P' , false , true , lit , false , outside GEOMETRY:center,center MAP ...PPP.........PPPP..............PPPP... .PPPP...........PP................PPPP.. @@ -124,9 +130,9 @@ ....PPPP.........PPP.........PPPP..PP... ENDMAP # Dungeon Description # The Isle of Glass is a Tor rising out of the swamps surrounding it. -REGION:(00,00,39,11),lit,"ordinary" +REGION:(00,00,39,11),lit,"ordinary",outside # The top area of the Tor is a holy site. REGION:(09,02,27,09),lit,"temple" # Stairs STAIR:(38,0),up @@ -220,12 +226,12 @@ 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 @@ -234,9 +240,12 @@ MONSTER:'j',"ochre jelly",random,hostile MONSTER:'j',"ochre jelly",random,hostile MONSTER:'j',"ochre jelly",random,hostile MONSTER:'j',random,random,hostile - +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random # # The "goal" level for the quest. # # Here you meet Ixoth your nemesis monster. You have to @@ -268,10 +277,11 @@ ....PPPPP...... ......... .......................... .......PPPP... ENDMAP # Dungeon Description -REGION:(00,00,14,19),lit,"ordinary" -REGION:(15,00,75,19),unlit,"ordinary" +REGION:(00,00,14,19),lit,"ordinary",outside +REGION:(15,00,75,19),unlit,"ordinary",inside +REGION:(11,06,14,11),lit,"ordinary",inside # Stairs STAIR:(03,08),up # Non diggable walls NON_DIGGABLE:(00,00,75,19) @@ -346,9 +356,10 @@ # and goal levels. # MAZE: "Kni-fila" , '.' -INIT_MAP: '.' , 'P' , false , true , lit , false +FLAGS: skylevel +INIT_MAP: '.' , 'P' , false , true , lit , false , outside NOMAP # STAIR: random, up STAIR: random, down @@ -374,9 +385,10 @@ TRAP: random, random TRAP: random, random MAZE: "Kni-filb" , '.' -INIT_MAP: '.' , 'P' , false , true , lit , false +FLAGS: skylevel +INIT_MAP: '.' , 'P' , false , true , lit , false , outside NOMAP # STAIR: random, up STAIR: random, down diff -rwBEN -U4 nethack-3.4.2-test/dat/Monk.des nethack-3.4.2-diff/dat/Monk.des --- nethack-3.4.2-test/dat/Monk.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Monk.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, the Grand Master # and receive your quest assignment. # MAZE: "Mon-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP ............................................................................ ............................................................................ @@ -33,9 +33,11 @@ ............................................................................ ............................................................................ ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(20,03,55,16),lit,"ordinary",inside +REGION:(18,08,19,11),lit,"ordinary",inside REGION:(24,06,33,13),lit,"temple" # Portal arrival point BRANCH:(05,04,05,04),(0,0,0,0) # Stairs diff -rwBEN -U4 nethack-3.4.2-test/dat/Priest.des nethack-3.4.2-diff/dat/Priest.des --- nethack-3.4.2-test/dat/Priest.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Priest.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, High Priest # and receive your quest assignment. # MAZE: "Pri-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP ............................................................................ ............................................................................ @@ -33,9 +33,11 @@ ............................................................................ ............................................................................ ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(20,03,55,16),lit,"ordinary",inside +REGION:(18,08,19,11),lit,"ordinary",inside REGION:(24,06,33,13),lit,"temple" # Portal arrival point BRANCH:(05,04,05,04),(0,0,0,0) # Stairs @@ -63,10 +65,10 @@ ALTAR:(28,09),noalign,altar # High Priest MONSTER:'@',"Arch Priest",(28,10) # The treasure of High Priest -OBJECT:'(',"chest",(27,10) -# knight guards for the audience chamber +OBJECT:'(',"chest",(28,10) +# acolyte guards for the audience chamber MONSTER:'@',"acolyte",(32,07) MONSTER:'@',"acolyte",(32,08) MONSTER:'@',"acolyte",(32,11) MONSTER:'@',"acolyte",(32,12) @@ -95,8 +97,442 @@ MONSTER: 'Z',"human zombie",(18,18) MONSTER: 'Z',"human zombie",(59,10) MONSTER: 'Z',"human zombie",(13,09) MONSTER: 'Z',"human zombie",(01,17) +# jungle temple +MAZE: "Pri-stra",' ' +FLAGS: noteleport,hardfloor,skylevel,arboreal +GEOMETRY:center,center +MAP +T.....T.TT.............................TT...........TTT...TT.TTTTT}}TTT.TT.T +...T..TTT.T..------------------------...TT.TT.......T.T..T.T...TTT}}}.....TT +.TT..TT......|......................|..............TTT...........TT}..T....T +.T......T....|.--------------------.|.....T.T.TT...T.T...T.......T}}........ +....T..TT....|.|..................|.|...TT..TTT................TT}}....TTT.. +.......T.....|.|.----------------.|.|....TT....T...T..T....T....T.}}.....T.. +T.....T......|.|.|..............|.|.|........TT.........T..........}|....... +TT.T.........|.|.|.------------.|.|.|.......TT.T.TT.........T..T...}}....... +TT.T......T..|.|.|.|..|....|..|.|.|.|.......T.TT..TT............TT..}}...... +T..T..T......|.|.|.|..|....|..|.|.|.+.........T.T........T.......T...}...... +T.....T......|.|.|.|..|....|..|.|.|.+................................}...... +TT...........|.|.|.|..|....|..|.|.|.|................T...T..........}}...... +TT..T...T....|.|.|.------------.|.|.|.....TT..............T....T....}}...... +TT...........|.|.|.....|..|.....|.|.|....T................T....TT..}}.T..... +TT....TTT....|.|.-------..-------.|.|....T.....TT...T....T.T....T}}}..T..... +T..T...T.T...|.|.......|..|.......|.|....T..T..T...TT......TT....}}}}T..T... +T..TT..T.....|.---------..---------.|...T..T....................}}T.}....T.. +T...T.....T..|.........|..|.........|.....T..T...T......T.....}}}.TT.T.....T +T....T...T...------------------------..........T....T.....TT.}}.}.....T...TT +TTT........T...........................TT....TTT...T..TTTTT.T}TT.}..T.T..TTT +TTTTTT...TTTT........................TTTTT...TTTTT.T..TTTTT}}}TT}...T.T..TTT +ENDMAP +# Dungeon Description + +REGION:(00,00,75,19),lit,"ordinary",outside +#REGION:(14,02,35,17),unlit,"ordinary",inside +REGION:(24,06,33,13),lit,"temple" +TREES:"notype,looted,swarmed",(00,00,75,19) +TREES[50%]:"banana",(00,00,75,19) +TREES[5%]:"banana,loot",(00,00,75,19) +TREES[2%]:"orange,loot",(00,00,75,19) +# Portal arrival point +BRANCH:(70,10,75,10),(0,0,0,0) +DRAWBRIDGE:(67,06),east,open +# Stairs +STAIR:(25,17),down +# Doors +# Unattended Altar - unaligned due to conflict - player must align it. +ALTAR:(25,10),noalign,altar +# High Priest +MONSTER:'@',"Arch Priest",(24,10) +# The treasure of High Priest +OBJECT:'(',"chest",(24,10) +# acolyte 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) +# Non diggable walls +NON_DIGGABLE:(00,00,75,19) +# Random traps +TRAP:"dart",(20,09) +TRAP:"dart",(20,10) +TRAP:random,random +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: 'f',"jaguar",(54,08) +MONSTER: 'f',"jaguar",(17,00) +MONSTER: 'f',"jaguar",random +# parthenon type temple +MAZE: "Pri-strh",' ' +FLAGS: noteleport,hardfloor,skylevel +GEOMETRY:center,center +MAP +PPPPP.......PPPPP....PPPPPPPPPPPPPPPPPPPP............................... +PPP..........PP.......PPPPPPPPP........................................ +PP..P.........PP......PPP................................................ +PPPP...........PP....................................................... +P..P...........PPPPPP............................................... +P...........PPPPPPPP.............................................. .. +PPP.............P.........-----------------------................. ...... +PP......................--|.|......S..........S.|--............... ....... +PPP...........PPP.......|.S.|......-----------|S|.|............... ....... +PPPPP.......PPPPP.......|.|.|......|...|......|.|.|........................ +P........PPPPPPPP.......+.|.|......S...S......|.|.+....................... +PP......PPP...PP........|.|.|......|...|......|.|.|....................... +P.......PP..............|.|S|-----------......|.S.|.................... +P......PPP...PP.........--|.S..........S......|.|--..................... +PPP.....PPPPPPPP..........-----------------------........................ +PP........................................................................ +PP...............PPP....................................................... +P.................PPPP..................................................... +PP.................PPPP................................................... +PPP...............PPPPPPPPPPP...........PP............................ +ENDMAP +# Dungeon Description +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(26,06,48,14),lit,"ordinary",inside +REGION:(24,07,25,13),lit,"ordinary",inside +REGION:(49,07,50,13),lit,"ordinary",inside +REGION:(29,07,34,11),lit,"temple",inside + +# Stairs +STAIR:(37,10),down +# Portal arrival point +BRANCH:(04,12,04,12),(0,0,0,0) +# Unattended Altar - unaligned due to conflict - player must align it. +ALTAR:(32,09),noalign,altar +# High Priest +MONSTER:'@',"Arch Priest",(32,10) +# The treasure of High Priest +OBJECT:'(',"chest",(32,10) +# Doors +DOOR:locked,(24,10) +DOOR:closed,(26,08) +DOOR:closed,(27,12) +DOOR:locked,(28,13) +DOOR:closed,(35,07) +DOOR:locked,(35,10) +DOOR:locked,(39,10) +DOOR:closed,(39,13) +DOOR:locked,(46,07) +DOOR:closed,(47,08) +DOOR:closed,(48,12) +DOOR:locked,(50,10) +# intern guards for the audience chamber +MONSTER:'@',"acolyte",(29,08) +MONSTER:'@',"acolyte",(29,09) +MONSTER:'@',"acolyte",(29,10) +MONSTER:'@',"acolyte",(29,11) +MONSTER:'@',"acolyte",(40,09) +MONSTER:'@',"acolyte",(40,10) +MONSTER:'@',"acolyte",(40,11) +MONSTER:'@',"acolyte",(40,13) +# Non diggable walls +NON_DIGGABLE:(00,00,75,19) +# Random traps +TRAP:"dart",(25,09) +TRAP:"dart",(25,11) +TRAP:"dart",(49,09) +TRAP:"dart",(49,11) +TRAP:random,random +TRAP:random,random +TRAP:random,random +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",(59,12) +MONSTER: 'Z',"human zombie",(13,08) +MONSTER: 'Z',"human zombie",(54,00) +MONSTER: 'Z',"human zombie",(18,18) +MONSTER: 'Z',"human zombie",(58,10) +MONSTER: 'Z',"human zombie",(20,09) +MONSTER: 'Z',"human zombie",(01,17) +# druid type temple +MAZE: "Pri-strk",'P' +FLAGS: hardfloor,skylevel +GEOMETRY:center,center +MAP +PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP.....PPP.CCCCCCCCCCC..PPPPPPPPPPPPPPPPPPPPP +PPPPPPPP....PPPPPPPP.CCC...PPPP.........PP.CCCCCCC..CCC..PPPPPPPP.......T..P +P...PPPP.....P..PPCCCCC......P................CCCC...CCCC..TPPPP....CCC..T.T +P.......PP..PPP.....PPP.....................T...........CC...TPPP..CCC.PP... +.PP....PP.PPP........PPPPPP...PPPPPPPPPPPPPPPPP.............CCC.PP..CPP.PPP. +.PPPP...............T..TP}PPPPPPPPPPPPPPPPPPPPPPPPPPP}T......CCC C...CP.T..P +...P........PPP......T..PPPP.......-............T.PP}}}.....CCCCC...PPPP...P +..P...P....PPPPP.......}PP.................-.......TP}}P.....C.....PP..PPPPP +.......PP...PPP......P}}P.....-......................}P}P....TCC..PP.....PP. +P..................TT}}PP.............................P}P.......C...T..PPP.P +P..................+.T}P.....................-...-..T}}}P...CC.T..T..CC.PPP. +P..................TT}}P.............................}PP.....CCC......C.PP.. +P.........PP........P}}PP.....-......................}P.......T.CCC..T.PP... +P..............C....PP}}PP.T...............-...CCC..P}P...........CCC....CT. +}P.............CCC..TP}}}PPP....................CCPP}}...........CC....CC..} +}}PPP..PPP.P....CC....P}}}}PPPP.....-..........}}PP}P........T..CC.PP.....}} +}P......TPPPP..P..CC..P}}}}}}}}}}}}}}}}}}}}}}}}}}}}}..CC...T..CCC.}}}}}.}}}} +}}PT..........PP.CC.TTP}}}}.}}}}}}}}}}...}}}}}}}}}P....CCC.....CC.}---}}}--- +}}PPPP...........C.TPPP}}}}}}}}}}}}}}}}...}}}}}}}PP.......PP...C..}|.|---|.| +}}}}}PPPPPPPP..C.PPP}}}}}}}}}....}}}}}}}.}}}}}}}}P....CC...PP..CC}}-|.....|- +}}}}}}}}}}}}PPPPPPP}}}}}}}.....T..}}}}}}}}}}}}}PPP.CCCCC.PPPPTCCC}}}|.....|} +ENDMAP +# Dungeon Description +TELEPORT_REGION:(00,00,75,20),(20,06,52,15) +TELEPORT_REGION:(20,10,27,11),(21,10,23,11) +REGION:(00,00,75,20),lit,"ordinary",outside +REGION:(04,12,04,12),lit,"swamp" +REGION:(30,07,43,14),lit,"temple" + +TREES:"notype,looted,swarmed",(00,00,75,19) +TREES[50%]:"apple",(00,00,75,19) +TREES[25%]:"oak,loot-rand",(00,00,75,19) +# Non diggable walls +NON_DIGGABLE:(00,00,75,20) +# Stairs +STAIR:(71,20),down +#doors and stuff +DOOR:locked,(19,10) +DRAWBRIDGE:(71,17),south,open +# Portal arrival point +BRANCH:(04,12,04,12),(0,0,0,0) +# Unattended Altar - unaligned due to conflict - player must align it. +ALTAR:(39,10),noalign,altar +# High Priest +MONSTER:'@',"Arch Priest",(38,10) +# The treasure of High Priest +OBJECT:'(',"chest",(38,10) + +OBJECT:'`',"boulder",(35,06) +OBJECT:'`',"boulder",(43,07) +OBJECT:'`',"boulder",(30,08) +OBJECT:'`',"boulder",(45,10) +OBJECT:'`',"boulder",(49,10) +OBJECT:'`',"boulder",(30,12) +OBJECT:'`',"boulder",(43,13) +OBJECT:'`',"boulder",(36,15) +TRAP:"teleport",(20,10) +TRAP:"teleport",(53,09) +MONSTER:'@',"acolyte",(36,07) +MONSTER:'@',"acolyte",(42,08) +MONSTER:'@',"acolyte",(31,09) +MONSTER:'@',"acolyte",(44,10) +MONSTER:'@',"acolyte",(34,10) +MONSTER:'@',"acolyte",(31,12) +MONSTER:'@',"acolyte",(42,13) +MONSTER:'@',"acolyte",(36,14) + +TRAP:"bear",(18,10) +TRAP:random,(18,9) +TRAP:random,(18,11) +TRAP:random,random +TRAP:random,random +TRAP:random,random +TRAP:random,random +TRAP:random,random +TRAP:random,random +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random +# Monsters on siege duty. +MONSTER: 'Z',"human zombie",(02,13) +MONSTER: 'Z',"human zombie",(05,04) +MONSTER: 'Z',"human zombie",(11,03) +MONSTER: 'Z',"human zombie",(11,17) +MONSTER: 'Z',"human zombie",(16,14) +MONSTER: 'Z',"human zombie",(17,07) +MONSTER: 'Z',"human zombie",(17,15) +MONSTER: 'Z',"human zombie",(27,03) +MONSTER: 'Z',"human zombie",(50,04) +MONSTER: 'Z',"human zombie",(52,03) +MONSTER: 'Z',"human zombie",(59,13) +MONSTER: 'Z',"human zombie",(67,14) +MONSTER: 'Z',"human zombie",(68,18) +MONSTER: 'Z',"human zombie",(71,04) +# discworld temple +MAZE: "Pri-strT",'.' +FLAGS: noteleport,hardfloor,skylevel +GEOMETRY:center,center +MAP +............................................................................ +........................................||||||||||||||...................... +......................................||| |||.................... +....................................||| ........ |||.................. +.................................|||| .......... |.................. +.................................|| ............ ||................. +..................................|| .............. |||................. +...................................| ................ |................... +...................................| .................. ||.................. +..................................|| .................. ||.................. +...................................+ .................. |................... +...................................| .................. |................... +..................................|| .................. |................... +..................................| .................. |................... +..................................|| ................ ||.................. +...................................|| .............. ||................. +....................................| ............ ||................. +....................................| .......... ||| |.................. +....................................||| ........ ||.|||.................. +......................................|||----S------|...||.................. +............................................................................ +ENDMAP +BRANCH:(04,12,04,12),(0,0,0,0) +# norse, contains a spot for each of the 9 worlds +MAZE: "Pri-strv",' ' +FLAGS: noteleport,hardfloor,skylevel +GEOMETRY:center,center +MAP +............................................IIIIII}}}}}}}}IIII.............. +.............-------...........................IIIIII}}}}IIII............... +............--.....--............................IIIIIIIIIIII............... +..........---.......---................................IIII................. +..........|.........S.|..................................................... +........---S---------.---................................................... +........|.IC|......S....|................................................... +........|CCI|......|....|................................................... +........|C.I---S--------|................................................... +........|II.|........+..+................................................... +........|-S-|........+..+................................................... +........|...------------|................................................... +........|...|......|..LL|................................................... +........|...S......S..L.|................................................... +........---.---------.---................................................... +..........|.|.......S.|..................................................... +..........---.......|--..................................................... +............--.....--....................................................... +.............-------........................................................ +............................................................................ +ENDMAP +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(10,03,22,16),lit,"ordinary",inside +REGION:(08,05,24,14),lit,"ordinary",inside +REGION:(09,06,11,09),unlit,"ordinary",inside +REGION:(13,12,18,13),unlit,"ordinary",inside +REGION:(13,02,19,04),lit,"temple",inside +REGION:(13,15,19,17),unlit,"ordinary",inside +# Portal arrival point +BRANCH:(58,07,70,15),(0,0,0,0) +# altar to be converted +ALTAR:(16,03),noalign,altar +# Stairs +STAIR:(16,16),down +OBJECT:'`',"statue",(16,02),"Norn",5 +OBJECT:'`',"statue",(09,07),"none",1,"Nidhogg" +OBJECT:'`',"statue",(15,06),"none",3,"Freyr" +OBJECT:'`',"statue",(23,06),"storm giant",3,"Thyrm" +OBJECT:'`',"statue",(09,13),"none",5,"Nerthus" +OBJECT:'`',"statue",(16,12),"dwarf king",1 +OBJECT:'`',"statue",(23,13),"Lord Surtur",3 +OBJECT:'`',"statue",(15,16),"none",5,"the ogress Hel" +OBJECT:'`',"statue",(13,09),"none",1,"the Midgard Serpent" +# pyramid like temple +MAZE: "Pri-strw",' ' +FLAGS: noteleport,hardfloor,skylevel +GEOMETRY:center,center +MAP +.......................................................| | |---------------- +.......................................................| | +.......................................................| |------------------ +.......................................................| +.......-----------------------------...................|-------------------- +.......|...|...|...................|........................................ +.......|...|+--|. . . . . . . . . .|--...................................... +.......|.....|.S...................|--...................................... +.......|-+-----|. . . . . . . . . .|........................................ +.......|..|....|...................+........................................ +.......|..|....+...................+........................................ +.......|..S....|. . . . . . . . . .|........................................ +.......|+----S-|...................|--...................................... +.......|...|...|. . . . . . . . . .|--...................................... +.......|...|...|...................|........................................ +.......-----------------------------........................................ +............................................................................ +............................................................................ +............................................................................ +............................................................................ +ENDMAP +# Dungeon Description +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(07,04,35,15),lit,"ordinary",inside +REGION:(08,04,14,15),unlit,"ordinary" +REGION:(11,09,14,11),lit,"temple" +# Portal arrival point +BRANCH:(68,07,74,15),(0,0,0,0) +# Stairs +STAIR:(13,05),down +# Doors +DOOR:locked,(35,09) +DOOR:locked,(35,10) +DOOR:closed,(15,10) +DOOR:locked,(12,06) +DOOR:closed,(15,07) +DOOR:closed,(09,08) +DOOR:closed,(10,11) +DOOR:closed,(08,12) +DOOR:closed,(13,12) +# Unattended Altar - unaligned due to conflict - player must align it. +ALTAR:(12,10),noalign,altar +OBJECT:'`',"statue",(36,07),"none",1,"a sphinx" +OBJECT:'`',"statue",(36,12),"none",1,"a sphinx" +# High Priest +MONSTER:'@',"Arch Priest",(13,10) +# The treasure of High Priest +OBJECT:'(',"chest",(13,10) +# acolyte guards for the audience chamber +MONSTER:'@',"acolyte",(08,05) +MONSTER:'@',"acolyte",(34,14) +MONSTER:'@',"acolyte",(24,06) +MONSTER:'@',"acolyte",(28,12) +MONSTER:'@',"acolyte",(20,08) +MONSTER:'@',"acolyte",(18,08) +MONSTER:'@',"acolyte",(13,13) +MONSTER:'@',"acolyte",(09,10) +# Non diggable walls +NON_DIGGABLE:(00,00,38,19) +# Monsters on siege duty. +MONSTER: 'Z',"human zombie",(41,02) +MONSTER: 'M',"human mummy",(42,08) +MONSTER: 'Z',"human zombie",(03,01) +MONSTER: 'M',"human mummy",(64,05) +MONSTER: 'M',"human mummy",(70,09) +MONSTER: 'Z',"human zombie",(50,03) +MONSTER: 'M',"human mummy",(47,09) +MONSTER: 'M',"human mummy",(51,10) +MONSTER: 'M',"human mummy",(02,12) +MONSTER: 'M',"human mummy",(43,15) +MONSTER: 'M',"human mummy",(74,10) +MONSTER: 'M',"human mummy",(35,17) +MONSTER: 'M',"human mummy",(06,19) +MONSTER: 'M',"human mummy",(47,11) + +MONSTER: 's',"scorpion",random +MONSTER: 's',"scorpion",random +MONSTER: 's',"scorpion",random +MONSTER: 'S', random, (03,10) +MONSTER: 'S', random, (71,12) # # The "locate" level for the quest. # @@ -104,11 +540,11 @@ # further towards your assigned quest. # MAZE: "Pri-loca",' ' -FLAGS: hardfloor +FLAGS: hardfloor,skylevel # This is a kludge to init the level as a lit field. -INIT_MAP: '.' , '.' , false , false , lit , false +INIT_MAP: '.' , '.' , false , false , lit , false , outside GEOMETRY:center,center MAP ........................................ ........................................ @@ -125,13 +561,13 @@ ........................................ ........................................ ENDMAP # Dungeon Description -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:(00,00,09,13),unlit,"morgue",outside +REGION:(09,00,30,01),unlit,"morgue",outside +REGION:(09,12,30,13),unlit,"morgue",outside +REGION:(31,00,39,13),unlit,"morgue",outside +REGION:(11,03,29,10),lit,"temple",filled,true,inside # The altar inside the temple ALTAR:(20,07),noalign,shrine MONSTER:'@',"aligned priest",(20,07),noalign,hostile # Doors diff -rwBEN -U4 nethack-3.4.2-test/dat/Ranger.des nethack-3.4.2-diff/dat/Ranger.des --- nethack-3.4.2-test/dat/Ranger.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Ranger.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,10 +8,10 @@ # Here you meet your (besieged) class leader, Orion, # and receive your quest assignment. # MAZE: "Ran-strt",'.' -FLAGS: noteleport,hardfloor,arboreal -INIT_MAP:'.','.',true,true,lit,false +FLAGS: noteleport,hardfloor,arboreal,skylevel +INIT_MAP:'.','.',true,true,lit,false,outside GEOMETRY:left,center #1234567890123456789012345678901234567890123456789012345678901234567890 MAP .. @@ -36,9 +36,9 @@ ................................... . .. ENDMAP # Dungeon Description -REGION:(00,00,40,20),lit,"ordinary" +REGION:(00,00,40,20),lit,"ordinary",outside # Stairs 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) @@ -293,9 +293,10 @@ # and goal levels. # MAZE: "Ran-fila" , ' ' -INIT_MAP: '.' , 'T', true, true, random, true +FLAGS: skylevel +INIT_MAP: '.' , 'T', true, true, random, true, outside NOMAP # STAIR: random, up STAIR: random, down diff -rwBEN -U4 nethack-3.4.2-test/dat/Rogue.des nethack-3.4.2-diff/dat/Rogue.des --- nethack-3.4.2-test/dat/Rogue.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Rogue.des 2003-11-30 09:37:32.000000000 -0600 @@ -7,45 +7,46 @@ # Here you meet your (besieged) class leader, Master of Thieves # and receive your quest assignment. # MAZE: "Rog-strt",' ' -FLAGS: noteleport, hardfloor, nommap +FLAGS: noteleport, hardfloor, nommap, skylevel GEOMETRY:center,center # 1 2 3 4 5 6 7 #123456789012345678901234567890123456789012345678901234567890123456789012345 MAP ----------------------------------.------------------------------------------ -|.....|.||..........|....|......|.|.........|.......+............---.......| -|.....|..+..........+....---....S.|...-S-----.-----.|............+.+.......| -|.....+.||........---......|....|.|...|.....|.|...|.---.....------.--------| -|-----|.-------|..|........------.-----.....|.--..|...-------..............| -|.....|........------+------..........+.....|..--S---.........------.-----.. -|.....|.------...............-----.}}.--------.|....-------.---....|.+...--| -|..-+--.|....|-----.--------.|...|.....+.....|.|....|.....+.+......|.--....| -|..|....|....|....+.|......|.|...-----.|.....|.--...|.....|.|......|..|....| -|..|.-----S----...|.+....-----...|...|.----..|..|.---....--.---S-----.|----| -|..|.|........|...------.|.S.....|...|....-----.+.|......|..|.......|.|....| -|---.-------..|...|....|.|.|.....|...----.|...|.|---.....|.|-.......|.---..| -...........|..S...|....---.----S----..|...|...+.|..-------.---+-....|...--+| -|---------.---------...|......|....S..|.---...|.|..|...........----.---....| -|........|.........|...+.------....|---.---...|.--+-.----.----....|.+...--+| -|........|.---+---.|----.--........|......-----......|..|..|.--+-.|.-S-.|..| -|........|.|.....|........----------.----.......---.--..|-.|....|.-----.|..| -|----....+.|.....----+---............|..|--------.+.|...SS.|....|.......|..| -|...--+-----.....|......|.------------............---...||.------+--+----..| -|..........S.....|......|.|..........S............|.....||...|.....|....|..| --------------------------.-------------------------------------------------- +---------------------------------,------------------------------------------ +|.....|,||..........|....|......|,|.........|,,,,,,,+............---.......| +|.....|,,+..........+....---....S,|...-S-----,-----,|............+,+.......| +|.....+,||........---......|....|,|...|.....|,|...|,---.....------,--------| +|-----|,-------|..|........------,-----.....|,--..|,,,-------,,,,,,,,,,,,,,| +|.....|,,,,,,,,------+------,,,,,,,,,,+.....|,,--S---,,,,,,,,,------,-----,, +|.....|,------,,,,,,,,,,,,,,,-----,}},--------,|....-------,---....|,+...--| +|..-+--,|....|-----,--------,|...|,,,,,+.....|,|....|.....+,+......|,--....| +|..|,,,,|....|....+,|......|,|...-----,|.....|,--...|.....|,|......|,,|....| +|..|,-----S----...|,+....-----...|...|,----..|,,|.---....--,---S-----,|----| +|..|,|........|...------.|,S.....|...|,,,,-----,+.|......|,,|.......|,|....| +|---,-------..|...|....|.|,|.....|...----,|...|,|---.....|,|-.......|,---..| +,,,,,,,,,,,|..S...|....---,----S----..|,,,|...+,|..-------,---+-....|,,,--+| +|---------,---------...|,,,,,,|....S..|,---...|,|..|,,,,,,,,,,,----.---,,,,| +|........|,,,,,,,,,|...+,------....|---,---...|,--+-,----,----,,,,|.+,,,--+| +|........|,---+---,|----,--........|,,,,,,-----,,,,,,|..|,,|.--+-,|.-S-,|..| +|........|,|.....|,,,,,,,,----------,----,,,,,,,---.--..|-,|....|,-----,|..| +|----....+,|.....----+---,,,,,,,,,,,,|..|--------.+.|...SS,|....|,,,,,,,|..| +|...--+-----.....|......|,------------............---...||,------+--+----..| +|..........S.....|......|,|..........S............|.....||,,,|.....|....|..| +-------------------------,-------------------------------------------------- ENDMAP # Dungeon Description -#REGION:(00,00,75,20),lit,"ordinary" +#REGION:(00,00,75,20),unlit,"ordinary",inside # 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" # Portal arrival point +REGION:(35,06,36,06),unlit,"ordinary",outside BRANCH:(19,09,19,09),(0,0,0,0) # Doors (secret) #DOOR:locked|closed|open,(xx,yy) DOOR: locked, (32, 2) diff -rwBEN -U4 nethack-3.4.2-test/dat/Samurai.des nethack-3.4.2-diff/dat/Samurai.des --- nethack-3.4.2-test/dat/Samurai.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Samurai.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, Lord Sato # and receive your quest assignment. # MAZE: "Sam-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP ..............................................................PP............ ...............................................................PP........... @@ -33,10 +33,12 @@ ............................................................................ ............................................................................ ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(10,02,60,11),lit,"ordinary",inside REGION:(18,03,26,07),lit,"throne",unfilled +REGION:(42,11,60,17),lit,"ordinary",inside # Portal arrival zone BRANCH:(62,12,70,17),(0,0,0,0) # Stairs STAIR:(29,04),down @@ -95,9 +97,9 @@ # further towards your assigned quest. # MAZE: "Sam-loca",' ' -FLAGS: hardfloor +FLAGS: hardfloor,skylevel GEOMETRY:center,center MAP ............................................................................ ............................................................................ @@ -120,9 +122,18 @@ ............................................................................ ............................................................................ ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(10,04,65,15),lit,"ordinary",inside +REGION:(08,02,12,05),lit,"ordinary",inside +REGION:(65,02,69,05),lit,"ordinary",inside +REGION:(08,14,12,17),lit,"ordinary",inside +REGION:(65,14,69,17),lit,"ordinary",inside +REGION:(15,04,19,05),lit,"ordinary",outside +REGION:(56,04,60,05),lit,"ordinary",outside +REGION:(15,14,19,15),lit,"ordinary",outside +REGION:(56,14,60,15),lit,"ordinary",outside # Doors DOOR:locked,(22,04) DOOR:locked,(22,15) DOOR:locked,(53,04) @@ -341,9 +352,10 @@ # and goal levels. # MAZE: "Sam-fila", ' ' -INIT_MAP: '.' , 'P', true, true, random, true +FLAGS: skylevel +INIT_MAP: '.' , 'P', true, true, random, true, outside NOMAP # STAIR: random, up STAIR: random, down diff -rwBEN -U4 nethack-3.4.2-test/dat/Tourist.des nethack-3.4.2-diff/dat/Tourist.des --- nethack-3.4.2-test/dat/Tourist.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Tourist.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, Twoflower # and receive your quest assignment. # MAZE: "Tou-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP .......}}....---------..-------------------------------------------------... ........}}...|.......|..|.-------------------------------------------...|... @@ -33,13 +33,14 @@ ...|.....|......|.....|..................................................... ...-------......-------..................................................... ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside REGION:(14,01,20,03),unlit,"morgue" -REGION:(07,10,11,12),unlit,"ordinary" -REGION:(04,16,08,18),unlit,"ordinary" -REGION:(17,16,21,18),unlit,"ordinary" +REGION:(24,00,72,07),lit,"ordinary",inside +REGION:(07,10,11,12),unlit,"ordinary",inside +REGION:(04,16,08,18),unlit,"ordinary",inside +REGION:(17,16,21,18),unlit,"ordinary",inside REGION:(27,02,32,04),unlit,"ordinary" REGION:(34,02,39,04),unlit,"ordinary" REGION:(41,02,53,04),unlit,"ordinary" REGION:(55,02,60,04),unlit,"ordinary" @@ -136,9 +137,9 @@ # further towards your assigned quest. # MAZE: "Tou-loca",' ' -FLAGS: hardfloor +FLAGS: hardfloor,skylevel GEOMETRY:center,center MAP ---------------------------------------------------------------------------- |....|......|..........|......|......|...|....|.....|......|...............| @@ -161,46 +162,46 @@ |...........|........|.|.....|........................|.....|..............| ---------------------------------------------------------------------------- ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside NON_DIGGABLE:(00,00,75,19) # -REGION:(01,01,04,05),unlit,"morgue" -REGION:(15,03,20,05),lit,"shop" -REGION:(62,03,71,04),lit,"shop" -REGION:(01,17,11,18),lit,"barracks" -REGION:(12,09,20,10),lit,"barracks" -REGION:(53,11,59,14),lit,"zoo" -REGION:(63,14,72,16),lit,"barracks" -REGION:(32,14,40,16),lit,"temple" -# -REGION:(06,01,11,02),random,"ordinary" -REGION:(24,01,29,02),random,"ordinary" -REGION:(31,01,36,02),random,"ordinary" -REGION:(42,01,45,03),random,"ordinary" -REGION:(53,01,58,02),random,"ordinary" -REGION:(24,04,26,05),random,"ordinary" -REGION:(30,06,34,07),random,"ordinary" -REGION:(73,05,74,05),unlit,"ordinary" -REGION:(01,09,04,12),random,"ordinary" -REGION:(01,14,07,15),random,"ordinary" -REGION:(12,12,20,13),random,"ordinary" -REGION:(13,17,20,18),random,"ordinary" -REGION:(22,09,24,10),random,"ordinary" -REGION:(22,12,24,12),random,"ordinary" -REGION:(24,16,28,18),random,"ordinary" -REGION:(28,11,33,12),random,"ordinary" -REGION:(35,11,36,12),lit,"ordinary" -REGION:(38,08,41,12),random,"ordinary" -REGION:(43,07,49,08),random,"ordinary" -REGION:(43,12,49,12),random,"ordinary" -REGION:(44,16,51,16),random,"ordinary" -REGION:(53,06,59,07),random,"ordinary" -REGION:(61,06,71,07),random,"ordinary" -REGION:(55,16,59,18),random,"ordinary" -REGION:(63,11,68,12),random,"ordinary" -REGION:(70,11,72,12),random,"ordinary" +REGION:(01,01,04,05),unlit,"morgue",inside +REGION:(15,03,20,05),lit,"shop",inside +REGION:(62,03,71,04),lit,"shop",inside +REGION:(01,17,11,18),lit,"barracks",inside +REGION:(12,09,20,10),lit,"barracks",inside +REGION:(53,11,59,14),lit,"zoo",inside +REGION:(63,14,72,16),lit,"barracks",inside +REGION:(32,14,40,16),lit,"temple",inside +# +REGION:(06,01,11,02),random,"ordinary",inside +REGION:(24,01,29,02),random,"ordinary",inside +REGION:(31,01,36,02),random,"ordinary",inside +REGION:(42,01,45,03),random,"ordinary",inside +REGION:(53,01,58,02),random,"ordinary",inside +REGION:(24,04,26,05),random,"ordinary",inside +REGION:(30,06,34,07),random,"ordinary",inside +REGION:(73,05,74,05),unlit,"ordinary",inside +REGION:(01,09,04,12),random,"ordinary",inside +REGION:(01,14,07,15),random,"ordinary",inside +REGION:(12,12,20,13),random,"ordinary",inside +REGION:(13,17,20,18),random,"ordinary",inside +REGION:(22,09,24,10),random,"ordinary",inside +REGION:(22,12,24,12),random,"ordinary",inside +REGION:(24,16,28,18),random,"ordinary",inside +REGION:(28,11,33,12),random,"ordinary",inside +REGION:(35,11,36,12),lit,"ordinary",inside +REGION:(38,08,41,12),random,"ordinary",inside +REGION:(43,07,49,08),random,"ordinary",inside +REGION:(43,12,49,12),random,"ordinary",inside +REGION:(44,16,51,16),random,"ordinary",inside +REGION:(53,06,59,07),random,"ordinary",inside +REGION:(61,06,71,07),random,"ordinary",inside +REGION:(55,16,59,18),random,"ordinary",inside +REGION:(63,11,68,12),random,"ordinary",inside +REGION:(70,11,72,12),random,"ordinary",inside # Stairs STAIR:(10,04),up STAIR:(73,05),down # Non diggable walls diff -rwBEN -U4 nethack-3.4.2-test/dat/Valkyrie.des nethack-3.4.2-diff/dat/Valkyrie.des --- nethack-3.4.2-test/dat/Valkyrie.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Valkyrie.des 2003-11-30 09:37:32.000000000 -0600 @@ -8,9 +8,9 @@ # Here you meet your (besieged) class leader, the Norn, # and receive your quest assignment. # MAZE: "Val-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP IIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIPPPPPIIIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...IIIIIIIIIIIIIIIIIIIII @@ -33,10 +33,10 @@ IIIIPPPIIIIIIIIIIIIIIPPLPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.......IIIIII IIIIIIIIIIIIIIIIIIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" -REGION:(27,08,42,12),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(27,08,42,12),lit,"ordinary",inside # Portal arrival point BRANCH:(66,17,66,17),(0,0,0,0) # Stairs STAIR:(18,01),down @@ -87,10 +87,10 @@ # further towards your assigned quest. # MAZE: "Val-loca",' ' -FLAGS: hardfloor -INIT_MAP: '.' , 'I' , true , true , lit , false +FLAGS: hardfloor,skylevel +INIT_MAP: '.' , 'I' , true , true , lit , false , outside GEOMETRY:center,center MAP PPPP.... ....PPPPP. PLP... .PPLLLPP @@ -106,9 +106,13 @@ .PLLP ..PLLP .PPPP.. ....PPPP ENDMAP # Dungeon Description -REGION:(00,00,39,12),lit,"ordinary" +REGION:(00,00,39,12),lit,"ordinary",outside +REGION:(04,02,33,10),lit,"ordinary",inside +REGION:(01,04,35,08),lit,"ordinary",inside +REGION:(34,05,36,10),lit,"ordinary",inside + # Stairs STAIR:(48,14),up STAIR:(20,06),down # Non diggable walls @@ -263,9 +267,10 @@ # and goal levels. # MAZE: "Val-fila" , 'I' -INIT_MAP: '.' , 'I' , true , true , lit, false +FLAGS: skylevel +INIT_MAP: '.' , 'I' , true , true , lit, false , outside NOMAP # STAIR: random, up STAIR: random, down diff -rwBEN -U4 nethack-3.4.2-test/dat/Wizard.des nethack-3.4.2-diff/dat/Wizard.des --- nethack-3.4.2-test/dat/Wizard.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/Wizard.des 2003-11-30 09:37:32.000000000 -0600 @@ -7,9 +7,9 @@ # Here you meet your (besieged) class leader, Neferet the Green # and receive your quest assignment. # MAZE: "Wiz-strt",' ' -FLAGS: noteleport,hardfloor +FLAGS: noteleport,hardfloor,skylevel GEOMETRY:center,center MAP ............................................................................ .....................C....CC.C........................C..................... @@ -32,9 +32,10 @@ ..........C.C.........................C............C...........}}}}}........ ......................CCC.C................................................. ENDMAP # Dungeon Description -REGION:(00,00,75,19),lit,"ordinary" +REGION:(00,00,75,19),lit,"ordinary",outside +REGION:(13,04,33,16),lit,"ordinary",inside REGION:(35,00,49,03),unlit,"ordinary" REGION:(43,12,49,16),unlit,"ordinary" REGION:(19,11,33,15),unlit,"ordinary",unfilled,true REGION:(30,10,31,10),unlit,"ordinary" @@ -101,9 +102,9 @@ # further towards your assigned quest. # MAZE: "Wiz-loca",' ' -FLAGS: hardfloor +FLAGS: hardfloor,skylevel GEOMETRY:center,center MAP ............. ....................................................... .............. .............}}}}}}}.}}}}}}}}}}}}}}}}}}}.}}}}}}}....... @@ -127,10 +128,10 @@ ............. .............}}}}}}}.}}}}}}}}}}}}}}}}}}}.}}}}}}}....... ............. ....................................................... ENDMAP # Dungeon Description -REGION:(00,00,75,20),lit,"ordinary" -REGION:(37,04,65,16),unlit,"ordinary" +REGION:(00,00,75,20),lit,"ordinary",outside +REGION:(37,04,65,16),unlit,"ordinary",inside REGION:(41,08,46,12),lit,"ordinary" REGION:(56,08,61,12),lit,"ordinary" REGION:(48,08,54,08),unlit,"ordinary" REGION:(48,12,54,12),unlit,"ordinary" diff -rwBEN -U4 nethack-3.4.2-test/dat/data.base nethack-3.4.2-diff/dat/data.base --- nethack-3.4.2-test/dat/data.base 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/data.base 2003-11-30 09:37:32.000000000 -0600 @@ -312,8 +312,47 @@ sickly yellow grin, miming Flagg's own. "You'll tell," he whispered. "Oh yes indeed you will." And Dayna knew he was right. [ The Stand, by Stephen King ] +bandersnatch* +whitefood + "Beware the Jabberwock, my son! + The jaws that bite, the claws that catch! + Beware the Jubjub bird, and shun + The frumius Bandersnatch!" + [ Jabberwocky, by Lewis Carroll ] + + "Bandersnatchi are whitefoods," said Kzanol/Greenberg. "They + don't have minds." + "I guessed that. But, son, you've got to remember that they've + had two billion years to develop minds." + "It wouldn't help them. They can't mutate. They were designed + that way. A whitefood is one big cell, with a chromosome as + long as your arm and as thick as your little finger. Radiation + could never affect them.... + [ World of Ptavvs, by Larry Niven ] +banni*k + The Bannik in the Troika + While a peasant sat in front of his izba (cottage), a troika + pulled up to him and a gentleman stepped out. He said to the + peasant, "I would like a tea prepared and people gathered for + a party. Before the party I would for you to heat the bathhouse + and find someone to wash me. I'll pay 100 rubles." + "For 100 rubles, I would be happy to organize the party, and my + own wife would be happy to wash and steam you." Excitedly, the + peasant set to work on the party and sent his wife out to wash + the gentleman. + The evening party was well underway when the peasant realized + they'd been in the bathhouse a very long time. He asked the + coachman what was happening and the coachman said "The gentleman + likes to steam himself for a good long time." + The peasant waited a bit longer, but became worried and peeked + into the bathhouse between the slats. There he saw the gentleman + sitting upon the ledge, peeling the skin from his wife. + Screaming, he ran back to the house where he gathered up all the + guests and ran back to the bathhouse. His dead wife lay there, + alone, with her skin peeled from her body. One hundred rubles sat + on the windowsill. The troika, too, had disappeared. barbarian * barbarian They dressed alike -- in buckskin boots, leathern breeks and deerskin shirts, with broad girdles that held axes and short @@ -683,8 +722,24 @@ with trees_ or _swords_, or needing to be _pulled close around her/his shivering body_. This seems to suggest they are less than practical for anyone on an arduous Tour. [ The Tough Guide to Fantasyland, by Diana Wynne Jones ] +clockwork* + The Automaton Chess-Player was invented in 1769, by Baron Kempelen, + a nobleman of Presburg, in Hungary, who afterwards disposed of it, + together with the secret of its operation, to its present posessor. + [...] + The foregoing observations apply to the appearance of the + Automaton upon its first introduction into the presence + of the spectators. + Maelzel now informs the company that he will disclose to their + view the mechanism of the machine. Taking from his pocket a bunch + of keys he unlocks with one of them, door marked 1 in the cut on + page 424, and throws the cupboard fully open to the inspection of + all present. Its whole interior is apparently filled with wheels, + pinions, levers, and other machinery, crowded very closely together, + so that the eye can penetrate but a little distance into the mass. + [ Maelzel's Chess-Player, by Edgar Allan Poe ] cloud* I wandered lonely as a cloud That floats on high o'er vales and hills, When all at once I saw a crowd, @@ -900,8 +955,12 @@ A wolflike wild dog, Canis dingo, of Australia, having a reddish- or yellowish-brown coat, believed to have been introduced by the aborigines. [Webster's Encyclopedic Unabridged Dictionary of the English Language] +disint*grator + Disintegrators are nightmares made real. You will know them + by the pale green glow of almost anything larger than dust + disintegrating as it hits their skin. dispater Dispater is an arch-devil who rules the city of Dis. He is a powerful mage. djinn* @@ -1443,8 +1502,23 @@ corrosive agents, and therefore well suited for its use in coin and jewelry. [ Webster's New International Dictionary of the English Language, Second Edition ] +gold bug + Hereupon Legrand arose, with a grave and stately air, + and brought me the beetle from a glass case in which + it was enclosed.It was a beautiful scarabaeus, and, at + that time, unknown to naturalists --of course a great + prize in a scientific point of view. There were two + round, black spots near one extremity of the back, and + a long one near the other. The scales were exceedingly + hard and glossy, with all the appearance of burnished + gold. The weight of the insect was very remarkable, + and, taking all things into consideration, I could + hardly blame Jupiter for his opinion respecting it; but + what to make of Legrand's agreement with that opinion, + I could not, for the life of me, tell. + [ The Gold Bug, by Edgar Allan Poe ] gold golem The bellows he set away from the fire, and gathered all the tools wherewith he wrought into a silver chest; and with a sponge wiped he his face and his two hands withal, and his mighty neck and @@ -1520,8 +1594,15 @@ himself what in the world a grid bug was, and hoping that the beam connection -- to which he'd given no thought whatsoever until this moment -- was healthy and sound." [ Tron, novel by Brian Daley, story by Steven Lisberger ] +grue + The grue is a sinister, lurking presence in the dark places + of the earth. Its favorite diet is adventurers, but its + insatiable appetite is tempered by its fear of light. No grue + has ever been seen by the light of day, and few have survived + its fearsome jaws to tell the tale. + [ Zork ] gunyoki The samurai's last meal before battle. It was usually made up of cooked chestnuts, dried seaweed, and sake. hachi @@ -1945,8 +2026,24 @@ With jellyfishes such as these; Particularly Portuguese. [ Lines on Meeting a Portuguese Man-o'-war while Bathing, by Michael Flanders ] +jubjub* + Then a scream, shrill and high, rent the shuddering sky, + And they knew that some danger was near: + The Beaver turned pale to the tip of its tail, + And even the Butcher felt queer. + + He thought of his childhood, left far, far behind- + That blissful and innocent state- + The sound so exactly recalled to his mind + A pencil that sqeaks on a slate! + + "'Tis the voice of the Jubjub!" he suddenly cried + (This man, that they used to call "Dunce"). + "As the Bellman would tell you," he added with pride, + "I have uttered that sentiment once." + [ The Hunting of the Snark, by Lewis Carroll ] juiblex jubilex Little is known about the Faceless Lord, even the correct spelling of his name. He does not have a physical form as @@ -2163,8 +2260,16 @@ Pongo, though a dog born to command, had a twinkle in his eye. They walked side by side with great dignity, only putting the Dearlys on the leash to lead them over crossings. [ The Hundred and One Dalmatians, by Dodie Smith ] +leshy + The leshy (also known as leshii or ljeschi) is a Slavic spirit + of the forest who leads hunters and other tresspassers astray. + They have long green beards, but are seldom seen because their + clothes blend in with the surrounding trees. The best defence + against a leshy is to where your clothes backwards and your + shoes on the wrong feet, keeping it from knowing whether you + are coming or going. lembas* In the morning, as they were beginning to pack their slender goods, Elves that could speak their tongue came to them and brought them many gifts of food and clothing for their @@ -2692,8 +2797,10 @@ hair, escaping as it could below and between the cross bandages, project in curious tails and horns, giving him the strangest appearance conceivable. [ The Invisible Man, by H.G. Wells ] +muskeg + A bog of Northern United States. *naga* *naja* The naga is a mystical creature with the body of a snake and the head of a man or woman. They will fiercely protect the @@ -2772,8 +2879,15 @@ the web to shreds. [ The Encyclopedia of Myths and Legends of All Nations by Herbert Spencer Robinson and Knox Wilson ] +nosferatu + From the bloody sins of mankind a creature will be born which + will seek revenge for the sin committed by the parents and + visited on their children and children's children. Whosoever + lusts after blood without reason is under his spell, the spell + of the vampire NOSFERATU. + [ from _Nosferatu_, written by Henrik Galeen, 1922 ] nunchaku A Japanese flail. *nymph A female creature from Roman and Greek mythology, the nymph @@ -3071,8 +3185,16 @@ ways) than you wandering hobbits have -- more sense in their noses. For they sniff danger ahead which you walk right into; and if they run to save themselves, then they run the right way." [ The Fellowship of the Ring, by J.R.R. Tolkien ] +pooka + Pooka: From old Celtic mythology. A fairy spirit in + animal form. Always very large. The pooka appears + here and there, now and then, to this one and that + one at his own caprice. A wise but mischievous + creature. Very fond of rum-pots, crack-pots, and + how are you, %u? + [ Harvey, by Mary Chase ] *portal Portals can be Mirrors, Pictures, Standing Stones, Stone Circles, Windows, and special gates set up for the purpose. You will travel through them both to distant parts of the @@ -3170,8 +3292,19 @@ due to the claws, hooves, or bites of such animals. quantum mechanic These creatures are not native to this universe; they seem to have strangely derived powers, and unknown motives. +quark + "Three quarks for Muster Mark! + Sure he hasn't got much of a bark + And sure any he has it's all beside the mark." + [ Finnegans Wake, by James Joyce ] + + Quarks are any of a group of hypothetical elementary particles + that are the basic constituents of all hadrons. The six variaties, + or flavours, are up, down, strange, charm, bottom, and top. + Murray Gell-Mann, the physicist who coined the name quark, originally + theorized only three flavors. quasit Quasits are small, evil creatures, related to imps. Their talons release a very toxic poison when used in an attack. quest @@ -3894,8 +4027,25 @@ rule in his place. Later, he too was challenged by his own son, Zeus, and he and his fellow titans were ousted from Mount Olympus. [ Greek Mythology, by Richard Patrick ] +tortoise + The Hare was once boasting of his speed before the other + animals. "I have never yet been beaten," said he, "when I put + forth my full speed. I challenge any one here to race with me." + The Tortoise said quietly, "I accept your challenge." + "That is a good joke," said the Hare; "I could dance round you + all the way." + "Keep your boasting till you've beaten," answered the + Tortoise. "Shall we race?" + So a course was fixed and a start was made. The Hare darted + almost out of sight at once, but soon stopped and, to show his + contempt for the Tortoise, lay down to have a nap. The Tortoise + plodded on and plodded on, and when the Hare awoke from his nap, + he saw the Tortoise just near the winning-post and could not run + up in time to save the race. Then said the Tortoise: + "Slow but steady wins the race." + [ Aesop's Fables ] touch*stone "Gold is tried by a touchstone, men by gold." [ Chilon (c. 560 BC) ] tourist @@ -4017,8 +4167,17 @@ It is made of hardened steel, and is manufactured using a special process, causing it to never rust. The tsurugi is rumored to be so sharp that it can occasionally cut opponents in half! +turtle + At first, the LOGO turtle was a hardware device that was + connected to a computer. Students would place the turtle on a + large piece of paper and then execute turtle commands such as + LEFT, RIGHT, FORWARD, and BACK to draw on the paper. In 1977 a + company called Terrapin Software even produced these hardware + turtles commercially. Later the turtle was a sprite on the + graphical computer screen that could draw lines and pictures + using the same turtle commands that directed the hardware turtles. twoflower guide "Rincewind!" Twoflower sprang off the bed. The wizard jumped back, diff -rwBEN -U4 nethack-3.4.2-test/dat/endgame.des nethack-3.4.2-diff/dat/endgame.des --- nethack-3.4.2-test/dat/endgame.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/endgame.des 2003-11-30 09:37:32.000000000 -0600 @@ -196,10 +196,10 @@ MONSTER:'E',random,random MONSTER:'E',random,random MONSTER:'E',random,random -MONSTER:'J',random,random -MONSTER:'J',random,random +MONSTER:'J',"jabberwock",random +MONSTER:'J',"jubjub bird",random MONSTER:'&',"djinni",random,hostile MONSTER:'&',"djinni",random,hostile MONSTER:'&',"djinni",random,hostile diff -rwBEN -U4 nethack-3.4.2-test/dat/gehennom.des nethack-3.4.2-diff/dat/gehennom.des --- nethack-3.4.2-test/dat/gehennom.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/gehennom.des 2003-11-30 09:37:32.000000000 -0600 @@ -253,8 +253,10 @@ MONSTER:'m',random,random MONSTER:'m',random,random MONSTER:';',"jellyfish",random MONSTER:';',"jellyfish",random +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random # Some random objects OBJECT:'!',random,random OBJECT:'!',random,random OBJECT:'!',random,random diff -rwBEN -U4 nethack-3.4.2-test/dat/medusa.des nethack-3.4.2-diff/dat/medusa.des --- nethack-3.4.2-test/dat/medusa.des 2003-11-30 05:56:50.000000000 -0600 +++ nethack-3.4.2-diff/dat/medusa.des 2003-11-30 09:37:32.000000000 -0600 @@ -94,8 +94,10 @@ MONSTER:'T',"water troll",(51,03) MONSTER:'T',"water troll",(64,11) MONSTER:'S',random,(38,07) MONSTER:'S',random,(38,12) +MONSTER:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random MONSTER:random,random,random MONSTER:random,random,random MONSTER:random,random,random MONSTER:random,random,random @@ -199,8 +201,10 @@ 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:'y',"will o' wisp",random +MONSTER:'y',"will o' wisp",random MONSTER:random,random,(17,07) MONSTER:random,random,(28,11) MONSTER:random,random,(32,13) MONSTER:random,random,(49,09) diff -rwBEN -U4 nethack-3.4.2-test/dat/ttyoptions nethack-3.4.2-diff/dat/ttyoptions --- nethack-3.4.2-test/dat/ttyoptions 2003-11-30 05:59:20.000000000 -0600 +++ nethack-3.4.2-diff/dat/ttyoptions 2003-11-30 09:37:32.000000000 -0600 @@ -4,10 +4,11 @@ Options compiled into this edition: color, debug mode, Elbereth, experience points on status line, insurance files for recovering from crashes, Keystone Kops, - exclusive lock on level 0 file, log file, news file, redo command, - rogue level, saddles and riding, screen clipping, + monster biodiversity, TODO: more buildopts labels, + exclusive lock on level 0 file, log file, mail daemon, news file, + redo command, rogue level, saddles and riding, screen clipping, screen control via WIN32 console I/O, seduction, sinks, tourists, user sounds via pmatch, walled mazes, zero-compressed save files, basic NetHack features. diff -rwBEN -U4 nethack-3.4.2-test/include/config.h nethack-3.4.2-diff/include/config.h --- nethack-3.4.2-test/include/config.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/config.h 2003-11-30 09:37:32.000000000 -0600 @@ -349,9 +349,72 @@ * Enable any of these at your own risk -- there are almost certainly * bugs left here. */ -/*#define GOLDOBJ */ /* Gold is kept on obj chains - Helge Hafting */ +/* #define GOLDOBJ /* Gold is kept on obj chains - Helge Hafting */ +#define WEBB_COLORS + +/*#define USER_SOUNDS /* Use sounds */ + +#define WEBB_FOOD_NAMES +#define WEBB_MUSIC +#define WEBB_WARG_STEED + +#define WEBB_WATERSPOUT_GARGOYLE +#define WEBB_DISINT + +#define WEBB_TREE +#define WEBB_ENVIRONMENT +#define WEBB_GOLDBUG +#define WEBB_TEXT_FIX +#define WEBB_ENGR_LIGHT +/* #define WEBB_AVATAR */ +#define WEBB_CARROLL +/*#define WEBB_TURTLE*/ +#define WEBB_LAME_MONSTERS +#define WEBB_BIODIVERSITY +#define WEBB_MCHARM +#define WEBB_SATYR +#define WEBB_MUTATED_MONST + +#ifdef WEBB_BIODIVERSITY +# ifndef WEBB_MCHARM +# define WEBB_MCHARM +# endif +# ifndef WEBB_SATYR +# define WEBB_SATYR +# endif +# ifndef WEBB_CARROLL +# define WEBB_CARROLL +# endif +# ifndef WEBB_TURTLE +# define WEBB_TURTLE +# endif +# ifndef WEBB_WATERSPOUT_GARGOYLE +# define WEBB_WATERSPOUT_GARGOYLE +# endif +# ifndef WEBB_GOLDBUG +# define WEBB_GOLDBUG +# endif +# ifndef WEBB_DISINT +# define WEBB_DISINT +# endif +# ifndef WEBB_TREE +# define WEBB_TREE +# endif +# ifndef WEBB_LAME_MONSTERS +# define WEBB_LAME_MONSTERS +# endif +#endif + +#ifdef WEBB_ENVIRONMENT +# ifndef WEBB_TREE +# define WEBB_TREE +# endif +#endif + +/* #define WEBB_MONEY */ +#define MAIL /* End of Section 5 */ #include "global.h" /* Define everything else according to choices above */ diff -rwBEN -U4 nethack-3.4.2-test/include/decl.h nethack-3.4.2-diff/include/decl.h --- nethack-3.4.2-test/include/decl.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/decl.h 2003-11-30 09:37:32.000000000 -0600 @@ -250,12 +250,55 @@ #include "you.h" E NEARDATA struct you u; #include "onames.h" +/* WEBB_MONEY quick fix */ +#ifndef GROSCHEN +# define GROSCHEN SILVER_PIECE +#endif +#ifndef GOLD_PIECE +# define GOLD_PIECE ZORKMID +#endif + #ifndef PM_H /* (pm.h has already been included via youprop.h) */ #include "pm.h" #endif +#ifdef WEBB_MUTATED_MONST + +#define PM_KOBOLD_LORD PM_KOBOLD_CHIEFTAIN +#define PM_WOOD_NYMPH PM_DRYAD + +#define PM_BABY_RED_DRAGON PM_BABY_FIREDRAKE +#define PM_BABY_WHITE_DRAGON PM_BABY_LINDWORM +#define PM_BABY_ORANGE_DRAGON PM_BABY_LUNG_DRAGON +#define PM_BABY_BLUE_DRAGON PM_BABY_LEVIATHAN +#define PM_BABY_GREEN_DRAGON PM_BABY_WYVERN +#define PM_BABY_YELLOW_DRAGON PM_BABY_GUIVRE +#define PM_RED_DRAGON PM_FIREDRAKE +#define PM_WHITE_DRAGON PM_LINDWORM +#define PM_ORANGE_DRAGON PM_LUNG_DRAGON +#define PM_BLUE_DRAGON PM_LEVIATHAN +#define PM_GREEN_DRAGON PM_WYVERN +#define PM_YELLOW_DRAGON PM_GUIVRE + + +#define RED_DRAGON_SCALE_MAIL FIREDRAKE_SCALE_MAIL +#define WHITE_DRAGON_SCALE_MAIL LINDWORM_SCALE_MAIL +#define ORANGE_DRAGON_SCALE_MAIL LUNG_DRAGON_SCALE_MAIL +#define BLUE_DRAGON_SCALE_MAIL LEVIATHAN_SCALE_MAIL +#define GREEN_DRAGON_SCALE_MAIL WYVERN_SCALE_MAIL +#define YELLOW_DRAGON_SCALE_MAIL GUIVRE_SCALE_MAIL + +#define RED_DRAGON_SCALES FIREDRAKE_SCALES +#define WHITE_DRAGON_SCALES LINDWORM_SCALES +#define ORANGE_DRAGON_SCALES LUNG_DRAGON_SCALES +#define BLUE_DRAGON_SCALES LEVIATHAN_SCALES +#define GREEN_DRAGON_SCALES WYVERN_SCALES +#define YELLOW_DRAGON_SCALES GUIVRE_SCALES + +#endif + E NEARDATA struct monst youmonst; /* init'd and defined in decl.c */ E NEARDATA struct monst *mydogs, *migrating_mons; E NEARDATA struct mvitals { diff -rwBEN -U4 nethack-3.4.2-test/include/engrave.h nethack-3.4.2-diff/include/engrave.h --- nethack-3.4.2-test/include/engrave.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/engrave.h 2003-11-30 09:37:32.000000000 -0600 @@ -17,9 +17,16 @@ #define BURN 3 #define MARK 4 #define ENGR_BLOOD 5 #define HEADSTONE 6 +#ifndef WEBB_ENGR_LIGHT #define N_ENGRAVE 6 +#else +#define ENGR_LIGHT 7 +#define N_ENGRAVE 7 + unsigned e_id; +#endif + }; #define newengr(lth) (struct engr *)alloc((unsigned)(lth) + sizeof(struct engr)) #define dealloc_engr(engr) free((genericptr_t) (engr)) diff -rwBEN -U4 nethack-3.4.2-test/include/extern.h nethack-3.4.2-diff/include/extern.h --- nethack-3.4.2-test/include/extern.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/extern.h 2003-11-30 09:37:32.000000000 -0600 @@ -320,8 +320,12 @@ /* ### do_name.c ### */ E int FDECL(getpos, (coord *,BOOLEAN_P,const char *)); E struct monst *FDECL(christen_monst, (struct monst *,const char *)); +#ifdef WEBB_BIODIVERSITY +E void FDECL(introduce_mons, (struct monst *)); +E const char * FDECL(rndqname,(int, int)); +#endif E int NDECL(do_mname); E struct obj *FDECL(oname, (struct obj *,const char *)); E int NDECL(ddocall); E void FDECL(docall, (struct obj *)); @@ -338,16 +342,22 @@ E char *FDECL(Amonnam, (struct monst *)); E char *FDECL(a_monnam, (struct monst *)); E char *FDECL(distant_monnam, (struct monst *,int,char *)); E const char *NDECL(rndmonnam); +#ifdef WEBB_ENVIRONMENT +E const char *NDECL(rndhalmonnam); +#endif E const char *FDECL(hcolor, (const char *)); E const char *NDECL(rndcolor); #ifdef REINCARNATION E const char *NDECL(roguename); #endif E struct obj *FDECL(realloc_obj, (struct obj *, int, genericptr_t, int, const char *)); E char *FDECL(coyotename, (struct monst *,char *)); +#ifdef WEBB_TREE +E char *FDECL(rmname, (struct rm *)); +#endif /* ### do_wear.c ### */ #ifdef USE_TRAMPOLI @@ -366,16 +376,24 @@ E int NDECL(Armor_gone); E int NDECL(Helmet_off); E int NDECL(Gloves_off); E int NDECL(Boots_off); +#ifdef WEBB_BIODIVERSITY +#ifndef USE_TRAMPOLI +E int NDECL(Boots_on); +#endif +#endif E int NDECL(Cloak_off); E int NDECL(Shield_off); E void NDECL(Amulet_off); E void FDECL(Ring_on, (struct obj *)); E void FDECL(Ring_off, (struct obj *)); E void FDECL(Ring_gone, (struct obj *)); E void FDECL(Blindf_on, (struct obj *)); E void FDECL(Blindf_off, (struct obj *)); +#ifdef WEBB_LAME_MONSTERS +E int FDECL(Blemmye_blindness, (struct monst *)); +#endif E int NDECL(dotakeoff); E int NDECL(doremring); E int FDECL(cursed, (struct obj *)); E int FDECL(armoroff, (struct obj *)); @@ -511,8 +529,12 @@ E int NDECL(eatmdone); E int NDECL(eatfood); E int NDECL(opentin); E int NDECL(unfaint); +#ifdef WEBB_BIODIVERSITY +E int NDECL(rehumanize_wrapper); +E int NDECL(windclock); +#endif #endif E boolean FDECL(is_edible, (struct obj *)); E void NDECL(init_uhunger); E int NDECL(Hear_again); @@ -535,9 +557,11 @@ E void FDECL(food_substitution, (struct obj *,struct obj *)); E void NDECL(fix_petrification); E void FDECL(consume_oeaten, (struct obj *,int)); E boolean FDECL(maybe_finished_meal, (BOOLEAN_P)); - +#ifdef WEBB_BIODIVERSITY +E int FDECL(start_clockwinding, (struct obj * )); +#endif /* ### end.c ### */ E void FDECL(done1, (int)); E int NDECL(done2); @@ -560,8 +584,11 @@ E boolean NDECL(can_reach_floor); E const char *FDECL(surface, (int,int)); E const char *FDECL(ceiling, (int,int)); E struct engr *FDECL(engr_at, (XCHAR_P,XCHAR_P)); +#ifdef WEBB_ENGR_LIGHT +E struct engr *FDECL(find_eid, (unsigned )); +#endif #ifdef ELBERETH E int FDECL(sengr_at, (const char *,XCHAR_P,XCHAR_P)); #endif E void FDECL(u_wipe_engr, (int)); @@ -660,9 +687,13 @@ /* ### fountain.c ### */ E void FDECL(floating_above, (const char *)); +#ifdef WEBB_WATERSPOUT_GARGOYLE +E void FDECL(dogushforth, (int, int, int)); +#else E void FDECL(dogushforth, (int)); +#endif # ifdef USE_TRAMPOLI E void FDECL(gush, (int,int,genericptr_t)); # endif E void FDECL(dryup, (XCHAR_P,XCHAR_P, BOOLEAN_P)); @@ -813,8 +844,15 @@ E int FDECL(count_buc, (struct obj *,int)); E void FDECL(carry_obj_effects, (struct obj *)); E const char *FDECL(currency, (long)); E void FDECL(silly_thing, (const char *,struct obj *)); +#ifdef WEBB_SATYR +E struct obj * FDECL(mon_has_item,(struct monst *, int, int)); +#endif +#ifdef WEBB_GOLDBUG +E struct obj * FDECL(ochain_has_material, + (struct obj *, unsigned int, unsigned int)); +#endif /* ### ioctl.c ### */ #if defined(UNIX) || defined(__BEOS__) @@ -831,8 +869,11 @@ E void FDECL(new_light_source, (XCHAR_P, XCHAR_P, int, int, genericptr_t)); E void FDECL(del_light_source, (int, genericptr_t)); E void FDECL(do_light_sources, (char **)); E struct monst *FDECL(find_mid, (unsigned, unsigned)); +#ifdef WEBB_ENGR_LIGHT +E struct ls_t *FDECL(find_ls, (unsigned)); +#endif E void FDECL(save_light_sources, (int, int, int)); E void FDECL(restore_light_sources, (int)); E void FDECL(relink_light_sources, (BOOLEAN_P)); E void FDECL(obj_move_light_source, (struct obj *, struct obj *)); @@ -910,8 +951,11 @@ E void NDECL(getmailstatus); # endif E void NDECL(ckmailstatus); E void FDECL(readmail, (struct obj *)); +#ifdef WEBB_BIODIVERSITY +E boolean FDECL(md_rush,(struct monst *,int,int)); +#endif #endif /* MAIL */ /* ### makemon.c ### */ @@ -928,8 +972,11 @@ E int FDECL(golemhp, (int)); E boolean FDECL(peace_minded, (struct permonst *)); E void FDECL(set_malign, (struct monst *)); E void FDECL(set_mimic_sym, (struct monst *)); +#ifdef WEBB_BIODIVERSITY +E int NDECL(pick_friendly); +#endif E int FDECL(mbirth_limit, (int)); E void FDECL(mimic_hit_msg, (struct monst *, SHORT_P)); #ifdef GOLDOBJ E void FDECL(mkmonmoney, (struct monst *, long)); @@ -952,8 +999,11 @@ E int FDECL(noattacks, (struct permonst *)); E int FDECL(sleep_monst, (struct monst *,int,int)); E void FDECL(slept_monst, (struct monst *)); E long FDECL(attk_protection, (int)); +#ifdef WEBB_MCHARM +E int FDECL(mcharmm, (struct monst *, struct monst *, int)); +#endif /* ### mhitu.c ### */ E const char *FDECL(mpoisons_subj, (struct monst *,struct attack *)); @@ -968,8 +1018,20 @@ E int FDECL(could_seduce, (struct monst *,struct monst *,struct attack *)); #ifdef SEDUCE E int FDECL(doseduce, (struct monst *)); #endif +#ifdef WEBB_WATERSPOUT_GARGOYLE +E void FDECL(hurtarmor, (int)); +#endif +#ifdef WEBB_MCHARM +E int FDECL(mcharmu, (struct monst *, int, int)); +#endif + +/* ### miditest.c ### */ + +#ifdef WEBB_MUSIC +E int FDECL(play_midi, (short, char*,short)); +#endif /* ### minion.c ### */ E void FDECL(msummon, (struct monst *)); @@ -987,11 +1049,17 @@ #ifdef USE_TRAMPOLI E int FDECL(do_comp, (genericptr_t,genericptr_t)); #endif E void NDECL(sort_rooms); +#ifdef WEBB_ENVIRONMENT +E void FDECL(add_room, (int,int,int,int,BOOLEAN_P,SCHAR_P,BOOLEAN_P,uchar)); +E void FDECL(add_subroom, (struct mkroom *,int,int,int,int, + BOOLEAN_P,SCHAR_P,BOOLEAN_P, uchar)); +#else E void FDECL(add_room, (int,int,int,int,BOOLEAN_P,SCHAR_P,BOOLEAN_P)); E void FDECL(add_subroom, (struct mkroom *,int,int,int,int, BOOLEAN_P,SCHAR_P,BOOLEAN_P)); +#endif E void NDECL(makecorridors); E void FDECL(add_door, (int,int,struct mkroom *)); E void NDECL(mklev); #ifdef SPECIALIZATION @@ -1008,9 +1076,13 @@ E void NDECL(mkinvokearea); /* ### mkmap.c ### */ +#ifdef WEBB_ENVIRONMENT +void FDECL(flood_fill_rm, (int,int,int,BOOLEAN_P,BOOLEAN_P,uchar)); +#else void FDECL(flood_fill_rm, (int,int,int,BOOLEAN_P,BOOLEAN_P)); +#endif void FDECL(remove_rooms, (int,int,int,int)); /* ### mkmaze.c ### */ @@ -1099,8 +1171,11 @@ E int FDECL(pm_to_cham, (int)); E int FDECL(minliquid, (struct monst *)); E int NDECL(movemon); E int FDECL(meatmetal, (struct monst *)); +#ifdef WEBB_GOLDBUG +E int FDECL(meatmetal_effects, (struct monst *, struct obj *)); +#endif E int FDECL(meatobj, (struct monst *)); E void FDECL(mpickgold, (struct monst *)); E boolean FDECL(mpickstuff, (struct monst *,const char *)); E int FDECL(curr_mon_load, (struct monst *)); @@ -1114,8 +1189,11 @@ E void FDECL(replmon, (struct monst *,struct monst *)); E void FDECL(relmon, (struct monst *)); E struct obj *FDECL(mlifesaver, (struct monst *)); E boolean FDECL(corpse_chance,(struct monst *,struct monst *,BOOLEAN_P)); +#ifdef WEBB_DISINT +E void FDECL(mondead_helper, (struct monst *, uchar)); +#endif E void FDECL(mondead, (struct monst *)); E void FDECL(mondied, (struct monst *)); E void FDECL(mongone, (struct monst *)); E void FDECL(monstone, (struct monst *)); @@ -1145,8 +1223,11 @@ E void NDECL(kill_genocided_monsters); E void FDECL(golemeffects, (struct monst *,int,int)); E boolean FDECL(angry_guards, (BOOLEAN_P)); E void NDECL(pacify_guards); +#ifdef WEBB_BIODIVERSITY +E int FDECL(cobble_there, (struct monst *)); +#endif /* ### mondata.c ### */ E void FDECL(set_mon_data, (struct monst *,struct permonst *,int)); @@ -1194,8 +1275,11 @@ E boolean FDECL(closed_door, (int,int)); E boolean FDECL(accessible, (int,int)); E void FDECL(set_apparxy, (struct monst *)); E boolean FDECL(can_ooze, (struct monst *)); +#ifdef WEBB_BIODIVERSITY +E int FDECL(wind_clockwork, (struct monst *, struct monst *)); +#endif /* ### monst.c ### */ E void NDECL(monst_init); @@ -1373,8 +1457,12 @@ E char *FDECL(makesingular, (const char *)); E struct obj *FDECL(readobjnam, (char *,struct obj *,BOOLEAN_P)); E int FDECL(rnd_class, (int,int)); E const char *FDECL(cloak_simple_name, (struct obj *)); +#ifdef WEBB_FOOD_NAMES +E boolean FDECL(culinary, (struct permonst *)); +E char *FDECL(culinary_name, (struct permonst *)); +#endif E const char *FDECL(mimic_obj_name, (struct monst *)); /* ### options.c ### */ @@ -1466,8 +1554,14 @@ #endif E void FDECL(add_valid_menu_class, (int)); E boolean FDECL(allow_all, (struct obj *)); E boolean FDECL(allow_category, (struct obj *)); +#ifdef WEBB_BIODIVERSITY +E boolean FDECL(allow_unused, (struct obj *)); +#endif +#ifdef WEBB_MONEY +E boolean FDECL(allow_cash, (struct obj *)); +#endif E boolean FDECL(is_worn_by_type, (struct obj *)); #ifdef USE_TRAMPOLI E int FDECL(ck_bag, (struct obj *)); E int FDECL(in_container, (struct obj *)); @@ -1519,8 +1613,11 @@ E int NDECL(doremove); E int NDECL(dospinweb); E int NDECL(dosummon); E int NDECL(dogaze); +#ifdef WEBB_MCHARM +E int NDECL(docharm); +#endif E int NDECL(dohide); E int NDECL(domindblast); E void FDECL(skinback, (BOOLEAN_P)); E const char *FDECL(mbodypart, (struct monst *,int)); @@ -1636,8 +1733,11 @@ #ifdef USE_TRAMPOLI E void FDECL(set_lit, (int,int,genericptr_t)); #endif E void FDECL(litroom, (BOOLEAN_P,struct obj *)); +#ifdef WEBB_BIODIVERSITY +E void FDECL(litroom_mon, (BOOLEAN_P, struct obj *, int, int)); +#endif E void FDECL(do_genocide, (int)); E void FDECL(punish, (struct obj *)); E void NDECL(unpunish); E boolean FDECL(cant_create, (int *, BOOLEAN_P)); @@ -1816,8 +1916,12 @@ E void FDECL(check_unpaid, (struct obj *)); E void FDECL(costly_gold, (XCHAR_P,XCHAR_P,long)); E boolean FDECL(block_door, (XCHAR_P,XCHAR_P)); E boolean FDECL(block_entry, (XCHAR_P,XCHAR_P)); +#ifdef WEBB_BIODIVERSITY +E long FDECL(get_cost, (struct obj *, struct monst *)); +E int FDECL(buy_minvent, (struct monst *)); +#endif E char *FDECL(shk_your, (char *,struct obj *)); E char *FDECL(Shk_Your, (char *,struct obj *)); /* ### shknam.c ### */ @@ -1855,10 +1959,15 @@ /* ### sp_lev.c ### */ E boolean FDECL(check_room, (xchar *,xchar *,xchar *,xchar *,BOOLEAN_P)); +#ifdef WEBB_ENVIRONMENT +E boolean FDECL(create_room, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P, + XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P, uchar)); +#else E boolean FDECL(create_room, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P, XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P)); +#endif E void FDECL(create_secret_door, (struct mkroom *,XCHAR_P)); E boolean FDECL(dig_corridor, (coord *,coord *,BOOLEAN_P,SCHAR_P,SCHAR_P)); E void FDECL(fill_room, (struct mkroom *,BOOLEAN_P)); E boolean FDECL(load_special, (const char *)); @@ -1997,8 +2106,12 @@ E void FDECL(seetrap, (struct trap *)); E int FDECL(mintrap, (struct monst *)); E void FDECL(instapetrify, (const char *)); E void FDECL(minstapetrify, (struct monst *,BOOLEAN_P)); +#ifdef WEBB_DISINT +E int FDECL(instadisintegrate, (const char *)); +E int FDECL(minstadisintegrate, (struct monst *)); +#endif E void FDECL(selftouch, (const char *)); E void FDECL(mselftouch, (struct monst *,const char *,BOOLEAN_P)); E void NDECL(float_up); E void FDECL(fill_pit, (int,int)); diff -rwBEN -U4 nethack-3.4.2-test/include/hack.h nethack-3.4.2-diff/include/hack.h --- nethack-3.4.2-test/include/hack.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/hack.h 2003-11-30 09:37:32.000000000 -0600 @@ -73,14 +73,24 @@ #define DISSOLVED 6 #define CRUSHING 7 #define STONING 8 #define TURNED_SLIME 9 +#ifdef WEBB_DISINT +# define DISINTEGRATED 10 +# define GENOCIDED 11 +# define PANICKED 12 +# define TRICKED 13 +# define QUIT 14 +# define ESCAPED 15 +# define ASCENDED 16 +#else #define GENOCIDED 10 #define PANICKED 11 #define TRICKED 12 #define QUIT 13 #define ESCAPED 14 #define ASCENDED 15 +#endif #include "align.h" #include "dungeon.h" #include "monsym.h" @@ -151,8 +161,11 @@ #define USE_INVLET 0x4 /* use object's invlet */ #define INVORDER_SORT 0x8 /* sort objects by packorder */ #define SIGNAL_NOMENU 0x10 /* return -1 rather than 0 if none allowed */ #define FEEL_COCKATRICE 0x20 /* engage cockatrice checks and react */ +#ifdef WEBB_BIODIVERSITY +#define PRICES 0x40 /* print out prices */ +#endif /* Flags to control query_category() */ /* BY_NEXTHERE used by query_category() too, so skip 0x01 */ #define UNPAID_TYPES 0x02 diff -rwBEN -U4 nethack-3.4.2-test/include/monattk.h nethack-3.4.2-diff/include/monattk.h --- nethack-3.4.2-test/include/monattk.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/monattk.h 2003-11-30 09:37:32.000000000 -0600 @@ -23,8 +23,11 @@ #define AT_EXPL 13 /* explodes - proximity */ #define AT_BOOM 14 /* explodes when killed */ #define AT_GAZE 15 /* gaze - ranged */ #define AT_TENT 16 /* tentacles */ +#ifdef WEBB_SATYR +#define AT_NTCH 17 /* adjacent, no touching */ +#endif #define AT_WEAP 254 /* uses weapon */ #define AT_MAGC 255 /* uses magic spell(s) */ @@ -78,8 +81,25 @@ #define AD_SLIM 40 /* turns you into green slime */ #define AD_ENCH 41 /* remove enchantment (disenchanter) */ #define AD_CORR 42 /* corrode armor (black pudding) */ + +#ifdef WEBB_GOLDBUG +#define AD_EGLD 43 /* eats gold (gold bug) */ +#endif +#ifdef WEBB_BIODIVERSITY +#define AD_SCLD 44 /* scald, similar to AD_FIRE */ +#define AD_FLVR 45 /* quark flavour attacks */ +#endif +#ifdef WEBB_MCHARM +#define AD_CHRM 46 /* monster charms you and other monsters */ +#endif +#ifdef WEBB_BIODIVERSITY +#define AD_SHOE 47 /* brownie damages, steals, or fixes shoes */ +#define AD_HNGY 48 /* a mini version of FAMN, should fake a higher + hunger rating instead */ +#endif + #define AD_CLRC 240 /* random clerical spell */ #define AD_SPEL 241 /* random magic spell */ #define AD_RBRE 242 /* random breath weapon */ diff -rwBEN -U4 nethack-3.4.2-test/include/mondata.h nethack-3.4.2-diff/include/mondata.h --- nethack-3.4.2-test/include/mondata.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/mondata.h 2003-11-30 09:37:32.000000000 -0600 @@ -45,8 +45,22 @@ #define nolimbs(ptr) (((ptr)->mflags1 & M1_NOLIMBS) == M1_NOLIMBS) #define notake(ptr) (((ptr)->mflags1 & M1_NOTAKE) != 0L) #define has_head(ptr) (((ptr)->mflags1 & M1_NOHEAD) == 0L) #define has_horns(ptr) (num_horns(ptr) > 0) +#ifdef WEBB_BIODIVERSITY +# define does_rust(ptr) ((ptr) == &mons[PM_IRON_GOLEM] || \ + ((ptr) == &mons[PM_CLOCKWORK_AUTOMATON] && rn2(2))) +# define is_insect(ptr) ((ptr)->mlet == S_ANT || (ptr)->mlet == S_SPIDER ||\ + (ptr)->mlet == S_XAN) + +# define has_bones(ptr) (has_head(ptr) && !(noncorporeal(ptr) || \ + is_insect(ptr) || (ptr)->mlet == S_PIERCER || \ + (ptr)->mlet == S_WORM || (ptr)->mlet == S_WORM_TAIL \ + || (ptr)->mlet == S_XORN || ((ptr)->mlet == S_GOLEM \ + && (ptr) != &mons[PM_FLESH_GOLEM])|| \ + (ptr) == &mons[PM_JELLYFISH] || \ + (ptr) == &mons[PM_KRAKEN])) +#endif #define is_whirly(ptr) ((ptr)->mlet == S_VORTEX || \ (ptr) == &mons[PM_AIR_ELEMENTAL]) #define is_silent(ptr) ((ptr)->msound == MS_SILENT) #define unsolid(ptr) (((ptr)->mflags1 & M1_UNSOLID) != 0L) @@ -157,8 +171,12 @@ #define touch_petrifies(ptr) ((ptr) == &mons[PM_COCKATRICE] || \ (ptr) == &mons[PM_CHICKATRICE]) +#ifdef WEBB_DISINT +# define touch_disintegrates(ptr) ((ptr) == &mons[PM_DISINTEGRATOR]) +#endif + #define is_mind_flayer(ptr) ((ptr) == &mons[PM_MIND_FLAYER] || \ (ptr) == &mons[PM_MASTER_MIND_FLAYER]) #define nonliving(ptr) (is_golem(ptr) || is_undead(ptr) || \ @@ -180,8 +198,15 @@ noncorporeal(ptr)) #define vegetarian(ptr) (vegan(ptr) || \ ((ptr)->mlet == S_PUDDING && \ (ptr) != &mons[PM_BLACK_PUDDING])) +#ifdef WEBB_CARROLL +#define yeasty_food(ptr) ((ptr)->mlet == S_BLOB || \ + (ptr)->mlet == S_JELLY || \ + (ptr)->mlet == S_FUNGUS || \ + (ptr)->mlet == S_PUDDING || \ + (ptr) == &mons[PM_JUIBLEX]) +#endif #define befriend_with_obj(ptr, obj) ((obj)->oclass == FOOD_CLASS && \ is_domestic(ptr)) diff -rwBEN -U4 nethack-3.4.2-test/include/monflag.h nethack-3.4.2-diff/include/monflag.h --- nethack-3.4.2-test/include/monflag.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/monflag.h 2003-11-30 09:37:32.000000000 -0600 @@ -47,8 +47,11 @@ #define MS_PRIEST 36 /* ask for contribution; do cleansing */ #define MS_SPELL 37 /* spellcaster not matching any of the above */ #define MS_WERE 38 /* lycanthrope in human form */ #define MS_BOAST 39 /* giants */ +#ifdef WEBB_AVATAR +#define MS_AVATAR 41 /* special text for the avatar of RNGs */ +#endif #define MR_FIRE 0x01 /* resists fire */ #define MR_COLD 0x02 /* resists cold */ @@ -159,8 +162,12 @@ /* Infravision is currently implemented for players only */ #define M3_INFRAVISION 0x0100 /* has infravision */ #define M3_INFRAVISIBLE 0x0200 /* visible by infravision */ +#ifdef WEBB_AVATAR +#define M3_AVATAR 0x0400 +#endif + #define MZ_TINY 0 /* < 2' */ #define MZ_SMALL 1 /* 2-4' */ #define MZ_MEDIUM 2 /* 4-7' */ #define MZ_HUMAN MZ_MEDIUM /* human-sized */ diff -rwBEN -U4 nethack-3.4.2-test/include/monst.h nethack-3.4.2-diff/include/monst.h --- nethack-3.4.2-test/include/monst.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/monst.h 2003-11-30 09:37:32.000000000 -0600 @@ -96,8 +96,12 @@ Bitfield(mcanmove,1); /* paralysis, similar to mblinded */ Bitfield(mfrozen,7); Bitfield(msleeping,1); /* asleep until woken */ +#ifdef WEBB_MCHARM + Bitfield(mpeacetim,7); /* if non-zero, peacefulness times out, + if 127, expires at monster's choice */ +#endif Bitfield(mstun,1); /* stunned (off balance) */ Bitfield(mconf,1); /* confused */ Bitfield(mpeaceful,1); /* does not attack unprovoked */ Bitfield(mtrapped,1); /* trapped in a pit, web or bear trap */ @@ -170,8 +174,19 @@ /* these are in mspeed */ #define MSLOW 1 /* slow monster */ #define MFAST 2 /* speeded monster */ +#ifdef WEBB_BIODIVERSITY +# define CLOCKWORK_PANIC 20 +# define CLOCKWORK_LOW 400 +# define CLOCKWORK_MED 1000 +# define CLOCKWORK_HIGH 1800 +# define CLOCKWORK_MAX 2000 +# define CLOCKWORK_WIND 50 +#endif + + + #define NAME(mtmp) (((char *)(mtmp)->mextra) + (mtmp)->mxlth) #define MON_WEP(mon) ((mon)->mw) #define MON_NOWEP(mon) ((mon)->mw = (struct obj *)0) diff -rwBEN -U4 nethack-3.4.2-test/include/monsym.h nethack-3.4.2-diff/include/monsym.h --- nethack-3.4.2-test/include/monsym.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/monsym.h 2003-11-30 09:37:32.000000000 -0600 @@ -66,13 +66,25 @@ #define S_GOLEM 55 #define S_DEMON 56 #define S_EEL 57 #define S_LIZARD 58 +#ifdef WEBB_TURTLE +#define S_TURTLE 59 + +#define S_WORM_TAIL 60 +#define S_MIMIC_DEF 61 + +#define MAXMCLASSES 62 /* number of monster classes */ +#else #define S_WORM_TAIL 59 #define S_MIMIC_DEF 60 #define MAXMCLASSES 61 /* number of monster classes */ +#endif + + + #if 0 /* moved to decl.h so that makedefs.c won't see them */ extern const char def_monsyms[MAXMCLASSES]; /* default class symbols */ extern uchar monsyms[MAXMCLASSES]; /* current class symbols */ @@ -138,8 +150,14 @@ #define DEF_GOLEM '\'' #define DEF_DEMON '&' #define DEF_EEL ';' #define DEF_LIZARD ':' +#ifdef WEBB_TURTLE +# if defined(ASCIIGRAPH) +# define IBM_TURTLE 0x1e /* up triangle, LOGO */ +#endif +# define DEF_TURTLE ',' /* what char avaliable in char sets? */ +#endif #define DEF_INVISIBLE 'I' #define DEF_WORM_TAIL '~' #define DEF_MIMIC_DEF ']' diff -rwBEN -U4 nethack-3.4.2-test/include/obj.h nethack-3.4.2-diff/include/obj.h --- nethack-3.4.2-test/include/obj.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/obj.h 2003-11-30 09:37:32.000000000 -0600 @@ -37,8 +37,11 @@ historic and gender for statues */ #define STATUE_HISTORIC 0x01 #define STATUE_MALE 0x02 #define STATUE_FEMALE 0x04 +#ifdef WEBB_ENVIRONMENT +#define STATUE_NONRENAMABLE 0x08 +#endif char oclass; /* object class */ char invlet; /* designation in inventory */ char oartifact; /* artifact array index */ @@ -151,12 +154,23 @@ objects[otmp->otyp].oc_skill <= -P_BOW) #define ammo_and_launcher(otmp,ltmp) \ (is_ammo(otmp) && (ltmp) && \ objects[(otmp)->otyp].oc_skill == -objects[(ltmp)->otyp].oc_skill) +#ifdef WEBB_TREE +# define throwable_nut(otmp) ((otmp->oclass == FOOD_CLASS) && \ + objects[(otmp)->otyp].oc_skill == -P_SLING && \ + !(otmp)->oeaten) +# define is_missile(otmp) ((otmp->oclass == WEAPON_CLASS || \ + throwable_nut(otmp) || \ + otmp->oclass == TOOL_CLASS) && \ + objects[otmp->otyp].oc_skill >= -P_BOOMERANG && \ + objects[otmp->otyp].oc_skill <= -P_DART) +#else #define is_missile(otmp) ((otmp->oclass == WEAPON_CLASS || \ otmp->oclass == TOOL_CLASS) && \ objects[otmp->otyp].oc_skill >= -P_BOOMERANG && \ objects[otmp->otyp].oc_skill <= -P_DART) +#endif #define is_weptool(o) ((o)->oclass == TOOL_CLASS && \ objects[(o)->otyp].oc_skill != P_NONE) #define bimanual(otmp) ((otmp->oclass == WEAPON_CLASS || \ otmp->oclass == TOOL_CLASS) && \ @@ -292,9 +306,19 @@ (otmp)->otyp == RUBBER_HOSE) #else #define is_flimsy(otmp) (objects[(otmp)->otyp].oc_material <= LEATHER) #endif +#ifdef WEBB_DISINT +# define oresist_disintegration(obj) \ + (objects[obj->otyp].oc_oprop == DISINT_RES || \ + obj_resists(obj, 5, 50) || is_quest_artifact(obj) ) +# define weight_dmg(i) { \ + i = (i<=100)?1:i/100; \ + i = rnd(i); \ + if(i > 6) i = 6; \ +} +#endif /* helpers, simple enough to be macros */ #define is_plural(o) ((o)->quan > 1 || \ (o)->oartifact == ART_EYES_OF_THE_OVERWORLD) diff -rwBEN -U4 nethack-3.4.2-test/include/objclass.h nethack-3.4.2-diff/include/objclass.h --- nethack-3.4.2-test/include/objclass.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/objclass.h 2003-11-30 09:37:32.000000000 -0600 @@ -66,8 +66,18 @@ #define is_organic(otmp) (objects[otmp->otyp].oc_material <= WOOD) #define is_metallic(otmp) (objects[otmp->otyp].oc_material >= IRON && \ objects[otmp->otyp].oc_material <= MITHRIL) +#ifdef WEBB_GOLDBUG +#define is_golden(otmp) (objects[otmp->otyp].oc_material == GOLD) +#endif +#ifdef WEBB_BIODIVERSITY +#define is_meaty(otmp) ((/*otmp->otyp == MEAT_RING || \ only HCoM rots + otmp->otyp == MEATBALL ||\ + otmp->otyp == MEAT_STICK ||*/ \ + otmp->otyp == HUGE_CHUNK_OF_MEAT)) +#endif + /* primary damage: fire/rust/--- */ /* is_flammable(otmp), is_rottable(otmp) in mkobj.c */ #define is_rustprone(otmp) (objects[otmp->otyp].oc_material == IRON) @@ -171,8 +181,11 @@ #define ROCK_SYM '`' #define BALL_SYM '0' #define CHAIN_SYM '_' #define VENOM_SYM '.' +#ifdef WEBB_MONEY +#define CENT_SYM (char)0x9B +#endif struct fruit { char fname[PL_FSIZ]; int fid; diff -rwBEN -U4 nethack-3.4.2-test/include/rm.h nethack-3.4.2-diff/include/rm.h --- nethack-3.4.2-test/include/rm.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/rm.h 2003-11-30 09:37:32.000000000 -0600 @@ -66,9 +66,16 @@ #define DRAWBRIDGE_DOWN 33 #define AIR 34 #define CLOUD 35 +#ifdef WEBB_ENVIRONMENT +# define SPOOL 36 +# define MAX_TYPE 37 +#else +/* if this every reaches 64, check the sky from + filemap in sp_lev:load_maze -Webb */ #define MAX_TYPE 36 +#endif #define INVALID_TYPE 127 /* * Avoid using the level types in inequalities: @@ -84,9 +91,14 @@ #define ACCESSIBLE(typ) ((typ) >= DOOR) /* good position */ #define IS_ROOM(typ) ((typ) >= ROOM) /* ROOM, STAIRS, furniture.. */ #define ZAP_POS(typ) ((typ) >= POOL) #define SPACE_POS(typ) ((typ) > DOOR) +#ifdef WEBB_ENVIRONMENT +#define IS_POOL(typ) (((typ) >= POOL && (typ) <= DRAWBRIDGE_UP) ||\ + (typ) == SPOOL) +#else #define IS_POOL(typ) ((typ) >= POOL && (typ) <= DRAWBRIDGE_UP) +#endif #define IS_THRONE(typ) ((typ) == THRONE) #define IS_FOUNTAIN(typ) ((typ) == FOUNTAIN) #define IS_SINK(typ) ((typ) == SINK) #define IS_GRAVE(typ) ((typ) == GRAVE) @@ -95,8 +107,12 @@ #define IS_FURNITURE(typ) ((typ) >= STAIRS && (typ) <= ALTAR) #define IS_AIR(typ) ((typ) == AIR || (typ) == CLOUD) #define IS_SOFT(typ) ((typ) == AIR || (typ) == CLOUD || IS_POOL(typ)) +#ifdef WEBB_ENVIRONMENT +# define SKY_AT(x, y) (level.flags.skylevel && levl[x][y].rmsky) +#endif + /* * The screen symbols may be the default or defined at game startup time. * See drawing.c for defaults. * Note: {ibm|dec}_graphics[] arrays (also in drawing.c) must be kept in synch. @@ -258,8 +274,19 @@ /* * Trees have more than one kick result. */ +#ifdef WEBB_TREE +# define TREE_TYPE_MASK 0x1C +# define TREE_NONE 0x00 +# define TREE_APPLE 0x04 +# define TREE_ORANGE 0x08 +# define TREE_PEAR 0x0C +# define TREE_BANANA 0x10 +# define TREE_GUM 0x14 /* eucalyptus */ +# define TREE_OAK 0x18 +# define TREE_IRONWD 0x1C /* elven iron wood for elven blades */ +#endif /* WEBB_ENVIRONMENT or not */ #define TREE_LOOTED 1 #define TREE_SWARM 2 /* @@ -339,8 +366,11 @@ Bitfield(lit,1); /* speed hack for lit rooms */ Bitfield(waslit,1); /* remember if a location was lit */ Bitfield(roomno,6); /* room # for special rooms */ Bitfield(edge,1); /* marks boundaries for special rooms*/ +#ifdef WEBB_ENVIRONMENT + Bitfield(rmsky,1); /* no ceiling */ +#endif }; /* * Add wall angle viewing by defining "modes" for each wall type. Each @@ -464,8 +494,11 @@ Bitfield(is_maze_lev,1); Bitfield(is_cavernous_lev,1); Bitfield(arboreal, 1); /* Trees replace rock */ +#ifdef WEBB_ENVIRONMENT + Bitfield(skylevel,1); +#endif }; typedef struct { diff -rwBEN -U4 nethack-3.4.2-test/include/sp_lev.h nethack-3.4.2-diff/include/sp_lev.h --- nethack-3.4.2-test/include/sp_lev.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/sp_lev.h 2003-11-30 09:37:32.000000000 -0600 @@ -21,8 +21,11 @@ #define HARDFLOOR 2 #define NOMMAP 4 #define SHORTSIGHTED 8 #define ARBOREAL 16 +#ifdef WEBB_ENVIRONMENT +#define SKYLEVEL 32 +#endif /* special level types */ #define SP_LEV_ROOMS 1 #define SP_LEV_MAZE 2 @@ -40,8 +43,11 @@ boolean init_present, padding; char fg, bg; boolean smoothed, joined; xchar lit, walled; +#ifdef WEBB_ENVIRONMENT + xchar sky; +#endif } lev_init; typedef struct { xchar x, y, mask; @@ -99,10 +105,21 @@ typedef struct { xchar x1, y1, x2, y2; xchar rtype, rlit, rirreg; +#ifdef WEBB_ENVIRONMENT + xchar rsky; +#endif } region; +#ifdef WEBB_ENVIRONMENT +typedef struct { + xchar x1, y1, x2, y2; + xchar and_type, or_type; + xchar chance; +} trees; +#endif + /* values for rtype are defined in dungeon.h */ typedef struct { struct { xchar x1, y1, x2, y2; } inarea; struct { xchar x1, y1, x2, y2; } delarea; @@ -176,8 +193,12 @@ char nengraving; engraving **engravings; char nfountain; fountain **fountains; +#ifdef WEBB_ENVIRONMENT + char ntrees; + trees **treess; +#endif } mazepart; typedef struct { long flags; @@ -192,8 +213,11 @@ char *parent; xchar x, y, w, h; xchar xalign, yalign; xchar rtype, chance, rlit, filled; +#ifdef WEBB_ENVIRONMENT + xchar rsky; +#endif char ndoor; room_door **doors; char ntrap; trap **traps; @@ -214,8 +238,13 @@ char nsink; sink **sinks; char npool; pool **pools; +#ifdef WEBB_ENVIRONMENT + char ntrees; + trees **treess; +#endif + /* These three fields are only used when loading the level... */ int nsubroom; struct _room *subrooms[MAX_SUBROOMS]; struct mkroom *mkr; diff -rwBEN -U4 nethack-3.4.2-test/include/vision.h nethack-3.4.2-diff/include/vision.h --- nethack-3.4.2-test/include/vision.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/vision.h 2003-11-30 09:37:32.000000000 -0600 @@ -19,8 +19,11 @@ * Light source sources */ #define LS_OBJECT 0 #define LS_MONSTER 1 +#ifdef WEBB_ENGR_LIGHT +#define LS_ENGRAVING 2 +#endif /* * cansee() - Returns true if the hero can see the location. * diff -rwBEN -U4 nethack-3.4.2-test/include/you.h nethack-3.4.2-diff/include/you.h --- nethack-3.4.2-test/include/you.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/you.h 2003-11-30 09:37:32.000000000 -0600 @@ -146,8 +146,24 @@ as well as for character class */ #define ROLE_NONE (-1) #define ROLE_RANDOM (-2) +#ifdef WEBB_ENVIRONMENT +#define ROLE_ARCHEOLOGIST 0 +#define ROLE_BARBARIAN 1 +#define ROLE_CAVEMAN 2 +#define ROLE_HEALER 3 +#define ROLE_KNIGHT 4 +#define ROLE_MONK 5 +#define ROLE_PRIEST 6 +#define ROLE_ROGUE 7 +#define ROLE_RANGER 8 +#define ROLE_SAMURAI 9 +#define ROLE_TOURIST 10 +#define ROLE_VALKYRIE 11 +#define ROLE_WIZARD 12 +#endif + /*** Unified structure specifying race information ***/ struct Race { /*** Strings that name various things ***/ diff -rwBEN -U4 nethack-3.4.2-test/include/youprop.h nethack-3.4.2-diff/include/youprop.h --- nethack-3.4.2-test/include/youprop.h 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/include/youprop.h 2003-11-30 09:37:32.000000000 -0600 @@ -95,10 +95,16 @@ #define Blinded u.uprops[BLINDED].intrinsic #define Blindfolded (ublindf && ublindf->otyp != LENSES) /* ...means blind because of a cover */ +#ifdef WEBB_LAME_MONSTERS +#define Blind ((Blinded || Blindfolded || !haseyes(youmonst.data) \ + || Blemmye_blindness(&youmonst)) \ + && !(ublindf && ublindf->oartifact == ART_EYES_OF_THE_OVERWORLD)) +#else #define Blind ((Blinded || Blindfolded || !haseyes(youmonst.data)) && \ !(ublindf && ublindf->oartifact == ART_EYES_OF_THE_OVERWORLD)) +#endif /* ...the Eyes operate even when you really are blind or don't have any eyes */ #define Sick u.uprops[SICK].intrinsic diff -rwBEN -U4 nethack-3.4.2-test/src/Makefile nethack-3.4.2-diff/src/Makefile --- nethack-3.4.2-test/src/Makefile 2003-11-30 05:56:54.000000000 -0600 +++ nethack-3.4.2-diff/src/Makefile 2003-11-30 09:37:32.000000000 -0600 @@ -79,12 +79,13 @@ # and flex), comment out the upper two macros and uncomment # the lower two. # -DO_YACC = YACC_MSG -DO_LEX = LEX_MSG -#DO_YACC = YACC_ACT -#DO_LEX = LEX_ACT +#DO_YACC = YACC_MSG +#DO_LEX = LEX_MSG +DO_YACC = YACC_ACT +DO_LEX = LEX_ACT +# the above change was made for cygwin for WEBB_ENVIRONMENT # - Specify your yacc and lex programs (or work-alikes) here. #YACC = bison -y @@ -100,11 +101,11 @@ FLEXSKEL = #FLEXSKEL = -S../tools/flex.ske -YTABC = y_tab.c -YTABH = y_tab.h -LEXYYC = lexyy.c +YTABC = y.tab.c +YTABH = y.tab.h +LEXYYC = lex.yy.c # # Optional high-quality BSD random number generation routines # (see pcconf.h). Set to nothing if not used. @@ -352,9 +353,9 @@ VOBJ07 = $(O)end.o $(O)engrave.o $(O)exper.o $(O)explode.o VOBJ08 = $(O)extralev.o $(O)files.o $(O)fountain.o $(O)hack.o VOBJ09 = $(O)hacklib.o $(O)invent.o $(O)light.o $(O)lock.o VOBJ10 = $(O)mail.o $(O)pcmain.o $(O)makemon.o $(O)mapglyph.o $(O)mcastu.o -VOBJ11 = $(O)mhitm.o $(O)mhitu.o $(O)minion.o $(O)mklev.o +VOBJ11 = $(O)mhitm.o $(O)mhitu.o $(O)miditest.o $(O)minion.o $(O)mklev.o VOBJ12 = $(O)mkmap.o $(O)mkmaze.o $(O)mkobj.o $(O)mkroom.o VOBJ13 = $(O)mon.o $(O)mondata.o $(O)monmove.o $(O)monst.o VOBJ14 = $(O)monstr.o $(O)mplayer.o $(O)mthrowu.o $(O)muse.o VOBJ15 = $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam.o @@ -929,8 +930,9 @@ echo license >>dlb.lst for %%N in (*.lev) do echo %%N >>dlb.lst $(U)dlb_main cIf dlb.lst $(SRC)\nhdat cd $(SRC) + copy nhdat $(GAMEDIR) #========================================== # Recover Utility #========================================== diff -rwBEN -U4 nethack-3.4.2-test/src/botl.c nethack-3.4.2-diff/src/botl.c --- nethack-3.4.2-test/src/botl.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/botl.c 2003-11-30 09:37:32.000000000 -0600 @@ -6,8 +6,12 @@ #ifdef OVL0 extern const char *hu_stat[]; /* defined in eat.c */ +#ifdef WEBB_BIODIVERSITY +extern const char * cahu_stat[]; /* also defined in eat.c */ +#endif + const char * const enc_stat[] = { "", "Burdened", "Stressed", @@ -276,8 +280,13 @@ if(flags.time) Sprintf(nb = eos(nb), " T:%ld", moves); if(strcmp(hu_stat[u.uhs], " ")) { Sprintf(nb = eos(nb), " "); +#ifdef WEBB_BIODIVERSITY + if(Upolyd && youmonst.data == &mons[PM_CLOCKWORK_AUTOMATON]) + Strcat(newbot2, cahu_stat[u.uhs]); + else +#endif Strcat(newbot2, hu_stat[u.uhs]); } if(Confusion) Sprintf(nb = eos(nb), " Conf"); if(Sick) { diff -rwBEN -U4 nethack-3.4.2-test/src/cmd.c nethack-3.4.2-diff/src/cmd.c --- nethack-3.4.2-test/src/cmd.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/cmd.c 2003-11-30 09:37:32.000000000 -0600 @@ -122,8 +122,9 @@ STATIC_PTR int NDECL(wiz_show_seenv); STATIC_PTR int NDECL(wiz_show_vision); STATIC_PTR int NDECL(wiz_mon_polycontrol); STATIC_PTR int NDECL(wiz_show_wmodes); +STATIC_PTR int NDECL(wiz_info); #if defined(__BORLANDC__) && !defined(_WIN32) extern void FDECL(show_borlandc_stats, (winid)); #endif STATIC_DCL void FDECL(count_obj, (struct obj *, long *, long *, BOOLEAN_P, BOOLEAN_P)); @@ -447,8 +448,12 @@ { if (can_breathe(youmonst.data)) return dobreathe(); else if (attacktype(youmonst.data, AT_SPIT)) return dospit(); else if (youmonst.data->mlet == S_NYMPH) return doremove(); +#ifdef WEBB_MCHARM + else if (attacktype_fordmg(youmonst.data, AT_ANY, AD_CHRM)) + return docharm(); +#endif else if (attacktype(youmonst.data, AT_GAZE)) return dogaze(); else if (is_were(youmonst.data)) return dosummon(); else if (webmaker(youmonst.data)) return dospinweb(); else if (is_hider(youmonst.data)) return dohide(); @@ -752,8 +757,21 @@ destroy_nhwindow(win); return 0; } +/*^Y defineable info function INFO */ +int +wiz_info(){ + register int tx, ty; + struct monst * mtmp; + if (!getdir("arm whom?")) + return 0; + tx = u.ux+u.dx; ty = u.uy+u.dy; + mtmp = m_at(tx, ty); + (void) mongets(mtmp, SCIMITAR); + + return 1; +} #endif /* WIZARD */ /* -enlightenment and conduct- */ @@ -1362,8 +1380,9 @@ {C('t'), TRUE, dotele}, #ifdef WIZARD {C('v'), TRUE, wiz_level_tele}, {C('w'), TRUE, wiz_wish}, + {C('y'), TRUE, wiz_info}, #endif {C('x'), TRUE, doattributes}, #ifdef SUSPEND {C('z'), TRUE, dosuspend}, diff -rwBEN -U4 nethack-3.4.2-test/src/dbridge.c nethack-3.4.2-diff/src/dbridge.c --- nethack-3.4.2-test/src/dbridge.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/dbridge.c 2003-11-30 09:37:32.000000000 -0600 @@ -40,9 +40,13 @@ schar ltyp; if (!isok(x,y)) return FALSE; ltyp = levl[x][y].typ; - if (ltyp == POOL || ltyp == MOAT || ltyp == WATER) return TRUE; + if (ltyp == POOL || ltyp == MOAT || ltyp == WATER +#ifdef WEBB_ENVIRONMENT + || ltyp == SPOOL +#endif + ) return TRUE; if (ltyp == DRAWBRIDGE_UP && (levl[x][y].drawbridgemask & DB_UNDER) == DB_MOAT) return TRUE; return FALSE; } diff -rwBEN -U4 nethack-3.4.2-test/src/detect.c nethack-3.4.2-diff/src/detect.c --- nethack-3.4.2-test/src/detect.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/detect.c 2003-11-30 09:37:32.000000000 -0600 @@ -602,9 +602,19 @@ show_glyph(mtmp->mx,mtmp->my,mon_to_glyph(mtmp)); if (otmp && otmp->cursed && (mtmp->msleeping || !mtmp->mcanmove)) { mtmp->msleeping = mtmp->mfrozen = 0; +#ifdef WEBB_TURTLES + if(mtmp->data->mlet != S_TURTLE || !(mtmp->mflee))) +#endif mtmp->mcanmove = 1; +#ifdef WEBB_BIODIVERSITY + if(mtmp->data == &mons[PM_CLOCKWORK_AUTOMATON] && + !mtmp->mspec_used){ + mtmp->mfrozen = 1; + mtmp->mcanmove = 0; + } +#endif woken = TRUE; } } display_self(); @@ -892,8 +902,13 @@ if (lev->typ == SCORR) { lev->typ = CORR; unblock_point(x,y); } +#ifdef WEBB_ENVIRONMENT + else if (lev->typ == SPOOL) { + lev->typ = POOL; + } +#endif /* if we don't remember an object or trap there, map it */ if (lev->typ == ROOM ? (glyph_is_cmap(lev->glyph) && !glyph_is_trap(lev->glyph) && @@ -986,8 +1001,15 @@ unblock_point(zx,zy); magic_map_background(zx, zy, 0); newsym(zx, zy); (*(int*)num)++; +#ifdef WEBB_ENVIRONMENT + } else if(levl[zx][zy].typ == SPOOL) { + levl[zx][zy].typ = POOL; + magic_map_background(zx, zy, 0); + newsym(zx, zy); + (*(int*)num)++; +#endif } else if ((ttmp = t_at(zx, zy)) != 0) { if(!ttmp->tseen && ttmp->ttyp != STATUE_TRAP) { ttmp->tseen = 1; newsym(zx,zy); @@ -1172,8 +1194,16 @@ unblock_point(x,y); /* vision */ exercise(A_WIS, TRUE); nomul(0); newsym(x,y); +#ifdef WEBB_ENVIRONMENT + } else if(levl[x][y].typ == SPOOL) { + if(rnl(7-fund)) continue; + levl[x][y].typ = POOL; + exercise(A_WIS, TRUE); + nomul(0); + newsym(x,y); +#endif } else { /* Be careful not to find anything in an SCORR or SDOOR */ if((mtmp = m_at(x, y)) && !aflag) { if(mtmp->m_ap_type) { diff -rwBEN -U4 nethack-3.4.2-test/src/dig.c nethack-3.4.2-diff/src/dig.c --- nethack-3.4.2-test/src/dig.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/dig.c 2003-11-30 09:37:32.000000000 -0600 @@ -213,8 +213,11 @@ register xchar dpx = digging.pos.x, dpy = digging.pos.y; register boolean ispick = uwep && is_pick(uwep); const char *verb = (!uwep || is_pick(uwep)) ? "dig into" : "chop through"; +#ifdef WEBB_TREE + char buf[40]; /* blah blah ironwood tree. */ +#endif lev = &levl[dpx][dpy]; /* perhaps a nymph stole your pick-axe while you were busy digging */ /* or perhaps you teleported away */ @@ -335,9 +338,14 @@ goto cleanup; } } if (IS_TREE(lev->typ)) { +#ifdef WEBB_TREE + Sprintf(buf,"You cut down the %s.", rmname(lev)); + digtxt = buf; +#else digtxt = "You cut down the tree."; +#endif lev->typ = ROOM; if (!rn2(5)) (void) rnd_treefruit_at(dpx, dpy); } else { digtxt = "You succeed in cutting away some rock."; @@ -424,8 +432,11 @@ } else if (!IS_ROCK(lev->typ) && dig_target == DIGTYP_ROCK) return(0); /* statue or boulder got taken */ if(!did_dig_msg) { You("hit the %s with all your might.", +#ifdef WEBB_TREE + (IS_TREE(lev->typ))?rmname(lev): +#endif d_target[dig_target]); did_dig_msg = TRUE; } } @@ -496,9 +507,13 @@ /* these furniture checks were in dighole(), but wand breaking bypasses that routine and calls us directly */ if (IS_FOUNTAIN(lev->typ)) { +#ifdef WEBB_WATERSPOUT_GARGOYLE + dogushforth(FALSE, u.ux, u.uy); +#else dogushforth(FALSE); +#endif SET_FOUNTAIN_WARNED(x,y); /* force dryup */ dryup(x, y, madeby_u); return; #ifdef SINKS @@ -1044,9 +1059,13 @@ if (IS_DOOR(lev->typ)) str = "door"; else if (IS_TREE(lev->typ)) +#ifdef WEBB_TREE + str = rmname(lev); +#else str = "tree"; +#endif else if (IS_ROCK(lev->typ)) str = "wall"; else str = "fountain"; @@ -1124,9 +1143,16 @@ (void) rnd_treefruit_at(mtmp->mx, mtmp->my); } else { here->typ = CORR; if (pile && pile < 5) - (void) mksobj_at((pile == 1) ? BOULDER : ROCK, + (void) mksobj_at((pile == 1) ? +#ifdef WEBB_BIODIVERSITY + (mtmp->data==&mons[PM_HUNGER_HULK])? HUGE_CHUNK_OF_MEAT: + BOULDER : + (mtmp->data==&mons[PM_HUNGER_HULK])? MEATBALL : ROCK, +#else + BOULDER : ROCK, +#endif mtmp->mx, mtmp->my, TRUE, FALSE); } newsym(mtmp->mx, mtmp->my); if (!sobj_at(BOULDER, mtmp->mx, mtmp->my)) @@ -1169,9 +1195,13 @@ return; } /* swallowed */ if (u.dz) { - if (!Is_airlevel(&u.uz) && !Is_waterlevel(&u.uz) && !Underwater) { + if (!Is_airlevel(&u.uz) && !Is_waterlevel(&u.uz) && !Underwater +#ifdef WEBB_ENVIRONMENT + && (!SKY_AT(u.ux, u.uy)) +#endif + ) { if (u.dz < 0 || On_stairs(u.ux, u.uy)) { if (On_stairs(u.ux, u.uy)) pline_The("beam bounces off the %s and hits the %s.", (u.ux == xdnladder || u.ux == xupladder) ? @@ -1236,9 +1266,13 @@ if (!(room->wall_info & W_NONDIGGABLE)) { room->typ = ROOM; unblock_point(zx,zy); /* vision */ } else if (!Blind) +#ifdef WEBB_TREE + pline_The("%s shudders but is unharmed.", rmname(room)); +#else pline_The("tree shudders but is unharmed."); +#endif break; } else if (room->typ == STONE || room->typ == SCORR) { if (!(room->wall_info & W_NONDIGGABLE)) { room->typ = CORR; @@ -1423,8 +1457,12 @@ if (on_floor) { x = obj->ox; y = obj->oy; +#ifdef WEBB_BIODIVERSITY + if (obj->owt>1000 && !rn2((2000 - obj->owt)/30) ) + mkclass('X',G_NOGEN); /* otyugh */ +#endif } else if (in_invent) { if (flags.verbose) { char *cname = corpse_xname(obj, FALSE); Your("%s%s %s away%c", @@ -1439,8 +1477,13 @@ stop_occupation(); } else if (obj == uquiver) { uqwepgone(); stop_occupation(); +#ifdef WEBB_BIODIVERSITY + } else if (obj->owornmask & W_RING) { + Ring_off(obj); + stop_occupation(); +#endif } } else if (obj->where == OBJ_MINVENT && obj->owornmask) { if (obj == MON_WEP(obj->ocarry)) { setmnotwielded(obj->ocarry,obj); diff -rwBEN -U4 nethack-3.4.2-test/src/display.c nethack-3.4.2-diff/src/display.c --- nethack-3.4.2-test/src/display.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/display.c 2003-11-30 09:37:32.000000000 -0600 @@ -1393,8 +1393,11 @@ case SCORR: case STONE: idx = level.flags.arboreal ? S_tree : S_stone; break; +#ifdef WEBB_ENVIRONMENT + case SPOOL: +#endif case ROOM: idx = S_room; break; case CORR: idx = (ptr->waslit || flags.lit_corridor) ? S_litcorr : S_corr; break; @@ -1555,8 +1558,11 @@ "DOOR", "CORR", "ROOM", "STAIRS", "LADDER", "FOUNTAIN", "THRONE", "SINK", "ALTAR", "ICE", "DRAWBRIDGE_DOWN","AIR", "CLOUD" +#ifdef WEBB_ENVIRONMENT + , "SPOOL" +#endif }; static const char * diff -rwBEN -U4 nethack-3.4.2-test/src/do.c nethack-3.4.2-diff/src/do.c --- nethack-3.4.2-test/src/do.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/do.c 2003-11-30 09:37:32.000000000 -0600 @@ -99,8 +99,11 @@ There("is a large splash as %s %s the %s.", the(xname(otmp)), fills_up? "fills":"falls into", lava ? "lava" : ltyp==POOL ? "pool" : +#ifdef WEBB_ENVIRONMENT + ltyp == SPOOL? "hidden quagmire" : +#endif moat ? "moat" : "water"); } else if (flags.soundok) You_hear("a%s splash.", lava ? " sizzling" : ""); wake_nearto(rx, ry, 40); @@ -745,8 +748,18 @@ return(0); } else #endif if (Levitation) { +#ifdef WEBB_MUTATED_MONST + if (ELevitation & W_ARMF){ + if ( (uarm && (uarm->otyp == LUNG_DRAGON_SCALE_MAIL || + uarm->otyp == LUNG_DRAGON_SCALES) && !uarm->cursed) + && !uarmf->cursed){ + if (float_down(TIMEOUT, W_ARMF)) + return (1); /* came down, so moved */ + } + } +#endif if ((HLevitation & I_SPECIAL) || (ELevitation & W_ARTI)) { /* end controlled levitation */ if (ELevitation & W_ARTI) { struct obj *obj; @@ -812,8 +825,20 @@ int doup() { +#ifdef WEBB_MUTATED_MONST + if (!Levitation){ + if ( (uarm && (uarm->otyp == LUNG_DRAGON_SCALE_MAIL || + uarm->otyp == LUNG_DRAGON_SCALES)) + && (uarmf && uarmf->otyp == LEVITATION_BOOTS )){ + ELevitation &= W_ARMF; + float_up(); + spoteffects(FALSE); + return (1); /* went up, so moved */ + } + } +#endif if( (u.ux != xupstair || u.uy != yupstair) && (!xupladder || u.ux != xupladder || u.uy != yupladder) && (!sstairs.sx || u.ux != sstairs.sx || u.uy != sstairs.sy || !sstairs.up) diff -rwBEN -U4 nethack-3.4.2-test/src/do_name.c nethack-3.4.2-diff/src/do_name.c --- nethack-3.4.2-test/src/do_name.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/do_name.c 2003-11-30 09:37:32.000000000 -0600 @@ -220,8 +220,19 @@ replmon(mtmp,mtmp2); return(mtmp2); } +#ifdef WEBB_BIODIVERSITY +void +introduce_mons(mtmp) +struct monst * mtmp; +{ + char * name = NAME(mtmp); + if (name && (uchar) name[0] >= (uchar)0x80) + name[0] &= 0x7F; +} +#endif + int do_mname() { char buf[BUFSZ]; @@ -320,8 +331,18 @@ pline("While engraving your %s slips.", body_part(HAND)); display_nhwindow(WIN_MESSAGE, FALSE); You("engrave: \"%s\".",buf); } +#ifdef WEBB_ENVIRONMENT + if (obj->otyp == STATUE && (obj->spe & STATUE_NONRENAMABLE)){ + if (strcmp(buf,ONAME(obj))) + if (obj->spe & STATUE_HISTORIC) + You_feel("history would not agree with you renaming this statue %s.", buf); + else + You("decide %s isn't a good name for this statue after all.", buf); + return; + } +#endif obj = oname(obj, buf); } /* @@ -547,8 +568,68 @@ { return rn2(7) ? ghostnames[rn2(SIZE(ghostnames))] : (const char *)plname; } +#ifdef WEBB_BIODIVERSITY +static const char * qmnames[] = { + "\302uckaroo", /* B. Bonzai */ + "\304ick", /* D. Feynman */ + "\305rwin", /* E. Schroedinger */ + "\314ouis", /* L. de Broglie */ + "\315ax", /* M. Born, M. Plank */ + "\316iels", /* N. Bohr */ + "\320ascual", /* P. Jordan */ + "\320aul", /* P. Dirac */ + "\323am", /* S. Beckett */ + "\323atyen", /* Satyendra Bose */ + "\327erner", /* W. Heisenberg */ + "\327olfgang", /* W. Pauli */ + + "\315arie", /* M. Curie */ + "\314ise", /* L. Meitner */ +}; + +static const char * canames[] = { + "\303tsesibus", /* C. built Waterclocks/Organs 270BC */ + "\301lbertus", /* A. Magnus created automaton servent c1200 */ + "\305ustorgio", /* E. church housing early weight driven clock c1270 */ + "\314eo", /* L. da Vinci, designed mechanical calc 1500s */ + "\327ilhelm", /* W. Schickard, built Calculating Clock 1623 */ + "\302laise", /* B. Pascal, built Pascaline 1642*/ + "\303hristiaan",/* C. Huygens, Pendulum Clock 1656, improved Spring clock */ + "\307ottfried", /* G. von Leibniz, built Step Reckoner 1673*/ + "\303harles", /* C. Babbage, Difference Engine 1822, Analytic Eng. 1823 */ + "\310ermann", /* H. Hollerith, Punch Card Tabulating Machine 1890 */ + "\327arren", /* W. Marrison, Quartz Clock 1927 */ + "\301lan", /* A. Turing, theorized Turing Machine c1938 */ + "\310oward", /* H. Aiken, Mark I, Mark II 1943-6 */ + + "\303lepsydra", /* C. name of Waterclock c1400BC */ + "\301da", /* A. Lovelace, first programmer, Analytic Eng. 1823 */ + "\307race", /* G. Hopper, Mark II, invented compilers */ + "\306utura", /* Metropolis */ + "\322achel" /* Bladerunner */ +}; + +const char * +rndqname(qtype, gender) +int qtype, gender; +{ + char * empty = ""; + if (qtype == PM_QUANTUM_MECHANIC){ + if (gender) /* history is not kind in recognizing women */ + return (rn2(3))?empty:qmnames[SIZE(qmnames)-rnd(2)]; + return ((rn2(3))?qmnames[rn2(SIZE(qmnames)-2)]:empty); + } else if (qtype == PM_CLOCKWORK_AUTOMATON){ + if (gender) + return (rn2(3))?empty:canames[SIZE(canames)-rnd(5)]; /* Clep. - end */ + return (rn2(3))?canames[rn2(SIZE(canames)-5)]:empty; + } else + return empty; +} +#endif + + /* Monster naming functions: * x_monnam is the generic monster-naming function. * seen unseen detected named * mon_nam: the newt it the invisible orc Fido @@ -592,8 +673,15 @@ struct permonst *mdat = mtmp->data; boolean do_hallu, do_invis, do_it, do_saddle; boolean name_at_start, has_adjectives; char *bp; +#ifdef WEBB_BIODIVERSITY + char *name = NAME(mtmp); + const char * mname = (mdat != &mons[PM_WIZARD_OF_YENDOR] && + mtmp->m_ap_type == M_AP_MONSTER)? + mons[mtmp->mappearance].mname : + mdat->mname; +#endif if (program_state.gameover) suppress |= SUPPRESS_HALLUCINATION; if (article == ARTICLE_YOUR && !mtmp->mtame) @@ -680,16 +768,26 @@ /* Be sure to remember whether the buffer starts with a name */ if (do_hallu) { Strcat(buf, rndmonnam()); name_at_start = FALSE; +#ifndef WEBB_BIODIVERSITY } else if (mtmp->mnamelth) { char *name = NAME(mtmp); +#else + } else if (mtmp->mnamelth && (uchar)name[0]<(uchar)0x80) { +#endif if (mdat == &mons[PM_GHOST]) { Sprintf(eos(buf), "%s ghost", s_suffix(name)); name_at_start = TRUE; } else if (called) { - Sprintf(eos(buf), "%s called %s", mdat->mname, name); + Sprintf(eos(buf), "%s called %s", +#ifdef WEBB_BIODIVERSITY + mname, +#else + mdat->mname, +#endif + name); name_at_start = (boolean)type_is_pname(mdat); } else if (is_mplayer(mdat) && (bp = strstri(name, " the ")) != 0) { /* the */ char pbuf[BUFSZ]; @@ -713,9 +811,15 @@ (boolean)mtmp->female)); Strcat(buf, lcase(pbuf)); name_at_start = FALSE; } else { - Strcat(buf, mdat->mname); + Strcat(buf, +#ifdef WEBB_BIODIVERSITY + mname +#else + mdat->mname +#endif + ); name_at_start = (boolean)type_is_pname(mdat); } if (name_at_start && (article == ARTICLE_YOUR || !has_adjectives)) { @@ -958,8 +1062,17 @@ if (name >= SPECIAL_PM) return bogusmons[name - SPECIAL_PM]; return mons[name].mname; } +#ifdef WEBB_ENVIRONMENT +const char * +rndhalmonnam() +{ + return bogusmons[rn2(SIZE(bogusmons))]; + +} +#endif + #ifdef REINCARNATION const char * roguename() /* Name of a Rogue player */ { @@ -1038,7 +1151,65 @@ mtmp->mcan ? coynames[SIZE(coynames)-1] : coynames[rn2(SIZE(coynames)-1)]); } return buf; } + +#ifdef WEBB_TREE +extern const int treefruits[]; + +char * +rmname(lev) +struct rm * lev; +{ + int ttyp = lev->flags & TREE_TYPE_MASK; + if (lev->typ != TREE) + return ""; + if (Hallucination) + switch (rn2(8)){ + case 0: + return "shrubbery"; /* Monty Python */ + case 1: + return "binary tree"; /* data structure */ + case 2: + return "truffula tree"; /* Dr. Seuss' The Lorax */ + case 3: + return "Tannenbaum"; /* Christmas song */ + case 4: + return "spaghetti and meatball tree"; /* Tom Glazer */ + case 5: + return "bonsai tree"; + case 6: + return "gumdrop tree"; /* lyric variation from "Kookaburra" */ + case 7: + { + char * buf = fruitname(1); + sprintf(buf+strlen(buf)-5, "tree"); + return buf; + } + } + + switch (ttyp){ + case 0: + return "tree"; + case TREE_GUM: + return "eucalyptus tree"; + case TREE_OAK: + return "oak tree"; + case TREE_IRONWD: + return "elven dogwood"; + case TREE_APPLE: + return "apple tree"; + case TREE_ORANGE: + return "orange tree"; + case TREE_PEAR: + return "pear tree"; + case TREE_BANANA: + return "banana tree"; + } + return "bad tree type"; +} +#endif + + #endif /* OVL2 */ /*do_name.c*/ diff -rwBEN -U4 nethack-3.4.2-test/src/do_wear.c nethack-3.4.2-diff/src/do_wear.c --- nethack-3.4.2-test/src/do_wear.c 2003-11-30 05:56:52.000000000 -0600 +++ nethack-3.4.2-diff/src/do_wear.c 2003-11-30 09:37:32.000000000 -0600 @@ -42,9 +42,11 @@ WORN_BOOTS, W_SWAPWEP, W_QUIVER, 0L }; STATIC_DCL void FDECL(on_msg, (struct obj *)); STATIC_PTR int NDECL(Armor_on); +#ifndef WEBB_BIODIVERSITY STATIC_PTR int NDECL(Boots_on); +#endif STATIC_DCL int NDECL(Cloak_on); STATIC_PTR int NDECL(Helmet_on); STATIC_PTR int NDECL(Gloves_on); STATIC_DCL void NDECL(Amulet_on); @@ -85,9 +87,11 @@ * The Type_on() functions should be called *after* setworn(). * The Type_off() functions call setworn() themselves. */ +#ifndef WEBB_BIODIVERSITY STATIC_PTR +#endif int Boots_on() { long oldprop = @@ -122,8 +126,17 @@ if (!oldprop && !(HFumbling & ~TIMEOUT)) incr_itimeout(&HFumbling, rnd(20)); break; case LEVITATION_BOOTS: +#ifdef WEBB_MUTATED_MONST + if (!uarmf->cursed && uarm && + (uarm->otyp == LUNG_DRAGON_SCALES || + uarm->otyp == LUNG_DRAGON_SCALE_MAIL) && + uarm->blessed){ + You_feel("light-footed."); + break; + } +#endif if (!oldprop && !HLevitation) { makeknown(uarmf->otyp); float_up(); spoteffects(FALSE); @@ -243,11 +256,22 @@ { int otyp = uarmc->otyp; long oldprop = u.uprops[objects[otyp].oc_oprop].extrinsic & ~WORN_CLOAK; +#ifdef WEBB_LAME_MONSTERS + int was_blind = Blemmye_blindness(&youmonst); +#endif /* For mummy wrapping, taking it off first resets `Invisible'. */ setworn((struct obj *)0, W_ARMC); +#ifdef WEBB_LAME_MONSTERS + if (!Blind && was_blind) { + if (flags.verbose) You("can see again."); + if (Blind_telepat || Infravision) see_monsters(); + vision_full_recalc = 1; /* recalc vision limits */ + flags.botl = 1; + } +#endif switch (otyp) { case ELVEN_CLOAK: case ORCISH_CLOAK: case DWARVISH_CLOAK: @@ -508,16 +532,47 @@ STATIC_PTR int Armor_on() { +#ifdef WEBB_MUTATED_MONST + if (uarmf && uarmf->otyp == LEVITATION_BOOTS && + uarm && !uarm->cursed && + (uarm->otyp == LUNG_DRAGON_SCALE_MAIL || + uarm->otyp == LUNG_DRAGON_SCALES)) + You_feel("your loftiness is tempered."); +#endif return 0; } int Armor_off() { +#ifdef WEBB_LAME_MONSTERS + int was_blind = Blemmye_blindness(&youmonst); +#endif +#ifdef WEBB_MUTATED_MONST + if (uarm->otyp == LUNG_DRAGON_SCALE_MAIL || + uarm->otyp == LUNG_DRAGON_SCALES){ + if (Levitation && !uarm->cursed && !Is_airlevel(&u.uz)) + You("pine for terra firma."); + else if(!Levitation && uarmf && uarmf->otyp == LEVITATION_BOOTS){ + ELevitation &= W_ARMF; + float_up(); + spoteffects(FALSE); + } + } +#endif setworn((struct obj *)0, W_ARM); cancelled_don = FALSE; +#ifdef WEBB_LAME_MONSTERS + if (!Blind && was_blind) { + if (flags.verbose) You("can see again."); + if (Blind_telepat || Infravision) see_monsters(); + vision_full_recalc = 1; /* recalc vision limits */ + flags.botl = 1; + } +#endif + return 0; } /* The gone functions differ from the off functions in that if you die from @@ -525,10 +580,21 @@ */ int Armor_gone() { +#ifdef WEBB_LAME_MONSTERS + int was_blind = Blemmye_blindness(&youmonst); +#endif setnotworn(uarm); cancelled_don = FALSE; +#ifdef WEBB_LAME_MONSTERS + if (!Blind && was_blind) { + if (flags.verbose) You("can see again."); + if (Blind_telepat || Infravision) see_monsters(); + vision_full_recalc = 1; /* recalc vision limits */ + flags.botl = 1; + } +#endif return 0; } STATIC_OVL void @@ -924,8 +990,28 @@ flags.botl = 1; } } +#ifdef WEBB_LAME_MONSTERS +int +Blemmye_blindness(mon) +register struct monst * mon; +{ + struct obj * otmp; + if (mon->data != &mons[PM_BLEMMYE]) return 0; +#ifdef TOURIST + otmp = (mon == &youmonst) ? uarmu : which_armor(mon, W_ARMU); + if (otmp && otmp->otyp == T_SHIRT) return 1; +#endif + otmp = (mon == &youmonst) ? uarm : which_armor(mon, W_ARM); + if (otmp && (otmp->otyp != CRYSTAL_PLATE_MAIL)) return 1; + otmp = (mon == &youmonst) ? uarmc : which_armor(mon, W_ARMC); + if (otmp && (otmp->otyp == ROBE || otmp->otyp == ALCHEMY_SMOCK + || strcmp(OBJ_NAME(objects[otmp->otyp]), "ornamental cope"))) return 1; + return 0; +} +#endif + /* called in main to set intrinsics of worn start-up items */ void set_wear() { @@ -1217,8 +1303,12 @@ if (noisy) pline_The("%s won't fit over your horn%s.", c_helmet, plur(num_horns(youmonst.data))); err++; +#ifdef WEBB_LAME_MONSTERS + } else if (Upolyd && !has_head(youmonst.data)) { + You("cannot wear %s, because you have no head."); +#endif } else *mask = W_ARMH; } else if (is_shield(otmp)) { if (uarms) { @@ -1324,8 +1414,11 @@ { struct obj *otmp; int delay; long mask = 0; +#ifdef WEBB_LAME_MONSTERS + int was_blind = Blemmye_blindness(&youmonst); +#endi