diff -uwr nethack-3.4.3/dat/dungeon.def nethack-knox/dat/dungeon.def
--- nethack-3.4.3/dat/dungeon.def	2003-12-08 00:39:13.000000000 +0100
+++ nethack-knox/dat/dungeon.def	2008-10-18 15:37:44.000000000 +0200
@@ -105,7 +105,7 @@
 DUNGEON:	"Fort Ludios" "K" (1, 0)
 DESCRIPTION:	mazelike
 ALIGNMENT:	unaligned
-LEVEL:		"knox" "K" @ (-1, 0)
+RNDLEVEL:	"knox" "K" @ (-1, 0) 3
 #
 #	Vlad's Tower
 #
diff -uwr nethack-3.4.3/src/mkmaze.c nethack-knox/src/mkmaze.c
--- nethack-3.4.3/src/mkmaze.c	2003-12-08 00:39:13.000000000 +0100
+++ nethack-knox/src/mkmaze.c	2008-10-18 15:58:38.000000000 +0200
@@ -452,10 +452,12 @@
 	/* stock the main vault */
 	for(x = croom->lx; x <= croom->hx; x++)
 	    for(y = croom->ly; y <= croom->hy; y++) {
+	      if (!is_solid(x,y)) {
 		(void) mkgold((long) rn1(300, 600), x, y);
 		if (!rn2(3) && !is_pool(x,y))
 		    (void)maketrap(x, y, rn2(3) ? LANDMINE : SPIKED_PIT);
 	    }
+	    }
     } else if (Role_if(PM_PRIEST) && In_quest(&u.uz)) {
 	/* less chance for undead corpses (lured from lower morgues) */
 	level.flags.graveyard = 1;
diff -uwr nethack-3.4.3/dat/knox.des nethack-knox/dat/knox.des
--- nethack-3.4.3/dat/knox.des	2003-12-08 00:39:13.000000000 +0100
+++ nethack-knox/dat/knox.des	2008-10-31 18:38:57.000000000 +0100
@@ -1,9 +1,10 @@
 #	SCCS Id: @(#)knox.des	3.4	1994/08/20
 #	Copyright (c) 1989 by Jean-Christophe Collet
 #	Copyright (c) 1992 by Izchak Miller
+#	Copyright (c) 2008 by Patric Mueller
 # NetHack may be freely redistributed.  See license for details.
 #
-MAZE:"knox",' '
+MAZE:"knox-1",' '
 FLAGS: noteleport
 GEOMETRY:center,center
 MAP
@@ -102,3 +103,291 @@
 OBJECT:'*',"amethyst",(46,13)
 OBJECT:'*',"amethyst",(47,13)
 OBJECT:'*',"amethyst",(48,13)
+#
+# "Winterly Fort Ludios" by Patric Mueller <bhaak@gmx.net>
+#
+MAZE:"knox-2",' '
+FLAGS: noteleport,shortsighted
+GEOMETRY:center,center
+MAP
+--------------------}}I-----------------------------------------------------
+| |........|.........}II...................................................|
+| |........|.........}II.............}}}}}}}....................}}}}}}}....|
+| -------+--..........}II............}-----}....................}-----}....|
+|       |..............}III..........}|...|}}}}}}}}}}}}}}}}}}}}}}|...|}....|
+|       |.............}}II...........}---S------------------------S---}....|
+|     ---.............}}II...........}}}|...............|..........|}}}....|
+|     |................II..............}|...............S..........|}......|
+|     |................}II.............}|...............|......\...S}......|
+| -------..............}III..........}}}|...............|..........|}}}....|
+| |.....|.............}}IIII.........}---S------------------------S---}....|
+| |.....+..............}}II..........}|...|}}}}}}}}}}}}}}}}}}}}}}|...|}....|
+| |.....|...............}}I..........}-----}....................}-----}....|
+| |.....|................}}I.........}}}}}}}....................}}}}}}}....|
+| |..-S----...............}II..............................................|
+| |..|....|..............}IIII.....|--+--|...........................|--+--|
+| |..|....|.............}}}.IIII...|.....|..........|--+--|..........|.....|
+| -----------..........}}}...III...+.....|----------|.....|----------|.....|
+|           |.........}}}...III....|.......................................|
+----------------------}}}----III--------------------------------------------
+ENDMAP
+# Non diggable walls
+NON_DIGGABLE:(00,00,75,19)
+# Portal arrival point
+BRANCH:(08,16,08,16),(0,0,0,0)
+#   Throne room, with Croesus on the throne
+REGION:(57,06,66,09),lit,"throne"
+MONSTER:'@',"Croesus",(63,08),hostile
+#   The Vault
+#   Using unfilled morgue for
+#   identification in mkmaze.c
+REGION:(41,06,55,09),lit,"morgue",unfilled
+#   Corner towers
+REGION:(39,04,41,04),lit,"ordinary"
+REGION:(66,04,68,04),lit,"ordinary"
+REGION:(39,11,41,11),lit,"ordinary"
+REGION:(66,11,68,11),lit,"ordinary"
+#   A welcoming committee
+REGION:(03,10,07,13),lit,"zoo",filled,true
+#   arrival chamber; needs to be a real room to control migrating monsters,
+#   and `unfilled' is a kludge to force an ordinary room to remain a room
+REGION:(06,15,09,16),unlit,"ordinary",unfilled
+#   Barracks
+REGION:(36,16,36,18),lit,"barracks",filled,true
+# Doors
+DOOR:closed,(06,14)
+DOOR:closed,(09,03)
+DOOR:locked,(08,11)
+# barrack doors
+DOOR:closed,(35,17)
+DOOR:closed,(38,15)
+DOOR:closed,(55,16)
+DOOR:closed,(72,15)
+# Soldier in watchtower
+#MONSTER: '@', "lieutenant",(19,07),hostile
+#OBJECT:'/',"fire",(19,07)
+# Soldiers guarding the fort
+MONSTER:'@',"soldier",(12,14)
+MONSTER:'@',"soldier",(12,13)
+MONSTER:'@',"soldier",(11,10)
+MONSTER:'@',"soldier",(13,02)
+MONSTER:'@',"soldier",(14,03)
+MONSTER:'@',"soldier",(20,02)
+MONSTER:'@',"soldier",(30,02)
+MONSTER:'@',"soldier",(40,01)
+MONSTER:'@',"soldier",(30,16)
+MONSTER:'@',"soldier",(32,16)
+MONSTER:'@',"soldier",(36,08)
+MONSTER:'@',"soldier",(54,15)
+MONSTER:'@',"soldier",(54,13)
+MONSTER:'@',"soldier",(53,12)
+MONSTER:'@',"soldier",(71,10)
+MONSTER:'@',"soldier",(57,03)
+MONSTER:'@',"lieutenant",(15,08)
+# Four dragons guarding each side
+MONSTER:'D',random,(32,09)
+MONSTER:'D',random,(49,02)
+MONSTER:'D',random,(50,12)
+# this one isn't where he's supposed to be
+MONSTER:'D',random,(25,03)
+# Eels in the moat
+MONSTER:';',"giant eel",(50,04)
+MONSTER:';',"giant eel",(60,04)
+MONSTER:';',"giant eel",(43,12)
+MONSTER:';',"giant eel",(68,09)
+# The corner rooms treasures
+OBJECT:'*',"diamond",(39,04)
+OBJECT:'*',"diamond",(40,04)
+OBJECT:'*',"diamond",(41,04)
+OBJECT:'*',"emerald",(39,11)
+OBJECT:'*',"emerald",(40,11)
+OBJECT:'*',"emerald",(41,11)
+OBJECT:'*',"ruby",(66,04)
+OBJECT:'*',"ruby",(67,04)
+OBJECT:'*',"ruby",(68,04)
+OBJECT:'*',"amethyst",(66,11)
+OBJECT:'*',"amethyst",(67,11)
+OBJECT:'*',"amethyst",(68,11)
+#
+# "Minas Tirith?" by Patric Mueller <bhaak@gmx.net>
+#
+MAZE:"knox-3",' '
+FLAGS: noteleport,shortsighted
+GEOMETRY:center,center
+MAP
+----------------------------------------------------------------------------
+|........|.......}|F|}.......}F|F|F}......+..................|.|   |.|   |.|
+|........|.......}|.|}.......}F.|.F}......F...........|--F--+|.|   |.|   |.|
+|------+--......}F|||F}......}F.|.F}......+.....|--F--|...}F.|.|   |.|   |.|
+|     |.........}F.|.F}......}F|F|F}......|--F--|.........}|.|S-----S-----S-
+|     |.........}F|||F}.......}|.|}.......................}F.|..............
+|   |--.........}|...|}......}F|F|F}......................}|.|............. 
+|   |...........}F|||F}......}F.|.F}......................}F.|...........   
+|   |...........}F.|.F}......}F.|.F}......................}|.|.........     
+|------.........}F|||F}......}F|F|F}..........{{{.........}F.|.......       
+|.....|..........}|.|}.......}|...|}..........{T{.........}|.|......        
+|.....+.........}F|||F}......}F|F|F}..........{{{.........}F.|---S-         
+|.....|.........}F.|.F}......}F.|.F}......................}|.|.......       
+|.....|.........}F|||F}......}F.|.F}......................}F.|........      
+|..-S----.......}|...|}......}F|F|F}......................}|.S....\......   
+|..|....|.......}F|||F}.......}|.|}.......................}F.|..............
+|..|....|.......}F.|.F}......}F|F|F}......|--F--|.........}|.|S-----S-----S-
+|----------.....}F|||F}......}F.|.F}......+.....|--F--|...}F.|.|   |.|   |.|
+|         |......}|.|}.......}F.|.F}......F...........|--F--+|.|   |.|   |.|
+|         |......}|F|}.......}F|F|F}......+..................|.|   |.|   |.|
+----------------------------------------------------------------------------
+ENDMAP
+# Non diggable walls
+NON_DIGGABLE:(00,00,75,19)
+# everything's lit
+REGION:(00,00,75,19),lit,"ordinary"
+# Portal arrival point
+BRANCH:(06,16,06,16),(0,0,0,0)
+#   Throne room, with Croesus on the throne
+REGION:(62,12,75,15),lit,"throne"
+MONSTER:'@',"Croesus",(66,14),hostile
+#   The Vault
+#   Using unfilled morgue for
+#   identification in mkmaze.c
+REGION:(62,05,75,10),lit,"morgue",unfilled
+#   A welcoming committee
+REGION:(01,10,05,13),lit,"zoo",filled,true
+#   arrival chamber; needs to be a real room to control migrating monsters,
+#   and `unfilled' is a kludge to force an ordinary room to remain a room
+REGION:(04,15,07,16),unlit,"ordinary",unfilled
+#   Barracks
+REGION:(43,01,44,02),lit,"barracks",filled,true
+REGION:(43,17,44,17),lit,"barracks",filled,true
+# Drawbridges of first ringwall
+DRAWBRIDGE:(30,05),east,closed
+DRAWBRIDGE:(34,05),west,closed
+DRAWBRIDGE:(29,10),east,closed
+DRAWBRIDGE:(35,10),west,closed
+DRAWBRIDGE:(30,15),east,closed
+DRAWBRIDGE:(34,15),west,closed
+# Guards of first ringwall, with possible offensive wands
+MONSTER:'C',random,(31,02),hostile
+OBJECT[50%]: '/',random,(31,02)
+MONSTER:'C',random,(31,03),hostile
+OBJECT[50%]: '/',random,(31,03)
+MONSTER:'C',random,(31,07),hostile
+OBJECT[50%]: '/',random,(31,07)
+MONSTER:'C',random,(31,08),hostile
+OBJECT[50%]: '/',random,(31,08)
+MONSTER:'C',random,(31,12),hostile
+OBJECT[50%]: '/',random,(31,12)
+MONSTER:'C',random,(31,13),hostile
+OBJECT[50%]: '/',random,(31,13)
+MONSTER:'C',random,(31,17),hostile
+OBJECT[50%]: '/',random,(31,17)
+MONSTER:'C',random,(31,18),hostile
+OBJECT[50%]: '/',random,(31,18)
+MONSTER:'C',random,(33,02),hostile
+OBJECT[50%]: '/',random,(33,02)
+MONSTER:'C',random,(33,03),hostile
+OBJECT[50%]: '/',random,(33,03)
+MONSTER:'C',random,(33,07),hostile
+OBJECT[50%]: '/',random,(33,07)
+MONSTER:'C',random,(33,08),hostile
+OBJECT[50%]: '/',random,(33,08)
+MONSTER:'C',random,(33,12),hostile
+OBJECT[50%]: '/',random,(33,12)
+MONSTER:'C',random,(33,13),hostile
+OBJECT[50%]: '/',random,(33,13)
+MONSTER:'C',random,(33,17),hostile
+OBJECT[50%]: '/',random,(33,17)
+MONSTER:'C',random,(33,18),hostile
+OBJECT[50%]: '/',random,(33,18)
+# Drawbridges of second ringwall
+DRAWBRIDGE:(16,06),east,closed
+DRAWBRIDGE:(22,06),west,closed
+DRAWBRIDGE:(17,10),east,closed
+DRAWBRIDGE:(21,10),west,closed
+DRAWBRIDGE:(16,14),east,closed
+DRAWBRIDGE:(22,14),west,closed
+# Guards of first ringwall, with possible offensive wands
+MONSTER:'C',random,(18,04),hostile
+MONSTER:'C',random,(20,04),hostile
+OBJECT[50%]:'/',random,(18,04)
+OBJECT[50%]:'/',random,(20,04)
+MONSTER:'C',random,(18,08),hostile
+MONSTER:'C',random,(20,08),hostile
+OBJECT[50%]:'/',random,(18,08)
+OBJECT[50%]:'/',random,(20,08)
+MONSTER:'C',random,(18,12),hostile
+MONSTER:'C',random,(20,12),hostile
+OBJECT[50%]:'/',random,(18,12)
+OBJECT[50%]:'/',random,(20,12)
+MONSTER:'C',random,(18,16),hostile
+MONSTER:'C',random,(20,16),hostile
+OBJECT[50%]:'/',random,(18,16)
+OBJECT[50%]:'/',random,(20,16)
+# Doors
+DOOR:closed,(04,14)
+DOOR:closed,(07,03)
+DOOR:locked,(06,11)
+# barrack doors
+DOOR:closed,(60,02)
+DOOR:closed,(60,18)
+DOOR:closed,(42,01)
+DOOR:closed,(42,03)
+DOOR:closed,(42,17)
+DOOR:closed,(42,19)
+# elves
+MONSTER:'@',"Grey-elf",    (60,03),hostile
+MONSTER:'@',"Woodland-elf",(60,04),hostile
+MONSTER:'@',"Green-elf",   (60,05),hostile
+MONSTER:'@',"Grey-elf",    (60,06),hostile
+MONSTER:'@',"Woodland-elf",(60,07),hostile
+MONSTER:'@',"Green-elf",   (60,08),hostile
+MONSTER:'@',"Grey-elf",    (60,09),hostile
+MONSTER:'@',"Woodland-elf",(60,10),hostile
+MONSTER:'@',"Elvenking",   (60,11),hostile
+MONSTER:'@',"Grey-elf",    (60,12),hostile
+MONSTER:'@',"Woodland-elf",(60,13),hostile
+MONSTER:'@',"Green-elf",   (60,14),hostile
+MONSTER:'@',"elf-lord",    (60,15),hostile
+MONSTER:'@',"Grey-elf",    (60,16),hostile
+MONSTER:'@',"Woodland-elf",(60,17),hostile
+# Soldiers guarding the fort in front of ringwalls
+MONSTER:'@',"soldier",(12,14)
+MONSTER:'@',"soldier",(12,13)
+MONSTER:'@',"soldier",(11,10)
+MONSTER:'@',"soldier",(13,15)
+MONSTER:'@',"soldier",(14,04)
+MONSTER:'@',"soldier",(12,18)
+MONSTER:'@',"soldier",(13,12)
+MONSTER:'@',"soldier",(14,8)
+MONSTER:'@',"lieutenant",(12,08)
+MONSTER:'@',"soldier",(28,16)
+MONSTER:'@',"soldier",(24,17)
+MONSTER:'@',"soldier",(25,09)
+MONSTER:'@',"soldier",(25,15)
+MONSTER:'@',"soldier",(26,13)
+MONSTER:'@',"soldier",(27,04)
+MONSTER:'@',"soldier",(28,10)
+MONSTER:'@',"soldier",(23,03)
+MONSTER:'@',"lieutenant",(26,08)
+# Four dragons guarding the fort
+MONSTER:'D',random,(42,09)
+MONSTER:'D',random,(50,09)
+MONSTER:'D',random,(49,08)
+MONSTER:'D',random,(46,12)
+# Eels in the moat
+MONSTER:';',"giant eel",(16,04)
+MONSTER:';',"giant eel",(22,15)
+MONSTER:';',"giant eel",(29,07)
+MONSTER:';',"giant eel",(35,14)
+# The corner rooms treasures
+OBJECT:'*',"diamond",(62,17)
+OBJECT:'*',"diamond",(62,18)
+OBJECT:'*',"diamond",(62,19)
+OBJECT:'*',"emerald",(74,17)
+OBJECT:'*',"emerald",(74,18)
+OBJECT:'*',"emerald",(74,19)
+OBJECT:'*',"ruby",(62,01)
+OBJECT:'*',"ruby",(62,02)
+OBJECT:'*',"ruby",(62,03)
+OBJECT:'*',"amethyst",(74,01)
+OBJECT:'*',"amethyst",(74,02)
+OBJECT:'*',"amethyst",(74,03)
diff -uwr nethack-3.4.3/sys/unix/Makefile.top nethack-knox/sys/unix/Makefile.top
--- nethack-3.4.3/sys/unix/Makefile.top	2003-12-08 00:39:13.000000000 +0100
+++ nethack-knox/sys/unix/Makefile.top	2008-10-31 18:40:30.000000000 +0100
@@ -74,7 +74,7 @@
 DATHELP = help hh cmdhelp history opthelp wizhelp
 
 SPEC_LEVS = asmodeus.lev baalz.lev bigrm-?.lev castle.lev fakewiz?.lev \
-	juiblex.lev knox.lev medusa-?.lev minend-?.lev minefill.lev \
+	juiblex.lev knox-?.lev medusa-?.lev minend-?.lev minefill.lev \
 	minetn-?.lev oracle.lev orcus.lev sanctum.lev soko?-?.lev \
 	tower?.lev valley.lev wizard?.lev \
 	astral.lev air.lev earth.lev fire.lev water.lev
diff -uwr nethack-3.4.3/sys/winnt/Makefile.bcc nethack-knox/sys/winnt/Makefile.bcc
--- nethack-3.4.3/sys/winnt/Makefile.bcc	2003-12-08 00:39:13.000000000 +0100
+++ nethack-knox/sys/winnt/Makefile.bcc	2008-10-31 18:42:20.000000000 +0100
@@ -1055,7 +1055,7 @@
 	if exist $(DAT)\fakewiz?.lev	del $(DAT)\fakewiz?.lev
 	if exist $(DAT)\fire.lev	del $(DAT)\fire.lev
 	if exist $(DAT)\juiblex.lev	del $(DAT)\juiblex.lev
-	if exist $(DAT)\knox.lev	del $(DAT)\knox.lev
+	if exist $(DAT)\knox-?.lev	del $(DAT)\knox-?.lev
 	if exist $(DAT)\medusa-?.lev	del $(DAT)\medusa-?.lev
 	if exist $(DAT)\mine*.lev	del $(DAT)\mine*.lev
 	if exist $(DAT)\options		del $(DAT)\options
diff -uwr nethack-3.4.3/sys/winnt/Makefile.gcc nethack-knox/sys/winnt/Makefile.gcc
--- nethack-3.4.3/sys/winnt/Makefile.gcc	2003-12-08 00:39:13.000000000 +0100
+++ nethack-knox/sys/winnt/Makefile.gcc	2008-10-31 18:42:30.000000000 +0100
@@ -1014,7 +1014,7 @@
 	$(subst /,\,if exist $(DAT)/fakewiz?.lev      del $(DAT)/fakewiz?.lev)
 	$(subst /,\,if exist $(DAT)/fire.lev     del $(DAT)/fire.lev)
 	$(subst /,\,if exist $(DAT)/juiblex.lev  del $(DAT)/juiblex.lev)
-	$(subst /,\,if exist $(DAT)/knox.lev     del $(DAT)/knox.lev)
+	$(subst /,\,if exist $(DAT)/knox-?.lev     del $(DAT)/knox-?.lev)
 	$(subst /,\,if exist $(DAT)/medusa-?.lev      del $(DAT)/medusa-?.lev)
 	$(subst /,\,if exist $(DAT)/mine*.lev    del $(DAT)/mine*.lev)
 	$(subst /,\,if exist $(DAT)/options      del $(DAT)/options)
diff -uwr nethack-3.4.3/sys/winnt/Makefile.msc nethack-knox/sys/winnt/Makefile.msc
--- nethack-3.4.3/sys/winnt/Makefile.msc	2003-12-08 00:39:13.000000000 +0100
+++ nethack-knox/sys/winnt/Makefile.msc	2008-10-31 18:42:44.000000000 +0100
@@ -1078,7 +1078,7 @@
 	if exist $(DAT)\fakewiz?.lev	del $(DAT)\fakewiz?.lev
 	if exist $(DAT)\fire.lev	del $(DAT)\fire.lev
 	if exist $(DAT)\juiblex.lev	del $(DAT)\juiblex.lev
-	if exist $(DAT)\knox.lev	del $(DAT)\knox.lev
+	if exist $(DAT)\knox-?.lev	del $(DAT)\knox-?.lev
 	if exist $(DAT)\medusa-?.lev	del $(DAT)\medusa-?.lev
 	if exist $(DAT)\mine*.lev	del $(DAT)\mine*.lev
 	if exist $(DAT)\options		del $(DAT)\options
