diff -ru oldver/netrekxp/CVS/Entries newver/netrekxp/CVS/Entries
--- oldver/netrekxp/CVS/Entries	2008-07-16 22:52:10.000000000 -0400
+++ newver/netrekxp/CVS/Entries	2009-06-23 18:18:02.000000000 -0400
@@ -6,11 +6,9 @@
 D/win32////
 /clientr.dsp/1.5/Thu Jun 14 12:26:12 2007//
 /clientr.sln/1.3/Thu Jun 14 12:26:13 2007//
-/rsa.txt/1.2/Thu Jun 14 12:26:16 2007//
 D/configuration-program////
-/compile.txt/1.15/Sun Apr  6 23:03:25 2008//
 /copyright.txt/1.4/Sun Apr  6 23:03:39 2008//
-/clientr.vcproj/1.13/Sat Apr 19 02:16:12 2008//
-/NetrekXP to do list.C/1.165/Sun Apr 20 01:50:39 2008//
-/build.cmd/1.33/Sun Jun 15 23:13:11 2008//
-/clientr.suo/-1.161/dummy timestamp/-kb/
+/build.cmd/1.34/Sat May  9 21:14:05 2009//
+/compile.txt/1.16/Sat May  9 20:32:12 2009//
+/clientr.vcproj/1.16/Wed Jun  3 02:25:14 2009//
+/NetrekXP to do list.C/1.170/Tue Jun 23 22:09:46 2009//
diff -ru oldver/netrekxp/CVS/Entries.Extra newver/netrekxp/CVS/Entries.Extra
--- oldver/netrekxp/CVS/Entries.Extra	2008-07-16 22:52:10.000000000 -0400
+++ newver/netrekxp/CVS/Entries.Extra	2009-06-23 18:18:02.000000000 -0400
@@ -6,11 +6,9 @@
 D/win32///////
 /clientr.dsp////*///
 /clientr.sln////*///
-/rsa.txt////*///
 D/configuration-program///////
-/compile.txt////*///
 /copyright.txt////*///
+/build.cmd////*///
+/compile.txt////*///
 /clientr.vcproj////*///
 /NetrekXP to do list.C////*///
-/build.cmd////*///
-/clientr.suo////*///
diff -ru oldver/netrekxp/CVS/Entries.Extra.Old newver/netrekxp/CVS/Entries.Extra.Old
--- oldver/netrekxp/CVS/Entries.Extra.Old	2008-07-16 19:25:08.000000000 -0400
+++ newver/netrekxp/CVS/Entries.Extra.Old	2009-06-02 22:42:54.000000000 -0400
@@ -6,11 +6,9 @@
 D/win32///////
 /clientr.dsp////*///
 /clientr.sln////*///
-/rsa.txt////*///
 D/configuration-program///////
-/compile.txt////*///
 /copyright.txt////*///
-/clientr.vcproj////*///
-/NetrekXP to do list.C////*///
 /build.cmd////*///
-/clientr.suo////*///
+/compile.txt////*///
+/NetrekXP to do list.C////*///
+/clientr.vcproj////*///
diff -ru oldver/netrekxp/CVS/Entries.Old newver/netrekxp/CVS/Entries.Old
--- oldver/netrekxp/CVS/Entries.Old	2008-07-16 19:25:08.000000000 -0400
+++ newver/netrekxp/CVS/Entries.Old	2009-06-02 22:42:54.000000000 -0400
@@ -6,11 +6,9 @@
 D/win32////
 /clientr.dsp/1.5/Thu Jun 14 12:26:12 2007//
 /clientr.sln/1.3/Thu Jun 14 12:26:13 2007//
-/rsa.txt/1.2/Thu Jun 14 12:26:16 2007//
 D/configuration-program////
-/compile.txt/1.15/Sun Apr  6 23:03:25 2008//
 /copyright.txt/1.4/Sun Apr  6 23:03:39 2008//
-/clientr.vcproj/1.13/Sat Apr 19 02:16:12 2008//
-/NetrekXP to do list.C/1.165/Sun Apr 20 01:50:39 2008//
-/build.cmd/1.33/Sun Jun 15 23:13:11 2008//
-/clientr.suo/1.161/Wed Jul 16 22:27:18 2008/-kb/
+/build.cmd/1.34/Sat May  9 21:14:05 2009//
+/compile.txt/1.16/Sat May  9 20:32:12 2009//
+/NetrekXP to do list.C/1.169/Mon May 25 15:17:41 2009//
+/clientr.vcproj/1.16/Wed Jun  3 02:25:14 2009//
diff -ru oldver/netrekxp/NetrekXP to do list.C newver/netrekxp/NetrekXP to do list.C
--- oldver/netrekxp/NetrekXP to do list.C	2008-04-19 21:50:38.000000000 -0400
+++ newver/netrekxp/NetrekXP to do list.C	2009-06-23 18:09:46.000000000 -0400
@@ -18,11 +18,6 @@
 is rotated.  Only solution so far is to moderate border refresh with scaled bitmaps.
 2) AddFontResourceEx caused problems with win 98 machines.  Commented out, and using
 old AddFontResource function.
-3) Metaping on a Unknown server is causing unseemly delay due to threading.  I believe
-this is fixed.
-4) sendto() error: 10049 on metaserver connect to a bad server, believe it's due
-to hostname not resolving.  Currently fixed by using mulitple attempts to resolve bad
-host names.
 
 Things to do:
 1) Get square planet bitmaps so I can turn them into mapped rotating globes.
@@ -32,21 +27,19 @@
 rect doesn't take these into account.
 4) With expanded tactical ..can now see ships at galactic coordinates (-500,-500),
 if you fly into the NW corner of the galaxy.  this was never anticipated!
-6) Tractor on/off and pressor on/off option, rather than just tractor on, pressor on.
+5) Tractor on/off and pressor on/off option, rather than just tractor on, pressor on.
 Maybe with enforced state?
-7) Verbosity setting for logfile..phaser and torp warn messages can be very spammy.
-8) Make server packet for variable rank requirements like min offense.
 
 Paradise issues:
 1) Motd paging system gutted for sake of simplicity
 2) Autologin with name and password seems to break any motd pics - race condition
-during login sequence.
+during login sequence.  But this is a paradise server issue, occurs for paradise
+client as well.
 3) A bunch of gridline/zoom options should be made into netrekrc options.
 4) The galactic zoom doesn't work
 5) Some of the paradise packet types may need some work
-6) Still missing asteroids and (flashing) warpbeacons.
+6) Still missing asteroids.
 7) Show ratings on full/wide playerlist.
-8) Playing back recordings made by linux pclient is probably impossible.
 9) Don't think there is gettarget support for astral bodies like nebulae and stars
 and black holes.  Might be an issue with macros.
 10) add POBSERV and PTQUEUE support
diff -ru oldver/netrekxp/build.cmd newver/netrekxp/build.cmd
--- oldver/netrekxp/build.cmd	2008-06-15 19:13:10.000000000 -0400
+++ newver/netrekxp/build.cmd	2009-07-15 17:56:30.000000000 -0400
@@ -1,14 +1,12 @@
-set RSAKey="\netrek_files\rsa\NetrekXP-2009-RSA-Key-Win32.secret"
 set InstCWD="\netrek_files"
 set HelpCompiler="C:\Program Files\HTML Help Workshop\hhc.exe"
-rem set Compiler=VCC
+set Compiler=VCC
 rem set Compiler=BCC
-set Compiler=CYGWIN
+rem set Compiler=CYGWIN
 
 @echo off
 Set MyCWD=%cd%
 if /I "%1" == "clean" goto :clean
-if /I "%1" == "cleanrsa" goto :cleanrsa
 if /I "%1" == "dist" goto :dist
 if /I "%1" == "build" goto :build
 if /I "%1" == "pics" goto :pics
@@ -363,10 +361,6 @@
 popd
 popd
 
-pushd src
-%MyCWD%\tools\mkkey -k %RSAKEY%
-popd
-
 if /I "%Compiler%" == "BCC" goto :CompilerBCC
 if /I "%Compiler%" == "VCC" goto :CompilerVCC
 if /I "%Compiler%" == "CYGWIN" goto :CompilerCYGWIN
@@ -632,11 +626,4 @@
 
 goto :end
 
-:cleanrsa
-pushd src
-del rsa*.c
-popd
-
-goto :end
-
 :end
Only in newver/netrekxp: clientr.suo
diff -ru oldver/netrekxp/clientr.vcproj newver/netrekxp/clientr.vcproj
--- oldver/netrekxp/clientr.vcproj	2008-04-18 22:16:12.000000000 -0400
+++ newver/netrekxp/clientr.vcproj	2009-06-02 22:25:14.000000000 -0400
@@ -1180,144 +1180,6 @@
 				</FileConfiguration>
 			</File>
 			<File
-				RelativePath="src\rsa_box.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						CompileAs="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="src\rsa_box_0.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						CompileAs="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="src\rsa_box_1.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						CompileAs="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="src\rsa_box_2.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						CompileAs="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="src\rsa_box_3.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						CompileAs="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="src\rsa_box_4.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-						CompileAs="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
 				RelativePath="src\senddist.c"
 				>
 				<FileConfiguration
@@ -1769,6 +1631,10 @@
 			</File>
 		</Filter>
 		<File
+			RelativePath=".\include\ltd_stats.h"
+			>
+		</File>
+		<File
 			RelativePath="src\main.ico"
 			>
 			<FileConfiguration
@@ -1780,6 +1646,10 @@
 			</FileConfiguration>
 		</File>
 		<File
+			RelativePath=".\include\patchlevel.h"
+			>
+		</File>
+		<File
 			RelativePath=".\src\vccnetrek.rc"
 			>
 		</File>
diff -ru oldver/netrekxp/compile.txt newver/netrekxp/compile.txt
--- oldver/netrekxp/compile.txt	2008-04-06 19:03:24.000000000 -0400
+++ newver/netrekxp/compile.txt	2009-05-09 16:32:12.000000000 -0400
@@ -11,15 +11,10 @@
 --------
 Edit build.cmd to set following variables:
 
-RSAKey = path to your RSA-KEY.secret file
 Compiler = VCC or BCC (default VCC)
 InstCWD = path to folder to copy files to (default \netrek_files)
 HelpCompiler = path to hhc.exe from Microsoft's HTML Help Workshop (available from microsoft.com)
 
-Step 1a:
---------
-Generate your rsa_box files, see rsa.txt for instructions.
-
 Step 2:
 --------
 
diff -ru oldver/netrekxp/include/CVS/Entries newver/netrekxp/include/CVS/Entries
--- oldver/netrekxp/include/CVS/Entries	2008-07-16 19:25:08.000000000 -0400
+++ newver/netrekxp/include/CVS/Entries	2009-06-23 18:18:02.000000000 -0400
@@ -1,9 +1,7 @@
 /copyright.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /copyright2.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
-/cowapi.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /cursors.h/1.1.1.1/Tue Jan 21 21:27:55 2003//
 /local.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
-/oldbitmaps.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /parsemeta.h/1.4/Mon Nov 27 07:08:40 2006//
 /patchlevel.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /spopt.h/1.1.1.1/Tue Jan 21 21:27:55 2003//
@@ -14,12 +12,15 @@
 /map.h/1.2/Thu Jun 14 12:26:34 2007//
 /sound.h/1.20/Thu Jun 14 12:26:35 2007//
 /wlib.h/1.14/Thu Jun 14 12:26:35 2007//
-/version.h/1.8/Sun Apr  6 22:57:48 2008//
 /playerlist.h/1.3/Mon Apr 14 00:51:02 2008//
 /bitmaps.h/1.25/Mon Jun 16 22:26:30 2008//
-/data.h/1.103/Sun Jul 13 02:49:29 2008//
-/defs.h/1.34/Tue Jul 15 23:37:45 2008//
-/proto.h/1.64/Wed Jul 16 00:01:35 2008//
-/packets.h/1.18/Wed Jul 16 02:27:19 2008//
-/struct.h/1.31/Wed Jul 16 02:35:30 2008//
+/cowapi.h/1.2/Sat May  9 20:46:12 2009//
+/ltd_stats.h/1.3/Thu Jun  4 01:26:29 2009//
+/version.h/1.11/Mon Jun  8 22:22:35 2009//
+/struct.h/1.35/Tue Jun  9 00:05:33 2009//
+/defs.h/1.39/Tue Jun  9 00:09:04 2009//
+/oldbitmaps.h/1.2/Tue Jun  9 01:17:53 2009//
+/proto.h/1.74/Wed Jun 10 22:12:42 2009//
+/data.h/1.122/Thu Jun 11 21:43:56 2009//
+/packets.h/1.28/Tue Jun 23 22:14:04 2009//
 D
diff -ru oldver/netrekxp/include/CVS/Entries.Extra newver/netrekxp/include/CVS/Entries.Extra
--- oldver/netrekxp/include/CVS/Entries.Extra	2008-07-16 19:25:08.000000000 -0400
+++ newver/netrekxp/include/CVS/Entries.Extra	2009-06-23 18:18:02.000000000 -0400
@@ -1,9 +1,7 @@
 /copyright.h////*///
 /copyright2.h////*///
-/cowapi.h////*///
 /cursors.h////*///
 /local.h////*///
-/oldbitmaps.h////*///
 /parsemeta.h////*///
 /patchlevel.h////*///
 /spopt.h////*///
@@ -14,11 +12,14 @@
 /map.h////*///
 /sound.h////*///
 /wlib.h////*///
-/version.h////*///
 /playerlist.h////*///
 /bitmaps.h////*///
-/data.h////*///
+/cowapi.h////*///
+/ltd_stats.h////*///
+/version.h////*///
+/struct.h////*///
 /defs.h////*///
+/oldbitmaps.h////*///
 /proto.h////*///
+/data.h////*///
 /packets.h////*///
-/struct.h////*///
diff -ru oldver/netrekxp/include/CVS/Entries.Extra.Old newver/netrekxp/include/CVS/Entries.Extra.Old
--- oldver/netrekxp/include/CVS/Entries.Extra.Old	2008-07-15 20:16:08.000000000 -0400
+++ newver/netrekxp/include/CVS/Entries.Extra.Old	2009-06-11 18:10:30.000000000 -0400
@@ -1,9 +1,7 @@
 /copyright.h////*///
 /copyright2.h////*///
-/cowapi.h////*///
 /cursors.h////*///
 /local.h////*///
-/oldbitmaps.h////*///
 /parsemeta.h////*///
 /patchlevel.h////*///
 /spopt.h////*///
@@ -14,11 +12,14 @@
 /map.h////*///
 /sound.h////*///
 /wlib.h////*///
-/version.h////*///
 /playerlist.h////*///
 /bitmaps.h////*///
-/data.h////*///
-/defs.h////*///
+/cowapi.h////*///
+/ltd_stats.h////*///
+/version.h////*///
 /packets.h////*///
-/proto.h////*///
 /struct.h////*///
+/defs.h////*///
+/oldbitmaps.h////*///
+/proto.h////*///
+/data.h////*///
diff -ru oldver/netrekxp/include/CVS/Entries.Old newver/netrekxp/include/CVS/Entries.Old
--- oldver/netrekxp/include/CVS/Entries.Old	2008-07-15 20:16:08.000000000 -0400
+++ newver/netrekxp/include/CVS/Entries.Old	2009-06-11 18:10:30.000000000 -0400
@@ -1,9 +1,7 @@
 /copyright.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /copyright2.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
-/cowapi.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /cursors.h/1.1.1.1/Tue Jan 21 21:27:55 2003//
 /local.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
-/oldbitmaps.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /parsemeta.h/1.4/Mon Nov 27 07:08:40 2006//
 /patchlevel.h/1.1.1.1/Tue Jan 21 21:27:54 2003//
 /spopt.h/1.1.1.1/Tue Jan 21 21:27:55 2003//
@@ -14,12 +12,15 @@
 /map.h/1.2/Thu Jun 14 12:26:34 2007//
 /sound.h/1.20/Thu Jun 14 12:26:35 2007//
 /wlib.h/1.14/Thu Jun 14 12:26:35 2007//
-/version.h/1.8/Sun Apr  6 22:57:48 2008//
 /playerlist.h/1.3/Mon Apr 14 00:51:02 2008//
 /bitmaps.h/1.25/Mon Jun 16 22:26:30 2008//
-/data.h/1.103/Sun Jul 13 02:49:29 2008//
-/defs.h/1.34/Tue Jul 15 23:37:45 2008//
-/packets.h/1.17/Mon Jul 14 02:28:06 2008//
-/proto.h/1.64/Wed Jul 16 00:01:35 2008//
-/struct.h/1.30/Tue Jul 15 02:20:23 2008//
+/cowapi.h/1.2/Sat May  9 20:46:12 2009//
+/ltd_stats.h/1.3/Thu Jun  4 01:26:29 2009//
+/version.h/1.11/Mon Jun  8 22:22:35 2009//
+/packets.h/1.27/Mon Jun  8 22:37:42 2009//
+/struct.h/1.35/Tue Jun  9 00:05:33 2009//
+/defs.h/1.39/Tue Jun  9 00:09:04 2009//
+/oldbitmaps.h/1.2/Tue Jun  9 01:17:53 2009//
+/proto.h/1.74/Wed Jun 10 22:12:42 2009//
+/data.h/1.122/Thu Jun 11 21:43:56 2009//
 D
diff -ru oldver/netrekxp/include/cowapi.h newver/netrekxp/include/cowapi.h
--- oldver/netrekxp/include/cowapi.h	2003-01-21 16:27:54.000000000 -0500
+++ newver/netrekxp/include/cowapi.h	2009-05-09 16:46:12.000000000 -0400
@@ -65,15 +65,4 @@
 extern unsigned LONG netaddr;
 #endif
 
-#ifdef RSA
-extern int useRsa;
-extern char key_name[];
-extern char client_type[];
-extern char client_arch[];
-extern char client_creator[];
-extern char client_comments[];
-extern char client_key_date[];
-
-#endif
-
 #endif /* _h_cow */
diff -ru oldver/netrekxp/include/data.h newver/netrekxp/include/data.h
--- oldver/netrekxp/include/data.h	2008-07-12 22:49:28.000000000 -0400
+++ newver/netrekxp/include/data.h	2009-06-11 17:43:56.000000000 -0400
@@ -126,18 +126,6 @@
 
 extern int messageon;
 
-#ifdef RSA
-extern char testdata[];
-extern int useRsa;
-extern char key_name[];
-extern char client_type[];
-extern char client_arch[];
-extern char client_creator[];
-extern char client_comments[];
-extern char client_key_date[];
-
-#endif
-
 #ifdef META
 extern char *metaServer;
 extern int metaPort;
@@ -151,13 +139,10 @@
 
 #define NUM_DIST 27        /* Number of distress macros */
 
-#ifdef NBT
 extern int MacroMode;
 extern int macrocnt;
 extern struct macro_list macro[];       /* NBT 2/26/93 */
 
-#endif
-
 #ifdef ROTATERACE
 extern int autoRotate;
 extern int rotate;
@@ -178,12 +163,8 @@
 
 extern int showMySpeed;
 extern int showOtherSpeed;
-
-#ifdef JUBILEE_PHASERS
 extern int colorfulPhasers;
-#endif
 
-#ifdef SHORT_PACKETS
 extern int why_dead;
 extern int tryShort, tryShort1;
 extern int recv_short;
@@ -196,7 +177,6 @@
 /* S_P2 */
 extern int shortversion;        /* Which version do we use? */
 
-#endif
 
 extern int globalerr;
 extern int ingame;              /* If player is in game - to distinguish between whether
@@ -279,6 +259,7 @@
 extern int planetHighlighting;
 extern int rotatePlanets;
 extern int logging;
+extern int log_ignore;
 extern int continueTractor;
 extern int tcounter;
 extern int autoKey;
@@ -292,6 +273,7 @@
 extern double Sin[], Cos[];
 
 extern int paradise;
+extern int login_received;
 extern int received_terrain_info;
 extern int terrain_x;
 extern int terrain_y;
@@ -335,18 +317,12 @@
 extern W_Icon etorp, mtorp;
 extern W_Icon eplasmatorp, mplasmatorp;
 
-#ifdef VSHIELD_BITMAPS
 #define SHIELD_FRAMES 5
 extern W_Icon base_vshield;
 extern W_Icon shield[SHIELD_FRAMES], cloakicon;
 extern int varyShields;
 extern int varyShieldsColor;
 
-#else
-extern W_Icon shield, cloakicon;
-
-#endif
-
 extern W_Icon base_hull;
 extern W_Icon hull[BMP_HULL_FRAMES];
 extern int vary_hull;
@@ -440,19 +416,18 @@
     shipCol[5], rColor, yColor, gColor, unColor, foreColor;
 extern char *colornames[COLORS];
 
-/* jn - SMARTMACRO */
 extern char lastMessage[];
 extern int MacroNum;
-extern char *classes[];
 extern char teamlet[];
 extern char *teamshort[];
 extern char pseudo[PSEUDOSIZE];
 extern char defpasswd[PSEUDOSIZE];
 extern char login[PSEUDOSIZE];
 
-extern struct rank ranks[NUMRANKS];
+extern struct rank *ranks;
 extern struct rank2 *ranks2;
 extern struct royalty *royal;
+extern int nranks;
 extern int nranks2;
 extern int nroyals;
 
@@ -462,16 +437,9 @@
 extern W_Window udpWin, phaserwin, hintWin;
 extern W_Window waitWin, waitqWin, countWin, motdButtonWin, motdWin;
 
-#ifdef SHORT_PACKETS
 extern W_Window spWin;
-
-#endif
-
-#ifdef NBT
 extern W_Window macroWin;
 
-#endif
-
 #ifdef META
 extern W_Window metaWin;
 
@@ -594,11 +562,6 @@
 
 #endif
 
-#ifdef CONTROL_KEY
-extern int use_control_key;
-
-#endif
-
 #ifdef DOC_WIN
 extern W_Window docwin, xtrekrcwin;
 extern int maxdoclines, maxxtrekrclines;
@@ -610,11 +573,8 @@
 
 #endif
 
-#ifdef BRMH
 extern int max_fd;
 
-#endif
-
 #ifdef TOOLS
 extern W_Window toolsWin;
 extern int shellTools;
@@ -646,11 +606,8 @@
 
 #endif
 
-#ifdef FEATURE_PACKETS
 extern int F_feature_packets;
 
-#endif
-
 extern int F_cloak_maxwarp;
 extern int F_self_8flags;
 extern int F_self_8flags2;
@@ -669,6 +626,10 @@
 extern int F_show_visibility_range;
 extern int F_sp_flags_all;
 extern int F_why_dead_2;
+extern int F_auto_weapons;
+extern int F_sp_rank;
+extern int F_sp_ltd;
+extern int F_tips;
 extern int F_terrain;		/* paradise */
 extern int F_armies_shipcap;	/* paradise */
 
@@ -680,9 +641,7 @@
 extern int F_dead_warp;
 #endif
 
-#ifdef UDP_PORTSWAP
 extern int portSwap;
-#endif
 
 // Load Ship Bitmaps from .BMP files
 extern char *fed_ship_bmp;
@@ -731,6 +690,7 @@
 extern int forceMono;
 extern int metaType;
 extern int metaStatusLevel;
+extern int metaBroncoOnly;
 extern int mungScrollbarColors;
 extern int showMotd;
 
@@ -834,6 +794,8 @@
 extern int mapscaleFactor;      /* allows for scaling of galactic window, unused */
 extern int fullBitmapRotation;  /* draw old bitmap sets to all angles */
 extern int hideConsole;         /* show console window or not */
+extern int autoPhaser;          /* phaser exact location of enemy target closest to cursor */
+extern int showTips;            /* clear MOTD and show server generated tip messages */
 
 extern struct context *context;
 #endif /* _h_data */
diff -ru oldver/netrekxp/include/defs.h newver/netrekxp/include/defs.h
--- oldver/netrekxp/include/defs.h	2008-07-15 19:37:44.000000000 -0400
+++ newver/netrekxp/include/defs.h	2009-06-08 20:09:04.000000000 -0400
@@ -33,9 +33,7 @@
 /* #$!@$#% length of address field of messages */
 #define ADDRLEN 10
 
-#ifdef NBT
 #define MAX_MACRO       500
-#endif
 
 #define MAXPLAYER 257           /* Paradise can apparently go over 36 ... for
                                    most purposes, the nplayers variable will be
@@ -61,7 +59,6 @@
 #define CLOAK_PHASES 12         /* number of drawing phases
                                  * in a cloak
                                  * engage/disengage */
-#define NUMRANKS 9
 #define PUCKARROW_LEN 6
 #define TIC_DIST 5000           /* distance from ship to draw
                                  * heading tic mark */
@@ -125,17 +122,6 @@
 #define TRACTCOST   20          /* fuel cost of activated
                                  * tractor beam */
 
-
-#ifdef RSA
-/* RSA stuff */
-#define RSA_VERSION "RSA v2.0 CLIENT"   /* string must begin with
-                                         * characters "RSA" */
-#define KEY_SIZE 32
-#define RESERVED_SIZE 16
-#define NAME_LEN 16
-#define KEYMAP_LEN 96
-#endif
-
 #define MSG_LEN 80
 
 
@@ -180,6 +166,7 @@
 #define TARG_SELF	0x8
 #define TARG_ENEMY      0x10
 #define TARG_FRIEND     0x20
+#define TARG_PLASMA     0x40
 
 #define DEFAULT_PORT	2592
 
@@ -406,7 +393,6 @@
 #define         NETSTAT_DF_NFT_S        "2000"
 
 
-#ifdef SHORT_PACKETS
 #define         SPK_VOFF        0       /* variable packets off */
 #define         SPK_VON         1       /* variable packets on */
 #define         SPK_MOFF        2       /* message packets off */
@@ -428,11 +414,6 @@
 #define         SPK_WFIELD      3
 #define         SPK_TFIELD      4
 #define         SPK_DONE        5
-#endif
-
-#ifndef NBT
-#define NBT
-#endif /* NBT */
 
 #define MAXMACLEN       85
 #define NBTM            0
Only in newver/netrekxp/include: ltd_stats.h
diff -ru oldver/netrekxp/include/oldbitmaps.h newver/netrekxp/include/oldbitmaps.h
--- oldver/netrekxp/include/oldbitmaps.h	2003-01-21 16:27:54.000000000 -0500
+++ newver/netrekxp/include/oldbitmaps.h	2009-06-08 21:17:52.000000000 -0400
@@ -1,4 +1,3 @@
-#ifdef VSHIELD_BITMAPS
 #define shield_width 20
 #define shield_height 20
 #define SHIELD_FRAMES   5
@@ -37,17 +36,6 @@
      0x0c, 0x00, 0x03, 0x18, 0x80, 0x01, 0x70, 0xe0, 0x00, 0xc0, 0x3f, 0x00},
 };
 
-#else
-static char shield_bits[] = {
-    0xc0, 0x3f, 0x00, 0x30, 0xc0, 0x00, 0x08, 0x00, 0x01, 0x04, 0x00, 0x02,
-    0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08,
-    0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08,
-    0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04,
-    0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x30, 0xc0, 0x00, 0xc0, 0x3f, 0x00
-};
-
-#endif
-
 
 static char cloak_bits[] = {
     0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x82, 0x00,
diff -ru oldver/netrekxp/include/packets.h newver/netrekxp/include/packets.h
--- oldver/netrekxp/include/packets.h	2008-07-15 22:27:18.000000000 -0400
+++ newver/netrekxp/include/packets.h	2009-06-23 18:14:04.000000000 -0400
@@ -77,10 +77,8 @@
 #define SP_SC_SEQUENCE  30      /* this trans is
                                  * semi-critical info */
 
-#ifdef RSA
-#define SP_RSA_KEY	31      /* handles binary
-                                 * verification */
-#endif
+#define SP_RSA_KEY	31      /* deprecated - handles binary verification */
+
 
 // Note the conflicting defines for types 32 and 33
 #define SP_MOTD_PIC	32	/* paradise - motd bitmap pictures */
@@ -93,8 +91,6 @@
 #define SP_THINGY	37	/* paradise - thingy location */
 #define SP_THINGY_INFO	38	/* paradise - thingy status */
 #define SP_SHIP_CAP	39	/* Handles server ship mods */
-
-#ifdef SHORT_PACKETS
 #define SP_S_REPLY      40      /* reply to send-short
                                  * request */
 #define SP_S_MESSAGE    41      /* var. Message Packet */
@@ -104,13 +100,7 @@
 #define SP_S_YOU_SS     44      /* your ship status */
 #define SP_S_PLAYER     45      /* variable length player
                                  * packet */
-#endif
-
-#ifdef PING
 #define SP_PING         46      /* ping packet */
-#endif
-
-#ifdef SHORT_PACKETS
 #define SP_S_TORP       47      /* variable length torp
                                  * packet */
 #define SP_S_TORP_INFO  48      /* SP_S_TORP with TorpInfo */
@@ -133,12 +123,13 @@
 #define SP_S_PHASER     57      /* see struct */
 #define SP_S_KILLS      58      /* # of kills player have */
 #define SP_S_STATS      59      /* see SP_STATS */
+#define SP_RANK         61      /* rank data */
+#define SP_LTD          62      /* LTD stats for character */
 
 /* variable length packets */
 #define VPLAYER_SIZE    4
 #define SHORTVERSION    11      /* S_P2 */
 #define OLDSHORTVERSION 10      /* Short packets version 1*/
-#endif
 
 
 /* packets sent from remote client to xtrek server */
@@ -187,10 +178,7 @@
 #define CP_UDP_REQ      35      /* request UDP on/off */
 #define CP_SEQUENCE     36      /* sequence # packet */
 
-#ifdef RSA
-#define CP_RSA_KEY      37      /* handles binary
-                                 * verification */
-#endif
+#define CP_RSA_KEY      37      /* deprecated - handles binary verification */
 
 /* Note the conflicting defines for packet type 38*/
 #define CP_ASK_MOTD	38	/* paradise - request MOTD */
@@ -198,19 +186,18 @@
 
 #define CP_PING_RESPONSE 42     /* client response */
 
-#ifdef SHORT_PACKETS
 #define CP_S_REQ                43
 #define CP_S_THRS               44
 #define CP_S_MESSAGE    45      /* vari. Message Packet */
 #define CP_S_RESERVED       46
 #define CP_S_DUMMY      47
-#endif
 
-#ifdef FEATURE_PACKETS
 #define CP_FEATURE	60
 #define SP_FEATURE	60
-#endif
 
+/* special paradise type tells us when to update the display on playback.
+    Not sent or received, only placed in the recorder file */
+#define REC_UPDATE 127
 
 #define SOCKVERSION 	4
 
@@ -842,7 +829,6 @@
     char name[16];
 };
 
-#ifdef FEATURE_PACKETS
 struct feature_cpacket
 {
     char type;
@@ -852,30 +838,111 @@
     char name[80];
 };
 
-#endif
-
-#ifdef RSA
-struct rsa_key_spacket
+struct rank_spacket
 {
-    char type;                  /* SP_RSA_KEY */
-    char pad1;
-    char pad2;
-    char pad3;
-    unsigned char data[KEY_SIZE];
+    char        type;           /* SP_RANK */
+    char        rnum;           /* rank number */
+    char        rmax;           /* rank number maximum */
+    char        pad;
+    char        name[16];       /* full rank name */
+    int         hours;          /* hundredths of hours required */
+    int         ratings;        /* hundredths of ratings required */
+    int         offense;        /* hundredths of offense required */
+    char        cname[8];       /* short 'curt' rank name */
 };
 
-struct rsa_key_cpacket
+#define LTD_VERSION 'a'         /* version for SP_LTD packet */
+
+#pragma pack(push,1) /* Necessary to remove padding during compile,
+                        size of struct needs to be exact, GCC equivalent
+                        is __attribute__ (( packed )) */
+struct ltd_spacket
 {
-    char type;                  /* CP_RSA_KEY */
-    char pad1;
-    char pad2;
-    char pad3;
-    unsigned char global[KEY_SIZE];
-    unsigned char public[KEY_SIZE];
-    unsigned char resp[KEY_SIZE];
+    char type;
+    char version;
+    char pad[2];
+    unsigned int kt;            /* kills total, kills.total */
+    unsigned int kmax;          /* kills max, kills.max */
+    unsigned int k1;            /* kills first, kills.first */
+    unsigned int k1p;           /* kills first potential, kills.first_potential */
+    unsigned int k1c;           /* kills first converted, kills.first_converted */
+    unsigned int k2;            /* kills second, kills.second */
+    unsigned int k2p;           /* kills second potential, kills.second_potential */
+    unsigned int k2c;           /* kills second converted, kills.second_converted */
+    unsigned int kbp;           /* kills by phaser, kills.phasered */
+    unsigned int kbt;           /* kills by torp, kills.torped */
+    unsigned int kbs;           /* kills by smack, kills.plasmaed */
+    unsigned int dt;            /* deaths total, deaths.total */
+    unsigned int dpc;           /* deaths as potential carrier, deaths.potential */
+    unsigned int dcc;           /* deaths as converted carrier, deaths.converted */
+    unsigned int ddc;           /* deaths as dooshed carrier, deaths.dooshed */
+    unsigned int dbp;           /* deaths by phaser, deaths.phasered */
+    unsigned int dbt;           /* deaths by torp, deaths.torped */
+    unsigned int dbs;           /* deaths by smack, deaths.plasmaed */
+    unsigned int acc;           /* actual carriers created, deaths.acc */
+    unsigned int ptt;           /* planets taken total, planets.taken */
+    unsigned int pdt;           /* planets destroyed total, planets.destroyed */
+    unsigned int bpt;           /* bombed planets total, bomb.planets */
+    unsigned int bp8;           /* bombed planets <=8, bomb.planets_8 */
+    unsigned int bpc;           /* bombed planets core, bomb.planets_core */
+    unsigned int bat;           /* bombed armies total, bomb.armies */
+    unsigned int ba8;           /* bombed_armies <= 8, bomb.armies_8 */
+    unsigned int bac;           /* bombed armies core, bomb.armies_core */
+    unsigned int oat;           /* ogged armies total, ogged.armies */
+    unsigned int odc;           /* ogged dooshed carrier, ogged.dooshed */
+    unsigned int occ;           /* ogged converted carrier, ogged.converted */
+    unsigned int opc;           /* ogged potential carrier, ogged.potential */
+    unsigned int ogc;           /* ogged bigger carrier, ogged.bigger_ship */
+    unsigned int oec;           /* ogged same carrier, ogged.same_ship */
+    unsigned int olc;           /* ogger smaller carrier, ogged.smaller_ship */
+    unsigned int osba;          /* ogged sb armies, ogged.sb_armies */
+    unsigned int ofc;           /* ogged friendly carrier, ogged.friendly */
+    unsigned int ofa;           /* ogged friendly armies, ogged.friendly_armies */
+    unsigned int at;            /* armies carried total, armies.total */
+    unsigned int aa;            /* armies used to attack, armies.attack */
+    unsigned int ar;            /* armies used to reinforce, armies.reinforce */
+    unsigned int af;            /* armies ferried, armies.ferries */
+    unsigned int ak;            /* armies killed, armies.killed */
+    unsigned int ct;            /* carries total, carries.total */
+    unsigned int cp;            /* carries partial, carries.partial */
+    unsigned int cc;            /* carries completed, carries.completed */
+    unsigned int ca;            /* carries to attack, carries.attack */
+    unsigned int cr;            /* carries to reinforce, carries.reinforce */
+    unsigned int cf;            /* carries to ferry, carries.ferries */
+    unsigned int tt;            /* ticks total, ticks.total */
+    unsigned int tyel;          /* ticks in yellow, ticks.yellow */
+    unsigned int tred;          /* ticks in red, ticks.red */
+    unsigned int tz0;           /* ticks in zone 0, ticks.zone[0] */
+    unsigned int tz1;           /* ticks in zone 1, ticks.zone[1] */
+    unsigned int tz2;           /* ticks in zone 2, ticks.zone[2] */
+    unsigned int tz3;           /* ticks in zone 3, ticks.zone[3] */
+    unsigned int tz4;           /* ticks in zone 4, ticks.zone[4] */
+    unsigned int tz5;           /* ticks in zone 5, ticks.zone[5] */
+    unsigned int tz6;           /* ticks in zone 6, ticks.zone[6] */
+    unsigned int tz7;           /* ticks in zone 7, ticks.zone[7] */
+    unsigned int tpc;           /* ticks as potential carrier, ticks.potential */
+    unsigned int tcc;           /* ticks as carrier++, ticks.carrier */
+    unsigned int tr;            /* ticks in repair, ticks.repair */
+    unsigned int dr;            /* damage repaired, damage_repaired */
+    unsigned int wpf;           /* weap phaser fired, weapons.phaser.fired */
+    unsigned int wph;           /* weap phaser hit, weapons.phaser.hit */
+    unsigned int wpdi;          /* weap phaser damage inflicted, weapons.phaser.damage.inflicted */
+    unsigned int wpdt;          /* weap phaser damage taken, weapons.phaser.damage.taken */
+    unsigned int wtf;           /* weap torp fired, weapons.torps.fired */
+    unsigned int wth;           /* weap torp hit, weapons.torps.hit */
+    unsigned int wtd;           /* weap torp detted, weapons.torps.detted */
+    unsigned int wts;           /* weap torp self detted, weapons.torps.selfdetted */
+    unsigned int wtw;           /* weap torp hit wall, weapons.torps.wall */
+    unsigned int wtdi;          /* weap torp damage inflicted, weapons.torps.damage.inflicted */
+    unsigned int wtdt;          /* weap torp damage taken, weapons.torps.damage.taken */
+    unsigned int wsf;           /* weap smack fired, weapons.plasma.fired */
+    unsigned int wsh;           /* weap smack hit, weapons.plasma.hit */
+    unsigned int wsp;           /* weap smack phasered, weapons.plasma.phasered */
+    unsigned int wsw;           /* weap smack hit wall, weapons.plasma.wall */
+    unsigned int wsdi;          /* weap smack damage inflicted, weapons.plasma.damage.inflicted */
+    unsigned int wsdt;          /* weap smack damage taken, weapons.plasma.damage.taken */
 };
-
-#endif
+#pragma pack(pop) /* Restores packing values saved by push */
 
 struct ship_cap_spacket
 {                               /* Server configuration of
@@ -907,61 +974,61 @@
                         size of struct needs to be exact, GCC equivalent
                         is __attribute__ (( packed )) */
 struct generic_32_spacket
-{
-    char        type;
-    char        pad[31];
-};
-#define GENERIC_32_LENGTH 32
-#define COST_GENERIC_32 (F_sp_generic_32 ? GENERIC_32_LENGTH : 0)
+{
+    char        type;
+    char        pad[31];
+};
+#define GENERIC_32_LENGTH 32
+#define COST_GENERIC_32 (F_sp_generic_32 ? GENERIC_32_LENGTH : 0)
 struct generic_32_spacket_a
-{
-    char        type;
-    char        version;        /* alphabetic, 0x60 + version */
-    u_short     repair_time;    /* server estimate of repair time in seconds */
-    u_short     pl_orbit;       /* what planet player orbiting, -1 if none */
-    char        pad1[26];
-    /* NOTE: this version didn't use network byte order for the shorts */
-};
-#define GENERIC_32_VERSION_A 1
+{
+    char        type;
+    char        version;        /* alphabetic, 0x60 + version */
+    u_short     repair_time;    /* server estimate of repair time in seconds */
+    u_short     pl_orbit;       /* what planet player orbiting, -1 if none */
+    char        pad1[26];
+    /* NOTE: this version didn't use network byte order for the shorts */
+};
+#define GENERIC_32_VERSION_A 1
 struct generic_32_spacket_b
-{
-    char        type;
-    char        version;        /* alphabetic, 0x60 + version */
-    u_short     repair_time;    /* server estimate of repair time, seconds  */
-    char        pl_orbit;       /* what planet player orbiting, -1 if none  */
-    u_short     gameup;                  /* server status flags             */
-    u_char      tournament_teams;        /* what teams are involved         */
-    u_char      tournament_age;          /* time since last t-mode start    */
-    char        tournament_age_units;    /* units for above, see s2du       */
-    u_char      tournament_remain;       /* remaining INL game time         */
-    char        tournament_remain_units; /* units for above, see s2du       */
-    u_char      starbase_remain;         /* starbase reconstruction, mins   */
-    u_char      team_remain;             /* team surrender time, seconds    */
-    char        pad1[18];
+{
+    char        type;
+    char        version;        /* alphabetic, 0x60 + version */
+    u_short     repair_time;    /* server estimate of repair time, seconds  */
+    char        pl_orbit;       /* what planet player orbiting, -1 if none  */
+    u_short     gameup;                  /* server status flags             */
+    u_char      tournament_teams;        /* what teams are involved         */
+    u_char      tournament_age;          /* time since last t-mode start    */
+    char        tournament_age_units;    /* units for above, see s2du       */
+    u_char      tournament_remain;       /* remaining INL game time         */
+    char        tournament_remain_units; /* units for above, see s2du       */
+    u_char      starbase_remain;         /* starbase reconstruction, mins   */
+    u_char      team_remain;             /* team surrender time, seconds    */
+    char        pad1[18];
 };
 #pragma pack(pop) /* Restores packing values saved by push */
-
-#define GENERIC_32_VERSION_B 2
-#define GENERIC_32_VERSION GENERIC_32_VERSION_B /* default */
-
-/* SP_GENERIC_32 versioning instructions:
-
-   we start with version 'a', and each time a structure is changed
-   increment the version and reduce the pad size, keeping the packet
-   the same size ...
-
-   client is entitled to trust fields in struct that were defined at a
-   particular version ...
-
-   client is to send CP_FEATURE with SP_GENERIC_32 value 1 for version
-   'a', value 2 for version 'b', etc ...
-
-   server is to reply with SP_FEATURE with SP_GENERIC_32 value set to
-   the maximum version it supports (not the version requested by the
-   client), ...
-
-   server is to send SP_GENERIC_32 packets of the highest version it
-   knows about, but no higher than the version the client asks for.
+
+#define GENERIC_32_VERSION_B 2
+#define GENERIC_32_VERSION GENERIC_32_VERSION_B /* default */
+
+/* SP_GENERIC_32 versioning instructions:
+
+   we start with version 'a', and each time a structure is changed
+   increment the version and reduce the pad size, keeping the packet
+   the same size ...
+
+   client is entitled to trust fields in struct that were defined at a
+   particular version ...
+
+   client is to send CP_FEATURE with SP_GENERIC_32 value 1 for version
+   'a', value 2 for version 'b', etc ...
+
+   server is to reply with SP_FEATURE with SP_GENERIC_32 value set to
+   the maximum version it supports (not the version requested by the
+   client), ...
+
+   server is to send SP_GENERIC_32 packets of the highest version it
+   knows about, but no higher than the version the client asks for.
 */
 
 struct flags_all_spacket
@@ -975,7 +1042,6 @@
 #define FLAGS_ALL_CLOAK_OFF_SHIELDS_UP   2
 #define FLAGS_ALL_CLOAK_OFF_SHIELDS_DOWN 3
 
-#ifdef SHORT_PACKETS
 struct shortreq_cpacket
 {                               /* CP_S_REQ */
     char type;
@@ -1158,13 +1224,12 @@
     unsigned int sbmaxkills;    /* max kills as sb * 100 */
 };
 
-#endif
 
 /* Shapes of thingys.  It would be best to add to the end of this list and
    try to coordinate your additions with other hackers. */
 enum thingy_types {
     SHP_BLANK, SHP_MISSILE, SHP_BOOM, SHP_TORP, SHP_PLASMA, SHP_MINE,
-    SHP_PBOOM, SHP_FIGHTER, SHP_WARP_BEACON, SHP_FBOOM, SHP_DBOOM
+    SHP_PBOOM, SHP_FIGHTER, SHP_FBOOM, SHP_DBOOM
 };
 
 struct thingy_info_spacket {
@@ -1177,7 +1242,7 @@
 
 struct thingy_spacket {
     char    type;		/* SP_THINGY */
-    char    dir;
+    unsigned char    dir;
     unsigned short   tnum;
     LONG    x, y;
 };
@@ -1186,19 +1251,19 @@
 /* 5/16/95 rpg */
 
 struct terrain_info_packet2 {
-    char   type;		/* SP_TERRAIN_INFO2 */
-    char   pad;
+    unsigned char   type;		/* SP_TERRAIN_INFO2 */
+    unsigned char   pad;
     unsigned short  pad2;
     unsigned short  xdim;
     unsigned short  ydim;
 };
 
 struct terrain_packet2 {
-    char   type;		/* SP_TERRAIN2 */
-    char   sequence;
-    char   total_pkts;
-    char   length;
-    char   terrain_type[128];	/* Ugh... this needs to be fixed 5/16/95 rpg */
+    unsigned char   type;		/* SP_TERRAIN2 */
+    unsigned char   sequence;
+    unsigned char   total_pkts;
+    unsigned char   length;
+    unsigned char   terrain_type[128];	/* Ugh... this needs to be fixed 5/16/95 rpg */
  /* unsigned short  terrain_alt1[128]; */
  /* unsigned short  terrain_alt2[128]; */
 };
diff -ru oldver/netrekxp/include/proto.h newver/netrekxp/include/proto.h
--- oldver/netrekxp/include/proto.h	2008-07-15 20:01:34.000000000 -0400
+++ newver/netrekxp/include/proto.h	2009-06-10 18:12:42.000000000 -0400
@@ -150,7 +150,6 @@
                unsigned char to);
 int instr (char *string1,
            char *string2);
-// static void CheckFeatures(char *m);
 void sendVersion (void);
 #ifdef CLUECHECKBORG
 void ClueRespond (char *message);
@@ -180,7 +179,6 @@
 /******************************************************************************/
 /***  feature.c                                                             ***/
 /******************************************************************************/
-#ifdef FEATURE_PACKETS
 void sendFeature (char *name,
                   char feature_type,
                   int value,
@@ -188,7 +186,6 @@
                   char arg2);
 struct feature_cpacket;
 void handleFeature (struct feature_cpacket *packet);
-#endif
 
 /******************************************************************************/
 /***  findslot.c                                                            ***/
@@ -824,10 +821,11 @@
 int realNumShips (int owner);
 int deadTeam (int owner);
 int checkBold (char *line);
+void motd_refresh (void);
 void ClearMotd (void);
 void showMotdWin (W_Window motdwin, int atline);
 struct list;
-void showValues (struct list *data);
+void showValues (struct motd_line *data);
 void newMotdLine (char *line);
 void newMotdPic (int x, int y, int width, int height, char *bits, int page);
 void getResources (char *prog);
@@ -947,11 +945,7 @@
 /******************************************************************************/
 /***  redraw.c
 /******************************************************************************/
-#ifdef BRMH
 void intrupt (fd_set * readfds);
-#else
-void intrupt (void);
-#endif
 void redraw (void);
 void stline (int flag);
 void redrawTstats (void);
@@ -979,28 +973,6 @@
                    int cy);
 void rotateGalaxy (void);
 
-/******************************************************************************/
-/***  rsa_box.c
-/******************************************************************************/
-void rsa_black_box (unsigned char *out,
-                    unsigned char *in,
-                    unsigned char *public,
-                    unsigned char *global);
-void rsa_partial_box_0 (MP_INT * m,
-                        MP_INT * r,
-                        MP_INT * g);
-void rsa_partial_box_1 (MP_INT * m,
-                        MP_INT * r,
-                        MP_INT * g);
-void rsa_partial_box_2 (MP_INT * m,
-                        MP_INT * r,
-                        MP_INT * g);
-void rsa_partial_box_3 (MP_INT * m,
-                        MP_INT * r,
-                        MP_INT * g);
-void rsa_partial_box_4 (MP_INT * m,
-                        MP_INT * r,
-                        MP_INT * g);
 
 /******************************************************************************/
 /***  senddist.c
@@ -1155,8 +1127,8 @@
 void handleGeneric32 (struct generic_32_spacket *packet);
 struct flags_all_spacket;
 void handleFlagsAll (struct flags_all_spacket *packet);
-struct rsa_key_spacket;
-void handleRSAKey (struct rsa_key_spacket *packet);
+void handleRank (struct rank_spacket *packet);
+void handleLtd (struct ltd_spacket *packet);
 void initialize_players (void);
 void initialize_plasmas (void);
 void initialize_torps (void);
@@ -1185,9 +1157,7 @@
 struct udp_reply_spacket;
 void handleUdpReply (struct udp_reply_spacket *packet);
 int openUdpConn (void);
-#ifdef UDP_PORTSWAP
 int connUdpConn ();
-#endif
 int recvUdpConn (void);
 int closeUdpConn (void);
 void printUdpInfo (void);
diff -ru oldver/netrekxp/include/struct.h newver/netrekxp/include/struct.h
--- oldver/netrekxp/include/struct.h	2008-07-15 22:35:30.000000000 -0400
+++ newver/netrekxp/include/struct.h	2009-06-08 20:05:32.000000000 -0400
@@ -166,8 +166,9 @@
  * (append) ) byte18++: the text to pre or append .. depending on termination
  * above. text is null terminated and the last thing in this distress */
 
-/* The following defines are for gameup field */
+/* The following defines are for gameup field and SP_GENERIC_32 'b' */
 #define GU_GAMEOK 0x1
+#define GU_UNSAFE 0x1			/* not currently safe due idle */
 #define GU_PRACTICE 0x2			/* Basepractice robot is present */
 /* also set by INL robot during a pause, in pre-game, or post-game */
 #define GU_CHAOS 0x4
@@ -409,12 +410,7 @@
                                  * onto, set only client */
     short pl_orbit;             /* Planet orbiting, sent by server */
     short p_playerl;            /* Player locked onto */
-
-#ifdef ARMY_SLIDER
     int p_armies;               /* XXX: for stats */
-#else
-    short p_armies;
-#endif                          /* ARMY_SLIDER */
     int p_fuel;
     short p_explode;            /* Keeps track of final
                                  * explosion */
@@ -520,17 +516,6 @@
 };
 
 
-#ifdef RSA
-struct rsa_key
-{
-    unsigned char client_type[KEY_SIZE];
-    unsigned char architecture[KEY_SIZE];
-    unsigned char global[KEY_SIZE];
-    unsigned char public[KEY_SIZE];
-};
-
-#endif
-
 /* An important note concerning planets:  The game assumes that the planets
  * are in a 'known' order.  Ten planets per team, the first being the home
  * planet. */
@@ -736,11 +721,14 @@
 
 #define PLANETTYPE 0x1
 #define PLAYERTYPE 0x2
+#define PLASMATYPE 0x4
 
 struct obtype
 {
     int o_type;
     int o_num;
+    int o_dist_x;
+    int o_dist_y;
 };
 
 struct rank
diff -ru oldver/netrekxp/include/version.h newver/netrekxp/include/version.h
--- oldver/netrekxp/include/version.h	2008-04-06 18:57:48.000000000 -0400
+++ newver/netrekxp/include/version.h	2009-06-08 18:22:34.000000000 -0400
@@ -3,4 +3,4 @@
 /* store the version info here */
 
 static char mvers[] = "1.0";
-static char version[] = "Netrek XP 2009";
\ No newline at end of file
+static char version[] = "Netrek XP 2010";
diff -ru oldver/netrekxp/resources/docs/CVS/Entries newver/netrekxp/resources/docs/CVS/Entries
--- oldver/netrekxp/resources/docs/CVS/Entries	2008-07-15 20:16:50.000000000 -0400
+++ newver/netrekxp/resources/docs/CVS/Entries	2009-06-11 18:10:40.000000000 -0400
@@ -1,7 +1,7 @@
-/newbie.txt/1.1.1.1/Tue Jan 21 21:28:04 2003//
 /README for Win95, Win98, and WinME.TXT/1.6/Thu Jun 14 12:26:35 2007//
-/hints.dat/1.12/Thu Jun 14 12:26:37 2007/-kb/
-/netrekxp.doc/1.16/Thu Jun 14 12:26:38 2007//
-/changes.txt/1.205/Tue Jul 15 23:39:44 2008//
-/netrekrc_options.txt/1.57/Tue Jul 15 23:40:50 2008//
+/hints.dat/1.13/Fri Mar  6 00:00:37 2009/-kb/
+/netrekxp.doc/1.17/Sat May  9 20:39:14 2009//
+/newbie.txt/1.2/Sat May  9 20:39:56 2009//
+/changes.txt/1.220/Thu Jun 11 21:52:25 2009//
+/netrekrc_options.txt/1.63/Thu Jun 11 21:52:58 2009//
 D
diff -ru oldver/netrekxp/resources/docs/CVS/Entries.Extra newver/netrekxp/resources/docs/CVS/Entries.Extra
--- oldver/netrekxp/resources/docs/CVS/Entries.Extra	2008-07-15 20:16:50.000000000 -0400
+++ newver/netrekxp/resources/docs/CVS/Entries.Extra	2009-06-11 18:10:40.000000000 -0400
@@ -1,6 +1,6 @@
-/newbie.txt////*///
 /README for Win95, Win98, and WinME.TXT////*///
 /hints.dat////*///
 /netrekxp.doc////*///
+/newbie.txt////*///
 /changes.txt////*///
 /netrekrc_options.txt////*///
diff -ru oldver/netrekxp/resources/docs/CVS/Entries.Extra.Old newver/netrekxp/resources/docs/CVS/Entries.Extra.Old
--- oldver/netrekxp/resources/docs/CVS/Entries.Extra.Old	2008-04-19 12:22:58.000000000 -0400
+++ newver/netrekxp/resources/docs/CVS/Entries.Extra.Old	2009-06-05 23:29:18.000000000 -0400
@@ -1,6 +1,6 @@
-/newbie.txt////*///
 /README for Win95, Win98, and WinME.TXT////*///
 /hints.dat////*///
 /netrekxp.doc////*///
+/newbie.txt////*///
 /changes.txt////*///
 /netrekrc_options.txt////*///
diff -ru oldver/netrekxp/resources/docs/CVS/Entries.Old newver/netrekxp/resources/docs/CVS/Entries.Old
--- oldver/netrekxp/resources/docs/CVS/Entries.Old	2008-04-19 12:22:58.000000000 -0400
+++ newver/netrekxp/resources/docs/CVS/Entries.Old	2009-06-05 23:29:18.000000000 -0400
@@ -1,7 +1,7 @@
-/newbie.txt/1.1.1.1/Tue Jan 21 21:28:04 2003//
 /README for Win95, Win98, and WinME.TXT/1.6/Thu Jun 14 12:26:35 2007//
-/hints.dat/1.12/Thu Jun 14 12:26:37 2007/-kb/
-/netrekxp.doc/1.16/Thu Jun 14 12:26:38 2007//
-/changes.txt/1.204/Fri Apr 18 22:00:57 2008//
-/netrekrc_options.txt/1.56/Fri Apr 18 21:59:55 2008//
+/hints.dat/1.13/Fri Mar  6 00:00:37 2009/-kb/
+/netrekxp.doc/1.17/Sat May  9 20:39:14 2009//
+/newbie.txt/1.2/Sat May  9 20:39:56 2009//
+/changes.txt/1.219/Sat Jun  6 03:17:40 2009//
+/netrekrc_options.txt/1.62/Sat Jun  6 03:26:40 2009//
 D
diff -ru oldver/netrekxp/resources/docs/changes.txt newver/netrekxp/resources/docs/changes.txt
--- oldver/netrekxp/resources/docs/changes.txt	2008-07-16 22:55:56.000000000 -0400
+++ newver/netrekxp/resources/docs/changes.txt	2009-07-15 17:53:34.000000000 -0400
@@ -1,3 +1,46 @@
+Netrek XP 2010, Version 1.0: (Released July-2009)
+
+General bug fixes:
+1) Many paradise bugs fixed.
+2) Many cambot bugs fixed.
+3) Fixed phaser draw bug with weaponsOnMap:off.
+4) Fixed double buffering bug which was causing performance issues on certain
+hardware configurations.
+5) Fix bug with custom color palette (forcedisplay = 2) which caused local
+window to have a red background.
+6) Fixed bug causing ship values on dashboard to not display properly when
+upgrades were bought in sturgeon.
+7) Fixed bug where font size was not saving properly.
+
+New features:
+1) Warning messages are no longer logged.  Cuts down on logfile spam.
+2) Add hint about options menu to the startup hint list.
+3) Cambot playback now works for paradise recordings made by paradise clients.
+4) Removed RSA verification as this is now deprecated server side.  Using new
+client identification method as defined in server.
+5) Added netrekrc option "autoPhaser" to phaser exact location of enemy target
+(enemy ship or enemy plasma) closest to cursor.  Can target cloaked ships.
+Enemy must be within phaser range of your ship.  Only works if server has
+feature packet F_auto_weapons enabled.
+6) Added support for server feature packet SP_RANK.  This allows the rank
+table to be dynamic rather than static.  In short, it allows servers to
+have more or less ranks than normal.  Practical application - grand admiral
+rank on sturgeon now displays correctly in player list and rank window.  And
+rank window now properly displays offense requirements for rank.
+7) Added support for server feature packet SP_LTD.  This allows detailed stats
+to be sent to the client.
+8) Added netrekrc option "metaBroncoOnly" to only list Bronco/INL servers in
+the list of servers provided by the aggregate metaservers.
+9) Added support for server feature packet TIPS.  This clears the MOTD window
+and provides tips on how to improve your play based on data the server records
+of your current session.
+10) Added netrekrc option "showTips" to choose whether or not to display the
+server tip messages supplied by TIPS.
+11) Client version info now has 1 letter identifier to show where client was
+downloaded from (p = playnetrek.org, n = netrek.org, d = download.com).
+12) Addition of 4th metaserver to the metaserver list.
+
+
 Netrek XP 2009, Version 1.0: (Released July-2008)
 
 General bug fixes:
@@ -205,7 +248,7 @@
 been replaced by the mainTitleBar option.
 14) Added "viewRange: (0-3)" option to draw a dashed circle on the map showing
 the range at which enemies can see you.  You can choose to draw it at all times,
-only when you are cloaked, only when carrying, or not at all.  If orbitting a
+only when you are cloaked, only when carrying, or not at all.  If orbiting a
 foreign planet, no circle is drawn, as you are visible to all.  View range is
 disabled if your ship is a starbase.  Cloaked view range will also show on the
 tactical map if tactical is resized large enough.  Showing view range circles on
@@ -235,7 +278,7 @@
 phantom armies on a planet or delay on bombing a planet flat because you lost a
 planet packet.  Also no more wondering if you missed a planet packet while
 dropping if planet army count doesn't go down.  This cross-check with server
-occurs 10 times/second for a planet you are orbitting (critical), and will cycle
+occurs 10 times/second for a planet you are orbiting (critical), and will cycle
 through the rest of the planets at a rate of 1 planet every 100 ms.  Adds 100
 bytes/sec in upstream data from client to server.
 22) New netrekrc option "infoRange: (on)/off" to draw a dashed white box on your
@@ -390,7 +433,7 @@
   as it allows for future data to be sent in this packet (lots of empty room).  Currently
   it sends your ship's repair time..removing the need for the client side repair time
   calculation, which had several flaws and didn't work well with observers.  It also
-  sends info on which planet you are orbitting.
+  sends info on which planet you are orbiting.
 - added "UseFullShipInfo: (on)/off" to choose whether to use short or long type packets
   for other player info.  Default is on.  This netrekrc setting controls whether the
   feature packet FULL_DIRECTION_RESOLUTION is used.
@@ -1029,4 +1072,4 @@
 - changed default documentation file to be netrekxp.doc instead of brm.doc
 - compiled netrekxp.doc from old version of cow.doc. Still some features missing
 - fixed some bitmaps 
-- reduced bitmap sizes
\ No newline at end of file
+- reduced bitmap sizes
diff -ru oldver/netrekxp/resources/docs/hints.dat newver/netrekxp/resources/docs/hints.dat
--- oldver/netrekxp/resources/docs/hints.dat	2007-06-14 08:26:36.000000000 -0400
+++ newver/netrekxp/resources/docs/hints.dat	2009-03-05 19:00:36.000000000 -0500
@@ -1,6 +1,7 @@
 to  disable  this  window  permanently  you  should  add  "showHints: off"  to  your  rc  file.
 you can close this window with shift-right click if you don't have a middle mouse button.
 most windows (such as this one) can be closed by the unmap special windows key.
+you can open the options menu with shift-O.  Most game settings can be changed from here.
 the red circle you may see flash around your ship when detting is the range at which you can detonate enemy torpedoes, you can turn this circle off through the ship menu.
 you can use Alt+Enter to toggle the main title bar on and off.
 you can use Ctrl+a and Ctrl+z to zoom in/out the tactical window.
diff -ru oldver/netrekxp/resources/docs/netrekrc_options.txt newver/netrekxp/resources/docs/netrekrc_options.txt
--- oldver/netrekxp/resources/docs/netrekrc_options.txt	2008-07-15 19:40:50.000000000 -0400
+++ newver/netrekxp/resources/docs/netrekrc_options.txt	2009-06-11 17:52:58.000000000 -0400
@@ -8,6 +8,7 @@
 # 2 - gray
 
 allowWheelActions:        (on/off) allow mouse wheel to work in non-scrolling windows
+autoPhaser:               (on/off) auto aim phasers
 autoQuit:                 (int) autoquit time after death
 autoRotate:               (on/off) automatically rotate galaxy so teams are on left side of map
 autoSetWar:               (0-2) declare war with enemy races when you first join
@@ -102,7 +103,7 @@
 
 messageKeyOnly:           (on/off) only start messages with the actual message key(s),
                                    if cursor is in the message windows
-messageKeyOnly: 1
+metaBroncoOnly:           (on/off) only list Bronco/INL servers
 metaCache:                (path) path to metacache file
 metaPing:                 (on/off) show ping stats to all servers in metaserver window
 metaPort:                 (port) metaserver port
@@ -272,6 +273,7 @@
 showPlanetOwner:          (on/off) show planet owner on galaxy
 showStars:                (on/off) show background stars
 showStats:                (on/off) show ship statistics
+showTips:                 (on/off) show server generated tip messages
 showTractorPressor:       (on/off) show tractors and pressors
 shrinkPhaserOnMiss:       (on/off) don't draw phaser line on miss
 singleMacro:              (string) macro keys that will trigger macro without macro mode
@@ -330,8 +332,6 @@
 useGeneric32:             (on/off) receive generic_32 server packets which carry repair time, etc.
 useLite:                  (on/off) use beeplite
 defLite:                  (on/off) use default beeplite settings
-useRSA:                   (on/off) use RSA client verification
-useRSA.<server>           (on/off) user RSA for <server>
 varyShields:              (on/off) change shields graphic on shield damage
 varyShieldsColor:         (on/off) change shields color on shield damage
 viewBox:                  (on/off) show tactical window boundaries on map
diff -ru oldver/netrekxp/resources/docs/netrekxp.doc newver/netrekxp/resources/docs/netrekxp.doc
--- oldver/netrekxp/resources/docs/netrekxp.doc	2007-06-14 08:26:38.000000000 -0400
+++ newver/netrekxp/resources/docs/netrekxp.doc	2009-05-09 16:39:14.000000000 -0400
@@ -94,8 +94,6 @@
   -A <password>		: specify character password
   -C <name>		: specify character name
   -U <udp port>		: specify UDP port
-  -o			: use old style binary verification
-  -R			: use RSA binary verification
   -P			: log server packets
   -c			: check players on server and return list
   -f <file name>		: record game to file (can be viewed later with -F)
diff -ru oldver/netrekxp/resources/docs/newbie.txt newver/netrekxp/resources/docs/newbie.txt
--- oldver/netrekxp/resources/docs/newbie.txt	2003-01-21 16:28:04.000000000 -0500
+++ newver/netrekxp/resources/docs/newbie.txt	2009-05-09 16:39:56.000000000 -0400
@@ -1956,6 +1956,8 @@
 simply disable the particular key you are using, without causing too much 
 disruption.  [ Shekter ]
 
+RSA is now deprecated server side and is no longer used (May 2009).
+
 Scum:
      Of course I like that one definition I read on this group a while 
 back, that a ___ scum is someone who does ___ more than I do. [ Walter 
diff -ru oldver/netrekxp/resources/htmlhelp/html/CVS/Entries newver/netrekxp/resources/htmlhelp/html/CVS/Entries
--- oldver/netrekxp/resources/htmlhelp/html/CVS/Entries	2008-07-15 20:17:02.000000000 -0400
+++ newver/netrekxp/resources/htmlhelp/html/CVS/Entries	2009-06-11 18:10:48.000000000 -0400
@@ -1,28 +1,28 @@
-/basics.html/1.2/Fri Apr 21 11:37:05 2006//
-/changes.html/1.2/Sun May  7 16:59:26 2006//
-/commandline.html/1.2/Fri Apr 21 11:37:05 2006//
 /configsyntax.html/1.2/Fri Apr 21 11:37:05 2006//
 /controlsintro.html/1.2/Fri Apr 21 11:37:05 2006//
 /dashboard.html/1.2/Fri Apr 21 11:37:05 2006//
 /defaultmap.html/1.2/Fri Apr 21 11:37:05 2006//
 /galaxy.html/1.2/Fri Apr 21 11:37:05 2006//
 /gamecontrols.html/1.2/Fri Apr 21 11:37:05 2006//
-/intro.html/1.2/Fri Apr 21 11:37:05 2006//
-/jointhegame.html/1.2/Fri Apr 21 11:37:05 2006//
-/loginscreen.html/1.2/Fri Apr 21 11:37:05 2006//
 /macrosconfig.html/1.2/Fri Apr 21 11:37:05 2006//
 /main.css/1.1/Wed Apr 12 04:31:03 2006//
 /mainwindows.html/1.2/Fri Apr 21 11:37:05 2006//
 /messages.html/1.2/Fri Apr 21 11:37:05 2006//
-/metaserver.html/1.2/Fri Apr 21 11:37:05 2006//
-/motdwindow.html/1.2/Fri Apr 21 11:37:05 2006//
 /playerlist.html/1.2/Fri Apr 21 11:37:05 2006//
 /plistconfig.html/1.2/Fri Apr 21 11:37:05 2006//
 /remapping.html/1.2/Fri Apr 21 11:37:05 2006//
-/serversettings.html/1.2/Fri Apr 21 11:37:05 2006//
 /tactical.html/1.2/Fri Apr 21 11:37:05 2006//
-/teamselect.html/1.2/Fri Apr 21 11:37:05 2006//
 /windowsconfig.html/1.3/Sat Apr 22 14:11:47 2006//
 D/images////
 /configfile.html/1.4/Thu Jun 14 12:26:38 2007//
-/generalconfig.html/1.58/Tue Jul 15 23:43:01 2008//
+/commandline.html/1.3/Sat May  9 20:40:37 2009//
+/serversettings.html/1.3/Sat May  9 20:42:28 2009//
+/basics.html/1.2/Sat May  9 20:42:33 2009//
+/changes.html/1.2/Sat May  9 20:42:32 2009//
+/intro.html/1.2/Sat May  9 20:42:33 2009//
+/jointhegame.html/1.2/Sat May  9 20:42:37 2009//
+/loginscreen.html/1.2/Sat May  9 20:42:36 2009//
+/metaserver.html/1.2/Sat May  9 20:42:36 2009//
+/motdwindow.html/1.2/Sat May  9 20:42:37 2009//
+/teamselect.html/1.2/Sat May  9 20:42:38 2009//
+/generalconfig.html/1.64/Thu Jun 11 21:53:49 2009//
diff -ru oldver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra newver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra
--- oldver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra	2008-07-15 20:17:02.000000000 -0400
+++ newver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra	2009-06-11 18:10:48.000000000 -0400
@@ -1,28 +1,28 @@
-/basics.html////*///
-/changes.html////*///
-/commandline.html////*///
 /configsyntax.html////*///
 /controlsintro.html////*///
 /dashboard.html////*///
 /defaultmap.html////*///
 /galaxy.html////*///
 /gamecontrols.html////*///
-/intro.html////*///
-/jointhegame.html////*///
-/loginscreen.html////*///
 /macrosconfig.html////*///
 /main.css////*///
 /mainwindows.html////*///
 /messages.html////*///
-/metaserver.html////*///
-/motdwindow.html////*///
 /playerlist.html////*///
 /plistconfig.html////*///
 /remapping.html////*///
-/serversettings.html////*///
 /tactical.html////*///
-/teamselect.html////*///
 /windowsconfig.html////*///
 D/images///////
 /configfile.html////*///
+/commandline.html////*///
+/serversettings.html////*///
+/basics.html////*///
+/changes.html////*///
+/intro.html////*///
+/jointhegame.html////*///
+/loginscreen.html////*///
+/metaserver.html////*///
+/motdwindow.html////*///
+/teamselect.html////*///
 /generalconfig.html////*///
diff -ru oldver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra.Old newver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra.Old
--- oldver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra.Old	2008-04-19 12:22:58.000000000 -0400
+++ newver/netrekxp/resources/htmlhelp/html/CVS/Entries.Extra.Old	2009-06-05 23:29:28.000000000 -0400
@@ -1,28 +1,28 @@
-/basics.html////*///
-/changes.html////*///
-/commandline.html////*///
 /configsyntax.html////*///
 /controlsintro.html////*///
 /dashboard.html////*///
 /defaultmap.html////*///
 /galaxy.html////*///
 /gamecontrols.html////*///
-/intro.html////*///
-/jointhegame.html////*///
-/loginscreen.html////*///
 /macrosconfig.html////*///
 /main.css////*///
 /mainwindows.html////*///
 /messages.html////*///
-/metaserver.html////*///
-/motdwindow.html////*///
 /playerlist.html////*///
 /plistconfig.html////*///
 /remapping.html////*///
-/serversettings.html////*///
 /tactical.html////*///
-/teamselect.html////*///
 /windowsconfig.html////*///
 D/images///////
 /configfile.html////*///
+/commandline.html////*///
+/serversettings.html////*///
+/basics.html////*///
+/changes.html////*///
+/intro.html////*///
+/jointhegame.html////*///
+/loginscreen.html////*///
+/metaserver.html////*///
+/motdwindow.html////*///
+/teamselect.html////*///
 /generalconfig.html////*///
diff -ru oldver/netrekxp/resources/htmlhelp/html/CVS/Entries.Old newver/netrekxp/resources/htmlhelp/html/CVS/Entries.Old
--- oldver/netrekxp/resources/htmlhelp/html/CVS/Entries.Old	2008-04-19 12:22:58.000000000 -0400
+++ newver/netrekxp/resources/htmlhelp/html/CVS/Entries.Old	2009-06-05 23:29:28.000000000 -0400
@@ -1,28 +1,28 @@
-/basics.html/1.2/Fri Apr 21 11:37:05 2006//
-/changes.html/1.2/Sun May  7 16:59:26 2006//
-/commandline.html/1.2/Fri Apr 21 11:37:05 2006//
 /configsyntax.html/1.2/Fri Apr 21 11:37:05 2006//
 /controlsintro.html/1.2/Fri Apr 21 11:37:05 2006//
 /dashboard.html/1.2/Fri Apr 21 11:37:05 2006//
 /defaultmap.html/1.2/Fri Apr 21 11:37:05 2006//
 /galaxy.html/1.2/Fri Apr 21 11:37:05 2006//
 /gamecontrols.html/1.2/Fri Apr 21 11:37:05 2006//
-/intro.html/1.2/Fri Apr 21 11:37:05 2006//
-/jointhegame.html/1.2/Fri Apr 21 11:37:05 2006//
-/loginscreen.html/1.2/Fri Apr 21 11:37:05 2006//
 /macrosconfig.html/1.2/Fri Apr 21 11:37:05 2006//
 /main.css/1.1/Wed Apr 12 04:31:03 2006//
 /mainwindows.html/1.2/Fri Apr 21 11:37:05 2006//
 /messages.html/1.2/Fri Apr 21 11:37:05 2006//
-/metaserver.html/1.2/Fri Apr 21 11:37:05 2006//
-/motdwindow.html/1.2/Fri Apr 21 11:37:05 2006//
 /playerlist.html/1.2/Fri Apr 21 11:37:05 2006//
 /plistconfig.html/1.2/Fri Apr 21 11:37:05 2006//
 /remapping.html/1.2/Fri Apr 21 11:37:05 2006//
-/serversettings.html/1.2/Fri Apr 21 11:37:05 2006//
 /tactical.html/1.2/Fri Apr 21 11:37:05 2006//
-/teamselect.html/1.2/Fri Apr 21 11:37:05 2006//
 /windowsconfig.html/1.3/Sat Apr 22 14:11:47 2006//
 D/images////
 /configfile.html/1.4/Thu Jun 14 12:26:38 2007//
-/generalconfig.html/1.57/Fri Apr 18 22:01:25 2008//
+/commandline.html/1.3/Sat May  9 20:40:37 2009//
+/serversettings.html/1.3/Sat May  9 20:42:28 2009//
+/basics.html/1.2/Sat May  9 20:42:33 2009//
+/changes.html/1.2/Sat May  9 20:42:32 2009//
+/intro.html/1.2/Sat May  9 20:42:33 2009//
+/jointhegame.html/1.2/Sat May  9 20:42:37 2009//
+/loginscreen.html/1.2/Sat May  9 20:42:36 2009//
+/metaserver.html/1.2/Sat May  9 20:42:36 2009//
+/motdwindow.html/1.2/Sat May  9 20:42:37 2009//
+/teamselect.html/1.2/Sat May  9 20:42:38 2009//
+/generalconfig.html/1.63/Sat Jun  6 03:20:38 2009//
diff -ru oldver/netrekxp/resources/htmlhelp/html/commandline.html newver/netrekxp/resources/htmlhelp/html/commandline.html
--- oldver/netrekxp/resources/htmlhelp/html/commandline.html	2006-04-21 07:37:04.000000000 -0400
+++ newver/netrekxp/resources/htmlhelp/html/commandline.html	2009-05-09 16:40:36.000000000 -0400
@@ -28,8 +28,6 @@
   -A &lt;password&gt;             : specify character password
   -C &lt;name&gt;                 : specify character name
   -U &lt;udp port&gt;             : specify UDP port
-  -o                        : use old style binary verification
-  -R                        : use RSA binary verification
   -P                        : log server packets
   -c                        : check players on server and return list
   -f &lt;file name&gt;            : record game to file (can be viewed later with -F)
diff -ru oldver/netrekxp/resources/htmlhelp/html/generalconfig.html newver/netrekxp/resources/htmlhelp/html/generalconfig.html
--- oldver/netrekxp/resources/htmlhelp/html/generalconfig.html	2008-07-15 19:43:00.000000000 -0400
+++ newver/netrekxp/resources/htmlhelp/html/generalconfig.html	2009-06-11 17:53:48.000000000 -0400
@@ -46,6 +46,16 @@
 </td>
 </tr>
 <tr>
+<td><code><b>autoPhaser</b></code></td>
+<td>Automatically phaser enemy ship closest to cursor (within phaser range)</td>
+<td>
+	<ul>
+	<li><b>on (default)</b></li>
+	<li><b>off</b></li>
+	</ul>
+</td>
+</tr>
+<tr>
 <td><code><b>autoQuit</b></code></td>
 <td>Autoquit timer</td>
 <td><b>integer</b><br>default: 60</td>
@@ -578,6 +588,16 @@
 <td><b>filename</b></td>
 </tr>
 <tr>
+<td><code><b>metaBroncoOnly</b></code></td>
+<td>Only list Bronco/INL servers on the metaserver</td>
+<td>
+	<ul>
+	<li><b>on</b></li>
+	<li><b>off (default)</b></li>
+	</ul>
+</td>
+</tr>
+<tr>
 <td><code><b>metaPort</b></code></td>
 <td>Port of Metaserver</td>
 <td><b>integer</b><br>default: 3521</td>
@@ -1269,6 +1289,16 @@
 </td>
 </tr>
 <tr>
+<td><code><b>showTips</b></code></td>
+<td>Clear MOTD and show server generated tip messages</td>
+<td>
+	<ul>
+	<li><b>on (default)</b></li>
+	<li><b>off</b></li>
+	</ul>
+</td>
+</tr>
+<tr>
 <td><code><b>showTractorPressor</b></code></td>
 <td>Show tractor/pressor beams</td>
 <td>
@@ -1530,16 +1560,6 @@
 </td>
 </tr>
 <tr>
-<td><code><b>useRsa</b></code></td>
-<td>Use RSA client verification</td>
-<td>
-	<ul>
-	<li><b>on (default)</b></li>
-	<li><b>off</b></li>
-	</ul>
-</td>
-</tr>
-<tr>
 <td><code><b>useLite</b></code></td>
 <td>Use beeplite</td>
 <td>
diff -ru oldver/netrekxp/resources/htmlhelp/html/serversettings.html newver/netrekxp/resources/htmlhelp/html/serversettings.html
--- oldver/netrekxp/resources/htmlhelp/html/serversettings.html	2006-04-21 07:37:04.000000000 -0400
+++ newver/netrekxp/resources/htmlhelp/html/serversettings.html	2009-05-09 16:42:28.000000000 -0400
@@ -18,7 +18,7 @@
 <p>
 Here is a list of options with brief explanations:
 <ul>
-<li>Binary verification - whether the client binary should support some kind of verification</li>
+<li>Binary verification - whether the client binary should support some kind of verification (deprecated)</li>
 <li>Tournament mode - how many players per side are required to start T-mode</li>
 <li>Ships allowed - what types of ships are allowed to play on this server</li>
 <li>Tractor/Pressor beams - whether tractor/pressor beams are allowed on the server</li>
Only in newver/netrekxp/resources/misclib/color: Thumbs.db
Only in newver/netrekxp/resources/misclib/mono: Thumbs.db
diff -ru oldver/netrekxp/resources/netrekrc/CVS/Entries newver/netrekxp/resources/netrekrc/CVS/Entries
--- oldver/netrekxp/resources/netrekrc/CVS/Entries	2008-07-15 20:16:54.000000000 -0400
+++ newver/netrekxp/resources/netrekrc/CVS/Entries	2009-06-23 18:18:02.000000000 -0400
@@ -1,2 +1,2 @@
-/netrekrc.txt/1.7/Tue Jul 15 23:41:29 2008//
+/netrekrc.txt/1.20/Tue Jun 23 21:50:00 2009//
 D
diff -ru oldver/netrekxp/resources/netrekrc/CVS/Entries.Old newver/netrekxp/resources/netrekrc/CVS/Entries.Old
--- oldver/netrekxp/resources/netrekrc/CVS/Entries.Old	2008-07-11 23:50:38.000000000 -0400
+++ newver/netrekxp/resources/netrekrc/CVS/Entries.Old	2009-06-11 18:10:42.000000000 -0400
@@ -1,2 +1,2 @@
-/netrekrc.txt/1.6/Wed Jul  9 00:22:05 2008//
+/netrekrc.txt/1.19/Thu Jun 11 21:49:23 2009//
 D
diff -ru oldver/netrekxp/resources/netrekrc/netrekrc.txt newver/netrekxp/resources/netrekrc/netrekrc.txt
--- oldver/netrekxp/resources/netrekrc/netrekrc.txt	2008-07-15 19:41:28.000000000 -0400
+++ newver/netrekxp/resources/netrekrc/netrekrc.txt	2009-06-23 17:50:00.000000000 -0400
@@ -45,6 +45,11 @@
 # allow mouse wheel to produce action in non-scrollable windows
 allowWheelActions: on
 
+# Phaser exact location of enemy target closest to cursor
+# Enemy must be within phaser range of your ship
+# Server god decides whether to enable it on server
+autoPhaser: on
+
 # Autoquit timer (default 60)
 autoQuit: 60
 
@@ -101,8 +106,8 @@
 
 # Allow switching of ship bitmaps in game.  With this option disabled
 # not all bitmaps load into memory.  This option is thus not changeable
-# in game.  Do not attempt to edit your netrekrc to turn dynamic bitmaps
-# on and then reload the netrekrc with the & key - restart the client instead.
+# in game.  Do not attempt to edit your netrekrc.txt to turn dynamic bitmaps
+# on and then reload netrekrc.txt with the & key - restart the client instead.
 dynamicBitmaps: on
 
 # Angle between enemy phaser lines
@@ -183,6 +188,9 @@
 # if cursor is in the message windows
 messageKeyOnly: on
 
+# Only list Bronco/INL servers on the metaserver
+metaBroncoOnly: off
+
 # Metaserver port
 metaPort: 3521
 
@@ -301,7 +309,7 @@
 # Port to connect
 port: 2592
 
-# Use new UDP code
+# Swap ports around to try to use UDP through firewalls
 portSwap: on
 
 # Put a small tic mark on the puck to indicate its direction
@@ -419,6 +427,9 @@
 # Show statistics window
 showStats: off
 
+# Clear MOTD and show server generated tip messages
+showTips: on
+
 # Draw lines for tractor/pressor
 showTractorPressor: on
 
@@ -501,7 +512,7 @@
 # 1-50 (or whatever server frame rate is)
 # Value may be constrained by server to be evenly divisible
 # by server frame rate
-updatesPerSec: 50
+updatesPerSec: 25
 
 # Crosscheck with server to make sure all planet information is
 # correct.  Prevents against lost planet updates which can cause
@@ -523,7 +534,7 @@
 useFullWeapInfo: on
 
 # Receive SP_GENERIC_32 packets, which are used to convey things
-# like repair time and planet being orbitted.  Increases bandwidth
+# like repair time and planet being orbited.  Increases bandwidth
 # usage anywhere from 0 to 320 bytes/second for a server running
 # at 10 UPS.
 useGeneric32: on
@@ -534,9 +545,6 @@
 # Use default beeplite settings
 defLite: on
 
-# Use RSA verification
-useRsa: on
-
 # Change shields graphic on shield damage
 varyShields: on
 
@@ -798,7 +806,7 @@
 #      %m   the last message you sent
 #      %M   the last message you sent in all caps
 #
-# As a further extension to NEWMACRO, a macro may now be sent to any of the following destinations:
+# As a further extension, a macro may now be sent to any of the following destinations:
 #      %i %I %c  send message to self
 #      %u %U %p  send message to player nearest mouse
 #      %t %z %Z  send message to team of player nearest mouse
@@ -876,10 +884,10 @@
 # Keys that will trigger macro without going to macro mode
 singleMacro: EF
 
-macro.0.A:%    __    __   ______        __   Zoom in/out!  Anti-packet loss,
-macro.0.A:%   /  \  / /__/_  __/______ / /__ observers see all weapons, etc.
-macro.0.A:%  / /\ \/ / -_)/ / / __/ -_)  '_/ Plus 50 updates/sec support! 
-macro.0.A:% /_/  \__/\__//_/ /_/  \__/_/\_\ XP 2009, v1.0
+macro.0.A:%    __    __   ______        __   Lots of bug fixes!
+macro.0.A:%   /  \  / /__/_  __/______ / /__ Support new server features!
+macro.0.A:%  / /\ \/ / -_)/ / / __/ -_)  '_/ Paradise/sturgeon ready!
+macro.0.A:% /_/  \__/\__//_/ /_/  \__/_/\_\ XP 2010, v1.0
 macro.0.A:%          Get it today at http://play.netrek.org
 
 macro.P.A:%    \~~\    _ _             ,----------------------------------,
@@ -1044,9 +1052,9 @@
 macro.).A:/*   http://groups.google.com/group/netrek-clue-games         */
 macro.).A:/*   INL-style timed bronco games are every Wednesday!        */
 
-macro.(.A:/*   Get the latest version of Netrek XP 2009 today!            */
+macro.(.A:/*   Get the latest version of Netrek XP 2010 today!            */
 macro.(.A:/*   Current version is 1.0                                     */
-macro.(.A:/*   Download it at http://www.netrek.org/files/NetrekXP_2009/  */
+macro.(.A:/*   Download it at http://www.netrek.org/files/NetrekXP_2010/  */
 macro.(.A:/*   or at http://play.netrek.org                               */
 
 mac.e.T: Escorting %g (%d%%D %s%%S %f%%F)
@@ -1118,7 +1126,7 @@
 color.Ind: gray63
 
 
-# Esoteric features such as individual ship rcfiles/keymaps
+# Esoteric features such as individual ship keymaps
 # /ckeymaps/buttonmaps (i.e. keymap-ca: <keymap>), observer
 # /servertype options (i.e. keymap.bronco: <keymap>), and
 # button keymaps (b1keymap through b5keymap)
Only in newver/netrekxp/resources/netrekrc: netrekrc.txt.bak
Only in newver/netrekxp/resources/planlibm/bronco: Thumbs.db
Only in newver/netrekxp/resources/planlibm/color: Thumbs.db
Only in newver/netrekxp/resources/planlibm/moo: Thumbs.db
Only in newver/netrekxp/resources/planlibm/rabbit: Thumbs.db
Files oldver/netrekxp/resources/unused art/Thumbs.db and newver/netrekxp/resources/unused art/Thumbs.db differ
Only in newver/netrekxp/resources/weaplibm/color: Thumbs.db
Only in newver/netrekxp/resources/weaplibm/mono: Thumbs.db
Only in oldver/netrekxp: rsa.txt
diff -ru oldver/netrekxp/src/CVS/Entries newver/netrekxp/src/CVS/Entries
--- oldver/netrekxp/src/CVS/Entries	2008-07-16 22:57:38.000000000 -0400
+++ newver/netrekxp/src/CVS/Entries	2009-06-23 20:52:24.000000000 -0400
@@ -13,56 +13,56 @@
 D/cursors////
 D/winkey////
 /colors.c/1.2/Thu Jun 14 12:29:58 2007//
-/defwin.c/1.6/Thu Jun 14 12:30:03 2007//
-/distress.c/1.6/Thu Jun 14 12:30:03 2007//
 /docwin.c/1.7/Thu Jun 14 12:30:03 2007//
-/interface.c/1.3/Thu Jun 14 12:30:07 2007//
-/macrowin.c/1.3/Thu Jun 14 12:30:10 2007//
-/makecyg/1.3/Wed Feb 28 12:21:50 2007//
-/makefile/1.13/Thu Jun 14 12:30:10 2007//
 /ping.c/1.4/Thu Jun 14 12:30:14 2007//
 /pingstats.c/1.5/Thu Jun 14 12:30:14 2007//
 /reserved.c/1.4/Thu Jun 14 12:30:18 2007//
 /senddist.c/1.6/Thu Jun 14 12:30:18 2007//
-/sound.c/1.41/Thu Jun 14 12:30:20 2007//
-/spopt.c/1.3/Thu Jun 14 12:30:20 2007//
 /stats.c/1.4/Thu Jun 14 12:30:20 2007//
 /war.c/1.4/Thu Jun 14 12:30:20 2007//
 /winmain.c/1.6/Thu Jun 14 12:30:20 2007//
-/main.c/1.15/Sun Jul 29 01:30:48 2007//
-/bccnetrek.rc/1.9/Sun Apr  6 23:00:37 2008//
-/netrek.rc/1.7/Sun Apr  6 23:01:27 2008//
-/vccnetrek.rc/1.7/Sun Apr  6 23:02:07 2008//
-/beeplite.c/1.17/Sun Apr 13 23:12:18 2008//
-/death.c/1.22/Sun Apr 13 23:20:49 2008//
-/dmessage.c/1.12/Mon Apr 14 00:14:15 2008//
-/findslot.c/1.11/Mon Apr 14 02:15:28 2008//
 /planetlist.c/1.13/Tue Apr 15 01:07:32 2008//
-/ranklist.c/1.6/Tue Apr 15 01:10:48 2008//
 /rotate.c/1.5/Sun Apr 13 15:40:51 2008//
-/smessage.c/1.10/Sun Apr 13 15:46:08 2008//
-/util.c/1.8/Sun Apr 13 15:51:31 2008//
-/warning.c/1.15/Tue Apr 15 01:12:19 2008//
 /inform.c/1.9/Wed Apr 16 02:36:27 2008//
-/mswindow.c/1.90/Wed Apr 16 02:50:05 2008//
-/playerlist.c/1.17/Wed Apr 16 02:36:06 2008//
-/cowmain.c/1.39/Sat Apr 19 16:12:23 2008//
-/getname.c/1.12/Sat Apr 19 02:15:24 2008//
 /getship.c/1.8/Sat Apr 19 01:18:32 2008//
-/helpwin.c/1.15/Sat Apr 19 16:16:27 2008//
-/input.c/1.46/Sat Apr 19 15:31:52 2008//
-/playback.c/1.26/Sat Apr 19 02:15:33 2008//
 /dashboard3.c/1.13/Sat Apr 19 20:00:24 2008//
-/short.c/1.28/Sat Apr 19 14:58:43 2008//
-/newwin.c/1.76/Mon Jun 16 23:42:37 2008//
-/map.c/1.66/Sat Jul 12 02:57:20 2008//
-/data.c/1.114/Sun Jul 13 02:51:40 2008//
-/feature.c/1.24/Sun Jul 13 02:53:37 2008//
-/defaults.c/1.93/Tue Jul 15 23:41:44 2008//
 /enter.c/1.19/Wed Jul 16 00:01:03 2008//
-/option.c/1.56/Tue Jul 15 23:51:46 2008//
-/socket.c/1.52/Wed Jul 16 00:03:33 2008//
 /dashboard.c/1.30/Wed Jul 16 01:57:50 2008//
-/parsemeta.c/1.44/Wed Jul 16 22:26:53 2008//
-/local.c/1.114/Thu Jul 17 02:47:09 2008//
-/redraw.c/1.16/Thu Jul 17 02:38:45 2008//
+/warning.c/1.16/Sat Mar 14 23:52:52 2009//
+/sound.c/1.41/Sat Mar  7 22:11:03 2009//
+/map.c/1.67/Sat Mar 28 11:10:36 2009//
+/main.c/1.16/Sat May  9 20:52:41 2009//
+/makecyg/1.4/Sat May  9 21:19:06 2009//
+/makefile/1.14/Sat May 23 14:28:16 2009//
+/util.c/1.10/Sun May 24 01:11:08 2009//
+/death.c/1.23/Thu May 28 01:17:41 2009//
+/ranklist.c/1.10/Fri May 29 21:42:40 2009//
+/playerlist.c/1.20/Mon Jun  1 02:00:06 2009//
+/bccnetrek.rc/1.11/Sat Jun  6 03:27:45 2009//
+/netrek.rc/1.9/Sat Jun  6 03:28:07 2009//
+/vccnetrek.rc/1.9/Sat Jun  6 03:27:26 2009//
+/distress.c/1.7/Mon Jun  8 22:03:03 2009//
+/spopt.c/1.4/Mon Jun  8 22:47:46 2009//
+/helpwin.c/1.17/Tue Jun  9 00:12:27 2009//
+/defwin.c/1.9/Tue Jun  9 01:19:01 2009//
+/macrowin.c/1.4/Tue Jun  9 01:30:31 2009//
+/smessage.c/1.11/Tue Jun  9 01:31:48 2009//
+/cowmain.c/1.43/Tue Jun  9 02:16:11 2009//
+/input.c/1.57/Tue Jun  9 02:19:05 2009//
+/interface.c/1.4/Tue Jun  9 02:19:29 2009//
+/playback.c/1.30/Tue Jun  9 02:20:05 2009//
+/redraw.c/1.17/Tue Jun  9 02:21:59 2009//
+/dmessage.c/1.15/Wed Jun 10 00:19:49 2009//
+/getname.c/1.14/Wed Jun 10 01:15:23 2009//
+/mswindow.c/1.96/Tue Jun  9 23:30:18 2009//
+/findslot.c/1.12/Wed Jun 10 21:40:08 2009//
+/newwin.c/1.86/Wed Jun 10 22:44:52 2009//
+/data.c/1.134/Thu Jun 11 21:44:43 2009//
+/defaults.c/1.108/Thu Jun 11 21:46:35 2009//
+/feature.c/1.34/Thu Jun 11 21:51:50 2009//
+/option.c/1.63/Thu Jun 11 21:51:44 2009//
+/parsemeta.c/1.52/Tue Jun 16 00:04:57 2009//
+/beeplite.c/1.19/Tue Jun 23 23:10:39 2009//
+/local.c/1.123/Wed Jun 24 00:38:22 2009//
+/short.c/1.32/Wed Jun 24 00:44:30 2009//
+/socket.c/1.77/Wed Jun 24 00:45:11 2009//
diff -ru oldver/netrekxp/src/CVS/Entries.Extra newver/netrekxp/src/CVS/Entries.Extra
--- oldver/netrekxp/src/CVS/Entries.Extra	2008-07-16 22:57:38.000000000 -0400
+++ newver/netrekxp/src/CVS/Entries.Extra	2009-06-23 20:52:24.000000000 -0400
@@ -13,56 +13,56 @@
 D/cursors///////
 D/winkey///////
 /colors.c////*///
-/defwin.c////*///
-/distress.c////*///
 /docwin.c////*///
-/interface.c////*///
-/macrowin.c////*///
-/makecyg////*///
-/makefile////*///
 /ping.c////*///
 /pingstats.c////*///
 /reserved.c////*///
 /senddist.c////*///
-/sound.c////*///
-/spopt.c////*///
 /stats.c////*///
 /war.c////*///
 /winmain.c////*///
+/planetlist.c////*///
+/rotate.c////*///
+/inform.c////*///
+/getship.c////*///
+/dashboard3.c////*///
+/enter.c////*///
+/dashboard.c////*///
+/warning.c////*///
+/sound.c////*///
+/map.c////*///
 /main.c////*///
+/makecyg////*///
+/makefile////*///
+/util.c////*///
+/death.c////*///
+/ranklist.c////*///
+/playerlist.c////*///
 /bccnetrek.rc////*///
 /netrek.rc////*///
 /vccnetrek.rc////*///
-/beeplite.c////*///
-/death.c////*///
-/dmessage.c////*///
-/findslot.c////*///
-/planetlist.c////*///
-/ranklist.c////*///
-/rotate.c////*///
+/distress.c////*///
+/spopt.c////*///
+/helpwin.c////*///
+/defwin.c////*///
+/macrowin.c////*///
 /smessage.c////*///
-/util.c////*///
-/warning.c////*///
-/inform.c////*///
-/mswindow.c////*///
-/playerlist.c////*///
 /cowmain.c////*///
-/getname.c////*///
-/getship.c////*///
-/helpwin.c////*///
 /input.c////*///
+/interface.c////*///
 /playback.c////*///
-/dashboard3.c////*///
-/short.c////*///
+/redraw.c////*///
+/dmessage.c////*///
+/getname.c////*///
+/mswindow.c////*///
+/findslot.c////*///
 /newwin.c////*///
-/map.c////*///
 /data.c////*///
-/feature.c////*///
 /defaults.c////*///
-/enter.c////*///
+/feature.c////*///
 /option.c////*///
-/socket.c////*///
-/dashboard.c////*///
 /parsemeta.c////*///
+/beeplite.c////*///
 /local.c////*///
-/redraw.c////*///
+/short.c////*///
+/socket.c////*///
diff -ru oldver/netrekxp/src/CVS/Entries.Extra.Old newver/netrekxp/src/CVS/Entries.Extra.Old
--- oldver/netrekxp/src/CVS/Entries.Extra.Old	2008-07-16 22:57:26.000000000 -0400
+++ newver/netrekxp/src/CVS/Entries.Extra.Old	2009-06-23 18:18:04.000000000 -0400
@@ -13,56 +13,56 @@
 D/cursors///////
 D/winkey///////
 /colors.c////*///
-/defwin.c////*///
-/distress.c////*///
 /docwin.c////*///
-/interface.c////*///
-/macrowin.c////*///
-/makecyg////*///
-/makefile////*///
 /ping.c////*///
 /pingstats.c////*///
 /reserved.c////*///
 /senddist.c////*///
-/sound.c////*///
-/spopt.c////*///
 /stats.c////*///
 /war.c////*///
 /winmain.c////*///
+/planetlist.c////*///
+/rotate.c////*///
+/inform.c////*///
+/getship.c////*///
+/dashboard3.c////*///
+/enter.c////*///
+/dashboard.c////*///
+/warning.c////*///
+/sound.c////*///
+/map.c////*///
 /main.c////*///
+/makecyg////*///
+/makefile////*///
+/util.c////*///
+/death.c////*///
+/ranklist.c////*///
+/playerlist.c////*///
 /bccnetrek.rc////*///
 /netrek.rc////*///
 /vccnetrek.rc////*///
 /beeplite.c////*///
-/death.c////*///
-/dmessage.c////*///
-/findslot.c////*///
-/planetlist.c////*///
-/ranklist.c////*///
-/rotate.c////*///
+/distress.c////*///
+/spopt.c////*///
+/short.c////*///
+/helpwin.c////*///
+/defwin.c////*///
+/macrowin.c////*///
 /smessage.c////*///
-/util.c////*///
-/warning.c////*///
-/inform.c////*///
-/mswindow.c////*///
-/playerlist.c////*///
 /cowmain.c////*///
-/getname.c////*///
-/getship.c////*///
-/helpwin.c////*///
 /input.c////*///
+/interface.c////*///
 /playback.c////*///
 /redraw.c////*///
-/dashboard3.c////*///
-/short.c////*///
+/dmessage.c////*///
+/getname.c////*///
+/mswindow.c////*///
+/findslot.c////*///
 /newwin.c////*///
-/map.c////*///
 /data.c////*///
-/feature.c////*///
 /defaults.c////*///
-/enter.c////*///
+/feature.c////*///
 /option.c////*///
-/socket.c////*///
-/dashboard.c////*///
 /parsemeta.c////*///
 /local.c////*///
+/socket.c////*///
diff -ru oldver/netrekxp/src/CVS/Entries.Old newver/netrekxp/src/CVS/Entries.Old
--- oldver/netrekxp/src/CVS/Entries.Old	2008-07-16 22:57:26.000000000 -0400
+++ newver/netrekxp/src/CVS/Entries.Old	2009-06-23 18:18:04.000000000 -0400
@@ -13,56 +13,56 @@
 D/cursors////
 D/winkey////
 /colors.c/1.2/Thu Jun 14 12:29:58 2007//
-/defwin.c/1.6/Thu Jun 14 12:30:03 2007//
-/distress.c/1.6/Thu Jun 14 12:30:03 2007//
 /docwin.c/1.7/Thu Jun 14 12:30:03 2007//
-/interface.c/1.3/Thu Jun 14 12:30:07 2007//
-/macrowin.c/1.3/Thu Jun 14 12:30:10 2007//
-/makecyg/1.3/Wed Feb 28 12:21:50 2007//
-/makefile/1.13/Thu Jun 14 12:30:10 2007//
 /ping.c/1.4/Thu Jun 14 12:30:14 2007//
 /pingstats.c/1.5/Thu Jun 14 12:30:14 2007//
 /reserved.c/1.4/Thu Jun 14 12:30:18 2007//
 /senddist.c/1.6/Thu Jun 14 12:30:18 2007//
-/sound.c/1.41/Thu Jun 14 12:30:20 2007//
-/spopt.c/1.3/Thu Jun 14 12:30:20 2007//
 /stats.c/1.4/Thu Jun 14 12:30:20 2007//
 /war.c/1.4/Thu Jun 14 12:30:20 2007//
 /winmain.c/1.6/Thu Jun 14 12:30:20 2007//
-/main.c/1.15/Sun Jul 29 01:30:48 2007//
-/bccnetrek.rc/1.9/Sun Apr  6 23:00:37 2008//
-/netrek.rc/1.7/Sun Apr  6 23:01:27 2008//
-/vccnetrek.rc/1.7/Sun Apr  6 23:02:07 2008//
-/beeplite.c/1.17/Sun Apr 13 23:12:18 2008//
-/death.c/1.22/Sun Apr 13 23:20:49 2008//
-/dmessage.c/1.12/Mon Apr 14 00:14:15 2008//
-/findslot.c/1.11/Mon Apr 14 02:15:28 2008//
 /planetlist.c/1.13/Tue Apr 15 01:07:32 2008//
-/ranklist.c/1.6/Tue Apr 15 01:10:48 2008//
 /rotate.c/1.5/Sun Apr 13 15:40:51 2008//
-/smessage.c/1.10/Sun Apr 13 15:46:08 2008//
-/util.c/1.8/Sun Apr 13 15:51:31 2008//
-/warning.c/1.15/Tue Apr 15 01:12:19 2008//
 /inform.c/1.9/Wed Apr 16 02:36:27 2008//
-/mswindow.c/1.90/Wed Apr 16 02:50:05 2008//
-/playerlist.c/1.17/Wed Apr 16 02:36:06 2008//
-/cowmain.c/1.39/Sat Apr 19 16:12:23 2008//
-/getname.c/1.12/Sat Apr 19 02:15:24 2008//
 /getship.c/1.8/Sat Apr 19 01:18:32 2008//
-/helpwin.c/1.15/Sat Apr 19 16:16:27 2008//
-/input.c/1.46/Sat Apr 19 15:31:52 2008//
-/playback.c/1.26/Sat Apr 19 02:15:33 2008//
-/redraw.c/1.16/Sat Apr 19 01:20:19 2008//
 /dashboard3.c/1.13/Sat Apr 19 20:00:24 2008//
-/short.c/1.28/Sat Apr 19 14:58:43 2008//
-/newwin.c/1.76/Mon Jun 16 23:42:37 2008//
-/map.c/1.66/Sat Jul 12 02:57:20 2008//
-/data.c/1.114/Sun Jul 13 02:51:40 2008//
-/feature.c/1.24/Sun Jul 13 02:53:37 2008//
-/defaults.c/1.93/Tue Jul 15 23:41:44 2008//
 /enter.c/1.19/Wed Jul 16 00:01:03 2008//
-/option.c/1.56/Tue Jul 15 23:51:46 2008//
-/socket.c/1.52/Wed Jul 16 00:03:33 2008//
 /dashboard.c/1.30/Wed Jul 16 01:57:50 2008//
-/parsemeta.c/1.44/Wed Jul 16 22:26:53 2008//
-/local.c/1.114/Thu Jul 17 02:47:09 2008//
+/warning.c/1.16/Sat Mar 14 23:52:52 2009//
+/sound.c/1.41/Sat Mar  7 22:11:03 2009//
+/map.c/1.67/Sat Mar 28 11:10:36 2009//
+/main.c/1.16/Sat May  9 20:52:41 2009//
+/makecyg/1.4/Sat May  9 21:19:06 2009//
+/makefile/1.14/Sat May 23 14:28:16 2009//
+/util.c/1.10/Sun May 24 01:11:08 2009//
+/death.c/1.23/Thu May 28 01:17:41 2009//
+/ranklist.c/1.10/Fri May 29 21:42:40 2009//
+/playerlist.c/1.20/Mon Jun  1 02:00:06 2009//
+/bccnetrek.rc/1.11/Sat Jun  6 03:27:45 2009//
+/netrek.rc/1.9/Sat Jun  6 03:28:07 2009//
+/vccnetrek.rc/1.9/Sat Jun  6 03:27:26 2009//
+/beeplite.c/1.18/Mon Jun  8 21:56:34 2009//
+/distress.c/1.7/Mon Jun  8 22:03:03 2009//
+/spopt.c/1.4/Mon Jun  8 22:47:46 2009//
+/short.c/1.31/Tue Jun  9 00:05:05 2009//
+/helpwin.c/1.17/Tue Jun  9 00:12:27 2009//
+/defwin.c/1.9/Tue Jun  9 01:19:01 2009//
+/macrowin.c/1.4/Tue Jun  9 01:30:31 2009//
+/smessage.c/1.11/Tue Jun  9 01:31:48 2009//
+/cowmain.c/1.43/Tue Jun  9 02:16:11 2009//
+/input.c/1.57/Tue Jun  9 02:19:05 2009//
+/interface.c/1.4/Tue Jun  9 02:19:29 2009//
+/playback.c/1.30/Tue Jun  9 02:20:05 2009//
+/redraw.c/1.17/Tue Jun  9 02:21:59 2009//
+/dmessage.c/1.15/Wed Jun 10 00:19:49 2009//
+/getname.c/1.14/Wed Jun 10 01:15:23 2009//
+/mswindow.c/1.96/Tue Jun  9 23:30:18 2009//
+/findslot.c/1.12/Wed Jun 10 21:40:08 2009//
+/newwin.c/1.86/Wed Jun 10 22:44:52 2009//
+/data.c/1.134/Thu Jun 11 21:44:43 2009//
+/defaults.c/1.108/Thu Jun 11 21:46:35 2009//
+/feature.c/1.34/Thu Jun 11 21:51:50 2009//
+/option.c/1.63/Thu Jun 11 21:51:44 2009//
+/parsemeta.c/1.52/Tue Jun 16 00:04:57 2009//
+/local.c/1.122/Tue Jun 23 22:14:17 2009//
+/socket.c/1.76/Tue Jun 23 22:14:40 2009//
diff -ru oldver/netrekxp/src/bccnetrek.rc newver/netrekxp/src/bccnetrek.rc
--- oldver/netrekxp/src/bccnetrek.rc	2008-04-06 19:00:36.000000000 -0400
+++ newver/netrekxp/src/bccnetrek.rc	2009-06-05 23:27:44.000000000 -0400
@@ -9,12 +9,12 @@
 {  BLOCK "040904E4" 
  {
    VALUE "CompanyName", "Netrek\000"
-   VALUE "FileDescription", "Netrek XP 2009 Client\000"
+   VALUE "FileDescription", "Netrek XP 2010 Client\000"
    VALUE "FileVersion", "123456789012345678901234567890\000"
-   VALUE "InternalName", "Netrek XP 2009\000"
+   VALUE "InternalName", "Netrek XP 2010\000"
    VALUE "LegalCopyright", "Copyright © 1986-2009\000"
    VALUE "OriginalFilename", "netrek.rc\000"
-   VALUE "ProductName", "Netrek XP 2009 Client\000"
+   VALUE "ProductName", "Netrek XP 2010 Client\000"
    VALUE "ProductVersion", "123456789012345678901234567890\000" 
  }
  }
diff -ru oldver/netrekxp/src/beeplite.c newver/netrekxp/src/beeplite.c
--- oldver/netrekxp/src/beeplite.c	2008-04-13 19:12:18.000000000 -0400
+++ newver/netrekxp/src/beeplite.c	2009-06-23 19:10:38.000000000 -0400
@@ -10,10 +10,7 @@
 #include <stdlib.h>
 #include <signal.h>
 #include <ctype.h>
-
-#ifndef SERVER
 #include "Wlib.h"
-#endif
 
 #include "defs.h"
 #include "struct.h"
@@ -58,7 +55,7 @@
 
 void liteplanet(struct planet *l)
 {
-    beep_lite_cycle_time_planet = 10 * server_ups / 10;
+    beep_lite_cycle_time_planet = 10 * server_ups / 5;
     emph_planet_seq_n[l->pl_no] = beep_lite_cycle_time_planet;
     l->pl_flags |= PLREDRAW;			 /* Leave redraw on until * * 
 						  * done highlighting */
@@ -71,7 +68,7 @@
 
     redrawPlayer[j->p_no] = 1;
 
-    beep_lite_cycle_time_player = 10 * server_ups / 10;
+    beep_lite_cycle_time_player = 10 * server_ups / 5;
     emph_player_seq_n[j->p_no] = beep_lite_cycle_time_player;
 }
 
@@ -246,7 +243,7 @@
 		    for (tts_len = 0; (*pm != '|' && tts_len < tts_max_len); tts_len++)
 		      lastIn[tts_len] = *pm++;
 		    lastIn[tts_len] = '\0';
-		    tts_timer = tts_time * server_ups / 10;
+		    tts_timer = tts_time * server_ups / 5;
 		}
 	        break;
 
diff -ru oldver/netrekxp/src/cowmain.c newver/netrekxp/src/cowmain.c
--- oldver/netrekxp/src/cowmain.c	2008-04-19 12:12:22.000000000 -0400
+++ newver/netrekxp/src/cowmain.c	2009-06-08 22:16:10.000000000 -0400
@@ -779,7 +779,7 @@
         ind_ship_bmp_HR = stringDefault ("indshipHRbmpfile");
 
     resetdefaults ();
-    build_default_configuration(); // for paradise
+    build_default_configuration(); // load ranks/royals
     newwin (display_host, name);
 
     if (hideConsole)
@@ -847,9 +847,7 @@
     else
         connectToServer (xtrekPort);
 
-#ifdef FEATURE_PACKETS
     sendFeature ("FEATURE_PACKETS", 'S', 1, 0, 0);
-#endif
 
     /* TIMER */
     timeStart = time(NULL);
@@ -1004,11 +1002,7 @@
     myship = getship(myship->s_type);
     currentship = myship->s_type;
 
-#ifdef BRMH
     redrawall = 2;
-#else
-    redrawall = 1;
-#endif
 
     enter ();
     calibrate_stats ();
@@ -1039,8 +1033,7 @@
         if (tryUdp && commMode != COMM_UDP)
             sendUdpReq (COMM_UDP);
 
-#ifdef SHORT_PACKETS            /* should we be checking for
-                                 * udp on here? */
+        /* should we be checking for udp on here? */
         if (tryShort)
             sendShortReq (SPK_VON, 1);
         else
@@ -1052,10 +1045,6 @@
 
             sendUdpReq (COMM_UPDATE);
         }
-#else
-        /* `=' style update to get the kills in the playerlist right */
-        sendUdpReq (COMM_UPDATE);
-#endif
         /* Send request for updatesPerSec.  New servers now support 50 u/s */
         lastUpdateSpeed = updatesPerSec = intDefault ("updatesPerSec", updatesPerSec);
         sendUpdatePacket (1000000 / updatesPerSec);
diff -ru oldver/netrekxp/src/data.c newver/netrekxp/src/data.c
--- oldver/netrekxp/src/data.c	2008-07-12 22:51:40.000000000 -0400
+++ newver/netrekxp/src/data.c	2009-06-11 17:44:42.000000000 -0400
@@ -146,6 +146,7 @@
 int rotatePlanets = 1;
 
 int logging = 0;
+int log_ignore = 0;
 int continueTractor = 1;
 int tcounter = 2;
 char *title = NULL;
@@ -240,15 +241,8 @@
 
 int messageon = 0;
 
-#ifdef RSA
-char testdata[16];
-int useRsa = 1;
-
-#endif
-
 int SBhours = 0;
 
-#ifdef SHORT_PACKETS
 int why_dead = 0;
 int tryShort = 1;               /* for .xtrekrc option */
 int tryShort1 = 0;
@@ -259,8 +253,6 @@
 char recv_threshold_s[8] = { '0', '\0' };
 int recv_warn = 1;
 
-#endif
-
 int updatesPerSec = 10;		/* client requested updates per second */
 int lastUpdateSpeed = 10;	/* last update speed client requested */
 int server_ups = 10;		/* server responded updates per second */
@@ -270,7 +262,7 @@
 
 #ifdef META
 /* Metaservers list - comma delimited  */
-char *metaServer = "metaserver.us.netrek.org, metaserver2.us.netrek.org, metaserver3.us.netrek.org";
+char *metaServer = "metaserver.us.netrek.org, metaserver2.us.netrek.org, metaserver3.us.netrek.org, metaserver.servegame.org";
 int metaPort = 3521;
 int metaVerbose = 0;
 char *metaCache = NULL;
@@ -280,17 +272,14 @@
 #endif
 #endif
 
-
-#ifdef NBT
 struct macro_list macro[MAX_MACRO];     /* NBT 2/26/93 */
 int MacroMode = 0;
 int macrocnt = 0;
 
-#endif
-
 extern double Sin[], Cos[];
 
 int paradise = 0;		/* is the server a paradise server */
+int login_received = 0;
 int received_terrain_info = 0;
 int terrain_x;
 int terrain_y;
@@ -338,17 +327,11 @@
 W_Icon etorp, mtorp;
 W_Icon eplasmatorp, mplasmatorp;
 
-#ifdef VSHIELD_BITMAPS
 W_Icon base_vshield;
 W_Icon shield[SHIELD_FRAMES], cloakicon;
 int varyShields = 1;
 int varyShieldsColor = 1;
 
-#else
-W_Icon shield, cloakicon;
-
-#endif
-
 W_Icon base_hull;
 W_Icon hull[BMP_HULL_FRAMES];
 int vary_hull = 0;
@@ -437,14 +420,8 @@
 W_Icon paradise_bplanets[PARADISE_PLANET_VIEWS];
 W_Icon paradise_bmplanets[PARADISE_PLANET_VIEWS];
 
-/* jn - SMARTMACRO */
-
-#ifdef NEWMACRO
 int MacroNum = 0;
-
-#endif /* NEWMACRO */
 char lastMessage[80];
-char *classes[] = { "SC", "DD", "CA", "BB", "AS", "SB", "GA", "AT" };
 char teamlet[] = { 'I', 'F', 'R', 'X', 'K', 'X', 'X', 'X', 'O', 'X', 'X', 'X',
     'X', 'X', 'X', 'A'
 };
@@ -457,19 +434,9 @@
 
 struct ship shipvals[NUM_TYPES_BRONCO];
 
-/* 10 Aug 96 - Added curt (short) names -SAC */
-struct rank ranks[NUMRANKS] = {
-    {0.0, 0.0, 0.0, "Ensign", "Esgn"},
-    {2.0, 1.0, 0.0, "Lieutenant", "Lt "},
-    {4.0, 2.0, 0.0, "Lt. Cmdr.", "LtCm"},
-    {8.0, 3.0, 0.0, "Commander", "Cder",},
-    {15.0, 4.0, 0.0, "Captain", "Capt"},
-    {20.0, 5.0, 0.0, "Flt. Capt.", "FltC"},
-    {25.0, 6.0, 0.0, "Commodore", "Cdor"},
-    {30.0, 7.0, 0.0, "Rear Adm.", "RAdm"},
-    {40.0, 8.0, 0.0, "Admiral", "Admr"}
-};
+int nranks = 9;
 int nranks2 = 18;
+struct rank *ranks;
 struct rank2 *ranks2;
 int nroyals = 5;
 struct royalty *royal = 0;
@@ -480,16 +447,9 @@
 W_Window udpWin, phaserwin, hintWin;
 W_Window waitWin, waitqWin, countWin, motdButtonWin, motdWin;
 
-#ifdef SHORT_PACKETS
 W_Window spWin = NULL;
-
-#endif
-
-#ifdef NBT
 W_Window macroWin = NULL;
 
-#endif
-
 #ifdef META
 W_Window metaWin = NULL;
 
@@ -528,10 +488,7 @@
 
 int showMySpeed = 1;
 int showOtherSpeed = 1;
-
-#ifdef JUBILEE_PHASERS
 int colorfulPhasers = 0;
-#endif
 
 /* tried to automate this as much as possible... the entries are * the
  * character, string identifier, and the default macro for * each distress
@@ -670,7 +627,7 @@
 int motionThresh = 16;
 int clickDelay = 0;             /* # of updates to delay before repeating */
 int motion_mouse_enablable = 1;
-int motion_mouse_steering = 0;
+int motion_mouse_steering = 1;
 
 #endif
 
@@ -699,11 +656,6 @@
 
 #endif
 
-#ifdef CONTROL_KEY
-int use_control_key = 1;
-
-#endif
-
 #ifdef DOC_WIN
 W_Window docwin = NULL, xtrekrcwin = NULL;
 int maxdoclines = 0, maxxtrekrclines = 0;
@@ -715,11 +667,8 @@
 
 #endif
 
-#ifdef BRMH
 int max_fd = 3;
 
-#endif
-
 #ifdef TOOLS
 W_Window toolsWin = NULL;
 int shellTools = 1;
@@ -750,11 +699,8 @@
 
 #endif
 
-#ifdef FEATURE_PACKETS
 int F_feature_packets = 0;
 
-#endif
-
 int F_cloak_maxwarp = 0;
 int F_self_8flags = 0;
 int F_self_8flags2 = 0;
@@ -773,6 +719,10 @@
 int F_show_visibility_range = 0;
 int F_sp_flags_all = 0;
 int F_why_dead_2 = 0;
+int F_auto_weapons = 0;
+int F_sp_rank = 0;
+int F_sp_ltd = 0;
+int F_tips = 0;
 int F_terrain = 0;		/* paradise */
 int F_armies_shipcap = 0;	/* paradise */
 
@@ -784,9 +734,7 @@
 int F_dead_warp = 0;
 #endif
 
-#ifdef UDP_PORTSWAP
-int portSwap = 0;
-#endif
+int portSwap = 0;		/* Swap ports around to try to use UDP through firewalls */
 
 // Load Ship Bitmaps from .BMP files
 char *fed_ship_bmp;
@@ -928,5 +876,7 @@
 int mapscaleFactor = 40;        /* allows for scaling of galactic window, unused */
 int fullBitmapRotation = 1;     /* draw old bitmap sets to all angles */
 int hideConsole = 0;            /* show console window or not */
+int autoPhaser = 1;             /* phaser exact location of enemy target closest to cursor */
+int showTips = 0;               /* clear MOTD and show server generated tip messages */
 
 struct context *context;
diff -ru oldver/netrekxp/src/death.c newver/netrekxp/src/death.c
--- oldver/netrekxp/src/death.c	2008-04-13 19:20:48.000000000 -0400
+++ newver/netrekxp/src/death.c	2009-05-27 21:17:40.000000000 -0400
@@ -89,7 +89,10 @@
 
     if (promoted)
     {
-        sprintf (rankmessage, "Congratulations, You have scummed up to %s",
+        if (mystats->st_rank >= nranks)
+            sprintf (rankmessage, "Congratulations, you have been promoted!");
+        else
+            sprintf (rankmessage, "Congratulations, you have scummed up to %s!",
                  paradise ? ranks2[mystats->st_rank].name : ranks[mystats->st_rank].name);
         W_WriteText (w, 50, 80, W_Yellow, rankmessage,
                      strlen (rankmessage), W_BoldFont);
diff -ru oldver/netrekxp/src/defaults.c newver/netrekxp/src/defaults.c
--- oldver/netrekxp/src/defaults.c	2008-07-15 19:41:44.000000000 -0400
+++ newver/netrekxp/src/defaults.c	2009-06-11 17:46:34.000000000 -0400
@@ -43,6 +43,14 @@
             NULL
         }
     },
+    {"autoPhaser", &autoPhaser, RC_INT,
+        {
+            "Phaser exact location of enemy target closest to cursor",
+            "Enemy must be within phaser range of your ship",
+            "Server god decides whether to enable it on server",
+            NULL
+       }
+    },
     {"autoQuit", &autoQuit, RC_INT,
         {
             "Autoquit timer (default 60)",
@@ -97,14 +105,12 @@
             NULL
         }
     },
-#ifdef JUBILEE_PHASERS
     {"colorfulPhasers", &colorfulPhasers, RC_BOOL,
         {
             "Display color phasers",
             NULL
         }
     },
-#endif
     {"colorWeapons", &colorWeapons, RC_BOOL,
         {
             "Use colored bitmaps for torps and plasmas",
@@ -306,6 +312,12 @@
     },
 #endif
 #ifdef META
+    {"metaBroncoOnly", &metaBroncoOnly, RC_BOOL,
+        {
+            "Only list Bronco/INL servers on the metaserver",
+            NULL
+        }
+    },
     {"metaPort", &metaPort, RC_INT,
         {
             "Metaserver port",
@@ -518,14 +530,12 @@
             NULL
         }
     },
-#ifdef UDP_PORTSWAP
     {"portSwap", &portSwap, RC_BOOL,
         {
-            "Use new UDP code",
+            "Swap ports around to try to use UDP through firewalls",
             NULL
         }
     },
-#endif
     {"puckArrow", &puckArrow, RC_BOOL,
         {
             "Put a small tic mark on the puck to indicate its direction",
@@ -753,6 +763,12 @@
             NULL
         }
     },
+    {"showTips", &showTips, RC_BOOL,
+        {
+            "Clear MOTD and show server generated tip messages",
+            NULL
+        }
+    },
     {"showTractorPressor", &showTractorPressor, RC_BOOL,
         {
             "Draw lines for tractor/pressor",
@@ -853,14 +869,12 @@
             NULL
         }
     },
-#ifdef SHORT_PACKETS
     {"tryShort", &tryShort, RC_BOOL,
         {
             "Use short packets for communications",
             NULL
         }
     },
-#endif
     {"tryUdp", &tryUdp, RC_BOOL,
         {
             "Use UDP for communications",
@@ -882,7 +896,7 @@
             "0 - TCP",
             "1 - simple UDP (default)",
             "2 - enforced UDP (state)",
-            "3 - enfotrced UDP (state & weapons)",
+            "3 - enforced UDP (state & weapons)",
             NULL
         }
     },
@@ -938,8 +952,9 @@
     {"useGeneric32", &useGeneric32, RC_BOOL,
         {
             "Receive SP_GENERIC_32 packets, which are used to convey things",
-            "like repair time and planet being orbitted.  Increases bandwidth",
-            "usage by 320 bytes/second for a server running at 10 UPS.",
+            "like repair time and planet being orbited.  Increases bandwidth",
+            "usage anywhere from 0 to 320 bytes/second for a server running",
+            "at 10 UPS.",
             NULL
         }
     },
@@ -956,16 +971,7 @@
             NULL
         }
     },
-#endif 
-#ifdef RSA
-    {"useRsa", &useRsa, RC_BOOL,
-        {
-            "Use RSA verification",
-            NULL
-        }
-    },
 #endif
-#ifdef VSHIELD_BITMAPS
     {"varyShields", &varyShields, RC_BOOL,
         {
             "Change shields graphic on shield damage",
@@ -978,7 +984,6 @@
             NULL
         }
     },
-#endif
     {"viewBox", &viewBox, RC_BOOL,
         {
             "Show limits of tactical display on galaxy",
@@ -1099,9 +1104,7 @@
 
     LineToConsole ("Reading defaults file %s\n", deffile);
 
-#ifdef NBT
     macrocnt = 0;               /* reset macros */
-#endif
 
     STRNCPY (defaultsFile, deffile, sizeof (defaultsFile));
     while (fgets (file, 250, fp))
@@ -1124,7 +1127,6 @@
             v++;
         }
 
-#ifdef NBT
         /* not very robust but if it breaks nothing will die horribly I think -
          * jmn */
         if (strncmpi (file, "macro.", 6) == 0)
@@ -1166,7 +1168,6 @@
             }
         }
         else
-#endif
 
         if (strncmpi (file, "mac.", 4) == 0)
         {
@@ -1287,13 +1288,11 @@
                 {
                     dm->macro = strdup (v);
 
-#ifdef DIST_KEY_NAME
                     if (c)
                     {
                         dm->c = c;
                         dm_def->c = c;
                     }
-#endif /* DIST_KEY_NAME */
 
                     notdone = 0;
                 }
@@ -1710,10 +1709,9 @@
 resetdefaults (void)
 {
     char *pek;
-    char tmp[100];
 
     if (strlen (pigcall) == 0)
-        sprintf (pigcall, "Netrek XP 2009 (%s) - the smarter netrek eXPerience!", mvers);
+        sprintf (pigcall, "Netrek XP 2010 (%s) - the smarter netrek eXPerience!", mvers);
 
     timerType = intDefault ("timerType", timerType);
     if (timerType < T_NONE || timerType >= T_TOTAL)
@@ -1784,6 +1782,8 @@
     puckArrow = booleanDefault ("puckArrow", puckArrow);
     showArmy = intDefault ("showArmy", showArmy);
     showCloakers = booleanDefault ("showCloakers", showCloakers);
+    autoPhaser = booleanDefault ("autoPhaser", autoPhaser);
+    showTips = booleanDefault ("showTips", showTips);
     redrawDelay = intDefault ("redrawDelay", redrawDelay);
     planetHighlighting = booleanDefault ("planetHighlighting", planetHighlighting);
     rotatePlanets = booleanDefault ("rotatePlanets", rotatePlanets);
@@ -1811,29 +1811,12 @@
 
     windowMove = booleanDefault ("windowMove", windowMove);
 
-#ifdef VSHIELD_BITMAPS
     varyShields = booleanDefault ("varyShields", varyShields);
     varyShieldsColor = booleanDefault ("varyShieldsColor", varyShieldsColor);
-#endif
 
     warnShields = booleanDefault ("warnShields", warnShields);
     vary_hull = booleanDefault("warnHull", vary_hull);
 
-#ifdef RSA
-    if (useRsa >= 0)
-    {
-        useRsa = booleanDefault ("useRsa", useRsa);
-        sprintf (tmp, "useRSA.%s", serverName);
-        useRsa = booleanDefault (tmp, useRsa);
-
-    }
-    else
-    {
-        /* RSA mode was specified in the command line args */
-        useRsa = (useRsa == -2) ? 1 : 0;
-    }
-#endif
-
 #ifdef METAPING
     metaPing = booleanDefault ("metaPing", metaPing);
 #endif
@@ -1874,10 +1857,8 @@
     udpSequenceCheck = booleanDefault ("udpSequenceCheck", udpSequenceCheck);
     baseUdpLocalPort = intDefault ("baseUdpLocalPort", baseUdpLocalPort);
 
-#ifdef SHORT_PACKETS
     tryShort = booleanDefault ("tryShort", tryShort);
     tryShort1 = tryShort;
-#endif
 
     newDistress = booleanDefault ("newDistress", newDistress);
     rejectMacro = booleanDefault ("rejectMacro", rejectMacro);
@@ -1919,10 +1900,7 @@
     infoRange = booleanDefault ("infoRange", infoRange);
     showMySpeed = booleanDefault ("showMySpeed", showMySpeed);
     showOtherSpeed = booleanDefault ("showOtherSpeed", showOtherSpeed);
-
-#ifdef JUBILEE_PHASERS
     colorfulPhasers = booleanDefault ("colorfulPhasers", colorfulPhasers);
-#endif
 
 #ifdef SOUND
     sound_init = booleanDefault ("sound", sound_init);
@@ -1932,9 +1910,7 @@
     shellTools = booleanDefault ("shellTools", shellTools);
 #endif
 
-#ifdef UDP_PORTSWAP
     portSwap = booleanDefault ("portSwap", TRUE);
-#endif
 
 #ifdef BEEPLITE
     defLite = booleanDefault("defLite", defLite);
@@ -1971,9 +1947,7 @@
 	updateWindowsGeometry (reviewWin);
 	updateWindowsGeometry (pStats);
 	updateWindowsGeometry (udpWin);
-#ifdef SHORT_PACKETS
 	updateWindowsGeometry (spWin);
-#endif
 #ifdef SOUND
 	updateWindowsGeometry (soundWin);
 #endif
@@ -2753,7 +2727,6 @@
         fputs (str, fp);
         fputs ("\n", fp);
 
-#ifdef SHORT_PACKETS
         // Short packets window
         if ((adefault = stringDefault ("network.parent")) != NULL)
         {
@@ -2768,7 +2741,6 @@
                   W_IsMapped (spWin) ? "on" : "off");
         fputs (str, fp);
         fputs ("\n", fp);
-#endif
 
 #ifdef TOOLS
         // Tools window
@@ -3008,7 +2980,7 @@
             fputs ("#      %m   the last message you sent\n", fp);
             fputs ("#      %M   the last message you sent in all caps\n", fp);
             fputs ("#\n", fp);
-            fputs ("# As a further extension to NEWMACRO, a macro may now be sent to any of the following destinations:\n", fp);
+            fputs ("# As a further extension, a macro may now be sent to any of the following destinations:\n", fp);
             fputs ("#      %i %I %c  send message to self\n", fp);
             fputs ("#      %u %U %p  send message to player nearest mouse\n", fp);
             fputs ("#      %t %z %Z  send message to team of player nearest mouse\n", fp);
@@ -3114,7 +3086,6 @@
         {
             switch (macro[i].type)
             {
-#ifdef NBT
             case NBTM:
                 if (macro[i].key != 0)
                 {
@@ -3134,7 +3105,6 @@
                         fputs ("\n", fp);
                 }
                 break;
-#endif /* NBT */
             case NEWM:
                 if (macro[i].key != 0)
                 {
@@ -3206,7 +3176,6 @@
                         fputs ("\n", fp);
                 }
                 break;
-#ifdef NBT
 #ifdef MULTILINE_MACROS
             case NEWMULTIM:
                 if (macro[i].key != 0)
@@ -3229,7 +3198,6 @@
                 }
                 break;
 #endif /* MULTILINE_MACROS */
-#endif /* NBT */
             }
         }
     }
@@ -3423,4 +3391,4 @@
     }
 
     fclose (fp);
-}
\ No newline at end of file
+}
diff -ru oldver/netrekxp/src/defwin.c newver/netrekxp/src/defwin.c
--- oldver/netrekxp/src/defwin.c	2007-06-14 08:30:02.000000000 -0400
+++ newver/netrekxp/src/defwin.c	2009-06-08 21:19:00.000000000 -0400
@@ -16,63 +16,7 @@
  * health and/or system. Its use is at your own risk. I assume no
  * responsibility for damages, real, potential, or imagined, resulting  from
  * the use of it.)
- * 
- * $Log: defwin.c,v $
- * Revision 1.6  2007/02/24 10:19:55  modemhero
- * Cygwin makefile changes: fixed up a bunch of problems to get build to work, still not
- * perfect as libdir not resolving correctly.  Also removed CYGWIN define from code and
- * placed it as a compiler runtime define.  Progress of Cygwin build is that client runs, but
- * select() is broken.  Most likely related to struct fd_set definition.
- * Added observer support for shrink phasers, color phaser, warn and vary shields, and
- * removed observer support for detcircle.
- * Fixed detcircle so turning it off really does turn it off (oops).
- * Fixed color phaser with regards to FPS changes, so it works at all framerates.
- * Added observer support for showArmy for locking onto planets.
- * Split varyShields into 2 netrekrc options, varyShields and varyShieldsColor, to be
- * able to vary either/neither/both shield graphic and shield color with damage.
- * Changed defaults for FPS client/server values back to 10 from 50.  Let the user
- * have it in netrekrc if they want to request a higher rate, and don't assume servers
- * are running at 50 FPS.  Require that feature packet to be sent to increase the
- * update rate.
- *
- * Revision 1.5  2006/05/14 02:14:54  modemhero
- * New planet bitmaps!  Using Defcom's art.  Changeable via planets menu.
- * New netrekrc option, "planetBitmapGalaxy: (0-3)", same options as planetBitmap, but now you have
- * the choice to change map display planets too!  And have map and local planets use different
- * bitmap sets
- * Fixed bug where map window border wasn't being redrawn on death
- * Shortpackets is now off by default.  In the current state of internet connectivity, most people
- *  don't need the reduced packets, which don't send complete information and break certain features
- *  such as which direction other players are moving, robot shields, observer geno messages,
- *  shield/cloak status for warp 0 players, etc.
- * Fix to problem with bottom and right borders in certain windows (like map) getting overwritten - thanks Stas!
- * Client now recognizes planets that are flagged as "core", waiting on server patch to
- * actually get this information and do something with it
- *
- * Revision 1.4  2006/05/07 16:59:27  modemhero
- * Major features in this patch are:
- * Merge of Stas' latest source into client.
- *  - Lots of double buffering code
- *  - Cleanup of protoyping functions and proper variable initialization
- *  - Addition of working RSA key generator mkkey.exe (this necessitates another DLL in the source)
- *  - Updated compile instructions, and a new document on how to make a RSA key
- *  - Working version of winkey with BCC compiler
- *  - Bug fixes as per listed in his change log
- * Cleanup of changes list to remove bug fix/stuff only coders need to know.
- * Removal of buildexe script - Stas rewrote build to make this obsolete
- * Addition of HR bitmap set (including a few placeholder bitmaps until art is done)
- * Metablock patch accepted (not working proper yet though due to retrieving login issue)
- * Probably a few other things I forgot about!
- *
- * Revision 1.2  2004/08/11 00:12:56  stas_p
- * replaced printf by more generic console functions fro console.c
- *
- * Revision 1.2  1999/06/13 05:51:49  sheldon
- * Added code for Cambot playback
- *
- * Revision 1.1.1.1  1999/03/10 06:21:13  sheldon
- * Initial public release of Netrek:1999
- * */
+ */
 
 #include <stdio.h>
 #include <signal.h>
@@ -356,7 +300,6 @@
         ,}
     ,}
     ,
-#ifdef SHORT_PACKETS
     {
         "tryShort", BOOL_DEF, "Use short packets for communications", &tryShort1,
         {
@@ -365,7 +308,6 @@
         ,}
     ,}
     ,
-#endif
     {
         "tryUdp", BOOL_DEF, "Use UDP for communications", &tryUdp1,
         {
@@ -405,17 +347,6 @@
         ,}
     ,}
     ,
-#ifdef RSA
-    {
-        "useRSA", BOOL_DEF, "Use RSA checking", &useRsa,
-        {
-            {0, NULL, ""},
-            {0, NULL, NULL}
-        ,}
-    ,}
-    ,
-#endif
-#ifdef VSHIELD_BITMAPS
     {
         "varyShields", BOOL_DEF, "Vary shields based on damage",
             &varyShields,
@@ -425,7 +356,6 @@
         ,}
     ,}
     ,
-#endif
     {
         "warnShields", BOOL_DEF, "Shield color based on alert status",
             &warnShields,
diff -ru oldver/netrekxp/src/distress.c newver/netrekxp/src/distress.c
--- oldver/netrekxp/src/distress.c	2007-06-14 08:30:02.000000000 -0400
+++ newver/netrekxp/src/distress.c	2009-06-08 18:03:02.000000000 -0400
@@ -493,11 +493,7 @@
 
     mtext = &message[ADDRLEN];
 
-#ifndef SERVER
     MZERO ((char *) dist, sizeof (dist));
-#else
-    bzero ((char *) dist, sizeof (dist));
-#endif
 
     dist->sender = from;
     dist->distype = (unsigned char) (mtext[0] & 0x1f);
@@ -618,14 +614,10 @@
     struct player *j;
     struct planet *l;
     char *strcap (char *s);
-
-#ifndef SERVER
     extern int ping_tloss_sc;   /* total % loss 0--100, server to client */
     extern int ping_tloss_cs;   /* total % loss 0--100, client to server */
     extern int ping_av;         /* average rt */
     extern int ping_sd;         /* standard deviation */
-
-#endif
     char c;
 
 
@@ -766,7 +758,6 @@
                 *pbuf1++ = sender->p_mapchars[1];
                 break;
             case 'W':          /* push WTEMP flag into buf */
-
 #ifdef RCM
                 if (dist->distype == rcm)       /* whydead for RCM */
                 {
@@ -774,7 +765,6 @@
                 }
                 else
 #endif
-
                 if (dist->wtmpflag)
                     *pbuf1++ = '1';
                 else
@@ -805,17 +795,12 @@
                 else
                 {
 #endif
-
                     sprintf (tmp, "%5.2f\0", j->p_kills);
-
                     APPEND (pbuf1, tmp);
-
 #ifdef RCM
                 }
 #endif
-
                 break;
-
             case 'U':          /* push player name into buf */
                 cap = 1;
             case 'u':          /* push player name into buf */
@@ -830,45 +815,25 @@
                 cap = 0;
                 break;
             case 'S':          /* push ship type into buf */
-
-#ifndef SERVER
-                APPEND (pbuf1, classes[sender->p_ship.s_type]);
-#else
-                APPEND (pbuf1, shiptypes[sender->p_ship.s_type]);
-#endif
-
+                sprintf (tmp, "%c%c", sender->p_ship.s_desig[0], sender->p_ship.s_desig[1]);
+                APPEND (pbuf1, tmp);
                 break;
-
-#ifdef SERVER
-            case 'v':          /* push average ping round trip time into buf */
-            case 'V':          /* push ping stdev into buf */
-            case 'y':          /* push packet loss into buf */
-                *pbuf1++ = '0';
-            case 'M':          /* push capitalized lastMessage into buf */
-            case 'm':          /* push lastMessage into buf */
-                break;
-#else
             case 'M':          /* push capitalized lastMessage into buf */
                 cap = 1;
             case 'm':          /* push lastMessage into buf */
                 APPEND_CAP (pbuf1, cap, lastMessage);
                 cap = 0;
                 break;
-
             case 'v':          /* push average ping round trip time into buf */
                 APPEND_INT (pbuf1, ping_av);
                 break;
-
             case 'V':          /* push ping stdev into buf */
                 APPEND_INT (pbuf1, ping_sd);
                 break;
-
             case 'y':          /* push packet loss into buf */
                 /* this is the weighting formula used be socket.c ntserv */
                 APPEND_INT (pbuf1, (2 * ping_tloss_sc + ping_tloss_cs) / 3);
                 break;
-#endif
-
             case '*':          /* push %* into buf */
             case '}':          /* push %} into buf */
             case '{':          /* push %{ into buf */
diff -ru oldver/netrekxp/src/dmessage.c newver/netrekxp/src/dmessage.c
--- oldver/netrekxp/src/dmessage.c	2008-04-13 20:14:14.000000000 -0400
+++ newver/netrekxp/src/dmessage.c	2009-06-09 20:19:48.000000000 -0400
@@ -25,91 +25,6 @@
 static int version_sent = 0;
 
 /******************************************************************************/
-/***  CheckFeatures()                                                       ***/
-/******************************************************************************/
-static void
-CheckFeatures (char *m)
-{
-    char buf[BUFSIZ];
-    char *pek = &m[10];
-
-    if (strlen (m) < 11)
-        return;
-
-    while ((*pek == ' ') && (*pek != '\0'))
-        pek++;
-
-    STRNCPY (buf, "COW: ", 6);
-
-    if (!strcmp (pek, "NO_NEWMACRO"))
-    {
-        UseNewMacro = 0;
-        strcat (buf, pek);
-    }
-
-    if (!strcmp (pek, "NO_SMARTMACRO"))
-    {
-        UseSmartMacro = 0;
-        strcat (buf, pek);
-    }
-
-    if (!strcmp (pek, "WHY_DEAD"))
-    {
-        why_dead = 1;
-        strcat (buf, pek);
-    }
-
-    if (!strcmp (pek, "RC_DISTRESS"))
-    {
-        gen_distress = 1;
-        distmacro = dist_prefered;
-        strcat (buf, pek);
-    }
-
-#ifdef MOTION_MOUSE
-    if (!strcmp (pek, "NO_CONTINUOUS_MOUSE"))
-    {
-        motion_mouse_enablable = 0;
-        strcat (buf, pek);
-    }
-#endif
-
-#ifdef MULTILINE_MACROS
-    if (!strcmp (pek, "MULTIMACROS"))
-    {
-        multiline_enabled = 1;
-        strcat (buf, pek);
-    }
-#endif
-
-    if (!strcmp (pek, "SBHOURS"))
-    {
-        SBhours = 1;
-        strcat (buf, pek);
-    }
-
-    /* Client spezific notes sent by the server */
-    if (!strncmp (pek, "INFO", 4))
-    {
-        strcat (buf, pek);
-    }
-
-    if (strlen (buf) == 5)
-    {
-        strcat (buf, "UNKNOWN FEATURE: ");
-        strcat (buf, pek);
-    }
-
-    buf[79] = '\0';
-
-#ifdef TOOLS
-    W_WriteText (toolsWin, 0, 0, textColor, buf, strlen (buf), W_RegularFont);
-#else
-    W_MessageAllowedWindows (WAM_INDIV, 0, 0, W_White, buf, strlen (buf), 0);
-#endif
-}
-
-/******************************************************************************/
 /***  dmessage()                                                            ***/
 /******************************************************************************/
 void
@@ -193,11 +108,8 @@
             }
         }
         if (flags == (MCONFIG + MINDIV + MVALID))
-        {
-            if (from == 255)
-                CheckFeatures (message);
             return;
-        }
+
         if ((flags == team) || (flags == take) || (flags == destroy))
         {
             W_MessageAllowedWindows (WAM_TEAM, 0, 0, color, message, len, shipFont (me));
@@ -398,12 +310,12 @@
 void
 sendVersion (void)
 {
-    char client_ver[15];
+    char client_ver[80];
 
     if (!version_sent)
     {
         version_sent = 1;
-        sprintf (client_ver, "@%s", mvers);
+        sprintf (client_ver, "@%s %s", version, mvers);
 
         pmessage (client_ver, (short) me->p_no, MINDIV | MCONFIG);
     }
diff -ru oldver/netrekxp/src/feature.c newver/netrekxp/src/feature.c
--- oldver/netrekxp/src/feature.c	2008-07-12 22:53:36.000000000 -0400
+++ newver/netrekxp/src/feature.c	2009-06-11 17:51:50.000000000 -0400
@@ -5,8 +5,7 @@
 /*** March, 1994.    Joe Rumsey, Tedd Hadley                                ***/
 /***                                                                        ***/
 /*** most of the functions needed to handle SP_FEATURE/CP_FEATURE packets.  ***/
-/*** fill in the features list below for your client, and add a call to     ***/
-/*** reportFeatures just before the RSA response is sent. handleFeature     ***/
+/*** fill in the features list below for your client,  handleFeature        ***/
 /*** should just call checkFeature, which will search the list and set the  ***/
 /*** appropriate variable.  features unknown to the server are set to the   ***/
 /*** desired value for client features, and off for server/client features. ***/
@@ -22,8 +21,6 @@
 /* type is CP_FEATURE, which is 60.  feature_spacket is identical. */
 #include "config.h"
 
-#ifdef FEATURE_PACKETS
-
 #include <stdio.h>
 #include <sys/types.h>
 
@@ -58,7 +55,7 @@
 
 #ifdef MOTION_MOUSE
     {"CONTINUOUS_MOUSE", &motion_mouse_enablable, 'C', 1, 0, 0},
-    {"CONTINUOUS_STEER", &motion_mouse_steering, 'C', 0, 0, 0},
+    {"CONTINUOUS_STEER", &motion_mouse_steering, 'C', 1, 0, 0},
 #endif
 
     {"NEWMACRO", &UseNewMacro, 'C', 1, 0, 0},
@@ -105,13 +102,16 @@
     {"TERRAIN", &F_terrain, 'S', 1, 0, 0},
     /* armies in paradise ship_cap_spacket */
     {"ARMIES_IN_SHIPCAP", &F_armies_shipcap, 'S', 1, 0, 0},
+    {"AUTO_WEAPONS", &F_auto_weapons, 'S', 1, 0, 0},
+    {"SP_RANK", &F_sp_rank, 'S', 1, 0, 0},
+    {"SP_LTD", &F_sp_ltd, 'S', 1, 0, 0},
+    {"TIPS", &F_tips, 'S', 1, 0, 0},
     {0, 0, 0, 0, 0, 0}
 };
 
 /******************************************************************************/
 /***  reportFeatures()                                                      ***/
 /******************************************************************************/
-/* call this from handleRSAKey, before sending the response. */
 static void
 reportFeatures (void)
 {
@@ -132,6 +132,8 @@
                 value = useFullShipInfo;
             else if (!strcmp(f->name, "FULL_WEAPON_RESOLUTION"))
                 value = useFullWeapInfo;
+            else if (!strcmp(f->name, "TIPS"))
+                value = showTips;
             else if (!strcmp(f->name, "SP_GENERIC_32"))
             {
                 value = useGeneric32;
@@ -304,16 +306,28 @@
 	    break;
 	}
     }
-    /* Ignore these feature packets for testing purposes */
+#endif /* BEEPLITE */
+
+
 #if DEBUG
-    motion_mouse_steering = 1;
-    F_show_army_count = 1;
-    F_show_other_speed = 1;
-    F_show_cloakers = 1;
-    F_turn_keys = 1;
-    F_show_visibility_range = 1;
+        /* Ignore these feature packets? */
+        motion_mouse_steering = 1;
+        F_show_army_count = 1;
+        F_show_other_speed = 1;
+        F_show_cloakers = 1;
+        F_auto_weapons = 1;
+        F_turn_keys = 1;
+        F_show_visibility_range = 1;
+#ifdef BEEPLITE
+        F_beeplite_flags = LITE_PLAYERS_MAP |
+            LITE_PLAYERS_LOCAL |
+            LITE_SELF |
+            LITE_PLANETS |
+            LITE_SOUNDS |
+            LITE_COLOR |
+            LITE_TTS;
+#endif
 #endif
-#endif /* BEEPLITE */
 }
 
 /******************************************************************************/
@@ -347,4 +361,3 @@
     checkFeature (packet);
 }
 
-#endif /* FEATURE_PACKETS */
diff -ru oldver/netrekxp/src/findslot.c newver/netrekxp/src/findslot.c
--- oldver/netrekxp/src/findslot.c	2008-04-13 22:15:28.000000000 -0400
+++ newver/netrekxp/src/findslot.c	2009-06-10 17:40:08.000000000 -0400
@@ -103,7 +103,7 @@
 findslot (void)
 {
     int oldcount = -1;
-    extern int MaxMotdLine;
+    extern int motd_last;
     int WaitMotdLine = 0;
     int showMotd = booleanDefault ("showMotd", 1);
     W_Event event;
@@ -186,7 +186,7 @@
                         {
                             WaitMotdLine += 28;
                             /* scroll to start if it goes over */
-                            if (WaitMotdLine > MaxMotdLine)
+                            if (WaitMotdLine > motd_last)
                                 WaitMotdLine = 0;
                         }
                         W_ClearWindow (motdWin);
diff -ru oldver/netrekxp/src/getname.c newver/netrekxp/src/getname.c
--- oldver/netrekxp/src/getname.c	2008-04-18 22:15:24.000000000 -0400
+++ newver/netrekxp/src/getname.c	2009-06-09 21:15:22.000000000 -0400
@@ -75,7 +75,7 @@
 
     static char *README[] = {
         "",
-        "Netrek XP 2009 - the better netrek eXPerience!",
+        "Netrek XP 2010 - the better netrek eXPerience!",
         "",
         "",
         "",
@@ -474,7 +474,7 @@
                 secondsLeft--;
                 showreadme ();
                 sprintf (tempstr, "Seconds to go: %d ", secondsLeft);
-                W_WriteText (w, 150, 400, textColor, tempstr,
+                W_WriteText (w, 3 * TWINSIDE / 10, 4 * TWINSIDE / 5, textColor, tempstr,
                              strlen (tempstr), W_BoldFont);
                 if (secondsLeft == 0)
                 {
@@ -507,7 +507,7 @@
         case W_EV_EXPOSE:
             displayStartup (defname);
             sprintf (tempstr, "Seconds to go: %d ", secondsLeft);
-            W_WriteText (w, 150, 400, textColor, tempstr, strlen (tempstr),
+            W_WriteText (w, 3 * TWINSIDE / 10, 4 * TWINSIDE / 5, textColor, tempstr, strlen (tempstr),
                          W_BoldFont);
             break;
         case W_EV_KEY:
diff -ru oldver/netrekxp/src/helpwin.c newver/netrekxp/src/helpwin.c
--- oldver/netrekxp/src/helpwin.c	2008-04-19 12:16:26.000000000 -0400
+++ newver/netrekxp/src/helpwin.c	2009-06-08 20:12:26.000000000 -0400
@@ -135,20 +135,13 @@
     "+     Show UDP options window",
     "=     Update all",
     ",     Ping stats window",
-
-#ifdef SHORT_PACKETS
     "`     Toggle PacketWindow",
     "-     Update small",
     "|     Update medium",
-#endif                          /* SHORT_PACKETS */
-
     "      (space) Unmap special windows",
     "\\     Reset user timer",
-
-#ifdef NBT
     "X     Enter Macro Mode",
     "X?    Show current Macros",
-#endif
 
 #ifdef TOOLS
     "M     Toggle shell tools window",
diff -ru oldver/netrekxp/src/input.c newver/netrekxp/src/input.c
--- oldver/netrekxp/src/input.c	2008-04-19 11:31:52.000000000 -0400
+++ newver/netrekxp/src/input.c	2009-06-08 22:19:04.000000000 -0400
@@ -54,6 +54,8 @@
 struct obtype *target;
 unsigned char key = ' ';
 
+void phaseraction (W_Event * data);
+
 /* this used to be 177 for an unknown reason...I think it may * have included
  * various control characters.  We don't support * those anyway right?? - jn */
 #define MAXKEY 224
@@ -366,7 +368,7 @@
         }
     }
 
-    for (i = 0, j = &players[i]; i < MAXPLAYER; i++, j++)
+    for (i = 0, j = &players[i]; i < nplayers; i++, j++)
     {
         if (j->p_status != PALIVE)
             continue;
@@ -756,7 +758,6 @@
     detallow = 1;
 }
 
-#ifdef BRMH
 #ifdef THREADED
 /******************************************************************************/
 /***  input()                                                               ***/
@@ -1022,255 +1023,6 @@
     return loop;
 }
 
-#else
-/******************************************************************************/
-/***  input() - non BRMH version?                                           ***/
-/******************************************************************************/
-input ()
-{
-    W_Event data;
-    W_Callback handler;
-    fd_set readfds;
-    struct timeval timeout;
-
-#ifdef AUTOKEY
-    timeout.tv_sec = 0;
-    timeout.tv_usec = 100000;
-#endif /* AUTOKEY */
-
-    while (1)
-    {
-        while (!W_EventsPending ())
-        {
-            if (keepInfo > 0 && opened_info != -2 &&    /* 6/1/93 LAB */
-                opened_info < 0 && infomapped)
-                destroyInfo ();
-            if (keepInfo > 0 && opened_info != -2)
-                opened_info--;
-
-            FD_ZERO (&readfds);
-            FD_SET (W_Socket (), &readfds);
-            FD_SET (sock, &readfds);
-            if (udpSock >= 0)
-                FD_SET (udpSock, &readfds);
-
-#ifdef AUTOKEY
-            if (autoKey)
-            {
-                doAutoKey ();
-                if (select (32, &readfds, 0, 0, &timeout) == 0) /* timeout */
-                    continue;
-            }
-            else
-                select (32, &readfds, 0, 0, 0);
-#else
-            select (32, &readfds, 0, 0, 0);
-#endif
-
-            if (FD_ISSET (sock, &readfds) ||
-                (udpSock >= 0 && FD_ISSET (udpSock, &readfds)))
-            {
-                intrupt ();
-                if (isServerDead ())
-                {
-                    LineToConsole ("Shit, We've been ghostbusted\n");
-                    LineToConsole ("hope you're not in a base\n");
-                    /* UDP fail-safe */
-                    commMode = commModeReq = COMM_TCP;
-                    commSwitchTimeout = 0;
-                    if (udpSock >= 0)
-                        closeUdpConn ();
-                    if (udpWin)
-                    {
-                        udprefresh (UDP_CURRENT);
-                        udprefresh (UDP_STATUS);
-                    }
-                    connectToServer (nextSocket);
-                    LineToConsole ("We've been resurrected!\n");
-                    map ();
-                }
-            }
-            if (FD_ISSET (W_Socket (), &readfds))
-                continue;       /* we're forced to call
-                                 * W_EventsPending at the
-                                 * top */
-        }
-        W_NextEvent (&data);
-        switch ((int) data.type)
-        {
-
-#ifdef MOUSE_AS_SHIFT
-        case W_EV_MKEY:
-            if ((handler = W_GetWindowKeyDownHandler (data.Window)) != NULL)
-                (*handler) (&data);
-            else if (messageon)
-                smessage (data.key);
-            else if (mouseAsShift)
-                mkeyaction (&data);
-            else
-                keyaction (&data);
-            break;
-#endif
-
-        case W_EV_KEY:
-
-#ifdef DEBUG
-            LineToConsole ("W_EV_KEY\n");
-#endif
-
-            if ((handler = W_GetWindowKeyDownHandler (data.Window)) != NULL)
-                (*handler) (&data);
-
-#ifdef DOC_WIN
-            else if (data.Window == docwin)
-                switch (data.key)
-                {
-                case 'f':
-                    docline += 28;
-
-                    if (docline >= maxdoclines)
-                        docline = maxdoclines - 28;
-
-                    showdocs (docline);
-                    break;
-                case 'b':
-                    docline -= 28;
-
-                    if (docline < 0)
-                        docline = 0;
-
-                    showdocs (docline);
-                    break;
-                case 'F':
-                    docline += 4;
-
-                    if (docline >= maxdoclines)
-                        docline = maxdoclines - 28;
-
-                    showdocs (docline);
-                    break;
-                case 'B':
-                    docline -= 4;
-
-                    if (docline < 0)
-                        docline = 0;
-
-                    showdocs (docline);
-                    break;
-                default:
-                    data.Window = w;
-                    keyaction (&data);
-                    break;
-                }
-            else if (data.Window == xtrekrcwin)
-                switch (data.key)
-                {
-                case 'f':
-                    xtrekrcline += 28;
-
-                    if (xtrekrcline >= maxxtrekrclines)
-                        xtrekrcline = maxxtrekrclines - 28;
-
-                    showxtrekrc (xtrekrcline);
-                    break;
-                case 'b':
-                    xtrekrcline -= 28;
-
-                    if (xtrekrcline < 0)
-                        xtrekrcline = 0;
-
-                    showxtrekrc (xtrekrcline);
-                    break;
-                case 'F':
-                    xtrekrcline += 4;
-
-                    if (xtrekrcline >= maxxtrekrclines)
-                        xtrekrcline = maxxtrekrclines - 28;
-
-                    showxtrekrc (xtrekrcline);
-                    break;
-                case 'B':
-                    xtrekrcline -= 4;
-
-                    if (xtrekrcline < 0)
-                        xtrekrcline = 0;
-
-                    showxtrekrc (xtrekrcline);
-                    break;
-                default:
-                    data.Window = w;
-                    keyaction (&data);
-                    break;
-                }
-#endif
-
-            else if (messageon)
-                smessage (data.key);
-            else
-                keyaction (&data);
-            break;
-
-#ifdef AUTOKEY
-        case W_EV_KEY_OFF:
-
-#ifdef DEBUG
-            LineToConsole ("W_EV_KEY_OFF\n");
-#endif
-
-            if ((handler = W_GetWindowKeyUpHandler (data.Window)) != NULL)
-                (*handler) (&data);
-            if (autoKey)
-                autoKeyOff (&data);
-            break;
-#endif /* AUTOKEY */
-
-        case W_EV_BUTTON:
-
-#ifdef DEBUG
-            LineToConsole ("W_EV_BUTTON\n");
-#endif
-
-            if ((handler = W_GetWindowButtonHandler (data.Window)) != NULL)
-                (*handler) (&data);
-            else
-                buttonaction (&data);
-            break;
-
-        case W_EV_EXPOSE:
-
-#ifdef DEBUG
-            LineToConsole ("W_EV_EXPOSE\n");
-#endif
-
-            if ((handler = W_GetWindowExposeHandler (data.Window)) != NULL)
-                (*handler) (&data);
-            else if (data.Window == mapw)
-                redrawall = 1;
-            else if (data.Window == warnw)
-                W_ClearWindow (warnw);
-            else if (data.Window == messagew)
-                W_ClearWindow (messagew);
-
-#ifdef XTREKRC_HELP
-            else if (defWin && (data.Window == defWin))
-                showdef ();
-#endif
-
-#ifdef DOC_WIN
-            else if (docwin && (data.Window == docwin))
-                showdocs (docline);
-            else if (xtrekrcwin && (data.Window == xtrekrcwin))
-                showxtrekrc (xtrekrcline);
-#endif
-
-            break;
-        default:
-            break;
-        }
-    }
-}
-
-#endif
 
 /******************************************************************************/
 /***  keyaction()                                                           ***/
@@ -1697,8 +1449,7 @@
     }
     else if (data->key == W_MBUTTON)
     {
-        course = (unsigned char) (getcourse (data->Window, data->x, data->y));
-        sendPhaserReq (course);
+        phaseraction(data);
     }
     else if (data->key == W_XBUTTON1)
     {
@@ -1913,6 +1664,63 @@
 }
 
 /******************************************************************************/
+/***  phaseraction()                                                        ***/
+/******************************************************************************/
+void
+phaseraction (W_Event * data)
+{
+    unsigned char course;
+    int x, y, dx, dy;
+    int distance;
+    struct obtype *gettarget (W_Window ww,
+                              int x,
+                              int y,
+                              int targtype),
+    *target;
+
+    if (F_auto_weapons && autoPhaser)
+    {
+        target = gettarget (data->Window, data->x, data->y, TARG_ENEMY | TARG_CLOAK | TARG_PLASMA);
+        if (target->o_type == PLAYERTYPE && target->o_num == me->p_no)
+        { 
+            /* failed to find a target */
+            course = (unsigned char) (getcourse (data->Window, data->x, data->y));
+            sendPhaserReq (course);
+            return;
+        }
+        dx = target->o_dist_x - me->p_x;
+        dy = target->o_dist_y - me->p_y;
+  
+        /* Sanity check on distance.  */
+        /* Check ship max phaser range for phasers.  Sometimes phasers are fired to "point". */
+
+        distance = (int) sqrt((double) dx*dx + (double) dy*dy);
+        if (distance > (PHASEDIST * me->p_ship.s_phaserdamage / 100))
+        { 
+            course = (unsigned char) (getcourse (data->Window, data->x, data->y));
+            sendPhaserReq (course);
+            return;
+        }
+
+        /* Everything checks out.  Scale to window coordinates. */
+        if (data->Window == w)
+        {
+            x = dx / scaleFactor + TWINSIDE / 2;
+            y = dy / scaleFactor + TWINSIDE / 2;
+        }
+        else
+        {
+            x = target->o_dist_x * GWINSIDE / GWIDTH;
+            y = target->o_dist_y * GWINSIDE / GWIDTH;
+        }
+        course = (unsigned char) (getcourse (data->Window, x, y));
+    }
+    else
+        course = (unsigned char) (getcourse (data->Window, data->x, data->y));
+    sendPhaserReq (course);
+}
+
+/******************************************************************************/
 /***  getcourse()                                                           ***/
 /******************************************************************************/
 int
@@ -1956,11 +1764,8 @@
             torps[i + (me->p_no * ntorps)].t_status == TSTRAIGHT)
         {
             sendDetMineReq ((short) (i + (me->p_no * ntorps)));
-
-#ifdef SHORT_PACKETS
             if (recv_short)
                 break;          /* Let the server det for me */
-#endif
         }
     }
     }
@@ -2000,19 +1805,14 @@
      *target;
     int targettype;
     enum dist_type i;
-
-#ifdef NBT
     int c;
     char who;
     int found = 0;
 
-#endif
-
     warning (" ");              /* We are here now, so turn off macro mode */
     MacroMode = 0;
 
 
-#ifdef NBT
     if (data->key == '?')
     {
         showMacroWin ();
@@ -2182,8 +1982,6 @@
     if (found)
         return;
 
-
-#ifdef DIST_KEY_NAME
     /* scan for distress call here */
 
     for (i = take; distmacro[i].name; i++)
@@ -2195,13 +1993,8 @@
         }
     }
 
-#endif
-
-
     warning ("Unknown macro");
     W_Beep ();
-
-#endif
 }
 
 /******************************************************************************/
@@ -2220,9 +2013,7 @@
     W_UnmapWindow (docwin);
 #endif
 
-#ifdef SHORT_PACKETS
     W_UnmapWindow (spWin);
-#endif
 
     W_UnmapWindow (pStats);
     W_UnmapWindow (statwin);
@@ -2232,10 +2023,7 @@
         destroyInfo ();
     W_UnmapWindow (helpWin);
     W_UnmapWindow (playerw2);
-
-#ifdef NBT
     W_UnmapWindow (macroWin);
-#endif
 
 #ifdef XTREKRC_HELP
     if (defWin)
@@ -2398,10 +2186,7 @@
 void
 Key45 (void)
 {
-#ifdef SHORT_PACKETS
     sendShortReq (SPK_SALL, 1);
-#endif
-
 }
 
 /******************************************************************************/
@@ -3055,14 +2840,10 @@
 void
 Key96 (void)
 {
-
-#ifdef SHORT_PACKETS
     if (spWin != NULL && W_IsMapped (spWin))
         spdone ();
     else
         spwindow ();
-#endif
-
 }
 
 /******************************************************************************/
@@ -3333,19 +3114,13 @@
 void
 Key112 (W_Event * data)
 {
-    unsigned char course;
-
 #ifdef AUTOKEY
     if (autoKey)
         autoKeyPhaserReqOn ();
     else
-    {
-        course = getcourse (data->Window, data->x, data->y);
-        sendPhaserReq (course);
-    }
+        phaseraction(data);
 #else
-    course = (unsigned char) (getcourse (data->Window, data->x, data->y));
-    sendPhaserReq (course);
+    phaseraction (data);
 #endif /* AUTOKEY */
 
 }
@@ -3517,11 +3292,7 @@
 void
 Key124 (void)
 {
-
-#ifdef SHORT_PACKETS
     sendShortReq (SPK_ALL, 1);
-#endif
-
 }
 
 /******************************************************************************/
diff -ru oldver/netrekxp/src/interface.c newver/netrekxp/src/interface.c
--- oldver/netrekxp/src/interface.c	2007-06-14 08:30:06.000000000 -0400
+++ newver/netrekxp/src/interface.c	2009-06-08 22:19:28.000000000 -0400
@@ -229,8 +229,6 @@
 {
     char timebuf[9];
     struct tm *tm;
-
-#ifdef BRMH
     static time_t tt;
 
     if ((curtime - tt) < 1)
@@ -245,9 +243,6 @@
     timebuf[5] = ':';
     timebuf[6] = (char) (tm->tm_sec / 10 + '0');
     timebuf[7] = (char) ((tm->tm_sec % 10) + '0');
-#else
-    sprintf (timebuf, "%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec);
-#endif
 
     tm = NULL;
 
diff -ru oldver/netrekxp/src/local.c newver/netrekxp/src/local.c
--- oldver/netrekxp/src/local.c	2008-07-17 18:52:40.000000000 -0400
+++ newver/netrekxp/src/local.c	2009-06-23 20:38:22.000000000 -0400
@@ -141,7 +141,7 @@
 {
     register int i, j, k;
     int imax, jmax, kmax;
-    
+
     if (TWINSIDE == 0)
         return;
 
@@ -176,18 +176,18 @@
     /*
        note: cpp symbols in expressions (TWINSIDE*SCALE) will be precalculated
        by any C optimizer
-    */ 
+    */
     int sectorx, sectory, sector_offx, sector_offy;
     int l = 0, r = 0, t = 0, b = 0;
-    
+
     if (fullview == 0)
         return;
-        
+
     sectorx = me->p_x / (fullview);
     sectory = me->p_y / (fullview);
     sector_offx = me->p_x - sectorx * (fullview);
     sector_offy = me->p_y - sectory * (fullview);
-    
+
     if (warpStreaks && streaks_on)
     /* Streaks_on is toggled on by redrawStarSector with a change in warp state,
        and toggled off after certain conditions are met.  Only need to track
@@ -196,18 +196,18 @@
     	star_updates++;
         last_speed = me->p_speed;
     }
-        
+
     if (sector_offx < 0)
     {  /* goddamn rounding towards 0 */
         sectorx--;
-        sector_offx += fullview; 
+        sector_offx += fullview;
     }
-    if (sector_offy < 0) 
+    if (sector_offy < 0)
     {  /* goddamn rounding towards 0 */
         sectory--;
-        sector_offy += fullview; 
-    }   
-  
+        sector_offy += fullview;
+    }
+
     /* at worst we have to redraw 4 star sectors */
 
     /* draw the one we're in */
@@ -223,7 +223,7 @@
     t = sector_offy < view && sectory > 0;
     b = sector_offy > view && sectory + 1 < MAXSECTORS;
 
-    if (t) 
+    if (t)
     {
         if (l)
             /* redraw upper-left sector */
@@ -232,31 +232,31 @@
         /* redraw upper sector */
         redrawStarSector (sectorx, sectory-1);
 
-        if (r)          
+        if (r)
             /* redraw upper-right sector */
             redrawStarSector (sectorx+1, sectory-1);
     }
-    if (l)          
+    if (l)
         /* redraw left sector */
         redrawStarSector (sectorx - 1, sectory);
 
     /* redraw center sector */
     redrawStarSector (sectorx, sectory);
 
-    if (r)          
+    if (r)
         /* redraw right sector */
         redrawStarSector (sectorx + 1, sectory);
 
-    if (b) 
+    if (b)
     {
-        if (l)          
+        if (l)
             /* redraw bottom-left sector */
             redrawStarSector (sectorx - 1, sectory + 1);
 
         /* redraw bottom sector */
         redrawStarSector (sectorx, sectory + 1);
 
-        if (r)          
+        if (r)
             /* redraw bottom-right sector */
             redrawStarSector (sectorx + 1, sectory + 1);
     }
@@ -283,7 +283,7 @@
         {
             streaks_on = 1;
             warpflag = (me->p_flags & PFWARP);
-        } 
+        }
         if (!paradise && warpflag != (me->p_flags & PFTWARP))
         {   /* change in warp state */
             streaks_on = 1;
@@ -432,7 +432,7 @@
 {
     int i, j;
     W_Icon (*planet_bits);
-    
+
     if ((p->pl_info & me->p_team)
 #ifdef RECORDGAME
         || playback
@@ -509,7 +509,7 @@
 
 /******************************************************************************/
 /***  planetResourcesC()
-/******************************************************************************/		           
+/******************************************************************************/
 static inline void
 planetResourcesC (register struct planet *p, int destwidth, int destheight,
                   int dx, int dy, W_Window window)
@@ -517,9 +517,9 @@
  *  Draw the resources for a colorized planet.  Destwidth and destheight
  *  are the dimensions of the planet (not the resources) bitmap.  Dx and
  *  dy are the coordinates of the upper left corner of the planet bitmap.
- *  Resources are aligned based on those factors. 
+ *  Resources are aligned based on those factors.
  */
-{   
+{
     if ((p->pl_info & me->p_team)
 #ifdef RECORDGAME
         || playback
@@ -536,7 +536,7 @@
                                BMP_ARMY_HEIGHT,
                                0,
                                army_bitmap, planetColor(p),
-                               window);       
+                               window);
         if (p->pl_flags & PLREPAIR)
             W_WriteScaleBitmap(dx,
                                dy - destheight/3 - 1,
@@ -694,17 +694,17 @@
             clearcount++;
         }
 
-        /* Allow army display if player/observer is orbitting a planet, or alternatively
+        /* Allow army display if player/observer is orbiting a planet, or alternatively
            if observer is locked onto a planet, or is show_army_count feature packet is on */
         if ((showArmy == 1 || showArmy == 3) && (l->pl_info & me->p_team)
          && (paradise ? (PL_TYPE(*l) == PLPLANET) : 1)
-         && (F_show_army_count || 
+         && (F_show_army_count ||
            ( (me->p_flags & PFORBIT) && ((F_sp_generic_32 && me->pl_orbit != -1) ? me->pl_orbit : get_closest_planet(me->p_x, me->p_y)) == l->pl_no)
           || (!paradise && (me->p_flags & PFPLLOCK) && (me->p_flags & PFOBSERV) && (me->p_planet == l->pl_no)) ))
         {
             char armbuf[4];
             int armbuflen;
-            
+
             if (l->pl_armies < 10)
             {
                 armbuf[0] = (char) (l->pl_armies + '0');
@@ -836,7 +836,7 @@
         if ((j->p_status != PALIVE) && (j->p_status != PEXPLODE))
             continue;
 
-/* Twarp sounds put up here so observers can hear them */            
+/* Twarp sounds put up here so observers can hear them */
 #ifdef SOUND
         if (paradise && myPlayer(j))
         {
@@ -851,7 +851,7 @@
           {
               // Kill any channels with ENTER_WARP_WAV or EXIT_WARP_WAV (group 3)
 	      Mix_HaltGroup(3);
-	      Play_Sound(ENTER_WARP_WAV, SF_INFO);                
+	      Play_Sound(ENTER_WARP_WAV, SF_INFO);
 	      warpchange = 0;
 	  }
 	  if (warpchange && !(j->p_flags & PFWARP))
@@ -879,7 +879,7 @@
               {
                   // Kill any channels with ENTER_WARP_WAV or EXIT_WARP_WAV (group 3)
 	    	  Mix_HaltGroup(3);
-	          Play_Sound(ENTER_WARP_WAV, SF_INFO);                
+	          Play_Sound(ENTER_WARP_WAV, SF_INFO);
 	          warpchange = 0;
 	      }
 	      if (warpchange && !(j->p_flags & PFTWARP))
@@ -924,7 +924,7 @@
                     // To avoid hearing twarp cloak sounds as the twarper/observer
                     if ( isMe(j) ? ((!paradise && (me->p_flags & PFTWARP)) ? 0 : 1) : 1 )
                     {
-                    	SetDistAngle(dx / scaleFactor + TWINSIDE / 2, dy / scaleFactor + TWINSIDE / 2);   
+                    	SetDistAngle(dx / scaleFactor + TWINSIDE / 2, dy / scaleFactor + TWINSIDE / 2);
                         // At short distances, don't use angular sound
                         if (!soundAngles || distance < SCALE/2)
                             Play_Sound_Loc(CLOAKED_WAV, SF_CLOAKING, -1, distance);
@@ -958,7 +958,7 @@
                     }
                     else    // Kill any channels with CLOAKED_WAV on them (group 1)
                         Mix_HaltGroup(1);
-                }            
+                }
 #endif
 
                 j->p_cloakphase--;
@@ -1152,7 +1152,7 @@
                     break;
                 }
             }
-            
+
             type = j->p_ship.s_type;
             // If it's a paradise ship, use a paradise bitmap set.
             if (paradise && type >= PARADISE_SHIP_OFFSET)
@@ -1173,7 +1173,7 @@
                 case ORI:
                     pos = 3;
                     break;
-                default: // Ind 
+                default: // Ind
                     pos = 1;
                     break;
                 }
@@ -1208,7 +1208,7 @@
                                     j->p_ship.s_height * SCALE / scaleFactor,
                                     BMP_SHIP_WIDTH,
                                     BMP_SHIP_HEIGHT,
-                                    // If fullBitmapRotation, use actual angle and ship bitmap in 
+                                    // If fullBitmapRotation, use actual angle and ship bitmap in
                                     // pointing up position.  If not, find the correct bitmap in
                                     // the ship rosette and set angle to 0.
                                     fullBitmapRotation ? (360 * j->p_dir/255) : 0,
@@ -1295,7 +1295,6 @@
             {
                 int color = playerColor (j);
 
-#ifdef VSHIELD_BITMAPS
                 int shieldnum;
 
                 if (isMe(j) && varyShields)
@@ -1317,11 +1316,10 @@
                     else if (value <= 66)
                         color = yColor;
                     else
-                       color = gColor;
+                        color = gColor;
                 }
                 else
                     color = playerColor (j);
-#endif
 
                 if (warnShields && isMe(j))
                 {
@@ -1339,7 +1337,6 @@
                     }
                 }
 
-#ifdef VSHIELD_BITMAPS
                 W_WriteScaleBitmap (dx - (BMP_SHIELD_WIDTH / 2) * SCALE / scaleFactor,
                                     dy - (BMP_SHIELD_HEIGHT / 2) * SCALE / scaleFactor,
                                     BMP_SHIELD_WIDTH * SCALE / scaleFactor,
@@ -1347,26 +1344,17 @@
                                     BMP_SHIELD_WIDTH,
                                     BMP_SHIELD_HEIGHT,
                                     0, shield[shieldnum], color, w);
-#else
-                W_WriteScaleBitmap (dx - (BMP_SHIELD_WIDTH / 2) * SCALE / scaleFactor,
-                                    dy - (BMP_SHIELD_HEIGHT / 2) * SCALE / scaleFactor,
-                                    BMP_SHIELD_WIDTH * SCALE / scaleFactor,
-                                    BMP_SHIELD_HEIGHT * SCALE / scaleFactor,
-                                    BMP_SHIELD_WIDTH,
-                                    BMP_SHIELD_HEIGHT,
-                                    0, shield, color, w);
-#endif
             }
             /* Warning hull */
             if (vary_hull)
             {
             	if (isMe(j))
-            	{	
+            	{
             	    int hull_left = (100 * (me->p_ship.s_maxdamage -
 		                     me->p_damage)) / me->p_ship.s_maxdamage;
 		    int hull_num = 7;
 		    int hull_color;
-		    
+
 		    if (hull_left <= 16)
 		    {
 		    	hull_num = 0;
@@ -1412,7 +1400,7 @@
                                         hull_width,
                                         hull_height,
 			                0, hull[hull_num], hull_color, w);
-			          
+
 		    clearzone[0][clearcount] = dx - (hull_width / 2) * SCALE / scaleFactor;
 		    clearzone[1][clearcount] = dy - (hull_height / 2) * SCALE / scaleFactor;
 		    clearzone[2][clearcount] = hull_width * SCALE / scaleFactor;
@@ -1425,7 +1413,7 @@
             {
             	if (myPlayer(j))
             	{
-                    W_WriteCircle(w, TWINSIDE/2, TWINSIDE/2, DETDIST/scaleFactor, 0, 0, W_Red);         
+                    W_WriteCircle(w, TWINSIDE/2, TWINSIDE/2, DETDIST/scaleFactor, 0, 0, W_Red);
                     clearzone[0][clearcount] = TWINSIDE/2 - (DETDIST/scaleFactor);
                     clearzone[1][clearcount] = TWINSIDE/2 - (DETDIST/scaleFactor);
                     clearzone[2][clearcount] = 2*DETDIST/scaleFactor + 1;
@@ -1443,14 +1431,14 @@
                     starty = dy + (int) (TIC_DIST/scaleFactor * Sin[j->p_dir]);
                     endx = startx + (int) (TIC_LEN * Cos[j->p_dir]);
                     endy = starty + (int) (TIC_LEN * Sin[j->p_dir]);
-                    
+
                     W_MakeLine(w, startx, starty, endx, endy, W_White);
                     clearline[0][clearlcount] = startx;
                     clearline[1][clearlcount] = starty;
                     clearline[2][clearlcount] = endx;
                     clearline[3][clearlcount] = endy;
                     clearlcount++;
-                    
+
                     /* Update desired heading if locked, in a similiar way
                        to how the server sets our heading */
                     if (j->p_flags & PFPLOCK)
@@ -1463,15 +1451,15 @@
                         j->p_desdir = (int) (atan2(planets[j->p_planet].pl_x - me->p_x,
                         j->p_y - planets[j->p_planet].pl_y) / XPI * 128.);
                     }
-                    
+
                     if (j == me && j->p_dir != j->p_desdir && !(j->p_flags & (PFORBIT | PFDOCK | PFOBSERV)))
                     {
                         startx = dx + (int) (TIC_DIST/scaleFactor * Cos[j->p_desdir]);
                         starty = dy + (int) (TIC_DIST/scaleFactor * Sin[j->p_desdir]);
                         endx = startx + (int) (DESIRED_TIC_LEN * Cos[j->p_desdir]);
                         endy = starty + (int) (DESIRED_TIC_LEN * Sin[j->p_desdir]);
-      
-                        W_MakeLine(w, startx, starty, endx, endy, 
+
+                        W_MakeLine(w, startx, starty, endx, endy,
                                   (j->p_flags & (PFPLOCK | PFPLLOCK)) ? W_Green : W_White);
                         clearline[0][clearlcount] = startx;
                         clearline[1][clearlcount] = starty;
@@ -1487,7 +1475,7 @@
             {
             	if (isMe(j))
             	{
-                    W_WriteCircle(w, TWINSIDE/2, TWINSIDE/2, SHOTRANGE/scaleFactor, 0, 0, W_Grey);         
+                    W_WriteCircle(w, TWINSIDE/2, TWINSIDE/2, SHOTRANGE/scaleFactor, 0, 0, W_Grey);
                     clearzone[0][clearcount] = TWINSIDE/2 - (SHOTRANGE/scaleFactor);
                     clearzone[1][clearcount] = TWINSIDE/2 - (SHOTRANGE/scaleFactor);
                     clearzone[2][clearcount] = 2*SHOTRANGE/scaleFactor + 1;
@@ -1560,7 +1548,7 @@
 
 #ifdef HOCKEY_LINES
                 /* Do we want to see puck's letter ? Nah. */
-                if (playing_hockey && 
+                if (playing_hockey &&
                     strcmp(j->p_name, "Puck") == 0 &&
                     strcmp(j->p_login, "Robot") == 0 &&
                     j->p_team == NOBODY &&
@@ -1637,7 +1625,7 @@
                 clearzone[2][clearcount] = buflen * W_Textwidth;
                 clearzone[3][clearcount] = W_Textheight;
                 clearcount++;
-                
+
                 /* Tractor target ID */
                 if (tractorID && isMe(j))
                 {
@@ -1663,7 +1651,7 @@
         {
             int i;
 
-            i = j->p_explode * 10 / server_ups;
+            i = j->p_explode * 5 / server_ups;
 
 #ifdef SOUND
             if (j->p_explode == 1)
@@ -1738,20 +1726,18 @@
 
         /* Now draw his phaser (if it exists) */
         php = &phasers[j->p_no];
-        
+
         /* Reset colorful phasers here */
-#ifdef JUBILEE_PHASERS
-        if (j == me && colorfulPhasers 
+        if (j == me && colorfulPhasers
             && (php->ph_status == PHFREE || php->ph_updateFuse == 0))
             ph_col = 0;
-#endif
 
         if (php->ph_status != PHFREE)
         {
 
 #ifdef SOUND
             if (php->sound_phaser)
-            {           
+            {
                 if (isMe(j))
                     Play_Sound(PHASER_WAV, SF_WEAPONS);
                 else
@@ -1779,245 +1765,229 @@
                     php->ph_fuse = 0;
                 }
             }
-            else
+
+            if (php->ph_status == PHMISS)
             {
-                if (php->ph_status == PHMISS)
+                /* Here I will have to compute end coordinate */
+                /* Server will sometimes send us this information though,
+                   so check if we have it first */
+                if (php->ph_x > 0 && php->ph_y > 0 && php->ph_x < GWIDTH && php->ph_y < GWIDTH)
                 {
-                    /* Here I will have to compute end coordinate */
-                    /* Server will sometimes send us this information though,
-                       so check if we have it first */
-                    if (php->ph_x > 0 && php->ph_y > 0 && php->ph_x < GWIDTH && php->ph_y < GWIDTH)
-                    {
-                        tx = (php->ph_x - me->p_x) / scaleFactor + TWINSIDE / 2;
-                        ty = (php->ph_y - me->p_y) / scaleFactor + TWINSIDE / 2;
-                    }
-                    else
-                    {
-                        tx = (int) (PHASEDIST * j->p_ship.s_phaserdamage / 100 *
-                                    Cos[php->ph_dir]);
+                    tx = (php->ph_x - me->p_x) / scaleFactor + TWINSIDE / 2;
+                    ty = (php->ph_y - me->p_y) / scaleFactor + TWINSIDE / 2;
+                }
+                else
+                {
+                    tx = (int) (PHASEDIST * j->p_ship.s_phaserdamage / 100 *
+                                Cos[php->ph_dir]);
 
-                        ty = (int) (PHASEDIST * j->p_ship.s_phaserdamage / 100 *
-                                    Sin[php->ph_dir]);
+                    ty = (int) (PHASEDIST * j->p_ship.s_phaserdamage / 100 *
+                                Sin[php->ph_dir]);
 
-                        tx = (j->p_x + tx - me->p_x) / scaleFactor + TWINSIDE / 2;
-                        ty = (j->p_y + ty - me->p_y) / scaleFactor + TWINSIDE / 2;
-                    }
+                    tx = (j->p_x + tx - me->p_x) / scaleFactor + TWINSIDE / 2;
+                    ty = (j->p_y + ty - me->p_y) / scaleFactor + TWINSIDE / 2;
                 }
-                else if (php->ph_status == PHHIT2)
+            }
+            else if (php->ph_status == PHHIT2)
+            {
+                tx = (php->ph_x - me->p_x) / scaleFactor + TWINSIDE / 2;
+                ty = (php->ph_y - me->p_y) / scaleFactor + TWINSIDE / 2;
+            }
+            else
+            {
+                /* Start point is dx, dy.  With short packets, target
+                   dx, dy not sent, and thus can be out of galaxy bounds
+                   in certain cases.  For example, if you die while phasering,
+                   and your target's ship is no longer visible to your team.
+                   Best solution seems to be to not draw the phaser by setting
+                   phaser length to 0. */
+                if (players[php->ph_target].p_x < 0 || players[php->ph_target].p_x > GWIDTH)
                 {
-                    tx = (php->ph_x - me->p_x) / scaleFactor + TWINSIDE / 2;
-                    ty = (php->ph_y - me->p_y) / scaleFactor + TWINSIDE / 2;
+                    tx = dx;
+                    ty = dy;
                 }
                 else
                 {
-                    /* Start point is dx, dy.  With short packets, target
-                       dx, dy not sent, and thus can be out of galaxy bounds
-                       in certain cases.  For example, if you die while phasering,
-                       and your target's ship is no longer visible to your team.
-                       Best solution seems to be to not draw the phaser by setting
-                       phaser length to 0. */
-                    if (players[php->ph_target].p_x < 0 || players[php->ph_target].p_x > GWIDTH)
-                    {
-                        tx = dx;
-                        ty = dy;
-                    }
-                    else
-                    {
-                        tx = (players[php->ph_target].p_x - me->p_x) /
-                            scaleFactor + TWINSIDE / 2;
-                        ty = (players[php->ph_target].p_y - me->p_y) /
-                            scaleFactor + TWINSIDE / 2;
-                    }
+                    tx = (players[php->ph_target].p_x - me->p_x) /
+                        scaleFactor + TWINSIDE / 2;
+                    ty = (players[php->ph_target].p_y - me->p_y) /
+                        scaleFactor + TWINSIDE / 2;
                 }
+            }
+
 
+            /* Shrink the phasers if necessary:
+             *
+             * Measure length in 16ths to make the maths a little
+             * easier for the computer (div 16 is a 4 bit shift).
+             *
+             * Add 8 to each sum to round properly. */
 
-                /* Shrink the phasers if necessary:
-                 *
-                 * Measure length in 16ths to make the maths a little
-                 * easier for the computer (div 16 is a 4 bit shift).
-                 * 
-                 * Add 8 to each sum to round properly. */
+            if (shrinkPhaserOnMiss || php->ph_status != PHMISS)
+            {
 
-                if (shrinkPhaserOnMiss || php->ph_status != PHMISS)
+                if (isMe(j))
                 {
-                	
-                    if (isMe(j))
+                    if (phaserShrinkStyle == 1)
                     {
-                        if (phaserShrinkStyle == 1)
-                        {
-                            px = (dx * 16 + 8) / 16;
-                            py = (dy * 16 + 8) / 16;
-                            get_shrink_phaser_coords(&new_dx, &new_dy,
-                                                    px, py, tx, ty, 
-                                                    php->ph_fuse, php->ph_maxfuse,
-                                                    phaserShrink);
-                            px = new_dx;
-                            py = new_dy;
-                        }
-                        else
-                        {
-                            px = (dx * (16 - phaserShrink) + tx * phaserShrink +
-                                    8) / 16;
-                            py = (dy * (16 - phaserShrink) + ty * phaserShrink +
-                                    8) / 16;
-                        }
+                        px = (dx * 16 + 8) / 16;
+                        py = (dy * 16 + 8) / 16;
+                        get_shrink_phaser_coords(&new_dx, &new_dy,
+                                                px, py, tx, ty,
+                                                php->ph_fuse, php->ph_maxfuse,
+                                                phaserShrink);
+                        px = new_dx;
+                        py = new_dy;
                     }
                     else
                     {
-                    	if (phaserShrinkStyle == 1)
-                        {
-                            px = (dx * 16 + 8) / 16;
-                            py = (dy * 16 + 8) / 16;
-                            get_shrink_phaser_coords(&new_dx, &new_dy,
-                                                    px, py, tx, ty, 
-                                                    php->ph_fuse, php->ph_maxfuse,
-                                                    theirPhaserShrink);
-                            px = new_dx;
-                            py = new_dy;
-                        }
-                        else
-                        {
-                            px = (dx * (16 - theirPhaserShrink) +
-                                  tx * theirPhaserShrink + 8) / 16;
-
-                            py = (dy * (16 - theirPhaserShrink) +
-                                  ty * theirPhaserShrink + 8) / 16;
-                        }
+                        px = (dx * (16 - phaserShrink) + tx * phaserShrink +
+                                8) / 16;
+                        py = (dy * (16 - phaserShrink) + ty * phaserShrink +
+                                8) / 16;
                     }
                 }
                 else
                 {
-                    px = dx;
-                    py = dy;
+                	if (phaserShrinkStyle == 1)
+                    {
+                        px = (dx * 16 + 8) / 16;
+                        py = (dy * 16 + 8) / 16;
+                        get_shrink_phaser_coords(&new_dx, &new_dy,
+                                                px, py, tx, ty,
+                                                php->ph_fuse, php->ph_maxfuse,
+                                                theirPhaserShrink);
+                        px = new_dx;
+                        py = new_dy;
+                    }
+                    else
+                    {
+                        px = (dx * (16 - theirPhaserShrink) +
+                              tx * theirPhaserShrink + 8) / 16;
+
+                        py = (dy * (16 - theirPhaserShrink) +
+                              ty * theirPhaserShrink + 8) / 16;
+                    }
                 }
+            }
+            else
+            {
+                px = dx;
+                py = dy;
+            }
 
 
-                /* Now draw the phasers */
+            /* Now draw the phasers */
 
-                if (friendlyPlayer (j))
+            if (friendlyPlayer (j))
+            {
+                if (isMe(j) && php->ph_status == PHHIT && colorfulPhasers)
                 {
-#ifdef JUBILEE_PHASERS
-                    if (isMe(j) && php->ph_status == PHHIT && colorfulPhasers)
-                    {
-                        int col;
+                    int col;
 
-                        switch (scaled_ph_col)
-                        {
-                        case 1:
-                        case 2:
-                            col = W_Red;
-                            break;
-                        case 3:
-                        case 4:
-                            col = W_Green;
-                            break;
-                        case 5:
-                        case 6:
-                            col = W_Yellow;
-                            break;
-                        case 7:
-                        case 8:
-                            col = W_Cyan;
-                            break;
-                        default:
-                            col = shipCol[remap[j->p_team]];
-                            break;
-                        }
-                        ph_col += (10/j->p_ship.s_phaserfuse);
-                        scaled_ph_col = ph_col * 10 / server_ups;
-                        W_CacheLine (w, px, py, tx, ty, col);
+                    switch (scaled_ph_col)
+                    {
+                    case 1:
+                    case 2:
+                        col = W_Red;
+                        break;
+                    case 3:
+                    case 4:
+                        col = W_Green;
+                        break;
+                    case 5:
+                    case 6:
+                        col = W_Yellow;
+                        break;
+                    case 7:
+                    case 8:
+                        col = W_Cyan;
+                        break;
+                    default:
+                        col = shipCol[remap[j->p_team]];
+                        break;
                     }
-                    else
+                    ph_col += (10/j->p_ship.s_phaserfuse);
+                    scaled_ph_col = ph_col * 10 / server_ups;
+                    W_CacheLine (w, px, py, tx, ty, col);
+                }
+                else
+                {
+                    if (php->ph_status != PHMISS)
                     {
-                        if (php->ph_status != PHMISS)
+                        if (highlightFriendlyPhasers)
+                            W_CacheLine (w, px, py, tx, ty, foreColor);
+                        else
                         {
-                            if (highlightFriendlyPhasers)
+                        if ((php->ph_fuse % 2) == 1)
                                 W_CacheLine (w, px, py, tx, ty, foreColor);
-                            else
-                            {
-	                        if ((php->ph_fuse % 2) == 1)
-                                    W_CacheLine (w, px, py, tx, ty, foreColor);
-	                        else
-                                    W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]);
-                            }
-                        }
                         else
-                            W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]);
+                                W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]);
+                        }
+                    }
+                    else
+                        W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]);
+                }
+                php->ph_fuse++;
+
+                clearline[0][clearlcount] = px;
+                clearline[1][clearlcount] = py;
+                clearline[2][clearlcount] = tx;
+                clearline[3][clearlcount] = ty;
+                clearlcount++;
+            }
+            else
+            {
+                if ((enemyPhasers > 0) && (enemyPhasers <= 10))
+                {
+                    unsigned char dir;
+
+                    if (tx == px && ty == py)
+                        continue;
+                    if (php->ph_status != PHMISS)   /* KOC 10/20/95  */
+                    {       /* hack for SP_2 */
+                        dir = (unsigned char)
+                              nint (atan2((double) (ty - py),
+                                   (double) (tx - px)) / XPI * 128.0);
                     }
-#else
-                    if (highlightFriendlyPhasers && (php->ph_status == PHHIT))
-                        W_CacheLine (w, px, py, tx, ty, foreColor);
                     else
                     {
-                        if ((php->ph_fuse % 2) == 1)
-                            W_CacheLine (w, px, py, tx, ty, foreColor);
-                        else
-                            W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]);
+                        dir = (unsigned char) (NORMALIZE (php->ph_dir + 64));
                     }
-#endif
+
+                    wx = (int) (px + enemyPhasers * Cos[dir]);
+                    wy = (int) (py + enemyPhasers * Sin[dir]);
+                    lx = (int) (px - enemyPhasers * Cos[dir]);
+                    ly = (int) (py - enemyPhasers * Sin[dir]);
+
+                    W_MakePhaserLine (w, wx, wy, tx, ty, shipCol[remap[j->p_team]]);
+                    W_MakePhaserLine (w, lx, ly, tx, ty, shipCol[remap[j->p_team]]);
+
                     php->ph_fuse++;
 
-                    clearline[0][clearlcount] = px;
-                    clearline[1][clearlcount] = py;
+                    clearline[0][clearlcount] = wx;
+                    clearline[1][clearlcount] = wy;
+                    clearline[2][clearlcount] = tx;
+                    clearline[3][clearlcount] = ty;
+                    clearlcount++;
+
+                    clearline[0][clearlcount] = lx;
+                    clearline[1][clearlcount] = ly;
                     clearline[2][clearlcount] = tx;
                     clearline[3][clearlcount] = ty;
                     clearlcount++;
                 }
                 else
                 {
-                    if ((enemyPhasers > 0) && (enemyPhasers <= 10))
-                    {
-                        unsigned char dir;
-
-                        if (tx == px && ty == py)
-                            continue;
-#ifdef SHORT_PACKETS
-                        if (php->ph_status != PHMISS)   /* KOC 10/20/95  */
-                        {       /* hack for SP_2 */
-                            dir = (unsigned char) 
-                                  nint (atan2((double) (ty - py),
-                                       (double) (tx - px)) / XPI * 128.0);
-                        }
-                        else
-#endif
-                        {
-                            dir = (unsigned char) (NORMALIZE (php->ph_dir + 64));
-                        }
-
-                        wx = (int) (px + enemyPhasers * Cos[dir]);
-                        wy = (int) (py + enemyPhasers * Sin[dir]);
-                        lx = (int) (px - enemyPhasers * Cos[dir]);
-                        ly = (int) (py - enemyPhasers * Sin[dir]);
-
-                        W_MakePhaserLine (w, wx, wy, tx, ty, shipCol[remap[j->p_team]]);
-                        W_MakePhaserLine (w, lx, ly, tx, ty, shipCol[remap[j->p_team]]);
-
-                        php->ph_fuse++;
-
-                        clearline[0][clearlcount] = wx;
-                        clearline[1][clearlcount] = wy;
-                        clearline[2][clearlcount] = tx;
-                        clearline[3][clearlcount] = ty;
-                        clearlcount++;
+                    W_MakePhaserLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]);
 
-                        clearline[0][clearlcount] = lx;
-                        clearline[1][clearlcount] = ly;
-                        clearline[2][clearlcount] = tx;
-                        clearline[3][clearlcount] = ty;
-                        clearlcount++;
-                    }
-                    else
-                    {
-                        W_MakePhaserLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]);
-
-                        php->ph_fuse++;
+                    php->ph_fuse++;
 
-                        clearline[0][clearlcount] = px;
-                        clearline[1][clearlcount] = py;
-                        clearline[2][clearlcount] = tx;
-                        clearline[3][clearlcount] = ty;
-                        clearlcount++;
-                    }
+                    clearline[0][clearlcount] = px;
+                    clearline[1][clearlcount] = py;
+                    clearline[2][clearlcount] = tx;
+                    clearline[3][clearlcount] = ty;
+                    clearlcount++;
                 }
             }
         }
@@ -2092,7 +2062,7 @@
                         This is the fix.  [BDyess]
                     */
                     if (tractcurrent == NULL)
-                    { 
+                    {
                         /* just starting */
                         tractcurrent = (struct tractor *) malloc (sizeof (struct tractor));
                         tracthead = tractcurrent;
@@ -2106,12 +2076,12 @@
                     tractcurrent->d2y = ly[1];
                     /* get ready for the next run through */
                     if (tractcurrent->next)
-                    {   
+                    {
                         /* already malloc'd before */
                         tractcurrent = tractcurrent->next;
-                    } 
-                    else 
-                    {        
+                    }
+                    else
+                    {
                         /* new maximum, create a new struct */
                         tractcurrent->next = (struct tractor *) malloc (sizeof (struct tractor));
                         tractcurrent = tractcurrent->next;
@@ -2178,7 +2148,7 @@
                     else
                     {
                         /* Leave the torp to explode on its own */
-                        k->t_updateFuse = BMP_TORPDET_FRAMES * server_ups / 10;
+                        k->t_updateFuse = BMP_TORPDET_FRAMES * server_ups / 5;
                         k->t_clear = 1;
                     }
                 }
@@ -2203,15 +2173,15 @@
                 {
                     other_torp_dist = distance;
                     other_torp_angle = angle;
-                }	
+                }
             }
-#endif         
+#endif
 
             if (k->t_status == TEXPLODE)
             {
                 k->t_fuse--;
-                frame = k->t_fuse * 10 / server_ups;
-                
+                frame = k->t_fuse * 5 / server_ups;
+
                 if (k->t_fuse < 0)
                 {
                     k->t_status = TFREE;
@@ -2223,7 +2193,7 @@
                     frame = BMP_TORPDET_FRAMES - 1;
 
 #ifdef SOUND
-                if (k->t_fuse == (MAX(2, BMP_TORPDET_FRAMES * server_ups / 10) - 1))
+                if (k->t_fuse == (MAX(2, BMP_TORPDET_FRAMES * server_ups / 5) - 1))
                 {
                     SetDistAngle(dx, dy);
                     // At short distances, don't use angular sound
@@ -2284,7 +2254,7 @@
                 {
                     k->t_fuse++;
 
-                    frame = k->t_fuse * 10 / server_ups;
+                    frame = k->t_fuse * 5 / server_ups;
 
                     if ((frame > BMP_TORP_FRAMES - 1) || (frame < 0))
                     {
@@ -2313,7 +2283,7 @@
                             torpTeam = 2;
                         }
                     }
-                    
+
                     if (j != me && ((k->t_war & me->p_team) ||
                                         (j->p_team & (me->p_hostile | me->p_swar))))
                     {
@@ -2341,7 +2311,7 @@
                         /* solid.  Looks strange. W_FillArea(w, dx - (etorp_width/2),
                          * dy - (etorp_height/2), etorp_width, etorp_height,
                          * torpColor(k)); */
-        
+
                         /* XFIX */
                         W_WriteBitmap (dx - (etorp_width / 2),
                                        dy - (etorp_height / 2), etorp, torpColor (k), w);
@@ -2406,7 +2376,7 @@
                 else
                 {
                     /* Leave the plasma to explode on its own */
-                    pt->pt_updateFuse = BMP_TORPDET_FRAMES * server_ups / 10;
+                    pt->pt_updateFuse = BMP_TORPDET_FRAMES * server_ups / 5;
                     pt->pt_clear = 1;
                 }
             }
@@ -2431,14 +2401,14 @@
             {
                 other_plasma_dist = distance;
                 other_plasma_angle = angle;
-            }   	
+            }
         }
-#endif   
+#endif
 
         if (pt->pt_status == PTEXPLODE)
         {
             pt->pt_fuse--;
-            frame = pt->pt_fuse * 10 / server_ups;
+            frame = pt->pt_fuse * 5 / server_ups;
 
             if (pt->pt_fuse < 0)
             {
@@ -2450,7 +2420,7 @@
                 frame = BMP_TORPDET_FRAMES - 1;
 
 #ifdef SOUND
-            if (pt->pt_fuse == (MAX(2, BMP_TORPDET_FRAMES * server_ups / 10) - 1))
+            if (pt->pt_fuse == (MAX(2, BMP_TORPDET_FRAMES * server_ups / 5) - 1))
             {
                 SetDistAngle(dx, dy);
                 // At short distances, don't use angular sound
@@ -2513,7 +2483,7 @@
             {
                 pt->pt_fuse++;
 
-                frame = pt->pt_fuse * 10 / server_ups;
+                frame = pt->pt_fuse * 5 / server_ups;
 
                 if ((frame > BMP_TORP_FRAMES - 1) || (frame < 0))
                 {
@@ -2563,7 +2533,7 @@
                 clearcount++;
             }
             else
-            {   
+            {
                 if (pt->pt_war & me->p_team)
                 {
                     W_WriteBitmap (dx - (eplasmatorp_width / 2),
@@ -2622,7 +2592,7 @@
             {
                 other_missile_dist = distance;
                 other_missile_angle = angle;
-            }   	
+            }
         }
 #endif
         if (colorWeapons)
@@ -2681,8 +2651,8 @@
 	break;
     case SHP_FBOOM:
         k->t_fuse--;
-        frame = k->t_fuse * 10 / server_ups;
-                
+        frame = k->t_fuse * 5 / server_ups;
+
         if (k->t_fuse < 0)
         {
             k->t_shape = SHP_BLANK;
@@ -2693,7 +2663,7 @@
             frame = BMP_FIGHTERDET_FRAMES - 1;
 
 #ifdef SOUND
-                if (k->t_fuse == (MAX(2, BMP_FIGHTERDET_FRAMES * server_ups / 10) - 1))
+                if (k->t_fuse == (MAX(2, BMP_FIGHTERDET_FRAMES * server_ups / 5) - 1))
                 {
                     SetDistAngle(dx, dy);
                     // At short distances, don't use angular sound
@@ -2723,8 +2693,8 @@
     case SHP_PBOOM:
     case SHP_DBOOM:
         k->t_fuse--;
-        frame = k->t_fuse * 10 / server_ups;
-                
+        frame = k->t_fuse * 5 / server_ups;
+
         if (k->t_fuse < 0)
         {
             k->t_shape = SHP_BLANK;
@@ -2735,7 +2705,7 @@
             frame = BMP_DRONEDET_FRAMES - 1;
 
 #ifdef SOUND
-                if (k->t_fuse == (MAX(2, BMP_DRONEDET_FRAMES * server_ups / 10) - 1))
+                if (k->t_fuse == (MAX(2, BMP_DRONEDET_FRAMES * server_ups / 5) - 1))
                 {
                     SetDistAngle(dx, dy);
                     // At short distances, don't use angular sound
@@ -2772,7 +2742,7 @@
             {
                 other_missile_dist = distance;
                 other_missile_angle = angle;
-            }   	
+            }
         }
 #endif
         if (colorWeapons)
@@ -2829,7 +2799,7 @@
         clearzone[3][clearcount] = BMP_FIGHTER_HEIGHT * SCALE / scaleFactor + 2;
         clearcount++;
         break;
-/*  
+/*
     These 4 appear unused....
 
     case SHP_TORP:
@@ -2837,18 +2807,7 @@
     case SHP_MINE:
     case SHP_BOOM:
 */
-/*
-    case SHP_WARP_BEACON:
-	image = getImage(I_WARPBEACON);
-	frame = udcounter;
-	if (k->t_fuse > 4) {
-	    image = getImage(I_WARPFLASH);
-	}
-	if (++(k->t_fuse) > 6) {
-	    k->t_fuse = 0;
-	}
-	break;
-*/
+
     default:
         LineToConsole("Wierd...unknown thingy number (%d).\n", k->t_shape);
 	return;
@@ -2962,7 +2921,7 @@
     if (viewRange && (MAXDISTCLOAK / scaleFactor < TWINSIDE / 2) &&
        (me->p_flags & PFCLOAK) && me->p_ship.s_type != STARBASE)
     {
-        /* Orbitting any non-owned planet gets you seen,
+        /* Orbiting any non-owned planet gets you seen,
            so don't draw the circle */
         if ((me->p_flags & PFORBIT) && (planets[me->p_planet].pl_owner != me->p_team)) ;
         /* Don't draw if not carrying and viewRange is 2 */
@@ -3201,7 +3160,7 @@
             else
                 alertBorderColor = W_White;
             W_ChangeBorder (baseWin, rColor);
-            
+
 #if defined(SOUND)
             Play_Sound(RED_ALERT_WAV, SF_ALERT);
 #endif
@@ -3362,10 +3321,8 @@
     {
         /* If alive but out of bounds, we probably missed a packet giving our location,
            so quietly request a new one */
-#ifdef SHORT_PACKETS
-        if (me->p_status == PALIVE) 
+        if (me->p_status == PALIVE)
             sendShortReq (SPK_SALL, 0);
-#endif
         return;
     }
 
@@ -3434,7 +3391,7 @@
         W_MakeLines (w, clearline[0], clearline[1], clearline[2],
                      clearline[3], clearlcount, backColor);
         clearlcount = 0;
-        
+
         if (clearccount)
         {
             W_WriteCircle(w, clearx, cleary, clearr, 0, 0, backColor);
diff -ru oldver/netrekxp/src/macrowin.c newver/netrekxp/src/macrowin.c
--- oldver/netrekxp/src/macrowin.c	2007-06-14 08:30:10.000000000 -0400
+++ newver/netrekxp/src/macrowin.c	2009-06-08 21:30:30.000000000 -0400
@@ -264,13 +264,9 @@
                 strcat (macromessage, " SHELL ");
                 break;
 #endif
-
-#ifdef NEWMACRO
             case '\0':
                 strcat (macromessage, " SPEC  ");
                 break;
-#endif
-
             default:
                 strcat (macromessage, " ----  ");
                 break;
diff -ru oldver/netrekxp/src/main.c newver/netrekxp/src/main.c
--- oldver/netrekxp/src/main.c	2007-07-28 21:30:48.000000000 -0400
+++ newver/netrekxp/src/main.c	2009-05-09 16:52:40.000000000 -0400
@@ -55,11 +55,6 @@
     LineToConsole (" [-H]   specify host (via gateway)\n");
 #endif
 
-#ifdef RSA
-    LineToConsole (" [-o]   use old style binary verification\n");
-    LineToConsole (" [-R]   use RSA binary verification\n");
-#endif
-
 #ifdef PACKET_LOG
     LineToConsole (" [-P]   log server packets, repeat for increased information\n");
 #endif
@@ -246,31 +241,6 @@
                  break;
 #endif
 
-#ifdef RSA
-            case 'o':               /* try old binary verification */
-                useRsa = -1;        /* will be reset leter, set
-                                     * negative here * to flag
-                                     * that it should override
-                                     * xtrekrc */
-                LineToConsole ("Using standard binary verification\n");
-                break;
-
-            case 'R':               /* try RSA verification */
-                useRsa = -2;        /* will be reset leter, set
-                                     * negative here * to flag
-                                     * that it should override
-                                     * xtrekrc */
-                LineToConsole ("Using RSA verification\n");
-                break;
-#else
-            case 'R':
-                LineToConsole ("This client does not support RSA verification\n");
-
-            case 'o':
-                LineToConsole ("Using standard binary verification\n");
-                break;
-#endif
-
             case 'h':           /* server to connect to */
                 if (i < argc && argv[i + 1])
                 {
@@ -362,13 +332,6 @@
             case 'v':           /* output version info */
                 LineToConsole ("%s %s\n", version, mvers);
                 LineToConsole ("%s\n", CBUGS);
-#ifdef RSA
-                LineToConsole ("RSA key installed: %s --- Created by: %s\n", key_name, client_creator);
-                LineToConsole ("Client type: %s\n", client_type);
-                LineToConsole ("Client arch: %s\n", client_arch);
-                LineToConsole ("Key permutation date: %s\n", client_key_date);
-                LineToConsole ("Comments: %s\n", client_comments);
-#endif
                 exit (0);
                 break;
             
diff -ru oldver/netrekxp/src/makecyg newver/netrekxp/src/makecyg
--- oldver/netrekxp/src/makecyg	2007-02-28 07:21:50.000000000 -0500
+++ newver/netrekxp/src/makecyg	2009-05-09 17:19:06.000000000 -0400
@@ -3,7 +3,6 @@
 #
 
 #DEBUG = 1
-RSA = 1
 
 # Cygwin
 cc     = gcc
@@ -67,15 +66,6 @@
 MAINOBJ         = main.o
 MAINSRC         = main.c
 
-ifndef RSA
-GMPLIB = ..\Win32\lib\libgmp.lib
-RSADEFS = -DRSA
-RSASRC = rsa_box.c rsa_box_0.c rsa_box_1.c rsa_box_2.c\
-                  rsa_box_3.c rsa_box_4.c
-RSAOBJ = rsa_box.o rsa_box_0.o rsa_box_1.o rsa_box_2.o\
-                  rsa_box_3.o rsa_box_4.o
-endif
-
 WIN32_SRCS = winmain.c mswindow.c
 WIN32_OBJS = winmain.o mswindow.o
 
@@ -87,9 +77,9 @@
 
 all: netrek.exe
 
-OBJS = $(ROBJ) $(MAINOBJ) $(RSAOBJ) $(INPUTOBJ) $(WIN32_OBJS)
+OBJS = $(ROBJ) $(MAINOBJ) $(INPUTOBJ) $(WIN32_OBJS)
 .c.o:
-	$(cc) $(cflags) $(ccompileonly) $(cdebug) $(DEFS) $(RSADEFS) $(DEBUGDEFS) $(INCS) $<
+	$(cc) $(cflags) $(ccompileonly) $(cdebug) $(DEFS) $(DEBUGDEFS) $(INCS) $<
 
 RESOURCES = vccnetrek.o
 
diff -ru oldver/netrekxp/src/makefile newver/netrekxp/src/makefile
--- oldver/netrekxp/src/makefile	2007-06-14 08:30:10.000000000 -0400
+++ newver/netrekxp/src/makefile	2009-05-23 10:28:16.000000000 -0400
@@ -3,7 +3,6 @@
 #
 
 DEBUG = 1
-RSA = 1
 
 # Borland C++ 5.5
 cc     = bcc32
@@ -56,15 +55,6 @@
 MAINOBJ         = main.obj
 MAINSRC         = main.c
 
-!ifdef RSA
-GMPLIB = ..\Win32\lib\BCC\libgmpbcc.lib
-RSADEFS = -DRSA
-RSASRC = rsa_box.c rsa_box_0.c rsa_box_1.c rsa_box_2.c\
-                  rsa_box_3.c rsa_box_4.c
-RSAOBJ = rsa_box.obj rsa_box_0.obj rsa_box_1.obj rsa_box_2.obj\
-                  rsa_box_3.obj rsa_box_4.obj
-!endif
-
 WIN32_SRCS = winmain.c mswindow.c
 WIN32_OBJS = winmain.obj mswindow.obj
 
@@ -76,9 +66,9 @@
 
 all: netrek.exe
 
-OBJS = $(ROBJ) $(MAINOBJ) $(RSAOBJ) $(INPUTOBJ) $(WIN32_OBJS)
+OBJS = $(ROBJ) $(MAINOBJ) $(INPUTOBJ) $(WIN32_OBJS)
 .c.obj:
-        $(cc) $(cflags) $(ccompileonly) $(cdebug) $(DEFS) $(RSADEFS) $(DEBUGDEFS) $(INCS) $<
+        $(cc) $(cflags) $(ccompileonly) $(cdebug) $(DEFS) $(DEBUGDEFS) $(INCS) $<
 
 RESOURCES = bccnetrek.res
 
diff -ru oldver/netrekxp/src/map.c newver/netrekxp/src/map.c
--- oldver/netrekxp/src/map.c	2008-07-11 22:57:20.000000000 -0400
+++ newver/netrekxp/src/map.c	2009-03-28 07:10:36.000000000 -0400
@@ -537,7 +537,7 @@
 
     for (l = planets + nplanets - 1; l >= planets; --l)
     {
-        /* Synchronize planet info (up to 10 times/second) for current orbitted
+        /* Synchronize planet info (up to 10 times/second) for current orbited
            planet.  For all other planets, send info on planet 0 through last
            planet (nplanets) every nplanets/10 seconds, one planet at a time,
            10 times/second. */
@@ -1301,7 +1301,7 @@
 	    && (isMe(j))
 	    && j->p_ship.s_type != STARBASE)
         {
-          /* Orbitting any non-owned planet gets you seen,
+          /* Orbiting any non-owned planet gets you seen,
              so don't draw the circle */
           if ((j->p_flags & PFORBIT) &&
           (planets[j->p_planet].pl_owner != j->p_team)) ;
diff -ru oldver/netrekxp/src/mswindow.c newver/netrekxp/src/mswindow.c
--- oldver/netrekxp/src/mswindow.c	2008-04-15 22:50:04.000000000 -0400
+++ newver/netrekxp/src/mswindow.c	2009-06-09 19:30:18.000000000 -0400
@@ -566,14 +566,8 @@
         free (expview[i]);
     for (i = 0; i < BMP_SBEXPL_FRAMES; i++)
         free (sbexpview[i]);
-
-#ifdef VSHIELD_BITMAPS
     for (i = 0; i < SHIELD_FRAMES; i++)
         free (shield[i]);
-#else
-    free (shield);
-#endif
-
     for (i = 0; i < BMP_HULL_FRAMES; i++)
         free (hull[i]);
 
@@ -811,7 +805,8 @@
     lf.lfPitchAndFamily = FF_MODERN | FIXED_PITCH;
 
     strcpy (lf.lfFaceName, "Netrek");
-    lf.lfHeight = -intDefault ("fontSize", fontSize);
+    fontSize = intDefault ("fontSize", fontSize);
+    lf.lfHeight = -fontSize;
     lf.lfWeight = FW_REGULAR;
 
     W_RegularFont = (W_Font) CreateFontIndirect (&lf);
@@ -2500,14 +2495,11 @@
 
         EventQueue[EventTail].type = W_EV_KEY;
 
-#ifdef CONTROL_KEY
-        if (use_control_key && (GetKeyState (VK_CONTROL) & ~0x1))
+        /* Check if it control key is down - use control keymap */
+        if (GetKeyState (VK_CONTROL) & ~0x1)
             EventQueue[EventTail].key = (unsigned char) (j + 96);
         else
             EventQueue[EventTail].key = (unsigned char) j;
-#else
-        EventQueue[EventTail].key = (unsigned char) j;
-#endif
         return (0);
 
     case WM_MOUSEMOVE:
@@ -5445,7 +5437,6 @@
 }
 
 
-#ifdef  SHORT_PACKETS
 /* Apparently this solves some problem on X, but here it just forces a redraw...*/
 /* Hrm - This was using redrawScrolling(win), updated to (win, hdc) -SAC 24 Jul 96 */
 /* Was void W_SetSensitive(Window *window, int b) -SAC */
@@ -5465,7 +5456,6 @@
         ReleaseDC (((Window *)win)->hwnd, hdc);
     }
 }
-#endif
 
 // Uses SRCAND for raster operation - useful for masking
 void
@@ -6106,6 +6096,11 @@
 
     sdb->old_bmp = (HBITMAP) SelectObject (sdb->mem_dc, sdb->mem_bmp);
 
+    if (NetrekPalette)
+    {
+        SelectPalette (sdb->mem_dc, NetrekPalette, FALSE);
+        RealizePalette (sdb->mem_dc);
+    }
     FillRect (sdb->mem_dc, &sdb->wr, colortable[W_Black].brush);
 
     return 1;
@@ -6174,7 +6169,7 @@
 void
 W_Win2Mem (SDBUFFER * sdb)
 {
-    BitBlt (sdb->mem_dc, 0, 0, sdb->wr.right, sdb->wr.bottom, sdb->mem_dc, 0, 0, SRCCOPY);
+    //BitBlt (sdb->mem_dc, 0, 0, sdb->wr.right, sdb->wr.bottom, sdb->win_dc, 0, 0, SRCCOPY);
 }
 
 void
diff -ru oldver/netrekxp/src/netrek.rc newver/netrekxp/src/netrek.rc
--- oldver/netrekxp/src/netrek.rc	2008-04-06 19:01:26.000000000 -0400
+++ newver/netrekxp/src/netrek.rc	2009-06-05 23:28:06.000000000 -0400
@@ -46,15 +46,15 @@
         BEGIN
             VALUE "Comments", "\0"
             VALUE "CompanyName", "Netrek\0"
-            VALUE "FileDescription", "Netrek XP 2009 Client\0"
-            VALUE "FileVersion", "1, 3, 0, 0\0"
-            VALUE "InternalName", "Netrek XP 2009\0"
+            VALUE "FileDescription", "Netrek XP 2010 Client\0"
+            VALUE "FileVersion", "1, 0, 0, 0\0"
+            VALUE "InternalName", "Netrek XP 2010\0"
             VALUE "LegalCopyright", "Copyright © 1986-2009\0"
             VALUE "LegalTrademarks", "\0"
             VALUE "OriginalFilename", "netrek.rc\0"
             VALUE "PrivateBuild", "\0"
-            VALUE "ProductName", "Netrek XP 2009 Client\0"
-            VALUE "ProductVersion", "1, 3, 0, 0\0"
+            VALUE "ProductName", "Netrek XP 2010 Client\0"
+            VALUE "ProductVersion", "1, 0, 0, 0\0"
             VALUE "SpecialBuild", "\0"
         END
     END
diff -ru oldver/netrekxp/src/newwin.c newver/netrekxp/src/newwin.c
--- oldver/netrekxp/src/newwin.c	2008-06-16 19:42:36.000000000 -0400
+++ newver/netrekxp/src/newwin.c	2009-06-10 18:44:52.000000000 -0400
@@ -33,12 +33,36 @@
 extern HINSTANCE MyInstance;
 extern int metaHeight;   /* height of metaserver window */
 
-static int line = 0;
-int MaxMotdLine = 0;
+/* line number of motd to display at top of window */
+static int motd_offset = 0;
+
+/* number of motd lines received since clear */
+int motd_last = 0;
+
+/* number of times we have received a motd clear */
+int motd_clears = 0;
+
+/* whether a refresh of the motd should be done on the next SP_MASK */
+int motd_refresh_needed = 0;
+
+/* if a motd line from the server is this, the client will junk all motd *
+ * data it currently has.  New data may be received */
+#define MOTDCLEARLINE   "\033\030CLEAR_MOTD\000"
 
 #define LINESPERPARADISEPAGE        38
 #define LINESPERPAGE                28
 
+/* forward linked list of received motd lines */
+struct motd_line
+{
+    struct motd_line *next;
+    char *data;
+    int bold;
+};
+
+/* pointer to first item in the list */
+static struct motd_line *motd_lines = NULL;
+
 #define S_MOTD 0
 #define S_SYSDEF 1
 #define S_CREDITS 2
@@ -48,14 +72,8 @@
 static struct piclist *motdPics = NULL;
 static struct piclist **motd_buftail = &motdPics;
 
-/* if a motd line from the server is this, the client will junk all motd *
- * data it currently has.  New data may be received */
-#define MOTDCLEARLINE  "\033\030CLEAR_MOTD\000"
-
-#define SIZEOF(a)       (sizeof (a) / sizeof (*(a)))
-
 #define BOXSIDE         (TWINSIDE / 5)
-#define MENU_PAD 4
+#define MENU_PAD        4
 #define TILESIDE        16
 #define YOFF            0
 
@@ -998,8 +1016,8 @@
     planetw = W_MakeTextWindow ("planet", TWINSIDE + 2 * THICKBORDER + 10, 10, 57, nplanets + 3, baseWin, 2);
     W_SetWindowExposeHandler (planetw, planetlist);
 
-    // Rank window sized assuming only 9 (NUMRANKS) ranks, resized in paradise, see ranklist.c
-    rankw = W_MakeTextWindow ("rank", 10, 300, 80, NUMRANKS + 9, baseWin, 2);
+    // Rank window sized assuming only 9 (nranks) ranks, may be resized, see ranklist.c
+    rankw = W_MakeTextWindow ("rank", 10, 300, 80, nranks + 9, baseWin, 2);
     W_SetWindowExposeHandler (rankw, ranklist);
 
     // Player list windows will be too small if players > 36, which is possible in paradise
@@ -1126,11 +1144,9 @@
     udpWin = W_MakeMenu ("UDP", TWINSIDE + 10, -BORDER + 10, 40, UDP_NUMOPTS, NULL, 2);
     W_SetWindowButtonHandler (udpWin, udpaction);
 
-#ifdef SHORT_PACKETS
     spWin = W_MakeMenu ("network", TWINSIDE + 10, -BORDER + 10, 40, SPK_NUMFIELDS, NULL, 2);
     W_SetWindowKeyDownHandler (spWin, spaction);
     W_SetWindowButtonHandler (spWin, spaction);
-#endif
 
 #if defined(SOUND)
     soundWin = W_MakeMenu("sound", TWINSIDE + 20, -BORDER + 10, 33,
@@ -1198,10 +1214,7 @@
     W_DefineTrekCursor (tstatw);
     W_DefineWarningCursor (qwin);
     W_DefineArrowCursor (udpWin);
-
-#ifdef SHORT_PACKETS
     W_DefineArrowCursor (spWin);
-#endif
 
 /* SRS these are not defined? Oh, because it's a inline def... grrr*/
     W_DefineFedCursor (teamWin[0]);
@@ -1269,11 +1282,8 @@
         W_MapWindow (reviewWin);
     if (checkMapped ("UDP"))
         udpwindow ();
-
-#ifdef SHORT_PACKETS
     if (checkMapped ("network"))
         spwindow ();
-#endif
     if (checkMapped ("stats"))
         W_MapWindow (statwin);
 }
@@ -1510,12 +1520,6 @@
             W_PointBitmap2 (base_sbexpview, 0, i, BMP_SBEXPL_WIDTH,
                             BMP_SBEXPL_HEIGHT);
     }
-
-#ifndef VSHIELD_BITMAPS
-    shield =
-        W_StoreBitmap3 ("bitmaps/misclib/shield.bmp", BMP_SHIELD_WIDTH,
-                        BMP_SHIELD_HEIGHT, BMP_SHIELD, w, LR_MONOCHROME);
-#else
     base_vshield =
         W_StoreBitmap3 ("bitmaps/misclib/vshield.bmp", BMP_SHIELD_WIDTH,
                         BMP_SHIELD_HEIGHT * SHIELD_FRAMES, BMP_SHIELD, w,
@@ -1523,7 +1527,6 @@
     for (i = 0; i < SHIELD_FRAMES; i++)
         shield[i] =
             W_PointBitmap2 (base_vshield, 0, i, BMP_SHIELD_WIDTH, BMP_SHIELD_HEIGHT);
-#endif
 
     base_hull =
         W_StoreBitmap3 ("bitmaps/misclib/varyhull.bmp", hull_width,
@@ -1640,7 +1643,7 @@
     *team = -1;
     startTime = time (0);
     if (me->p_whydead != KWINNER && me->p_whydead != KGENOCIDE)
-        showMotdWin (w, line);
+        showMotdWin (w, motd_offset);
 
     updatedeath ();
 
@@ -1705,8 +1708,7 @@
                     UpdatePlayerList ();
                 if (paradise && newMotdStuff)
                 {
-                    showMotdWin (w, line);
-                    //showValues(mapw);
+                    showMotdWin (w, motd_offset);
                 }
                 showTimeLeft (elapsed, autoQuit);
                 lasttime = time (0);
@@ -1814,47 +1816,47 @@
                     resetting = 1;
                     break;
                 case 'f':      /* Scroll motd forward */
-                    line = line + (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE);
-                    if (line > MaxMotdLine)
+                    motd_offset = motd_offset + (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE);
+                    if (motd_offset > motd_last)
                     {
-                        line = line - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE);
+                        motd_offset = motd_offset - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE);
                         break;
                     }
                     W_ClearWindow (w);
-                    showMotdWin (w, line);
+                    showMotdWin (w, motd_offset);
                     break;
                 case 'b':      /* Scroll motd backward */
-                    if (line == 0)
+                    if (motd_offset == 0)
                         break;
-                    line = line - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE);
-                    if (line < 0)
-                        line = 0;
+                    motd_offset = motd_offset - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE);
+                    if (motd_offset < 0)
+                        motd_offset = 0;
                     W_ClearWindow (w);
-                    showMotdWin (w, line);
+                    showMotdWin (w, motd_offset);
                     break;
                 /* Paradise MOTD requires paging */
                 case 'F':      /* Scroll motd a bit forwards */
                     if (paradise)
                         break;
-                    line = line + 4;
-                    if (line > MaxMotdLine)
+                    motd_offset = motd_offset + 4;
+                    if (motd_offset > motd_last)
                     {
-                        line = line - 4;
+                        motd_offset = motd_offset - 4;
                         break;
                     }
                     W_ClearWindow (w);
-                    showMotdWin (w, line);
+                    showMotdWin (w, motd_offset);
                     break;
                 case 'B':      /* Scroll motd a bit backwards */
                     if (paradise)
                         break;
-                    if (line == 0)
+                    if (motd_offset == 0)
                         break;
-                    line = line - 4;
-                    if (line < 0)
-                        line = 0;
+                    motd_offset = motd_offset - 4;
+                    if (motd_offset < 0)
+                        motd_offset = 0;
                     W_ClearWindow (w);
-                    showMotdWin (w, line);
+                    showMotdWin (w, motd_offset);
                     break;
                 }
             }
@@ -1898,7 +1900,7 @@
             else if (event.Window == w)
             {
             	if (me->p_whydead != KWINNER && me->p_whydead != KGENOCIDE)
-                    showMotdWin (w, line);
+                    showMotdWin (w, motd_offset);
             }
             else if (event.Window == helpWin)
 #ifdef RECORDGAME
@@ -1907,12 +1909,8 @@
                 else
 #endif
                     fillhelp ();
-
-#ifdef NBT
             else if (event.Window == macroWin)
                 fillmacro ();
-#endif
-
             else if (event.Window == playerw)
                 RedrawPlayerList ();
             else if (event.Window == warnw)
@@ -1931,7 +1929,12 @@
             sprintf (buf, "Welcome aboard %s!",
                     (me->p_stats2.st_royal == 0 ? ranks2[me->p_stats2.st_rank].name : royal[me->p_stats2.st_royal].name));
         else
-            sprintf (buf, "Welcome aboard %s!", ranks[me->p_stats.st_rank].name);
+        {
+            if (me->p_stats.st_rank >= nranks)
+                sprintf (buf, "Welcome aboard!");
+            else
+                sprintf (buf, "Welcome aboard %s!", ranks[me->p_stats.st_rank].name);
+        }
         warning (buf);
     }
 
@@ -2061,14 +2064,15 @@
     char *s, *t;
     int i;
     int end = 0;
+    
+    if (me == NULL)
+        return 0;
 
     if (strlen (line) < 60)
-        return (0);
+        return 0;
     s = line + 4;
     t = me->p_name;
 
-    if (me == NULL)
-        return (0);
 
     for (i = 0; i < 16; i++)
     {
@@ -2087,19 +2091,9 @@
         s++;
         t++;
     }
-    return (1);
+    return 1;
 }
 
-struct list
-{
-    char bold;
-    struct list *next;
-    char *data;
-};
-static struct list *motddata = NULL;    /* pointer to first bit of
-                                         * motddata */
-static int first = 1;
-
 
 /******************************************************************************/
 /***  showMotdWin()
@@ -2108,7 +2102,7 @@
 showMotdWin (W_Window motdwin, int atline)
 {
     int i, length, top, center;
-    struct list *data;
+    struct motd_line *data;
     int count;
     char buf[128];
 
@@ -2132,24 +2126,22 @@
     else
         top = 10;
 
-    if (first)
+    data = motd_lines;
+    
+    while (data != NULL)
     {
-        first = 0;
-        data = motddata;
-        while (data != NULL)
-        {
-            data->bold = (char) (checkBold (data->data));
-            data = data->next;
-        }
+        if (data->bold == -1)
+            data->bold = checkBold(data->data);
+        data = data->next;
     }
 
-    data = motddata;
+    data = motd_lines;
     for (i = 0; i < atline; i++)
     {
         if (data == NULL)
         {
             atline = 0;
-            data = motddata;
+            data = motd_lines;
             break;
         }
         data = data->next;
@@ -2180,14 +2172,9 @@
             break;
     }
     if (paradise)
-    {
-        if (motdwin == w) {
-	    W_WriteText(mapw, GWINSIDE/2 - W_Textwidth * strlen(blk_refitstring) / 2, GWINSIDE - 20, textColor, blk_refitstring,
-		        strlen(blk_refitstring), W_RegularFont);
-        }
         showPics(motdwin, atline);
-    }
-    showValues (data);
+    //if (!motd_clears)
+        showValues(data);
 }
 
 /******************************************************************************/
@@ -2228,10 +2215,10 @@
 /***   ATM: show the current values of the .sysdef parameters. */
 /******************************************************************************/
 void
-showValues (struct list *data)
+showValues (struct motd_line *data)
 {
-    int i;
-    static char *msg = "OPTIONS SET WHEN YOU STARTED WERE:";
+    int i, y;
+    static char *msg = "Server options set:";
 
     /* try to find the start of the info */
     while (1)
@@ -2244,45 +2231,90 @@
     }
     data = data->next;
 
-    W_WriteText (mapw, 20, 14 * W_Textheight, textColor, msg,
-                 strlen (msg), W_RegularFont);
+    if (paradise)
+    {
+        /* Use the full window for paradise, single line spacing, and no header */
+        for (i = 1; i < 50; i++)
+        {
+            y = i * W_Textheight;
 
-    for (i = 16; i < 50; i++)
+            if (data == NULL)
+                break;
+            if (data->data[0] == '+')       /* quick boldface hack */
+                W_WriteText (mapw, 20, y, textColor,
+                             data->data + 1, strlen (data->data) - 1, W_BoldFont);
+            else
+                W_WriteText (mapw, 20, y, textColor, data->data,
+                             strlen (data->data), W_RegularFont);
+            data = data->next;
+        }
+        W_WriteText(mapw, GWINSIDE/2 - W_Textwidth * strlen(blk_refitstring) / 2, GWINSIDE - 20, textColor, blk_refitstring,
+                    strlen(blk_refitstring), W_RegularFont);
+    }
+    else
     {
-        if (data == NULL)
-            break;
-        if (data->data[0] == '+')       /* quick boldface hack */
-            W_WriteText (mapw, 20, i * W_Textheight, textColor,
-                         data->data + 1, strlen (data->data) - 1, W_BoldFont);
-        else
-            W_WriteText (mapw, 20, i * W_Textheight, textColor, data->data,
-                         strlen (data->data), W_RegularFont);
-        data = data->next;
-        if (!paradise)  // Extra line for non-paradise
-            i++;
+        W_WriteText (mapw, 20, 14 * W_Textheight, textColor, msg,
+                     strlen (msg), W_RegularFont);
+
+        for (i = 16; i < 50; i+=2)
+        {
+            y = i * W_Textheight;
+
+            if (data == NULL)
+                break;
+            if (data->data[0] == '+')       /* quick boldface hack */
+                W_WriteText (mapw, 20, y, textColor,
+                             data->data + 1, strlen (data->data) - 1, W_BoldFont);
+            else
+                W_WriteText (mapw, 20, y, textColor, data->data,
+                             strlen (data->data), W_RegularFont);
+            data = data->next;
+        }
     }
 }
 
 /******************************************************************************/
-/***  ClearMotd()
-/***   Free the current motdData
+/***  motd_refresh()
+/***   Refresh the displayed MOTD
 /******************************************************************************/
-void ClearMotd (void)
+void motd_refresh (void)
 {
-    struct list *temp, *temp2;
-
-    temp = motddata;            /* start of motd information */
-    while (temp != NULL)
+    if (motd_refresh_needed)
     {
-        temp2 = temp;
-        temp = temp->next;
-        free (temp2->data);
-        free (temp2);
+        showMotdWin(w, motd_offset);
+        motd_refresh_needed = 0;
     }
-    // Probably need some stuff here from erase_motd()
+}
+
+/******************************************************************************/
+/***  ClearMotd()
+/***   Free the current motd_lines
+/******************************************************************************/
+void ClearMotd (void)
+{
+    struct motd_line *next, *this;
+    struct piclist *temppic;
 
-    first = 1;                  /* so that it'll check bold
-                                 * next time around */
+    while (motdPics) {
+	temppic = motdPics;
+	motdPics = temppic->next;
+	if (temppic->thepic)
+	    free(temppic->thepic);
+	free(temppic);
+    }
+
+    next = motd_lines; /* start of motd information */
+    while (next != NULL)
+    {
+        this = next;
+        next = next->next;
+        free (this->data);
+        free (this);
+    }
+    motd_lines = NULL;
+    motd_offset = 0;
+    motd_last = 0;
+    motd_clears++;
 }
 
 /******************************************************************************/
@@ -2291,57 +2323,64 @@
 void
 newMotdLine (char *line)
 {
-    static struct list **temp = &motddata;
-    static int statmode = 0;    /* ATM */
+    static struct motd_line *old = NULL; /* previous item allocated */
+    static int statmode = 0;
+    struct motd_line *new;
 
     if (paradise)
     {
-    /* Inlined blk_parsemotd() paradise client function */
-    if (strncmp("BLK: ", line, 5) == 0) {
-        /* See if it's a refit string.*/
-        if (strncmp(&line[5], "REFIT", 5) == 0) {
-            strncpy(blk_refitstring, &line[10], 79);
-            blk_refitstring[79] = '\0';
-        }
-        /* Check to see if it's a borgish feature being enabled. */
-        else if (strncmp(&line[5], "BORGISH ", 8) == 0) {
-            if (strncmp(&line[13], "FRCLOAK", 7) == 0)
-                blk_friendlycloak = 1;
+        /* Inlined blk_parsemotd() paradise client function */
+        if (strncmp("BLK: ", line, 5) == 0) {
+            /* See if it's a refit string.*/
+            if (strncmp(&line[5], "REFIT", 5) == 0) {
+                strncpy(blk_refitstring, &line[10], 79);
+                blk_refitstring[79] = '\0';
+            }
+            /* Check to see if it's a borgish feature being enabled. */
+            else if (strncmp(&line[5], "BORGISH ", 8) == 0) {
+                if (strncmp(&line[13], "FRCLOAK", 7) == 0)
+                    blk_friendlycloak = 1;
+            }
+            return;
         }
-        return;
-    }
-    if ( strncmp("\t@@b", line, 4) == 0) // Between pages
-	return;
-    /*if (!currpage ||
-	(pagecount - 1) == currpage->page ||
-	motdlinestate == IN_SYSDEF) */
-	newMotdStuff = 1;	/* set flag for event loop */
-	first = 1;		/* check for bold again */
+        if ( strncmp("\t@@b", line, 4) == 0) // Between pages
+    	    return;
+        /*if (!currpage ||
+            (pagecount - 1) == currpage->page ||
+            motdlinestate == IN_SYSDEF) */
+        newMotdStuff = 1;       /* set flag for event loop */
     }
-    
-    if (!statmode && !strcmp (line, STATUS_TOKEN))
-        statmode = 1;
-    if (!statmode)
-        MaxMotdLine++;          /* ATM - don't show on left */
-    (*temp) = (struct list *) malloc (sizeof (struct list));
 
-    if ((*temp) == NULL)
-    {                           /* malloc error checking --
-                                 * 10/30/92 EM */
-        LineToConsole ("Warning:  Couldn't malloc space for a new motd line!");
-        return;
-    }
     /* Motd clearing code */
     if (strcmp (line, MOTDCLEARLINE) == 0)
     {
+        W_ClearWindow (w);
         ClearMotd ();
+        statmode = 0;
         return;
     }
+    
+    if (!strcmp(line, STATUS_TOKEN))
+        statmode = 1;
+
+    new = (struct motd_line *) malloc(sizeof(struct motd_line));
+    if (new == NULL)
+        return;
 
-    (*temp)->next = NULL;
-    (*temp)->data = malloc (strlen (line) + 1);
-    strcpy ((*temp)->data, line);
-    temp = &((*temp)->next);
+    if (!statmode)
+        motd_last++;
+
+    /* add new line to tail of list */
+    new->next = NULL;
+    new->bold = -1;
+    new->data = strdup(line);
+    if (motd_lines == NULL)
+        motd_lines = new;
+    else
+        old->next = new;
+
+    old = new;
+    motd_refresh_needed++;
 }
 
 /******************************************************************************/
@@ -2361,10 +2400,7 @@
     }
  
     if ((currpage && page == currpage->page) || page == 0)
-    {
 	newMotdStuff = 1;	/* set flag for event loop */
-	first = 1;		/* check for bold again */
-    }
 
     tmp = (*motd_buftail) = (struct piclist *) malloc(sizeof(struct piclist));
     tmp->next = NULL;
diff -ru oldver/netrekxp/src/option.c newver/netrekxp/src/option.c
--- oldver/netrekxp/src/option.c	2008-07-15 19:51:46.000000000 -0400
+++ newver/netrekxp/src/option.c	2009-06-11 17:51:44.000000000 -0400
@@ -274,10 +274,8 @@
     {1, "Page %d (click to change)", &MenuPage, 0, 0, 0, NULL, &Menus_Range},
     {1, "", &colorClient, 0, 0, 0, bitmaptypemess, &bitmap_range},
     {1, "draw ships to 256 positions", &fullBitmapRotation, 0, 0, 0, NULL, NULL},
-#ifdef VSHIELD_BITMAPS
     {1, "vary shields bitmap w/ dam", &varyShields, 0, 0, 0, NULL, NULL},
     {1, "vary shields color w/ dam", &varyShieldsColor, 0, 0, 0, NULL, NULL},
-#endif
     {1, "use warning shields", &warnShields, 0, 0, 0, NULL, NULL},
     {1, "use warning hull", &vary_hull, 0, 0, 0, NULL, NULL},
     {1, "show my speed on local", &showMySpeed, 0, 0, 0, NULL, NULL},
@@ -298,11 +296,10 @@
 struct option Weapons_Menu[] = {
     {0, "Weapons Menu", &MenuPage, 0, 0, 0, NULL, &Menus_Range},
     {1, "Page %d (click to change)", &MenuPage, 0, 0, 0, NULL, &Menus_Range},
+    {1, "use auto aim phasers", &autoPhaser, 0, 0, 0, NULL, NULL},
     {1, "use color weapon bitmaps", &colorWeapons, 0, 0, 0, NULL, NULL},
     {1, "show weapons on galactic", &weaponsOnMap, 0, 0, 0, NULL, NULL},
-#ifdef JUBILEE_PHASERS
     {1, "use colorful phasers", &colorfulPhasers, 0, 0, 0, NULL, NULL},
-#endif
     {1, "highlight friendly phasers", &highlightFriendlyPhasers, 0, 0, 0, NULL, NULL},
     {1, "enemy phaser width: %d", &enemyPhasers, 0, 0, 0, NULL, &enPhasRng},
     {1, "", &phaserShrinkStyle, 0, 0, 0, shrinkphasermess, NULL},
@@ -392,9 +389,7 @@
 #endif
     {1, "show UDP control window", 0, &udpWin, 0, 0, NULL, NULL},
     {1, "show ping stats window", 0, &pStats, 0, 0, NULL},
-#ifdef SHORT_PACKETS
     {1, "show short packets window", 0, &spWin, 0, 0, NULL, NULL},
-#endif
     {1, "done", &notdone, 0, 0, 0, NULL, NULL},
     {-1, NULL, 0, 0, 0, 0, NULL, NULL}
 };
@@ -856,10 +851,10 @@
     /* Is it a special non-linear option range? i.e updatesPerSec */
     else if (op->op_range && op->op_option == &updatesPerSec)
     {
-    	if (data->key == W_RBUTTON)
-    	{
-    	    if (++updatesPerSec > server_fps) ; /* Don't exceed server fps */
-    	    else 
+        if (data->key == W_RBUTTON)
+        {
+            if (++updatesPerSec > server_fps) ; /* Don't exceed server fps */
+            else 
                 while (server_fps % updatesPerSec != 0) updatesPerSec++;
         }
         else if (data->key == W_MBUTTON)
@@ -875,6 +870,11 @@
             updatesPerSec = 1;
         if (updatesPerSec < 1)
             updatesPerSec = server_fps;
+        if (updatesPerSec != lastUpdateSpeed)
+        {
+            sendUpdatePacket (1000000 / updatesPerSec);
+            lastUpdateSpeed = updatesPerSec;
+        }
     }
 
     /* Does the button have a range of values? */
@@ -1056,11 +1056,6 @@
         STRNCPY (login, newlogin, PSEUDOSIZE);
         *newlogin = '\0';
     }
-    if (updatesPerSec != lastUpdateSpeed)
-    {
-        sendUpdatePacket (1000000 / updatesPerSec);
-        lastUpdateSpeed = updatesPerSec;
-    }
 
     sendOptionsPacket ();       /* update server as to the
                                  * client's options */
diff -ru oldver/netrekxp/src/parsemeta.c newver/netrekxp/src/parsemeta.c
--- oldver/netrekxp/src/parsemeta.c	2008-07-16 18:26:52.000000000 -0400
+++ newver/netrekxp/src/parsemeta.c	2009-06-15 20:04:56.000000000 -0400
@@ -55,6 +55,7 @@
 #include "struct.h"
 #include "data.h"
 #include "proto.h"
+#include "version.h"
 #ifdef METAPING
 #include <process.h>	// for _getpid
 #endif
@@ -144,7 +145,7 @@
 };
 
 int metaStatusLevel = statusNobody;
-
+int metaBroncoOnly = 0;
 
 /* Functions */
 extern void terminate (int error);
@@ -354,6 +355,8 @@
   char *metaservers;		/* our copy of the metaserver host names */
   char *token;			/* current metaserver host name          */
   struct sockaddr_in address;	/* the address of the metaservers	 */
+  static char *req;		/* the request packet for the metaserver */
+  static int reqlen;		/* the length of the request packet      */
 
   /* create the socket */
   if (msock < 0) {
@@ -369,6 +372,10 @@
       closesocket(msock);
       return 0;
     }
+    req = (char *) malloc(80);
+    sprintf(req, "?version=%s %s %s", version, mvers,
+            metaBroncoOnly ? "bronco" : "open");
+    reqlen = strlen(req);
   }
 
   /* send request to a multicast metaserver on local area network */
@@ -378,7 +385,7 @@
   if (metaVerbose)
     LineToConsole ("Requesting player list from nearby servers on %s\n",
                     inet_ntoa(address.sin_addr));
-  if (sendto(msock, "?", 1, 0, (struct sockaddr *)&address,
+  if (sendto(msock, req, reqlen, 0, (struct sockaddr *)&address,
 	     sizeof(address)) < 0) {
     perror("ReadMetasSend: sendto");
   } else {
@@ -417,7 +424,7 @@
 	  if (metaVerbose)
             LineToConsole ("Requesting player list from metaserver %s at %s\n",
                             token, inet_ntoa(address.sin_addr));
-	  if (sendto(msock, "?", 1, 0, (struct sockaddr *)&address,
+	  if (sendto(msock, req, reqlen, 0, (struct sockaddr *)&address,
 		sizeof(address)) < 0) {
 	    perror("ReadMetasSend: sendto");
 	  } else {
@@ -430,7 +437,7 @@
       if (metaVerbose)
         LineToConsole ("Requesting player list from metaserver %s\n",
                         inet_ntoa(address.sin_addr));
-      if (sendto(msock, "?", 1, 0, (struct sockaddr *)&address,
+      if (sendto(msock, req, reqlen, 0, (struct sockaddr *)&address,
 	sizeof(address)) < 0) {
         perror("ReadMetasSend: sendto");
       } else {
@@ -441,7 +448,7 @@
     token = strtok(NULL,",");
   } /* while (token != NULL) */
 
-  metaWindowName = "Netrek XP 2009 Server List";
+  metaWindowName = "Netrek XP 2010 Server List";
   return sent;
 }
 
@@ -566,8 +573,8 @@
       throwaway++;
 
 
-    /* ignore paradise servers */
-    // if (type == 'P') throwaway++;
+    /* Ignore non-Bronco servers?  INL server counts as Bronco... */
+    if (metaBroncoOnly && type != 'B' && type != 'I') throwaway++;
 
     /* if it's to be thrown away, do not add this server, skip to next */
     if (throwaway) continue;
@@ -695,7 +702,10 @@
   sp->refresh = 1;
   sp->lifetime = MAX_LIFETIME;
   sp->players = players;
-  sp->status = statusOpen;
+  if (players == 0)
+      sp->status = statusNobody;
+  else
+      sp->status = statusOpen;
   sp->typeflag = type;
   strncpy(sp->comment, comment, LINE);
   free(comment);
@@ -1166,7 +1176,7 @@
     }
 
     free (sockbuf);
-    metaWindowName = "Netrek XP 2009 Server List";
+    metaWindowName = "Netrek XP 2010 Server List";
 
     return 1;
 }
@@ -1290,6 +1300,9 @@
     /* whether to report everything that happens */
     metaVerbose = booleanDefault("metaVerbose", metaVerbose);
 
+    /* whether to list only Bronco servers */
+    metaBroncoOnly = booleanDefault("metaBroncoOnly", metaBroncoOnly);
+
     /* status cutoff for listing servers */
     metaStatusLevel = intDefault ("metaStatusLevel", metaStatusLevel);
 
@@ -1787,10 +1800,10 @@
     {
     	if (type == 1)
 	{
-	    do
-            {
-	        if (ReadMetasRecv(W_Socket())) metawindow();
-	    } while (!W_EventsPending());
+            while (1) {
+                if (W_EventsPending()) break;
+                if (ReadMetasRecv(W_Socket())) metawindow();
+            }
 	}
 	/* wait for any event */
 	W_NextEvent (&data);
diff -ru oldver/netrekxp/src/playback.c newver/netrekxp/src/playback.c
--- oldver/netrekxp/src/playback.c	2008-04-18 22:15:32.000000000 -0400
+++ newver/netrekxp/src/playback.c	2009-06-08 22:20:04.000000000 -0400
@@ -197,6 +197,20 @@
     if ((stringDefault ("indshipHRbmpfile")) != NULL)
         ind_ship_bmp_HR = stringDefault ("indshipHRbmpfile");
 
+    for (i = 0; i < 95; i++)
+    {
+        default_keymap[i] = (unsigned char) (i + 32);
+        default_keymap[i + 96] = (unsigned char) (i + 32 + 96);
+
+#ifdef MOUSE_AS_SHIFT
+        default_keymap[i + 192] = (unsigned char) (i + 32);
+        default_keymap[i + 288] = (unsigned char) (i + 32);
+        default_keymap[i + 384] = (unsigned char) (i + 32);
+        default_keymap[i + 480] = (unsigned char) (i + 32);
+        default_keymap[i + 576] = (unsigned char) (i + 32);
+#endif
+    }
+    default_keymap[95] = 0;
 
     resetdefaults ();
     build_default_configuration();
@@ -221,7 +235,7 @@
     mystats = &(me->p_stats);
 
     me->p_x = me->p_y = 50000;
-    myship = getship(CRUISER);
+    me->p_ship = *getship(CRUISER);
     displayme = me;
     packetsme = me;
 
@@ -240,20 +254,7 @@
     MZERO (mystats, sizeof (struct stats));
 
     mystats->st_tticks = 1;
-    for (i = 0; i < 95; i++)
-    {
-        default_keymap[i] = (unsigned char) (i + 32);
-        default_keymap[i + 96] = (unsigned char) (i + 32 + 96);
 
-#ifdef MOUSE_AS_SHIFT
-        default_keymap[i + 192] = (unsigned char) (i + 32);
-        default_keymap[i + 288] = (unsigned char) (i + 32);
-        default_keymap[i + 384] = (unsigned char) (i + 32);
-        default_keymap[i + 480] = (unsigned char) (i + 32);
-        default_keymap[i + 576] = (unsigned char) (i + 32);
-#endif
-    }
-    default_keymap[95] = 0;
     mystats->st_flags = ST_MAPMODE + ST_NAMEMODE + ST_SHOWSHIELDS +
         ST_KEEPPEACE + ST_SHOWLOCAL * 2 + ST_SHOWGLOBAL * 2;
 
@@ -320,11 +321,7 @@
     /* End entrywindow() */
 //#endif
 
-#ifdef BRMH
     redrawall = 2;
-#else
-    redrawall = 1;
-#endif
 
     myship = getship (myship->s_type);
     enter ();
@@ -361,13 +358,12 @@
 
     while (1)
     {
-#ifdef BRMH
         fd_set readfds;
         struct timeval timeout;
 
         timeout.tv_sec = 0;
         timeout.tv_usec = 0;
-#endif
+
         if (keepInfo > 0 && opened_info != -2 &&        /* 6/1/93 LAB */
             opened_info < 0 && infomapped)
             destroyInfo ();
@@ -378,11 +374,8 @@
             process_event ();
         }
 
-#ifdef BRMH
         intrupt (&readfds);
-#else
-        intrupt ();
-#endif
+
         Sleep (pbdelay);
     }
 }
@@ -491,6 +484,7 @@
     case SP_YOU:
     case SP_STATUS:
     case SP_PLANET:
+    case SP_LOGIN:
     case SP_FLAGS:
     case SP_MASK:
     case SP_PSTATUS:
@@ -506,7 +500,6 @@
     case SP_S_YOU_SS:
     case SP_S_PLAYER:
     case SP_SHIP_CAP:
-    case SP_GENERIC_32:
     case SP_S_TORP:
     case SP_S_TORP_INFO:
     case SP_S_8_TORP:
@@ -527,6 +520,10 @@
     case SP_TERRAIN2:
     case SP_TERRAIN_INFO2:
         return 1;
+    case SP_GENERIC_32:
+        if (!paradise) /* MOTD pic */
+            return 1;
+        break;
     }
     return 0;
 }
@@ -545,7 +542,9 @@
     }
 
     size = handlers[buf[0]].size;
-    if (size == -1)
+
+    /* paradise hack - REC_UPDATE */
+    if (size == -1 || buf[0] == REC_UPDATE)
     {
         if (buf[0] == SP_S_MESSAGE)
         {
@@ -569,11 +568,13 @@
         return 1;
     }
 
+    if (buf[0] != REC_UPDATE) {
     (*(handlers[buf[0]].handler)) (buf
 #ifdef CORRUPTED_PACKETS
                                    , recordFile
 #endif
         );
+    }
     return 0;
 }
 
@@ -729,7 +730,10 @@
  */
 #define RPB_NORMAL_SEQUENCE 0
 #define RPB_NORMAL_STATUS 1
-#define RPB_NORMAL_MAX 2
+#define RPB_NORMAL_SHIPCAP 2
+#define RPB_NORMAL_GENERIC32 3
+#define RPB_NORMAL_FEATURE 4
+#define RPB_NORMAL_MAX 5
 
 #define RPB_PLAYER_OFFSET (RPB_NORMAL_MAX)
 #define RPB_PLAYER_INFO 0
@@ -745,6 +749,19 @@
 #define RPB_PLAYER_PHASER 10
 #define RPB_PLAYER_MAX 11
 
+/* TODO: add to rpb
+SP_SCAN:
+SP_STATS2:
+SP_STATUS2:
+SP_PLANET2:
+SP_THINGY:
+SP_THINGY_INFO:
+SP_GPARAM:
+SP_PARADISE_EXT1:
+SP_TERRAIN2:
+SP_TERRAIN_INFO2:
+*/
+   
 #define RPB_PLASMA_OFFSET (RPB_PLAYER_OFFSET + RPB_PLAYER_MAX*MAXPLAYER)
 #define RPB_PLASMA_POSITION 0
 #define RPB_PLASMA_INFO 1
@@ -823,6 +840,15 @@
     case SP_SC_SEQUENCE:
         rpb_insert (diskpos, RPB_NORMAL_SEQUENCE);
         break;
+    case SP_SHIP_CAP:
+        rpb_insert (diskpos, RPB_NORMAL_SHIPCAP);
+        break;
+    case SP_GENERIC_32:
+        rpb_insert (diskpos, RPB_NORMAL_GENERIC32);
+        break;
+    case SP_FEATURE:
+        rpb_insert (diskpos, RPB_NORMAL_FEATURE);
+        break;
 
     case SP_PLAYER_INFO:
         id = ((struct plyr_info_spacket *) packet)->pnum;
diff -ru oldver/netrekxp/src/playerlist.c newver/netrekxp/src/playerlist.c
--- oldver/netrekxp/src/playerlist.c	2008-04-15 22:36:06.000000000 -0400
+++ newver/netrekxp/src/playerlist.c	2009-05-31 22:00:06.000000000 -0400
@@ -1127,9 +1127,14 @@
         case 'C':              /* Curt (short) Rank */
             if (paradise)
                 //format (buffPoint, (j->p_stats2.st_royal == 0 ? ranks2[j->p_stats2.st_rank].name : royal[j->p_stats2.st_royal].name), 10, 0);
-                format (buffPoint, "UNKN", 4, 0);
+                format (buffPoint, "", 4, 0);
             else
-                format (buffPoint, ranks[j->p_stats.st_rank].cname, 4, 0);
+            {
+                if (j->p_stats.st_rank >= nranks)
+                    format (buffPoint, "", 4, 0);
+                else
+                    format (buffPoint, ranks[j->p_stats.st_rank].cname, 4, 0);
+            }
             buffPoint += 4;
             break;
 
@@ -1137,7 +1142,12 @@
             if (paradise)
                 format (buffPoint, (j->p_stats2.st_royal == 0 ? ranks2[j->p_stats2.st_rank].name : royal[j->p_stats2.st_royal].name), 10, 0);
             else
-                format (buffPoint, ranks[j->p_stats.st_rank].name, 10, 0);
+            {
+                if (j->p_stats.st_rank >= nranks)
+                    format (buffPoint, "", 10, 0);
+                else
+                    format (buffPoint, ranks[j->p_stats.st_rank].name, 10, 0);
+            }
             buffPoint += 10;
             break;
 
diff -ru oldver/netrekxp/src/ranklist.c newver/netrekxp/src/ranklist.c
--- oldver/netrekxp/src/ranklist.c	2008-04-14 21:10:48.000000000 -0400
+++ newver/netrekxp/src/ranklist.c	2009-05-29 17:42:40.000000000 -0400
@@ -78,8 +78,6 @@
     register int i;
     char    buf[80];
 
-    W_ResizeTextWindow(rankw, 65, nranks2 + 8);
-
     (void) strcpy(buf, "  Rank       genocides  DI    battle strategy  special ships");
     W_WriteText(rankw, 1, 1, textColor, buf, strlen(buf), W_BoldFont);
     for (i = 0; i < nranks2; i++) {
@@ -114,12 +112,19 @@
     else
     {
     register int i;
+    static int size = 0;
     char buf[100];
 
-    /* W_ClearWindow(rankw); */
+    if (size != nranks)
+    {
+        W_ClearWindow(rankw);
+        W_ResizeTextWindow(rankw, 80, nranks + 9);
+        size = nranks;
+    }
+
     (void) strcpy (buf, "  Rank       Hours  Offense  Ratings      DI");
     W_WriteText (rankw, 1, 1, textColor, buf, strlen (buf), W_BoldFont);
-    for (i = 0; i < NUMRANKS; i++)
+    for (i = 0; i < nranks; i++)
     {
         sprintf (buf, "%-11.11s %5.0f %8.2f %8.2f   %7.2f",
                  ranks[i].name,
@@ -128,7 +133,7 @@
                  ranks[i].ratings, ranks[i].ratings * ranks[i].hours);
         if (mystats->st_rank == i)
         {
-            if (i < NUMRANKS-1)
+            if (i < nranks-1)
             {
                 char buf2[35];
                 float DI;
@@ -155,7 +160,7 @@
     strcpy (buf, "in less than the hours allowed (DI = ratings x hours).");
     W_WriteText (rankw, 1, i + 4, textColor, buf, strlen (buf),
                  W_RegularFont);
-    strcpy (buf, "OR, get offense+boming+planets above corresponding Ratings");
+    strcpy (buf, "OR, get offense+bombing+planets above corresponding Ratings");
     W_WriteText (rankw, 1, i + 5, textColor, buf, strlen (buf),
                  W_RegularFont);
     strcpy (buf, "Promotions also occur at 2xDI with Ratings - 1");
diff -ru oldver/netrekxp/src/redraw.c newver/netrekxp/src/redraw.c
--- oldver/netrekxp/src/redraw.c	2008-07-16 22:38:44.000000000 -0400
+++ newver/netrekxp/src/redraw.c	2009-06-08 22:21:58.000000000 -0400
@@ -33,13 +33,9 @@
 static int needredraw = 0;
 static unsigned long lastredraw = 0;
 
-#ifdef BRMH
 void
 intrupt (fd_set * readfds)
-#else
-void
-intrupt (void)
-#endif
+
 {
     time_t time (time_t *);
     unsigned long t;
@@ -53,11 +49,7 @@
 #endif
 
         needredraw |=
-#ifdef BRMH
             readFromServer (readfds);
-#else
-            readFromServer ();
-#endif
 
     t = msetime ();
     if (needredraw && (t >= lastredraw + redrawDelay * 100))
diff -ru oldver/netrekxp/src/short.c newver/netrekxp/src/short.c
--- oldver/netrekxp/src/short.c	2008-04-19 10:58:42.000000000 -0400
+++ newver/netrekxp/src/short.c	2009-06-23 20:44:30.000000000 -0400
@@ -9,7 +9,6 @@
 
 #include "config.h"
 
-#ifdef SHORT_PACKETS
 #include <stdio.h>
 #include <sys/types.h>
 #include <winsock.h>
@@ -121,7 +120,7 @@
 /* beam_up()       */
     "Must be orbiting or docked to beam up.",   /* 44 */
     "Those aren't our men.",    /* 45 */
-    "Comm Officer: We're not authorized to beam foriegn troops on board!",      /* 46 */
+    "Comm Officer: We're not authorized to beam foreign troops on board!",      /* 46 */
 /* beam_down() */
     "Must be orbiting or docked to beam down.", /* 47 */
     "Comm Officer: Starbase refuses permission to beam our troops over.",       /* 48 */
@@ -1101,7 +1100,7 @@
                 {
                     /* Fuse requires minimum value of 2 to ensure a redraw, fuse decremented
                     before drawing torp in local.c */
-                    thetorp->t_fuse = MAX(2, BMP_TORPDET_FRAMES * server_ups / 10);
+                    thetorp->t_fuse = MAX(2, BMP_TORPDET_FRAMES * server_ups / 5);
                 }
             }
         }                       /* if */
@@ -1344,7 +1343,11 @@
         else
 #endif
         if (damage >= 0 && damage < NUMWTEXTS)
+        {
+            /* Don't log spammy warning messages. */
+            log_ignore = 1;
             warning (w_texts[damage]);
+        }
         break;
     case PHASER_HIT_TEXT:
         target = &players[(unsigned char) packet->argument & 0x3f];
@@ -1987,14 +1990,6 @@
             players[pnum].p_kills = (float) (pkills / 100.0);
             /* FAT: prevent redundant player update */
             PlistNoteUpdate (pnum);
-
-#ifdef ARMY_SLIDER
-            if (me == &players[(int) pnum])
-            {
-                calibrate_stats ();
-                redrawStats ();
-            }
-#endif /* ARMY_SLIDER */
         }
 
     }                           /* for */
@@ -2195,7 +2190,3 @@
         PlistNoteUpdate (pnum);
     }                           /* for */
 }
-
-#endif
-
-/* END SHORT_PACKETS */
diff -ru oldver/netrekxp/src/smessage.c newver/netrekxp/src/smessage.c
--- oldver/netrekxp/src/smessage.c	2008-04-13 11:46:08.000000000 -0400
+++ newver/netrekxp/src/smessage.c	2009-06-08 21:31:48.000000000 -0400
@@ -651,7 +651,7 @@
 #endif
 
 
-/* Used in NEWMACRO, useful elsewhere also */
+/* Used in newmacro, useful elsewhere also */
 int
 getgroup (char addr,
           int *recip)
diff -ru oldver/netrekxp/src/socket.c newver/netrekxp/src/socket.c
--- oldver/netrekxp/src/socket.c	2008-07-15 20:03:32.000000000 -0400
+++ newver/netrekxp/src/socket.c	2009-06-23 20:45:10.000000000 -0400
@@ -26,6 +26,7 @@
 #include "struct.h"
 #include "data.h"
 #include "packets.h"
+#include "ltd_stats.h"
 #include "wtext.h"
 #include "playerlist.h"
 #include "map.h"
@@ -66,7 +67,6 @@
 {
 }
 
-#ifdef SHORT_PACKETS
 char numofbits[256] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1,
     2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1,
     2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2,
@@ -88,13 +88,10 @@
 static int vtsize[9] = { 4, 8, 8, 12, 12, 16, 20, 20, 24 };     /* How big is the torppacket */
 static int vtdata[9] = { 0, 3, 5, 7, 9, 12, 14, 16, 18 };       /* How big is Torpdata */
 int vtisize[9] = { 4, 7, 9, 11, 13, 16, 18, 20, 22 };   /* 4 byte Header + torpdata */
-static int login_received = 0;
 
 /* S_P2 */
 int shortversion = SHORTVERSION;        /* Which version do we use? */
 
-#endif /* SHORT_PACKETS */
-
 #ifdef PACKET_LOG
 void Log_Packet (char type,
                  int act_size);
@@ -134,13 +131,7 @@
     {sizeof (struct udp_reply_spacket), handleUdpReply},        /* SP_UDP_STAT */
     {sizeof (struct sequence_spacket), handleSequence}, /* SP_SEQUENCE */
     {sizeof (struct sc_sequence_spacket), handleSequence},      /* SP_SC_SEQUENCE */
-
-#ifdef RSA
-    {sizeof (struct rsa_key_spacket), handleRSAKey},    /* SP_RSA_KEY */
-#else
-    {0, dummy},                 /* #31, and dummy won't */
-#endif
-
+    {0, dummy},                 /* #31, old SP_RSA_KEY */
     {-1, handlePacket32}, /* SP_MOTD_PIC and SP_GENERIC_32 */
     {-1, handlePacket33}, /* SP_STATS2 and SP_FLAGS_ALL */
     {sizeof (struct status_spacket2), handleStatus2}, /* SP_STATUS2 */
@@ -150,8 +141,6 @@
     {sizeof (struct thingy_info_spacket), handleThingyInfo}, /* SP_THINGY_INFO */
 
     {sizeof (struct ship_cap_spacket), handleShipCap},  /* SP_SHIP_CAP */
-
-#ifdef SHORT_PACKETS
     {sizeof (struct shortreply_spacket), handleShortReply},     /* SP_S_REPLY */
     {-1, handleSMessage},       /* SP_S_MESSAGE */
     {-1                         /* sizeof(struct
@@ -160,51 +149,24 @@
     {sizeof (struct youshort_spacket), handleSelfShort},        /* SP_S_YOU */
     {sizeof (struct youss_spacket), handleSelfShip},    /* SP_S_YOU_SS */
     {-1, /* variable */ handleVPlayer}, /* SP_S_PLAYER */
-#else
-    {0, dummy},                 /* 40 */
-    {0, dummy},                 /* 41 */
-    {0, dummy},                 /* 42 */
-    {0, dummy},                 /* 43 */
-    {0, dummy},                 /* 44 */
-    {0, dummy},                 /* 45 */
-#endif
     {sizeof (struct ping_spacket), handlePing}, /* SP_PING */
-
-#ifdef SHORT_PACKETS
     {-1, /* variable */ handleVTorp},   /* SP_S_TORP */
     {-1, handleVTorpInfo},      /* SP_S_TORP_INFO */
     {20, handleVTorp},          /* SP_S_8_TORP */
     {-1, handleVPlanet},        /* SP_S_PLANET */
-#else
-    {0, dummy},                 /* 47 */
-    {0, dummy},                 /* 48 */
-    {0, dummy},                 /* 49 */
-    {0, dummy},                 /* 50 */
-#endif
-
     {-1, /* variable */ handleGameparams},
     {-1, /* variable */ handleExtension1},
     {sizeof (struct terrain_packet2), handleTerrain2}, /* 53 */
     {sizeof (struct terrain_info_packet2), handleTerrainInfo2},	/* 54 */
     {0, dummy},                 /* 55 */
-
-#ifdef SHORT_PACKETS            /* S_P2 */
     {0, dummy},                 /* SP_S_SEQUENCE not yet
                                  * implemented */
     {-1, handleVPhaser},        /* SP_S_PHASER */
     {-1, handleVKills},         /* SP_S_KILLS */
     {sizeof (struct stats_s_spacket), handle_s_Stats},  /* SP_S_STATS */
-#else
-    {0, dummy},                 /* 56 */
-    {0, dummy},                 /* 57 */
-    {0, dummy},                 /* 58 */
-    {0, dummy},                 /* 59 */
-#endif
-
-#ifdef FEATURE_PACKETS
     {sizeof (struct feature_cpacket), handleFeature},   /* CP_FEATURE; 60 */
-#endif
-
+    {sizeof (struct rank_spacket), handleRank},      /* SP_RANK */
+    {sizeof (struct ltd_spacket), handleLtd},         /* SP_LTD */
 };
 
 int sizes[] = {
@@ -245,34 +207,15 @@
     sizeof (struct scan_cpacket),       /* CP_SCAN (ATM) */
     sizeof (struct udp_req_cpacket),    /* CP_UDP_REQ */
     sizeof (struct sequence_cpacket),   /* CP_SEQUENCE */
-
-#ifdef RSA
-    sizeof (struct rsa_key_cpacket),    /* CP_RSA_KEY */
-#else
-    0,                          /* 37 */
-#endif
-
+    0,                          /* 37 old CP_RSA_KEY*/
     sizeof (struct planet_cpacket),     /* CP_PLANET */
     0,                          /* 39 */
     0,                          /* 40 */
     0,                          /* 41 */
-
-#ifdef PING
     sizeof (struct ping_cpacket),       /* CP_PING_RESPONSE */
-#else
-    0,
-#endif
-
-#ifdef SHORT_PACKETS
     sizeof (struct shortreq_cpacket),   /* CP_S_REQ */
     sizeof (struct threshold_cpacket),  /* CP_S_THRS */
     -1,                         /* CP_S_MESSAGE */
-#else
-    0,                          /* 43 */
-    0,                          /* 44 */
-    0,                          /* 45 */
-#endif
-
     0,                          /* 46 */
     0,                          /* 47 */
     0,                          /* 48 */
@@ -287,11 +230,7 @@
     0,                          /* 57 */
     0,                          /* 58 */
     0,                          /* 59 */
-
-#ifdef FEATURE_PACKETS
     sizeof (struct feature_cpacket),    /* CP_FEATURE; 60 */
-#endif
-
 };
 
 #define NUM_PACKETS (sizeof(handlers) / sizeof(handlers[0]) - 1)
@@ -1037,6 +976,10 @@
     case SP_S_KILLS:           /* S_P2 */
         size = ((unsigned char) bufptr[1] * 2) + 2;
         break;
+    case REC_UPDATE:
+        if (paradise && inplayback)	/* if not, something's very wrong... */
+            size = 4;
+        break;
     default:
         LineToConsole ("Unknown variable packet\n");
         /* terminate(1); */
@@ -1129,26 +1072,24 @@
         if (*bufptr < 1 || *bufptr > NUM_PACKETS
             || handlers[*bufptr].size == 0)
         {
-#ifndef CORRUPTED_PACKETS
             int i;
-#endif
 
-            LineToConsole ("Unknown packet type: %d\n", *bufptr);
-
-#ifndef CORRUPTED_PACKETS
-            LineToConsole ("count: %d, bufptr at %d,  Content:\n", count,
-                            bufptr - buf);
+            LineToConsole ("netrek protocol stream alignment failure, "
+                           "next byte %d (0x%02x)\n", *bufptr, *bufptr);
+            LineToConsole ("protocol buffer dump, bytes %d, [bufptr] at %d :\n",
+                           count, bufptr - buf);
             for (i = 0; i < count; i++)
             {
-                LineToConsole ("0x%x, ", (unsigned int) buf[i]);
+                if (i == (bufptr - buf))
+                    LineToConsole ("[%02x]", (unsigned int) buf[i] & 0xff);
+                else
+                    LineToConsole (" %02x ", (unsigned int) buf[i] & 0xff);
             }
-#endif
-
+            LineToConsole("\n");
             return (0);
         }
         size = handlers[*bufptr].size;
 
-#ifdef SHORT_PACKETS
         if (size == -1)
         {                       /* variable packet */
             size = getvpsize (bufptr);
@@ -1164,7 +1105,6 @@
                                 size, *bufptr);
             }
         }
-#endif /* SHORT_PACKETS */
 
         if (packetLights)
             light_receive();
@@ -1375,7 +1315,7 @@
         {
             /* Fuse requires minimum value of 2 to ensure a redraw, fuse decremented
                before drawing torp in local.c */
-            thetorp->t_fuse = MAX(2, BMP_TORPDET_FRAMES * server_ups / 10);
+            thetorp->t_fuse = MAX(2, BMP_TORPDET_FRAMES * server_ups / 5);
         }
     }
 }
@@ -2051,7 +1991,7 @@
         {
             /* Fuse requires minimum value of 2 to ensure a redraw, fuse decremented
                before drawing torp in local.c */
-            thetorp->pt_fuse = MAX(2, BMP_TORPDET_FRAMES * server_ups / 10);
+            thetorp->pt_fuse = MAX(2, BMP_TORPDET_FRAMES * server_ups / 5);
         }
     }
 }
@@ -2157,14 +2097,6 @@
         players[packet->pnum].p_kills = (float) (ntohl (packet->kills) / 100.0);
         /* FAT: prevent redundant player update */
         PlistNoteUpdate (packet->pnum);
-
-#ifdef ARMY_SLIDER
-        if (me == &players[packet->pnum])
-        {
-            calibrate_stats ();
-            redrawStats ();
-        }
-#endif /* ARMY_SLIDER */
     }
 }
 
@@ -2233,7 +2165,6 @@
 {
     struct mesg_cpacket mesPacket;
 
-#ifdef SHORT_PACKETS
     if (recv_short)
     {
         int size;
@@ -2248,8 +2179,6 @@
         mesPacket.type = CP_S_MESSAGE;
     }
     else
-#endif
-
         mesPacket.type = CP_MESSAGE;
     mesPacket.group = (char) group;
     mesPacket.indiv = (char) indiv;
@@ -2261,6 +2190,7 @@
 void
 handleMask (struct mask_spacket *packet)
 {
+    motd_refresh();
     tournMask = packet->mask;
 }
 
@@ -2452,11 +2382,16 @@
         LineToConsole ("handlePlyrLogin: received player num larger than nplayers\n");
         return;
     }
-    if (!paradise && packet->rank >= NUMRANKS)
+    /* So apparently the server sends this packet before it tells us if it is a paradise
+       server or not, which makes this check throw out valid player login packets on paradise
+       servers.  Sanity check on pl->p_stats.st_rank moved to playerlist.c and newwin.c 
+       as needed.  BB*/
+    /*
+    if (packet->rank >= nranks)
     {
         LineToConsole ("handlePlyrLogin: bad rank %d\n", packet->rank);
         return;
-    }
+    }*/
     packet->name[sizeof (packet->name) - 1] = '\0';
     packet->monitor[sizeof (packet->monitor) - 1] = '\0';
     packet->login[sizeof (packet->login) - 1] = '\0';
@@ -2666,41 +2601,9 @@
 #endif
 
 #if !defined(BORG)
-
-#ifndef RSA
     encryptReservedPacket (packet, &response, me->p_no);
     sendServerPacket ((struct player_spacket *) &response);
-#else
-
-    if (useRsa)
-    {                           /* can use -o option for old
-                                 * blessing */
-        /* client sends back a 'reserved' packet just saying RSA_VERSION info */
-        /* theoretically, the server then sends off a rsa_key_spacket * for the
-         * client to then respond to */
-        warning (RSA_VERSION);
-        STRNCPY (response.resp, RSA_VERSION, RESERVED_SIZE);
-        MCOPY (packet->data, response.data, RESERVED_SIZE);
-        response.type = CP_RESERVED;
-
-#ifdef DEBUG
-        LineToConsole ("Sending RSA reserved response\n");
 #endif
-    }
-    else
-    {
-        /* If server gods don't like NEWMACRO/SMARTMACRO they better install
-         * RSA... */
-        UseNewMacro = 1;
-        UseSmartMacro = 1;
-// SRS - Parameter 3 is incorrect?
-        encryptReservedPacket (packet, &response, me->p_no);
-    }
-
-    sendServerPacket ((struct player_spacket *) &response);
-#endif /* RSA */
-
-#endif /* defined(BORG) */
 }
 
 /* SP_SHIP_CAP packets are sent frequently by bronco servers but only
@@ -2763,10 +2666,11 @@
 	    temp->ship->s_desig[1] = packet->s_desig2;
 	    temp->ship->s_bitmap = ntohs(packet->s_bitmap);
 	    //buildShipKeymap(temp->ship);
-	    myship = getship (myship->s_type);
-            redrawTstats (); /* Redraw dashboard */
-            calibrate_stats (); /* Redefine colored statwin sliders */
-            redrawStats ();  /* Redraw statwin */
+	    me->p_ship = *getship (myship->s_type);
+	    myship = &(me->p_ship);
+	    redrawTstats (); /* Redraw dashboard */
+	    calibrate_stats (); /* Redefine colored statwin sliders */
+	    redrawStats ();  /* Redraw statwin */
 	    return;
 	}
 	temp = temp->next;
@@ -2801,7 +2705,8 @@
     temp->ship->s_desig[0] = packet->s_desig1;
     temp->ship->s_desig[1] = packet->s_desig2;
     temp->ship->s_bitmap = ntohs(packet->s_bitmap);
-    myship = getship (myship->s_type);
+    me->p_ship = *getship (myship->s_type);
+    myship = &(me->p_ship);
     redrawTstats (); /* Redraw dashboard */
     calibrate_stats (); /* Redefine colored statwin sliders */
     redrawStats ();  /* Redraw statwin */
@@ -2843,75 +2748,222 @@
     new_flags(ntohl(packet->flags), packet->offset);
 }
 
-#ifdef RSA
 void
-handleRSAKey (struct rsa_key_spacket *packet)
+handleRank (struct rank_spacket *packet)
 {
-    struct rsa_key_cpacket response;
-    struct sockaddr_in saddr;
-    int len;
-    unsigned char *data;
-
-#ifdef GATEWAY
-    extern unsigned LONG netaddr;
-    extern int serv_port;
+    int i = packet->rnum;
+    int j = packet->rmax + 1;
 
-#endif
-
-    response.type = CP_RSA_KEY;
-    /* encryptRSAPacket (packet, &response);      old style rsa-client  */
-
-#ifdef GATEWAY
-    /* if we didn't get it from -H, go ahead and query the socket */
-    if (netaddr == 0)
-    {
-        len = sizeof (saddr);
-        if (getpeername (sock, (struct sockaddr *) &saddr, &len) < 0)
-        {
-            perror ("getpeername(sock)");
-#ifdef THREADED
-            terminate2 (RETURNBASE + 1);
-#else
-            terminate (1);
-#endif
-        }
-    }
-    else
+#ifdef CORRUPTED_PACKETS
+    if (i < 0 || j < 0 || i > j)
     {
-        saddr.sin_addr.s_addr = htonl (netaddr);
-        saddr.sin_port = htons (serv_port);
+        LineToConsole ("handleRanks: invalid rnum or rmax\n");
+        return;
     }
-#else
-    /* query the socket to determine the remote host (ATM) */
-    len = sizeof (saddr);
-    if (getpeername (sock, (struct sockaddr *) &saddr, &len) < 0)
-    {
-        perror ("getpeername(sock)");
-#ifdef THREADED
-        terminate2 (RETURNBASE + 1);
-#else
-        terminate (1);
 #endif
+    /* Reallocate rank memory as necessary. */
+    if (j > nranks)
+    {
+        ranks = (struct rank *) realloc(ranks, j * sizeof(struct rank));
+        memset(&ranks[nranks], 0, (j - nranks) * sizeof(struct rank));
     }
-#endif
-
-    /* replace the first few bytes of the message */
-    /* will be the low order bytes of the number */
-    data = packet->data;
-    MCOPY (&saddr.sin_addr.s_addr, data, sizeof (saddr.sin_addr.s_addr));
-    data += sizeof (saddr.sin_addr.s_addr);
-    MCOPY (&saddr.sin_port, data, sizeof (saddr.sin_port));
+    nranks = j;
+    packet->name[15] = 0;
+    packet->cname[7] = 0;
+    ranks[i].name = strdup(packet->name);
+    ranks[i].cname = strdup(packet->cname);
+    ranks[i].hours = (float) (ntohl (packet->hours) / 100.0);
+    ranks[i].ratings = (float) (ntohl (packet->ratings) / 100.0);
+    ranks[i].offense = (float) (ntohl (packet->offense) / 100.0);
+}
 
-    rsa_black_box (response.resp, packet->data, response.public,
-                   response.global);
+static void
+dump_prefix(const char *abbr, const char *name)
+{
+    LineToConsole("%-10s %-30s ", abbr, name);
+}
 
-    sendServerPacket ((struct player_spacket *) &response);
-    /* #ifdef DEBUG */
-    LineToConsole ("RSA verification requested.\n");
-    /* #endif */
+#define dump_stat(STAT) { \
+    LineToConsole(" %8u\n", (unsigned int) ltd.STAT); \
 }
 
+#define dump_max(STAT) { \
+    LineToConsole(" %8u\n", (unsigned int) ltd.STAT); \
+}
+
+void
+handleLtd (struct ltd_spacket *packet)
+{
+    struct ltd_stats ltd;
+	
+    if (packet->version != LTD_VERSION) return;
+
+    ltd.kills.total = ntohl(packet->kt);
+    ltd.kills.max = (double)(ntohl(packet->kmax)) / 100.0;
+    ltd.kills.first = ntohl(packet->k1);
+    ltd.kills.first_potential = ntohl(packet->k1p);
+    ltd.kills.first_converted = ntohl(packet->k1c);
+    ltd.kills.second = ntohl(packet->k2);
+    ltd.kills.second_potential = ntohl(packet->k2p);
+    ltd.kills.second_converted = ntohl(packet->k2c);
+    ltd.kills.phasered = ntohl(packet->kbp);
+    ltd.kills.torped = ntohl(packet->kbt);
+    ltd.kills.plasmaed = ntohl(packet->kbs);
+    ltd.deaths.total = ntohl(packet->dt);
+    ltd.deaths.potential = ntohl(packet->dpc);
+    ltd.deaths.converted = ntohl(packet->dcc);
+    ltd.deaths.dooshed = ntohl(packet->ddc);
+    ltd.deaths.phasered = ntohl(packet->dbp);
+    ltd.deaths.torped = ntohl(packet->dbt);
+    ltd.deaths.plasmaed = ntohl(packet->dbs);
+    ltd.deaths.acc = ntohl(packet->acc);
+    ltd.planets.taken = ntohl(packet->ptt);
+    ltd.planets.destroyed = ntohl(packet->pdt);
+    ltd.bomb.planets = ntohl(packet->bpt);
+    ltd.bomb.planets_8 = ntohl(packet->bp8);
+    ltd.bomb.planets_core = ntohl(packet->bpc);
+    ltd.bomb.armies = ntohl(packet->bat);
+    ltd.bomb.armies_8 = ntohl(packet->ba8);
+    ltd.bomb.armies_core = ntohl(packet->bac);
+    ltd.ogged.armies = ntohl(packet->oat);
+    ltd.ogged.dooshed = ntohl(packet->odc);
+    ltd.ogged.converted = ntohl(packet->occ);
+    ltd.ogged.potential = ntohl(packet->opc);
+    ltd.ogged.bigger_ship = ntohl(packet->ogc);
+    ltd.ogged.same_ship = ntohl(packet->oec);
+    ltd.ogged.smaller_ship = ntohl(packet->olc);
+    ltd.ogged.sb_armies = ntohl(packet->osba);
+    ltd.ogged.friendly = ntohl(packet->ofc);
+    ltd.ogged.friendly_armies = ntohl(packet->ofa);
+    ltd.armies.total = ntohl(packet->at);
+    ltd.armies.attack = ntohl(packet->aa);
+    ltd.armies.reinforce = ntohl(packet->ar);
+    ltd.armies.ferries = ntohl(packet->af);
+    ltd.armies.killed = ntohl(packet->ak);
+    ltd.carries.total = ntohl(packet->ct);
+    ltd.carries.partial = ntohl(packet->cp);
+    ltd.carries.completed = ntohl(packet->cc);
+    ltd.carries.attack = ntohl(packet->ca);
+    ltd.carries.reinforce = ntohl(packet->cr);
+    ltd.carries.ferries = ntohl(packet->cf);
+    ltd.ticks.total = ntohl(packet->tt);
+    ltd.ticks.yellow = ntohl(packet->tyel);
+    ltd.ticks.red = ntohl(packet->tred);
+    ltd.ticks.zone[0] = ntohl(packet->tz0);
+    ltd.ticks.zone[1] = ntohl(packet->tz1);
+    ltd.ticks.zone[2] = ntohl(packet->tz2);
+    ltd.ticks.zone[3] = ntohl(packet->tz3);
+    ltd.ticks.zone[4] = ntohl(packet->tz4);
+    ltd.ticks.zone[5] = ntohl(packet->tz5);
+    ltd.ticks.zone[6] = ntohl(packet->tz6);
+    ltd.ticks.zone[7] = ntohl(packet->tz7);
+    ltd.ticks.potential = ntohl(packet->tpc);
+    ltd.ticks.carrier = ntohl(packet->tcc);
+    ltd.ticks.repair = ntohl(packet->tr);
+    ltd.damage_repaired = ntohl(packet->dr);
+    ltd.weapons.phaser.fired = ntohl(packet->wpf);
+    ltd.weapons.phaser.hit = ntohl(packet->wph);
+    ltd.weapons.phaser.damage.inflicted = ntohl(packet->wpdi);
+    ltd.weapons.phaser.damage.taken = ntohl(packet->wpdt);
+    ltd.weapons.torps.fired = ntohl(packet->wtf);
+    ltd.weapons.torps.hit = ntohl(packet->wth);
+    ltd.weapons.torps.detted = ntohl(packet->wtd);
+    ltd.weapons.torps.selfdetted = ntohl(packet->wts);
+    ltd.weapons.torps.wall = ntohl(packet->wtw);
+    ltd.weapons.torps.damage.inflicted = ntohl(packet->wtdi);
+    ltd.weapons.torps.damage.taken = ntohl(packet->wtdt);
+    ltd.weapons.plasma.fired = ntohl(packet->wsf);
+    ltd.weapons.plasma.hit = ntohl(packet->wsh);
+    ltd.weapons.plasma.phasered = ntohl(packet->wsp);
+    ltd.weapons.plasma.wall = ntohl(packet->wsw);
+    ltd.weapons.plasma.damage.inflicted = ntohl(packet->wsdi);
+    ltd.weapons.plasma.damage.taken = ntohl(packet->wsdt);
+
+#if 0
+    LineToConsole("SP_LTD test output begins\n");
+    dump_prefix("kt", "kills total"); dump_stat(kills.total);
+    dump_prefix("kmax", "kills max"); dump_max(kills.max);
+    dump_prefix("k1", "kills first"); dump_stat(kills.first);
+    dump_prefix("k1p", "kills first potential"); dump_stat(kills.first_potential);
+    dump_prefix("k1c", "kills first converted"); dump_stat(kills.first_converted);
+    dump_prefix("k2", "kills second"); dump_stat(kills.second);
+    dump_prefix("k2p", "kills second potential"); dump_stat(kills.second_potential);
+    dump_prefix("k2c", "kills second converted"); dump_stat(kills.second_converted);
+    dump_prefix("kbp", "kills by phaser"); dump_stat(kills.phasered);
+    dump_prefix("kbt", "kills by torp"); dump_stat(kills.torped);
+    dump_prefix("kbs", "kills by smack"); dump_stat(kills.plasmaed);
+    dump_prefix("dt", "deaths total"); dump_stat(deaths.total);
+    dump_prefix("dpc", "deaths as potential carrier"); dump_stat(deaths.potential);
+    dump_prefix("dcc", "deaths as converted carrier"); dump_stat(deaths.converted);
+    dump_prefix("ddc", "deaths as dooshed carrier"); dump_stat(deaths.dooshed);
+    dump_prefix("dbp", "deaths by phaser"); dump_stat(deaths.phasered);
+    dump_prefix("dbt", "deaths by torp"); dump_stat(deaths.torped);
+    dump_prefix("dbs", "deaths by smack"); dump_stat(deaths.plasmaed);
+    dump_prefix("acc", "actual carriers created"); dump_stat(deaths.acc);
+    dump_prefix("ptt", "planets taken total"); dump_stat(planets.taken);
+    dump_prefix("pdt", "planets destroyed total"); dump_stat(planets.destroyed);
+    dump_prefix("bpt", "bombed planets total"); dump_stat(bomb.planets);
+    dump_prefix("bp8", "bombed planets <=8"); dump_stat(bomb.planets_8);
+    dump_prefix("bpc", "bombed planets core"); dump_stat(bomb.planets_core);
+    dump_prefix("bat", "bombed armies total"); dump_stat(bomb.armies);
+    dump_prefix("ba8", "bombed_armies <= 8"); dump_stat(bomb.armies_8);
+    dump_prefix("bac", "bombed armies core"); dump_stat(bomb.armies_core);
+    dump_prefix("oat", "ogged armies total"); dump_stat(ogged.armies);
+    dump_prefix("odc", "ogged dooshed carrier"); dump_stat(ogged.dooshed);
+    dump_prefix("occ", "ogged converted carrier"); dump_stat(ogged.converted);
+    dump_prefix("opc", "ogged potential carrier"); dump_stat(ogged.potential);
+    dump_prefix("o>c", "ogged bigger carrier"); dump_stat(ogged.bigger_ship);
+    dump_prefix("o=c", "ogged same carrier"); dump_stat(ogged.same_ship);
+    dump_prefix("o<c", "ogger smaller carrier"); dump_stat(ogged.smaller_ship);
+    dump_prefix("osba", "ogged sb armies"); dump_stat(ogged.sb_armies);
+    dump_prefix("ofc", "ogged friendly carrier"); dump_stat(ogged.friendly);
+    dump_prefix("ofa", "ogged friendly armies"); dump_stat(ogged.friendly_armies);
+    dump_prefix("at", "armies carried total"); dump_stat(armies.total);
+    dump_prefix("aa", "armies used to attack"); dump_stat(armies.attack);
+    dump_prefix("ar", "armies used to reinforce"); dump_stat(armies.reinforce);
+    dump_prefix("af", "armies ferried"); dump_stat(armies.ferries);
+    dump_prefix("ak", "armies killed"); dump_stat(armies.killed);
+    dump_prefix("ct", "carries total"); dump_stat(carries.total);
+    dump_prefix("cp", "carries partial"); dump_stat(carries.partial);
+    dump_prefix("cc", "carries completed"); dump_stat(carries.completed);
+    dump_prefix("ca", "carries to attack"); dump_stat(carries.attack);
+    dump_prefix("cr", "carries to reinforce"); dump_stat(carries.reinforce);
+    dump_prefix("cf", "carries to ferry"); dump_stat(carries.ferries);
+    dump_prefix("tt", "ticks total"); dump_stat(ticks.total);
+    dump_prefix("tyel", "ticks in yellow"); dump_stat(ticks.yellow);
+    dump_prefix("tred", "ticks in red"); dump_stat(ticks.red);
+    dump_prefix("tz0", "ticks in zone 0"); dump_stat(ticks.zone[0]);
+    dump_prefix("tz1", "ticks in zone 1"); dump_stat(ticks.zone[1]);
+    dump_prefix("tz2", "ticks in zone 2"); dump_stat(ticks.zone[2]);
+    dump_prefix("tz3", "ticks in zone 3"); dump_stat(ticks.zone[3]);
+    dump_prefix("tz4", "ticks in zone 4"); dump_stat(ticks.zone[4]);
+    dump_prefix("tz5", "ticks in zone 5"); dump_stat(ticks.zone[5]);
+    dump_prefix("tz6", "ticks in zone 6"); dump_stat(ticks.zone[6]);
+    dump_prefix("tz7", "ticks in zone 7"); dump_stat(ticks.zone[7]);
+    dump_prefix("tpc", "ticks as potential carrier"); dump_stat(ticks.potential);
+    dump_prefix("tcc", "ticks as carrier++"); dump_stat(ticks.carrier);
+    dump_prefix("tr", "ticks in repair"); dump_stat(ticks.repair);
+    dump_prefix("dr", "damage repaired"); dump_stat(damage_repaired);
+    dump_prefix("wpf", "weap phaser fired"); dump_stat(weapons.phaser.fired);
+    dump_prefix("wph", "weap phaser hit"); dump_stat(weapons.phaser.hit);
+    dump_prefix("wpdi", "weap phaser damage inflicted"); dump_stat(weapons.phaser.damage.inflicted);
+    dump_prefix("wpdt", "weap phaser damage taken"); dump_stat(weapons.phaser.damage.taken);
+    dump_prefix("wtf", "weap torp fired"); dump_stat(weapons.torps.fired);
+    dump_prefix("wth", "weap torp hit"); dump_stat(weapons.torps.hit);
+    dump_prefix("wtd", "weap torp detted"); dump_stat(weapons.torps.detted);
+    dump_prefix("wts", "weap torp self detted"); dump_stat(weapons.torps.selfdetted);
+    dump_prefix("wtw", "weap torp hit wall"); dump_stat(weapons.torps.wall);
+    dump_prefix("wtdi", "weap torp damage inflicted"); dump_stat(weapons.torps.damage.inflicted);
+    dump_prefix("wtdt", "weap torp damage taken"); dump_stat(weapons.torps.damage.taken);
+    dump_prefix("wsf", "weap smack fired"); dump_stat(weapons.plasma.fired);
+    dump_prefix("wsh", "weap smack hit"); dump_stat(weapons.plasma.hit);
+    dump_prefix("wsp", "weap smack phasered"); dump_stat(weapons.plasma.phasered);
+    dump_prefix("wsw", "weap smack hit wall"); dump_stat(weapons.plasma.wall);
+    dump_prefix("wsdi", "weap smack damage inflicted"); dump_stat(weapons.plasma.damage.inflicted);
+    dump_prefix("wsdt", "weap smack damage taken"); dump_stat(weapons.plasma.damage.taken);
+    LineToConsole("SP_LTD test output ends\n");
 #endif
+}
 
 void
 initialize_players(void)
@@ -2927,6 +2979,7 @@
         players[i].p_no = i;
         players[i].p_ntorp = 0;
         players[i].p_nplasmatorp = 0;
+        players[i].p_stats.st_rank = 0;
         players[i].p_stats2.st_rank = 0;
         players[i].p_stats2.st_royal = 0;
         players[i].p_ndrone = 0;
@@ -3289,22 +3342,23 @@
 
 void handleExtension1 (struct paradiseext1_spacket *packet)
 {
-    switch (packet->subtype) {
-    case SP_PE1_MISSING_BITMAP:
-	{
-	    struct pe1_missing_bitmap_spacket *pkt = (struct pe1_missing_bitmap_spacket *) packet;
-	    newMotdPic(ntohs(pkt->x), ntohs(pkt->y), ntohs(pkt->width), ntohs(pkt->height), 0, ntohs(pkt->page));
-	}
-	break;
-    case SP_PE1_NUM_MISSILES:
-	me->p_totmissiles = ntohs(((struct pe1_num_missiles_spacket *) packet)->num);
-	// printf("updated totmissiles to %d\n",me->p_totmissiles);
-	if (me->p_totmissiles < 0)
-	    me->p_totmissiles = 0;	// SB/WB have -1
-	break;
-    default:
-	printf("unknown paradise extension packet 1 subtype = %d\n",
-	       packet->subtype);
+    switch (packet->subtype)
+    {
+      case SP_PE1_MISSING_BITMAP:
+        {
+        struct pe1_missing_bitmap_spacket *pkt = (struct pe1_missing_bitmap_spacket *) packet;
+        newMotdPic(ntohs(pkt->x), ntohs(pkt->y), ntohs(pkt->width), ntohs(pkt->height), 0, ntohs(pkt->page));
+        }
+        break;
+      case SP_PE1_NUM_MISSILES:
+        me->p_totmissiles = ntohs(((struct pe1_num_missiles_spacket *) packet)->num);
+        // printf("updated totmissiles to %d\n",me->p_totmissiles);
+        if (me->p_totmissiles < 0)
+          me->p_totmissiles = 0;	// SB/WB have -1
+        break;
+      default:
+        LineToConsole ("unknown paradise extension packet 1 subtype = %d\n", packet->subtype);
+        break;
     }
 }
 void handleThingy (struct thingy_spacket *packet)
@@ -3333,9 +3387,6 @@
                       GWIDTH / 2);
     }
 #endif
-
-    if (thetorp->t_shape == SHP_WARP_BEACON)
-	redrawall = 1;		// shoot, route has changed 
 }
 
 void handleThingyInfo (struct thingy_info_spacket *packet)
@@ -3354,9 +3405,6 @@
 
     thetorp->t_owner = ntohs(packet->owner);
 
-    if (thetorp->t_shape == SHP_WARP_BEACON)
-	redrawall = 1;		// redraw the lines, I guess
-
     if (ntohs(packet->shape) == SHP_BOOM && thetorp->t_shape == SHP_BLANK) {
 	// FAT: redundant explosion; don't update p_ntorp
 	// LineToConsole("texplode ignored\n");
@@ -3378,12 +3426,12 @@
 	  if(thetorp->t_shape == SHP_FIGHTER)
 	  {
 	    shape = SHP_FBOOM;
-	    thetorp->t_fuse = MAX(2, BMP_DRONEDET_FRAMES * server_ups / 10);
+	    thetorp->t_fuse = MAX(2, BMP_DRONEDET_FRAMES * server_ups / 5);
 	  }
 	  if(thetorp->t_shape == SHP_MISSILE)
 	  {
 	    shape = SHP_DBOOM;
-	    thetorp->t_fuse = MAX(2, BMP_DRONEDET_FRAMES * server_ups / 10);
+	    thetorp->t_fuse = MAX(2, BMP_DRONEDET_FRAMES * server_ups / 5);
 	  }
 	}
 	thetorp->t_shape = shape;
@@ -3435,7 +3483,63 @@
 void
 initialize_ranks(void)
 {
+    ranks = (struct rank *) malloc(sizeof(*ranks) * nranks);
     ranks2 = (struct rank2 *) malloc(sizeof(*ranks2) * nranks2);
+
+    ranks[0].hours = 0.0;
+    ranks[0].ratings = 0.0;
+    ranks[0].offense = 0.0;
+    ranks[0].name = strdup("Ensign");
+    ranks[0].cname = strdup("Esgn");
+
+    ranks[1].hours = 2.0;
+    ranks[1].ratings = 1.0;
+    ranks[1].offense = 0.0;
+    ranks[1].name = strdup("Lieutenant");
+    ranks[1].cname = strdup("Lt  ");
+
+    ranks[2].hours = 4.0;
+    ranks[2].ratings = 2.0;
+    ranks[2].offense = 0.0;
+    ranks[2].name = strdup("Lt. Cmdr.");
+    ranks[2].cname = strdup("LtCm");
+
+    ranks[3].hours = 8.0;
+    ranks[3].ratings = 3.0;
+    ranks[3].offense = 0.0;
+    ranks[3].name = strdup("Commander");
+    ranks[3].cname = strdup("Cder");
+
+    ranks[4].hours = 15.0;
+    ranks[4].ratings = 4.0;
+    ranks[4].offense = 0.0;
+    ranks[4].name = strdup("Captain");
+    ranks[4].cname = strdup("Capt");
+
+    ranks[5].hours = 20.0;
+    ranks[5].ratings = 5.0;
+    ranks[5].offense = 0.0;
+    ranks[5].name = strdup("Flt. Capt.");
+    ranks[5].cname = strdup("FltC");
+
+    ranks[6].hours = 25.0;
+    ranks[6].ratings = 6.0;
+    ranks[6].offense = 0.0;
+    ranks[6].name = strdup("Commodore");
+    ranks[6].cname = strdup("Cdor");
+
+    ranks[7].hours = 30.0;
+    ranks[7].ratings = 7.0;
+    ranks[7].offense = 0.0;
+    ranks[7].name = strdup("Rear Adm.");
+    ranks[7].cname = strdup("RAdm");
+
+    ranks[8].hours = 40.0;
+    ranks[8].ratings = 8.0;
+    ranks[8].offense = 0.0;
+    ranks[8].name = strdup("Admiral");
+    ranks[8].cname = strdup("Admr");
+    
     ranks2[0].genocides = 0;
     ranks2[0].di = 0;
     ranks2[0].battle = 0.0;
@@ -3578,6 +3682,7 @@
 void
 reinitialize_ranks(void)
 {
+    // Only used by paradise (when receive GPsizes packet)
     int     i;
     ranks2 = (struct rank2 *) malloc(sizeof(*ranks2) * nranks2);
 
@@ -3727,10 +3832,12 @@
 void
 free_ranks(void)
 {
-    int     i;
+    // Only used by paradise (when receive GPsizes packet)
+    int i;
+
     for (i = 0; i < nranks2; i++)
-	if (ranks2[i].name)
-	    free(ranks2[i].name);
+        if (ranks2[i].name)
+            free(ranks2[i].name);
     free(ranks2);
     ranks2 = 0;
 }
@@ -3778,7 +3885,9 @@
     reinitialize_royal();
 
     resize_players();
-    // Reinit playerlist - absolutely necessary or it will break horribly
+    // Resize rank window
+    W_ResizeTextWindow(rankw, 65, nranks2 + 8);
+    // Reinit playerlist - necessary as max number of players (nplayers) may have changed
     InitPlayerList();
     initialize_torps();
     initialize_phasers();
@@ -4046,14 +4155,12 @@
     if (req == COMM_UPDATE)
     {
 
-#ifdef SHORT_PACKETS
         if (recv_short)
         {                       /* not necessary */
             /* Let the client do the work, and not the network :-) */
 
             resetWeaponInfo ();
         }
-#endif
 
         sendServerPacket ((struct player_spacket *) &packet);
         warning ("Sent request for full update");
@@ -4099,12 +4206,10 @@
     }
 #endif
 
-#ifdef UDP_PORTSWAP
     if (portSwap)
         packet.connmode = CONNMODE_PORT;        /* have him send his port */
-#else
-    packet.connmode = CONNMODE_PACKET;  /* we get addr from packet */
-#endif
+    else
+        packet.connmode = CONNMODE_PACKET;  /* we get addr from packet */
 
     sendServerPacket ((struct player_spacket *) &packet);
 
@@ -4120,9 +4225,7 @@
     UDPDIAG (("Sent request for %s mode\n", (req == COMM_TCP) ?
               "TCP" : "UDP"));
 
-#ifdef UDP_PORTSWAP
     if (!portSwap)
-#endif
         if ((req == COMM_UDP) && recvUdpConn () < 0)
         {
             UDPDIAG (("Sending TCP reset message\n"));
@@ -4186,8 +4289,6 @@
             }
             else
             {
-
-#ifdef UDP_PORTSWAP
                 if (portSwap)
                 {
                     udpServerPort = ntohl (packet->port);
@@ -4209,11 +4310,8 @@
                         goto send;
                     }
                 }
-#else
                 /* this came down UDP, so we MUST be connected */
                 /* (do the verify thing anyway just for kicks) */
-#endif
-
                 UDPDIAG (("Connected to server's UDP port\n"));
                 commStatus = STAT_VERIFY_UDP;
                 if (udpWin)
@@ -4355,7 +4453,6 @@
     return (0);
 }
 
-#ifdef UDP_PORTSWAP
 int
 connUdpConn ()
 {
@@ -4378,8 +4475,6 @@
     return (0);
 }
 
-#endif
-
 int
 recvUdpConn (void)
 {
@@ -4688,10 +4783,8 @@
     outpacket_log[tpe]++;
     outdata_this_sec += size;
 
-#ifdef SHORT_PACKETS
     if (tpe == CP_S_MESSAGE)
         cp_msg_size += size;    /* HW */
-#endif
 }
 
 /* print out out the cool information on packet logging */
@@ -4720,7 +4813,6 @@
                     (int) sqrt ((numpl * sout2 - sumout * sumout) /
                     (numpl * (numpl - 1))));
 
-#ifdef SHORT_PACKETS
     /* total_bytes = ALL_BYTES; *//* Hope this works  HW */
     for (i = 0; i <= NUM_PACKETS; i++)
     {                           /* I think it must be <= */
@@ -4730,24 +4822,13 @@
             total_bytes += vari_sizes[i];
     }                           /* The result should be ==
                                  * ALL_BYTES HW */
-#else
-    for (i = 0; i <= NUM_PACKETS; i++)
-    {
-        total_bytes += handlers[i].size * packet_log[i];
-    }
-#endif
 
     for (i = 0; i <= NUM_SIZES; i++)
     {
-
-#ifdef SHORT_PACKETS
         if (handlers[i].size != -1)
             outtotal_bytes += outpacket_log[i] * sizes[i];
         else
             outtotal_bytes += cp_msg_size;      /* HW */
-#else
-        outtotal_bytes += outpacket_log[i] * sizes[i];
-#endif
     }
 
     LineToConsole ("Total bytes received %d, average CPS: %4.1f\n",
@@ -4756,8 +4837,6 @@
     LineToConsole ("Num #Rcvd    Size   TotlBytes   %%Total\n");
     for (i = 0; i <= NUM_PACKETS; i++)
     {
-
-#ifdef SHORT_PACKETS
         if (handlers[i].size != -1)
             calc_temp = handlers[i].size * packet_log[i];
         else
@@ -4766,12 +4845,6 @@
         LineToConsole ("%3d %5d    %4d   %9d   %3.2f\n",
                         i, packet_log[i], handlers[i].size, calc_temp,
                         (float) (calc_temp * 100 / total_bytes));
-#else
-        calc_temp = handlers[i].size * packet_log[i];
-        LineToConsole ("%3d %5d    %4d   %9d   %3.2f\n",
-                        i, packet_log[i], handlers[i].size, calc_temp,
-                        (float) (calc_temp * 100 / total_bytes));
-#endif
     }
     LineToConsole ("Total bytes sent %d, average CPS: %4.1f\n",
                     outtotal_bytes, (float) (outtotal_bytes / (Now - Start_Time)));
@@ -4779,8 +4852,6 @@
     LineToConsole ("Num #Sent    Size   TotlBytes   %%Total\n");
     for (i = 0; i <= NUM_SIZES; i++)
     {
-
-#ifdef SHORT_PACKETS
         if (sizes[i] == -1)
             calc_temp = cp_msg_size;
         else
@@ -4789,13 +4860,6 @@
                         i, outpacket_log[i], sizes[i], calc_temp,
                         (float) (calc_temp * 100 / outtotal_bytes));
     }
-#else
-        calc_temp = sizes[i] * outpacket_log[i];
-        LineToConsole ("%3d %5d    %4d   %9d   %3.2f\n",
-                        i, outpacket_log[i], sizes[i], calc_temp,
-                        (float) (calc_temp * 100 / outtotal_bytes));
-    }
-#endif
 }
 
 void print_packet(char *packet, int size)
@@ -4805,7 +4869,7 @@
    unsigned char *data;
    int kills, pnum, packet_planets;
    struct planet_s_spacket *plpacket;
-   if(log_packets == 0) return;
+   if (log_packets == 0) return;
    switch ( packet[0] )
      {
        case SP_MESSAGE:
@@ -4889,13 +4953,13 @@
 		   ntohl(((struct plasma_spacket *) packet)->y) );
 	 break;
        case SP_WARNING      :                  /* like SP_MESG */
-	 fprintf(stderr,"\nS->C SP_WARNING\t");
+	 LineToConsole("\nS->C SP_WARNING\t");
 	 if (log_packets > 1)
 	   LineToConsole("  mesg=\"%s\",",
 		   ((struct warning_spacket *) packet)->mesg);
 	 break;
        case SP_MOTD         :                  /* line from .motd screen */
-	 fprintf(stderr,"\nS->C SP_MOTD\t");
+	 LineToConsole("\nS->C SP_MOTD\t");
 	 if (log_packets > 1)
 	   LineToConsole("  line=\"%s\",",
 		   ((struct motd_spacket *) packet)->line);
@@ -5072,19 +5136,6 @@
 	   LineToConsole("  sequence=%u,",
 		   ntohs(((struct sc_sequence_spacket *) packet)->sequence) );
 	 break;
-#ifdef RSA
-       case SP_RSA_KEY      :                  /* handles binary * *
-						* verification */
-	 LineToConsole("\nS->C SP_RSA_KEY\t");
-	 if(log_packets > 1)
-	   {
-	     LineToConsole("  data=");
-	     for(i = 0; i < KEY_SIZE; i++)
-	       LineToConsole("0x%0X ",((struct rsa_key_spacket *) packet)->data[i]);
-	     LineToConsole(",");
-	   }
-	 break;
-#endif
        case SP_GENERIC_32   :
        //case SP_MOTD_PIC   :
 	if (paradise)
@@ -5243,12 +5294,11 @@
 		   ((struct ship_cap_spacket *) packet)->s_desig2,
 		   ntohs(((struct ship_cap_spacket *) packet)->s_bitmap) );
 	 break;
-#ifdef SHORT_PACKETS
        case SP_S_REPLY      :                  /* reply to send-short * *
 						* request */
 	 LineToConsole("\nS->C SP_S_REPLY\t");
 	 if (log_packets > 1)
-	   fprintf(stderr,"  repl=%d, windside=%u, gwidth=%ld,",
+	   LineToConsole("  repl=%d, windside=%u, gwidth=%ld,",
 		   ((struct shortreply_spacket *) packet)->repl,
 		   ntohs(((struct shortreply_spacket *) packet)->winside),
 		   ntohl(((struct shortreply_spacket *) packet)->gwidth) );
@@ -5305,8 +5355,6 @@
 		   ntohl(((struct player_s_spacket *) packet)->x),
 		   ntohl(((struct player_s_spacket *) packet)->y) );
 	 break;
-#endif
-#ifdef PING
        case SP_PING         :                  /* ping packet */
 	 LineToConsole("\nS->C SP_PING\t");
 	 if (log_packets > 1)
@@ -5318,8 +5366,6 @@
 		   ((struct ping_spacket *) packet)->iloss_sc,
 		   ((struct ping_spacket *) packet)->iloss_cs );
 	 break;
-#endif
-#ifdef FEATURE_PACKETS
        case SP_FEATURE      :
 	 LineToConsole("\nS->C SP_FEATURE\t");
 	 if (log_packets > 1)
@@ -5330,8 +5376,187 @@
 		   ntohl(((struct feature_cpacket *) packet)->value),
 		   ((struct feature_cpacket *) packet)->name );
 	 break;
-#endif       
-#ifdef SHORT_PACKETS
+       case SP_RANK :
+	 LineToConsole("\nS->C SP_RANK\t");
+	 if (log_packets > 1)
+	   LineToConsole(" rnum=%d, rmax=%d, name=\"%s\", hours=%d, ratings=%d, offense=%d, cname=\"%s\"",
+		   ((struct rank_spacket *) packet)->rnum,
+		   ((struct rank_spacket *) packet)->rmax,
+		   ((struct rank_spacket *) packet)->name,
+		   ntohl(((struct rank_spacket *) packet)->hours),
+		   ntohl(((struct rank_spacket *) packet)->ratings),
+		   ntohl(((struct rank_spacket *) packet)->offense),
+		   ((struct rank_spacket *) packet)->cname );
+	 break;
+       case SP_LTD :
+	 LineToConsole("\nS->C SP_LTD\t");
+	 if (log_packets > 2)
+	 {
+	   struct ltd_spacket *lp = (struct ltd_spacket *) packet;
+	   LineToConsole("version='%c', "
+			"kt=%d, "
+			"kmax=%d/100, "
+			"k1=%d, "
+			"k1p=%d, "
+			"k1c=%d, "
+			"k2=%d, "
+			"k2p=%d, "
+			"k2c=%d, "
+			"kbp=%d, "
+			"kbt=%d, "
+			"kbs=%d, "
+			"dt=%d, "
+			"dpc=%d, "
+			"dcc=%d, "
+			"ddc=%d, "
+			"dbp=%d, "
+			"dbt=%d, "
+			"dbs=%d, "
+			"acc=%d, "
+			"ptt=%d, "
+			"pdt=%d, "
+			"bpt=%d, "
+			"bp8=%d, "
+			"bpc=%d, "
+			"bat=%d, "
+			"ba8=%d, "
+			"bac=%d, "
+			"oat=%d, "
+			"odc=%d, "
+			"occ=%d, "
+			"opc=%d, "
+			"ogc=%d, "
+			"oec=%d, "
+			"olc=%d, "
+			"osba=%d, "
+			"ofc=%d, "
+			"ofa=%d, "
+			"at=%d, "
+			"aa=%d, "
+			"ar=%d, "
+			"af=%d, "
+			"ak=%d, "
+			"ct=%d, "
+			"cp=%d, "
+			"cc=%d, "
+			"ca=%d, "
+			"cr=%d, "
+			"cf=%d, "
+			"tt=%d, "
+			"tyel=%d, "
+			"tred=%d, "
+			"tz0=%d, "
+			"tz1=%d, "
+			"tz2=%d, "
+			"tz3=%d, "
+			"tz4=%d, "
+			"tz5=%d, "
+			"tz6=%d, "
+			"tz7=%d, "
+			"tpc=%d, "
+			"tcc=%d, "
+			"tr=%d, "
+			"dr=%d, "
+			"wpf=%d, "
+			"wph=%d, "
+			"wpdi=%d, "
+			"wpdt=%d, "
+			"wtf=%d, "
+			"wth=%d, "
+			"wtd=%d, "
+			"wts=%d, "
+			"wtw=%d, "
+			"wtdi=%d, "
+			"wtdt=%d, "
+			"wsf=%d, "
+			"wsh=%d, "
+			"wsp=%d, "
+			"wsw=%d, "
+			"wsdi=%d, "
+			"wsdt=%d, \n",
+			lp->version,
+			ntohl(lp->kt),
+			ntohl(lp->kmax),
+			ntohl(lp->k1),
+			ntohl(lp->k1p),
+			ntohl(lp->k1c),
+			ntohl(lp->k2),
+			ntohl(lp->k2p),
+			ntohl(lp->k2c),
+			ntohl(lp->kbp),
+			ntohl(lp->kbt),
+			ntohl(lp->kbs),
+			ntohl(lp->dt),
+			ntohl(lp->dpc),
+			ntohl(lp->dcc),
+			ntohl(lp->ddc),
+			ntohl(lp->dbp),
+			ntohl(lp->dbt),
+			ntohl(lp->dbs),
+			ntohl(lp->acc),
+			ntohl(lp->ptt),
+			ntohl(lp->pdt),
+			ntohl(lp->bpt),
+			ntohl(lp->bp8),
+			ntohl(lp->bpc),
+			ntohl(lp->bat),
+			ntohl(lp->ba8),
+			ntohl(lp->bac),
+			ntohl(lp->oat),
+			ntohl(lp->odc),
+			ntohl(lp->occ),
+			ntohl(lp->opc),
+			ntohl(lp->ogc),
+			ntohl(lp->oec),
+			ntohl(lp->olc),
+			ntohl(lp->osba),
+			ntohl(lp->ofc),
+			ntohl(lp->ofa),
+			ntohl(lp->at),
+			ntohl(lp->aa),
+			ntohl(lp->ar),
+			ntohl(lp->af),
+			ntohl(lp->ak),
+			ntohl(lp->ct),
+			ntohl(lp->cp),
+			ntohl(lp->cc),
+			ntohl(lp->ca),
+			ntohl(lp->cr),
+			ntohl(lp->cf),
+			ntohl(lp->tt),
+			ntohl(lp->tyel),
+			ntohl(lp->tred),
+			ntohl(lp->tz0),
+			ntohl(lp->tz1),
+			ntohl(lp->tz2),
+			ntohl(lp->tz3),
+			ntohl(lp->tz4),
+			ntohl(lp->tz5),
+			ntohl(lp->tz6),
+			ntohl(lp->tz7),
+			ntohl(lp->tpc),
+			ntohl(lp->tcc),
+			ntohl(lp->tr),
+			ntohl(lp->dr),
+			ntohl(lp->wpf),
+			ntohl(lp->wph),
+			ntohl(lp->wpdi),
+			ntohl(lp->wpdt),
+			ntohl(lp->wtf),
+			ntohl(lp->wth),
+			ntohl(lp->wtd),
+			ntohl(lp->wts),
+			ntohl(lp->wtw),
+			ntohl(lp->wtdi),
+			ntohl(lp->wtdt),
+			ntohl(lp->wsf),
+			ntohl(lp->wsh),
+			ntohl(lp->wsp),
+			ntohl(lp->wsw),
+			ntohl(lp->wsdi),
+			ntohl(lp->wsdt) );
+	 }
+	 break;
        case SP_S_TORP       :                  /* variable length torp * *
 						* packet */
 	 LineToConsole("\nS->C SP_S_TORP\t");
@@ -5364,7 +5589,6 @@
 		       plpacket->armies,
 		       ntohs(plpacket->flags) );
 	   }
-	 fprintf(stderr,"\n");
 	 break;
        case SP_GPARAM       :
 	 LineToConsole("\nS->C SP_GPARAM\t");
@@ -5404,7 +5628,6 @@
                  LineToConsole("pnum = %d, kills = %d ",pnum, kills);
 	       }
 	   }
-	 fprintf(stderr,"\n");
 	 break;
        case SP_S_STATS      :                  /* see SP_STATS */
 	 LineToConsole("\nS->C SP_S_STATS\t");
@@ -5425,13 +5648,12 @@
 		   ntohl(((struct stats_spacket *) packet)->maxkills),
 		   ntohl(((struct stats_spacket *) packet)->sbmaxkills) );
 	 break;
-#endif
      default: 
        LineToConsole("\nS->C UNKNOWN\t");
-       if(log_packets > 1)
+       if (log_packets > 1)
 	 LineToConsole("  type=%d,",packet[0]);
      }
-#ifdef nodef /* #ifdef SHORT_PACKETS */
+#ifdef nodef /* Short packet stuff */
    switch( *((char *) packet) )
      {
        /* variable length packets */
@@ -5704,27 +5926,6 @@
 	LineToConsole("  sequence=%u,",
 		ntohs(((struct sequence_cpacket *) packet)->sequence) );
       break;
-#ifdef RSA
-    case CP_RSA_KEY      :                    /* handles binary * *
-					       * verification */
-      LineToConsole("\nC->S CP_RSA_KEY\t");
-      if (log_packets > 1)
-	{
-	LineToConsole("  global=");
-	for(i = 0; i < KEY_SIZE; i++)
-	  LineToConsole("0x%0X ",((struct rsa_key_cpacket *)packet)->global[i]);
-	fprintf(stderr,",");
-	LineToConsole("  public=");
-	for(i = 0; i < KEY_SIZE; i++)
-	  LineToConsole("0x%0X ",((struct rsa_key_cpacket *)packet)->public[i]);
-	fprintf(stderr,",");
-	LineToConsole("  resp=");
-	for(i = 0; i < KEY_SIZE; i++)
-	  LineToConsole("0x%0X ",((struct rsa_key_cpacket *)packet)->resp[i]);
-	fprintf(stderr,",");
-	}
-      break;
-#endif
     case CP_PING_RESPONSE :                   /* client response */
       LineToConsole("\nC->S CP_PING_RESPONSE\t");
       if (log_packets > 1)
@@ -5734,7 +5935,6 @@
 		ntohl(((struct ping_cpacket *) packet)->cp_sent),
 		ntohl(((struct ping_cpacket *) packet)->cp_recv) );
       break;
-#ifdef SHORT_PACKETS
     case CP_S_REQ        :          
       LineToConsole("\nC->S CP_S_REQ\t");
       if (log_packets > 1)
@@ -5767,8 +5967,6 @@
       if (log_packets > 1)
 	LineToConsole("  no struct defined,");
       break;
-#endif
-#ifdef FEATURE_PACKETS
     case CP_FEATURE      :  
       LineToConsole("\nC->S CP_FEATURE\t");
       if (log_packets > 1)
@@ -5779,7 +5977,6 @@
 		ntohl(((struct feature_cpacket *) packet)->value),
 		((struct feature_cpacket *) packet)->name );
       break;
-#endif
     default             :
        LineToConsole("\nC->S UNKNOWN\t");
        if(log_packets > 1)
diff -ru oldver/netrekxp/src/spopt.c newver/netrekxp/src/spopt.c
--- oldver/netrekxp/src/spopt.c	2007-06-14 08:30:20.000000000 -0400
+++ newver/netrekxp/src/spopt.c	2009-06-08 18:47:46.000000000 -0400
@@ -8,9 +8,6 @@
 /******************************************************************************/
 
 #include "config.h"
-
-#ifdef SHORT_PACKETS
-/* */
 #include "copyright.h"
 
 #include <stdio.h>
@@ -199,6 +196,3 @@
     /* Unmap window */
     W_UnmapWindow (spWin);
 }
-
-
-#endif
diff -ru oldver/netrekxp/src/util.c newver/netrekxp/src/util.c
--- oldver/netrekxp/src/util.c	2008-04-13 11:51:30.000000000 -0400
+++ newver/netrekxp/src/util.c	2009-05-23 21:11:08.000000000 -0400
@@ -64,6 +64,8 @@
         g_y = (y - 4) / W_Textheight;
         _targ.o_type = PLAYERTYPE;
         _targ.o_num = GetPlayerFromPlist (g_x, g_y);
+        _targ.o_dist_x = -1;
+        _targ.o_dist_y = -1;
         targ = &_targ;
         return (targ);
     }
@@ -75,6 +77,8 @@
         g_y = (y - 4) / W_Textheight - 2; // Two header lines
         _targ.o_type = PLANETTYPE;
         _targ.o_num = GetPlanetFromPlist (g_x, g_y);
+        _targ.o_dist_x = -1;
+        _targ.o_dist_y = -1;
         targ = &_targ;
         return (targ);
     }
@@ -105,6 +109,7 @@
     register int i;
     register struct player *j;
     register struct planet *k;
+    register struct plasmatorp *pt;
     double dist, closedist;
     int friendly;
 
@@ -118,6 +123,8 @@
             {
                 _target.o_type = PLANETTYPE;
                 _target.o_num = i;
+                _target.o_dist_x = k->pl_x;
+                _target.o_dist_y = k->pl_y;
                 closedist = dist;
             }
 
@@ -145,6 +152,28 @@
             {
                 _target.o_type = PLAYERTYPE;
                 _target.o_num = i;
+                _target.o_dist_x = j->p_x;
+                _target.o_dist_y = j->p_y;
+                closedist = dist;
+            }
+        }
+    }
+    if (targtype & TARG_PLASMA)
+    {
+        for (pt = plasmatorps + (nplasmas * nplayers) - 1; pt >= plasmatorps; --pt)
+        {
+            if (!pt->pt_status)
+                continue;
+            if (pt->pt_status == PTEXPLODE || pt->pt_status == PTFREE)
+                continue;
+
+            dist = hypot ((double) (x - pt->pt_x), (double) (y - pt->pt_y));
+            if (dist < closedist)
+            {
+                _target.o_type = PLASMATYPE;
+                _target.o_num = -1;
+                _target.o_dist_x = pt->pt_x;
+                _target.o_dist_y = pt->pt_y;
                 closedist = dist;
             }
         }
@@ -155,6 +184,8 @@
         _target.o_type = PLAYERTYPE;
         _target.o_num = me->p_no;       /* Return myself.  Oh
                                          * well... */
+        _target.o_dist_x = -1;
+        _target.o_dist_y = -1;
         return (&_target);
     }
     else
diff -ru oldver/netrekxp/src/vccnetrek.rc newver/netrekxp/src/vccnetrek.rc
--- oldver/netrekxp/src/vccnetrek.rc	2008-04-06 19:02:06.000000000 -0400
+++ newver/netrekxp/src/vccnetrek.rc	2009-06-05 23:27:26.000000000 -0400
@@ -9,12 +9,12 @@
 {  BLOCK "040904E4" 
  {
    VALUE "CompanyName", "Netrek\000"
-   VALUE "FileDescription", "Netrek XP 2009 Client\000"
+   VALUE "FileDescription", "Netrek XP 2010 Client\000"
    VALUE "FileVersion", "123456789012345678901234567890\000"
-   VALUE "InternalName", "Netrek XP 2009\000"
+   VALUE "InternalName", "Netrek XP 2010\000"
    VALUE "LegalCopyright", "Copyright © 1986-2009\000"
    VALUE "OriginalFilename", "vccnetrek.rc\000"
-   VALUE "ProductName", "Netrek XP 2009 Client\000"
+   VALUE "ProductName", "Netrek XP 2010 Client\000"
    VALUE "ProductVersion", "123456789012345678901234567890\000" 
  }
  }
diff -ru oldver/netrekxp/src/warning.c newver/netrekxp/src/warning.c
--- oldver/netrekxp/src/warning.c	2008-04-14 21:12:18.000000000 -0400
+++ newver/netrekxp/src/warning.c	2009-03-14 19:52:52.000000000 -0400
@@ -131,7 +131,7 @@
                  tm->tm_min, tm->tm_sec);
         warncount = (warncount > 100) ? 109 : warncount + 9;
 
-        if (logging)
+        if (logging && !log_ignore)
         {
             if (logFile != NULL)
             {
@@ -141,6 +141,7 @@
             else
                 puts (newtext);
         }
+        log_ignore = 0;
 
         if (doPhaser)
             W_MessageAllowedWindows (WAM_PHASER, 0, 0, textColor, newtext, warncount, 0);
diff -ru oldver/netrekxp/tools/CVS/Entries newver/netrekxp/tools/CVS/Entries
--- oldver/netrekxp/tools/CVS/Entries	2008-07-07 21:55:32.000000000 -0400
+++ newver/netrekxp/tools/CVS/Entries	2009-06-15 20:04:58.000000000 -0400
@@ -1,6 +1,5 @@
 /StampVer.exe/1.1.1.1/Tue Jan 21 21:28:51 2003/-kb/
 /VCMake.vbs/1.1.1.1/Tue Jan 21 21:28:51 2003//
-/mkkey.exe/1.2/Sun May  7 16:59:27 2006/-kb/
 /readme.txt/1.1.1.1/Tue Jan 21 21:28:52 2003//
 D/imagemagick////
 /cygwin1.dll/1.4/Wed Mar  5 18:29:07 2008/-kb/
diff -ru oldver/netrekxp/tools/CVS/Entries.Extra newver/netrekxp/tools/CVS/Entries.Extra
--- oldver/netrekxp/tools/CVS/Entries.Extra	2008-07-07 21:55:32.000000000 -0400
+++ newver/netrekxp/tools/CVS/Entries.Extra	2009-06-15 20:04:58.000000000 -0400
@@ -1,6 +1,5 @@
 /StampVer.exe////*///
 /VCMake.vbs////*///
-/mkkey.exe////*///
 /readme.txt////*///
 D/imagemagick///////
 /cygwin1.dll////*///
diff -ru oldver/netrekxp/tools/CVS/Entries.Extra.Old newver/netrekxp/tools/CVS/Entries.Extra.Old
--- oldver/netrekxp/tools/CVS/Entries.Extra.Old	2008-07-07 21:55:32.000000000 -0400
+++ newver/netrekxp/tools/CVS/Entries.Extra.Old	2009-06-15 20:04:58.000000000 -0400
@@ -1,6 +1,5 @@
 /StampVer.exe////*///
 /VCMake.vbs////*///
-/mkkey.exe////*///
 /readme.txt////*///
 D/imagemagick///////
 /cygwin1.dll////*///
diff -ru oldver/netrekxp/tools/CVS/Entries.Old newver/netrekxp/tools/CVS/Entries.Old
--- oldver/netrekxp/tools/CVS/Entries.Old	2008-07-07 21:55:32.000000000 -0400
+++ newver/netrekxp/tools/CVS/Entries.Old	2009-06-15 20:04:58.000000000 -0400
@@ -1,6 +1,5 @@
 /StampVer.exe/1.1.1.1/Tue Jan 21 21:28:51 2003/-kb/
 /VCMake.vbs/1.1.1.1/Tue Jan 21 21:28:51 2003//
-/mkkey.exe/1.2/Sun May  7 16:59:27 2006/-kb/
 /readme.txt/1.1.1.1/Tue Jan 21 21:28:52 2003//
 D/imagemagick////
 /cygwin1.dll/1.4/Wed Mar  5 18:29:07 2008/-kb/
Only in oldver/netrekxp/tools: mkkey.exe
diff -ru oldver/netrekxp/win32/CVS/Entries newver/netrekxp/win32/CVS/Entries
--- oldver/netrekxp/win32/CVS/Entries	2008-04-19 12:23:40.000000000 -0400
+++ newver/netrekxp/win32/CVS/Entries	2009-06-08 22:23:02.000000000 -0400
@@ -2,4 +2,4 @@
 D/h////
 D/lib////
 D/zlib////
-/config.h/1.21/Fri Apr 18 03:41:39 2008//
+/config.h/1.32/Tue Jun  9 02:15:21 2009//
diff -ru oldver/netrekxp/win32/CVS/Entries.Old newver/netrekxp/win32/CVS/Entries.Old
--- oldver/netrekxp/win32/CVS/Entries.Old	2008-04-15 20:08:58.000000000 -0400
+++ newver/netrekxp/win32/CVS/Entries.Old	2009-06-08 22:09:46.000000000 -0400
@@ -2,4 +2,4 @@
 D/h////
 D/lib////
 D/zlib////
-/config.h/1.20/Tue Apr 15 23:37:42 2008//
+/config.h/1.31/Tue Jun  9 01:53:41 2009//
diff -ru oldver/netrekxp/win32/config.h newver/netrekxp/win32/config.h
--- oldver/netrekxp/win32/config.h	2008-04-17 23:41:38.000000000 -0400
+++ newver/netrekxp/win32/config.h	2009-06-08 22:15:20.000000000 -0400
@@ -5,22 +5,13 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-/* 
-################################################################################
-        Type of code (select in configure.in)    
-################################################################################
-*/
-
-#define COW
-#undef SERVER
-
 /*
 ################################################################################
 		Compilation specific defines
 ################################################################################
 */
 
-#define CBUGS "Send bugs/suggestions to: billbalcerski@hotmail.com"
+#define CBUGS "Send bugs/suggestions to: billbalcerski@gmail.com"
 
 /* 
 ################################################################################
@@ -36,42 +27,16 @@
 
 /* 
    ------------------------------------------------------------
-                Common defines
-   ------------------------------------------------------------
-*/
-
-/*      RCD             - Support Reciever variable distresses */
-#define RCD                     
-                                                     
-/*      PING            - Ping statistics */
-#define PING
-
-/*      SHORT_PACKETS   - Reduce Network load */
-#define SHORT_PACKETS
-
-
-/*      FEATURE_PACKETS - feature packets */
-#define FEATURE_PACKETS
-
-/* 
-   ------------------------------------------------------------
-                COW only defines
+                Client defines
    ------------------------------------------------------------
 */
-#ifdef COW
 
 /*      THREADED                - Multi-threaded input handling                 */
 #define THREADED
 
-/*      NBT                     - Nick trown's macro code                       */
-#define NBT
-
 /*      CORRUPTED_PACKETS       - prevents some seg faults but verbose output   */
 #define CORRUPTED_PACKETS
 
-/*      ARMY_SLIDER             - some sort of funky status window thing        */
-#define ARMY_SLIDER
-
 /*      META                    - show active servers via metaserver - NBT      */
 #define META
 
@@ -81,12 +46,6 @@
 /*      PACKET_LOG              - log packets to stdout (for bandwith measurement) */
 #define PACKET_LOG
 
-/*      NEWMACRO                - newmacro language                             */
-#define NEWMACRO 
-
-/*      SMARTMACRO              - macro extension (needs NEWMACRO)              */
-#define SMARTMACRO
-
 /*      MULTILINE_MACROS        - enables multiline macros                      */
 #define MULTILINE_MACROS
 
@@ -105,12 +64,6 @@
 /*      BEEPLITE                - player and planets highlighting		*/
 #define BEEPLITE
 
-/*      VSHIELD_BITMAPS         - damage dependent shields (hull)               */
-#define VSHIELD_BITMAPS
-
-/*      JUBILEE_PHASERS         - Cycle phaser color when it's a hit            */
-#define JUBILEE_PHASERS
-
 /*      WARP_DEAD               - Use death detection                           */
 #undef  WARP_DEAD
 
@@ -122,192 +75,22 @@
 
 #define PLIST1 
 #define PLIST 
-#define CONTROL_KEY
-#define BRMH 
 #define DOC_WIN
-#define RABBIT_EARS 
 #define ROTATERACE
 
 /* client options */
-#define NEW_DASHBOARD_2
 #define MOUSE_AS_SHIFT
 #define SHIFTED_MOUSE
 #define MOTION_MOUSE
-#define DIST_KEY_NAME
 #define XTRA_MESSAGE_UI
 #define PHASER_STATS
 
-
-/* Swap ports around to try to go through firewalls */
-#define UDP_PORTSWAP
-#define USE_PORTSWAP
-
 /* Enabled playback of recorded games */
 #define RECORDGAME
 
 /* We want reverse-playback!!! */
 #define REVERSE_PLAYBACK
 
-#endif          /* COW */
-
-
-/* 
-   ------------------------------------------------------------
-                SERVER only defines
-   ------------------------------------------------------------
-*/
-#ifdef SERVER
-
-/*     AUTOMOTD                 - Updates your MOTD every 12 hours */
-#undef AUTOMOTD
-
-/*      CHAIN_REACTION          - Don't give credit for chain reactions */
-#define CHAIN_REACTION
-
-/*      CHECKMESG               - Check for god messages and/or log all messages */
-#define CHECKMESG
-
-/*      ERIKPLAGUE              - Define for Erik's Plagueing */
-#define ERIKPLAGUE
-
-/*      FEATURES                - Server/client communication */
-#define FEATURES
-
-/*      FULL_HOSTNAMES          - Show entire player location (domain) */
-#define FULL_HOSTNAMES
-
-/*      INL_RESOURCES           - Use INL resources */
-#define INL_RESOURCES
-
-/*      INL_POP                 - Use INL style planet popping scheme */
-#define INL_POP
-
-/*      NO_PLANET_PLAGUE        - Define for plagueing (Don't use with ERIKPLAGUE) */
-#undef  NO_PLANET_PLAGUE
-
-/*      NO_UNWARRING_BOMBING    - No 3rd space bombing */
-#define NO_UNWARRING_BOMBING
-
-/*      SHOW_RSA                - Display the client type at login */
-#define SHOW_RSA
-
-/*      RESETGALAXY             - Reset the galaxy after each conquer */
-#define RESETGALAXY
-
-/*      RESTRICT_BOMB           - No bombing out of t-mode */
-#define RESTRICT_BOMB
-
-/*      SELF_RESET              - Galaxy will reset if the daemon dies */
-#define SELF_RESET
-
-/*      SHORT_THRESHOLD         - For Short Packets */
-#define SHORT_THRESHOLD
-
-/*      SURRENDER_SHORT         - Cut surrender time in half */
-#undef  SURRENDER_SHORT
-
-/*      TWO_RACE                - Conquer only a 1/4 of the galaxy for reset */
-#define TWO_RACE
-
-/*      SENDFLAGS               - Print flags set in MOTD */
-#undef  SENDFLAGS
-
-/*      CHECK_ENV               - Check environment variable NTSERV_PATH for location of system files */
-#undef  CHECK_ENV
-
-/*      GPPRINT                 - Print which path is being used to find the system files */
-#undef  GPPRINT
-
-/*       ONCHECK                - support for trekon player check */
-#define  ONCHECK
-
-/*      NBR                     - Leave in for server. It tells programs like xsg that it is this code. */
-#define NBR
-
-/*      DS                      - Daemon Sychronization - Tedd Hadley */
-#define DS
-
-
-/*      NEED_EXIT               - For systems that need exit defined */
-#define NEED_EXIT
-
-/*      NEWMASK                 - New tournament selection code. Less rigid than older code. */
-#define NEWMASK
-
-/*      SB_TRANSWARP            - starbase transwarp */
-#define SB_TRANSWARP
-
-/*     FLAT_BONUS               - 3x bonus for killing last army on a planet */
-#undef FLAT_BONUS
-
-/*      BASEPRACTICE            - trainingserver support */
-#define BASEPRACTICE
-
-/*     NEW_CREDIT               - give 1 planet for destroying, two planets for taking */
-#undef NEW_CREDIT
-
-/*      FASTER_SB_MAXUPDATES    - allow 10 ups/sec for SB's */
-#define FASTER_SB_MAXUPDATES
-
-/*      SBFUEL_FIX              - fix starbase re-fueling */
-#define SBFUEL_FIX
-
-/*     NEW_ETEMP                - Wreck's etemp fix */
-#undef NEW_ETEMP
-
-/*      DOGFIGHT                - .sysdef interface for dogfight robot */
-#define DOGFIGHT
-
-/*      OBSERVERS               - allow players to watch */
-#define OBSERVERS
-
-/*      VOTING                  - allow voting mode */
-#define VOTING
-
-/*     ALLOW_EJECT              - define to allow players to eject others */
-#ifdef VOTING
-#undef ALLOW_EJECT
-#endif
-
-/*      NO_BRUTALITY            - disallow fighting between waiting players in the dogfighting mode */
-#ifdef DOGFIGHT
-#define NO_BRUTALITY
-#endif
-
-/*     AS_CLOAK                 - gives cloaked AS's more randomness in their apparent positions */
-#undef AS_CLOAK
-
-/*     GENO_COUNT               - keep track of a player's winning genocides */
-#undef GENO_COUNT
-
-#ifdef VOTING
-/*      AUTO_INL                - starts up INL robot by majority vote   */
-#define AUTO_INL
-
-/*      AUTO_PRACTICE           - starts up PRACTICE robot by majority vote   */
-#ifdef BASEPRACTICE
-#define AUTO_PRACTICE
-#endif
-
-/*      AUTO_HOCKEY             - starts up HOCKEY robot by majority vote   */
-#define AUTO_HOCKEY
-
-/*      AUTO_DOGFIGHT           - starts up DOGFIGHT robot by majority vote   */
-#ifdef DOGFIGHT
-#define AUTO_DOGFIGHT
-#endif
-
-/*      TRIPLE_PLANET_MAYHEM    - enable voting for the three planet cool server idea by felix@coop.com */
-#define TRIPLE_PLANET_MAYHEM
-#endif
-                                
-/*     MESSAGES_ALL_TIME        - allow messaging during freezes like twarp, refit, and war decl.  */
-#undef MESSAGES_ALL_TIME
-
-
-#endif          /* SERVER */
-
-
 /*
 ##############################################################################
        All system dependencies should be defined here 
@@ -373,18 +156,6 @@
 /*  System dependend Include files */
 
 
-/* Some GMP/RSA based stuff SRS 2/9/98 */
-#ifdef RSA
-
-#define MPTYPEDEF typedef MINT *MPTYPE;
-#define assignItom(x,i) x= itom(i)
-/* I had to rename pow in the gmp libraries to mpow */
-#define mp_pow(x, y, z, a) mpow(x, y, z, a)
-#define INC_MP <mp.h>
-
-#endif
-/* End of GMP/RSA based stuff SRS 2/9/98 */
-
 /* Unchecked machine dependencies */
 
 #ifdef WIN32

