diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/bigroom.des nethack/dat/bigroom.des
--- nh_orig/dat/bigroom.des	2003-12-07 18:39:12.000000000 -0500
+++ nethack/dat/bigroom.des	2007-12-28 20:49:24.000000000 -0500
@@ -29,4 +29,34 @@
 ---------------------------------------------------------------------------
 ENDMAP
+
+
+IF [75%] THEN
+   IF [50%] THEN
+      TERRAIN[75%]:(10,8),horizontal,28, '-', lit
+      TERRAIN[75%]:(37,8),horizontal,28, '-', lit
+      TERRAIN[75%]:(37,3),vertical,6, '|', lit
+      TERRAIN[75%]:(37,9),vertical,6, '|', lit
+   ELSE
+      IF [50%] THEN
+      	 TERRAIN[75%]:(10,8),horizontal,28, 'F', lit
+      	 TERRAIN[75%]:(37,8),horizontal,28, 'F', lit
+      	 TERRAIN[75%]:(37,3),vertical,6, 'F', lit
+      	 TERRAIN[75%]:(37,9),vertical,6, 'F', lit
+      ELSE
+      	 TERRAIN[75%]:(10,8),horizontal,28, 'L', lit
+      	 TERRAIN[75%]:(37,8),horizontal,28, 'L', lit
+      	 TERRAIN[75%]:(37,3),vertical,6, 'L', lit
+      	 TERRAIN[75%]:(37,9),vertical,6, 'L', lit
+      ENDIF
+   ENDIF
+ELSE
+   IF [25%] THEN
+      TERRAIN:(4,4,70,13),unfilled, '-',lit
+      TERRAIN:(25, 4),horizontal,25, '.',lit
+      TERRAIN:(25,13),horizontal,25, '.',lit
+   ENDIF
+ENDIF
+
+
 # Dungeon Description
 REGION:(01,01,73,16),lit,"ordinary"
@@ -435,2 +465,347 @@
 MONSTER:random,random,random
 MONSTER:random,random,random
+
+
+
+# The Four Circles
+
+MAZE:"bigrm-6",' '
+GEOMETRY:center,center
+MAP
+     ---------         ---------         ---------         ---------     
+   ---.......---     ---.......---     ---.......---     ---.......---   
+  --...........--   --...........--   --...........--   --...........--  
+ --.............-- --.............-- --.............-- --.............-- 
+ -...............- -...............- -...............- -...............- 
+|-...............---...............---...............---...............--
+|.................-.................-.................-.................|
+|........T.................T.................T.................T........|
+|.......................................................................|
+|......T.{.....................................................{.T......|
+|.......................................................................|
+|........T.................T.................T.................T........|
+|.................-.................-.................-.................|
+--...............---...............---...............---...............--
+ -...............- -...............- -...............- -...............- 
+ --.............-- --.............-- --.............-- --.............-- 
+  --...........--   --...........--   --...........--   --...........--  
+   ---.......---     ---.......---     ---.......---     ---.......---   
+     ---------         ---------         ---------         ---------     
+ENDMAP
+# Dungeon Description
+REGION:(01,01,72,17),lit,"ordinary"
+# Stairs
+STAIR:random,up
+STAIR:random,down
+# Non diggable walls
+NON_DIGGABLE:(00,00,72,18)
+# Objects
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+# Random traps
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+# Random monsters.
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+
+
+# Let's tilt it a bit
+
+MAZE:"bigrm-7",' '
+GEOMETRY:center,center
+MAP
+                                                        -----              
+                                                ---------...---            
+                                        ---------.........L...---          
+                                ---------.......................---        
+                        ---------.................................---      
+                ---------...........................................---    
+        ---------.....................................................---  
+|--------...............................................................--|
+|.........................................................................|
+|.L.....................................................................L.|
+|.........................................................................|
+|--...............................................................--------|
+  ---.....................................................---------        
+    ---...........................................---------                
+      ---.................................---------                        
+        ---.......................---------                                
+          ---...L.........---------                                        
+            ---...---------                                                
+              -----                                                        
+ENDMAP
+# Dungeon Description
+REGION:(01,01,73,17),lit,"ordinary"
+# Stairs
+STAIR:random,up
+STAIR:random,down
+# Non diggable walls
+NON_DIGGABLE:(00,00,74,18)
+# Objects
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+# Random traps
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+# Random monsters.
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+
+
+# Two streams
+
+MAZE:"bigrm-8",' '
+GEOMETRY:center,center
+MAP
+        |------------------------       -------------------------        
+        |.......................|       |.......................|        
+        |.......................|       |................}}.....|        
+|-------|......}}}}.............|--------.....}}.}.....}}}}.....--------|
+|}}}......}}..}}}}}}..........}}}..........}}}..}.....}....}.}}..}}}}}}}|
+|}}}....}}.}}}.....}....}}...}...}}}....}.}...........}.....}}.}}....}}}|
+|}}}}}}}............}}}}..}}}.......}}}}}}}............}..............}}|
+|}}}}}...............}}...............}}...}............}...........}}}}|
+|-------|.......................|--------...}.........}}}.......--------|
+        |.......................|       |...}}......}}.}........|        
+|--------........LLLL....LL.....--------|....}}...}}............|-------|
+|LLL..........LLL.........LLL......LLL........}.}}}}.......LLL.........L|
+|LLLL........LLL.............L...LL..LLLLLL....}}.}.....LLL...LLL....LLL|
+|LLLLLLLL..LLL.LLLLLL.........LLL......LLLLL.........LLLL........LLLLLLL|
+|LLLLLL..LLL........LLL...LLLL............LLLLL..LLLL.LLLLL........LLLLL|
+|--------..............LLL......--------|.....LLL....LLLLLL.....|-------|
+        |.......................|       |...............LL......|        
+        |.......................|       |.......................|        
+        -------------------------       -------------------------        
+ENDMAP
+# Dungeon Description
+REGION:(01,01,72,17),lit,"ordinary"
+# Stairs
+STAIR:random,up
+STAIR:random,down
+#
+# Non diggable walls
+NON_DIGGABLE:(00,00,72,18)
+# Objects
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+# Random traps
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+# Random monsters.
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+
+
+# Slanted
+
+MAZE:"bigrm-9",' '
+GEOMETRY:center,center
+MAP
+----------------------------------------------                             
+|............................................---                           
+--.............................................---                         
+ ---......................................FF.....---                       
+   ---...................................FF........---                     
+     ---................................FF...........---                   
+       ---.............................FF..............---                 
+         ---..........................FF.................---               
+           ---.......................FF....................---             
+             ---....................FF.......................---           
+               ---.................FF..........................---         
+                 ---..............FF.............................---       
+                   ---...........FF................................----    
+                     ---........FF...................................---   
+                       ---.....FF......................................--- 
+                         ---.............................................--
+                           ---............................................|
+                             ----------------------------------------------
+ENDMAP
+# Dungeon Description
+REGION:(01,01,73,16),lit,"ordinary"
+# Stairs
+STAIR:random,up
+STAIR:random,down
+# Non diggable walls
+NON_DIGGABLE:(00,00,74,17)
+# Objects
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+# Random traps
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+# Random monsters.
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
+MONSTER:random,random,random
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/castle.des nethack/dat/castle.des
--- nh_orig/dat/castle.des	2003-12-07 18:39:12.000000000 -0500
+++ nethack/dat/castle.des	2008-03-14 16:57:23.000000000 -0400
@@ -25,6 +25,6 @@
 }|.....|-----------------------------------------------|.....|}
 }|.....+...............................................+.....|}
-}-------------------------------+-----------------------------}
-}}}}}}|........|..........+...........|.......S.S.......|}}}}}}
+}-FFF---------------------------+-------------------------FFF-}
+}}}}}}|........|..........+...........|.......|.|.......|}}}}}}
 .....}|........|..........|...........|.......|.|.......|}.....
 .....}|........------------...........---------S---------}.....
@@ -32,6 +32,6 @@
 .....}|........------------...........---------S---------}.....
 .....}|........|..........|...........|.......|.|.......|}.....
-}}}}}}|........|..........+...........|.......S.S.......|}}}}}}
-}-------------------------------+-----------------------------}
+}}}}}}|........|..........+...........|.......|.|.......|}}}}}}
+}-FFF---------------------------+-------------------------FFF-}
 }|.....+...............................................+.....|}
 }|.....|-----------------------------------------------|.....|}
@@ -40,4 +40,17 @@
 ENDMAP
 
+# Treasure room 1
+RANDOM_PLACES:(46,05),(44,07),(38,06),(40,04)
+TERRAIN:place[0],'S',lit
+# Treasure room 2
+RANDOM_PLACES:(48,05),(54,07),(51,04)
+TERRAIN:place[0],'S',lit
+# Treasure room 3
+RANDOM_PLACES:(46,11),(44,12),(38,11),(40,09)
+TERRAIN:place[0],'S',lit
+# Treasure room 4
+RANDOM_PLACES:(48,11),(54,09),(51,12)
+TERRAIN:place[0],'S',lit
+
 # Random registers initialisation
 RANDOM_OBJECTS:'[',')','*','%'
@@ -50,10 +63,10 @@
 FOUNTAIN:(10,08)
 # Doors
-DOOR:closed,(07,03)
-DOOR:closed,(55,03)
+DOOR:locked,(07,03)
+DOOR:locked,(55,03)
 DOOR:locked,(32,04)
 DOOR:locked,(26,05)
-DOOR:locked,(46,05)
-DOOR:locked,(48,05)
+# DOOR:locked,(46,05)
+# DOOR:locked,(48,05)
 DOOR:locked,(47,07)
 DOOR:closed,(15,08)
@@ -63,9 +76,9 @@
 DOOR:locked,(47,09)
 DOOR:locked,(26,11)
-DOOR:locked,(46,11)
-DOOR:locked,(48,11)
+# DOOR:locked,(46,11)
+# DOOR:locked,(48,11)
 DOOR:locked,(32,12)
-DOOR:closed,(07,13)
-DOOR:closed,(55,13)
+DOOR:locked,(07,13)
+DOOR:locked,(55,13)
 # The drawbridge
 DRAWBRIDGE:(05,08),east,closed
@@ -133,6 +146,18 @@
 CONTAINER:'(',"chest",place[0]
 OBJECT:'/',"wishing",contained
-# Prevent monsters from eating it.  (@'s never eat objects)
+# THE NOT QUITE WANDS OF WISHING
+# ...since you can see the chest now through the bars,
+# we have to find a better way to disguise where the wand is
+CONTAINER:'(',"chest",place[1]
+OBJECT:'/',"secret door detection",contained
+CONTAINER:'(',"chest",place[2]
+OBJECT:'/',random,contained
+CONTAINER:'(',"chest",place[3]
+OBJECT:'/',random,contained
+# Prevent monsters from eating them.  (@'s never eat objects)
 ENGRAVING:place[0],burn,"Elbereth"
+ENGRAVING:place[1],burn,"Elbereth"
+ENGRAVING:place[2],burn,"Elbereth"
+ENGRAVING:place[3],burn,"Elbereth"
 # The treasure of the lord
 OBJECT:'(',"chest",(37,08)
@@ -154,12 +179,12 @@
 MONSTER:'@',"lieutenant",(09,08)
 # Soldiers guarding the towers
-MONSTER:'@',"soldier",(03,02)
-MONSTER:'@',"soldier",(05,02)
-MONSTER:'@',"soldier",(57,02)
-MONSTER:'@',"soldier",(59,02)
-MONSTER:'@',"soldier",(03,14)
-MONSTER:'@',"soldier",(05,14)
-MONSTER:'@',"soldier",(57,14)
-MONSTER:'@',"soldier",(59,14)
+MONSTER:'@',"sergeant",(03,02)
+MONSTER:'@',"sergeant",(05,02)
+MONSTER:'@',"sergeant",(57,02)
+MONSTER:'@',"sergeant",(59,02)
+MONSTER:'@',"sergeant",(03,14)
+MONSTER:'@',"sergeant",(05,14)
+MONSTER:'@',"sergeant",(57,14)
+MONSTER:'@',"sergeant",(59,14)
 # The four dragons that are guarding the storerooms
 MONSTER:'D',random,(47,05)
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/Caveman.des nethack/dat/Caveman.des
--- nh_orig/dat/Caveman.des	2003-12-07 18:39:12.000000000 -0500
+++ nethack/dat/Caveman.des	2007-12-29 16:00:37.000000000 -0500
@@ -10,28 +10,37 @@
 #
 MAZE: "Cav-strt",' '
-FLAGS: noteleport,hardfloor
+FLAGS: noteleport,hardfloor,arboreal
 GEOMETRY:center,center
 MAP
                                                                             
-  ......     ..........................       ...        ....  ......       
- ......       ..........................     ........       ....    .....   
-  ..BB      .............................    .........            ....  ..  
-     ..    ......................              .......      ..     ....  .. 
-     ..     ....................                     ..  .......    ..  ... 
-   ..              S   BB                .....     .......   ....      .... 
-    ..        ...  .   ..               ........  ..     ..   ..       ...  
-     ..      ......     ..             ............       ..          ...   
-       .      ....       ..             ........           ..  ...........  
-  ...   ..     ..        .............                  ................... 
- .....   .....            ...............................      ...........  
-  .....B................            ...                               ...   
-  .....     .  ..........        .... .      ...  ..........           ...  
-   ...     ..          .............  ..    ...................        .... 
-          BB       ..   .........      BB    ...  ..........  ..   ...  ... 
-       ......    .....  B          ........         ..         .. ....  ... 
-     ..........  ..........         ..... ...      .....        ........    
-       ..  ...    .  .....         ....    ..       ...            ..       
+  ......     ..........................       ... PP   P ....  ...... P     
+ ......       ..........................     .......P    PP .... PP .....P  
+  ..BB      ............................    P...P P...P      .P  P....  ..  
+     ..    ......................             P.......P  PP .. P  P....P .. 
+     ..  P BB...................         PP          ..  .......P  P.. P... 
+   ...   ...B      B                     ..... P  P....... PP....   PP .... 
+    ..P P.    ...  .  ...               ...P....P ..  PP ..   .. P     P..  
+     ..  .P  .......  ....            P...PPP...... P    PPPP P    PP ...   
+  PPP .. .    ....   ... . PP  P      P ........  P   P  P ..  ...........  
+  ... P...     ..   .... .B...........P  PP  PP  PP P  P.........PP........ 
+ .....  P.....             ..............................  PP  ...........P 
+P .PP..B..........PPP...   P  PPP   ... P P PPP  P  P PP     P  PPP   ...   
+  .....  PP .  ..........PP  PPP ....P.PP    ...  .......... PP       P...  
+  P...P    ..    PPP   .............  ..   P.........PPPP......     P P.... 
+          BB            .........PP    BB    ...  .....P....P .. PP... P... 
+       ......    .....  B     PP    .......   P PP P.. PPP   PP.. .P..  ... 
+     ..........  ..........        ...... ..      P.....   P    .........P  
+       ..  ...    .  .....         ....    ..       ...P       P   ..  P    
                                                                             
 ENDMAP
+
+REPLACE_TERRAIN:(40,1, 74,18), 'P', ' ', unlit, 25%
+REPLACE_TERRAIN:(40,1, 74,18), 'P', '.', unlit, 5%
+
+IF [90%] THEN
+   TERRAIN:(43,11),' ',unlit
+   TERRAIN:(40,10),'.',unlit
+ENDIF
+
 # Dungeon Description
 REGION:(00,00,75,19),unlit,"ordinary"
@@ -43,11 +52,9 @@
 REGION:(05,17,14,18),lit,"ordinary",unfilled,true
 REGION:(17,16,23,18),lit,"ordinary",unfilled,true
-REGION:(35,16,44,18),lit,"ordinary",unfilled,true
+REGION:(37,16,44,18),lit,"ordinary",unfilled,true
 # Stairs
-STAIR:(02,03),down
+LADDER:(02,03),down
 # Portal arrival point
 BRANCH:(71,09,71,09),(0,0,0,0)
-# Doors
-DOOR:locked,(19,06)
 # The temple altar (this will force a priest(ess) to be created)
 ALTAR:(36,02),coaligned,shrine
@@ -64,28 +71,52 @@
 MONSTER:'@',"neanderthal",(21,01)
 MONSTER:'@',"neanderthal",(22,01)
-MONSTER:'@',"neanderthal",(26,09)
+MONSTER:'@',"neanderthal",(24,08)
 # Non diggable walls
 NON_DIGGABLE:(00,00,75,19)
 # Random traps
-TRAP:"pit",(47,11)
-TRAP:"pit",(57,10)
-TRAP:random,random
-TRAP:random,random
-TRAP:random,random
-TRAP:random,random
-# Monsters on siege duty (in the outer caves).
-MONSTER: 'h',"bugbear",(47,02),hostile
-MONSTER: 'h',"bugbear",(48,03),hostile
-MONSTER: 'h',"bugbear",(49,04),hostile
-MONSTER: 'h',"bugbear",(67,03),hostile
-MONSTER: 'h',"bugbear",(69,04),hostile
-MONSTER: 'h',"bugbear",(51,13),hostile
-MONSTER: 'h',"bugbear",(53,14),hostile
-MONSTER: 'h',"bugbear",(55,15),hostile
-MONSTER: 'h',"bugbear",(63,10),hostile
-MONSTER: 'h',"bugbear",(65,09),hostile
-MONSTER: 'h',"bugbear",(67,10),hostile
-MONSTER: 'h',"bugbear",(69,11),hostile
-WALLIFY
+TRAP:"pit",random
+TRAP:"pit",random
+TRAP:"pit",random
+TRAP:"spiked pit",random
+TRAP:"spiked pit",random
+TRAP:"spiked pit",random
+TRAP:"bear",(19,13)
+TRAP:"bear",(46,11)
+TRAP:"bear",random
+TRAP:"bear",random
+TRAP:"bear",random
+TRAP:"bear",random
+# Random jungle stuff
+MONSTER: ';',"giant eel",random,hostile
+MONSTER: ';',"giant eel",random,hostile
+MONSTER: ';',"giant eel",random,hostile
+MONSTER: ';',"giant eel",random,hostile
+MONSTER: ';',"giant eel",random,hostile
+MONSTER: ';',"giant eel",random,hostile
+MONSTER: ';',"giant eel",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"monkey",random,hostile
+MONSTER: 'Y',"ape",random,hostile
+MONSTER: 'Y',"ape",random,hostile
+MONSTER: 'Y',"ape",random,hostile
+MONSTER: 'Y',"ape",random,hostile
+MONSTER: 'Y',"ape",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'f',"panther",random,hostile
+MONSTER: 'f',"panther",random,hostile
+MONSTER: 'f',"panther",random,hostile
+MONSTER: 'f',"panther",random,hostile
 
 #
@@ -97,36 +128,37 @@
 
 MAZE: "Cav-loca",' '
-FLAGS: hardfloor
+FLAGS: noteleport,hardfloor,arboreal
 GEOMETRY:center,center
 MAP
                                                                             
     .............                     ...........                           
-   ...............                   .............                          
-    .............                  ...............        ..........        
-     ...........                    .............      ...............      
-        ...                                    ...   ..................     
-         ...                ..........          ... ..................      
-          ...              ............          BBB...................     
+   ........PPP....                   .............                          
+    ......PPP....                  ...............        ..........        
            ...              ..........          ......................      
-            .....                 ..      .....B........................    
-  ....       ...............      .    ........B..........................  
- ......     .. .............S..............         ..................      
-  ....     ..                ...........             ...............        
-     ..  ...                                    ....................        
+        ....  PP                               ...   ..................     
+         ...                ..........          ... ..................      
+         P...              ....PPP.....          BBB...................     
+           ... P            ..........          ......................      
+   PP       ..... PP   P          ..      ....PB........................    
+  ....       ...............      .  P .......PB..........................  
+ ......     .. .............P..............         ..................      
+  ....     ..  P   PPP       ...........             ...............        
+     ..  ...                      PPP           ....................        
       ....                                      BB...................       
-         ..                 ..                 ..  ...............          
-          ..   .......     ....  .....  ....  ..     .......   S            
-           ............     ....... ..  .......       .....    ...  ....    
-               .......       .....   ......                      .......    
+      PP .. P               ..                 ..  ...............          
+          ..   .......     ....  .....  ....  ..     .......   P            
+         P ......PPP...     ....... ..  .......       .....    ...  ....    
+            P  .......       .....   ......                      .......    
                                                                             
 ENDMAP
+
+REPLACE_TERRAIN:(00,00,25,19), ' ', 'P', unlit, 10%
+
 # Dungeon Description
 REGION:(00,00,75,19),unlit,"ordinary"
 REGION:(52,06,73,15),lit,"ordinary",unfilled,true
-# Doors
-DOOR:locked,(28,11)
 # Stairs
-STAIR:(04,03),up
-STAIR:(73,10),down
+LADDER:(04,03),up
+LADDER:(73,10),down
 # Non diggable walls
 NON_DIGGABLE:(00,00,75,19)
@@ -148,39 +180,40 @@
 OBJECT:random,random,random
 # Random traps
-TRAP:random,random
-TRAP:random,random
-TRAP:random,random
-TRAP:random,random
-TRAP:random,random
-TRAP:random,random
-# Random monsters.
-MONSTER:'h',"bugbear",(02,10),hostile
-MONSTER:'h',"bugbear",(03,11),hostile
-MONSTER:'h',"bugbear",(04,12),hostile
-MONSTER:'h',"bugbear",(02,11),hostile
-MONSTER:'h',"bugbear",(16,16),hostile
-MONSTER:'h',"bugbear",(17,17),hostile
-MONSTER:'h',"bugbear",(18,18),hostile
-MONSTER:'h',"bugbear",(19,16),hostile
-MONSTER:'h',"bugbear",(30,06),hostile
-MONSTER:'h',"bugbear",(31,07),hostile
-MONSTER:'h',"bugbear",(32,08),hostile
-MONSTER:'h',"bugbear",(33,06),hostile
-MONSTER:'h',"bugbear",(34,07),hostile
-MONSTER:'h',"bugbear",random,hostile
-MONSTER:'h',"bugbear",random,hostile
-MONSTER:'h',"bugbear",random,hostile
-MONSTER:'h',"bugbear",random,hostile
-MONSTER:'h',random,random,hostile
-MONSTER:'H',random,random,hostile
-MONSTER:'H',"hill giant",(03,12),hostile
-MONSTER:'H',"hill giant",(20,17),hostile
-MONSTER:'H',"hill giant",(35,08),hostile
-MONSTER:'H',"hill giant",random,hostile
-MONSTER:'H',"hill giant",random,hostile
-MONSTER:'H',"hill giant",random,hostile
-MONSTER:'H',"hill giant",random,hostile
-MONSTER:'H',random,random,hostile
-WALLIFY
+TRAP:"spiked pit",random
+TRAP:"spiked pit",random
+TRAP:"spiked pit",random
+TRAP:"spiked pit",random
+TRAP:"bear",random
+TRAP:"bear",random
+TRAP:"bear",random
+TRAP:"bear",random
+TRAP:"bear",random
+TRAP:"bear",random
+# Monsters...
+MONSTER:';',"electric eel",(28,11),hostile
+MONSTER:';',"electric eel",(46,09),hostile
+MONSTER:';',"electric eel",(46,10),hostile
+MONSTER:';',"electric eel",(63,16),hostile
+MONSTER:';',"giant eel",random,hostile
+MONSTER:';',"giant eel",random,hostile
+MONSTER:';',"giant eel",random,hostile
+MONSTER:';',"giant eel",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"monkey",random,hostile
+MONSTER:'Y',"monkey",random,hostile
+MONSTER:'Y',"monkey",random,hostile
+MONSTER:'Y',"monkey",random,hostile
+MONSTER:'S',"python",random,hostile
+MONSTER:'S',"python",random,hostile
+MONSTER:'S',"python",random,hostile
+MONSTER:'S',"python",random,hostile
+# WALLIFY
 
 #
@@ -219,5 +252,5 @@
 REGION:(00,00,75,19),lit,"ordinary"
 # Stairs
-STAIR:random,up
+LADDER:random,up
 # Non diggable walls
 NON_DIGGABLE:(00,00,75,19)
@@ -243,21 +276,49 @@
 MONSTER:'F',"shrieker",(25,8)
 MONSTER:'F',"shrieker",(45,11)
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'Y',"carnivorous ape",random,hostile
+MONSTER:'f',"tiger",random,hostile
+MONSTER:'f',"tiger",random,hostile
+MONSTER:'f',"tiger",random,hostile
 WALLIFY
 
 #
-#	The "fill" levels for the quest.
-#
-#	These levels are used to fill out any levels not occupied by specific
-#	levels as defined above. "filla" is the upper filler, between the
-#	start and locate levels, and "fillb" the lower between the locate
-#	and goal levels.
+#	The level inbetween the original starting jungle and the lower levels
+#	where the actual caves are.
 #
 
 MAZE: "Cav-fila" , ' '
-INIT_MAP: '.' , ' ' , true , true , random , true
-NOMAP
+FLAGS: noteleport,hardfloor,arboreal
+GEOMETRY: center,center
+MAP
+                                                                            
+                                          P                                 
+                                         PP                                 
+    ...                ....             .PP...            P  ....           
+   .....              ..PP...       ....PP.......          ........         
+   .....             ...PP...      .....PPP.........   P ..........         
+   .......           ........      .....PP..........................        
+     .....           .........      ...PPP............ P    ....P...        
+     ..P..         .....  ....       ..PP...     PPP        ...PPP..        
+     ..PP.         ....    ....       PPP                  P...PPP..        
+      .....        ...      ...       PP                    ....P...        
+      .....        ..       ...       P                    .........P       
+       ..... P     ..        ...                         ...........        
+       ......      ..        ...                  ..................        
+       ......      ..         .. P   PPP   .........PPPP...........P        
+        P  ...  PP ..         ..............................   PP           
+            ........               PPP    P   ..........                    
+             PPP                                                            
+                                                                            
+                                                                            
+ENDMAP
 #
-STAIR: random, up
-STAIR: random, down
+LADDER: (05,04), up
+LADDER: (36,05), down
+#
+REGION:(00,00,75,19),unlit,"ordinary"
+#
+NON_DIGGABLE:(00,00,75,19)
 #
 OBJECT: random, random, random
@@ -269,16 +330,43 @@
 OBJECT: random, random, random
 #
-TRAP: random, random
-TRAP: random, random
-TRAP: random, random
-TRAP: random, random
+TRAP: "pit", random
+TRAP: "pit", random
+TRAP: "pit", random
+TRAP: "spiked pit", random
+TRAP: "spiked pit", random
+TRAP: "spiked pit", random
+TRAP: "bear", (37,15)
+TRAP: "bear", random
+TRAP: "bear", random
+TRAP: "bear", random
+#
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+
+#
+#	The "fill" levels for the quest.
+#
+#	These levels are used to fill out any levels not occupied by specific
+#	levels as defined above. "filla" is the upper filler, between the
+#	start and locate levels, and "fillb" the lower between the locate
+#	and goal levels.
+#	
+#	Obviously, "fila" has been hijacked and moved above.  :)
 #
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', random, random, hostile
-MONSTER: 'H', "hill giant", random, hostile
 
 MAZE: "Cav-filb" , ' '
@@ -286,6 +374,6 @@
 NOMAP
 #
-STAIR: random, up
-STAIR: random, down
+LADDER: random, up
+LADDER: random, down
 #
 OBJECT: random, random, random
@@ -302,15 +390,31 @@
 OBJECT: random, random, random
 #
-TRAP: random, random
-TRAP: random, random
-TRAP: random, random
-TRAP: random, random
+TRAP: "pit", random
+TRAP: "pit", random
+TRAP: "pit", random
+TRAP: "spiked pit", random
+TRAP: "spiked pit", random
+TRAP: "spiked pit", random
+TRAP: "bear", random
+TRAP: "bear", random
+TRAP: "bear", random
+TRAP: "bear", random
 #
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', "bugbear", random, hostile
-MONSTER: 'h', random, random, hostile
-MONSTER: 'h', random, random, hostile
-MONSTER: 'H', "hill giant", random, hostile
-MONSTER: 'H', "hill giant", random, hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'f',"tiger",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'S',"python",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+MONSTER: 'Y',"carnivorous ape",random,hostile
+
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/dungeon.def nethack/dat/dungeon.def
--- nh_orig/dat/dungeon.def	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/dungeon.def	2008-01-13 11:20:36.000000000 -0500
@@ -22,8 +22,8 @@
 LEVALIGN:	neutral
 CHAINBRANCH:	"Sokoban" "oracle" + (1, 0) up
-RNDLEVEL:	"bigrm" "B" @ (10, 3) 40 5
+RNDLEVEL:	"bigrm" "B" @ (10, 3) 40 9
 CHAINBRANCH:	"The Quest" "oracle" + (6, 2) portal
 BRANCH:		"Fort Ludios" @ (18, 4) portal
-RNDLEVEL:	"medusa" "none" @ (-5, 4) 2
+RNDLEVEL:	"medusa" "none" @ (-5, 4) 4
 LEVALIGN:	chaotic
 LEVEL:		"castle" "none" @ (-1, 0)
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/endgame.des nethack/dat/endgame.des
--- nh_orig/dat/endgame.des	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/endgame.des	2008-02-02 08:14:48.000000000 -0500
@@ -44,6 +44,11 @@
                                                                             
 ENDMAP
+
+REPLACE_TERRAIN:(0,0,75,19), ' ', '.', unlit, 15%
+
+
 #  Since there are no stairs, this forces the hero's initial placement
 TELEPORT_REGION:(69,16,69,16),(0,0,0,0)
+TERRAIN:(69,16),'.',lit
 PORTAL:(0,0,75,19),(65,13,75,19),"air"
 #  Some helpful monsters.  Making sure a
@@ -138,25 +143,29 @@
 # is all "air".
 MAP
-AAAAAAAAAAAAAAAAAAAAAAAACCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAACCCCCCAAAAAAAACCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAACCAACCCCCAAAAAACCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAACCACCCCCCCAAAAACCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAACCCCCCCCCCAAAAACCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAACCCCAAACCAAACCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAACCCCAAAAAACCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAACCCCCCCAAAACCACCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAACCCCAAAAAAACCACAACCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCAACCCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAACCCCAAACCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACACACCCCCAAACCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAACAACCCCCCCAAAACCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACACCCCCCCCAAACCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCCCCCCCCAACCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAACACCCCCCCCCCACCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAACAACCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAACCCCCCAAACCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACCAAAAAACCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 ENDMAP
+
+REPLACE_TERRAIN:(0,0,75,19), 'A', 'C', lit, 35%
+REPLACE_TERRAIN:(25,0,50,19), 'A', 'C', lit, 50%
+
 # Use up and down regions to partition the level into three parts;
 # teleportation can't cross from one part into another.
@@ -256,5 +265,8 @@
 .................................LL....................LL...................
 ENDMAP
+
+REPLACE_TERRAIN:(0,0,75,19), '.', 'L', lit, 30%
 TELEPORT_REGION:(69,16,69,16),(0,0,0,0)
+TERRAIN:(69,16),'.',lit
 PORTAL:(0,0,75,19),(65,13,75,19),"water"
 
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/gehennom.des nethack/dat/gehennom.des
--- nh_orig/dat/gehennom.des	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/gehennom.des	2007-12-28 20:49:24.000000000 -0500
@@ -30,4 +30,21 @@
 ----------------------------------------------------------------------------
 ENDMAP
+
+IF [50%] THEN
+   TERRAIN:(50,8),horizontal,4, '-',unlit
+   TERRAIN:(40,8),horizontal,4, 'B',unlit
+ENDIF
+
+IF [50%] THEN
+   TERRAIN:(27,12),'|',unlit
+   TERRAIN:(27,3),horizontal,3, 'B',unlit
+   TERRAIN:(28,2), '-',unlit
+ENDIF
+
+IF [50%] THEN
+   TERRAIN:(16,10),vertical,2,'|',unlit
+   TERRAIN:(9,13),horizontal,6, 'B',unlit
+ENDIF
+
 # Dungeon Description
 # The shrine to Moloch.
@@ -328,4 +345,9 @@
 OBJECT:'`',"boulder",(15,13)
 OBJECT:'`',"boulder",(14,14)
+# Special rooms
+ALTAR:(24,07),noalign,sanctum
+REGION:(22,12,25,16),unlit,"morgue"
+REGION:(32,09,37,12),lit,"shop"
+REGION:(12,00,15,04),lit,"shop"
 # Doors
 DOOR:closed,(23,02)
@@ -345,9 +367,4 @@
 DOOR:open,(26,14)
 DOOR:closed,(06,15)
-# Special rooms
-ALTAR:(24,07),noalign,sanctum
-REGION:(22,12,25,16),unlit,"morgue"
-REGION:(32,09,37,12),lit,"shop"
-REGION:(12,00,15,04),lit,"shop"
 # Some traps.
 TRAP:"spiked pit", random
@@ -673,2 +690,101 @@
 MONSTER:'V',random,random
 STAIR:(63,15),up
+
+
+#	The "fill" level for Gehennom
+#
+#	This level is used to fill out any levels not occupied by
+#	specific levels as defined above.
+#
+MAZE: "hellfill",'L'
+INIT_MAP: '.',' ',true,true,unlit,true
+TELEPORT_REGION:levregion(11,01,59,19),levregion(01,01,02,02)
+NOMAP
+#
+#  always put stairs relatively far apart
+#
+# outer loop
+IF [50%] THEN
+# inner loop
+IF [50%] THEN
+# Option 1: Up Left, Down Right
+STAIR:levregion(01,01,20,20),levregion(40,10,44,12),up
+STAIR:levregion(50,01,70,20),levregion(45,10,49,12),down
+ELSE
+# Option 2: Up Right, Down Left
+STAIR:levregion(50,01,70,20),levregion(45,10,49,12),up
+STAIR:levregion(01,01,20,20),levregion(40,10,44,12),down
+ENDIF
+# outer loop again
+ELSE
+# inner loop 2
+IF [50%] THEN
+# Option 3: Up Center, Down Elsewhere
+STAIR:levregion(30,01,50,20),levregion(38,01,42,20),up
+STAIR:levregion(01,01,70,20),levregion(30,01,50,20),down
+ELSE
+# Option 4: Down Center, Up Elsewhere
+STAIR:levregion(01,01,70,20),levregion(30,01,50,20),up
+STAIR:levregion(30,01,50,20),levregion(38,01,42,20),down
+ENDIF
+# end of outer loop
+ENDIF
+#
+RANDOM_OBJECTS:'(','/','=','+',')','[','?','*','%'
+OBJECT: object[0], random, random
+OBJECT: object[0], random, random
+OBJECT: object[1], random, random
+OBJECT: object[2], random, random
+OBJECT: object[3], random, random
+OBJECT: object[4], random, random
+OBJECT: random, random, random
+OBJECT: random, random, random
+#
+RANDOM_MONSTERS:'V','D',' ','&','Z'
+MONSTER:monster[0],random,random,hostile
+MONSTER:monster[0],random,random,hostile
+MONSTER:monster[1],random,random,hostile
+MONSTER:monster[1],random,random,hostile
+MONSTER:monster[2],random,random,hostile
+MONSTER:monster[3],random,random,hostile
+MONSTER:random,random,random,hostile
+MONSTER:'H',random,random,hostile
+# chance of evil critters
+IF [50%] THEN
+MONSTER:'L',random,random,hostile
+ELSE
+MONSTER:random,random,random,hostile
+ENDIF
+IF [66%] THEN
+# could be a snark now, so up the percentage a bit
+MONSTER:'J',random,random,hostile
+ELSE
+MONSTER:random,random,random,hostile
+ENDIF
+# chance of lava spillage?
+IF [75%] THEN
+SPILL: random, 'L', north, 20, lit
+ENDIF
+IF [75%] THEN
+SPILL: random, 'L', south, 20, lit
+ENDIF
+IF [75%] THEN
+SPILL: random, 'L', east, 20, lit
+ENDIF
+IF [75%] THEN
+SPILL: random, 'L', west, 20, lit
+ENDIF
+#
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+TRAP: random, random
+#
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/Healer.des nethack/dat/Healer.des
--- nh_orig/dat/Healer.des	2003-12-07 18:39:12.000000000 -0500
+++ nethack/dat/Healer.des	2007-12-29 18:24:08.000000000 -0500
@@ -34,4 +34,7 @@
 PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
 ENDMAP
+
+REPLACE_TERRAIN:(01,01,74,18), 'P', '.', lit, 15%
+
 # Dungeon Description
 REGION:(00,00,75,19),lit,"ordinary"
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/Knight.des nethack/dat/Knight.des
--- nh_orig/dat/Knight.des	2003-12-07 18:39:12.000000000 -0500
+++ nethack/dat/Knight.des	2007-12-29 18:24:08.000000000 -0500
@@ -269,4 +269,7 @@
 .......PPPP...                                                              
 ENDMAP
+
+REPLACE_TERRAIN:(00,00,15,19), '.', 'P', lit, 15%
+
 # Dungeon Description
 REGION:(00,00,14,19),lit,"ordinary"
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/medusa.des nethack/dat/medusa.des
--- nh_orig/dat/medusa.des	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/medusa.des	2007-12-29 18:24:07.000000000 -0500
@@ -32,4 +32,7 @@
 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
 ENDMAP
+
+REPLACE_TERRAIN:(01,01,73,18), '}', '.', lit, 5%
+
 # Dungeon Description
 # (must maintain one room definition; `unfilled' forces its room to be kept)
@@ -132,4 +135,7 @@
 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
 ENDMAP
+
+REPLACE_TERRAIN:(01,01,73,18), '}', '.', lit, 5%
+
 # Dungeon Description
 REGION:(00,00,74,19),lit,"ordinary"
@@ -214,2 +220,249 @@
 MONSTER:random,random,random
 MONSTER:random,random,random
+
+MAZE:"medusa-3",' '
+FLAGS: noteleport
+GEOMETRY:center,center
+#
+# Here you disturb ravens nesting in the trees.
+#
+MAP
+}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}}}}}}}}}}.}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}}}}}}}}T..T.}}}}}}}}}}}}}}}}}}}}..}}}}}}}}.}}}...}}}}}}}.}}}}}......}}}}}}}
+}}}}}}.......T.}}}}}}}}}}}..}}}}..T.}}}}}}...T...T..}}...T..}}..-----..}}}}}
+}}}...-----....}}}}}}}}}}.T..}}}}}...}}}}}.....T..}}}}}......T..|...|.T..}}}
+}}}.T.|...|...T.}}}}}}}.T......}}}}..T..}}.}}}.}}...}}}}}.T.....+...|...}}}}
+}}}}..|...|.}}.}}}}}.....}}}T.}}}}.....}}}}}}.T}}}}}}}}}}}}}..T.|...|.}}}}}}
+}}}}}.|...|.}}}}}}..T..}}}}}}}}}}}}}T.}}}}}}}}..}}}}}}}}}}}.....-----.}}}}}}
+}}}}}.--+--..}}}}}}...}}}}}}}}}}}}}}}}}}}T.}}}}}}}}}}}}}}}}.T.}........}}}}}
+}}}}}.......}}}}}}..}}}}}}}}}.}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.}}}.}}.T.}}}}}}
+}}.T...T...}}}}T}}}}}}}}}}}....}}}}}}}}}}T}}}}}.T}}...}}}}}}}}}}}}}}...}}}}}
+}}}...T}}}}}}}..}}}}}}}}}}}.T...}}}}}}}}.T.}.T.....T....}}}}}}}}}}}}}.}}}}}}
+}}}}}}}}}}}}}}}....}}}}}}}...}}.}}}}}}}}}}............T..}}}}}.T.}}}}}}}}}}}
+}}}}}}}}}}}}}}}}..T..}}}}}}}}}}}}}}..}}}}}..------+--...T.}}}....}}}}}}}}}}}
+}}}}.}..}}}}}}}.T.....}}}}}}}}}}}..T.}}}}.T.|...|...|....}}}}}.}}}}}...}}}}}
+}}}.T.}...}..}}}}T.T.}}}}}}.}}}}}}}....}}...|...+...|.}}}}}}}}}}}}}..T...}}}
+}}}}..}}}.....}}...}}}}}}}...}}}}}}}}}}}}}T.|...|...|}}}}}}}}}}}....T..}}}}}
+}}}}}..}}}.T..}}}.}}}}}}}}.T..}}}}}}}}}}}}}}---S-----}}}}}}}}}}}}}....}}}}}}
+}}}}}}}}}}}..}}}}}}}}}}}}}}}.}}}}}}}}}}}}}}}}}T..T}}}}}}}}}}}}}}}}}}}}}}}}}}
+}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+ENDMAP
+
+REPLACE_TERRAIN:(01,01,73,18), '}', '.', lit, 5%
+
+RANDOM_PLACES:(08,06),(66,05),(46,15)
+REGION:(00,00,74,19),lit,"ordinary"
+REGION:(49,14,51,16),random,"ordinary",unfilled
+REGION:(07,05,09,07),unlit,"ordinary"
+REGION:(65,04,67,06),unlit,"ordinary"
+REGION:(45,14,47,16),unlit,"ordinary"
+# All places are accessible also with jumping, so don't bother
+# restricting the placement when teleporting from levels below this.
+TELEPORT_REGION:(33,02,38,07),(0,0,0,0),down
+STAIR:(32,01,39,07),(0,0,0,0),up
+STAIR:place[0],down
+DOOR:locked,(08,08)
+DOOR:locked,(64,05)
+DOOR:random,(50,13)
+DOOR:locked,(48,15)
+# 
+FOUNTAIN:place[1]
+#
+CONTAINER:'`',"statue",place[2],uncursed,"knight",1,"Perseus"
+OBJECT[75%]:'[',"shield of reflection",contained,cursed,+0
+OBJECT[25%]:'[',"levitation boots",contained,random,+0
+OBJECT[50%]:')',"scimitar",contained,blessed,+2
+OBJECT[50%]:'(',"sack",contained
+#
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:'?',"blank paper",(48,18)
+OBJECT:'?',"blank paper",(48,18)
+#
+TRAP:"rust",random
+TRAP:"rust",random
+TRAP:"board",random
+TRAP:"board",random
+TRAP:random,random
+#
+MONSTER:'@',"Medusa",place[0]
+MONSTER:';',"giant eel",random
+MONSTER:';',"giant eel",random
+MONSTER:';',"jellyfish",random
+MONSTER:';',"jellyfish",random
+MONSTER:'n',"wood nymph",random
+MONSTER:'n',"wood nymph",random
+MONSTER:'n',"water nymph",random
+MONSTER:'n',"water nymph",random
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+MONSTER:'B',"raven",random,hostile
+
+
+MAZE:"medusa-4",' '
+FLAGS: noteleport
+GEOMETRY:center,center
+#
+# Here the Medusa rules some slithery monsters from her 'palace', with
+# a yellow dragon nesting in the backyard.
+#
+MAP
+}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}}}}}}}}}}}}}}........}}}}}}}}}}}}}}}}}}}}}}}..}}}.....}}}}}}}}}}}----|}}}}}
+}}}}}}..----------F-.....}}}}}}}}}}}}}}}}..---...}}}}....T.}}}}}}}....|}}}}}
+}}}.....|...F......S}}}}....}}}}}}}...}}.....|}}.}}}}}}}......}}}}|......}}}
+}}}.....+...|..{...|}}}}}}}}}}}}.....}}}}|...|}}}}}}}}}}}.}}}}}}}}----.}}}}}
+}}......|...|......|}}}}}}}}}......}}}}}}|.......}}}}}}}}}}}}}..}}}}}...}}}}
+}}|-+--F|-+--....|F|-|}}}}}....}}}....}}}-----}}.....}}}}}}}......}}}}.}}}}}
+}}|...}}|...|....|}}}|}}}}}}}..}}}}}}}}}}}}}}}}}}}}....}}}}}}}}....T.}}}}}}}
+}}|...}}F...+....F}}}}}}}..}}}}}}}}}}}}}}...}}}}}}}}}}}}}}}}}}}}}}....}}..}}
+}}|...}}|...|....|}}}|}....}}}}}}....}}}...}}}}}...}}}}}}}}}}}}}}}}}.....}}}
+}}--+--F|-+--....-F|-|....}}}}}}}}}}.T...}}}}....---}}}}}}}}}}}}}}}}}}}}}}}}
+}}......|...|......|}}}}}.}}}}}}}}}....}}}}}}}.....|}}}}}}}}}.}}}}}}}}}}}}}}
+}}}}....+...|..{...|.}}}}}}}}}}}}}}}}}}}}}}}}}}.|..|}}}}}}}......}}}}...}}}}
+}}}}}}..|...F......|...}}}}}}}}}}..---}}}}}}}}}}--.-}}}}}....}}}}}}....}}}}}
+}}}}}}}}-----S----F|....}}}}}}}}}|...|}}}}}}}}}}}}...}}}}}}...}}}}}}..}}}}}}
+}}}}}}}}}..............T...}}}}}.|.......}}}}}}}}}}}}}}..}...}.}}}}....}}}}}
+}}}}}}}}}}....}}}}...}...}}}}}.......|.}}}}}}}}}}}}}}.......}}}}}}}}}...}}}}
+}}}}}}}}}}..}}}}}}}}}}.}}}}}}}}}}-..--.}}}}}}}}..}}}}}}..T...}}}..}}}}}}}}}}
+}}}}}}}}}...}}}}}}}}}}}}}}}}}}}}}}}...}}}}}}}....}}}}}}}.}}}..}}}...}}}}}}}}
+}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.}}}}}}....}}}}}}}}}}}}}}}}}}}...}}}}}}
+}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+ENDMAP
+
+REPLACE_TERRAIN:(01,01,73,18), '}', '.', lit, 5%
+
+#
+RANDOM_PLACES:(04,08),(10,04),(10,08),(10,12)
+#
+REGION:(00,00,74,19),lit,"ordinary"
+REGION:(13,03,18,13),lit,"ordinary",unfilled
+#
+TELEPORT_REGION:(64,01,74,17),(0,0,0,0),down
+TELEPORT_REGION:(02,02,18,13),(0,0,0,0),up
+#
+STAIR:(67,01,74,20),(0,0,0,0),up
+STAIR:place[0],down
+# 
+DOOR:locked,(04,06)
+DOOR:locked,(04,10)
+DOOR:locked,(08,04)
+DOOR:locked,(08,12)
+DOOR:locked,(10,06)
+DOOR:locked,(10,10)
+DOOR:locked,(12,08)
+#
+BRANCH:levregion(27,00,79,20),(0,0,0,0)
+#
+NON_DIGGABLE:(01,01,22,14)
+#
+OBJECT:'(',"crystal ball",(07,08)
+#
+CONTAINER:'`',"statue",place[1],uncursed,"knight",1,"Perseus"
+OBJECT[75%]:'[',"shield of reflection",contained,cursed,+0
+OBJECT[25%]:'[',"levitation boots",contained,random,+0
+OBJECT[50%]:')',"scimitar",contained,blessed,+2
+OBJECT[50%]:'(',"sack",contained
+#
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+CONTAINER:'`',"statue",random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+OBJECT:random,random,random
+# 
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+TRAP:random,random
+#
+MONSTER:'@',"Medusa",place[0]
+MONSTER:';',"kraken",(07,07)
+#
+# the nesting dragon
+MONSTER:'D',"yellow dragon", (05,04), asleep
+MONSTER[50%]:'D',"baby yellow dragon", (04,04), asleep
+MONSTER[25%]:'D',"baby yellow dragon", (04,05), asleep
+OBJECT:'%',"egg", (05,04), random, "yellow dragon", random
+OBJECT[50%]:'%',"egg", (05,04), random, "yellow dragon", random
+OBJECT[25%]:'%',"egg", (05,04), random, "yellow dragon", random
+#
+MONSTER:';',"giant eel",random
+MONSTER:';',"giant eel",random
+MONSTER:';',"jellyfish",random
+MONSTER:';',"jellyfish",random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'S',random,random
+MONSTER:'N',"black naga hatchling", random
+MONSTER:'N',"black naga hatchling", random
+MONSTER:'N',"black naga hatchling", random
+MONSTER:'N',"black naga hatchling", random
+MONSTER:'N',"black naga", random
+MONSTER:'N',"black naga", random
+MONSTER:'N',"black naga", random
+MONSTER:'N',"black naga", random
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/mines.des nethack/dat/mines.des
--- nh_orig/dat/mines.des	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/mines.des	2008-01-13 12:21:48.000000000 -0500
@@ -46,84 +46,177 @@
 TRAP: random, random
 
-
 # Minetown variant 1
 # "Frontier Town"
 #
-LEVEL: "minetn-1"
-
-ROOM: "ordinary" , lit, (3,3), (center,center), (31,15)
-NAME: "town"
-FOUNTAIN: (13, 7)
-FOUNTAIN: (20, 7)
-
-# The Town Watch
-MONSTER: '@', "watchman", random, peaceful
-MONSTER: '@', "watchman", random, peaceful
-MONSTER: '@', "watchman", random, peaceful
-MONSTER: '@', "watchman", random, peaceful
-MONSTER: '@', "watch captain", random, peaceful
-
-SUBROOM: "shop" , lit, (2,2), (3,4), "town"
-CHANCE: 90
-DOOR: false, closed, south, random
-
-SUBROOM: "tool shop", lit, (2,9), (3,4), "town"
-CHANCE: 90
-DOOR: false, closed, north, random
-
-SUBROOM: "ordinary", unlit, (6,2), (3,4), "town"
-DOOR: false, closed, south, random
-
-SUBROOM: "ordinary", lit, (6,9), (3,4), "town"
-DOOR: false, closed, north, random
-
-SUBROOM: "food shop", lit, (10,2), (2,3), "town"
-CHANCE: 90
-DOOR: false, closed, south, random
-
-SUBROOM: "candle shop", lit, (22,2), (3,3), "town"
-DOOR: false, closed, south, random
+# A tragic accident has occurred to Frontier Town....
+# 
+# Orcish Town - a variant of Frontier Town that has been
+# overrun by orcs.  Note the barricades (iron bars).
+#
+MAZE: "minetn-1",' '
+INIT_MAP:'.',' ',true,true,random,true
+GEOMETRY:center,center
+MAP
+.....................................
+.----------------F------------------.
+.|.................................|.
+.|.-------------......------------.|.
+.|.|...|...|...|......|..|...|...|.|.
+.F.|...|...|...|......|..|...|...|.|.
+.|.|...|...|...|......|..|...|...|.F.
+.|.|...|...|----......------------.|.
+.|.---------.......................|.
+.|.................................|.
+.|.---------.....--...--...........|.
+.|.|...|...|----.|.....|.---------.|.
+.|.|...|...|...|.|.....|.|..|....|.|.
+.|.|...|...|...|.|.....|.|..|....|.|.
+.|.|...|...|...|.|.....|.|..|....|.|.
+.|.-------------.-------.---------.|.
+.|.................................F.
+.-----------F------------F----------.
+.....................................
+ENDMAP
 
-SUBROOM: "ordinary", unlit, (10,10), (2,3), "town"
-DOOR: false, locked, east, random
-MONSTER: 'G', "gnome", random
+# Don't let the player fall into his likely death
+TELEPORT_REGION:levregion(01,01,20,19),levregion(20,00,70,19)
+REGION:(00,00,36,16),lit,"ordinary"
+STAIR:levregion(01,03,20,19),(00,00,36,15),up
+STAIR:levregion(61,03,75,19),(00,00,36,15),down
 
-SUBROOM: "ordinary", lit, (19,2),  (2,3), "town"
-DOOR: false, locked, west, random
-MONSTER: 'G', "gnome", random
+# shame we can't make polluted fountains
+FOUNTAIN:(16,09)
+FOUNTAIN:(25,09)
 
-SUBROOM: "temple", lit, (15,9), (4,4), "town"
-DOOR: false, closed, north, random
-ALTAR:(02,02),align[0],shrine
-MONSTER: 'G', "gnomish wizard", random
-MONSTER: 'G', "gnomish wizard", random
+# the altar's defiled; useful for BUC but not convertable
+ALTAR:(20,13),noalign,shrine
 
-SUBROOM: "ordinary", lit, (22,10), (2,3), "town"
-DOOR: false, locked, west, random
+# set up the shop doors; could be broken down
+DOOR:random,(5,8)
+DOOR:random,(9,8)
+DOOR:random,(13,7)
+DOOR:random,(22,5)
+DOOR:random,(27,7)
+DOOR:random,(31,7)
+DOOR:random,(5,10)
+DOOR:random,(9,10)
+DOOR:random,(15,13)
+DOOR:random,(25,13)
+DOOR:random,(31,11)
 
-SUBROOM: "ordinary", lit, (26,2), (3,3), "town"
-DOOR: false, closed, south, random
-MONSTER: 'G', "gnome lord", random
+# knock a few holes in the shop interior walls
+REPLACE_TERRAIN:(07,04,11,06),'|','.',lit,18%
+REPLACE_TERRAIN:(25,04,29,06),'|','.',lit,18%
+REPLACE_TERRAIN:(07,12,11,14),'|','.',lit,18%
+REPLACE_TERRAIN:(28,12,28,14),'|','.',lit,33%
 
-SUBROOM: "ordinary", unlit, (25,10), (4,3), "town"
-DOOR: false, closed, north, random
+# One spot each in most shops...
+RANDOM_PLACES:(05,04),(09,05),(13,04),(26,04),(31,05),(30,14),(05,14),(10,13),(26,14),(27,13)
 
-ROOM: "ordinary" , random, random, random, random
-STAIR: random, up
+# scatter some bodies
+OBJECT:'%',"corpse",(20,12),"aligned priest",0
+OBJECT:'%',"corpse",place[0],"shopkeeper",0
+OBJECT:'%',"corpse",place[1],"shopkeeper",0
+OBJECT:'%',"corpse",place[2],"shopkeeper",0
+OBJECT:'%',"corpse",place[3],"shopkeeper",0
+OBJECT:'%',"corpse",place[4],"shopkeeper",0
+OBJECT:'%',"corpse",random,"watchman",0
+OBJECT:'%',"corpse",random,"watchman",0
+OBJECT:'%',"corpse",random,"watchman",0
+OBJECT:'%',"corpse",random,"watchman",0
+OBJECT:'%',"corpse",random,"watch captain",0
 
-ROOM: "ordinary" , random, random, random, random
-STAIR: random, down
-TRAP: random, random
-MONSTER: 'G', "gnome", random
-MONSTER: 'G', "gnome", random
+# Rubble!
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'`',"boulder",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
+OBJECT:'*',"rock",random
 
-ROOM: "ordinary" , random, random, random, random
-MONSTER: 'h', "dwarf", random
+# Guarantee 7 candles since we won't have Izchak available
+OBJECT:'(',"wax candle",place[5]
+OBJECT:'(',"wax candle",place[5]
+OBJECT:'(',"tallow candle",place[6]
+OBJECT:'(',"tallow candle",place[6]
+OBJECT:'(',"wax candle",place[4]
+OBJECT:'(',"wax candle",place[9]
+OBJECT:'(',"tallow candle",place[0]
 
-ROOM: "ordinary" , random, random, random, random
-TRAP: random, random
-MONSTER: 'G', "gnome", random
+# go ahead and leave a lamp next to one corpse to be suggestive
+# and some empty wands...
+OBJECT:'(',"oil lamp",place[2]
+OBJECT:'/',"striking",place[1],uncursed,0
+OBJECT:'/',"striking",place[3],uncursed,0
+OBJECT:'/',"striking",place[4],uncursed,0
+OBJECT:'/',"magic missile",place[4],uncursed,0
+OBJECT:'/',"magic missile",place[0],uncursed,0
 
-RANDOM_CORRIDORS
+# the Orcish Army
+#
+# We need to specify locations inside the walls
+# for all of these critters since 'random' could
+# put them in our empty 'corridor' around the town
+MONSTER: 'o', "orc-captain", (07,09), hostile
+MONSTER: 'o', "orc-captain", (19,09), hostile
+MONSTER: 'o', "orc-captain", (30,09), hostile
+MONSTER: 'o', "Uruk-hai", (18,04), hostile
+MONSTER: 'o', "Uruk-hai", (19,04), hostile
+MONSTER: 'o', "Uruk-hai", (20,05), hostile
+MONSTER: 'o', "Uruk-hai", (14,09), hostile
+MONSTER: 'o', "Uruk-hai", (25,09), hostile
+MONSTER: 'o', "Mordor orc", (20,04), hostile
+MONSTER: 'o', "Mordor orc", (18,05), hostile
+MONSTER: 'o', "Mordor orc", (19,05), hostile
+MONSTER: 'o', "Mordor orc", (07,02), hostile
+MONSTER: 'o', "Mordor orc", (29,02), hostile
+MONSTER: 'o', "Mordor orc", (07,16), hostile
+MONSTER: 'o', "Mordor orc", (29,16), hostile
+# shamans can be hanging out in/near the temple
+MONSTER: 'o', "orc shaman", (19,11), hostile
+MONSTER: 'o', "orc shaman", (21,11), hostile
+MONSTER: 'o', "orc shaman", (16,12), hostile
+MONSTER: 'o', "orc shaman", (24,12), hostile
+# these are not such a big deal
+# to run into outside the bars
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "hill orc", random, hostile
+MONSTER: 'o', "goblin", random, hostile
+MONSTER: 'o', "goblin", random, hostile
+MONSTER: 'o', "goblin", random, hostile
+MONSTER: 'o', "goblin", random, hostile
+MONSTER: 'o', "goblin", random, hostile
+MONSTER: 'o', "goblin", random, hostile
+MONSTER: 'o', "goblin", random, hostile
+MONSTER: 'o', "goblin", random, hostile
 
 
@@ -145,56 +238,56 @@
 
 SUBROOM: "ordinary", random, (2,0), (2,2), "town"
-DOOR: false, closed, west, random
+ROOMDOOR: false, closed, west, random
 
 SUBROOM: "ordinary", unlit, (5,0), (2,2), "town"
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", random, (8,0), (2,2), "town"
-DOOR: false, closed, east, random
+ROOMDOOR: false, closed, east, random
 
 SUBROOM: "ordinary", lit, (16,0), (2,2), "town"
-DOOR: false, closed, west, random
+ROOMDOOR: false, closed, west, random
 
 SUBROOM: "ordinary", unlit, (19,0), (2,2), "town"
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", random, (22,0), (2,2), "town"
-DOOR: false, locked, south, random
+ROOMDOOR: false, locked, south, random
 MONSTER: 'G', "gnome", random
 
 SUBROOM: "ordinary", unlit, (25,0), (2,2), "town"
-DOOR: false, closed, east, random
+ROOMDOOR: false, closed, east, random
 
 SUBROOM: "ordinary", lit, (2,5), (2,2), "town"
-DOOR: false, closed, north, random
+ROOMDOOR: false, closed, north, random
 
 SUBROOM: "ordinary", lit, (5,5), (2,2), "town"
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", random, (8,5), (2,2), "town"
-DOOR: false, locked, north, random
+ROOMDOOR: false, locked, north, random
 MONSTER: 'G', "gnome", random
 
 SUBROOM: "shop" , lit, (2,10), (4,3), "town"
 CHANCE: 90
-DOOR: false, closed, west, random
+ROOMDOOR: false, closed, west, random
 
 SUBROOM: "tool shop", lit, (23,10), (4,3), "town"
 CHANCE: 90
-DOOR: false, closed, east, random
+ROOMDOOR: false, closed, east, random
 
 SUBROOM: "food shop", lit, (24,5), (3,4), "town"
 CHANCE: 90
-DOOR: false, closed, north, random
+ROOMDOOR: false, closed, north, random
 
 SUBROOM: "candle shop", lit, (11,10), (4,3), "town"
-DOOR: false, closed, east, random
+ROOMDOOR: false, closed, east, random
 
 SUBROOM: "ordinary", unlit, (7,10), (3,3), "town"
-DOOR: false, locked, north, random
+ROOMDOOR: false, locked, north, random
 MONSTER: 'G', "gnome", random
 
 SUBROOM: "temple", lit, (19,5), (4,4), "town"
-DOOR: false, closed, north, random
+ROOMDOOR: false, closed, north, random
 ALTAR:(02,02),align[0],shrine
 MONSTER: 'G', "gnomish wizard", random
@@ -202,5 +295,5 @@
 
 SUBROOM: "ordinary", lit, (18,10), (4,3), "town"
-DOOR: false, locked, west, random
+ROOMDOOR: false, locked, west, random
 MONSTER: 'G', "gnome lord", random
 
@@ -239,19 +332,19 @@
 
 SUBROOM:"ordinary",random,(2,2),(2,2),"town"
-DOOR: false,closed,south,random
+ROOMDOOR: false,closed,south,random
 
 SUBROOM:"tool shop",lit,(5,3),(2,3),"town"
 CHANCE: 30
-DOOR: false,closed,south,random
+ROOMDOOR: false,closed,south,random
 
 SUBROOM:"ordinary",random,(2,10),(2,3),"town"
-DOOR: false, locked, north, random
+ROOMDOOR: false, locked, north, random
 MONSTER: 'G',random,random
 
 SUBROOM:"ordinary",random,(5,9),(2,2),"town"
-DOOR: false,closed,north,random
+ROOMDOOR: false,closed,north,random
 
 SUBROOM:"temple",lit,(10,2),(3,4),"town"
-DOOR: false,closed,east,random
+ROOMDOOR: false,closed,east,random
 ALTAR:(1,1),align[0],shrine
 MONSTER: 'G', "gnomish wizard", random
@@ -259,40 +352,40 @@
 
 SUBROOM:"ordinary",random,(11,7),(2,2),"town"
-DOOR: false,closed,west,random
+ROOMDOOR: false,closed,west,random
 
 SUBROOM:"shop",lit,(10,10),(3,3),"town"
-DOOR:false,closed,west,random
+ROOMDOOR:false,closed,west,random
 
 SUBROOM:"ordinary",random,(14,8),(2,2),"town"
-DOOR:false,locked,north,random
+ROOMDOOR:false,locked,north,random
 MONSTER: 'G',random,random
 
 SUBROOM:"ordinary",random,(14,11),(2,2),"town"
-DOOR:false,closed,south,random
+ROOMDOOR:false,closed,south,random
 
 SUBROOM:"tool shop",lit,(17,10),(3,3),"town"
 CHANCE:40
-DOOR:false,closed,north,random
+ROOMDOOR:false,closed,north,random
 
 SUBROOM:"ordinary",random,(21,11),(2,2),"town"
-DOOR:false,locked,east,random
+ROOMDOOR:false,locked,east,random
 MONSTER:'G',random,random
 
 SUBROOM:"food shop",lit,(26,8),(3,2),"town"
 CHANCE:90
-DOOR:false,closed,west,random
+ROOMDOOR:false,closed,west,random
 
 SUBROOM:"ordinary",random,(16,2),(2,2),"town"
-DOOR:false,closed,west,random
+ROOMDOOR:false,closed,west,random
 
 SUBROOM:"ordinary",random,(19,2),(2,2),"town"
-DOOR:false,closed,north,random
+ROOMDOOR:false,closed,north,random
 
 SUBROOM:"wand shop",lit,(19,5),(3,2),"town"
 CHANCE:30
-DOOR:false,closed,west,random
+ROOMDOOR:false,closed,west,random
 
 SUBROOM: "candle shop",lit,(25,2),(3,3),"town"
-DOOR:false,closed,south,random
+ROOMDOOR:false,closed,south,random
 
 ROOM: "ordinary", random, random, random, random
@@ -330,11 +423,11 @@
 
 SUBROOM:"book shop",lit,(4,2),(3,3),"town"
-DOOR: false,closed,south,random
+ROOMDOOR: false,closed,south,random
 
 SUBROOM:"ordinary",random,(8,2),(2,2),"town"
-DOOR: false,closed,south,random
+ROOMDOOR: false,closed,south,random
 
 SUBROOM:"temple",lit,(11,3),(5,4),"town"
-DOOR: false,closed,south,random
+ROOMDOOR: false,closed,south,random
 ALTAR:(2,1),align[0],shrine
 MONSTER: 'G', "gnomish wizard", random
@@ -342,20 +435,20 @@
 
 SUBROOM:"ordinary",random,(19,2),(2,2),"town"
-DOOR: false,closed,south,random
+ROOMDOOR: false,closed,south,random
 MONSTER: 'G', random, random
 
 SUBROOM:"candle shop",lit,(22,2),(3,3),"town"
-DOOR:false,closed,south,random
+ROOMDOOR:false,closed,south,random
 
 SUBROOM:"ordinary",random,(26,2),(2,2),"town"
-DOOR:false,locked,east,random
+ROOMDOOR:false,locked,east,random
 MONSTER: 'G',random,random
 
 SUBROOM:"tool shop",lit,(4,10),(3,3),"town"
 CHANCE:90
-DOOR:false,closed,north,random
+ROOMDOOR:false,closed,north,random
 
 SUBROOM:"ordinary",random,(8,11),(2,2),"town"
-DOOR:false,locked,south,random
+ROOMDOOR:false,locked,south,random
 MONSTER: 'k',"kobold shaman",random
 MONSTER: 'k',"kobold shaman",random
@@ -365,16 +458,16 @@
 SUBROOM:"food shop",lit,(11,11),(3,2),"town"
 CHANCE:90
-DOOR:false,closed,east,random
+ROOMDOOR:false,closed,east,random
 
 SUBROOM:"ordinary",random,(17,11),(2,2),"town"
-DOOR:false,closed,west,random
+ROOMDOOR:false,closed,west,random
 
 SUBROOM:"ordinary",random,(20,10),(2,2),"town"
-DOOR:false,locked,north,random
+ROOMDOOR:false,locked,north,random
 MONSTER:'G',random,random
 
 SUBROOM:"shop",lit,(23,10),(3,3),"town"
 CHANCE:90
-DOOR:false,closed,north,random
+ROOMDOOR:false,closed,north,random
 
 ROOM: "ordinary" , random, random, random, random
@@ -425,4 +518,34 @@
 ENDMAP
 
+IF [75%] THEN
+   IF [50%] THEN
+      TERRAIN:(25,8),vertical,2, '|', unlit
+   ELSE
+      TERRAIN:(16,13),horizontal,2, '-', unlit
+   ENDIF
+ENDIF
+
+IF [75%] THEN
+   IF [50%] THEN
+      TERRAIN:(36,10),vertical,2, '|', unlit
+   ELSE
+      TERRAIN:(32,15),horizontal,2, '-', unlit
+   ENDIF
+ENDIF
+
+IF [50%] THEN
+   TERRAIN:(21,4, 22,5),filled, '.',unlit
+   TERRAIN:(14,9),vertical,2, '|', unlit
+ENDIF
+
+IF [50%] THEN
+   TERRAIN:(46,13), '|',unlit
+   TERRAIN:(43,5), horizontal, 5, '-',unlit
+   TERRAIN:(42,6), horizontal, 6, '.',unlit
+   TERRAIN:(47,7), '.', lit
+ENDIF
+
+TERRAIN[50%]:(69,11, 71,11), filled, '-',unlit
+
 STAIR:(01,01),up
 STAIR:(46,03),down
@@ -598,11 +721,11 @@
 
 SUBROOM: "ordinary", random, (2,2), (4,2), "town"
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", random, (7,2), (2,2), "town"
-DOOR: false, closed, north, random
+ROOMDOOR: false, closed, north, random
 
 SUBROOM: "ordinary", random, (7,5), (2,2), "town"
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", lit, (10,2), (3,4), "town"
@@ -611,56 +734,56 @@
 MONSTER:'Y',"monkey",random
 MONSTER:'Y',"monkey",random
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", random, (14,2), (4,2), "town"
-DOOR: false, closed, south, 0
+ROOMDOOR: false, closed, south, 0
 MONSTER: 'n', random, random
 
 SUBROOM: "ordinary", random, (16,5), (2,2), "town"
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", unlit, (19,2), (2,2), "town"
-DOOR: false, locked, east, random
+ROOMDOOR: false, locked, east, random
 MONSTER: 'G',"gnome king",random
 
 SUBROOM: "food shop", lit, (19,5), (2,3), "town"
 CHANCE: 50
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "ordinary", random, (2,7), (2,2), "town"
-DOOR: false, closed, east, random
+ROOMDOOR: false, closed, east, random
 
 SUBROOM: "tool shop", lit, (2,10), (2,3), "town"
 CHANCE: 50
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 
 SUBROOM: "candle shop", lit, (5,10),(3,3), "town"
-DOOR: false, closed, north, random
+ROOMDOOR: false, closed, north, random
 
 SUBROOM: "ordinary", random, (11,10), (2,2), "town"
-DOOR: false, locked, west, random
+ROOMDOOR: false, locked, west, random
 MONSTER: 'G',random,random
 
 SUBROOM: "shop", lit, (14,10), (2,3), "town"
 CHANCE: 60
-DOOR: false, closed, north, random
+ROOMDOOR: false, closed, north, random
 
 SUBROOM: "ordinary", random, (17,11), (4,2), "town"
-DOOR: false, closed, north, random
+ROOMDOOR: false, closed, north, random
 
 SUBROOM: "ordinary", random, (22,11), (2,2), "town"
-DOOR: false, closed, south, random
+ROOMDOOR: false, closed, south, random
 SINK: (00,00)
 
 SUBROOM: "food shop", lit, (25,11), (3,2), "town"
 CHANCE: 50
-DOOR: false, closed, east, random
+ROOMDOOR: false, closed, east, random
 
 SUBROOM: "tool shop", lit, (25,2), (3,3), "town"
 CHANCE: 30
-DOOR: false, closed, west, random
+ROOMDOOR: false, closed, west, random
 
 SUBROOM: "temple", lit, (24,6), (4,4), "town"
-DOOR: false, closed, west, random
+ROOMDOOR: false, closed, west, random
 ALTAR:(02,01),align[0],shrine
 MONSTER: 'G', "gnomish wizard", random
@@ -686,4 +809,5 @@
   
 
+
 # Mine end level variant 1
 # "Mimic of the Mines"
@@ -824,4 +948,31 @@
 ENDMAP
 
+IF [50%] THEN
+   TERRAIN:(55,14),'-',unlit
+   TERRAIN:(56,14),'-',unlit
+   TERRAIN:(61,15),'|',unlit
+   TERRAIN:(52,5), 'S',unlit
+   DOOR:locked, (52,5)
+ENDIF
+
+IF [50%] THEN
+   TERRAIN:(18,1), '|',unlit
+   TERRAIN:(7,12, 8,13), unfilled, '.',unlit
+ENDIF
+
+IF [50%] THEN
+   TERRAIN:(49,4), '|', unlit
+   TERRAIN:(21,5), '.', unlit
+ENDIF
+
+IF [50%] THEN
+   IF [50%] THEN
+      TERRAIN:(22,1), '|', unlit
+   ELSE
+      TERRAIN:(50,7), '-', unlit
+      TERRAIN:(51,7), '-', unlit
+   ENDIF
+ENDIF
+
 # Dungeon Description
 FOUNTAIN:(14,13)
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/opthelp nethack/dat/opthelp
--- nh_orig/dat/opthelp	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/opthelp	2007-07-18 09:44:37.000000000 -0400
@@ -93,4 +93,7 @@
 disclose      the types of information you want offered at the end of the
               game  [ni na nv ng nc]
+dumpfile      the name of the file where to dump the disclosure information
+              when the game ends (only if the patch has been compiled in)
+              [none]
 fruit         the name of a fruit you enjoy eating  [slime mold]
               (basically a whimsy which NetHack uses from time to time).
@@ -121,4 +124,9 @@
               You choose a combination of top scores, scores around the top
               scores, and all of your own scores.  [!own/3 top/2 around]
+sortloot      controls the sortloot patch [none]:
+              full -- All pickup lists of items are sorted by item description
+              loot -- When inventory letters are shown, has no effect.
+                      Otherwise sorts by description
+              none -- Works the traditional way, like without the patch
 suppress_alert disable various version-specific warnings about changes
               in game play or the user interface, such as notification given
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/oracle.des nethack/dat/oracle.des
--- nh_orig/dat/oracle.des	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/oracle.des	2007-07-15 10:46:16.000000000 -0400
@@ -26,5 +26,5 @@
 FOUNTAIN: (2, 1)
 MONSTER: '@', "Oracle", (1,1)
-DOOR: false , nodoor , random, random
+ROOMDOOR: false , nodoor , random, random
 
 ROOM: "ordinary" , random, random, random, random
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/quest.txt nethack/dat/quest.txt
--- nh_orig/dat/quest.txt	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/quest.txt	2007-09-03 15:07:22.000000000 -0400
@@ -360,5 +360,5 @@
 "Pah!  You have betrayed the gods, %p.  You will never attain
 the glory which you aspire to.  Your failure to follow the true path has
-closed this future to you.
+closed that future to you.
 
 "I will protect these people as best I can, but soon %n will overcome
@@ -560,10 +560,10 @@
 #
 %Cc Cav 00001
-You descend through a barely familiar stairwell that you remember
+You walk through a barely familiar overgrown path that you remember
 %l showing you when you embarked upon your vision quest.
 
-You arrive back at %H, but something seems
-wrong here.  The usual smoke and glowing light of the fires of the
-outer caves are absent, and an uneasy quiet fills the damp air.
+You arrive back at %H, ... but something seems
+wrong here.  The jungle has a tense aura about it, and the beasts
+are snarling and hostile.  An uneasy quiet fills the damp air.
 %E
 %Cp Cav 00002
@@ -620,6 +620,5 @@
 %E
 %Cc Cav 00018
-"%pC!  You have sealed our fate.  You seem unable to reform yourself,
-so I must select another to take your place.
+"%pC!  You have sealed our fate by being unable to reform yourself.
 
 "Begone from %H!  You have betrayed us by choosing
@@ -640,5 +639,5 @@
 %Cc Cav 00020
 "%pC!  You have deviated from my teachings.  You no longer follow
-the path of the %a as you should.  I banish you from these caves, to
+the path of the %a as you should.  I banish you from this temple, to
 go forth and purify yourself.  Then, you might be able to accomplish this
 quest."
@@ -648,5 +647,5 @@
 great suffering among your people:
 
-"Shortly after you left on your vision quest, the caves were invaded by
+"Shortly after you left on your vision quest, the jungle was invaded by
 the creatures sent against us by %n.
 
@@ -655,10 +654,13 @@
 minions of %n managed to steal %o.
 They took it to %i and there, none of our
-%g warriors have been able to go.
+%g warriors have been able to go.  Worse, she has invoked its power
+against us, and now conflict ravages our once-peaceful jungle.
 
 "You must find %i, and within it wrest
 %o from %n.  She guards it as
 jealously as she guards all treasures she attains.  But with it,
-we can make our caves safe once more.
+we can make our jungle safe once more.  Without it, the spirit of the
+jungle cries out in pain, and the animals are crazed and attack all
+who pass near.
 
 "Please, %p, recover %o for us, and return it here."
@@ -699,10 +701,10 @@
 %E
 %Cc Cav 00035
-You %x many large claw marks on the ground.  The tunnels ahead
-of you are larger than most of those in any cave complex you have
-ever been in before.
+You %x many large claw marks on the ground.  Your brief respite 
+from the narrow jungle confines appears to be over... many paths lead
+into the trees in all directions, and stagnant pools cover the ground.
 
-Your nose detects the smell of carrion from within, and bones litter
-the sides of the tunnels.
+Your nose detects the smell of carrion from somewhere deep within, and
+unidentifiable, gnawed bones litter the nearby underbrush.
 %E
 %Cp Cav 00036
@@ -713,5 +715,5 @@
 nevertheless show signs of being scorched by fire.
 
-Bones litter the floor, and there are objects scattered everywhere.
+Bones cover the floor, and there are objects scattered everywhere.
 The air is close with the stench of sulphurous fumes.
 
@@ -784,4 +786,10 @@
     own.
 
+He takes it from your hands and does something you cannot see. You 
+feel the very trees relax as the magic-induced hatred melts away from
+the land.
+
+He returns it to you and says:
+
     To prevent further trouble, I would like you, %p,
     to take %o away with you.  It will help you as you
@@ -1149,13 +1157,13 @@
 far is a credit to thy valor, but thou art yet unprepared for
 the demands required as Our Champion.  %rA, no matter how
-pure, could never hope to defeat the foul %n.
+brave, could never hope to defeat the foul %n.
 
 "Journey forth from this place, and hone thy skills.  Return to
-Our presence when thou hast attained the noble title of %R."
+Our presence when thou hast attained the title of %R."
 %E
 %Cc Kni 00020
-"Thou dishonourest Us, %p!  Thou hast strayed from the path of
-chivalry! Go from Our presence and do penance.  Only when thou art again
-pure mayst thou return hence."
+"Thou dishonourest Us, %p!  Thou hast strayed from thine chosen 
+path!  Go from Our presence and do penance.  Only when thou 
+hast regained thy soul's direction mayst thou return hence."
 %E
 %Cc Kni 00021
@@ -2139,8 +2147,6 @@
 "Well %gp, it looks like our friend has forgotten who is the boss
 around here.  Our friend seems to think that %rp have been put in
-charge.  Wrong.  DEAD WRONG!"
+charge.  Wrong.  DEAD wrong, in fact..."
 
-Your sudden shift in surroundings prevents you from hearing the end
-of %ls curse.
 %E
 %Cc Rog 00019
@@ -2885,6 +2891,6 @@
 %Cc Val 00018
 "No, %p.  Your fate is sealed.  I must cast about for another
-champion.  Begone from my presence, and never return.  Know this, that
-you shall never succeed in this life, and Valhalla is denied to you."
+champion.  Begone from my presence, and never return.  Know that
+Valhalla shall be denied to you."
 %E
 %Cc Val 00019
@@ -3463,10 +3469,9 @@
 have done.
 
-Leave this place.  You shall never set foot at %H again.
-That which you seek is now lost forever, for without the Bell of Opening, 
-you will never be able to enter the place where he who has the Amulet 
-resides.
+Leave this place. You shall never set foot beyond %H again as long as I
+draw breath... and without the Bell of Opening, you will never be able to 
+enter the place where he who has the Amulet resides.
 
-Go now!  You are banished from this place.
+Begone from my sight!"
 %E
 #
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/sokoban.des nethack/dat/sokoban.des
--- nh_orig/dat/sokoban.des	2003-12-07 18:39:13.000000000 -0500
+++ nethack/dat/sokoban.des	2007-07-15 10:46:16.000000000 -0400
@@ -526,5 +526,9 @@
 DOOR:closed,(17,15)
 REGION:(18,10,22,16),lit,"zoo",filled,true
+IF [50%] THEN
+  OBJECT:'"',"amulet of reflection",place[0]
+ELSE
 OBJECT:'(',"bag of holding",place[0]
+ENDIF
 ENGRAVING:place[0],burn,"Elbereth"
 
@@ -620,4 +624,8 @@
 DOOR:closed,(17,14)
 REGION:(18,09,22,15),lit,"zoo",filled,true
+IF [50%] THEN
 OBJECT:'"',"amulet of reflection",place[0]
+ELSE
+  OBJECT:'(',"bag of holding",place[0]
+ENDIF
 ENGRAVING:place[0],burn,"Elbereth"
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/Valkyrie.des nethack/dat/Valkyrie.des
--- nh_orig/dat/Valkyrie.des	2003-12-07 18:39:12.000000000 -0500
+++ nethack/dat/Valkyrie.des	2007-12-29 18:24:08.000000000 -0500
@@ -34,4 +34,7 @@
 IIIIIIIIIIIIIIIIIIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
 ENDMAP
+
+REPLACE_TERRAIN:(00,00,75,19), 'I', 'P', lit, 10%
+
 # Dungeon Description
 REGION:(00,00,75,19),lit,"ordinary"
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/dat/Wizard.des nethack/dat/Wizard.des
--- nh_orig/dat/Wizard.des	2003-12-07 18:39:12.000000000 -0500
+++ nethack/dat/Wizard.des	2007-12-29 16:00:37.000000000 -0500
@@ -33,4 +33,13 @@
 ......................CCC.C.................................................
 ENDMAP
+
+SPILL:(60,15), '}', west, 20, lit
+SPILL:(69,15), '}', north, 20, lit
+
+# first do cloud everywhere
+REPLACE_TERRAIN:(0,0, 75,19), '.', 'C', lit, 10%
+# then replace clouds inside the tower back to floor
+REPLACE_TERRAIN:(13,5, 33,15), 'C', '.', lit, 100%
+
 # Dungeon Description
 REGION:(00,00,75,19),lit,"ordinary"
@@ -42,4 +51,6 @@
 STAIR:(30,10),down
 # Portal arrival point
+# need to make sure it's clear
+TERRAIN:(63,06),'.',lit
 BRANCH:(63,06,63,06),(0,0,0,0)
 # Doors
@@ -128,4 +139,8 @@
 .............        .......................................................
 ENDMAP
+
+REPLACE_TERRAIN:(0,0,30,20), '.', 'C', lit, 15%
+REPLACE_TERRAIN:(68,0,75,20), '.', '}', lit, 25%
+
 # Dungeon Description
 REGION:(00,00,75,20),lit,"ordinary"
@@ -232,7 +247,7 @@
                                                                             
                                                                             
-                   -------------                 -------------              
-                   |...........|                 |...........|              
-            -------|...........-------------------...........|              
+            --------------------                 -------------              
+            |......|...........|                 |...........|              
+            ---S---|...........-------------------...........|              
             |......S...........|..|..|..|..|..|..|...........|              
             |......|...........|..|..|..|..|..|..|...........|              
@@ -242,7 +257,7 @@
             |......|...........|..|..|..|..|..|..|...........|              
             |......|...........|..|..|..|..|..|..|...........|              
-            -------|...........-------------------...........|              
-                   |...........|                 |...........|              
-                   -------------                 -------------              
+            ----S--|...........-------------------...........|              
+            |......|...........|                 |...........|              
+            --------------------                 -------------              
                                                                             
                                                                             
@@ -268,4 +283,6 @@
 REGION:(47,11,48,12),unlit,"ordinary"
 REGION:(50,04,60,14),lit,"ordinary"
+REGION:(13,04,18,04),lit,"ordinary"
+REGION:(13,14,18,14),lit,"ordinary"
 # Doors
 DOOR:locked,(19,06)
@@ -285,4 +302,6 @@
 DOOR:locked,(48,10)
 DOOR:locked,(49,09)
+DOOR:locked,(16,13)
+DOOR:locked,(15,05)
 # Stairs
 STAIR:(55,05),up
@@ -292,5 +311,5 @@
 ALTAR:(16,11),noncoaligned,altar
 # Objects
-OBJECT:'"',"amulet of ESP",(16,11),blessed,0,"The Eye of the Aethiopica"
+OBJECT:'"',"amulet of power",(16,11),blessed,0,"The Eye of the Aethiopica"
 OBJECT:random,random,random
 OBJECT:random,random,random
@@ -307,4 +326,8 @@
 OBJECT:random,random,random
 OBJECT:random,random,random
+OBJECT:'+',"knock",(13,14)
+OBJECT:'+',random,(18,14)
+OBJECT:'+',random,(13,04)
+OBJECT:'+',"wizard lock",(18,04)
 # Random traps
 TRAP:random,random
@@ -314,4 +337,6 @@
 TRAP:random,random
 TRAP:random,random
+TRAP:random,(16,14)
+TRAP:random,(15,04)
 # Random monsters.
 MONSTER:'@',"Dark One",(16,11)
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/doc/Guidebook.mn nethack/doc/Guidebook.mn
--- nh_orig/doc/Guidebook.mn	2003-12-07 18:39:13.000000000 -0500
+++ nethack/doc/Guidebook.mn	2007-07-18 09:44:37.000000000 -0400
@@ -1771,4 +1771,10 @@
 Name your starting dog (ex. ``dogname:Fang'').
 Cannot be set with the `O' command.
+.lp dumpfile
+The name of a file where the disclosure information is written when the
+game ends. You may use the macro %n that will be replaced with the name
+of your player character. The game must have write permissions to the
+directory where the file is written. Normally /tmp may be used for unix
+systems.
 .lp dungeon
 Set the graphics symbols for displaying the dungeon
@@ -2099,4 +2105,16 @@
 .lp "silent  "
 Suppress terminal beeps (default on).
+.lp sortloot
+Controls the behavior of the sortloot patch that sorts pickup lists for
+inventory and #loot commands and some others.
+The possible values are:
+.sd
+.si
+full - always sort the lists;
+loot - only sort the lists that don't use inventory
+       letters, like with the #loot and pickup commands;
+none - show lists the traditional way without sorting.
+.ei
+.ed
 .lp sortpack
 Sort the pack contents by type when displaying inventory (default on).
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/doc/Guidebook.tex nethack/doc/Guidebook.tex
--- nh_orig/doc/Guidebook.tex	2003-12-07 18:39:13.000000000 -0500
+++ nethack/doc/Guidebook.tex	2007-07-18 09:44:37.000000000 -0400
@@ -2210,4 +2210,11 @@
 Cannot be set with the `{\tt O}' command.
 %.lp
+\item[\ib{dumpfile}]
+The name of a file where the disclosure information is written when the
+game ends. You may use the macro %n that will be replaced with the name
+of your player character. The game must have write permissions to the
+directory where the file is written. Normally /tmp may be used for unix
+systems.
+%.lp
 \item[\ib{dungeon}]
 Set the graphics symbols for displaying the dungeon (default
@@ -2574,4 +2581,19 @@
 Suppress terminal beeps (default on).
 %.lp
+\item[\ib{sortloot}]
+Controls the behavior of the sortloot patch that sorts pickup lists for
+inventory and \#loot commands and some others.
+
+The possible values are:
+%.sd
+%.si
+{\tt full} --- always sort the lists;\\
+{\tt loot} --- only sort the lists that don't use inventory
+       letters, like with the \#loot and pickup commands;\\
+{\tt none} --- show lists the traditional way without sorting.
+%.ei
+%.ed
+%.lp
+The default is 'none', the way an unpatched game works.
 \item[\ib{sortpack}]
 Sort the pack contents by type when displaying inventory (default on).
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/doc/Guidebook.txt nethack/doc/Guidebook.txt
--- nh_orig/doc/Guidebook.txt	2003-12-07 18:39:13.000000000 -0500
+++ nethack/doc/Guidebook.txt	2007-07-18 09:44:37.000000000 -0400
@@ -2275,4 +2275,11 @@
             with the `O' command.
 
+          dumpfile
+            The name of a file where the disclosure information is
+            written when the game ends. You may use the macro %n that
+            will be replaced with the name of your player character.
+            The game must have write permissions to the directory where
+            the file is written. Normally /tmp may be used for unixes.
+
           dungeon
             Set the graphics symbols for displaying  the  dungeon  (default
@@ -2724,4 +2731,16 @@
             Suppress terminal beeps (default on).
 
+          sortloot
+               Controls the behavior of the sortloot patch that sorts
+               pickup lists for inventory and #loot commands and some
+               others.
+               The possible values are:
+
+                    full - always sort the lists
+                    loot - only sort the lists that don't use inventory
+                           letters, like with the #loot and pickup commands
+                    none - show lists the traditional way without sorting
+               The default is 'none', the way an unpatched game works.
+
           sortpack
             Sort the pack contents by type when displaying  inventory  (de-
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/align.h nethack/include/align.h
--- nh_orig/include/align.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/align.h	2008-07-26 15:12:40.000000000 -0400
@@ -13,6 +13,8 @@
 } align;
 
-/* bounds for "record" -- respect initial alignments of 10 */
-#define ALIGNLIM	(10L + (moves/200L))
+/* bounds for "record" -- respect initial alignments of 10.
+ * note that the maximum alignment is now 50, so that mortal
+ * sins always put you out of favor with your god. */
+#define ALIGNLIM	(min(50,10L + (moves/300L)))
 
 #define A_NONE	      (-128)	/* the value range of type */
@@ -40,3 +42,13 @@
 			 : ((x) == A_LAWFUL) ? AM_LAWFUL : (x) + 2)
 
+/*
+ * These will make it a bit easier to adjust alignment swings
+ * while trying to get it balanced out to where it matters...
+ */
+
+#define venial_sin() (adjalign(-5))
+#define minor_sin() (adjalign(-10))
+#define major_sin() (adjalign(-20))
+#define mortal_sin() (adjalign(-50))
+
 #endif /* ALIGN_H */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/artifact.h nethack/include/artifact.h
--- nh_orig/include/artifact.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/artifact.h	2007-06-10 14:11:18.000000000 -0400
@@ -35,5 +35,23 @@
 #define SPFX_XRAY   0x2000000L	/* gives X-RAY vision to player */
 #define SPFX_REFLECT 0x4000000L /* Reflection */
+#define SPFX_STR	  0x8000000L   /* item bestows STR 18(**) */
+#define SPFX_CON	  0x10000000L   /* item bestows CON 25 */
+#define SPFX_POLYC  0x20000000L	 /* items grants polymorph control */
 
+#define SPDF_NONE		  0x00000000L /* No special effects */
+#define SPDF_MAGIC	  0x00000001L /* Magic resistance */
+#define SPDF_FIRE		  0x00000002L /* Fire defense */
+#define SPDF_COLD		  0x00000004L /* Cold defense */
+#define SPDF_SLEEP	  0x00000008L /* Sleep defense */
+#define SPDF_DISINT	  0x00000010L /* Disintegration defense */
+#define SPDF_ELEC		  0x00000020L /* Shock defense */
+#define SPDF_POISON	  0x00000040L /* Poison defense */
+#define SPDF_ACID		  0x00000080L /* Acid defense */
+#define SPDF_BLIND	  0x00000100L /* Blinding resistance */
+#define SPDF_WERE		  0x00000200L /* Lycanthropy resistance */
+#define SPDF_DRAIN	  0x00000400L /* Drain level defense */
+#define SPDF_CONFUSE	  0x00000800L /* Confusion */
+#define SPDF_STUN		  0x00001000L /* Stunning */
+#define SPDF_ELEMENTAL 0x000000FEL	/* All elemental resistances (Dragonbane) */
 
 struct artifact {
@@ -43,5 +61,7 @@
 	unsigned long cspfx;	/* special effect just from carrying obj */
 	unsigned long mtype;	/* monster type, symbol, or flag */
-	struct attack attk, defn, cary;
+	struct attack attk;
+	unsigned long defn;	/* special defensive properties from wielding/wearing */
+	struct attack cary;
 	uchar	    inv_prop;	/* property obtained by invoking artifact */
 	aligntyp    alignment;	/* alignment of bequeathing gods */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/artilist.h nethack/include/artilist.h
--- nh_orig/include/artilist.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/artilist.h	2007-10-31 20:39:42.000000000 -0400
@@ -16,5 +16,4 @@
 
 #define     NO_ATTK	{0,0,0,0}		/* no attack */
-#define     NO_DFNS	{0,0,0,0}		/* no defense */
 #define     NO_CARY	{0,0,0,0}		/* no carry effects */
 #define     DFNS(c)	{0,c,0,0}
@@ -26,4 +25,5 @@
 #define     ELEC(a,b)	{0,AD_ELEC,a,b}		/* electrical shock */
 #define     STUN(a,b)	{0,AD_STUN,a,b}		/* magical attack */
+#define		DRST(a,b)	{0,AD_DRST,a,b}		/* poison attack */
 
 STATIC_OVL NEARDATA struct artifact artilist[] = {
@@ -39,9 +39,16 @@
 /*  dummy element #0, so that all interesting indices are non-zero */
 A("",				STRANGE_OBJECT,
-	0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L ),
+	0, 0, 0, NO_ATTK, SPDF_NONE, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L ),
 
 A("Excalibur",			LONG_SWORD,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_SEEK|SPFX_DEFN|SPFX_INTEL|SPFX_SEARCH),0,0,
-	PHYS(5,10),	DRLI(0,0),	NO_CARY,	0, A_LAWFUL, PM_KNIGHT, NON_PM, 4000L ),
+	PHYS(5,10),	SPDF_DRAIN,	NO_CARY,	0, A_LAWFUL, PM_KNIGHT, NON_PM, 4000L ),
+/* 
+ * The Knight needed a chaotic longsword to obtain, since Excalibur
+ * will be restricted from him... 
+*/
+A("Dirge",			LONG_SWORD,
+	(SPFX_ATTK|SPFX_NOGEN|SPFX_RESTR|SPFX_DEFN|SPFX_INTEL),0,0,
+	DRST(5,0),	SPDF_DRAIN,	NO_CARY,	0, A_CHAOTIC, NON_PM, NON_PM, 3000L ),
 /*
  *	Stormbringer only has a 2 because it can drain a level,
@@ -50,5 +57,13 @@
 A("Stormbringer",		RUNESWORD,
 	(SPFX_RESTR|SPFX_ATTK|SPFX_DEFN|SPFX_INTEL|SPFX_DRLI), 0, 0,
-	DRLI(5,2),	DRLI(0,0),	NO_CARY,	0, A_CHAOTIC, NON_PM, NON_PM, 8000L ),
+	DRLI(5,2),	SPDF_DRAIN,	NO_CARY,	0, A_CHAOTIC, NON_PM, NON_PM, 8000L ),
+/*
+ * Lifestealer gets the same restrictions as Stormy, but it's designed
+ * to be generated in Vlad's hands anyway, so this isn't such a big deal.
+ * It's two-handed so players (hopefully) won't really want to use it...
+ */
+A("Lifestealer",		TWO_HANDED_SWORD,
+	(SPFX_NOGEN|SPFX_RESTR|SPFX_ATTK|SPFX_DEFN|SPFX_INTEL|SPFX_DRLI), 0, 0,
+	DRLI(5,2),	SPDF_DRAIN,	NO_CARY,	0, A_CHAOTIC, NON_PM, NON_PM, 8000L ),
 /*
  *	Mjollnir will return to the hand of the wielder when thrown
@@ -57,29 +72,27 @@
 A("Mjollnir",			WAR_HAMMER,		/* Mjo:llnir */
 	(SPFX_RESTR|SPFX_ATTK),  0, 0,
-	ELEC(5,24),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, PM_VALKYRIE, NON_PM, 4000L ),
+	ELEC(5,24),	SPDF_NONE,	NO_CARY,	0, A_NEUTRAL, PM_VALKYRIE, NON_PM, 4000L ),
 
 A("Cleaver",			BATTLE_AXE,
 	SPFX_RESTR, 0, 0,
-	PHYS(3,6),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, PM_BARBARIAN, NON_PM, 1500L ),
+	PHYS(3,6),	SPDF_NONE,	NO_CARY,	0, A_NEUTRAL, PM_BARBARIAN, NON_PM, 1500L ),
 
 A("Grimtooth",			ORCISH_DAGGER,
 	SPFX_RESTR, 0, 0,
-	PHYS(2,6),	NO_DFNS,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ORC, 300L ),
+	PHYS(5,6),	SPDF_NONE,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ORC, 600L ),
 /*
  *	Orcrist and Sting have same alignment as elves.
- */
-A("Orcrist",			ELVEN_BROADSWORD,
-	SPFX_DFLAG2, 0, M2_ORC,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ELF, 2000L ),
-
-/*
  *	The combination of SPFX_WARN and M2_something on an artifact
  *	will trigger EWarn_of_mon for all monsters that have the appropriate
  *	M2_something flags.  In Sting's case it will trigger EWarn_of_mon
- *	for M2_ORC monsters.
+ *	for M2_SPIDER monsters; in Orcrist, for M2_ORC.
  */
+A("Orcrist",			ELVEN_BROADSWORD,
+	(SPFX_WARN|SPFX_DCLAS), 0, S_ORC,
+	PHYS(5,4),	SPDF_NONE,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ELF, 2000L ),
+
 A("Sting",			ELVEN_DAGGER,
-	(SPFX_WARN|SPFX_DFLAG2), 0, M2_ORC,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ELF, 800L ),
+	(SPFX_WARN|SPFX_DCLAS), 0, S_SPIDER,
+	PHYS(5,3),	SPDF_NONE,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ELF, 800L ),
 /*
  *	Magicbane is a bit different!  Its magic fanfare
@@ -88,41 +101,41 @@
 A("Magicbane",			ATHAME,
 	(SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
-	STUN(3,4),	DFNS(AD_MAGM),	NO_CARY,	0, A_NEUTRAL, PM_WIZARD, NON_PM, 3500L ),
+	STUN(3,4),	SPDF_MAGIC,	NO_CARY,	0, A_NEUTRAL, PM_WIZARD, NON_PM, 3500L ),
 
 A("Frost Brand",		LONG_SWORD,
 	(SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
-	COLD(5,0),	COLD(0,0),	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 3000L ),
+	COLD(5,0),	SPDF_COLD,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 3000L ),
 
 A("Fire Brand",			LONG_SWORD,
 	(SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
-	FIRE(5,0),	FIRE(0,0),	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 3000L ),
+	FIRE(5,0),	SPDF_FIRE,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 3000L ),
 
-A("Dragonbane",			BROADSWORD,
-	(SPFX_RESTR|SPFX_DCLAS), 0, S_DRAGON,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 500L ),
+A("Dragonbane",			DWARVISH_SPEAR,
+	(SPFX_WARN|SPFX_RESTR|SPFX_DCLAS), 0, S_DRAGON,
+	PHYS(5,4),	SPDF_ELEMENTAL,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 1500L ),
 
-A("Demonbane",			LONG_SWORD,
-	(SPFX_RESTR|SPFX_DFLAG2), 0, M2_DEMON,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 2500L ),
+A("Demonbane",			SILVER_MACE,
+	(SPFX_WARN|SPFX_RESTR|SPFX_DCLAS), 0, S_DEMON,
+	PHYS(5,4),	SPDF_NONE,	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 2500L ),
 
 A("Werebane",			SILVER_SABER,
-	(SPFX_RESTR|SPFX_DFLAG2), 0, M2_WERE,
-	PHYS(5,0),	DFNS(AD_WERE),	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 1500L ),
+	(SPFX_WARN|SPFX_RESTR|SPFX_DCLAS|SPFX_POLYC), 0, S_WERE,
+	PHYS(5,4),	SPDF_WERE,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 1500L ),
 
 A("Grayswandir",		SILVER_SABER,
 	(SPFX_RESTR|SPFX_HALRES), 0, 0,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 8000L ),
+	PHYS(5,0),	SPDF_NONE,	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 8000L ),
 
-A("Giantslayer",		LONG_SWORD,
-	(SPFX_RESTR|SPFX_DFLAG2), 0, M2_GIANT,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, NON_PM, NON_PM, 200L ),
+A("Giantslayer",		SLING,
+	(SPFX_WARN|SPFX_RESTR|SPFX_DCLAS|SPFX_STR), 0, S_GIANT,
+	PHYS(5,8),	SPDF_NONE,	NO_CARY,	0, A_NEUTRAL, NON_PM, NON_PM, 1200L ),
 
 A("Ogresmasher",		WAR_HAMMER,
-	(SPFX_RESTR|SPFX_DCLAS), 0, S_OGRE,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 200L ),
+	(SPFX_WARN|SPFX_RESTR|SPFX_DCLAS|SPFX_CON), 0, S_OGRE,
+	PHYS(5,4),	SPDF_NONE,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 1200L ),
 
 A("Trollsbane",			MORNING_STAR,
-	(SPFX_RESTR|SPFX_DCLAS), 0, S_TROLL,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 200L ),
+	(SPFX_WARN|SPFX_RESTR|SPFX_DCLAS|SPFX_REGEN), 0, S_TROLL,
+	PHYS(5,4),	SPDF_NONE,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 1200L ),
 /*
  *	Two problems:  1) doesn't let trolls regenerate heads,
@@ -132,5 +145,5 @@
 A("Vorpal Blade",		LONG_SWORD,
 	(SPFX_RESTR|SPFX_BEHEAD), 0, 0,
-	PHYS(5,1),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, NON_PM, NON_PM, 4000L ),
+	PHYS(5,1),	SPDF_NONE,	NO_CARY,	0, A_NEUTRAL, NON_PM, NON_PM, 4000L ),
 /*
  *	Ah, never shall I forget the cry,
@@ -143,9 +156,13 @@
 A("Snickersnee",		KATANA,
 	SPFX_RESTR, 0, 0,
-	PHYS(0,8),	NO_DFNS,	NO_CARY,	0, A_LAWFUL, PM_SAMURAI, NON_PM, 1200L ),
+	PHYS(5,8),	SPDF_NONE,	NO_CARY,	0, A_LAWFUL, PM_SAMURAI, NON_PM, 1200L ),
 
-A("Sunsword",			LONG_SWORD,
-	(SPFX_RESTR|SPFX_DFLAG2), 0, M2_UNDEAD,
-	PHYS(5,0),	DFNS(AD_BLND),	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 1500L ),
+A("Sunsword",			SILVER_LONG_SWORD,
+	(SPFX_WARN|SPFX_RESTR|SPFX_DCLAS), 0, S_UNDEAD,
+	PHYS(5,4),	SPDF_BLIND,	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 1500L ),
+
+A("Keolewa",CLUB,
+	SPFX_RESTR, 0, 0,
+	PHYS(5,6), SPDF_NONE, NO_CARY, 0, A_NEUTRAL, PM_CAVEMAN, NON_PM, 1000L ),
 
 /*
@@ -155,5 +172,5 @@
 A("The Orb of Detection",	CRYSTAL_BALL,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_ESP|SPFX_HSPDAM), 0,
-	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
+	NO_ATTK,	SPDF_NONE,	CARY(AD_MAGM),
 	INVIS,		A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, 2500L ),
 
@@ -161,10 +178,10 @@
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), SPFX_STLTH, 0,
 	/* this stone does double damage if used as a projectile weapon */
-	PHYS(5,0),	NO_DFNS,	NO_CARY,
+	PHYS(5,0),	SPDF_NONE,	NO_CARY,
 	LEVITATION,	A_NEUTRAL, PM_BARBARIAN, NON_PM, 2500L ),
 
 A("The Sceptre of Might",	MACE,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DALIGN), 0, 0,
-	PHYS(5,0),	NO_DFNS,	CARY(AD_MAGM),
+	PHYS(5,0),	SPDF_NONE,	CARY(AD_MAGM),
 	CONFLICT,	A_LAWFUL, PM_CAVEMAN, NON_PM, 2500L ),
 
@@ -179,25 +196,26 @@
 A("The Staff of Aesculapius",	QUARTERSTAFF,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_ATTK|SPFX_INTEL|SPFX_DRLI|SPFX_REGEN), 0,0,
-	DRLI(0,0),	DRLI(0,0),	NO_CARY,
+	DRLI(0,0),	SPDF_DRAIN,	NO_CARY,
 	HEALING,	A_NEUTRAL, PM_HEALER, NON_PM, 5000L ),
 
 A("The Magic Mirror of Merlin", MIRROR,
-	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK), SPFX_ESP, 0,
-	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
+	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK|SPFX_REFLECT), 
+	(SPFX_REFLECT|SPFX_ESP|SPFX_HSPDAM), 0,
+	NO_ATTK,	SPDF_NONE,	NO_CARY,
 	0,		A_LAWFUL, PM_KNIGHT, NON_PM, 1500L ),
 
 A("The Eyes of the Overworld",	LENSES,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_XRAY), 0, 0,
-	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
+	NO_ATTK,	SPDF_NONE,	CARY(AD_MAGM),
 	ENLIGHTENING,	A_NEUTRAL,	 PM_MONK, NON_PM, 2500L ),
 
 A("The Mitre of Holiness",	HELM_OF_BRILLIANCE,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_DFLAG2|SPFX_INTEL), 0, M2_UNDEAD,
-	NO_ATTK,	NO_DFNS,	CARY(AD_FIRE),
+	NO_ATTK,	SPDF_NONE,	CARY(AD_FIRE),
 	ENERGY_BOOST,	A_LAWFUL, PM_PRIEST, NON_PM, 2000L ),
 
 A("The Longbow of Diana", BOW,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_REFLECT), SPFX_ESP, 0,
-	PHYS(5,0),	NO_DFNS,	NO_CARY,
+	PHYS(5,0),	SPDF_NONE,	NO_CARY,
 	CREATE_AMMO, A_CHAOTIC, PM_RANGER, NON_PM, 4000L ),
 
@@ -205,10 +223,10 @@
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK),
 		(SPFX_WARN|SPFX_TCTRL|SPFX_HPHDAM), 0,
-	NO_ATTK,	NO_DFNS,	NO_CARY,
+	NO_ATTK,	SPDF_NONE,	NO_CARY,
 	UNTRAP,		A_CHAOTIC, PM_ROGUE, NON_PM, 3500L ),
 
 A("The Tsurugi of Muramasa",	TSURUGI,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_BEHEAD|SPFX_LUCK), 0, 0,
-	PHYS(0,8),	NO_DFNS,	NO_CARY,
+	PHYS(0,8),	SPDF_NONE,	NO_CARY,
 	0,		A_LAWFUL, PM_SAMURAI, NON_PM, 4500L ),
 
@@ -217,5 +235,5 @@
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DEFN),
 		(SPFX_ESP|SPFX_HSPDAM), 0,
-	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
+	NO_ATTK,	SPDF_NONE,	CARY(AD_MAGM),
 	CHARGE_OBJ,	A_NEUTRAL, PM_TOURIST, NON_PM, 7000L ),
 #endif
@@ -223,11 +241,11 @@
 A("The Orb of Fate",		CRYSTAL_BALL,
 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_LUCK),
-		(SPFX_WARN|SPFX_HSPDAM|SPFX_HPHDAM), 0,
-	NO_ATTK,	NO_DFNS,	NO_CARY,
+		(SPFX_WARN|SPFX_HPHDAM), 0,
+	NO_ATTK,	SPDF_NONE,	NO_CARY,
 	LEV_TELE,	A_NEUTRAL, PM_VALKYRIE, NON_PM, 3500L ),
 
-A("The Eye of the Aethiopica",	AMULET_OF_ESP,
-	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_EREGEN|SPFX_HSPDAM), 0,
-	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
+A("The Eye of the Aethiopica",	AMULET_OF_POWER,
+	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_ESP|SPFX_HSPDAM), 0,
+	NO_ATTK,	SPDF_NONE,	CARY(AD_MAGM),
 	CREATE_PORTAL,	A_NEUTRAL, PM_WIZARD, NON_PM, 4000L ),
 
@@ -235,5 +253,5 @@
  *  terminator; otyp must be zero
  */
-A(0, 0, 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L )
+A(0, 0, 0, 0, 0, NO_ATTK, SPDF_NONE, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L )
 
 };	/* artilist[] (or artifact_names[]) */
@@ -243,5 +261,4 @@
 #ifndef MAKEDEFS_C
 #undef	NO_ATTK
-#undef	NO_DFNS
 #undef	DFNS
 #undef	PHYS
@@ -251,4 +268,5 @@
 #undef	ELEC
 #undef	STUN
+#undef	DRST
 #endif
 
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/color.h nethack/include/color.h
--- nh_orig/include/color.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/color.h	2007-12-28 15:02:10.000000000 -0500
@@ -6,4 +6,10 @@
 #define COLOR_H
 
+#ifdef MENU_COLOR
+# ifdef MENU_COLOR_REGEX
+#  include <regex.h>
+# endif
+#endif
+
 /*
  * The color scheme used is tailored for an IBM PC.  It consists of the
@@ -50,3 +56,38 @@
 #define HI_ZAP		CLR_BRIGHT_BLUE
 
+#ifdef MENU_COLOR
+struct menucoloring {
+# ifdef MENU_COLOR_REGEX
+#  ifdef MENU_COLOR_REGEX_POSIX
+    regex_t match;
+#  else
+    struct re_pattern_buffer match;
+#  endif
+# else
+    char *match;
+# endif
+    int color, attr;
+    struct menucoloring *next;
+};
+#endif /* MENU_COLOR */
+
+#ifdef STATUS_COLORS
+struct color_option {
+    int color;
+    int attr_bits;
+};
+
+struct percent_color_option {
+	int percentage;
+	struct color_option color_option;
+	const struct percent_color_option *next;
+};
+
+struct text_color_option {
+	const char *text;
+	struct color_option color_option;
+	const struct text_color_option *next;
+};
+#endif
+
 #endif /* COLOR_H */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/config.h nethack/include/config.h
--- nh_orig/include/config.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/config.h	2007-12-27 10:04:48.000000000 -0500
@@ -144,8 +144,8 @@
 #ifndef WIZARD		/* allow for compile-time or Makefile changes */
 # ifndef KR1ED
-#  define WIZARD  "wizard" /* the person allowed to use the -D option */
+#  define WIZARD  "derek" /* the person allowed to use the -D option */
 # else
 #  define WIZARD
-#  define WIZARD_NAME "wizard"
+#  define WIZARD_NAME "derek"
 # endif
 #endif
@@ -154,4 +154,6 @@
 #define NEWS "news"		/* the file containing the latest hack news */
 #define PANICLOG "paniclog"	/* log of panic and impossible events */
+#define DUMP_LOG				 /* turn on dumping */
+#define DUMP_FN "dumps/%n.lastlog"	 /* dump goes here */
 
 /*
@@ -170,9 +172,9 @@
 #ifdef UNIX
 /* path and file name extension for compression program */
-#define COMPRESS "/usr/bin/compress"	/* Lempel-Ziv compression */
-#define COMPRESS_EXTENSION ".Z"		/* compress's extension */
+/* #define COMPRESS "/usr/bin/compress"	 Lempel-Ziv compression */
+/* #define COMPRESS_EXTENSION ".Z"	 compress's extension */
 /* An example of one alternative you might want to use: */
-/* #define COMPRESS "/usr/local/bin/gzip" */	/* FSF gzip compression */
-/* #define COMPRESS_EXTENSION ".gz" */		/* normal gzip extension */
+#define COMPRESS "/usr/bin/gzip" /* FSF gzip compression */
+#define COMPRESS_EXTENSION ".gz" 	/* normal gzip extension */
 #endif
 
@@ -186,5 +188,5 @@
  *	for detailed configuration.
  */
-/* #define DLB */	/* not supported on all platforms */
+#define DLB /* not supported on all platforms */
 
 /*
@@ -215,5 +217,5 @@
  * Of course SECURE is meaningful only if HACKDIR is defined.
  */
-/* #define SECURE */	/* do setuid(getuid()) after chdir() */
+#define SECURE 	/* do setuid(getuid()) after chdir() */
 
 /*
@@ -301,5 +303,5 @@
  */
 
-/* #define VISION_TABLES */ /* use vision tables generated at compile time */
+#define VISION_TABLES /* use vision tables generated at compile time */
 #ifndef VISION_TABLES
 # ifndef NO_MACRO_CPATH
@@ -328,4 +330,5 @@
 /* difficulty */
 #define ELBERETH	/* Engraving the E-word repels monsters */
+#define SORTLOOT
 /* I/O */
 #define REDO		/* support for redoing last command - DGK */
@@ -339,5 +342,5 @@
 
 #define EXP_ON_BOTL	/* Show experience on bottom line */
-/* #define SCORE_ON_BOTL */	/* added by Gary Erickson (erickson@ucivax) */
+#define SCORE_ON_BOTL /* added by Gary Erickson (erickson@ucivax) */
 
 /*
@@ -349,6 +352,26 @@
  */
 
-/*#define GOLDOBJ */	/* Gold is kept on obj chains - Helge Hafting */
-/*#define AUTOPICKUP_EXCEPTIONS */ /* exceptions to autopickup */
+#if defined(TTY_GRAPHICS) || defined(MSWIN_GRAPHICS)
+# define MENU_COLOR
+# define MENU_COLOR_REGEX
+#ifdef OSX
+# define MENU_COLOR_REGEX_POSIX
+#endif
+/* if MENU_COLOR_REGEX is defined, use regular expressions (regex.h,
+ * GNU specific functions by default, POSIX functions with
+ * MENU_COLOR_REGEX_POSIX).
+ *
+ * POSIX is required for OSX and possibly others.
+ *
+ * otherwise use pmatch() to match menu color lines.
+ * pmatch() provides basic globbing: '*' and '?' wildcards.
+ */
+#endif
+
+#define STATUS_COLORS
+#define GOLDOBJ /* Gold is kept on obj chains - Helge Hafting */
+#define AUTOPICKUP_EXCEPTIONS /* exceptions to autopickup */
+#define WHEREIS_FILE /* Write out player's current location to player.whereis */
+#define WISH_TRACKER /* Write all wishes to a tracking file */
 
 /* End of Section 5 */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/decl.h nethack/include/decl.h
--- nh_orig/include/decl.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/decl.h	2007-12-29 09:03:26.000000000 -0500
@@ -185,4 +185,7 @@
 #endif
 E char killer_buf[BUFSZ];
+#ifdef DUMP_LOG
+E char dump_fn[];		/* dumpfile name (dump patch) */
+#endif
 E const char *configfile;
 E NEARDATA char plname[PL_NSIZ];
@@ -244,5 +247,5 @@
 #endif
 	*uskin, *uamul, *uleft, *uright, *ublindf,
-	*uwep, *uswapwep, *uquiver;
+	*uwep, *uswapwep, *uquiver, *ulauncher;
 
 E NEARDATA struct obj *uchain;		/* defined only when punished */
@@ -262,4 +265,6 @@
 E NEARDATA struct monst youmonst;	/* init'd and defined in decl.c */
 E NEARDATA struct monst *mydogs, *migrating_mons;
+E NEARDATA struct monst* polemonst;
+E NEARDATA struct monst* ukiller;
 
 E NEARDATA struct mvitals {
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/eshk.h nethack/include/eshk.h
--- nh_orig/include/eshk.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/eshk.h	2007-08-01 18:55:28.000000000 -0400
@@ -43,3 +43,6 @@
 #define ANGRY(mon)	(!NOTANGRY(mon))
 
+#define match_shkrace(mon) ((urace.malenum == (mon)->mnum) || \
+				(urace.malenum == PM_ELF && (mon)->mnum == PM_GREEN_ELF))
+
 #endif /* ESHK_H */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/extern.h nethack/include/extern.h
--- nh_orig/include/extern.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/extern.h	2008-04-13 09:50:01.000000000 -0400
@@ -132,4 +132,8 @@
 E const char *FDECL(rank_of, (int,SHORT_P,BOOLEAN_P));
 E void NDECL(bot);
+#ifdef DUMP_LOG
+E void FDECL(bot1str, (char *));
+E void FDECL(bot2str, (char *));
+#endif
 
 /* ### cmd.c ### */
@@ -167,4 +171,8 @@
 E void FDECL(enlightenment, (int));
 E void FDECL(show_conduct, (int));
+#ifdef DUMP_LOG
+E void FDECL(dump_enlightenment, (int));
+E void FDECL(dump_conduct, (int));
+#endif
 E int FDECL(xytod, (SCHAR_P,SCHAR_P));
 E void FDECL(dtoxy, (coord *,int));
@@ -243,4 +251,5 @@
 E void FDECL(rot_organic, (genericptr_t, long));
 E void FDECL(rot_corpse, (genericptr_t, long));
+E void NDECL(get_coal);
 #if 0
 E void FDECL(bury_monst, (struct monst *));
@@ -282,4 +291,7 @@
 E void NDECL(cls);
 E void FDECL(flush_screen, (int));
+#ifdef DUMP_LOG
+E void NDECL(dump_screen);
+#endif
 E int FDECL(back_to_glyph, (XCHAR_P,XCHAR_P));
 E int FDECL(zapdir_to_glyph, (int,int,int));
@@ -554,4 +566,8 @@
 E void FDECL(done, (int));
 E void FDECL(container_contents, (struct obj *,BOOLEAN_P,BOOLEAN_P));
+#ifdef DUMP_LOG
+E void FDECL(dump, (char *, char *));
+E void FDECL(do_containerconts, (struct obj *,BOOLEAN_P,BOOLEAN_P,BOOLEAN_P,BOOLEAN_P));
+#endif
 E void FDECL(terminate, (int));
 E int NDECL(num_genocides);
@@ -661,4 +677,12 @@
 E void NDECL(really_close);
 #endif
+#ifdef WHEREIS_FILE
+E void NDECL(touch_whereis);
+E void NDECL(delete_whereis);
+#endif
+#ifdef WISH_TRACKER
+E void FDECL(trackwish,(char *));
+E void FDECL(makeannounce,(char *));
+#endif
 
 /* ### fountain.c ### */
@@ -698,4 +722,5 @@
 E void FDECL(unmul, (const char *));
 E void FDECL(losehp, (int,const char *,BOOLEAN_P));
+E int FDECL(gainmaxhp, (int));
 E int NDECL(weight_cap);
 E int NDECL(inv_weight);
@@ -748,4 +773,5 @@
 E int NDECL(phase_of_the_moon);
 E boolean NDECL(friday_13th);
+E boolean NDECL(christmas);
 E int NDECL(night);
 E int NDECL(midnight);
@@ -791,4 +817,7 @@
 E int NDECL(ddoinv);
 E char FDECL(display_inventory, (const char *,BOOLEAN_P));
+#ifdef DUMP_LOG
+E char FDECL(dump_inventory, (const char *,BOOLEAN_P,BOOLEAN_P));
+#endif
 E int FDECL(display_binventory, (int,int,BOOLEAN_P));
 E struct obj *FDECL(display_cinventory,(struct obj *));
@@ -860,5 +889,5 @@
 E boolean FDECL(picking_at, (int,int));
 E void NDECL(reset_pick);
-E int FDECL(pick_lock, (struct obj *));
+E int FDECL(pick_lock, (struct obj *,int,int));
 E int NDECL(doforce);
 E boolean FDECL(boxlock, (struct obj *,struct obj *));
@@ -953,4 +982,5 @@
 
 E int FDECL(fightm, (struct monst *));
+E boolean FDECL(resist_conflict, (struct monst *));
 E int FDECL(mattackm, (struct monst *,struct monst *));
 E int FDECL(noattacks, (struct permonst *));
@@ -1072,4 +1102,5 @@
 E int FDECL(add_to_minv, (struct monst *, struct obj *));
 E struct obj *FDECL(add_to_container, (struct obj *, struct obj *));
+E long FDECL(get_container_weight, (struct obj *));
 E void FDECL(add_to_migration, (struct obj *));
 E void FDECL(add_to_buried, (struct obj *));
@@ -1152,4 +1183,5 @@
 E boolean FDECL(angry_guards, (BOOLEAN_P));
 E void NDECL(pacify_guards);
+E boolean FDECL(damage_mon,(struct monst*,int,int));
 
 /* ### mondata.c ### */
@@ -1162,4 +1194,5 @@
 E boolean FDECL(resists_magm, (struct monst *));
 E boolean FDECL(resists_blnd, (struct monst *));
+E boolean FDECL(vulnerable_to, (struct monst *,int));
 E boolean FDECL(can_blnd, (struct monst *,struct monst *,UCHAR_P,struct obj *));
 E boolean FDECL(ranged_attk, (struct permonst *));
@@ -1361,4 +1394,8 @@
 E char *FDECL(corpse_xname, (struct obj *,BOOLEAN_P));
 E char *FDECL(cxname, (struct obj *));
+E void FDECL(add_erosion_words, (struct obj *, char *));
+#ifdef SORTLOOT
+E char *FDECL(cxname2, (struct obj *));
+#endif
 E char *FDECL(killer_xname, (struct obj *));
 E const char *FDECL(singular, (struct obj *,char *(*)(OBJ_P)));
@@ -1406,4 +1443,7 @@
 E void NDECL(free_autopickup_exceptions);
 #endif /* AUTOPICKUP_EXCEPTIONS */
+#ifdef MENU_COLOR
+E boolean FDECL(add_menu_coloring, (char *));
+#endif /* MENU_COLOR */
 
 /* ### pager.c ### */
@@ -1544,4 +1584,8 @@
 E void FDECL(set_itimeout, (long *,long));
 E void FDECL(incr_itimeout, (long *,int));
+E void FDECL(incr_resistance, (long *,int));
+E void FDECL(decr_resistance, (long *,int));
+E int FDECL(how_resistant, (int));
+E int FDECL(resist_reduce, (int,int));
 E void FDECL(make_confused, (long,BOOLEAN_P));
 E void FDECL(make_stunned, (long,BOOLEAN_P));
@@ -1831,4 +1875,5 @@
 E char *FDECL(shk_your, (char *,struct obj *));
 E char *FDECL(Shk_Your, (char *,struct obj *));
+E void FDECL(shk_holler, (struct monst*));
 
 /* ### shknam.c ### */
@@ -1941,4 +1986,5 @@
 E void FDECL(tele_trap, (struct trap *));
 E void FDECL(level_tele_trap, (struct trap *));
+E boolean FDECL(rloc_pos_ok, (int,int,struct monst *));
 E void FDECL(rloc_to, (struct monst *,int,int));
 E boolean FDECL(rloc, (struct monst *, BOOLEAN_P));
@@ -1987,4 +2033,7 @@
 
 E void FDECL(topten, (int));
+#ifdef LOGFILE
+E void FDECL(write_log_entry, (int,long));
+#endif
 E void FDECL(prscore, (int,char **));
 E struct obj *FDECL(tt_oname, (struct obj *));
@@ -2238,4 +2287,7 @@
 E int NDECL(dbon);
 E int NDECL(enhance_weapon_skill);
+#ifdef DUMP_LOG
+E void NDECL(dump_weapon_skill);
+#endif
 E void FDECL(unrestrict_weapon_skill, (int));
 E void FDECL(use_skill, (int,int));
@@ -2260,8 +2312,10 @@
 E void FDECL(setuwep, (struct obj *));
 E void FDECL(setuqwep, (struct obj *));
+E void FDECL(setulauncher, (struct obj *));
 E void FDECL(setuswapwep, (struct obj *));
 E int NDECL(dowield);
 E int NDECL(doswapweapon);
 E int NDECL(dowieldquiver);
+E int NDECL(dowieldlauncher);
 E boolean FDECL(wield_tool, (struct obj *,const char *));
 E int NDECL(can_twoweapon);
@@ -2271,6 +2325,8 @@
 E void NDECL(uswapwepgone);
 E void NDECL(uqwepgone);
+E void NDECL(ulwepgone);
 E void NDECL(untwoweapon);
-E void FDECL(erode_obj, (struct obj *,BOOLEAN_P,BOOLEAN_P));
+E boolean FDECL(_erode_obj, (struct obj *,int));
+E void FDECL(erode_obj, (struct obj *,BOOLEAN_P,BOOLEAN_P,BOOLEAN_P));
 E int FDECL(chwepon, (struct obj *,int));
 E int FDECL(welded, (struct obj *));
@@ -2293,5 +2349,5 @@
 E void NDECL(clonewiz);
 E int NDECL(pick_nasty);
-E int FDECL(nasty, (struct monst*));
+E int FDECL(nasty, (struct monst*,BOOLEAN_P));
 E void NDECL(resurrect);
 E void NDECL(intervene);
@@ -2380,4 +2436,6 @@
 E int FDECL(resist, (struct monst *,CHAR_P,int,int));
 E void NDECL(makewish);
+E void FDECL(monstseesu,(unsigned long));
+E void FDECL(monstseesulose,(unsigned long));
 
 #endif /* !MAKEDEFS_C && !LEV_LEX_C */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/flag.h nethack/include/flag.h
--- nh_orig/include/flag.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/flag.h	2008-01-07 11:36:55.000000000 -0500
@@ -184,4 +184,10 @@
 	boolean  extmenu;	/* extended commands use menu interface */
 #endif
+#ifdef MENU_COLOR
+	boolean use_menu_color;	/* use color in menus; only if wc_color */
+#endif
+#if defined(STATUS_COLORS) && defined(TEXTCOLOR)
+	boolean use_status_colors; /* use color in status line; only if wc_color */
+#endif
 #ifdef MFLOPPY
 	boolean  checkspace;	/* check disk space before writing files */
@@ -217,4 +223,7 @@
 	boolean lan_mail_fetched; /* mail is awaiting display */
 #endif
+#ifdef SORTLOOT
+	char sortloot;          /* sort items to loot alphabetically */
+#endif
 /*
  * Window capability support.
@@ -271,4 +280,7 @@
 	boolean  showrace;	/* show hero glyph by race rather than by role */
 	boolean  travelcmd;	/* allow travel command */
+	boolean  show_dgn_name; /* show dungeon names instead of Dlvl: on bottom line
+										 probably only good for people taking advantage of 
+										 the wide terminals allowed in Spork */
 	int	 runmode;	/* update screen display during run moves */
 #ifdef AUTOPICKUP_EXCEPTIONS
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/hack.h nethack/include/hack.h
--- nh_orig/include/hack.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/hack.h	2008-03-16 18:35:34.000000000 -0400
@@ -19,5 +19,5 @@
 #define ON		1
 #define OFF		0
-#define BOLT_LIM	8 /* from this distance ranged attacks will be made */
+#define BOLT_LIM	16 /* from this distance ranged attacks may be made */
 #define MAX_CARR_CAP	1000	/* so that boulders can be heavier */
 #define DUMMY { 0 }
@@ -100,7 +100,8 @@
 #define FLASHED_LIGHT	3
 #define INVIS_BEAM	4
-
 #define MATCH_WARN_OF_MON(mon)	 (Warn_of_mon && flags.warntype && \
-		   		 (flags.warntype & (mon)->data->mflags2))
+		   		 ((flags.warntype == (unsigned long)(mon)->data->mlet) || \
+						(flags.warntype == S_WERE && (mon)->data->mflags2 & M2_WERE) || \
+					   (flags.warntype == S_UNDEAD && (mon)->data->mflags2 & M2_UNDEAD)))
 
 #include "trap.h"
@@ -142,4 +143,5 @@
 #define MM_IGNOREWATER	  0x80	/* ignore water when positioning */
 #define MM_ADJACENTOK	  0x100 /* it is acceptable to use adjacent coordinates */
+#define MM_UNSAFEOK		  0x200 /* potentially dangerous locations (lava) are OK */
 
 /* special mhpmax value when loading bones monster to flag as extinct or genocided */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/mkroom.h nethack/include/mkroom.h
--- nh_orig/include/mkroom.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/mkroom.h	2007-07-15 10:46:16.000000000 -0400
@@ -12,4 +12,5 @@
 	schar rtype;		/* type of room (zoo, throne, etc...) */
 	schar rlit;		/* is the room lit ? */
+	schar needfill;		/* does the room need filling? */
 	schar doorct;		/* door count */
 	schar fdoor;		/* index for the first door of the room */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/monattk.h nethack/include/monattk.h
--- nh_orig/include/monattk.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/monattk.h	2008-01-06 09:42:34.000000000 -0500
@@ -25,4 +25,5 @@
 #define AT_GAZE		15	/* gaze - ranged */
 #define AT_TENT		16	/* tentacles */
+#define AT_SCRE	   17 /* scream - sonic attack */
 
 #define AT_WEAP		254	/* uses weapon */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/mondata.h nethack/include/mondata.h
--- nh_orig/include/mondata.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/mondata.h	2007-12-02 10:40:01.000000000 -0500
@@ -19,4 +19,6 @@
 #define resists_acid(mon)	(((mon)->mintrinsics & MR_ACID) != 0)
 #define resists_ston(mon)	(((mon)->mintrinsics & MR_STONE) != 0)
+#define resists_sick(mon)  ((mon)->data->mlet == S_FUNGUS || \
+										(mon)->data == &mons[PM_GHOUL])
 
 #define is_lminion(mon)		(is_minion((mon)->data) && \
@@ -27,4 +29,5 @@
 #define is_flyer(ptr)		(((ptr)->mflags1 & M1_FLY) != 0L)
 #define is_floater(ptr)		((ptr)->mlet == S_EYE)
+#define is_flying(mon)		((mon)->mflying != 0L)
 #define is_clinger(ptr)		(((ptr)->mflags1 & M1_CLING) != 0L)
 #define is_swimmer(ptr)		(((ptr)->mflags1 & M1_SWIM) != 0L)
@@ -128,4 +131,8 @@
 				 ((ptr) == &mons[PM_LONG_WORM_TAIL]))
 #define is_covetous(ptr)	((ptr->mflags3 & M3_COVETOUS))
+#define is_skittish(ptr)   ((ptr->mflags3 & M3_SKITTISH))
+#define is_accurate(ptr)   ((ptr->mflags3 & M3_EAGLEEYE))
+#define is_berserker(ptr)  ((ptr->mflags3 & M3_BERSERK))
+#define is_shopguard(ptr)  ((ptr->mflags3 & M3_SHOPGUARD))
 #define infravision(ptr)	((ptr->mflags3 & M3_INFRAVISION))
 #define infravisible(ptr)	((ptr->mflags3 & M3_INFRAVISIBLE))
@@ -147,4 +154,6 @@
 				  (ptr) == &mons[PM_FLAMING_SPHERE] || \
 				  (ptr) == &mons[PM_SHOCKING_SPHERE] || \
+				  (ptr) == &mons[PM_GOLD_DRAGON] || \
+				  (ptr) == &mons[PM_BABY_GOLD_DRAGON] || \
 				  (ptr) == &mons[PM_FIRE_VORTEX]) ? 1 : \
 				 ((ptr) == &mons[PM_FIRE_ELEMENTAL]) ? 1 : 0)
@@ -189,5 +198,10 @@
 
 #define befriend_with_obj(ptr, obj) ((obj)->oclass == FOOD_CLASS && \
-				     is_domestic(ptr))
+				(is_domestic(ptr) || (Role_if(PM_CAVEMAN) && (ptr) == &mons[PM_MASTODON]) || \
+				 ((obj)->otyp == BANANA && ((ptr) == &mons[PM_MONKEY] || (ptr) == &mons[PM_APE]))))
+
+#define is_rockbreaker(ptr)							\
+				(((ptr)->msound == MS_LEADER || is_rider((ptr))) && \
+				 !mtmp->mpeaceful)
 
 #endif /* MONDATA_H */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/monflag.h nethack/include/monflag.h
--- nh_orig/include/monflag.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/monflag.h	2008-04-05 07:57:36.000000000 -0400
@@ -153,11 +153,19 @@
 #define M3_WAITFORU	0x0040		/* waits to see you or get attacked */
 #define M3_CLOSE	0x0080		/* lets you close unless attacked */
+/* Infravision is currently implemented for players only */
+#define M3_INFRAVISION	0x0100		/* has infravision */
+#define M3_INFRAVISIBLE 0x0200		/* visible by infravision */
+#define M3_SKITTISH  0x0400	   /* tends to stay a few squares away from you */
+#define M3_EAGLEEYE  0x0800		/* gets an accuracy bonus to hit */
+#define M3_BERSERK   0x1000	   /* extremely indiscriminate in its attacks */
+#define M3_SHOPGUARD	0x2000	   /* Guardian for a shop */
 
 #define M3_COVETOUS	0x001f		/* wants something */
 #define M3_WAITMASK	0x00c0		/* waiting... */
 
-/* Infravision is currently implemented for players only */
-#define M3_INFRAVISION	0x0100		/* has infravision */
-#define M3_INFRAVISIBLE 0x0200		/* visible by infravision */
+#define M4_VULNERABLE_FIRE		0x0001	 /* inherent elemental vulnerabilities */
+#define M4_VULNERABLE_COLD		0x0002
+#define M4_VULNERABLE_ELEC		0x0004
+#define M4_VULNERABLE_ACID		0x0008
 
 #define MZ_TINY		0		/* < 2' */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/monst.h nethack/include/monst.h
--- nh_orig/include/monst.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/monst.h	2008-04-13 10:01:42.000000000 -0400
@@ -64,4 +64,24 @@
 	int mspec_used;		/* monster's special ability attack timeout */
 
+/* These should stay in the same order as monattk.h so
+ * the mask translations will work properly */
+
+#define M_SEEN_NOTHING	0x0000
+#define M_SEEN_MAGR		0x0001
+#define M_SEEN_FIRE		0x0002
+#define M_SEEN_COLD		0x0004
+#define M_SEEN_SLEEP		0x0008
+#define M_SEEN_DISINT	0x0010
+#define M_SEEN_ELEC		0x0020
+#define M_SEEN_POISON	0x0040
+#define M_SEEN_ACID	 	0x0080
+#define M_SEEN_REFL		0x0100
+
+#define m_seenres(mon,mask)	((mon)->seen_resistance & (mask))
+#define m_setseen(mon,mask)	((mon)->seen_resistance |= (mask))
+#define m_sawlose(mon,mask)	((mon)->seen_resistance &= (~mask))
+
+	unsigned long seen_resistance;  /* Has seen you resist an element or magical effect */
+
 	Bitfield(female,1);	/* is female */
 	Bitfield(minvis,1);	/* currently invisible */
@@ -96,4 +116,5 @@
 	Bitfield(mcanmove,1);	/* paralysis, similar to mblinded */
 	Bitfield(mfrozen,7);
+	Bitfield(mflying,1);	  /* is monster levitating/flying artificially? */
 
 	Bitfield(msleeping,1);	/* asleep until woken */
@@ -103,7 +124,10 @@
 	Bitfield(mtrapped,1);	/* trapped in a pit, web or bear trap */
 	Bitfield(mleashed,1);	/* monster is on a leash */
+	Bitfield(mberserk,1);    /* monster is berserk */
+
 	Bitfield(isshk,1);	/* is shopkeeper */
 	Bitfield(isminion,1);	/* is a minion */
 
+	Bitfield(isshopguard,1);	 /* monster is a shop guard */
 	Bitfield(isgd,1);	/* is guard */
 	Bitfield(ispriest,1);	/* is a priest */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/monsym.h nethack/include/monsym.h
--- nh_orig/include/monsym.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/monsym.h	2007-10-31 19:34:41.000000000 -0400
@@ -74,4 +74,7 @@
 #define MAXMCLASSES 61	/* number of monster classes */
 
+#define S_WERE		100	/* don't include this in MAXMCLASSES, it's a hack for warning */
+#define S_UNDEAD	101	/* etc */
+
 #if 0	/* moved to decl.h so that makedefs.c won't see them */
 extern const char def_monsyms[MAXMCLASSES];	/* default class symbols */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/obj.h nethack/include/obj.h
--- nh_orig/include/obj.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/obj.h	2007-12-09 11:45:44.000000000 -0500
@@ -100,4 +100,6 @@
 	unsigned oeaten;	/* nutrition left in food, if partly eaten */
 	long age;		/* creation date */
+	long capacity;	  /* how much can this container hold? */
+#define MAX_CAPACITY 0xFFFFFF	  /* "lots" */
 
 	uchar onamelth;		/* length of name (following oxlth) */
@@ -139,6 +141,5 @@
 #define is_pole(otmp)	((otmp->oclass == WEAPON_CLASS || \
 			otmp->oclass == TOOL_CLASS) && \
-			 (objects[otmp->otyp].oc_skill == P_POLEARMS || \
-			 objects[otmp->otyp].oc_skill == P_LANCE))
+			 (objects[otmp->otyp].oc_skill == P_POLEARMS))
 #define is_spear(otmp)	(otmp->oclass == WEAPON_CLASS && \
 			 objects[otmp->otyp].oc_skill >= P_SPEAR && \
@@ -158,4 +159,11 @@
 			 objects[otmp->otyp].oc_skill >= -P_BOOMERANG && \
 			 objects[otmp->otyp].oc_skill <= -P_DART)
+#define is_thrown(otmp)	  ((otmp->oclass == WEAPON_CLASS) && \
+		  ((objects[otmp->otyp].oc_skill >= P_DART && \
+			 objects[otmp->otyp].oc_skill <= P_BOOMERANG) || \
+			 objects[otmp->otyp].oc_skill == P_DAGGER || \
+			 objects[otmp->otyp].oc_skill == P_KNIFE || \
+			(objects[otmp->otyp].oc_skill >= P_SPEAR && \
+			 objects[otmp->otyp].oc_skill <= P_TRIDENT)))
 #define is_weptool(o)	((o)->oclass == TOOL_CLASS && \
 			 objects[(o)->otyp].oc_skill != P_NONE)
@@ -218,6 +226,7 @@
 #define Has_contents(o) (/* (Is_container(o) || (o)->otyp == STATUE) && */ \
 			 (o)->cobj != (struct obj *)0)
-#define Is_container(o) ((o)->otyp >= LARGE_BOX && (o)->otyp <= BAG_OF_TRICKS)
-#define Is_box(otmp)	(otmp->otyp == LARGE_BOX || otmp->otyp == CHEST)
+#define Is_container(o) ((o)->otyp >= LARGE_BOX && (o)->otyp <= BAG_OF_POO)
+#define Is_box(otmp)	(otmp->otyp == LARGE_BOX || otmp->otyp == CHEST || \
+								otmp->otyp == IRON_SAFE)
 #define Is_mbag(otmp)	(otmp->otyp == BAG_OF_HOLDING || \
 			 otmp->otyp == BAG_OF_TRICKS)
@@ -273,5 +282,6 @@
 				|| (otmp)->otyp == TALLOW_CANDLE\
 				|| (otmp)->otyp == WAX_CANDLE\
-				|| (otmp)->otyp == POT_OIL)
+				|| (otmp)->otyp == POT_OIL\
+				|| (otmp)->otyp == BAG_OF_POO)
 /* object can be ignited */
 #define ignitable(otmp)	((otmp)->otyp == BRASS_LANTERN\
@@ -280,11 +290,11 @@
 				|| (otmp)->otyp == TALLOW_CANDLE\
 				|| (otmp)->otyp == WAX_CANDLE\
-				|| (otmp)->otyp == POT_OIL)
+				|| (otmp)->otyp == POT_OIL\
+				|| (otmp)->otyp == BAG_OF_POO)
 
 /* special stones */
 #define is_graystone(obj)	((obj)->otyp == LUCKSTONE || \
-				 (obj)->otyp == LOADSTONE || \
-				 (obj)->otyp == FLINT     || \
-				 (obj)->otyp == TOUCHSTONE)
+				 (obj)->otyp == LOADSTONE || (obj)->otyp == FLINT     || \
+				 (obj)->otyp == TOUCHSTONE || (obj)->otyp == SALT_CHUNK)
 
 /* misc */
diff -X /home/derek/bin/nhdiff_exceptions -iNdEwr -U2 nh_orig/include/patchlevel.h nethack/include/patchlevel.h
--- nh_orig/include/patchlevel.h	2003-12-07 18:39:13.000000000 -0500
+++ nethack/include/patchlevel.h	2008-07-06 16:48:54.000000000 -0400
@@ -3,11 +3,11 @@
 /* NetHack may be freely redistributed.  See license for details. */
 
-/* NetHack 3.4.3 */
-#define VERSION_MAJOR	3
-#define VERSION_MINOR	4
+/* SporkHack 0.3.0 */
+#define VERSION_MAJOR	0
+#define VERSION_MINOR	6
 /*
  * PATCHLEVEL is updated for each release.
  */
-#define PATCHLEVEL	3
+#define PATCHLEVEL	0
 /*
  * Incrementing EDITLEVEL can be used to force invalidation of old bones
@@ -17,8 +17,8 @@
 
 #define COPYRIGHT_BANNER_A \
-"NetHack, Copyright 1985-2003"
+"SporkHack, copyright 2007 Derek S. Ray; a variant of NetHack 3.4.3, "
 
 #define COPYRIGHT_BANNER_B \
-"         By Stichting Mathematisch Centrum and M. Stephenson."
+"  copyright 1985-2003 by Stichting Mathematisch Centrum and M. Stephenson."
 
 #define COPYRIGHT_BANNER_C \
@@ -34,5 +34,7 @@