[packages/nethack] Up to 5.0.0

arekm arekm at pld-linux.org
Sun Aug 9 13:43:39 CEST 2026


commit e5db70eafb405c717b83e37cefb5c0dff6873b62
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sun Aug 9 13:43:21 2026 +0200

    Up to 5.0.0

 nethack-3.4.3-format-security.patch | 1231 ------------------------
 nethack-3.4.3-turbonerd-0.1.0.patch | 1777 -----------------------------------
 nethack-config.patch                |   93 --
 nethack-gcc3.patch                  |   11 -
 nethack-makefile.patch              |  101 --
 nethack-qt.patch                    |   44 -
 nethack-qt33.patch                  |   11 -
 nethack.spec                        |  163 ++--
 8 files changed, 55 insertions(+), 3376 deletions(-)
---
diff --git a/nethack.spec b/nethack.spec
index b9fd413..3a59245 100644
--- a/nethack.spec
+++ b/nethack.spec
@@ -1,9 +1,6 @@
 #
 # Conditional build:
-%bcond_without	qt	# no X11 and Qt bloat 
-#
-# --define 'wizard other_username', default is root
-%define		_wizard		%{?wizard:%{wizard}}%{!?wizard:"root"}
+%bcond_without	qt	# Qt 5 interface
 #
 %define		file_version	%(echo %{version} | tr -d .)
 Summary:	NetHack - An adventure into the Mazes of Menace
@@ -12,50 +9,36 @@ Summary(nb.UTF-8):	NetHack - Et eventyr i en faretruende labyrint
 Summary(pl.UTF-8):	NetHack - Przygoda w Labiryntach Groźby
 Summary(pt_BR.UTF-8):	Jogo estilo rogue baseado no Dungeons and Dragons
 Name:		nethack
-Version:	3.4.3
-Release:	10
+Version:	5.0.0
+Release:	1
 License:	Nethack GPL
 Group:		Applications/Games
-Source0:	http://downloads.sourceforge.net/nethack/%{name}-%{file_version}-src.tgz
-# Source0-md5:	21479c95990eefe7650df582426457f9
-Source1:	http://www.spod-central.org/~psmith/nh/spoi-%{file_version}.tar.gz
-# Source1-md5:	72cac599c3660eac0a54b17ece8989ff
-Source2:	http://www.spod-central.org/~psmith/nh/gazetteer.tar.gz
-# Source2-md5:	651997ab54552b5e9a586cef46bcc50a
-Source3:	%{name}.desktop
-Source4:	%{name}.png
-Source5:	Guidebook-3.2pl.ps.gz
-# Source5-md5:	4a2a9a38deb08e9c4177c3b5ce6e627e
-Source6:	Guidebook.pdf
-# Source6-md5:	4fc7970cd5664f293c426a4d696c8a6b
-Source7:	%{name}rc.gz
-# Source7-md5:	ffd3d14ab4df527e9f3738320dec7f93
-# http://avrc.city.ac.uk/nethack/VernonSpoilers/vol3-1.2.2.pdf
-Source8:	%{name}-vol3-1.2.2.pdf
-# Source8-md5:	67937e7f7a786390a47bf9f195c1a5c4
-Patch0:		%{name}-config.patch
-Patch1:		%{name}-makefile.patch
-Patch2:		%{name}-gcc3.patch
-Patch3:		%{name}-qt.patch
-Patch4:		%{name}-qt33.patch
-# http://www.userfriendly.org/games/nethack/nethack-3.4.3-turbonerd-0.1.0.patch
-Patch5:		%{name}-3.4.3-turbonerd-0.1.0.patch
-Patch6:		nethack-3.4.3-format-security.patch
-URL:		http://www.nethack.org/
-BuildRequires:	bison
-BuildRequires:	flex
+Source0:	https://www.nethack.org/download/%{version}/%{name}-%{file_version}-src.tgz
+# Source0-md5:	416a1f6e5dbffe0a56114e7d18aa515d
+Source1:	%{name}.desktop
+Source2:	%{name}.png
+URL:		https://www.nethack.org/
 BuildRequires:	groff
+BuildRequires:	libuuid-devel
+BuildRequires:	lua54-devel
 BuildRequires:	ncurses-devel
-%{?with_qt:BuildRequires:	qt-devel >= 3.0.3}
+%{?with_qt:BuildRequires:	Qt5Gui-devel}
+%{?with_qt:BuildRequires:	Qt5Multimedia-devel}
+%{?with_qt:BuildRequires:	Qt5Widgets-devel}
+%{?with_qt:BuildRequires:	qt5-build}
 BuildRequires:	util-linux
-%{?with_qt:BuildRequires:	xorg-lib-libX11-devel}
 Requires:	/bin/gzip
+Obsoletes:	nethack-doc-pdf < 5.0.0
+Obsoletes:	nethack-spoilers < 5.0.0
 Conflicts:	applnk < 1.5.13
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define		_nhdir		%{_datadir}/nethack
 %define		_dyndir		/var/games/nethack
 
+# build and install must agree on these or the install step tries to rebuild
+%define		makeopts	WANT_WIN_TTY=1 WANT_WIN_CURSES=1 %{?with_qt:WANT_WIN_QT=1 WANT_WIN_QT5=1 MOCPATH=%{_libdir}/qt5/bin/moc} LUAHEADERS=lib/systemlua LUALIB= TOPLUALIB= PREFIX=%{_prefix} HACKDIR=%{_nhdir} SHELLDIR=%{_prefix}/games
+
 %description
 A dungeon game similar to rogue but more elaborate, very popular at
 Unix sites and on PC-class machines (nethack is probably the most
@@ -79,7 +62,7 @@ individuos.
 %description -l nb.UTF-8
 NetHack - Et eventyr i en faretruende labyrint.
 
-NetHack 3.4.0 er siste utvidelse til NetHack, et tøm og røm eventyr
+NetHack 5.0 er siste utvidelse til NetHack, et tøm og røm eventyr
 spill. Det er basert på spill som Rouge og Hack, og er etterfølgeren
 til versjon 3.0 og 3.1 av NetHack.
 
@@ -95,109 +78,73 @@ znacznie rozszerzone przez Andriesa Brouwara, nazywały się po prostu
 'hack' (rąbać, siekać.) Nazwa zmieniła się gdy opieka nad grą została
 przejęta przez grupę hackerów zawiązaną przez Mike'a Stephensona.
 
-%package spoilers
-Summary:	Spoilers to NetHack
-Summary(pl.UTF-8):	Psuje dla NetHacka
-Group:		Applications/Games
-
-%description spoilers
-Spoilers - a set of texts which explain many secrets in the game.
-Beware: the game after reading it becomes even more addictive! (But
-you will lose delights of discovering its secrets.)
-
-%description spoilers -l pl.UTF-8
-Psuje - zbiór tekstów wyjaśniających wiele sekretów w grze. Uwaga: po
-przeczytaniu gra staje się jeszcze bardziej uzależniająca! (Lecz
-stracisz rozkosze poznawania jej tajników.)
-
-%package doc-pdf
-Summary:	Nethack Guidebook, PDF format
-Summary(pl.UTF-8):	Nethackowy podręcznik w formacie PDF
-Group:		Applications/Games
-
-%description doc-pdf
-Nethack Guidebook, PDF format.
-
-%description doc-pdf -l pl.UTF-8
-Nethackowy podręcznik w formacie PDF.
-
 %prep
-%setup -q -a1 -a2
-%patch -P0 -p1
-%patch -P1 -p1
-%patch -P2 -p1
-%{?with_qt:%patch3 -p1}
-%patch -P4 -p1
-%patch -P5 -p1
-%patch -P6 -p1
+%setup -q -n NetHack-%{version}
 
 %build
-sh ./sys/unix/setup.sh links
+sh ./sys/unix/setup.sh sys/unix/hints/linux.500
 
-%{__make} -j1 all \
-	CFLAGS="%{rpmcflags} -I../include -I/usr/include/ncurses -DWIZARD='\"%{_wizard}\"'" \
-	LFLAGS="%{rpmldflags}" \
-	CC="%{__cc}" \
-	CXX="%{__cxx}" \
-	LD="%{__cxx}" \
-	QTDIR="%{_prefix}"
+# upstream builds a static liblua from its own copy; point it at lua54 instead
+install -d lib
+ln -sf %{_includedir}/lua5.4 lib/systemlua
 
-%{__make} -C util recover \
-	CFLAGS="%{rpmcflags} -I../include" \
-	LFLAGS="%{rpmldflags}" \
-	CC="%{__cc}"
+LFLAGS="%{rpmldflags}" \
+QTCXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
+%{__make} %{makeopts} \
+	CCFLAGS='%{rpmcflags} %{rpmcppflags} -DVAR_PLAYGROUND=\"%{_dyndir}\"' \
+	LUALIBS="$(pkg-config --libs lua5.4)"
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_pixmapsdir},%{_desktopdir},%{_mandir}/man6}
+install -d $RPM_BUILD_ROOT{%{_prefix}/games,%{_mandir}/man6,%{_pixmapsdir},%{_desktopdir}}
 
-%{__make} install \
-	DESTDIR=$RPM_BUILD_ROOT
-install util/recover $RPM_BUILD_ROOT%{_nhdir}
+# POSTINSTALL builds an X11 bitmap font the Qt port does not use and rewrites
+# sysconf depending on whether the build host has gdb
+%{__make} install %{makeopts} \
+	INSTDIR=$RPM_BUILD_ROOT%{_nhdir} \
+	VARDIR=$RPM_BUILD_ROOT%{_dyndir} \
+	SHELLDIR=$RPM_BUILD_ROOT%{_prefix}/games \
+	POSTINSTALL=
 
-install doc/nethack.6 doc/recover.6 $RPM_BUILD_ROOT%{_mandir}/man6
+%{__make} -C doc manpages \
+	MANDIR=$RPM_BUILD_ROOT%{_mandir}/man6
 
-cp %{SOURCE5} %{SOURCE6} %{SOURCE7} .
-cp %{SOURCE8} vol3-1.2.2.pdf
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man6/{dlb,makedefs}.6
 
-install %{SOURCE3} $RPM_BUILD_ROOT%{_desktopdir}
-install %{SOURCE4} $RPM_BUILD_ROOT%{_pixmapsdir}
+install %{SOURCE1} $RPM_BUILD_ROOT%{_desktopdir}
+install %{SOURCE2} $RPM_BUILD_ROOT%{_pixmapsdir}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(644,root,root,755)
-%doc README doc/Guidebook doc/window.doc doc/fixes* %{name}rc.gz
-#%doc $RPM_BUILD_ROOT%{_nhdir}/license CHANGES*
-%lang(pl) %doc Guidebook-3.2pl.ps.gz
+%doc README doc/Guidebook doc/config.nh doc/options.txt doc/window.txt doc/fixes*
 
 %attr(2755,root,games) %{_prefix}/games/nethack
 %attr(2755,root,games) %{_nhdir}/nethack
 %attr(2755,root,games) %{_nhdir}/recover
 
 %dir %{_nhdir}
+%{_nhdir}/license
 %{_nhdir}/nhdat
-%{?with_qt:%{_nhdir}/*.x[bp]m}
-%{?with_qt:%{_nhdir}/x11tiles}
+%{_nhdir}/symbols
+%config(noreplace) %verify(not md5 mtime size) %{_nhdir}/sysconf
+%if %{with qt}
+%{_nhdir}/nhtiles.bmp
+%{_nhdir}/*.xpm
+%endif
 
 %attr(2775,root,games) %dir %{_dyndir}
 %attr(2775,root,games) %dir %{_dyndir}/save
 %attr(664,root,games) %{_dyndir}/perm
 %attr(664,root,games) %config(noreplace) %verify(not md5 mtime size) %{_dyndir}/record
 %attr(664,root,games) %config(noreplace) %verify(not md5 mtime size) %{_dyndir}/logfile
+%attr(664,root,games) %config(noreplace) %verify(not md5 mtime size) %{_dyndir}/xlogfile
+%attr(664,root,games) %config(noreplace) %verify(not md5 mtime size) %{_dyndir}/livelog
 
-%{_mandir}/man6/*
+%{_mandir}/man6/nethack.6*
+%{_mandir}/man6/recover.6*
 
 %{_desktopdir}/*.desktop
 %{_pixmapsdir}/*
-
-%files spoilers
-%defattr(644,root,root,755)
-%doc nhspoilers/README nhspoilers/*.txt
-%doc %dir nhspoilers/gazetteer
-%doc vol3-1.2.2.pdf
-
-%files doc-pdf
-%defattr(644,root,root,755)
-%doc Guidebook.pdf
diff --git a/nethack-3.4.3-format-security.patch b/nethack-3.4.3-format-security.patch
deleted file mode 100644
index de33c5d..0000000
--- a/nethack-3.4.3-format-security.patch
+++ /dev/null
@@ -1,1231 +0,0 @@
-diff --git a/src/apply.c b/src/apply.c
-index f45e196..5b73d7c 100644
---- a/src/apply.c
-+++ b/src/apply.c
-@@ -62,7 +62,7 @@ use_camera(obj)
- 	if(!getdir((char *)0)) return(0);
- 
- 	if (obj->spe <= 0) {
--		pline(nothing_happens);
-+		pline("%s", nothing_happens);
- 		return (1);
- 	}
- 	consume_obj_charge(obj, TRUE);
-@@ -802,7 +802,7 @@ struct obj **optr;
- 		if (!obj->cursed)
- 		    (void) openit();
- 		else
--		    pline(nothing_happens);
-+		    pline("%s", nothing_happens);
- 
- 	    } else if (obj->cursed) {
- 		coord mm;
-@@ -834,7 +834,7 @@ struct obj **optr;
- 		}
- 		res += openit();
- 		switch (res) {
--		  case 0:  pline(nothing_happens); break;
-+		  case 0:  pline("%s", nothing_happens); break;
- 		  case 1:  pline("%s opens...", Something);
- 			   learno = TRUE; break;
- 		  default: pline("Things open around you...");
-@@ -846,7 +846,7 @@ struct obj **optr;
- 		amii_speaker( obj, "AeFeaeFeAefegw", AMII_OKAY_VOLUME );
- #endif
- 		if (findit() != 0) learno = TRUE;
--		else pline(nothing_happens);
-+		else pline("%s", nothing_happens);
- 	    }
- 
- 	}	/* charged BofO */
-@@ -1191,13 +1191,13 @@ dorub()
- 		if (uwep->lamplit) begin_burn(uwep, TRUE);
- 		update_inventory();
- 	    } else if (rn2(2) && !Blind)
--		You("see a puff of smoke.");
--	    else pline(nothing_happens);
-+		You("%s", "see a puff of smoke.");
-+	    else pline("%s", nothing_happens);
- 	} else if (obj->otyp == BRASS_LANTERN) {
- 	    /* message from Adventure */
- 	    pline("Rubbing the electric lamp is not particularly rewarding.");
- 	    pline("Anyway, nothing exciting happens.");
--	} else pline(nothing_happens);
-+	} else pline("%s", nothing_happens);
- 	return 1;
- }
- 
-@@ -1510,7 +1510,7 @@ struct obj *obj;
- 	}
- 
- 	if (trouble_count == 0) {
--	    pline(nothing_happens);
-+	    pline("%s", nothing_happens);
- 	    return;
- 	} else if (trouble_count > 1) {		/* shuffle */
- 	    int i, j, k;
-@@ -2172,7 +2172,7 @@ struct obj *obj;
- 		You("wrap your bullwhip around %s on the %s.",
- 		    an(singular(otmp, xname)), surface(u.ux, u.uy));
- 		if (rnl(6) || pickup_object(otmp, 1L, TRUE) < 1)
--		    pline(msg_slipsfree);
-+		    pline("%s", msg_slipsfree);
- 		return 1;
- 	    }
- 	}
-@@ -2213,7 +2213,7 @@ struct obj *obj;
- 		wrapped_what = strcpy(buf, mon_nam(mtmp));
- 	    } else if (proficient) {
- 		if (attack(mtmp)) return 1;
--		else pline(msg_snap);
-+		else pline("%s", msg_snap);
- 	    }
- 	}
- 	if (!wrapped_what) {
-@@ -2235,10 +2235,10 @@ struct obj *obj;
- 		    vision_full_recalc = 1;
- 		}
- 	    } else {
--		pline(msg_slipsfree);
-+		pline("%s", msg_slipsfree);
- 	    }
- 	    if (mtmp) wakeup(mtmp);
--	} else pline(msg_snap);
-+	} else pline("%s", msg_snap);
- 
-     } else if (mtmp) {
- 	if (!canspotmon(mtmp) &&
-@@ -2330,7 +2330,7 @@ struct obj *obj;
- 		    break;
- 		}
- 	    } else {
--		pline(msg_slipsfree);
-+		pline("%s", msg_slipsfree);
- 	    }
- 	    wakeup(mtmp);
- 	} else {
-@@ -2340,7 +2340,7 @@ struct obj *obj;
- 	    else You("flick your bullwhip towards %s.", mon_nam(mtmp));
- 	    if (proficient) {
- 		if (attack(mtmp)) return 1;
--		else pline(msg_snap);
-+		else pline("%s", msg_snap);
- 	    }
- 	}
- 
-@@ -2349,7 +2349,7 @@ struct obj *obj;
- 	    You("snap your whip through thin air.");
- 
-     } else {
--	pline(msg_snap);
-+	pline("%s", msg_snap);
- 
-     }
-     return 1;
-@@ -2426,7 +2426,7 @@ use_pole (obj)
- 		u.uconduct.weaphit++;
- 	} else
- 	    /* Now you know that nothing is there... */
--	    pline(nothing_happens);
-+	    pline("%s", nothing_happens);
- 	return (1);
- }
- 
-@@ -2588,7 +2588,7 @@ use_grapple (obj)
- 	    }
- 	    break;
- 	}
--	pline(nothing_happens);
-+	pline("%s", nothing_happens);
- 	return (1);
- }
- 
-@@ -2989,7 +2989,7 @@ doapply()
- 					       (const char *)0);
- 		    makeknown(HORN_OF_PLENTY);
- 		} else
--		    pline(nothing_happens);
-+		    pline("%s", nothing_happens);
- 		break;
- 	case LAND_MINE:
- 	case BEARTRAP:
-diff --git a/src/artifact.c b/src/artifact.c
-index ef27bd5..86bba3d 100644
---- a/src/artifact.c
-+++ b/src/artifact.c
-@@ -1191,7 +1191,7 @@ arti_invoke(obj)
- 	if(obj->otyp == CRYSTAL_BALL)
- 	    use_crystal_ball(obj);
- 	else
--	    pline(nothing_happens);
-+	    pline("%s", nothing_happens);
- 	return 1;
-     }
- 
-diff --git a/src/botl.c b/src/botl.c
-index 6534ad7..beb4b3b 100644
---- a/src/botl.c
-+++ b/src/botl.c
-@@ -188,9 +188,9 @@ bot1()
- 			mbot[k] += 'A' - 'a';
- 		    k++;
- 		}
--		Sprintf(nb = eos(nb), mbot);
-+		Sprintf(nb = eos(nb), "%s", mbot);
- 	} else
--		Sprintf(nb = eos(nb), rank());
-+		Sprintf(nb = eos(nb), "%s", rank());
- 
- 	Sprintf(nb = eos(nb),"  ");
- 	i = mrank_sz + 15;
-diff --git a/src/cmd.c b/src/cmd.c
-index b12c0e5..78d27f6 100644
---- a/src/cmd.c
-+++ b/src/cmd.c
-@@ -602,7 +602,7 @@ wiz_level_change()
-     else ret = sscanf(buf, "%d", &newlevel);
- 
-     if (ret != 1) {
--	pline(Never_mind);
-+	pline("%s", Never_mind);
- 	return 0;
-     }
-     if (newlevel == u.ulevel) {
-@@ -2060,7 +2060,7 @@ coord *cc;
- {
- 	xchar new_x, new_y;
- 	if (!getdir(prompt)) {
--		pline(Never_mind);
-+		pline("%s", Never_mind);
- 		return 0;
- 	}
- 	new_x = x + u.dx;
-@@ -2069,7 +2069,7 @@ coord *cc;
- 		cc->x = new_x;
- 		cc->y = new_y;
- 	} else {
--		if (emsg) pline(emsg);
-+		if (emsg) pline("%s", emsg);
- 		return 0;
- 	}
- 	return 1;
-@@ -2340,7 +2340,7 @@ parse()
- 		    if (multi > 9) {
- 			clear_nhwindow(WIN_MESSAGE);
- 			Sprintf(in_line, "Count: %d", multi);
--			pline(in_line);
-+			pline("%s", in_line);
- 			mark_synch();
- 		    }
- 		    last_multi = multi;
-diff --git a/src/detect.c b/src/detect.c
-index 5da025f..d549f11 100644
---- a/src/detect.c
-+++ b/src/detect.c
-@@ -808,7 +808,7 @@ struct obj *obj;
- 	case 3 : if (!resists_blnd(&youmonst)) {
- 		pline("%s your vision!", Tobjnam(obj, "damage"));
- 		make_blinded(Blinded + rnd(100),FALSE);
--		if (!Blind) Your(vision_clears);
-+		if (!Blind) Your("%s", vision_clears);
- 	    } else {
- 		pline("%s your vision.", Tobjnam(obj, "assault"));
- 		You("are unaffected!");
-@@ -857,7 +857,7 @@ struct obj *obj;
-     ch = yn_function("What do you look for?", (char *)0, '\0');
-     /* Don't filter out ' ' here; it has a use */
-     if ((ch != def_monsyms[S_GHOST]) && index(quitchars,ch)) { 
--	if (flags.verbose) pline(Never_mind);
-+	if (flags.verbose) pline("%s", Never_mind);
- 	return;
-     }
-     You("peer into %s...", the(xname(obj)));
-diff --git a/src/dig.c b/src/dig.c
-index 4c40a59..5297ac5 100644
---- a/src/dig.c
-+++ b/src/dig.c
-@@ -379,7 +379,7 @@ dig()
- 		    feel_location(dpx, dpy);
- 		else
- 		    newsym(dpx, dpy);
--		if(digtxt && !digging.quiet) pline(digtxt); /* after newsym */
-+		if(digtxt && !digging.quiet) pline("%s", digtxt); /* after newsym */
- 		if(dmgtxt)
- 		    pay_for_damage(dmgtxt, FALSE);
- 
-diff --git a/src/do.c b/src/do.c
-index 858777f..a381fb4 100644
---- a/src/do.c
-+++ b/src/do.c
-@@ -1310,7 +1310,7 @@ boolean at_stairs, falling, portal;
- 		Sprintf(buf, mesg, !Blind ? "looks" : "seems");
- 		mesg = buf;
- 	    }
--	    if (mesg) pline(mesg);
-+	    if (mesg) pline("%s", mesg);
- 	}
- 
- #ifdef REINCARNATION
-@@ -1459,7 +1459,7 @@ deferred_goto()
- 	    int typmask = u.utotype; /* save it; goto_level zeroes u.utotype */
- 
- 	    assign_level(&dest, &u.utolev);
--	    if (dfr_pre_msg) pline(dfr_pre_msg);
-+	    if (dfr_pre_msg) pline("%s", dfr_pre_msg);
- 	    goto_level(&dest, !!(typmask&1), !!(typmask&2), !!(typmask&4));
- 	    if (typmask & 0200) {	/* remove portal */
- 		struct trap *t = t_at(u.ux, u.uy);
-@@ -1469,7 +1469,7 @@ deferred_goto()
- 		    newsym(u.ux, u.uy);
- 		}
- 	    }
--	    if (dfr_post_msg) pline(dfr_post_msg);
-+	    if (dfr_post_msg) pline("%s", dfr_post_msg);
- 	}
- 	u.utotype = 0;		/* our caller keys off of this */
- 	if (dfr_pre_msg)
-diff --git a/src/dothrow.c b/src/dothrow.c
-index 2c4389a..325ea88 100644
---- a/src/dothrow.c
-+++ b/src/dothrow.c
-@@ -770,7 +770,7 @@ boolean hitsroof;
- 			pline("It blinds you!");
- 		    u.ucreamed += blindinc;
- 		    make_blinded(Blinded + (long)blindinc, FALSE);
--		    if (!Blind) Your(vision_clears);
-+		    if (!Blind) Your("%s", vision_clears);
- 		}
- 		break;
- 	default:
-diff --git a/src/dungeon.c b/src/dungeon.c
-index b87b8bb..ff5c394 100644
---- a/src/dungeon.c
-+++ b/src/dungeon.c
-@@ -674,7 +674,7 @@ init_dungeons()		/* initialize the "dungeon" structs */
- 	    interject_assistance(1, INTERJECT_PANIC, (genericptr_t)tbuf,
- 				 (genericptr_t)fqn_prefix[DATAPREFIX]);
- #endif
--	    panic(tbuf);
-+	    panic("%s", tbuf);
- 	}
- 
- 	/* validate the data's version against the program's version */
-diff --git a/src/eat.c b/src/eat.c
-index 12e8d9b..4045d80 100644
---- a/src/eat.c
-+++ b/src/eat.c
-@@ -422,7 +422,7 @@ boolean message;
- 	occupation = 0; /* do this early, so newuhs() knows we're done */
- 	newuhs(FALSE);
- 	if (nomovemsg) {
--		if (message) pline(nomovemsg);
-+		if (message) pline("%s", nomovemsg);
- 		nomovemsg = 0;
- 	} else if (message)
- 		You("finish eating %s.", food_xname(victual.piece, TRUE));
-@@ -1208,7 +1208,7 @@ struct obj *obj;
- 	} else if(!rn2(4) && !Blind) {
- 		pline("Everything suddenly goes dark.");
- 		make_blinded((long)d(2,10),FALSE);
--		if (!Blind) Your(vision_clears);
-+		if (!Blind) Your("%s", vision_clears);
- 	} else if(!rn2(3)) {
- 		const char *what, *where;
- 		if (!Blind)
-diff --git a/src/engrave.c b/src/engrave.c
-index fe09b4f..27be5a4 100644
---- a/src/engrave.c
-+++ b/src/engrave.c
-@@ -890,7 +890,7 @@ doengrave()
- 		c = yn_function("Do you want to add to the current engraving?",
- 				ynqchars, 'y');
- 		if (c == 'q') {
--		    pline(Never_mind);
-+		    pline("%s", Never_mind);
- 		    return(0);
- 		}
- 	    }
-@@ -983,7 +983,7 @@ doengrave()
- 			  Tobjnam(otmp, "glow"), otense(otmp, "fade"));
- 		return(1);
- 	    } else {
--		pline(Never_mind);
-+		pline("%s", Never_mind);
- 		return(0);
- 	    }
- 	}
-@@ -1100,12 +1100,12 @@ doengrave()
- 
- 	make_engr_at(u.ux, u.uy, buf, (moves - multi), type);
- 
--	if (post_engr_text[0]) pline(post_engr_text);
-+	if (post_engr_text[0]) pline("%s", post_engr_text);
- 
- 	if (doblind && !resists_blnd(&youmonst)) {
- 	    You("are blinded by the flash!");
- 	    make_blinded((long)rnd(50),FALSE);
--	    if (!Blind) Your(vision_clears);
-+	    if (!Blind) Your("%s", vision_clears);
- 	}
- 
- 	return(1);
-diff --git a/src/hack.c b/src/hack.c
-index 0e89c3b..5d19514 100644
---- a/src/hack.c
-+++ b/src/hack.c
-@@ -423,7 +423,7 @@ still_chewing(x,y)
- 
-     unblock_point(x, y);	/* vision */
-     newsym(x, y);
--    if (digtxt) You(digtxt);	/* after newsym */
-+    if (digtxt) You("%s", digtxt);	/* after newsym */
-     if (dmgtxt) pay_for_damage(dmgtxt, FALSE);
-     (void) memset((genericptr_t)&digging, 0, sizeof digging);
-     return 0;
-@@ -2082,7 +2082,7 @@ const char *msg_override;
- 	multi = 0;	/* caller will usually have done this already */
- 	if (msg_override) nomovemsg = msg_override;
- 	else if (!nomovemsg) nomovemsg = You_can_move_again;
--	if (*nomovemsg) pline(nomovemsg);
-+	if (*nomovemsg) pline("%s", nomovemsg);
- 	nomovemsg = 0;
- 	u.usleep = 0;
- 	if (afternmv) (*afternmv)();
-@@ -2257,7 +2257,7 @@ const char *str;
- {
-     if(near_capacity() >= EXT_ENCUMBER) {
- 	if(str)
--	    pline(str);
-+	    pline("%s", str);
- 	else
- 	    You_cant("do that while carrying so much stuff.");
- 	return 1;
-diff --git a/src/invent.c b/src/invent.c
-index b9a3683..167eb1e 100644
---- a/src/invent.c
-+++ b/src/invent.c
-@@ -971,7 +971,7 @@ register const char *let,*word;
- 		}
- 		if(index(quitchars,ilet)) {
- 		    if(flags.verbose)
--			pline(Never_mind);
-+			pline("%s", Never_mind);
- 		    return((struct obj *)0);
- 		}
- 		if(ilet == '-') {
-@@ -1026,7 +1026,7 @@ register const char *let,*word;
- 		    }
- 		    if(ilet == '\033') {
- 			if(flags.verbose)
--			    pline(Never_mind);
-+			    pline("%s", Never_mind);
- 			return((struct obj *)0);
- 		    }
- 		    /* they typed a letter (not a space) at the prompt */
-@@ -2214,7 +2214,7 @@ boolean picked_some;
- 		Sprintf(fbuf, "There is %s here.", an(dfeature));
- 
- 	if (!otmp || is_lava(u.ux,u.uy) || (is_pool(u.ux,u.uy) && !Underwater)) {
--		if (dfeature) pline(fbuf);
-+		if (dfeature) pline("%s", fbuf);
- 		read_engr_at(u.ux, u.uy); /* Eric Backus */
- 		if (!skip_objects && (Blind || !dfeature))
- 		    You("%s no objects here.", verb);
-@@ -2223,14 +2223,14 @@ boolean picked_some;
- 	/* we know there is something here */
- 
- 	if (skip_objects) {
--	    if (dfeature) pline(fbuf);
-+	    if (dfeature) pline("%s", fbuf);
- 	    read_engr_at(u.ux, u.uy); /* Eric Backus */
- 	    There("are %s%s objects here.",
- 		  (obj_cnt <= 10) ? "several" : "many",
- 		  picked_some ? " more" : "");
- 	} else if (!otmp->nexthere) {
- 	    /* only one object */
--	    if (dfeature) pline(fbuf);
-+	    if (dfeature) pline("%s", fbuf);
- 	    read_engr_at(u.ux, u.uy); /* Eric Backus */
- #ifdef INVISIBLE_OBJECTS
- 	    if (otmp->oinvis && !See_invisible) verb = "feel";
-@@ -2684,7 +2684,7 @@ doorganize()	/* inventory organizer by Del Lamb */
- 		Sprintf(qbuf, "Adjust letter to what [%s]?",buf);
- 		let = yn_function(qbuf, (char *)0, '\0');
- 		if(index(quitchars,let)) {
--			pline(Never_mind);
-+			pline("%s", Never_mind);
- 			return(0);
- 		}
- 		if (let == '@' || !letter(let))
-diff --git a/src/lock.c b/src/lock.c
-index 4d5d333..35b1441 100644
---- a/src/lock.c
-+++ b/src/lock.c
-@@ -862,7 +862,7 @@ int x, y;
- 	default: impossible("magic (%d) attempted on door.", otmp->otyp);
- 	    break;
- 	}
--	if (msg && cansee(x,y)) pline(msg);
-+	if (msg && cansee(x,y)) pline("%s", msg);
- 	if (loudness > 0) {
- 	    /* door was destroyed */
- 	    wake_nearto(x, y, loudness);
-diff --git a/src/mail.c b/src/mail.c
-index 99d7637..a34f760 100644
---- a/src/mail.c
-+++ b/src/mail.c
-@@ -317,7 +317,7 @@ md_rush(md,tx,ty)
- 	if (fx == tx && fy == ty) break;
- 
- 	if ((mon = m_at(fx,fy)) != 0)	/* save monster at this position */
--	    verbalize(md_exclamations());
-+	    verbalize("%s", md_exclamations());
- 	else if (fx == u.ux && fy == u.uy)
- 	    verbalize("Excuse me.");
- 
-diff --git a/src/makemon.c b/src/makemon.c
-index 89098dd..9e99cb8 100644
---- a/src/makemon.c
-+++ b/src/makemon.c
-@@ -1779,7 +1779,7 @@ struct obj *bag;
-     if (!bag || bag->otyp != BAG_OF_TRICKS) {
- 	impossible("bad bag o' tricks");
-     } else if (bag->spe < 1) {
--	pline(nothing_happens);
-+	pline("%s", nothing_happens);
-     } else {
- 	boolean gotone = FALSE;
- 	int cnt = 1;
-diff --git a/src/mcastu.c b/src/mcastu.c
-index 93d3b8d..549caf4 100644
---- a/src/mcastu.c
-+++ b/src/mcastu.c
-@@ -590,7 +590,7 @@ int spellnum;
- 		  (num_eyes == 1) ?
- 		  body_part(EYE) : makeplural(body_part(EYE)));
- 	    make_blinded(Half_spell_damage ? 100L : 200L, FALSE);
--	    if (!Blind) Your(vision_clears);
-+	    if (!Blind) Your("%s", vision_clears);
- 	    dmg = 0;
- 	} else
- 	    impossible("no reason for monster to cast blindness spell?");
-diff --git a/src/mhitu.c b/src/mhitu.c
-index c0711fc..7df5b5e 100644
---- a/src/mhitu.c
-+++ b/src/mhitu.c
-@@ -1036,7 +1036,7 @@ hitmu(mtmp, mattk)
- 		if (can_blnd(mtmp, &youmonst, mattk->aatyp, (struct obj*)0)) {
- 		    if (!Blind) pline("%s blinds you!", Monnam(mtmp));
- 		    make_blinded(Blinded+(long)dmg,FALSE);
--		    if (!Blind) Your(vision_clears);
-+		    if (!Blind) Your("%s", vision_clears);
- 		}
- 		dmg = 0;
- 		break;
-@@ -1742,7 +1742,7 @@ gulpmu(mtmp, mattk)	/* monster swallows you, or damage if u.uswallow */
- 			if(!Blind) {
- 			    You_cant("see in here!");
- 			    make_blinded((long)tmp,FALSE);
--			    if (!Blind) Your(vision_clears);
-+			    if (!Blind) Your("%s", vision_clears);
- 			} else
- 			    /* keep him blind until disgorged */
- 			    make_blinded(Blinded+1,FALSE);
-@@ -1858,7 +1858,7 @@ common:
- 		    if (mon_visible(mtmp) || (rnd(tmp /= 2) > u.ulevel)) {
- 			You("are blinded by a blast of light!");
- 			make_blinded((long)tmp, FALSE);
--			if (!Blind) Your(vision_clears);
-+			if (!Blind) Your("%s", vision_clears);
- 		    } else if (flags.verbose)
- 			You("get the impression it was not terribly bright.");
- 		}
-@@ -1985,7 +1985,7 @@ gazemu(mtmp, mattk)	/* monster gazes at you */
- 		    /* not blind at this point implies you're wearing
- 		       the Eyes of the Overworld; make them block this
- 		       particular stun attack too */
--		    if (!Blind) Your(vision_clears);
-+		    if (!Blind) Your("%s", vision_clears);
- 		    else make_stunned((long)d(1,3),TRUE);
- 		}
- 		break;
-diff --git a/src/mon.c b/src/mon.c
-index c769953..297a7b2 100644
---- a/src/mon.c
-+++ b/src/mon.c
-@@ -2370,7 +2370,7 @@ struct monst *mon;
- 				You("cannot polymorph %s into that.", mon_nam(mon));
- 			else break;
- 		} while(++tries < 5);
--		if (tries==5) pline(thats_enough_tries);
-+		if (tries==5) pline("%s", thats_enough_tries);
- 	}
- #endif /*WIZARD*/
- 	if (mndx == NON_PM) mndx = rn1(SPECIAL_PM - LOW_PM, LOW_PM);
-diff --git a/src/mthrowu.c b/src/mthrowu.c
-index 3038ced..0ce7832 100644
---- a/src/mthrowu.c
-+++ b/src/mthrowu.c
-@@ -450,7 +450,7 @@ m_throw(mon, x, y, dx, dy, range, obj)
- 	if (blindinc) {
- 		u.ucreamed += blindinc;
- 		make_blinded(Blinded + (long)blindinc, FALSE);
--		if (!Blind) Your(vision_clears);
-+		if (!Blind) Your("%s", vision_clears);
- 	}
- }
- 
-diff --git a/src/muse.c b/src/muse.c
-index 86044e5..3c038eb 100644
---- a/src/muse.c
-+++ b/src/muse.c
-@@ -79,7 +79,7 @@ struct obj *obj;
- 		    m_useup(mon, obj);
- 		    mtmp = makemon(&mons[PM_GHOST], cc.x, cc.y, NO_MM_FLAGS);
- 		    if (!mtmp) {
--			if (vis) pline(empty);
-+			if (vis) pline("%s", empty);
- 		    } else {
- 			if (vis) {
- 			    pline("As %s opens the bottle, an enormous %s emerges!",
-@@ -102,7 +102,7 @@ struct obj *obj;
- 		m_useup(mon, obj);
- 		mtmp = makemon(&mons[PM_DJINNI], cc.x, cc.y, NO_MM_FLAGS);
- 		if (!mtmp) {
--		    if (vis) pline(empty);
-+		    if (vis) pline("%s", empty);
- 		} else {
- 		    if (vis)
- 			pline("In a cloud of smoke, %s emerges!",
-diff --git a/src/polyself.c b/src/polyself.c
-index b051acb..8a5bf8f 100644
---- a/src/polyself.c
-+++ b/src/polyself.c
-@@ -234,7 +234,7 @@ boolean forcecontrol;
- 
-         if(!Polymorph_control && !forcecontrol && !draconian && !iswere && !isvamp) {
- 	    if (rn2(20) > ACURR(A_CON)) {
--		You(shudder_for_moment);
-+		You("%s", shudder_for_moment);
- 		losehp(rnd(30), "system shock", KILLED_BY_AN);
- 		exercise(A_CON, FALSE);
- 		return;
-@@ -256,7 +256,7 @@ boolean forcecontrol;
- 				You("cannot polymorph into that.");
- 			else break;
- 		} while(++tries < 5);
--		if (tries==5) pline(thats_enough_tries);
-+		if (tries==5) pline("%s", thats_enough_tries);
- 		/* allow skin merging, even when polymorph is controlled */
- 		if (draconian &&
- 		    (mntmp == armor_to_dragon(uarm->otyp) || tries == 5))
-diff --git a/src/potion.c b/src/potion.c
-index 04abd41..9ed0768 100644
---- a/src/potion.c
-+++ b/src/potion.c
-@@ -932,7 +932,7 @@ register const char *txt;
- 		You("have a %s feeling for a moment, then it passes.",
- 		Hallucination ? "normal" : "strange");
- 	else
--		pline(txt);
-+		pline("%s", txt);
- 
- 	if(!obj)	/* e.g., crystal ball finds no traps */
- 		return;
-@@ -1280,7 +1280,7 @@ register struct obj *obj;
- 		    pline("It suddenly gets dark.");
- 		}
- 		make_blinded(itimeout_incr(Blinded, rnd(5)), FALSE);
--		if (!Blind && !u.usleep) Your(vision_clears);
-+		if (!Blind && !u.usleep) Your("%s", vision_clears);
- 		break;
- 	case POT_WATER:
- 		if(u.umonnum == PM_GREMLIN) {
-@@ -1633,7 +1633,7 @@ dodip()
- 		    obj == uball || obj == uskin ||
- 		    obj_resists(obj->otyp == POT_POLYMORPH ?
- 				potion : obj, 5, 95)) {
--		pline(nothing_happens);
-+		pline("%s", nothing_happens);
- 	    } else {
- 	    	boolean was_wep = FALSE, was_swapwep = FALSE, was_quiver = FALSE;
- 		short save_otyp = obj->otyp;
-diff --git a/src/pray.c b/src/pray.c
-index 0df2855..16c9f9c 100644
---- a/src/pray.c
-+++ b/src/pray.c
-@@ -1317,7 +1317,7 @@ verbalize("In return for thy service, I grant thee the gift of Immortality!");
-     } /* fake Amulet */
- 
-     if (value == 0) {
--	pline(nothing_happens);
-+	pline("%s", nothing_happens);
- 	return (1);
-     }
- 
-diff --git a/src/priest.c b/src/priest.c
-index 5681930..effd0db 100644
---- a/src/priest.c
-+++ b/src/priest.c
-@@ -363,8 +363,8 @@ register int roomno;
- 		    msg1 = buf;
- 		}
- 		if (can_speak) {
--		    verbalize(msg1);
--		    if (msg2) verbalize(msg2);
-+		    verbalize("%s", msg1);
-+		    if (msg2) verbalize("%s", msg2);
- 		}
- 		if(!sanctum) {
- 		    /* !tended -> !shrined */
-@@ -433,7 +433,7 @@ register struct monst *priest;
- 		priest->mcanmove = 1;
- 	    }
- 	    priest->mpeaceful = 0;
--	    verbalize(cranky_msg[rn2(3)]);
-+	    verbalize("%s", cranky_msg[rn2(3)]);
- 	    return;
- 	}
- 
-diff --git a/src/questpgr.c b/src/questpgr.c
-index b4b80af..4bb6929 100644
---- a/src/questpgr.c
-+++ b/src/questpgr.c
-@@ -364,7 +364,7 @@ struct qtmsg *qt_msg;
- 	for (size = 0; size < qt_msg->size; size += (long)strlen(in_line)) {
- 	    (void) dlb_fgets(in_line, 80, msg_file);
- 	    convert_line();
--	    pline(out_line);
-+	    pline("%s", out_line);
- 	}
- 
- }
-diff --git a/src/read.c b/src/read.c
-index ab530f0..bc7dcb0 100644
---- a/src/read.c
-+++ b/src/read.c
-@@ -156,14 +156,14 @@ static void
- stripspe(obj)
- register struct obj *obj;
- {
--	if (obj->blessed) pline(nothing_happens);
-+	if (obj->blessed) pline("%s", nothing_happens);
- 	else {
- 		if (obj->spe > 0) {
- 		    obj->spe = 0;
- 		    if (obj->otyp == OIL_LAMP || obj->otyp == BRASS_LANTERN)
- 			obj->age = 0;
- 		    Your("%s %s briefly.",xname(obj), otense(obj, "vibrate"));
--		} else pline(nothing_happens);
-+		} else pline("%s", nothing_happens);
- 	}
- }
- 
-@@ -320,7 +320,7 @@ int curse_bless;
- 		    if (obj->spe < 3)
- 			Your("marker seems permanently dried out.");
- 		    else
--			pline(nothing_happens);
-+			pline("%s", nothing_happens);
- 		} else if (is_blessed) {
- 		    n = rn1(16,15);		/* 15..30 */
- 		    if (obj->spe + n <= 50)
-@@ -378,7 +378,7 @@ int curse_bless;
- 		    if (obj->spe < 5) {
- 			obj->spe++;
- 			p_glow1(obj);
--		    } else pline(nothing_happens);
-+		    } else pline("%s", nothing_happens);
- 		}
- 		break;
- 	    case HORN_OF_PLENTY:
-@@ -1284,7 +1284,7 @@ register struct obj	*sobj;
- 		cc.x = u.ux;
- 		cc.y = u.uy;
- 		if (getpos(&cc, TRUE, "the desired position") < 0) {
--		    pline(Never_mind);
-+		    pline("%s", Never_mind);
- 		    return 0;
- 		}
- 		if (!cansee(cc.x, cc.y) || distu(cc.x, cc.y) >= 32) {
-@@ -1433,7 +1433,7 @@ do_class_genocide()
- 
- 	for(j=0; ; j++) {
- 		if (j >= 5) {
--			pline(thats_enough_tries);
-+			pline("%s", thats_enough_tries);
- 			return;
- 		}
- 		do {
-@@ -1602,7 +1602,7 @@ int how;
- 	} else {
- 	    for(i = 0; ; i++) {
- 		if(i >= 5) {
--		    pline(thats_enough_tries);
-+		    pline("%s", thats_enough_tries);
- 		    return;
- 		}
- 		getlin("What monster do you want to genocide? [type the name]",
-@@ -1725,7 +1725,7 @@ int how;
- 	    if (cnt)
- 		pline("Sent in some %s.", makeplural(buf));
- 	    else
--		pline(nothing_happens);
-+		pline("%s", nothing_happens);
- 	}
- }
- 
-@@ -1845,7 +1845,7 @@ create_particular()
- 	} while (++tries < 5);
- 
- 	if (tries == 5) {
--	    pline(thats_enough_tries);
-+	    pline("%s", thats_enough_tries);
- 	} else {
- 	    (void) cant_create(&which, FALSE);
- 	    whichpm = &mons[which];
-diff --git a/src/region.c b/src/region.c
-index e4d12af..3c405ec 100644
---- a/src/region.c
-+++ b/src/region.c
-@@ -445,7 +445,7 @@ xchar
- 		!regions[i]->attach_2_u && !inside_region(regions[i], x, y)) {
- 	    clear_hero_inside(regions[i]);
- 	    if (regions[i]->leave_msg != NULL)
--		pline(regions[i]->leave_msg);
-+		pline("%s", regions[i]->leave_msg);
- 	    if ((f_indx = regions[i]->leave_f) != NO_CALLBACK)
- 		(void) (*callbacks[f_indx])(regions[i], (genericptr_t) 0);
- 	}
-@@ -456,7 +456,7 @@ xchar
- 		!regions[i]->attach_2_u && inside_region(regions[i], x, y)) {
- 	    set_hero_inside(regions[i]);
- 	    if (regions[i]->enter_msg != NULL)
--		pline(regions[i]->enter_msg);
-+		pline("%s", regions[i]->enter_msg);
- 	    if ((f_indx = regions[i]->enter_f) != NO_CALLBACK)
- 		(void) (*callbacks[f_indx])(regions[i], (genericptr_t) 0);
- 	}
-diff --git a/src/restore.c b/src/restore.c
-index aaabbed..c6a4a3f 100644
---- a/src/restore.c
-+++ b/src/restore.c
-@@ -737,7 +737,7 @@ boolean ghostly;
- 	    else
- 		Sprintf(trickbuf, "This is level %d, not %d!", dlvl, lev);
- #ifdef WIZARD
--	    if (wizard) pline(trickbuf);
-+	    if (wizard) pline("%s", trickbuf);
- #endif
- 	    trickery(trickbuf);
- 	}
-diff --git a/src/shk.c b/src/shk.c
-index 53c868b..67285d4 100644
---- a/src/shk.c
-+++ b/src/shk.c
-@@ -1345,7 +1345,7 @@ proceed:
- 		    else Strcat(sbuf,
- 			   "for gold picked up and the use of merchandise.");
- 		} else Strcat(sbuf, "for the use of merchandise.");
--		pline(sbuf);
-+		pline("%s", sbuf);
- #ifndef GOLDOBJ
- 		if (u.ugold + eshkp->credit < dtmp) {
- #else
-diff --git a/src/sounds.c b/src/sounds.c
-index ebd51aa..0740ab4 100644
---- a/src/sounds.c
-+++ b/src/sounds.c
-@@ -53,7 +53,7 @@ dosounds()
- 		"the splashing of a naiad.",
- 		"a soda fountain!",
- 	};
--	You_hear(fountain_msg[rn2(3)+hallu]);
-+	You_hear("%s", fountain_msg[rn2(3)+hallu]);
-     }
- #ifdef SINK
-     if (level.flags.nsinks && !rn2(300)) {
-@@ -62,7 +62,7 @@ dosounds()
- 		"a gurgling noise.",
- 		"dishes being washed!",
- 	};
--	You_hear(sink_msg[rn2(2)+hallu]);
-+	You_hear("%s", sink_msg[rn2(2)+hallu]);
-     }
- #endif
-     if (level.flags.has_court && !rn2(200)) {
-@@ -81,7 +81,7 @@ dosounds()
- 		/* finding one is enough, at least for now */
- 		int which = rn2(3)+hallu;
- 
--		if (which != 2) You_hear(throne_msg[which]);
-+		if (which != 2) You_hear("%s", throne_msg[which]);
- 		else		pline(throne_msg[2], uhis());
- 		return;
- 	    }
-@@ -93,7 +93,7 @@ dosounds()
- 		"smell marsh gas!",	/* so it's a smell...*/
- 		"hear Donald Duck!",
- 	};
--	You(swamp_msg[rn2(2)+hallu]);
-+	You("%s", swamp_msg[rn2(2)+hallu]);
- 	return;
-     }
-     if (level.flags.has_vault && !rn2(200)) {
-@@ -201,7 +201,7 @@ dosounds()
- 		mon_in_room(mtmp, BARRACKS) &&
- 		/* sleeping implies not-yet-disturbed (usually) */
- 		(mtmp->msleeping || ++count > 5)) {
--		You_hear(barracks_msg[rn2(3)+hallu]);
-+		You_hear("%s", barracks_msg[rn2(3)+hallu]);
- 		return;
- 	    }
- 	}
-@@ -216,7 +216,7 @@ dosounds()
- 	    if (DEADMONSTER(mtmp)) continue;
- 	    if ((mtmp->msleeping || is_animal(mtmp->data)) &&
- 		    mon_in_room(mtmp, ZOO)) {
--		You_hear(zoo_msg[rn2(2)+hallu]);
-+		You_hear("%s", zoo_msg[rn2(2)+hallu]);
- 		return;
- 	    }
- 	}
-@@ -234,7 +234,7 @@ dosounds()
- 		    "the chime of a cash register.",
- 		    "Neiman and Marcus arguing!",
- 	    };
--	    You_hear(shop_msg[rn2(2)+hallu]);
-+	    You_hear("%s", shop_msg[rn2(2)+hallu]);
- 	}
- 	return;
-     }
-@@ -252,7 +252,7 @@ dosounds()
- 		    "someone say \"No more woodchucks!\"",
- 		    "a loud ZOT!"		/* both rec.humor.oracle */
- 	    };
--	    You_hear(ora_msg[rn2(3)+hallu*2]);
-+	    You_hear("%s", ora_msg[rn2(3)+hallu*2]);
- 	}
- 	return;
-     }
-@@ -816,7 +816,7 @@ register struct monst *mtmp;
-     }
- 
-     if (pline_msg) pline("%s %s", Monnam(mtmp), pline_msg);
--    else if (verbl_msg) verbalize(verbl_msg);
-+    else if (verbl_msg) verbalize("%s", verbl_msg);
-     return(1);
- }
- 
-diff --git a/src/spell.c b/src/spell.c
-index 4659cfa..10657de 100644
---- a/src/spell.c
-+++ b/src/spell.c
-@@ -948,7 +948,7 @@ boolean atme;
- 		break;
- 	case SPE_JUMPING:
- 		if (!jump(max(role_skill,1)))
--			pline(nothing_happens);
-+			pline("%s", nothing_happens);
- 		break;
- 	default:
- 		impossible("Unknown spell %d attempted.", spell);
-diff --git a/src/steed.c b/src/steed.c
-index 52e97dc..8c46537 100644
---- a/src/steed.c
-+++ b/src/steed.c
-@@ -58,7 +58,7 @@ use_saddle(otmp)
- 
- 	/* Select an animal */
- 	if (u.uswallow || Underwater || !getdir((char *)0)) {
--	    pline(Never_mind);
-+	    pline("%s", Never_mind);
- 	    return 0;
- 	}
- 	if (!u.dx && !u.dy) {
-diff --git a/src/teleport.c b/src/teleport.c
-index c913e3c..e7c1e9f 100644
---- a/src/teleport.c
-+++ b/src/teleport.c
-@@ -552,7 +552,7 @@ dotele()
- 		else tele();
- 		(void) next_to_u();
- 	} else {
--		You(shudder_for_moment);
-+		You("%s", shudder_for_moment);
- 		return(0);
- 	}
- 	if (!trap) morehungry(100);
-@@ -663,7 +663,7 @@ level_tele()
- 	     * we let negative values requests fall into the "heaven" loop.
- 	     */
- 	    if (Is_knox(&u.uz) && newlev > 0) {
--		You(shudder_for_moment);
-+		You("%s", shudder_for_moment);
- 		return;
- 	    }
- 	    /* if in Quest, the player sees "Home 1", etc., on the status
-@@ -680,13 +680,13 @@ level_tele()
-  random_levtport:
- 	    newlev = random_teleport_level();
- 	    if (newlev == depth(&u.uz)) {
--		You(shudder_for_moment);
-+		You("%s", shudder_for_moment);
- 		return;
- 	    }
- 	}
- 
- 	if (!next_to_u()) {
--		You(shudder_for_moment);
-+		You("%s", shudder_for_moment);
- 		return;
- 	}
- #ifdef WIZARD
-@@ -812,7 +812,7 @@ register struct trap *ttmp;
- 	struct d_level target_level;
- 
- 	if (!next_to_u()) {
--		You(shudder_for_moment);
-+		You("%s", shudder_for_moment);
- 		return;
- 	}
- 
-@@ -846,7 +846,7 @@ struct trap *trap;
- 			shieldeff(u.ux, u.uy);
- 		You_feel("a wrenching sensation.");
- 	} else if (!next_to_u()) {
--		You(shudder_for_moment);
-+		You("%s", shudder_for_moment);
- 	} else if (trap->once) {
- 		deltrap(trap);
- 		newsym(u.ux,u.uy);	/* get rid of trap symbol */
-diff --git a/src/timeout.c b/src/timeout.c
-index 6a336d6..3b19ecc 100644
---- a/src/timeout.c
-+++ b/src/timeout.c
-@@ -31,7 +31,7 @@ stoned_dialogue()
- 	register long i = (Stoned & TIMEOUT);
- 
- 	if (i > 0L && i <= SIZE(stoned_texts))
--		pline(stoned_texts[SIZE(stoned_texts) - i]);
-+		pline("%s", stoned_texts[SIZE(stoned_texts) - i]);
- 	if (i == 5L)
- 		HFast = 0L;
- 	if (i == 3L)
-@@ -55,7 +55,7 @@ vomiting_dialogue()
- 
- 	if ((((Vomiting & TIMEOUT) % 3L) == 2) && (i >= 0)
- 	    && (i < SIZE(vomiting_texts)))
--		You(vomiting_texts[SIZE(vomiting_texts) - i - 1]);
-+		You("%s", vomiting_texts[SIZE(vomiting_texts) - i - 1]);
- 
- 	switch ((int) i) {
- 	case 0:
-@@ -102,7 +102,7 @@ choke_dialogue()
- 		if (index(str, '%'))
- 		    pline(str, hcolor(NH_BLUE));
- 		else
--		    pline(str);
-+		    pline("%s", str);
- 	    }
- 	}
- 	exercise(A_STR, FALSE);
-@@ -132,7 +132,7 @@ slime_dialogue()
- 		} else
- 		    pline(str, an(Hallucination ? rndmonnam() : "green slime"));
- 	    } else
--		pline(str);
-+		pline("%s", str);
- 	}
- 	if (i == 3L) {	/* limbs becoming oozy */
- 	    HFast = 0L;	/* lose intrinsic speed */
-diff --git a/src/trap.c b/src/trap.c
-index d336276..1724267 100644
---- a/src/trap.c
-+++ b/src/trap.c
-@@ -359,7 +359,7 @@ boolean td;	/* td == TRUE : trap door or hole */
- 	    dont_fall = "are jerked back by your pet!";
- 	}
- 	if (dont_fall) {
--	    You(dont_fall);
-+	    You("%s", dont_fall);
- 	    /* hero didn't fall through, but any objects here might */
- 	    impact_drop((struct obj *)0, u.ux, u.uy, 0);
- 	    if (!td) {
-@@ -2498,7 +2498,7 @@ domagictrap()
- 	  if (!resists_blnd(&youmonst)) {
- 		You("are momentarily blinded by a flash of light!");
- 		make_blinded((long)rn1(5,10),FALSE);
--		if (!Blind) Your(vision_clears);
-+		if (!Blind) Your("%s", vision_clears);
- 	  } else if (!Blind) {
- 		You("see a flash of light!");
- 	  }  else
-diff --git a/src/zap.c b/src/zap.c
-index 991c429..d37b30d 100644
---- a/src/zap.c
-+++ b/src/zap.c
-@@ -1835,7 +1835,7 @@ dozap()
- 	check_unpaid(obj);
- 
- 	/* zappable addition done by GAN 11/03/86 */
--	if(!zappable(obj)) pline(nothing_happens);
-+	if(!zappable(obj)) pline("%s", nothing_happens);
- 	else if(obj->cursed && !rn2(100)) {
- 		backfire(obj);	/* the wand blows up in your face! */
- 		exercise(A_STR, FALSE);
-@@ -1912,7 +1912,7 @@ boolean ordinary;
- 		    if (!resists_blnd(&youmonst)) {
- 			    You(are_blinded_by_the_flash);
- 			    make_blinded((long)rnd(100),FALSE);
--			    if (!Blind) Your(vision_clears);
-+			    if (!Blind) Your("%s", vision_clears);
- 		    }
- 		    break;
- 
-@@ -2093,7 +2093,7 @@ boolean ordinary;
- 			You(are_blinded_by_the_flash);
- 			make_blinded((long)damage, FALSE);
- 			makeknown(obj->otyp);
--			if (!Blind) Your(vision_clears);
-+			if (!Blind) Your("%s", vision_clears);
- 		    }
- 		    damage = 0;	/* reset */
- 		    break;
-@@ -2373,7 +2373,7 @@ struct obj *obj;	/* wand or spell */
- 	case SPE_STONE_TO_FLESH:
- 	    if (Is_airlevel(&u.uz) || Is_waterlevel(&u.uz) ||
- 		     Underwater || (Is_qstart(&u.uz) && u.dz < 0)) {
--		pline(nothing_happens);
-+		pline("%s", nothing_happens);
- 	    } else if (u.dz < 0) {	/* we should do more... */
- 		pline("Blood drips on your %s.", body_part(FACE));
- 	    } else if (u.dz > 0 && !OBJ_AT(u.ux, u.uy)) {
-@@ -2384,7 +2384,7 @@ struct obj *obj;	/* wand or spell */
- 		e = engr_at(u.ux, u.uy);
- 		if (!(e && e->engr_type == ENGRAVE)) {
- 		    if (is_pool(u.ux, u.uy) || is_ice(u.ux, u.uy))
--			pline(nothing_happens);
-+			pline("%s", nothing_happens);
- 		    else
- 			pline("Blood %ss %s your %s.",
- 			      is_lava(u.ux, u.uy) ? "boil" : "pool",
-@@ -3463,7 +3463,7 @@ register int dx,dy;
- 	    if (abstype == ZT_LIGHTNING && !resists_blnd(&youmonst)) {
- 		You(are_blinded_by_the_flash);
- 		make_blinded((long)d(nd,50),FALSE);
--		if (!Blind) Your(vision_clears);
-+		if (!Blind) Your("%s", vision_clears);
- 	    }
- 	    stop_occupation();
- 	    nomul(0);
-@@ -3597,7 +3597,7 @@ boolean *shopdamage;
- 		    if (ttmp) ttmp->tseen = 1;
- 		    if (cansee(x,y)) msgtxt = "The water evaporates.";
- 		}
--		Norep(msgtxt);
-+		Norep("%s", msgtxt);
- 		if (lev->typ == ROOM) newsym(x,y);
- 	    } else if(IS_FOUNTAIN(lev->typ)) {
- 		    if (cansee(x,y))
-@@ -3721,12 +3721,12 @@ boolean *shopdamage;
- 		    lev->doormask = new_doormask;
- 		    unblock_point(x, y);	/* vision */
- 		    if (cansee(x, y)) {
--			pline(see_txt);
-+			pline("%s", see_txt);
- 			newsym(x, y);
- 		    } else if (sense_txt) {
--			You(sense_txt);
-+			You("%s", sense_txt);
- 		    } else if (hear_txt) {
--			if (flags.soundok) You_hear(hear_txt);
-+			if (flags.soundok) You_hear("%s", hear_txt);
- 		    }
- 		    if (picking_at(x, y)) {
- 			stop_occupation();
-@@ -4111,7 +4111,7 @@ retry:
- 	if (!otmp) {
- 	    pline("Nothing fitting that description exists in the game.");
- 	    if (++tries < 5) goto retry;
--	    pline(thats_enough_tries);
-+	    pline("%s", thats_enough_tries);
- 	    otmp = readobjnam((char *)0, (struct obj *)0, TRUE);
- 	    if (!otmp) return;	/* for safety; should never happen */
- 	} else if (otmp == &nothing) {
-diff --git a/util/makedefs.c b/util/makedefs.c
-index 23dace2..de7319b 100644
---- a/util/makedefs.c
-+++ b/util/makedefs.c
-@@ -358,7 +358,7 @@ do_rumors()
- 		perror(filename);
- 		exit(EXIT_FAILURE);
- 	}
--	Fprintf(ofp,Dont_Edit_Data);
-+	Fprintf(ofp,"%s",Dont_Edit_Data);
- 
- 	Sprintf(infile, DATA_IN_TEMPLATE, RUMOR_FILE);
- 	Strcat(infile, ".tru");
-@@ -557,7 +557,7 @@ do_date()
- 		exit(EXIT_FAILURE);
- 	}
- 	Fprintf(ofp,"/*\tSCCS Id: @(#)date.h\t3.4\t2002/02/03 */\n\n");
--	Fprintf(ofp,Dont_Edit_Code);
-+	Fprintf(ofp,"%s",Dont_Edit_Code);
- 
- #ifdef KR1ED
- 	(void) time(&clocktim);
-@@ -1229,7 +1229,7 @@ do_dungeon()
- 		perror(filename);
- 		exit(EXIT_FAILURE);
- 	}
--	Fprintf(ofp,Dont_Edit_Data);
-+	Fprintf(ofp,"%s",Dont_Edit_Data);
- 
- 	while (fgets(in_line, sizeof in_line, ifp) != 0) {
- 	    SpinCursor(3);
-@@ -1351,7 +1351,7 @@ do_monstr()
- 	perror(filename);
- 	exit(EXIT_FAILURE);
-     }
--    Fprintf(ofp,Dont_Edit_Code);
-+    Fprintf(ofp,"%s",Dont_Edit_Code);
-     Fprintf(ofp,"#include \"config.h\"\n");
-     Fprintf(ofp,"\nconst int monstr[] = {\n");
-     for (ptr = &mons[0], j = 0; ptr->mlet; ptr++) {
-@@ -1392,7 +1392,7 @@ do_permonst()
- 		exit(EXIT_FAILURE);
- 	}
- 	Fprintf(ofp,"/*\tSCCS Id: @(#)pm.h\t3.4\t2002/02/03 */\n\n");
--	Fprintf(ofp,Dont_Edit_Code);
-+	Fprintf(ofp,"%s",Dont_Edit_Code);
- 	Fprintf(ofp,"#ifndef PM_H\n#define PM_H\n");
- 
- 	if (strcmp(mons[0].mname, "playermon") != 0)
-@@ -1708,7 +1708,7 @@ do_objs()
- 		exit(EXIT_FAILURE);
- 	}
- 	Fprintf(ofp,"/*\tSCCS Id: @(#)onames.h\t3.4\t2002/02/03 */\n\n");
--	Fprintf(ofp,Dont_Edit_Code);
-+	Fprintf(ofp,"%s",Dont_Edit_Code);
- 	Fprintf(ofp,"#ifndef ONAMES_H\n#define ONAMES_H\n\n");
- 
- 	for(i = 0; !i || objects[i].oc_class != ILLOBJ_CLASS; i++) {
-@@ -1863,7 +1863,7 @@ do_vision()
- 	perror(filename);
- 	exit(EXIT_FAILURE);
-     }
--    Fprintf(ofp,Dont_Edit_Code);
-+    Fprintf(ofp,"%s",Dont_Edit_Code);
-     Fprintf(ofp,"#ifdef VISION_TABLES\n");
- #ifdef VISION_TABLES
-     H_close_gen();
-@@ -1888,7 +1888,7 @@ do_vision()
- 	Unlink(filename);
- 	exit(EXIT_FAILURE);
-     }
--    Fprintf(ofp,Dont_Edit_Code);
-+    Fprintf(ofp,"%s",Dont_Edit_Code);
-     Fprintf(ofp,"#include \"config.h\"\n");
-     Fprintf(ofp,"#ifdef VISION_TABLES\n");
-     Fprintf(ofp,"#include \"vis_tab.h\"\n");
diff --git a/nethack-3.4.3-turbonerd-0.1.0.patch b/nethack-3.4.3-turbonerd-0.1.0.patch
deleted file mode 100644
index c597768..0000000
--- a/nethack-3.4.3-turbonerd-0.1.0.patch
+++ /dev/null
@@ -1,1777 +0,0 @@
-diff -Nru nethack-3.4.3/README.turbonerd nethack-3.4.3-turbonerd/README.turbonerd
---- nethack-3.4.3/README.turbonerd	1969-12-31 19:00:00.000000000 -0500
-+++ nethack-3.4.3-turbonerd/README.turbonerd	2006-06-05 23:56:39.000000000 -0400
-@@ -0,0 +1,9 @@
-+This is version 0.1.0 of the Nethack Turbonerd patch, dated 2006-06-05.
-+
-+The Nethack Turbonerd patch is copyright (C) 2006 Daniel Franke and is licensed
-+under the same terms as the rest of Nethack.  Most changes to the original
-+source are set off by #ifdef TURBONERD conditionals, and are enabled by default
-+in config.h.
-+
-+The User Friendly characters and content upon which the Turbonerd patch is 
-+based are copyrighted and trademarks of J.D. Frazer.
-diff -Nru nethack-3.4.3/dat/Turbonerd.des nethack-3.4.3-turbonerd/dat/Turbonerd.des
---- nethack-3.4.3/dat/Turbonerd.des	1969-12-31 19:00:00.000000000 -0500
-+++ nethack-3.4.3-turbonerd/dat/Turbonerd.des	2006-06-05 19:38:40.000000000 -0400
-@@ -0,0 +1,285 @@
-+MAZE: "Ner-strt",' '
-+FLAGS: hardfloor
-+GEOMETRY:center,center
-+MAP
-+----------------------------------------------------------------------------
-+|............|.....|.........|.........|.........|.........|.....|.........|
-+|............|.....|.........|.........|.........|.........|.....|.........|
-+|............+.....+.........|.........|.........|.........+.....|.........|
-+|............|.....|.........|.........|.........|.........|.....|.........|
-+|............|.....|.........|.........|.........|.........|.....|.........|
-+|............|.....|.........|.........|.........|.........|.....|.........|
-+|-------------.....--------+---+---------+------------------.....---+------|
-+|..........................................................................|
-+|..........................................................................|
-+|..........................................................................|
-+|..........................................................................|
-+|-------------.....--------+---+---------+--------------------------.....-+|
-+|............|.....|.........|.........|.........|.................|.....|.|
-+|............|.....|.........|.........|.........|.................|.....|.|
-+|............|.....|.........|.........|.........|.\...............+.....|.|
-+|............+.....+.........|.........|.........|.................+.....|.|
-+|............|.....|.........|.........|.........|.................|.....|.|
-+|............|.....|.........|.........|.........|.................|.....|.|
-+----------------------------------------------------------------------------
-+ENDMAP
-+REGION:(00,08,10,11),lit,"ordinary"
-+REGION:(50,13,66,18),lit,"ordinary"
-+STAIR:(74,18),down
-+BRANCH:(2,9,2,9),(0,0,0,0)
-+DOOR:locked,(13,3)
-+DOOR:closed,(13,16)
-+DOOR:closed,(19,3)
-+DOOR:locked,(19,16)
-+DOOR:closed,(27,7)
-+DOOR:closed,(27,12)
-+DOOR:locked,(31,7)
-+DOOR:closed,(31,12)
-+DOOR:closed,(59,3)
-+DOOR:closed,(68,7)
-+DOOR:closed,(67,15)
-+DOOR:closed,(67,16)
-+DOOR:closed,(74,12)
-+MONSTER:'@',"Illiad",(51,15)
-+OBJECT:'(',"chest",(51,16)
-+MONSTER:'@',"hacker",(3,3)
-+MONSTER:'@',"hacker",(3,17)
-+MONSTER:'@',"hacker",(18,3)
-+MONSTER:'@',"hacker",(18,18)
-+MONSTER:'@',"hacker",(32,3)
-+MONSTER:'@',"hacker",(32,18)
-+MONSTER:'@',"hacker",(73,3)
-+MONSTER:'@',"hacker",(72,5)
-+MONSTER:'@',"hacker",(30,10)
-+MONSTER:'@',"hacker",(50,10)
-+MONSTER:'@',"hacker",(70,10)
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'?',random,random
-+OBJECT:'+',random,random
-+OBJECT:'+',random,random
-+OBJECT:'+',random,random
-+OBJECT:'!',random,random
-+OBJECT:'!',random,random
-+OBJECT:'!',random,random
-+OBJECT:'!',random,random
-+OBJECT:'!',random,random
-+
-+MAZE: "Ner-loca", ' '
-+GEOMETRY:center,center
-+MAP
-+                ----------                                                  
-+                |........|                                          |       
-+ ########       |........|                                       |... .|    
-+ ########       ----++----            ############               | .....    
-+      ###           ##                ############                .....|    
-+      ###           ##                ##                          -...--    
-+      ##################################                           ###      
-+      ##################################           -----           ###      
-+      ###           ##                ##           |...|           ###      
-+      ###           ##                ##           |...|           ###      
-+      ###------     ##---------       ##           --+--           ###      
-+      ###|....|     ##+.......| ########             #             ###      
-+      ###S....|     ##|.......| #     ##             #             ###      
-+      ###|....|     ##|.......| #     ##             #             ###      
-+      ###------     ##|.......| #     # ##############################      
-+                    ##|.......+##     ################################      
-+                    ##|.......|                                             
-+                    ##+.......|                                             
-+                      ---------                                             
-+ENDMAP
-+NON_DIGGABLE:(0,0,75,18)
-+TELEPORT_REGION:(68,6,68,6),(0,0,0,0)
-+STAIR:(11,13),up
-+DOOR:locked,(9,12)
-+DOOR:locked,(22,11)
-+DOOR:locked,(22,17)
-+DOOR:locked,(20,3)
-+DOOR:locked,(21,3)
-+DOOR:locked,(30,15)
-+DOOR:locked,(53,10)
-+OBJECT:'`',"boulder",(46,3)
-+OBJECT:'`',"boulder",(48,4)
-+OBJECT:'*',"rock",(47,3)
-+OBJECT:'*',"rock",(48,3)
-+OBJECT:'*',"rock",(49,3)
-+OBJECT:'*',"rock",(46,4)
-+OBJECT:'*',"rock",(47,4)
-+OBJECT:'*',"rock",(49,4)
-+OBJECT:'`',"boulder",(66,4)
-+OBJECT:'*',"rock",(66,2)
-+OBJECT:'*',"rock",(67,2)
-+OBJECT:'*',"rock",(69,3)
-+TRAP:"hole",(67,4)
-+TRAP:"hole",(68,4)
-+TRAP:"hole",(69,4)
-+TRAP:"hole",(67,3)
-+TRAP:"hole",(68,3)
-+TRAP:"hole",(70,3)
-+TRAP:"pit",(18,1)
-+TRAP:"pit",(22,2)
-+TRAP:"pit",(28,14)
-+TRAP:"pit",(26,13)
-+TRAP:"pit",(27,11)
-+MONSTER:'P',random,random
-+MONSTER:'P',random,random
-+MONSTER:'P',random,random
-+MONSTER:'P',random,random
-+MONSTER:'P',random,random
-+MONSTER:'P',random,random
-+MONSTER:'P',random,random
-+MONSTER:'P',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+MONSTER:'a',random,random
-+OBJECT:'+',random,(52,8)
-+OBJECT:'+',random,(53,8)
-+OBJECT:'+',random,(54,8)
-+OBJECT:'+',random,(52,9)
-+OBJECT:'+',random,(53,9)
-+OBJECT:'+',random,(54,9)
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+
-+MAZE: "Ner-goal", ' '
-+FLAGS: hardfloor, nommap
-+GEOMETRY: center,center
-+MAP
-+                           LLLLL      ...                                  
-+       ......              LLLLLL     ...               ...                
-+       ......                LLLLL                     .....               
-+       ......              LLLLLL                      .....               
-+                           LLLLL                        ...                
-+                            LLLLLL                                         
-+                            LLLLL                                          
-+       LLLLL                                        LLLLLL                 
-+        LLLLL                                        LLLLLLL               
-+    LLLLLLLLL                  ..                  LLLLLLLL                
-+    LLLLLLLL                   ..                    LLLLLL                
-+      LLLL       LLL                                                       
-+                 LLL                                                       
-+        ---                    LLLLLL         ...         LLL              
-+       -|.|-                   LLLLLLLL       ...         LLL              
-+      --...--               LLLLLLLL          ...                          
-+      |.....|                  LLLLLLLL                                    
-+      --...--                LLLLLLL                                       
-+       -|.|-                                                               
-+        ---                                                                
-+ENDMAP
-+TELEPORT_REGION: (55,1,59,4),(0,0,0,0)
-+STAIR: (57,2),up
-+FOUNTAIN: (47,14)
-+OBJECT: '(', "pick-axe", (57,3)
-+OBJECT: '*', random, (7,1)
-+OBJECT: '*', random, (8,1)
-+OBJECT: '*', random, (9,1)
-+OBJECT: '*', random, (10,1)
-+OBJECT: '*', random, (11,1)
-+OBJECT: '*', random, (12,1)
-+OBJECT: '*', random, (7,2)
-+OBJECT: '*', random, (8,2)
-+OBJECT: '*', random, (9,2)
-+OBJECT: '*', random, (10,2)
-+OBJECT: '*', random, (11,2)
-+OBJECT: '*', random, (12,2)
-+OBJECT: '*', random, (7,3)
-+OBJECT: '*', random, (8,3)
-+OBJECT: '*', random, (9,3)
-+OBJECT: '*', random, (10,3)
-+OBJECT: '*', random, (11,3)
-+OBJECT: '*', random, (12,3)
-+MONSTER: 'P', "green slime", (38,1)
-+MONSTER: 'P', "green slime", (39,1)
-+MONSTER: 'P', "green slime", (40,1)
-+MONSTER: 'P', "green slime", (38,0)
-+MONSTER: 'P', "green slime", (39,0)
-+MONSTER: 'P', "green slime", (40,0)
-+
-+MONSTER: 'P', "Crud Puppy", (9,16)
-+OBJECT: '(',"magic marker",(9,16),blessed,75,"The Lime-Green Crayon of Engfeh"
-+
-+LEVEL: "Ner-fila"
-+ROOM: "ordinary",random,random,random,random
-+ROOM: "ordinary",random,random,random,random
-+ROOM: "ordinary",random,random,random,random
-+ROOM: "ordinary",random,random,random,random
-+ROOM: "ordinary",random,random,random,random
-+ROOM: "ordinary",random,random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+OBJECT:random,random,random
-+STAIR:random,up
-+STAIR:random,down
-+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
-+RANDOM_CORRIDORS
-+
-+MAZE: "Ner-filb", ' '
-+INIT_MAP: '.', 'L', true, true, unlit, true
-+NOMAP
-+STAIR: random, up
-+STAIR: random, down
-+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: 'F',random,random
-+MONSTER: 'F',random,random
-+MONSTER: 'F',random,random
-+MONSTER: 'F',random,random
-+MONSTER: 'F',random,random
-+MONSTER: 'F',random,random
-+MONSTER: 'F',random,random
-+TRAP: random, random
-+TRAP: random, random
-+TRAP: random, random
-+TRAP: random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-+OBJECT: random, random, random
-diff -Nru nethack-3.4.3/dat/data.base nethack-3.4.3-turbonerd/dat/data.base
---- nethack-3.4.3/dat/data.base	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/dat/data.base	2006-06-05 21:04:49.000000000 -0400
-@@ -806,6 +806,33 @@
- 	without sound of something that is going to happen to you
- 	soon.  It is seldom good news.
- 	[ The Tough Guide to Fantasyland, by Diana Wynne Jones ]
-+crud puppy
-+	Mike: I have to ask, Henry, Have you seen John Carpenter's 
-+	movie "The Thing"?
-+	Henry: Yeah, we have fun with it. Mostly because it's a 
-+	game to pick at all of the discrepancies.
-+	Henry: For example, there are no firearms here. And we don't 
-+	have flamethrowers, nor do we store huge canisters of fuel 
-+	or crates of dynamite. But hey, it's science-fiction.
-+	Mike: You have gotta be friggin' kidding!!
-+	Henry: Oh, way to ruin a great line from the movie. Don't they 
-+	swear in Canada?
-+		[ User Friendly, September 22, 2004 ]
-+cthulhu
-+hastur
-+	There were legends of a hidden lake unglimpsed by mortal sight, 
-+	in which dwelt a huge, formless white polypous thing with luminous 
-+	eyes; and squatters whispered that bat-winged devils flew up out 
-+	of caverns in inner earth to worship it at midnight. They said it 
-+	had been there before d'Iberville, before La Salle, before the 
-+	Indians, and before even the wholesome beasts and birds of the 
-+	woods. It was nightmare itself, and to see it was to die. But it 
-+	made men dream, and so they knew enough to keep away. The present 
-+	voodoo orgy was, indeed, on the merest fringe of this abhorred area,
-+	but that location was bad enough; hence perhaps the very place of 
-+	the worship had terrified the squatters more than the shocking sounds 
-+	and incidents.
-+		[ H.P. Lovecraft, The Call of Cthulhu ]
- curse*
- 	Curses are longstanding ill-wishings which, in Fantasyland,
- 	often manifest as semisentient.  They have to be broken or
-@@ -4057,6 +4084,14 @@
- 	special process, causing it to never rust.  The tsurugi is
- 	rumored to be so sharp that it can occasionally cut
- 	opponents in half!
-+turbonerd
-+hacker
-+illiad
-+	Intelligent. Scruffy. Intense. Abstracted. Surprisingly 
-+	for a sedentary profession, more hackers run to skinny than 
-+	fat; both extremes are more common than elsewhere. Tans are 
-+	rare.
-+		[ Portrait of J. Random Hacker, by Eric S. Raymond ]
- twoflower
- guide
- 	"Rincewind!"
-diff -Nru nethack-3.4.3/dat/quest.txt nethack-3.4.3-turbonerd/dat/quest.txt
---- nethack-3.4.3/dat/quest.txt	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/dat/quest.txt	2006-06-05 19:39:39.000000000 -0400
-@@ -2817,6 +2817,215 @@
- be spoken by the %gP with awe.  You are truly an inspiration to your
- %sp!"
- %E
-+
-+#
-+#	Turbonerd
-+#
-+%Cc Ner 00001
-+You materialize in the lobby of %H.  The hum of servers 
-+is conspicuously absent and there is a faint scent of magic smoke in the 
-+air.  Something is terribly wrong here.
-+%E
-+%Cp Ner 00002
-+Once again, you find yourself at %H.
-+%E
-+%Cp Ner 00003
-+You reappear in %Hs lobby. Once again, your sense of urgency returns.
-+%E
-+%Cp Ner 00005
-+God, root, what is difference?
-+%E
-+%Cp Ner 00006
-+You will be dispatchink the Crud Puppy soon now, da?
-+%E
-+%Cp Ner 00007
-+Ebbeh...
-+%E
-+%Cp Ner 00008
-+Sleep is just a cheap caffeine substitute.
-+%E
-+%Cp Ner 00009
-+You'd better recover %o soon, or we might have to 
-+take iCant up on their acquisition offer again.
-+%E
-+%Cp Ner 00010
-+God, root, what is difference?
-+%E
-+%Cp Ner 00011
-+You think we've seen the end of Crud Puppy for sure this time?
-+%E
-+%Cp Ner 00012
-+Looks like we'll be impairing productivity for some time yet, %p.
-+%E
-+%Cp Ner 00013
-+Sleep, she is for the weak.
-+%E
-+%Cp Ner 00014
-+So shiny...
-+%E
-+%Cc Ner 00015
-+"%p! You're back! %H desperately needs your help."
-+
-+"But first, I must see if you are prepared for the quest we face."
-+%E
-+%Cp Ner 00016
-+"%p, are you prepared now to face %n?"
-+%E
-+%Cp Ner 00017
-+"Back again, %p?  Are you prepared now to save us?"
-+%E
-+%Cc Ner 00018
-+"You have betrayed us, %p.  Begone.  Your account with 
-+%H is disabled, and your IP will be blocked!"
-+%E
-+%Cc Ner 00019
-+"%p, your heart is true, but you are not yet experienced enough
-+to face %n. A mere %r would surely be devoured. Return here 
-+when you have achieved the rank of %Ra."
-+%E
-+%Cc Ner 00020
-+"You have strayed from the true way of the geek, %p!  The forces of 
-+FUD have corrupted you.  Return here when your mind is cleansed!"
-+%E
-+%Cc Ner 00021
-+"Terrible times have fallen on %H, %p, for %n
-+has taken %o. Should we fail to recover it, 
-+the net is doomed."
-+
-+"%n has made his lair within %i. Go there and destroy 
-+him, and bring %o back here."
-+
-+"May %d guide you."
-+%E
-+%Cp Ner 00025
-+"Beware of %ns bite, %p."
-+%E
-+%Cp Ner 00026
-+"Carry a source of fire with you to protect yourself."
-+%E
-+%Cp Ner 00027
-+"%ns slime can be deadly.  Beware!"
-+%E
-+%Cp Ner 00028
-+"%n has rotted out the electrical wires.  Bring a light."
-+%E
-+%Cp Ner 00029
-+"Beware of %ns bite, %p."
-+%E
-+%Cp Ner 00030
-+"Carry a source of fire with you to protect yourself."
-+%E
-+%Cp Ner 00031
-+"%ns slime can be deadly.  Beware!"
-+%E
-+%Cp Ner 00032
-+"%n has rotted out the electrical wires.  Bring a light."
-+%E
-+%Cp Ner 00033
-+"Carry a source of fire with you to protect yourself."
-+%E
-+%Cp Ner 00034
-+"%ns slime can be deadly.  Beware!"
-+%E
-+%Cc Ner 00035
-+The peeling markings on the stairwell indicate that you have reached
-+%i.
-+
-+Mold lines the walls and sludge covers the floor, but you do not yet 
-+sense %ns presence.  Something sinister is afoot.
-+%E
-+%Cp Ner 00036
-+Once again, you find yourself in %i.
-+%E
-+%Cc Ner 00040
-+Gleeful images of shiny dance about in your mind. 
-+
-+%oC is nearby.
-+%E
-+%Cp Ner 00041
-+The thoughts of shiny return to the fore of your consiousness.
-+%E
-+%Cc Ner 00050
-+So, %l has sent another %r to recover %o from 
-+me.  Good!  I will feast upon your flesh just like I have on all those before 
-+you.  The %o will be mine forever!
-+%E
-+%Cp Ner 00051
-+My masters at SCO will be pleased to hear of your demise, dweeb!
-+%E
-+%Cp Ner 00052
-+You still persue the %o?  You will die trying, fool!
-+%E
-+%Cp Ner 00053
-+Return %o and then die, cretin!
-+%E
-+%Cp Ner 00060
-+Try your best, %r.  You will never defeat me.
-+%E
-+%Cp Ner 00061
-+If you are the best %l can send me, %o will 
-+never again see the light of day!
-+%E
-+%Cp Ner 00062
-+%d has forsaken you, %r.  Give up!
-+%E
-+%Cp Ner 00063
-+Try your best, %r.  You will never defeat me.
-+%E
-+%Cp Ner 00064
-+If you are the best %l can send me, %o will 
-+never again see the light of day!
-+%E
-+%Cp Ner 00065
-+%d has forsaken you, %r.  Give up!
-+%E
-+%Cp Ner 00066
-+Try your best, %r.  You will never defeat me.
-+%E
-+%Cp Ner 00067
-+If you are the best %l can send me, %o will 
-+never again see the light of day!
-+%E
-+%Cp Ner 00068
-+%d has forsaken you, %r.  Give up!
-+%E
-+%Cp Ner 00069
-+If you are the best %l can send me, %o will 
-+never again see the light of day!
-+%E
-+%Cp Ner 00070
-+W00T!  Teh shiny!!!!!1111oneone
-+%E
-+%Cc Ner 00080
-+%ns discorporates, and his gooey remains seep through the cracks 
-+of the porous rock floor.  He is gone.
-+%E
-+%Cc Ner 00081
-+Well done, %p.  You have defeated %n and recovered 
-+%o.  But I fear it will never be safe with only 
-+myself as a guardian.
-+
-+Take %o, %p, and use it to aid you in your quest
-+for the Amulet of Yendor.  Try your hand at composition with it.  Your
-+creativity may surprise you.
-+%E
-+%Cc Ner 00082
-+No, %p, the crayon is yours now.  I will make due without it.  Use 
-+it wisely in your quest for the Amulet.
-+%E
-+%Cp Ner 00090
-+Welcome back, %p.  How goes your quest for the Amulet of Yendor?
-+%E
-+%Cc Ner 00091
-+Amazing, %p.  The Amulet of Yendor is shinier than I ever imagined.
-+For years I suspected that they may all be plastic.
-+
-+Make haste to the surface with the Amulet, %p.  If you delay, the 
-+Wizard of Yendor will only grow stronger.  From there, make your way to the
-+Astral Plane and offer the Amulet to %d.
-+
-+Godspeed, %r.
-+%E
- #
- #	Valkyrie
- #
-diff -Nru nethack-3.4.3/dat/rumors.add nethack-3.4.3-turbonerd/dat/rumors.add
---- nethack-3.4.3/dat/rumors.add	1969-12-31 19:00:00.000000000 -0500
-+++ nethack-3.4.3-turbonerd/dat/rumors.add	2006-06-05 03:50:07.000000000 -0400
-@@ -0,0 +1,6 @@
-+They say that engraving "Hastur Hastur Hastur" is probably a bad idea.
-+They say that engraving "Ia Ia Cthulhu Fhtagn" is definitely a bad idea.
-+They say that blindfolds can come in handy against Cthulhu.
-+They say that it's best to use crayon for writing unidentified scrolls.
-+They say that a little bit of lime-green ink can go a long way.
-+They say that getting bitten by a crud puppy is no fun at all.
-diff -Nru nethack-3.4.3/dat/rumors.tru nethack-3.4.3-turbonerd/dat/rumors.tru
---- nethack-3.4.3/dat/rumors.tru	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/dat/rumors.tru	2006-06-05 03:53:12.000000000 -0400
-@@ -181,6 +181,7 @@
- They say that a giant gets strong by eating right, try it!
- They say that a grid bug won't hit you when you cross it.
- They say that a lembas wafer is a very light snack.
-+They say that a little bit of lime-green ink can go a long way.
- They say that a loadstone has a strange attraction and is not bad luck.
- They say that a lock pick by any other name is still a lock pick.
- They say that a lucky amulet will block poisoned arrows.
-@@ -205,6 +206,7 @@
- They say that an unlucky hacker was once killed by an exploding tin.
- They say that antique dealers are always interested in precious stones.
- They say that bandaging one's wounds helps to keep up one's appearance.
-+They say that blindfolds can come in handy against Cthulhu.
- They say that booze can be diluted but not cancelled.
- They say that by listening carefully, you can hear a secret door!
- They say that carrots and carrot juice may improve your vision.
-@@ -217,12 +219,15 @@
- They say that eating a bat corpse will make you batty, for a while.
- They say that eating a cram ration is a smart move.
- They say that eating blue jelly is cool if you don't fight the feeling.
-+They say that engraving "Hastur Hastur Hastur" is probably a bad idea.
-+They say that engraving "Ia Ia Cthulhu Fhtagn" is definitely a bad idea.
- They say that escaping a dungeon is only the beginning of the end.
- They say that feeling an unexpected draft of air is sort of a breakthrough.
- They say that finding a cursed gray stone is always bad luck.
- They say that gaining a level is an experience that can raise your sights.
- They say that garter snake meat rarely tastes good but it's still healthy.
- They say that gauntlets of dexterity have a hidden enchanted touch.
-+They say that getting bitten by a crud puppy is no fun at all.
- They say that going to heaven is just another way of escaping the dungeon.
- They say that golden nagas are law-abiding denizens as long as you are too.
- They say that gremlins can make you feel cooler than you are now.
-@@ -242,6 +247,7 @@
- They say that it is easier to kill the Wizard than to make him stand still.
- They say that it only takes 1 zorkmid to meet the Kops.
- They say that it's a blast when you mix the right potions together.
-+They say that it's best to use crayon for writing unidentified scrolls.
- They say that it's not blind luck if you catch a glimpse of Medusa.
- They say that killing a shopkeeper brings bad luck.
- They say that monsters never step on a scare monster scroll.
-@@ -260,6 +266,7 @@
- They say that only chaotics can kill shopkeepers and get away with it.
- They say that only female monsters can lay eggs.
- They say that playing a horn really bad is really good.
-+They say that prayer at an altar can sometimes make the water there holy.
- They say that rubbing a glowing potion does not make it a magic lamp.
- They say that scalpels become dull because they're not athames.
- They say that shopkeepers don't like pick-axes.
-@@ -304,7 +311,6 @@
- They say that throwing glass gems is the same as throwing rocks.
- They say that trespassing a boulder is probably beneath you.
- They say that unicorns are fond of precious gems.
--They say that prayer at an altar can sometimes make the water there holy.
- They say that what goes down the drain might come back up.
- They say that wielded, a long sword named Fire Brand makes you feel cooler.
- They say that wielded, a long sword named Frost Brand makes you hot stuff.
-diff -Nru nethack-3.4.3/doc/Guidebook.mn nethack-3.4.3-turbonerd/doc/Guidebook.mn
---- nethack-3.4.3/doc/Guidebook.mn	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/doc/Guidebook.mn	2006-06-05 20:30:08.000000000 -0400
-@@ -115,6 +115,9 @@
- a credit card, lots of food, some maps, and an expensive camera.  Most
- monsters don't like being photographed.
- .pg
-+\fITurbonerds\fP dash about on a caffeine rush, and start out with a 
-+hefty cluebat, a sturdy pair of boots, and a few scrolls.
-+.pg               
- \fIValkyries\fP are hardy warrior women.  Their upbringing in the harsh
- Northlands makes them strong, inures them to extremes of cold, and instills
- in them stealth and cunning.
-diff -Nru nethack-3.4.3/doc/Guidebook.tex nethack-3.4.3-turbonerd/doc/Guidebook.tex
---- nethack-3.4.3/doc/Guidebook.tex	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/doc/Guidebook.tex	2006-06-05 20:27:11.000000000 -0400
-@@ -176,6 +176,10 @@
- a credit card, lots of food, some maps, and an expensive camera.  Most
- monsters don't like being photographed.
- %.pg
-+\item[\bb{Turbonerds}]%
-+dash about on a caffeine rush, and start out with a hefty cluebat, a sturdy
-+pair of boots, and a few scrolls.
-+%.pg
- %
- \item[\bb{Valkyries}]%
- are hardy warrior women.  Their upbringing in the harsh
-diff -Nru nethack-3.4.3/doc/Guidebook.txt nethack-3.4.3-turbonerd/doc/Guidebook.txt
---- nethack-3.4.3/doc/Guidebook.txt	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/doc/Guidebook.txt	2006-06-05 20:28:52.000000000 -0400
-@@ -147,7 +147,10 @@
-                Tourists start out with lots of gold (suitable for  shopping
-           with),  a  credit card, lots of food, some maps, and an expensive
-           camera.  Most monsters don't like being photographed.
--
-+	       
-+               Turbonerds dash about on a caffeine rush, and start out with a 
-+          hefty cluebat, a sturdy pair of boots, and a few scrolls.
-+               
-                Valkyries are hardy warrior women.  Their upbringing in  the
-           harsh  Northlands  makes  them strong, inures them to extremes of
-           cold, and instills in them stealth and cunning.
-diff -Nru nethack-3.4.3/include/artifact.h nethack-3.4.3-turbonerd/include/artifact.h
---- nethack-3.4.3/include/artifact.h	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/include/artifact.h	2006-06-04 00:11:40.000000000 -0400
-@@ -34,7 +34,9 @@
- #define SPFX_DBONUS 0x1F00000L	/* attack bonus mask */
- #define SPFX_XRAY   0x2000000L	/* gives X-RAY vision to player */
- #define SPFX_REFLECT 0x4000000L /* Reflection */
--
-+#ifdef TURBONERD
-+#define SPFX_POLYCTRL 0x8000000L /* Polymorph Control */
-+#endif
- 
- struct artifact {
- 	short	    otyp;
-@@ -60,5 +62,7 @@
- #define CREATE_PORTAL	(LAST_PROP+7)
- #define ENLIGHTENING	(LAST_PROP+8)
- #define CREATE_AMMO	(LAST_PROP+9)
--
-+#ifdef TURBONERD
-+#define POLYSELF	(LAST_PROP+10)
-+#endif
- #endif /* ARTIFACT_H */
-diff -Nru nethack-3.4.3/include/artilist.h nethack-3.4.3-turbonerd/include/artilist.h
---- nethack-3.4.3/include/artilist.h	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/include/artilist.h	2006-06-04 00:28:45.000000000 -0400
-@@ -230,6 +230,12 @@
- 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_EREGEN|SPFX_HSPDAM), 0,
- 	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
- 	CREATE_PORTAL,	A_NEUTRAL, PM_WIZARD, NON_PM, 4000L ),
-+#ifdef TURBONERD
-+A("The Lime-Green Crayon of Engfeh", MAGIC_MARKER,
-+	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_POLYCTRL), 0,
-+	NO_ATTK,	NO_DFNS,	NO_CARY,
-+	POLYSELF,	A_LAWFUL, PM_TURBONERD, NON_PM, 3500L ),
-+#endif
- 
- /*
-  *  terminator; otyp must be zero
-diff -Nru nethack-3.4.3/include/config.h nethack-3.4.3-turbonerd/include/config.h
---- nethack-3.4.3/include/config.h	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/include/config.h	2006-06-05 19:55:07.000000000 -0400
-@@ -325,6 +325,7 @@
- #define SEDUCE		/* Succubi/incubi seduction, by KAA, suggested by IM */
- #define STEED		/* Riding steeds */
- #define TOURIST		/* Tourist players with cameras and Hawaiian shirts */
-+#define TURBONERD
- /* difficulty */
- #define ELBERETH	/* Engraving the E-word repels monsters */
- /* I/O */
-diff -Nru nethack-3.4.3/include/patchlevel.h nethack-3.4.3-turbonerd/include/patchlevel.h
---- nethack-3.4.3/include/patchlevel.h	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/include/patchlevel.h	2006-06-06 01:55:39.000000000 -0400
-@@ -13,7 +13,7 @@
-  * Incrementing EDITLEVEL can be used to force invalidation of old bones
-  * and save files.
-  */
--#define EDITLEVEL	0
-+#define EDITLEVEL	0xf00b13 /* Turbonerd patch */
- 
- #define COPYRIGHT_BANNER_A \
- "NetHack, Copyright 1985-2003"
-diff -Nru nethack-3.4.3/include/qtext.h nethack-3.4.3-turbonerd/include/qtext.h
---- nethack-3.4.3/include/qtext.h	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/include/qtext.h	2006-06-05 19:55:54.000000000 -0400
-@@ -5,7 +5,7 @@
- #ifndef QTEXT_H
- #define QTEXT_H
- 
--#define N_HDR	16		/* Maximum number of categories */
-+#define N_HDR	32		/* Maximum number of categories */
- 				/* (i.e., num roles + 1) */
- #define LEN_HDR 3		/* Maximum length of a category name */
- 
-diff -Nru nethack-3.4.3/src/artifact.c nethack-3.4.3-turbonerd/src/artifact.c
---- nethack-3.4.3/src/artifact.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/artifact.c	2006-06-04 00:54:17.000000000 -0400
-@@ -466,6 +466,12 @@
- 	    if (on) EHalf_physical_damage |= wp_mask;
- 	    else EHalf_physical_damage &= ~wp_mask;
- 	}
-+#ifdef TURBONERD
-+	if (spfx & SPFX_POLYCTRL) {
-+	    if (on) EPolymorph_control |= wp_mask;
-+	    else EPolymorph_control &= ~wp_mask;
-+        }
-+#endif
- 	if (spfx & SPFX_XRAY) {
- 	    /* this assumes that no one else is using xray_range */
- 	    if (on) u.xray_range = 3;
-@@ -1349,6 +1355,11 @@
- 				       aobjnam(otmp, "fall"), (const char *)0);
- 	    break;
- 	  }
-+#ifdef TURBONERD
-+	case POLYSELF:
-+	  polyself(FALSE);
-+	  break;
-+#endif
- 	}
-     } else {
- 	long eprop = (u.uprops[oart->inv_prop].extrinsic ^= W_ARTI),
-diff -Nru nethack-3.4.3/src/attrib.c nethack-3.4.3-turbonerd/src/attrib.c
---- nethack-3.4.3/src/attrib.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/attrib.c	2006-06-06 01:10:52.000000000 -0400
-@@ -80,6 +80,12 @@
- 		     {	20, &(HPoison_resistance), "hardy", "" },
- 		     {	 0, 0, 0, 0 } },
- 
-+#ifdef TURBONERD	
-+	ner_abil[] = { { 1, &(HFast), "", "" },
-+ 		     { 5, &(HSleep_resistance), "wired", "drowsy" },
-+		     { 0, 0, 0, 0 } },
-+#endif
-+
- 	val_abil[] = { {	 1, &(HCold_resistance), "", "" },
- 		     {	 1, &(HStealth), "", "" },
- 		     {   7, &(HFast), "quick", "slow" },
-@@ -554,6 +560,9 @@
- #ifdef TOURIST
- 	case PM_TOURIST:        abil = tou_abil;	break;
- #endif
-+#ifdef TURBONERD
-+	case PM_TURBONERD:	abil = ner_abil;	break;
-+#endif
- 	case PM_VALKYRIE:       abil = val_abil;	break;
- 	case PM_WIZARD:         abil = wiz_abil;	break;
- 	default:                abil = 0;		break;
-diff -Nru nethack-3.4.3/src/do_name.c nethack-3.4.3-turbonerd/src/do_name.c
---- nethack-3.4.3/src/do_name.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/do_name.c	2006-06-04 01:09:33.000000000 -0400
-@@ -934,9 +934,15 @@
- 	"Barney the dinosaur",			/* saccharine kiddy TV */
- 	"Morgoth",				/* Angband */
- 	"Vorlon",				/* Babylon 5 */
--	"questing beast",		/* King Arthur */
-+	"questing beast",			/* King Arthur */
- 	"Predator",				/* Movie */
--	"mother-in-law"				/* common pest */
-+	"mother-in-law"	 			/* common pest */
-+#ifdef TURBONERD
-+	,"evilphish", "Dark Side Dave", "Artur", "Mr. Cola",
-+	"BSD daemon", "EULA", "distilled USENET bitterness",
-+	"MSN butterfly", "inflatable llama", "grue", "flying pig",
-+	"smiling man", "drop bear" /* User Friendly gags */
-+#endif
- };
- 
- 
-diff -Nru nethack-3.4.3/src/dog.c nethack-3.4.3-turbonerd/src/dog.c
---- nethack-3.4.3/src/dog.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/dog.c	2006-06-04 00:50:26.000000000 -0400
-@@ -152,6 +152,9 @@
- 	    if(Role_if(PM_SAMURAI)) petname = "Hachi";     /* Shibuya Station */
- 	    if(Role_if(PM_BARBARIAN)) petname = "Idefix";  /* Obelix */
- 	    if(Role_if(PM_RANGER)) petname = "Sirius";     /* Orion's dog */
-+#ifdef TURBONERD
-+	    if(Role_if(PM_TURBONERD)) petname = "Cat Five";
-+#endif
- 	}
- 
- 	mtmp = makemon(&mons[pettype], u.ux, u.uy, MM_EDOG);
-diff -Nru nethack-3.4.3/src/engrave.c nethack-3.4.3-turbonerd/src/engrave.c
---- nethack-3.4.3/src/engrave.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/engrave.c	2006-06-05 20:57:32.000000000 -0400
-@@ -1108,6 +1108,23 @@
- 	    if (!Blind) Your(vision_clears);
- 	}
- 
-+#ifdef TURBONERD
-+	if(strstri(buf, "Ia Ia Cthulhu Fhtagn") &&
-+	   !(mvitals[PM_CTHULHU].mvflags & G_GONE)) {
-+	    if(!(Blind)) pline("The writing glows eerily, then fades...");
-+	    del_engr_at(u.ux, u.uy);
-+	    You("have summoned %s!", a_monnam(
-+		makemon(&mons[PM_CTHULHU], u.ux, u.uy, NO_MM_FLAGS)));
-+	    exercise(A_WIS, FALSE);
-+	} else if(strstri(buf, "Hastur Hastur Hastur") &&
-+		  !(mvitals[PM_HASTUR].mvflags & G_GONE)) {
-+	    if(!(Blind)) pline("The writing glows eerily, then fades...");
-+            del_engr_at(u.ux, u.uy);
-+            You("have summoned %s!", a_monnam(
-+                makemon(&mons[PM_HASTUR], u.ux, u.uy, NO_MM_FLAGS)));
-+	    exercise(A_WIS, FALSE);
-+	}
-+#endif
- 	return(1);
- }
- 
-diff -Nru nethack-3.4.3/src/mhitu.c nethack-3.4.3-turbonerd/src/mhitu.c
---- nethack-3.4.3/src/mhitu.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/mhitu.c	2006-06-04 16:46:15.000000000 -0400
-@@ -2031,6 +2031,60 @@
- 		    stop_occupation();
- 		break;
- #endif
-+#ifdef TURBONERD
-+	    case AD_HALU:
-+		if(!mtmp->mcan && canseemon(mtmp)) {
-+		   pline("%s gaze is maddening!", s_suffix(Monnam(mtmp)));
-+		   make_hallucinated(HHallucination + 100,FALSE,0L);
-+		}
-+		break;
-+
-+	    case AD_DRIN:
-+		if(!mtmp->mcan && canseemon(mtmp)) {
-+		  pline("As you behold %s, your powers of reason fade.",  
-+			Monnam(mtmp));
-+		  if (!uarmh || uarmh->otyp != DUNCE_CAP) {
-+                    /* No such thing as mindless players... */
-+                    if (ABASE(A_INT) <= ATTRMIN(A_INT)) {
-+                        int lifesaved = 0;
-+                        struct obj *wore_amulet = uamul;
-+
-+                        while(1) {
-+                            /* avoid looping on "die(y/n)?" */
-+                            if (lifesaved && (discover || wizard)) {
-+                                if (wore_amulet && !uamul) {
-+                                    /* used up AMULET_OF_LIFE_SAVING; still
-+                                       subject to dying from brainlessness */
-+                                    wore_amulet = 0;
-+                                } else {
-+                                    /* explicitly chose not to die;
-+                                       arbitrarily boost intelligence */
-+                                    ABASE(A_INT) = ATTRMIN(A_INT) + 2;
-+                                    You_feel("like a scarecrow.");
-+                                    break;
-+                                }
-+                            }
-+
-+                            if (lifesaved)
-+                                pline("Unfortunately your mind is still gone.");
-+                            else
-+                                Your("last bit of sanity fades away.");
-+                            killer = "the Great Old One's maddening image";
-+                            killer_format = KILLED_BY;
-+                            done(DIED);
-+                            lifesaved++;
-+                        }
-+                    }
-+                
-+                    /* adjattrib gives dunce cap message when appropriate */
-+                    (void) adjattrib(A_INT, -rnd(2), TRUE);
-+                    forget_levels(25);      /* lose memory of 25% of levels */
-+                    forget_objects(25);     /* lose memory of 25% of objects */
-+                    exercise(A_WIS, FALSE);
-+		}
-+	      }
-+	      break;
-+#endif
- 	    default: impossible("Gaze attack %d?", mattk->adtyp);
- 		break;
- 	}
-diff -Nru nethack-3.4.3/src/monst.c nethack-3.4.3-turbonerd/src/monst.c
---- nethack-3.4.3/src/monst.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/monst.c	2006-06-04 17:17:06.000000000 -0400
-@@ -2710,6 +2710,18 @@
- 	M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|
- 	  M2_PRINCE|M2_MALE|M2_COLLECT,
- 	M3_WANTSAMUL|M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
-+#ifdef TURBONERD
-+    MON("Hastur", S_DEMON,
-+	LVL(80, 9, -3, 85, -20), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
-+	A(ATTK(AT_BITE, AD_CORR, 4, 4), ATTK(AT_BITE, AD_ENCH, 4, 4),
-+	  ATTK(AT_BITE, AD_ACID, 4, 4), ATTK(AT_ENGL, AD_ACID, 6, 6),
-+	  NO_ATTK, NO_ATTK),
-+	  SIZ(3000, 1000, 0, MS_GURGLE, MZ_GIGANTIC), MR_ACID|MR_POISON, 0,
-+	M1_AMORPHOUS|M1_NOEYES|M1_NOHANDS|M1_NOLIMBS|M1_NOHEAD|M1_REGEN|
-+	M1_SEE_INVIS|M1_METALLIVORE,
-+	M2_DEMON|M2_PRINCE|M2_NEUTER|M2_PNAME|M2_HOSTILE|M2_NASTY,
-+	M3_INFRAVISIBLE, HI_LORD),
-+#endif
-     MON("Baalzebub", S_DEMON,
- 	LVL(89, 9, -5, 85, 20), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
- 	A(ATTK(AT_BITE, AD_DRST, 2, 6), ATTK(AT_GAZE, AD_STUN, 2, 6),
-@@ -2738,6 +2750,20 @@
- 	M2_NOPOLY|M2_DEMON|M2_STALK|M2_HOSTILE|M2_PNAME|M2_NASTY|
- 	  M2_PRINCE|M2_MALE,
- 	M3_WANTSAMUL|M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
-+#ifdef TURBONERD
-+    MON("Cthulhu", S_DEMON,
-+	LVL(120, 12, -10, 90, -20), (G_HELL|G_NOCORPSE|G_NOGEN|G_UNIQ),
-+	A(ATTK(AT_GAZE, AD_DRIN, 0, 0), ATTK(AT_GAZE, AD_HALU, 0, 0),
-+          ATTK(AT_BITE, AD_DGST, 6, 6), ATTK(AT_MAGC, AD_CLRC, 0, 0),
-+	  ATTK(AT_MAGC, AD_CLRC, 0, 0), NO_ATTK),
-+        SIZ(1500, 500, 0, MS_LAUGH, MZ_LARGE), 
-+	MR_FIRE|MR_COLD|MR_SLEEP|MR_ELEC|MR_POISON|MR_ACID|MR_STONE, 0,
-+	M1_FLY|M1_SWIM|M1_AMPHIBIOUS|M1_SLITHY|M1_THICK_HIDE|M1_TPORT|
-+	M1_TPORT_CNTRL|M1_OMNIVORE|M1_SEE_INVIS,
-+	M2_NOPOLY|M2_DEMON|M2_PRINCE|M2_MALE|M2_PNAME|M2_STALK|M2_NASTY|
-+	M2_STRONG|M2_MAGIC,
-+	M3_INFRAVISIBLE|M3_INFRAVISION, HI_LORD),
-+#endif
- 	/* Riders -- the Four Horsemen of the Apocalypse ("War" == player)
- 	 */
-     MON("Death", S_DEMON,
-@@ -3021,6 +3047,15 @@
- 	M1_HUMANOID|M1_OMNIVORE,
- 	M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
- #endif
-+#ifdef TURBONERD
-+    MON("turbonerd", S_HUMAN,
-+        LVL(10, 12, 10, 1, 0), G_NOGEN,
-+        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
-+          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-+        SIZ(WT_HUMAN, 400, 0, MS_HUMANOID, MZ_HUMAN), 0, 0,
-+        M1_HUMANOID|M1_OMNIVORE,
-+        M2_NOPOLY|M2_HUMAN|M2_STRONG|M2_COLLECT, M3_INFRAVISIBLE, HI_DOMESTIC),
-+#endif
-     MON("valkyrie", S_HUMAN,
- 	LVL(10, 12, 10, 1, -1), G_NOGEN,
- 	A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
-@@ -3167,6 +3202,17 @@
- 	  M2_COLLECT|M2_MAGIC,
- 	M3_CLOSE|M3_INFRAVISIBLE, HI_DOMESTIC),
- #endif
-+#ifdef TURBONERD
-+    MON("Illiad", S_HUMAN,
-+        LVL(20, 12, 10, 20, 0), (G_NOGEN|G_UNIQ),
-+        A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_WEAP, AD_PHYS, 1, 6),
-+          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-+        SIZ(WT_HUMAN, 400, 0, MS_LEADER, MZ_HUMAN), 0, 0,
-+        M1_HUMANOID|M1_OMNIVORE,
-+        M2_NOPOLY|M2_HUMAN|M2_PNAME|M2_PEACEFUL|M2_STRONG|M2_MALE|
-+          M2_COLLECT|M2_MAGIC,
-+        M3_CLOSE|M3_INFRAVISIBLE, HI_DOMESTIC),
-+#endif
-     MON("Norn", S_HUMAN,
- 	LVL(20, 12, 0, 80, 0), (G_NOGEN|G_UNIQ),
- 	A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 6),
-@@ -3309,6 +3355,16 @@
- 	 * Note: the Master of Thieves was defined above.
- 	 */
- #endif
-+#ifdef TURBONERD
-+    MON("Crud Puppy", S_PUDDING,
-+	LVL(20, 12, 5, 50, -13), (G_NOGEN|G_UNIQ|G_NOCORPSE),
-+	A(ATTK(AT_CLAW, AD_PHYS, 2, 10), ATTK(AT_BITE, AD_SLIM, 2, 8),
-+	  ATTK(AT_TUCH, AD_STCK, 2, 8), NO_ATTK, NO_ATTK, NO_ATTK),
-+        SIZ(100, 0, 0, MS_NEMESIS, MZ_SMALL), MR_POISON|MR_ACID, 0,
-+	M1_AMORPHOUS|M1_CLING|M1_NOHANDS|M1_REGEN|M1_TPORT|M1_TPORT_CNTRL,
-+	M2_NOPOLY|M2_DEMON|M2_LORD|M2_MALE|M2_HOSTILE|M2_STALK|M2_NASTY|
-+	M2_PNAME, M3_WANTSARTI|M3_WAITFORU, HI_LORD),
-+#endif 
-     MON("Lord Surtur", S_GIANT,
- 	LVL(15, 12, 2, 50, 12), (G_NOGEN|G_UNIQ),
- 	A(ATTK(AT_WEAP, AD_PHYS, 2,10), ATTK(AT_WEAP, AD_PHYS, 2,10),
-@@ -3439,6 +3495,16 @@
- 	M2_NOPOLY|M2_HUMAN|M2_PEACEFUL | M2_STRONG|M2_COLLECT|M2_MAGIC,
- 	M3_INFRAVISIBLE, HI_DOMESTIC),
- #endif
-+#ifdef TURBONERD
-+    MON("hacker", S_HUMAN,
-+	LVL(5,12,10,30,0), G_NOGEN,
-+	A(ATTK(AT_WEAP, AD_PHYS, 1, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
-+          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-+        SIZ(WT_HUMAN, 400, 0, MS_GUARDIAN, MZ_HUMAN), 0, 0,
-+        M1_HUMANOID|M1_OMNIVORE,
-+        M2_NOPOLY|M2_HUMAN|M2_PEACEFUL|M2_STRONG|M2_COLLECT|M2_MAGIC,
-+        M3_INFRAVISIBLE, HI_DOMESTIC),
-+#endif
-     MON("warrior", S_HUMAN,
- 	LVL(5, 12, 10, 10, -1), G_NOGEN,
- 	A(ATTK(AT_WEAP, AD_PHYS, 1, 8), ATTK(AT_WEAP, AD_PHYS, 1, 8),
-diff -Nru nethack-3.4.3/src/objects.c nethack-3.4.3-turbonerd/src/objects.c
---- nethack-3.4.3/src/objects.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/objects.c	2006-06-05 19:59:04.000000000 -0400
-@@ -236,8 +236,15 @@
- WEAPON("war hammer", (char *)0,
- 	1, 0, 0, 15, 50,  5,  4,  4, 0, B,   P_HAMMER, IRON, HI_METAL),
- 						/* +1 small */
-+#ifndef TURBONERD
- WEAPON("club", (char *)0,
- 	1, 0, 0, 12, 30,  3,  6,  3, 0, B,   P_CLUB, WOOD, HI_WOOD),
-+#else
-+WEAPON("club", (char *)0,
-+	1, 0, 0, 10, 30,  3,  6,  3, 0, B,   P_CLUB, WOOD, HI_WOOD),
-+WEAPON("cluebat", (char *)0,
-+	1, 0, 0, 2, 20,  50,  6,  8, 1, B,   P_CLUB, WOOD, HI_WOOD),
-+#endif  
- #ifdef KOPS
- WEAPON("rubber hose", (char *)0,
- 	1, 0, 0,  0, 20,  3,  4,  3, 0, B,   P_WHIP, PLASTIC, CLR_BROWN),
-diff -Nru nethack-3.4.3/src/quest.c nethack-3.4.3-turbonerd/src/quest.c
---- nethack-3.4.3/src/quest.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/quest.c	2006-06-05 19:29:25.000000000 -0400
-@@ -96,7 +96,7 @@
- ok_to_quest()
- {
- 	return((boolean)((Qstat(got_quest) || Qstat(got_thanks)))
--			&& (is_pure(FALSE) > 0));
-+			&& (is_pure(TRUE) > 0));
- }
- 
- STATIC_OVL boolean
-diff -Nru nethack-3.4.3/src/questpgr.c nethack-3.4.3-turbonerd/src/questpgr.c
---- nethack-3.4.3/src/questpgr.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/questpgr.c	2006-06-05 19:30:04.000000000 -0400
-@@ -11,7 +11,7 @@
- 
- #define QTEXT_FILE	"quest.dat"
- 
--/* #define DEBUG */	/* uncomment for debugging */
-+/* #define DEBUG */ 	/* uncomment for debugging */
- 
- static void FDECL(Fread, (genericptr_t,int,int,dlb *));
- STATIC_DCL struct qtmsg * FDECL(construct_qtlist, (long));
-diff -Nru nethack-3.4.3/src/read.c nethack-3.4.3-turbonerd/src/read.c
---- nethack-3.4.3/src/read.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/read.c	2006-06-04 00:45:57.000000000 -0400
-@@ -1110,12 +1110,24 @@
- 			(!confused || sobj->cursed ? ALL_MAP : 0) );
- 		if (Hallucination) /* Ommmmmm! */
- 			Your("mind releases itself from mundane concerns.");
-+#ifdef TURBONERD
-+		else if (!strncmpi(plname, "Miranda", 4))
-+#else
- 		else if (!strncmpi(plname, "Maud", 4))
-+#endif
- 			pline("As your mind turns inward on itself, you forget everything else.");
- 		else if (rn2(2))
-+#ifdef TURBONERD
-+			pline("Who was that Miranda person anyway?");
-+#else
- 			pline("Who was that Maud person anyway?");
-+#endif
- 		else
-+#ifdef TURBONERD
-+		pline("Thinking of Miranda you forget everything else.");
-+#else
- 			pline("Thinking of Maud you forget everything else.");
-+#endif
- 		exercise(A_WIS, FALSE);
- 		break;
- 	case SCR_FIRE:
-diff -Nru nethack-3.4.3/src/role.c nethack-3.4.3-turbonerd/src/role.c
---- nethack-3.4.3/src/role.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/role.c	2006-06-04 00:30:14.000000000 -0400
-@@ -326,6 +326,31 @@
- 	0, 5, 1, 2, 10, A_INT, SPE_CHARM_MONSTER,   -4
- },
- #endif
-+#ifdef TURBONERD
-+{	{"Turbonerd", 0}, {
-+	{"Newbie", 0},
-+	{"Random", 0},
-+	{"Webdork", 0},
-+	{"Code Monkey", 0},
-+	{"Superuser", 0},
-+	{"Hacker", 0},
-+	{"Guru", 0},
-+	{"Source of All Good Bits", 0},
-+	{"Alpha Geek", 0} },
-+	"Richard Stallman", "Linus Torvalds", "Eric Raymond",
-+	"Ner", "Columbia Internet", "the sub-basement",
-+	PM_TURBONERD, NON_PM, PM_KITTEN,
-+	PM_ILLIAD, PM_HACKER, PM_CRUD_PUPPY,
-+	PM_GIANT_BEETLE, PM_SOLDIER_ANT, S_ANT, S_SPIDER,
-+	ART_LIME_GREEN_CRAYON_OF_ENGFE,
-+	MH_HUMAN | ROLE_MALE | ROLE_LAWFUL | ROLE_NEUTRAL | ROLE_CHAOTIC,
-+	{ 7, 10, 7, 9, 7, 7},
-+	{10, 30, 10, 20, 20, 10},
-+	{12, 0, 0, 9, 2, 1 },
-+	{3, 2, 0, 2, 0, 2}, 14,
-+	0, 0, 3, 0, 3, A_INT, SPE_HASTE_SELF, -4
-+},
-+#endif
- {	{"Valkyrie", 0}, {
- 	{"Stripling",   0},
- 	{"Skirmisher",  0},
-diff -Nru nethack-3.4.3/src/u_init.c nethack-3.4.3-turbonerd/src/u_init.c
---- nethack-3.4.3/src/u_init.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/u_init.c	2006-06-04 03:07:32.000000000 -0400
-@@ -150,6 +150,16 @@
- 	{ 0, 0, 0, 0, 0 }
- };
- #endif
-+#ifdef TURBONERD
-+static struct trobj Turbonerd[] = {
-+	{ CLUEBAT, 0, WEAPON_CLASS, 1, UNDEF_BLESS },
-+	{ T_SHIRT, 2, ARMOR_CLASS, 1, UNDEF_BLESS },
-+	{ LOW_BOOTS, 0, ARMOR_CLASS, 1, UNDEF_BLESS },
-+	{ UNDEF_TYP, UNDEF_SPE, SCROLL_CLASS, 1, UNDEF_BLESS },
-+	{ UNDEF_TYP, UNDEF_SPE, SCROLL_CLASS, 1, UNDEF_BLESS },
-+	{ 0, 0, 0, 0, 0 }
-+};	
-+#endif
- static struct trobj Valkyrie[] = {
- 	{ LONG_SWORD, 1, WEAPON_CLASS, 1, UNDEF_BLESS },
- 	{ DAGGER, 0, WEAPON_CLASS, 1, UNDEF_BLESS },
-@@ -453,6 +463,25 @@
- };
- #endif /* TOURIST */
- 
-+#ifdef TURBONERD
-+static const struct def_skill Skill_Turbonerd[] = {
-+    { P_DAGGER, P_SKILLED },		{ P_KNIFE, P_SKILLED },
-+    { P_SHORT_SWORD, P_SKILLED },	{ P_LONG_SWORD, P_BASIC },
-+    { P_SCIMITAR, P_BASIC },		{ P_SABER, P_BASIC },
-+    { P_CLUB, P_EXPERT },		{ P_QUARTERSTAFF, P_SKILLED },
-+    { P_HAMMER, P_SKILLED },		{ P_DART, P_SKILLED },
-+    { P_BOW, P_SKILLED },		{ P_CROSSBOW, P_SKILLED },
-+    { P_SHURIKEN, P_SKILLED },		{ P_BOOMERANG, P_BASIC },
-+    { P_UNICORN_HORN, P_BASIC },	{ P_PICK_AXE, P_BASIC },
-+    { P_ATTACK_SPELL, P_SKILLED },	{ P_ENCHANTMENT_SPELL, P_SKILLED },
-+    { P_DIVINATION_SPELL, P_BASIC },    { P_ESCAPE_SPELL, P_EXPERT },
-+    { P_MATTER_SPELL, P_SKILLED },	{ P_HEALING_SPELL, P_BASIC },
-+    { P_TWO_WEAPON_COMBAT, P_SKILLED },
-+    { P_BARE_HANDED_COMBAT, P_EXPERT },
-+    { P_NONE, 0 }
-+};
-+#endif
-+
- static const struct def_skill Skill_V[] = {
-     { P_DAGGER, P_EXPERT },		{ P_AXE, P_EXPERT },
-     { P_PICK_AXE, P_SKILLED },		{ P_SHORT_SWORD, P_SKILLED },
-@@ -716,6 +745,12 @@
- 		skill_init(Skill_T);
- 		break;
- #endif
-+#ifdef TURBONERD
-+	case PM_TURBONERD:
-+		ini_inv(Turbonerd);
-+		skill_init(Skill_Turbonerd);
-+		break;
-+#endif
- 	case PM_VALKYRIE:
- 		ini_inv(Valkyrie);
- 		if(!rn2(6)) ini_inv(Lamp);
-diff -Nru nethack-3.4.3/src/write.c nethack-3.4.3-turbonerd/src/write.c
---- nethack-3.4.3/src/write.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/src/write.c	2006-06-04 22:37:56.000000000 -0400
-@@ -12,7 +12,6 @@
- cost(otmp)
- register struct obj *otmp;
- {
--
- 	if (otmp->oclass == SPBOOK_CLASS)
- 		return(10 * objects[otmp->otyp].oc_level);
- 
-@@ -166,6 +165,9 @@
- 
- 	/* see if there's enough ink */
- 	basecost = cost(new_obj);
-+#ifdef TURBONERD
-+	if(pen->oartifact == ART_LIME_GREEN_CRAYON_OF_ENGFE) basecost=6;
-+#endif
- 	if(pen->spe < basecost/2)  {
- 		Your("marker is too dry to write that!");
- 		obfree(new_obj, (struct obj *) 0);
-@@ -198,6 +200,10 @@
- 	/* can't write if we don't know it - unless we're lucky */
- 	if(!(objects[new_obj->otyp].oc_name_known) &&
- 	   !(objects[new_obj->otyp].oc_uname) &&
-+#ifdef TURBONERD
-+	   !(pen->oartifact ==
-+		ART_LIME_GREEN_CRAYON_OF_ENGFE) &&
-+#endif
- 	   (rnl(Role_if(PM_WIZARD) ? 3 : 15))) {
- 		You("%s to write that!", by_descr ? "fail" : "don't know how");
- 		/* scrolls disappear, spellbooks don't */
-diff -Nru nethack-3.4.3/sys/amiga/Makefile.agc nethack-3.4.3-turbonerd/sys/amiga/Makefile.agc
---- nethack-3.4.3/sys/amiga/Makefile.agc	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/amiga/Makefile.agc	2006-06-05 20:23:28.000000000 -0400
-@@ -265,9 +265,13 @@
- 	$(SLIB)Wiz-strt.lev
- WDFILES= $(SLIB)Wiz-goal.lev $(WDFILES1)
- 
-+TUFILES1= $(SLIB)Ner-fila.lev $(SLIB)Ner-filb.lev $(SLIB)Ner-loca.lev \
-+	$(SLIB)Ner-start.lev
-+TUFILES= $(SLIB)Ner-goal.lev $(TUFILES1)
-+
- XDFILES=	$(ADFILES) $(BDFILES) $(CDFILES) $(HDFILES) $(KDFILES) \
- 		$(MDFILES) $(PDFILES) $(RDFILES) $(RANFILES) $(SDFILES) $(TDFILES) \
--		$(VDFILES) $(WDFILES)
-+		$(VDFILES) $(WDFILES) $(TUFILES)
- 
- SOUNDFILES= \
- 	$(SBIN)cvtsnd \
-@@ -410,6 +414,7 @@
- #	-delete $(TDFILES)
- #	-delete $(VDFILES)
- #	-delete $(WDFILES)
-+#	-delete $(TUFILES)
- 	-delete $(I)onames.h $(I)pm.h $(I)date.h
- 	-delete $(NHS)tile.c $(NHS)monstr.c
- 	-delete $(I)tile.h 
-@@ -880,6 +885,10 @@
- 
- $(SLIB)Wiz-goal.lev:	$(DAT)Wizard.des $(SBIN)lev_comp
- 
-+$(TUFILES1):	$(SLIB)Ner-goal.lev
-+
-+$(SLIB)Ner-goal.lev:	$(DAT)Turbonerd.des $(SBIN)lev_comp
-+
- $(SLIB)dungeon:  $(DAT)dungeon.def $(SBIN)makedefs $(SBIN)dgn_comp
- 	$(SBIN)makedefs -e
- 	$(SBIN)dgn_comp $(DAT)dungeon.pdf
-diff -Nru nethack-3.4.3/sys/amiga/Makefile.ami nethack-3.4.3-turbonerd/sys/amiga/Makefile.ami
---- nethack-3.4.3/sys/amiga/Makefile.ami	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/amiga/Makefile.ami	2006-06-05 20:23:05.000000000 -0400
-@@ -472,9 +472,14 @@
- 	$(SLIB)Wiz-strt.lev
- WDFILES= $(SLIB)Wiz-goal.lev $(WDFILES1)
- 
-+TUFILES1= $(SLIB)Ner-fila.lev $(SLIB)Ner-filb.lev $(SLIB)Ner-loca.lev \
-+	$(SLIB)Ner-strt.lev
-+TUFILES= $(SLIB)Ner-goal.lev $(TUFILES1)
-+
-+
- XDFILES=	$(ADFILES) $(BDFILES) $(CDFILES) $(HDFILES) $(KDFILES) \
- 		$(MDFILES) $(PDFILES) $(RDFILES) $(RANFILES) $(SDFILES) $(TDFILES) \
--		$(VDFILES) $(WDFILES)
-+		$(VDFILES) $(WDFILES) $(TUFILES)
- 
- SOUNDFILES= \
- 	$(SBIN)cvtsnd \
-@@ -638,6 +643,7 @@
- #	-delete $(TDFILES)
- #	-delete $(VDFILES)
- #	-delete $(WDFILES)
-+#	-delete $(TUFILES)
- 	-delete $(I)onames.h $(I)pm.h $(I)date.h
- 	-delete $(NHS)tile.c $(NHS)monstr.c
- 	-delete $(I)tile.h 
-@@ -1203,6 +1209,13 @@
- #SFD_INSTEAD $(SBIN)lev_comp $(DAT)Wizard.des
- #none
- 
-+$(TUFILES1):	$(SLIB)Ner-goal.lev
-+
-+$(SLIB)Ner-goal.lev:	$(DAT)Turbonerd.des $(SBIN)lev_comp
-+#SFD_INSTEAD $(SBIN)lev_comp $(DAT)Turbonerd.des
-+#none
-+
-+
- $(SLIB)dungeon:  $(DAT)dungeon.def $(SBIN)makedefs $(SBIN)dgn_comp
- 	$(SBIN)makedefs -e
- 	$(SBIN)dgn_comp $(DAT)dungeon.pdf
-diff -Nru nethack-3.4.3/sys/msdos/Makefile.BC nethack-3.4.3-turbonerd/sys/msdos/Makefile.BC
---- nethack-3.4.3/sys/msdos/Makefile.BC	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/msdos/Makefile.BC	2006-06-05 20:13:12.000000000 -0400
-@@ -986,6 +986,7 @@
- 	$(U)lev_comp tourist.des
- 	$(U)lev_comp valkyrie.des
- 	$(U)lev_comp wizard.des
-+	$(U)lev_comp turbone~1.des
- 	cd $(SRC)
- 	echo sp_levs done > $(DAT)\sp_lev.tag
- 
-diff -Nru nethack-3.4.3/sys/msdos/Makefile.GCC nethack-3.4.3-turbonerd/sys/msdos/Makefile.GCC
---- nethack-3.4.3/sys/msdos/Makefile.GCC	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/msdos/Makefile.GCC	2006-06-05 20:12:54.000000000 -0400
-@@ -889,7 +889,7 @@
- 	$(DAT)/caveman.des   $(DAT)/healer.des   $(DAT)/knight.des \
- 	$(DAT)/monk.des      $(DAT)/priest.des   $(DAT)/ranger.des \
- 	$(DAT)/rogue.des     $(DAT)/samurai.des  $(DAT)/tourist.des \
--	$(DAT)/valkyrie.des  $(DAT)/wizard.des
-+	$(DAT)/valkyrie.des  $(DAT)/wizard.des $(DAT)/turbone~1.des
- 	@$(subst /,\,cd $(DAT))
- 	@$(subst /,\,$(U)lev_comp bigroom.des)
- 	@$(subst /,\,$(U)lev_comp castle.des)
-@@ -915,6 +915,8 @@
- 	@$(subst /,\,$(U)lev_comp tourist.des)
- 	@$(subst /,\,$(U)lev_comp valkyrie.des)
- 	@$(subst /,\,$(U)lev_comp wizard.des)
-+	@$(subst /,\,$(U)lev_comp turbone~1.des)
-+
- 	@$(subst /,\,cd $(SRC))
- 	@$(subst /,\,echo sp_levs done > $@)
- 
-diff -Nru nethack-3.4.3/sys/msdos/Makefile.MSC nethack-3.4.3-turbonerd/sys/msdos/Makefile.MSC
---- nethack-3.4.3/sys/msdos/Makefile.MSC	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/msdos/Makefile.MSC	2006-06-05 20:13:33.000000000 -0400
-@@ -436,6 +436,7 @@
- 	$(U)lev_comp tourist.des
- 	$(U)lev_comp valkyrie.des
- 	$(U)lev_comp wizard.des
-+	$(U)lev_comp turbone~1.des
- 	cd $(SRC)
- #	- at if exist $(O)sp_lev.tag del $(O)sp_lev.tag
- 	@echo sp_levs done >$(O)sp_lev.tag
-diff -Nru nethack-3.4.3/sys/os2/Makefile.os2 nethack-3.4.3-turbonerd/sys/os2/Makefile.os2
---- nethack-3.4.3/sys/os2/Makefile.os2	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/os2/Makefile.os2	2006-06-05 20:16:06.000000000 -0400
-@@ -1289,7 +1289,8 @@
- WFILES = $(GAMEDIR)\Wiz-goal.lev
- 
- XFILES = $(AFILES) $(BFILES) $(CFILES) $(HFILES) $(KFILES) $(MFILES) \
--	 $(PFILES) $(RANFILES) $(RFILES) $(SFILES) $(TFILES) $(VFILES) $(WFILES)
-+	 $(PFILES) $(RANFILES) $(RFILES) $(SFILES) $(TFILES) $(VFILES) \
-+	 $(WFILES) $(TUFILES)
- 
- spec_lev : $(GAMEDIR)\astral.lev $(GAMEDIR)\bigrm-1.lev $(GAMEDIR)\castle.lev \
- 	   $(GAMEDIR)\knox.lev $(GAMEDIR)\medusa-1.lev $(GAMEDIR)\minefill.lev \
-@@ -1401,6 +1402,8 @@
- 	$(MAKEB) QQ=Sam QF=Samurai do_quest
- $(TFILES) : $(DAT)\Tourist.des $(TEMP)\lev_comp.exe
- 	$(MAKEB) QQ=Tou QF=Tourist do_quest
-+$(TUFILES) : $(DAT)\Turbonerd.des $(TEMP)\lev_comp.exe
-+	$(MAKEB) QQ=Ner QF=Turbonerd do_quest
- $(VFILES) : $(DAT)\Valkyrie.des $(TEMP)\lev_comp.exe
- 	$(MAKEB) QQ=Val QF=Valkyrie do_quest
- $(WFILES) : $(DAT)\Wizard.des $(TEMP)\lev_comp.exe
-diff -Nru nethack-3.4.3/sys/unix/Makefile.dat nethack-3.4.3-turbonerd/sys/unix/Makefile.dat
---- nethack-3.4.3/sys/unix/Makefile.dat	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/unix/Makefile.dat	2006-06-05 23:53:08.000000000 -0400
-@@ -118,7 +118,7 @@
- quest_levs: ../util/lev_comp \
- 	Arch.des Barb.des Caveman.des Healer.des Knight.des Monk.des \
- 	Priest.des Ranger.des Rogue.des Samurai.des Tourist.des Valkyrie.des \
--	Wizard.des
-+	Wizard.des Turbonerd.des
- 	../util/lev_comp Arch.des
- 	../util/lev_comp Barb.des
- 	../util/lev_comp Caveman.des
-@@ -132,6 +132,7 @@
- 	../util/lev_comp Tourist.des
- 	../util/lev_comp Valkyrie.des
- 	../util/lev_comp Wizard.des
-+	../util/lev_comp Turbonerd.des
- 	touch quest_levs
- 
- dungeon: dungeon.def ../util/makedefs ../util/dgn_comp
-diff -Nru nethack-3.4.3/sys/vms/Makefile.dat nethack-3.4.3-turbonerd/sys/vms/Makefile.dat
---- nethack-3.4.3/sys/vms/Makefile.dat	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/vms/Makefile.dat	2006-06-05 20:04:24.000000000 -0400
-@@ -30,7 +30,7 @@
- # note: the level lists need to be space separated
- QUESTLEVS = Arch.des Barb.des Caveman.des Healer.des Knight.des \
- 	Monk.des Priest.des Ranger.des Rogue.des Samurai.des Tourist.des \
--	Valkyrie.des Wizard.des
-+	Valkyrie.des Wizard.des Turobnerd.des
- SPECLEVS  = bigroom.des castle.des endgame.des gehennom.des knox.des \
- 	medusa.des mines.des oracle.des sokoban.des tower.des yendor.des
- 
-diff -Nru nethack-3.4.3/sys/wince/bootstrp.mak nethack-3.4.3-turbonerd/sys/wince/bootstrp.mak
---- nethack-3.4.3/sys/wince/bootstrp.mak	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/wince/bootstrp.mak	2006-06-05 20:10:34.000000000 -0400
-@@ -244,7 +244,8 @@
- 	$(DAT)\caveman.des $(DAT)\healer.des   $(DAT)\knight.des \
- 	$(DAT)\monk.des    $(DAT)\priest.des   $(DAT)\ranger.des \
- 	$(DAT)\rogue.des   $(DAT)\samurai.des  $(DAT)\sokoban.des \
--	$(DAT)\tourist.des $(DAT)\valkyrie.des $(DAT)\wizard.des
-+	$(DAT)\tourist.des $(DAT)\valkyrie.des $(DAT)\wizard.des \
-+	$(DAT)\turbonerd.des
- 	cd $(DAT)
- 	$(U)lev_comp bigroom.des
- 	$(U)lev_comp castle.des
-@@ -270,6 +271,7 @@
- 	$(U)lev_comp tourist.des
- 	$(U)lev_comp valkyrie.des
- 	$(U)lev_comp wizard.des
-+	$(U)lev_comp turbonerd.des
- 	cd $(WINCE)
- 	echo sp_levs done > $(O)sp_lev.tag
- 
-diff -Nru nethack-3.4.3/sys/winnt/Makefile.bcc nethack-3.4.3-turbonerd/sys/winnt/Makefile.bcc
---- nethack-3.4.3/sys/winnt/Makefile.bcc	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/winnt/Makefile.bcc	2006-06-05 20:07:30.000000000 -0400
-@@ -561,7 +561,8 @@
- 	$(DAT)\caveman.des $(DAT)\healer.des   $(DAT)\knight.des \
- 	$(DAT)\monk.des    $(DAT)\priest.des   $(DAT)\ranger.des \
- 	$(DAT)\rogue.des   $(DAT)\samurai.des  $(DAT)\sokoban.des \
--	$(DAT)\tourist.des $(DAT)\valkyrie.des $(DAT)\wizard.des
-+	$(DAT)\tourist.des $(DAT)\valkyrie.des $(DAT)\wizard.des \
-+	$(DAT)\turbonerd.des
- 	cd $(DAT)
- 	$(U)lev_comp bigroom.des
- 	$(U)lev_comp castle.des
-@@ -587,6 +588,7 @@
- 	$(U)lev_comp tourist.des
- 	$(U)lev_comp valkyrie.des
- 	$(U)lev_comp wizard.des
-+	$(U)lev_comp turbonerd.des
- 	cd $(SRC)
- 	echo sp_levs done > $(O)sp_lev.tag
- 
-diff -Nru nethack-3.4.3/sys/winnt/Makefile.gcc nethack-3.4.3-turbonerd/sys/winnt/Makefile.gcc
---- nethack-3.4.3/sys/winnt/Makefile.gcc	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/winnt/Makefile.gcc	2006-06-05 20:08:08.000000000 -0400
-@@ -523,7 +523,8 @@
- 	 $(DAT)/caveman.des $(DAT)/healer.des   $(DAT)/knight.des \
- 	 $(DAT)/monk.des    $(DAT)/priest.des   $(DAT)/ranger.des \
- 	 $(DAT)/rogue.des   $(DAT)/samurai.des  $(DAT)/sokoban.des \
--	 $(DAT)/tourist.des $(DAT)/valkyrie.des $(DAT)/wizard.des
-+	 $(DAT)/tourist.des $(DAT)/valkyrie.des $(DAT)/wizard.des \
-+	 $(DAT)/turbonerd.des
- 	$(subst /,\,$(U)lev_comp $(DAT)/bigroom.des)
- 	$(subst /,\,$(U)lev_comp $(DAT)/castle.des)
- 	$(subst /,\,$(U)lev_comp $(DAT)/endgame.des)
-@@ -548,6 +549,7 @@
- 	$(subst /,\,$(U)lev_comp $(DAT)/tourist.des)
- 	$(subst /,\,$(U)lev_comp $(DAT)/valkyrie.des)
- 	$(subst /,\,$(U)lev_comp $(DAT)/wizard.des)
-+	$(subst /,\,$(U)lev_comp $(DAT)/turbonerd.des)
- 	$(subst /,\,copy *.lev $(DAT))
- 	$(subst /,\,del *.lev)
- 	$(subst /,\,echo sp_levs done > $(O)sp_lev.tag)
-diff -Nru nethack-3.4.3/sys/winnt/Makefile.msc nethack-3.4.3-turbonerd/sys/winnt/Makefile.msc
---- nethack-3.4.3/sys/winnt/Makefile.msc	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/sys/winnt/Makefile.msc	2006-06-05 20:08:40.000000000 -0400
-@@ -496,7 +496,8 @@
- 	$(DAT)\caveman.des $(DAT)\healer.des   $(DAT)\knight.des \
- 	$(DAT)\monk.des    $(DAT)\priest.des   $(DAT)\ranger.des \
- 	$(DAT)\rogue.des   $(DAT)\samurai.des  $(DAT)\sokoban.des \
--	$(DAT)\tourist.des $(DAT)\valkyrie.des $(DAT)\wizard.des
-+	$(DAT)\tourist.des $(DAT)\valkyrie.des $(DAT)\wizard.des \
-+	$(DAT)\turbonerd.des
- 	cd $(DAT)
- 	$(U)lev_comp bigroom.des
- 	$(U)lev_comp castle.des
-@@ -522,6 +523,7 @@
- 	$(U)lev_comp tourist.des
- 	$(U)lev_comp valkyrie.des
- 	$(U)lev_comp wizard.des
-+	$(U)lev_comp turbonerd.des
- 	cd $(SRC)
- 	echo sp_levs done > $(O)sp_lev.tag
- 
-diff -Nru nethack-3.4.3/util/makedefs.c nethack-3.4.3-turbonerd/util/makedefs.c
---- nethack-3.4.3/util/makedefs.c	2003-12-07 18:39:13.000000000 -0500
-+++ nethack-3.4.3-turbonerd/util/makedefs.c	2006-06-06 01:53:10.000000000 -0400
-@@ -487,6 +487,9 @@
- #ifdef RLECOMP
- 			| (1L << 28)
- #endif
-+#ifdef TURBONERD	
-+			| (1L << 29)
-+#endif
- 			);
- 	/*
- 	 * Value used for object & monster sanity check.
-@@ -774,6 +777,9 @@
- #ifdef ZEROCOMP
- 		"zero-compressed save files",
- #endif
-+#ifdef TURBONERD
-+		"turbonerds",
-+#endif
- 		save_bones_compat_buf,
- 		"basic NetHack features"
- 	};
-diff -Nru nethack-3.4.3/win/share/monsters.txt nethack-3.4.3-turbonerd/win/share/monsters.txt
---- nethack-3.4.3/win/share/monsters.txt	2003-12-07 18:39:14.000000000 -0500
-+++ nethack-3.4.3-turbonerd/win/share/monsters.txt	2006-06-05 23:15:09.000000000 -0400
-@@ -5923,6 +5923,25 @@
-   MMMMMPPAMPPAMMMM
-   MMMMMMMMMMMMMMMM
- }
-+# tile 395 (Hastur)
-+{
-+  MMMMMMMAAAMMMMMM
-+  MMMMMMAAAAAMMMMM
-+  MMMAAAAAAMMMMMMM
-+  MMAAAAAAAAMMMMMM
-+  MMAACACAAAMMMMMM
-+  MMAADCDAAAMMMMMM
-+  MMAADADAAAMMMMMM
-+  MMAAAAAAAAMMMMMM
-+  MMAAAAAAAAMMMMMM
-+  MMMAAAAAAAAMMMMM
-+  MMMAAAAAAAAMMMMM
-+  MMMMAAAAAAAAMMMM
-+  MMMAAAAAAAAAAAMM
-+  MMMAAAAAAAAAAAAM
-+  MMMMAAAAAAAAAAAA
-+  MMAAAAAAAAAAAAAM
-+}
- # tile 311 (Baalzebub)
- {
-   MMMMMMFMMMFMMMMM
-@@ -5980,6 +5999,25 @@
-   MMGAGFAFFFAFAMMM
-   MMMMMMMMMMMMMMMM
- }
-+# tile 394 (Cthulhu)
-+{
-+  MMMMMMMMMMMMMMMM
-+  MMMMMMMGGGGCMMMM
-+  MMMMMGGGGGGCMMMM
-+  MMMMGGGGGGGCMMMM
-+  MMMGCGGGGCCMMMMM
-+  MMMGGCGNCGCMMMMM
-+  MMMMGGGGGCMMMMMM
-+  MMMMGAGAGFMMMMMM
-+  MMMMGAGAGFMMMMMM
-+  MMMMGAGAGFGMMMMM
-+  MMMMMFGFGFGCMAAM
-+  MMMMCBGBBFMCAAAM
-+  MMMGGGBBFFACAAAM
-+  MMMMMMBBFCAAAAMM
-+  MMMMMMCFFCAAMMMM
-+  MMMMGGCMGGAMMMMM
-+}
- # tile 314 (Death)
- {
-   MBBBBMMMMJJJMMMM
-@@ -6626,6 +6664,25 @@
-   MMMMMLLAMLLAMMMM
-   MMMMMMMMMMMMMMMM
- }
-+# tile 398 (turbonerd)
-+{
-+  MMMMMMMMMMMMMMMM
-+  MMMMMMMMMMMMMMMM
-+  MMMMMGGFGGMMMMMM
-+  MMMMMMMGMMMMMMMM
-+  MMMMMMNDNDMMMMMM
-+  MMMDDDDDDDDMMMMM
-+  MMMMMMLELEAMMMMM
-+  MMMMMMLLLLAMMMMM
-+  MMMMMMALLAMMMMMM
-+  MMMMMCKAAKJMAAAM
-+  MMMMCKKKJJJJAAAM
-+  MMMMKACKJJAJAAAM
-+  MMMMLACJKJALAAAM
-+  MMMMMKCJAJJAMAMM
-+  MMMMMCJJMJKJMMMM
-+  MMMMMMMMMMMMMMMM
-+}
- # tile 348 (valkyrie)
- {
-   MMMMMMMMMMMMMMMM
-@@ -6911,6 +6968,25 @@
-   MMMMMLLAMLLAMMMM
-   MMMMMMMMMMMMMMMM
- }
-+# tile 397 (Illiad)
-+{
-+  MMJJJJJJJJJJJJMM
-+  MMJJAAJJJJAAJJMM
-+  MMJAAAAJJAAAAJMM
-+  MMJJAAJJJJAAJJMM
-+  MMJJJJJJJJJJJJMM
-+  MMJJJJJJJJJJJJMM
-+  MMMMMMNNNMMMMMMM
-+  MMMNNNNNNNNNNMMM
-+  MMNNNNNNNNNNNNMM
-+  MNNANNNNNNNNANNM
-+  MJJANNNNNNNNAJJM
-+  MJJADDDDDDDDAJJM
-+  MJJANNNNNNNNAJJM
-+  MJJANNNNNNNNAJJM
-+  MJJAAAAAAAAAAJJM
-+  MJJEEEEEEEEEEJJM
-+}
- # tile 363 (Norn)
- {
-   MMMMMMMMMMMMMMMM
-@@ -7158,6 +7234,25 @@
-   MMMMMIIAMIIAMMMM
-   MMMMMMMMMMMMMMMM
- }
-+# tile 396 (Crud Puppy)
-+{
-+  MMMMMMAAAAMMMMMM
-+  MMMMAJAAAJAAMMMM
-+  MMMAAAAJAAJAAMMM
-+  MMAAAJAAAJAJAAMM
-+  MMAJAAAJAAAJAAMM
-+  MMAAAJAJAAAAJAMM
-+  MMMAAAAAAAJAAMMM
-+  MMMMMAJAAAAMMMMM
-+  MMMMMMAAJAMMMMMM
-+  MMMMMMOMMOMMMMMM
-+  MMMMMOOMMOOMMMMM
-+  MMMMMOJMMJOMMMMM
-+  MMMMOOOMMOOOMMMM
-+  MMMJOOOMMOOOJMMM
-+  MMJOOOOMMOOOOJMM
-+  MMMMMMMMMMMMMMMM
-+}
- # tile 376 (Lord Surtur)
- {
-   MMMMPPDDDDAAMMMM
-@@ -7443,6 +7538,25 @@
-   MMMMMLLAMLLAMMMM
-   MMMMMMMMMMMMMMMM
- }
-+# tile 399 (hacker)
-+{
-+  MMMMMMMMMMMMMMMM
-+  MMMMMMMMMMMMMMMM
-+  MMMMMGGFGGMMMMMM
-+  MMMMMMMGMMMMMMMM
-+  MMMMMMNDNDMMMMMM
-+  MMMDDDDDDDDMMMMM
-+  MMMMMMLELEAMMMMM
-+  MMMMMMLLLLAMMMMM
-+  MMMMMMALLAMMMMMM
-+  MMMMMCKAAKJMAAAM
-+  MMMMCKKKJJJJAAAM
-+  MMMMKACKJJAJAAAM
-+  MMMMLACJKJALAAAM
-+  MMMMMKCJAJJAMAMM
-+  MMMMMCJJMJKJMMMM
-+  MMMMMMMMMMMMMMMM
-+}
- # tile 391 (warrior)
- {
-   MMMMMOMMMMOMMMMM
-diff -Nru nethack-3.4.3/win/share/objects.txt nethack-3.4.3-turbonerd/win/share/objects.txt
---- nethack-3.4.3/win/share/objects.txt	2003-12-07 18:39:14.000000000 -0500
-+++ nethack-3.4.3-turbonerd/win/share/objects.txt	2006-06-05 23:15:09.000000000 -0400
-@@ -1154,6 +1154,25 @@
-   MJAMMMMMMMMMMMMM
-   MMMMMMMMMMMMMMMM
- }
-+# tile 435 (cluebat)
-+{
-+  MMMMMMMMMMMMMMMM
-+  MMMMMMMMMMMMMMMM
-+  MMMMMMMMMMMMMMMM
-+  MMMMMMMMMMKKMMMM
-+  MMMMMMMMPCKKAMMM
-+  MMMMMMMKKKKKAMMM
-+  MMMMMMPKKKKPAMMM
-+  MMMMMMKKKCKAAMMM
-+  MMMMMPCKKKAAMMMM
-+  MMMMPKKKPAAMMMMM
-+  MMMPKKPAAMMMMMMM
-+  MMMKPAAMMMMMMMMM
-+  MMKPAMMMMMMMMMMM
-+  MKPAMMMMMMMMMMMM
-+  MPAMMMMMMMMMMMMM
-+  MMMMMMMMMMMMMMMM
-+}
- # tile 60 (rubber hose)
- {
-   MMMMMMMMMMMMMMMM
-diff -Nru nethack-3.4.3/win/share/tilemap.c nethack-3.4.3-turbonerd/win/share/tilemap.c
---- nethack-3.4.3/win/share/tilemap.c	2003-12-07 18:39:14.000000000 -0500
-+++ nethack-3.4.3-turbonerd/win/share/tilemap.c	2006-06-05 23:47:06.000000000 -0400
-@@ -50,27 +50,58 @@
- #ifndef CHARON /* not supported yet */
- 	{ MON_GLYPH, PM_CROESUS, "Charon" },
- #endif
-+#ifndef TURBONERD
-+	{ MON_GLYPH, PM_DISPATER, "Hastur" },
-+	{ MON_GLYPH, PM_DEMOGORGON, "Cthulhu" },
-+#endif
- #ifndef MAIL
- 	{ MON_GLYPH, PM_FAMINE, "mail daemon" },
- #endif
- #ifndef TOURIST
- 	{ MON_GLYPH, PM_SAMURAI, "tourist" },
- #endif
-+#ifndef TURBONERD
-+	{ MON_GLYPH, PM_TOURIST, "turbonerd" },
-+#endif
- 	/* commented out in monst.c at present */
- 	{ MON_GLYPH, PM_SHAMAN_KARNOV, "Earendil" },
- 	{ MON_GLYPH, PM_SHAMAN_KARNOV, "Elwing" },
- #ifndef TOURIST
- 	{ MON_GLYPH, PM_LORD_SATO, "Twoflower" },
-+#ifndef TURBONERD
-+	{ MON_GLYPH, PM_LORD_SATO, "Illiad" },
-+#endif
-+#else
-+#ifndef TURBONERD
-+	{ MON_GLYPH, PM_TWOFLOWER, "Illiad" },
-+#endif
- #endif
- 	/* commented out in monst.c at present */
- 	{ MON_GLYPH, PM_CHROMATIC_DRAGON, "Goblin King" },
-+#ifndef TURBONERD 
-+	{ MON_GLYPH, PM_ASHIKAGA_TAKAUJI, "Crud Puppy" },
-+#endif
- 	{ MON_GLYPH, PM_NEANDERTHAL, "High-elf" },
- #ifndef TOURIST
- 	{ MON_GLYPH, PM_ROSHI, "guide" },
-+#ifndef TURBONERD
-+	{ MON_GLYPH, PM_ROSHI, "hacker" },
- #endif
-+#else
-+#ifndef TURBONERD
-+	{ MON_GLYPH, PM_GUIDE, "hacker" },
-+#endif
-+#endif
-+#ifndef TURBONERD
-+	{ OBJ_GLYPH, CLUB, "cluebat" },
- #ifndef KOPS
- 	{ OBJ_GLYPH, CLUB, "rubber hose" },
- #endif
-+#else
-+#ifndef KOPS
-+	{ OBJ_GLYPH, CLUEBAT, "rubber hose" },
-+#endif
-+#endif
- 	/* objects commented out in objects.c at present */
- 	{ OBJ_GLYPH, SILVER_DRAGON_SCALE_MAIL, "shimmering dragon scale mail" },
- 	{ OBJ_GLYPH, SILVER_DRAGON_SCALES, "shimmering dragon scales" },
diff --git a/nethack-config.patch b/nethack-config.patch
deleted file mode 100644
index 2215a9d..0000000
--- a/nethack-config.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -ruN nethack-3.4.3.orig/include/config.h nethack-3.4.3/include/config.h
---- nethack-3.4.3.orig/include/config.h	Mon Mar 25 23:47:30 2002
-+++ nethack-3.4.3/include/config.h	Tue Mar 26 20:35:52 2002
-@@ -141,6 +141,7 @@
-  *		playground.
-  */
- 
-+#if 0
- #ifndef WIZARD		/* allow for compile-time or Makefile changes */
- # ifndef KR1ED
- #  define WIZARD  "wizard" /* the person allowed to use the -D option */
-@@ -149,6 +150,7 @@
- #  define WIZARD_NAME "wizard"
- # endif
- #endif
-+#endif
- 
- #define LOGFILE "logfile"	/* larger file for debugging purposes */
- #define NEWS "news"		/* the file containing the latest hack news */
-@@ -169,8 +171,8 @@
- 
- #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 "/bin/gzip"	/* Lempel-Ziv compression */
-+#define COMPRESS_EXTENSION ".gz"		/* 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 */
-@@ -185,7 +187,7 @@
-  *	a tar-like file, thus making a neater installation.  See *conf.h
-  *	for detailed configuration.
-  */
--/* #define DLB */	/* not supported on all platforms */
-+#define DLB		/* not supported on all platforms */
- 
- /*
-  *	Defining INSURANCE slows down level changes, but allows games that
-@@ -206,7 +208,7 @@
-  * otherwise it will be the current directory.
-  */
- # ifndef HACKDIR
--#  define HACKDIR "/usr/games/lib/nethackdir"
-+#  define HACKDIR "/usr/share/nethack"
- # endif
- 
- /*
-@@ -300,7 +302,7 @@
-  * functions that have been macroized.
-  */
- 
--/* #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
- #  define MACRO_CPATH	/* use clear_path macros instead of functions */
-diff -ruN nethack-3.4.0.orig/include/unixconf.h 2/include/unixconf.h
---- nethack-3.4.0.orig/include/unixconf.h	Mon Mar 25 23:47:30 2002
-+++ 2/include/unixconf.h	Tue Mar 26 20:44:41 2002
-@@ -32,12 +32,12 @@
- 
- 
- /* define any of the following that are appropriate */
--#define SVR4		/* use in addition to SYSV for System V Release 4 */
-+/*#define SVR4*/	/* use in addition to SYSV for System V Release 4 */
- 			/* including Solaris 2+ */
- #define NETWORK		/* if running on a networked system */
- 			/* e.g. Suns sharing a playground through NFS */
- /* #define SUNOS4 */	/* SunOS 4.x */
--/* #define LINUX */	/* Another Unix clone */
-+#define LINUX		/* Another Unix clone */
- /* #define CYGWIN32 */	/* Unix on Win32 -- use with case sensitive defines */
- /* #define GENIX */	/* Yet Another Unix Clone */
- /* #define HISX */	/* Bull Unix for XPS Machines */
-@@ -102,7 +102,7 @@
-  * If you want the static parts of your playground on a read-only file
-  * system, define VAR_PLAYGROUND to be where the variable parts are kept.
-  */
--/* #define VAR_PLAYGROUND "/var/lib/games/nethack" */
-+#define VAR_PLAYGROUND "/var/games/nethack"
- 
- 
- /*
-@@ -132,7 +132,7 @@
-  * "extra output" method is used, but not all systems provide access to
-  * a fine-grained timer.
-  */
--/* #define TIMED_DELAY */	/* usleep() */
-+#define TIMED_DELAY	/* usleep() */
- #endif
- 
- /*
diff --git a/nethack-gcc3.patch b/nethack-gcc3.patch
deleted file mode 100644
index 32a599a..0000000
--- a/nethack-gcc3.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ruN nethack-3.4.1./win/Qt/qt_win.cpp nethack-3.4.1/win/Qt/qt_win.cpp
---- nethack-3.4.1./win/Qt/qt_win.cpp	Sun Feb 23 15:43:45 2003
-+++ nethack-3.4.1/win/Qt/qt_win.cpp	Tue Feb 25 21:58:23 2003
-@@ -53,6 +53,7 @@
- #define NHSTDC
- #endif
- #include "hack.h"
-+#undef yn
- #include "func_tab.h"
- #include "dlb.h"
- #include "patchlevel.h"
diff --git a/nethack-makefile.patch b/nethack-makefile.patch
deleted file mode 100644
index c6b5f20..0000000
--- a/nethack-makefile.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-diff -ruN nethack-3.4.3./sys/unix/Makefile.src nethack-3.4.3/sys/unix/Makefile.src
---- nethack-3.4.3./sys/unix/Makefile.src	Sun Feb 23 15:43:39 2003
-+++ nethack-3.4.3/sys/unix/Makefile.src	Tue Feb 25 21:42:49 2003
-@@ -157,7 +157,7 @@
- # The Qt and Be window systems are written in C++, while the rest of
- # NetHack is standard C.  If using Qt, uncomment the LD line here to get
- # the C++ libraries linked in.
--CXXFLAGS = $(CFLAGS) -I. -I$(QTDIR)/include
-+CXXFLAGS = $(CFLAGS) -I. -I$(QTDIR)/include/qt -D__CORRECT_ISO_CPP_STRINGS_H_PROTO
- CXX=g++
- #LD=g++
- 
-@@ -230,8 +230,8 @@
- # WINTTYLIB = -ltermcap
- # WINTTYLIB = -lcurses
- # WINTTYLIB = -lcurses16
--# WINTTYLIB = -lncurses
--WINTTYLIB = -ltermlib
-+WINTTYLIB = -lncurses -ltinfo
-+# WINTTYLIB = -ltermlib
- #
- # libraries for X11
- # If USE_XPM is defined in config.h, you will also need -lXpm here.
-@@ -392,7 +392,7 @@
- 
- Sysunix:	$(HOBJ) Makefile
- 	@echo "Loading ..."
--	$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
-+	$(LD) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
- 	@touch Sysunix
- 
- Sys3B2:	$(HOBJ) Makefile
-diff -ruN nethack-3.4.3./sys/unix/Makefile.top nethack-3.4.3/sys/unix/Makefile.top
---- nethack-3.4.3./sys/unix/Makefile.top	Sun Feb 23 15:43:39 2003
-+++ nethack-3.4.3/sys/unix/Makefile.top	Tue Feb 25 21:42:41 2003
-@@ -14,7 +14,7 @@
- # MAKE = make
- 
- # make NetHack
--PREFIX	 = /usr
-+PREFIX	 = $(DESTDIR)/usr
- GAME     = nethack
- # GAME     = nethack.prg
- GAMEUID  = games
-@@ -35,14 +35,14 @@
- # therefore there should not be anything in GAMEDIR that you want to keep
- # (if there is, you'll have to do the installation by hand or modify the
- # instructions)
--GAMEDIR  = $(PREFIX)/games/lib/$(GAME)dir
--VARDIR  = $(GAMEDIR)
-+GAMEDIR  = $(PREFIX)/share/nethack
-+VARDIR  = $(DESTDIR)/var/games/nethack
- SHELLDIR = $(PREFIX)/games
- 
- # per discussion in Install.X11 and Install.Qt
--VARDATND = 
-+#VARDATND = 
- # VARDATND = x11tiles NetHack.ad pet_mark.xbm
--# VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm
-+VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm
- # for Atari/Gem
- # VARDATND = nh16.img title.img GEM_RSC.RSC rip.img
- # for BeOS
-@@ -64,8 +64,8 @@
- # other permission-related reasons.  If that happens, you may want to set the
- # command to "true", which is a no-op. Note that disabling chown or chgrp
- # will only work if setuid (or setgid) behavior is not desired or required.
--CHOWN = chown
--CHGRP = chgrp
-+CHOWN = true
-+CHGRP = true
- 
- #
- # end of configuration
-@@ -188,6 +188,7 @@
- 	-rm -f $(SHELLDIR)/$(GAME)
- 	sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
- 		-e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \
-+		-e 's;$(DESTDIR);;' \
- 		< sys/unix/nethack.sh \
- 		> $(SHELLDIR)/$(GAME)
- # set up their permissions
-diff -ruN nethack-3.4.3./sys/unix/Makefile.utl nethack-3.4.3/sys/unix/Makefile.utl
---- nethack-3.4.3./sys/unix/Makefile.utl	Sun Feb 23 15:43:39 2003
-+++ nethack-3.4.3/sys/unix/Makefile.utl	Tue Feb 25 21:42:41 2003
-@@ -101,11 +101,11 @@
- 
- # yacc/lex programs to use to generate *_comp.h, *_lex.c, and *_yacc.c.
- # if, instead of yacc/lex you have bison/flex, comment/uncomment the following.
--YACC     = yacc
--LEX      = lex
--# YACC     = bison -y
-+# YACC     = yacc
-+# LEX      = lex
-+YACC     = bison -y
- # YACC     = byacc
--# LEX      = flex
-+LEX      = flex
-  
- # these are the names of the output files from YACC/LEX. Under MS-DOS
- # and similar systems, they may differ
diff --git a/nethack-qt.patch b/nethack-qt.patch
deleted file mode 100644
index 8fbbbb0..0000000
--- a/nethack-qt.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-diff -ruN nethack-3.4.1./include/config.h nethack-3.4.1/include/config.h
---- nethack-3.4.1./include/config.h	Fri Apr 18 20:52:27 2003
-+++ nethack-3.4.1/include/config.h	Fri Apr 18 20:53:24 2003
-@@ -44,7 +44,7 @@
-  */
- #define TTY_GRAPHICS	/* good old tty based graphics */
- /* #define X11_GRAPHICS */	/* X11 interface */
--/* #define QT_GRAPHICS */	/* Qt interface */
-+#define QT_GRAPHICS		/* Qt interface */
- /* #define GNOME_GRAPHICS */	/* Gnome interface */
- /* #define MSWIN_GRAPHICS */	/* Windows NT, CE, Graphics */
- 
-diff -ruN nethack-3.4.1./sys/unix/Makefile.src nethack-3.4.1/sys/unix/Makefile.src
---- nethack-3.4.1./sys/unix/Makefile.src	Fri Apr 18 20:52:27 2003
-+++ nethack-3.4.1/sys/unix/Makefile.src	Fri Apr 18 20:53:45 2003
-@@ -204,8 +204,8 @@
- 
- #
- #
--WINSRC = $(WINTTYSRC)
--WINOBJ = $(WINTTYOBJ)
-+WINSRC = $(WINTTYSRC) $(WINQTSRC)
-+WINOBJ = $(WINTTYOBJ) $(WINQTOBJ)
- 
- # on some systems the termcap library is in -ltermcap or -lcurses
- # on 386 Xenix, the -ltermlib tputs() seems not to work; use -lcurses instead
-@@ -231,7 +231,7 @@
- # WINX11LIB = -lXaw -lXmu -lXpm -lXext -lXt -lX11 -lSM -lICE -lm # BSD/OS 2.0
- #
- # libraries for Qt
--WINQTLIB = -L$(QTDIR)/lib -lqt
-+WINQTLIB = -L$(QTDIR)/lib -lqt-mt
- #
- # libraries for KDE (with Qt)
- WINKDELIB = -lkdecore -lkdeui -lXext
-@@ -245,7 +245,7 @@
- # libraries for BeOS 
- WINBELIB = -lbe
- 
--WINLIB = $(WINTTYLIB)
-+WINLIB = $(WINTTYLIB) $(WINQTLIB)
- 
- # any other strange libraries your system needs (for Sysunix only -- the more
- # specialized targets should already be right)
diff --git a/nethack-qt33.patch b/nethack-qt33.patch
deleted file mode 100644
index fb88aed..0000000
--- a/nethack-qt33.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- nethack-3.4.3/win/Qt/qt_win.cpp.orig	2004-04-02 22:20:47.000000000 +0200
-+++ nethack-3.4.3/win/Qt/qt_win.cpp	2004-04-02 22:31:43.306317608 +0200
-@@ -72,7 +72,7 @@
- #undef alloc
- #undef lock
- #undef yn
--
-+#undef Invisible
- }
- 
- #include "qt_win.h"
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/nethack.git/commitdiff/e5db70eafb405c717b83e37cefb5c0dff6873b62



More information about the pld-cvs-commit mailing list