
===============================================================================
====                         XPilot Change Log                             ====
===============================================================================

This is a summary of changes of release 3.2.3 compared to release 3.2.2:

Pete Ford contributed a patch to fix the problem when a ship equipped
with several missile racks will kill itself when firing a set of mini missiles.

The Makefile flag LINUX is changed to LINUX0 as recent 1.1*
versions of Linux seem to have resolved most of the incompatibilities.
Patch by Evmorfopoulos Dimitris.

Fixed a bug which caused clients to quit when a ship shape was used which
was defined by exactly 255 characters.

Harvey Thompson contributed several patches.  They add a few bugfixes
for the recent emergency shield and makes missile rack launches as
sensible as possible while keeping the mini spread ideas he introduced:
    - Fixed bug where shots and missiles fired from certain ship shapes
      caused instant death, depending on turning and thrust and fire points.
      Shots now have a very short owner immunity fuse.
    - With emergency shields engaged, lasers have no effects (such as stun,
      blindness or damage).
    - Bouncing into a wall doesn't cause any owned items to be lost.
    - Emergency shields/thrust not lost if not currently in use and you hit
      a player or wall.
    - Missile rack lauch code radically rewritten.  Missiles launch angle is
      calculated based on 66% of the offset from ship center, and 33% of the
      number of missiles lauched from that rack.
    - Each missile rack is now used in turn, not randomly chosen.

Harvey also added a huge comment explaining the history of aerial combat and
how missiles evolved.  Contrary to most code comments this one is pleasant
reading and likely to show up in more easily accessible places in the future.
I wish more people added comments like this instead of adding new options :-)

Patch from Nicholas Vargish that adds two options concerning the 
probability that a missile or mine will go rogue. The options are:
rogueHeatProb and rogueMineProb.

Harvey Thompson added these features:
    - New configuration variable; minVisibilityDistance.  This defines the
      minimum distance, in blocks, that you can see on the radar and compass.
      This is most useful in limitedVisibility mode.  It is equivalent to
      having the initial fuel/sensor configuration of a new player.
      The default value is zero, a sensible default is used (about 28.5).
    - New configuration variable; maxVisibilityDistance.  This specifies the
      maximum number of blocks you can ever see on the radar or with the
      compass, most useful in limitedVisibility mode.
      The default value is zero, which implies no limit.
    - Each sensor pack you own increases your sensor range by 25% (upto the
      maximum of course).

Harvey Thompson added still more changes:
    - After completing a talk message, the mouse pointer is now warped
      back to where it was originally.  Also had to fix a talk key repeat
      bug for this to work.
    - Show player being viewed on radar during a game wait/pause where
      you can watch other players.
    - Show invisible team members on radar even if they are not immune.
    - Show team members on radar even if playersOnRadar is false
      (constrained by visibility rules).
    - If somebody kills a team member they now get negative points
      instead of positive.  The killed team member still gets negative
      points (for getting in the way).  Bug reported by Mark Boyns.

Russ Glaeser (rglaeser@golden.cecer.army.mil) provided a patch to
correct the scoring for treasures:
    Sorry about changing my mind so soon, but this came to me in a flash
    this morning.  Really, the number of members on your team and the
    opposite team should also factor into how many points you get.
    Here's what I did:

    I figured out the total number of points the other team lost based on
    points-for-destroying-their-target*3, then I divided those points
    among the winning team as such

      let WTM = number of members on the winning team
	  LTM = number of members on the losing team
	  SCO = points you would have gotten for destroying their target
	  TSC = 3*SCO*LTM (total number of points the other team lost)
	  PORTION = TSC/(2*WTM+1)  **see note below**

    I divided TSC amongst the winning team like so:
      *) destroyer gets 3*PORTION and his/her other teammates get 2*PORTION.
      *) losing team members each lose 3*SCO

    All this sounds complicated, but it's not really.  It all means essentially
    that treasures are a zero-sum gain.  the same number of points are given
    the winning team as are subtracted from the losing team.  If you have lots
    of teammates you don't get as many points for destroying treasures, however
    if you don't have many teammates and destroy a treasure from a team with
    lots of people and points you could get upwards of 100 points for it.
    I think this is more fair than my other scheme and MUCH more fair than the
    current scheme.

    ** note
       This just divides the total score into pieces which I can give the
    winners.  It's rounded to the nearest whole number.  If you have 3
    teammates then there will be 7 pieces.  The destroyer will get 3 and
    his/her teammates will each get 2.  This gives a little 'bonus' for
    being the one to destroy the treasure, but still keeps treasures
    zero-sum.

    I hope all this makes sense.  I tested it pretty thouroughly, so I'm
    confident it's correct(knock on wood).

Steven Singer added mouse control:
    I've had to create a new packet type PKT_POINTER_MOVE, which is sent from
    the client to the server. It contains a signed integer which is the number
    of pixels the pointer moved horizontally.

    The server scales the pointer movement by pl->turnspeed /
    MAX_PLAYER_TURNSPEED, and adds it onto pl->turn_vel (actually subtracts it
    to get the sense correct).

    The top window has been made sensitive to MotionNotify, ButtonPress and
    ButtonRelease events.

    On receiving a MotionNotify event (and if pointer control is enabled), the
    client notes how far the pointer moved, and if non-zero it send a packet
    to the server, and warps the pointer back to the centre of the screen.

    ButtonPress and ButtonRelease events are mapped to keystrokes.

    Pointer control can be toggled via the key keyPointerControl with the
    default value KP_Enter (we're running out of keys).

    The button effects can be altered via pointerButton[1-5] each of which
    take a single argument which is the xpilot key name (like keyFireShot, the
    comparison is case insensitive and the initial `key' can be left out).
    The defaults are button1 - FireShot, button2 - Thrust, button3 - Shield.

    If the talk window is popped up, the pointer control is disabled. When the
    window is closed pointer control returns to whatever state it was in.

    During initialisation a blank cursor is created, and if pointer control
    is enabled this cursor is used in the top window. When pointer control is
    disabled or the talk window is up the default cursor is restored.

    To summarise the server/client changes :

	    I've created 1 new packet type (PKT_POINTER_MOVE = 73).

	    I've used 1 more key (keyPointerControl = KP_Enter).

	    I've created 6 more command line arguments/resources
	    (-keyPointerControl, -pointerButton1 .. -pointerButton5).

	    The new server can accept connections from old clients.

	    The new client can connect to the old server, but will generate
	    errors if pointer control is switched on.

    The important question is what does it play like, well, I've tried it at
    18 fps on a good NCD colour display, and it's not bad. The nice feature is
    the way you can turn slowly whilst tracking someone, but you can still
    turn quickly in a hurry without having to play with your turnspeed.

    On a jerky display it's not as good.

Fixed a bug which could cause a server crash when a rogue missile was fired.

Russ Glaeser contributed a patch to not let autopiloting ships change
direction if the ship has no velocity and there is no gravity.

Russ Glaeser contributed a patch which applied his treasure points scheme
also to targets.  Now the number of players on your team is taken into
account when you are given points for destroying another team's target.
He also fixed the messages, which were just a bit messed up (as he says).

Added a new option -targetRadarColor to the client.  By default it is set
to 4 which for color screens is defined to be green (same as hudColor).
This will draw all targets on the radar in green.
You can change this in two ways:
  1) give the -color4 option a different color value.
  2) give the -hudColor a different value like 2 which is the current blue.
Of course color 4 is only used if maxColors is 8 or 16.

Fixed a bug which caused own targets to be drawn in red instead of blue
if team wasn't explicitly set.

Harvey Thompson pointed out a few problems with the new mouse control stuff
for some of which he provided a patch:
    - Mousecontrol is not very smooth yet.
      Removed a factor 2 somewhere.
    - Added an option "pointerControl" to the cliebt to set the initial
      control.  This is only enabled when the mouse first moves into the
      xpilot game window, the mouse pointer will then disappear until the
      Key pad enter key is pressed.
    - During mouse pointer control, the mouse pointer is grabbed such that
      you can't go out of the drawing window.  This makes large mouse
      movements still work fairly well.
    - With mouse control, if you hit "talk" and then move the mouse,
      you couldn't know where the mouse is, and things went horribly
      odd (could't talk).  Fixed now.

===============================================================================

This is a summary of changes of release 3.2.2 compared to release 3.2.1:

The maximum allowed (sub-)packet size limitation was removed.

Hendrik Harrison pointed out that some code handling shots and teamshots
wasn't used anymore, so we thankfully removed it.

Added a new option -hudColor to the client.  By default it is set to 4
and for color screens the color4 is now defined to be green.  This
will draw your HUD in green.  You can change this in two ways:
  1) give the -color4 option a different color value.
  2) give the -hudColor a different value like 2 which is the current blue.
Of course color 4 is only used if maxColors is set 8 or 16.
Score objects are now drawn in the hudColor color.

The right marking light is now drawn in green, if available.

Made an extension to the way the ship shape definition is transported
between client and server to allow for very large ship shape definitions.
The maximum allowed length of a ship shape definition is now 510 characters.

Harvey Thompson provided a patch to fix a bug with emergency thrust/shield.
When colliding with players or walls a currently used emergency
thrust/shield was finished immediately, which shouldn't be.

Relaxed the entering of players in a team game with limited lives mode.
Previously if any other player had already lost a life then this would put
a new player in waiting mode.  Now players are not put in waiting mode
if it is only a team member who has lost a life.

Fixed bug in fetching X resources which also limited ship shapes to 256 bytes.

===============================================================================

This is a summary of changes of release 3.2.1 compared to release 3.2.0:

Mike Morrison provided two bugfixes for the new ship shape stuff.
One bug caused core dumps on AIX machines.  The other one prevented
use of the Right Light feature.

Pete Ford supplied a patch to fix the bug that caused lasers to fire
always from the right side of the ship.

Pete Ford supplied a patch to fix the bug that caused the server to
crash on some systems if a random heat seaker was fired.

The missile racks are now actually being used when firing missiles.
Note that this may cause you to shoot yourself if you have placed
your missile racks too close to the centre of the ship.

The maximum allowed packet size was set too small.  This caused
all kinds of problems when a ship shape definition was very large.

===============================================================================

This is a summary of changes of release 3.2.0 compared to release 3.1.3:

Added a shipshape patch for robots.  Now all robots have their own `personal'
ship shape.  Patch provided by John E. Norlin <norlije@cujo.tc.cat.com>
A workaround has been added for a bug in HP's ANSI C compiler.

Added a new server option called maxMissilesPerPack which determines the
number of missiles given by picking up one missile item.
This was needed for no-shield maps were missiles are very strong weapons.

Made the "teamAssign" option default to true.  This helps users in
joining a team mode game.

Servers can now be shutdown from a crontab entry by a command line like:
xpilot -display NO_X -shutdown Shutting_down_message server

When getting the name of the computer now there is searched for a
xpilot host alias.  Patch provided by Jyke Jokinen.

Fixed drawing cloaked ships in ERASE mode.  Bug reported by Zack Evans
and fix pointed out by by Christian Brunschen.

Bugfix for teammode maps with only one team were that team would
remain dead forever until another team would enter the game.

Fix from Patrick Kenny for games teammode games with limited lives.
Players who just entered and are still waiting do not get points
subtracted or added when a target is destroyed.  This was extended
to include treasures too.

Players can now send a talk message to GOD which will be printed to the
LOGFILE.  Thanks to a patch from Patrick Kenny.

Fix for GetLocalHostName which was broken by a previous fix.

Pete Ford has come up with a new, more rational, ship-shape format.
It features:

    1. Keyword oriented system, to allow for more flexibility and future 
       extension.

    2. Additional gun sites allowed on ships; main gun is relocatable and up 
       to three extra gun sites are allowed on each side of the ship for wide 
       angle guns.

    3. Additional marking light positions allowed - up to three for each 
       color (red = left, blue = right as before).

    4. Alternative missile racks - positions where missiles launch from. Up 
       to four racks can be given, and mini missiles will launch from separate
       racks if available.

    5. Engine is relocatable, although it still fires along the x-axis of the 
       ship as defined.

    6. Compatibility with the 3.1 ship-shape format for exisiting 3.1 clients 
       joining '3.2' servers and 3.2 clients joining 3.1 servers.

    The new ship shape format is:

    xpilot*shipShape: (keyword: x1,y1 ...) (keyword: x1, y1) etc.

    Keywords can appear any number of times in the shape string; the 
    behaviour is dependent on the keyword.
    If a keyword is not given then a default will be applied: if the shape is 
    not defined then the default shape is used.
    Allowed keywords are:

    shape:  defines points for ship shape. Up to 16 points will be stored, 
            any more than 16 are ignored. Points should appear as x,y pairs, 
            each pair separated with at least one space character. 
            Multiple 'shape:' keywords have a cumulative effect; adding extra 
            points to the list, up to the limit of 16. There is no requirement
            to give the number of points to expect - this is worked out after
            the whole string is parsed.
            The existing restrictions on separation of points apply.
            If no 'shape:' keyword present then the contents of the string 
            will be ignored and the default ship used.

    mainGun: defines the firing position for the main gun. Only one x,y pair 
             is read; further 'mainGun:' keywords will be ignored.
             Default is the foremost point in the 'shape:' list.

    leftGun: defines a firing position for an additional left-side gun. Up to 
             three of these can be specified, any more will be ignored.
             The left-hand part of any wide-angle shots will be fired from
             these points if they exist.
             Default is to have no left guns: only a main gun.

    rightGun: defines a firing position for an additional left-side gun. Up to
              three of these can be specified, any more will be ignored.
              The left-hand part of any wide-angle shots will be fired from
              these points if they exist. There is no need for left and right
              guns to balance (or even be on the correct side of the ship!)
              Default is to have no right guns: only a main gun.

    leftLight: defines a position for the left (red) marking light. Up to 
               three of these can be given.
               Default is one light on the left-most point on the ship.

    rightLight: defines a position for the right (blue) marking light. Up to 
                three of these can be given.
                Default is one light on the right-most point on the ship.

    engine: defines the point from which the engine thrust originates. Only 
            one of these points will be defined; multiple 'engine:' keywords 
            will override previous positions.
            Default is on the ship x-axis at the rear-most x-value defined.

    missileRack: defines a missile launch point. More than one of these will
                 mean that missiles are launched from each rack in turn. This 
                 works best with mini missiles (especially torpedos).
                 Default is one rack at the main gun position.

    Because the ship shape string would become extremely long in the new
    format short aliases for the keywords in the shipshape string are
    provided.  The list of keywords together with their aliases is:

        Full version   Short Version   Meaning
        ------------   -------------   -------
        shape:         SH:             ship shape points
        mainGun:       MG:             Main gun position
        leftGun:       LG:             Left wide gun position(s)
        rightGun:      RG:             Right wide gun position(s)
        leftLight:     LL:             Left (red) light position(s)
        rightLight:    RL:             Right (blue) light positions(s)
        engine:        EN:             Engine thrust point
        missileRack:   MR:             Missile launch point(s)

    The points given for weapons, lights etc. need not be points defined in 
    the ship shape definition.

    Example:
    This is my latest version of my own ship-shape (called Enigma); note that 
    it should be read as one continuous string without line breaks.

    xpilot*shipShape: (shape: 15,0 -2,4 -8,13 0,13 0,14 -15,14 -12,3 -15,3 
    -15,-3 -12,-3 -15,-14 0,-14 0,-13 -8,-13 -2,-4) (missileRack: 0,14 0,-14) 
    (leftGun: 0,14 -5,14) (rightGun: 0,-14 -5,-14) (leftLight: -15,14 0,0) 
    (rightLight: -15,-14 0,0) (engine: -15,0)

    I've tried to make the format easy to extend; extensions can be added in 
    the parsing routines in math.c quite easily. Of course, the playing code 
    will have to be changed to accommodate any extension.
    My own ideas for improvement are to include a 'name:' string for the name 
    of the ship (possibly to allow selection from a set of shapes while 
    playing...) and positions for rear guns.

    Known Problems:

    1. At the moment, mini smart and heat missiles still spread from the
       missile racks, so the effect is lost a little. It is probably possible
       to determine whether spread is required, but I haven't done that yet.

    2. Wide angle guns all fire from additional gun positions if possible; 
       they probably should use the main gun more. Also they spread in the 
       same way as the existing program - of course setting Z3 on the weapons 
       mods will fire in parallel lines of shots; Z3 was could almost have 
       been designed for this patch!

    Thanks to those people who've made suggestions already (Bjoern & Bert).
    Any comments/suggestions/bugs/bug-fixes should be sent to me:

    p.s.ford@durham.ac.uk

    The latest improvements are:

    1. Code to restrict lights,guns etc. to within the ship-shape design.
       It's not perfect, but it tends to allow invalid positions rather than
       disallow valid ones. Thanks to Bert for a very nice diagram of the
       problem!

    Pete Ford (Enigma)

New ship shapes should obey a new size restriction.  This is because some
ship-shape-artists made ships very small to have a slight advantage in
manouvring in tight places.  Also, those small ships are a little less
easy to spot.  Therefore the following size restriction is now enforced:
the width and height of the ship added together should be at least 38.
To give everybody some time to convert their ships to the new format
and to adapt it to meet this restriction it is not enforced right away, but
rather a warning is printed that it will be enforced in a future version.

Harvey Thompson provided the following changes:

    - Fix a small bug in maptoppm, and also make walls blue and bases
      grey to appear more like the map does in real life.

    - Fix some install bugs in Imakefile.

    - The players radar will show up the current state of any targets.
      The target block will be cleared when it is destroyed and drawn
      in when created.  This is very useful on maps (such as ninebases.map)
      which use lots of passable targets as team shields for bases.

    - When you die, there is a chance that any remaining missiles and
      mines which are not thrown will detonate in close proximity to
      your dying ship.  The detonateItemOnKillProb (default 0.5) controls
      this chance.  This means that killing a well tooled player may
      be dangerous if you are too close.

    - Mine and missile pack objects are correctly acccounted.  That is
      when a player dies and throws one, and they only had say three
      missiles, the thrown pack contains only three missiles.

    - Player crashing into target causes damage depending on speed
      of impact (limited to quart damage).

    - New reprogram key (keyReprogram, defaults to leftquote ` key).
      This allows modifier banks to be reprogrammed with current settings.
      Simply hold the reprogram key with the desired modified bank key
      and your current settings are stored in that bank for later
      retrieval.

    - New compass lock bank keys (keyLoadLock1..4, defaults to 5..8 keys).
      These allow you to store the current compass lock into that key,
      simply hold down the reprogram key and the lock bank key.  The
      current compass lock is then stored and can be retreived at a later
      time (so long as that player does not quit).  Useful for keeping
      tabs on a team of players.

    - New KEYBOARD environment (or keyboard resource/option).  If
      set this defines another X11 display from which keyboard events
      are taken.  A blank window is drawn on that display.  This can
      be used to allow two players to fly one ship, a weapons man and
      a flyer.  I've tried this and its fairly interesting and hard.

      This change was actually done for some people who had a strange
      X terminal which generates key release events right after a key
      press event; making xpilot unplayable.  These people however had
      access to simple PC's (not good enough to play X pilot on) which
      could run X, the key events where then read from the PCs.

    - Corrections to team win condition.  Pplayers leaving can cause
      a game win, and indeed leave one team in game (who should win).

Fixed a bug which caused a player sometimes to be launched when
connecting to a moving ball.  The bug was that the ball's length
variable wasn't initialised upon connection.

Scott W. Adkins <sadkins@bigbird.cs.ohiou.edu> contributed
an emergency shield item patch:
    The following is the patch that implements the Emergency Shield item.
    Included are the modifications made to 25 source files (*.c, *.h), a 
    new bitmap, and also modifications to the xpilot manual page to reflect
    the new item and the usage key.
    Here is a quick description of it (which is taken from the man page):

      Gives you a limited amount of extra shield power, which prevents any
      fuel loss from shots, debris, player and wall collisions, missiles, 
      mines, etc.  While in use, the ship can smash into walls at any speed
      and angle without fear of being killed.  The extra shield capability
      is toggled on and off by a separate key and can thus be saved, with
      the remaining amount of extra shield power being saved for later use.
      Once toggled on, the extra shield power will take effect and be used
      only while the normal shields are up.  Best used when confronted with
      cluster mines and missles or deadly cannons.

   The default key to turn the emergency shield on or off is `g'.
   The server has the following new options:
       -initialEmergencyShields
       -itemEmergencyShieldProb
   The client has the following new option:
       -keyEmergencyShield

The maximum number of ship shape points has been increased from 16 to 24.

Updated the README.MAPS and README.MAPS2 files to reflect all of the
map and option changes of the past several versions.  These files
are now up to date!

Added a new README.SHIPS file which explains all of the current features
of the ship shapes and how to define them and what restrictions they
must meet.

Added a patch from Scott Stevens for ship and name drawing:
    1) increase the width returned by FIND_NAME_WIDTH to ensure the correct
    rectangle is erased (stopping the lines being drawn all over the place if
    someone's name ends in "f")
    2) if erase is set locked players are outlined in blue instead of being
    filled.
    3) if ship naming is off the so is base naming (not sure about this one,
    but I thought it was odd the original way).

Fixed bug for servermotd which caused coredumps on some systems.
Reported by Ben Jackson.

===============================================================================

This is a summary of changes of release 3.1.3 compared to release 3.1.2:
Changes for Suns in socklib.c to solve unresolved references to
strerror and _res.

Fix for client crashes if:
 * initialEmergencyThrusts is non-zero
 * You have emergency thrust on
 * and you fly into a wall
The client ended up doing a divide by zero in the Paint_meter() function.
Patch provided by hakehoe@icaen.uiowa.edu (Heath A. Kehoe).

Cleaned up Handle_signal().  Notification by Harvey Thompson.

Removed Autopilot reset from Emergency_thrust resetting.
Notification by Harvey Thompson.

Fixes for ABS definition problems on DEC Alpha OSF/1 machines.
Patch provided by Franc,ois Pinard <pinard@iro.umontreal.ca>.

Fixed bugs causing lasers not to wrap edges.  Thanks to helpful
bugreports by Lars "Zaphod" Norder and Tony Plate.

Fixed bug causing config window to reappear after window resize.
Often reported.

Fixed bug in ERASE mode for drawing treasure team numbers.

Added patch from Jyke Jokinen to have team members show up on the radar
if teamImmunity is on.


===============================================================================

This is a summary of changes of release 3.1.2 compared to release 3.1.1:

Fixed bug for unitialised killer variable in player-hits-mine situations.

Added improved security checks for owner-only commands based
upon IP address.  Owners of a server now can only issue owner-only
commands from the same host as the server is running on.  This is
done, because we got reports from server owners complaining about
users abusing the current simple scheme.  Homo homini lupus.

The name of the server owner (the person who started the server) is no
longer listed in status reports to improve security and privacy.

Extended the way sockets are made non-blocking by trying three different
possibilities depending upon which system include file constants are defined.
Now fcntl(O_NDELAY), fcntl(FNDELAY) and ioctl(FIONBIO) are all tried until
one of them succeeds.

Fix for kicking players and broken connections.  This used to terminate
the server.  Hopefully not anymore.

Everything regarding X windows is now not used if the display is set to NO_X.

Kicking players still terminated the server.  Now a real fix... ;/

Revision of the timer stuff.  Cleaned up sony_news hack and made system
calls restart on a SIGALRM signal by setting the flags to SA_RESTART.

Fixed a missing installation of the alarm catcher.  This could have caused
premature termination of the server if it couldn't resolve meta addresses.

Fix for the -playerMinimumStartFuel server option.  Some old leftover code
prevented this option from working correctly.

There was a BIG bad bug in Tank_handle_detach().  It copied one player
structure onto another thereby blurring the dynamic memory allocation.
This is likely the cause of the cloak bugs which have been reported for
a long time now.

Initial tanks caused players to get too much fuel.

The number of initial tanks is now properly range checked.

Fix for players unpausing in limited lives mode.

===============================================================================

This is a summary of changes of release 3.1.1 compared to release 3.1.0:

Fixed bug for audioServer which tested for address of array instead
of testing for first byte of array.  Thanks to Shawn L. Baird (Scarrow).

Fixed bugs for ERASE mode for erasing weapon modifiers and mine names.
Reported by Jay Schmidgall.

Fixed bug for modifier banks which allowed players to use clusters even
if -allowClusters was False.  Thanks to Russ Glaeser.

Added some missing X resources for keys.  Like keyRepair and keyToggleImplosion.
Thanks to notification by Eric Matsui.

Fixed bug for ECMs destroying lasers.  They always destroyed everything.
Reported by Harvey Thompson.

Fixed bug for ECMs affecting mines.  Reported by Harvey Thompson.

Added a 'T' command to the character interface to set (or change) the team.
This is handy in case a user finds out with the Status command that his
current team is full (or contains only weak players ;).

Applied patch from Patrick Kenny to make the number of missiles per pack
a constant instead of an ordinary number.

The directed message feature was extended to print where the message
was directed to.  Partly based on a patch by Patrick Kenny.

Bugfix patch for TkXpInterface from Yves-Henri BERNE and Ramdane FERHATI.

===============================================================================

This is a summary of changes of release 3.1.0 compared to release 3.0.7:

This release features lots of first class new features by Harvey Thompson
from SCO London.  He provided us with the biggest patch ever.  Not that we
like to merge big patches, but we do like first class new features :-).

A long time wish has been fulfilled with the addition of fullfeatured
wall bouncing.  Several new options control how and if players, shots,
items, debris bounce or not.

Due to the many and radical changes this version is not able to
communicate with older versions.  This was a difficult decision to take,
but it would have taken lots of extra work and much more code bloat
to do otherwise.

Now there is a new ChangeLog file which contains changes summaries
since release 3.0.4.

Support for DEC AudioFile sound format provided by Tom de Pauw.

Updated sounds file in the lib directory.  Many new sound events have
been added by Harvey Thompson.  Mark Boyns added more different sounds.
If you want to use sound with XPilot you must use this updated file.

Fix to not unpause paused players when their last target is destroyed
in targetKillTeam mode.  Bug reported by Ramdane Ferhati.

Server output is now always linebuffered, even over pipes or remote shells.

The preprocessor symbol _SONYNEWS_SOURCE has been changed into sony_news.

New server option -reportToMetaServer.  To specify if you want the server
to keep the meta server informed about your game.
Contributed by MAKOTO "Mark'n" Matsushita.

New item called EmergencyThrust.  Gives you 4 seconds of maxwarp speed.
You will need it badly to escape those modified full nuclear cluster mini
smart missiles chasing you at high speed :-).
Contributed by Harvey Thompson.

New item called AutoPilot.  Computer controlled stationary hanging in
the air everywhere you like, most likely near fuelstations :).
Contributed by Harvey Thompson.

New item called TractorPressorBeam.  To push or pull opponents towards
you or from you.  Robots also know how to use it :-)
Contributed by Harvey Thompson.

You can now specify the size of shots as they are drawn on your display.
When teammode is on then teamshots can be drawn in a different size for
easy recognition on monochrome displays.  Contributed by Harvey Thompson.

Players now have several options to change the behavior of weapon systems.
This is done with so called weapon modifiers.
The following weapon modifiers are available:

    N - To turn on nuclear mode on mines and missiles.
        So you can place a nuclear mine or throw a nuclear bomb.
        Or fire a nuclear smart missile, heat shot or torpedo.
        Nuclear mode takes 4 mines to make one nuclear mine
        and 7 missiles to make one nuclear missile.
        Full nuclear mode takes all the mines you have for one
        full nuclear mine with a minimum of 4 and all the missiles
        you have for one full nuclear missile with a minimum of 7.
        Contributed by Harvey Thompson.

    C - To toggle cluster mode on mines and missiles.
        Cluster explosions consist of shots instead of debris.
        Not for children.  Contributed by Harvey Thompson.

    I - Toggle implosion mode.  Explosions generated by mines and missiles
        implode when this modifier is active.  That is, players are pulled
        towards the centre of the explosion instead of being pushed away
        from it.  The great psychological effect is that opponents don't
        know anymore what they can expect from an approaching mine and
        therefore have much more difficulty to handle it.
        Inspired by a discussion in alt.games.xpilot.

    X - Set mini mode.  Firing a missile or mine results in a few mini
        missiles and mines.  Four mini levels are provided.  The first
        is the default non-mini mode.  Mini mode 2, 3 and 4 generate
        split weapons.  The mini projectile generates correspondingly less
        damage when it hits a player, but it has some other advantages.
        Contributed by Harvey Thompson.

    Z - Set spread angle.  When you drop, throw, launce some mini
        projectiles then the direction of the mini projectiles is
        influenced by this modifier.  It also influences wide angle
        shots and rear shots.  Four different spread levels are available.
        Contributed by Harvey Thompson.

    V - Set speed mode.  It decreases the speed of cluster shots
        in favor of increasing the life of the cluster shots.
        Four different speed levels are available.
        Contributed by Harvey Thompson.

    B - Set power mode.  Results in faster missiles which do
        correspondingly less damage.  Four power levels are available.
        Contributed by Harvey Thompson.

    L - Set laser mode.  Three choices are standard damage lasers, laser
	which acts as a stun gun (as outdated option laserIsStunGun did)
	or causes temporary blindness akin to ECMs.

New server option -allowClusters.  To allow or deny the cluster modifier.
Clusters are a bit heavy and not suitable for all playing styles.
Contributed by Harvey Thompson.

New server option -allowModifiers.  To allow or deny above modifiers,
except for cluster and nuke modifiers which are controlled by
their own -allow options.  The default value is Off.
Contributed by Harvey Thompson.

New server option -allowLaserModifiers.  To allow or deny laser modifiers.
Contributed by Harvey Thompson.

New client options to control how and when and if you want to
have all of your items displayed on your HUD.  For instance, you could
set to only display a particular item when the number of that item
changes.  Contributed by Harvey Thompson.

New client option to control whether you want to see any
messages or not.  Some slow displays could benefit from this.
Contributed by Harvey Thompson.

New server option -dump.  To print out a list of all of the server
options with their default values.  Handy if you want to make a new
lib/defaults file.  It also prints the values for some compile time
definitions like LIBDIR, MAPDIR etc.

New server option -minesOnRadar.  To specify if you want mines displayed
on the radar or not.  Contributed by Harvey Thompson.

New server option -nukesOnRadar.  To specify if you want nukes displayed
on the radar or not.  Nukes (including nuclear mines) can be displayed
in a particular pulsating way on the radar to distinguish them from
non-nuke projectiles.  Contributed by Harvey Thompson.

The server option maxMissilesPerNuke has been removed (temporarily?)
as it didn't fit with the new patches easily.  Maybe it is desirable
to have it back.

New server option nuclearClusterDamage.  This specifies how much damage
nuclear cluster debris does and reduces the number of debris by the same
amount.  Making this larger than 1.0 causes significant server improvement
when using nuclear cluster weapons; the most often used.  In order that
players can differentiate between normal shots/cluster and nuclear cluster
debris the latter flashes and changes size.  Contributed by Harvey Thompson.

New server option -playerMinimumStartFuel.  To specify if the minimum amount
of fuel a player gets when he restarts at his homebase after a fatal action.
Contributed by Harvey Thompson.

New server option -teamAssign.  To assign a player to a team if he hasn't
specified his team.  Contributed by Harvey Thompson.

New server option -teamImmunity.  It specifies whether team members are
immune to shots from team members or not.  Contributed by Harvey Thompson.

New end of game rules for team play with treasures.  When all playing
teams treasures apart from one are destroyed the game ends and balls
are reset.  Contributed by Harvey Thompson.

New server option -targetTeamCollision.  When this option is turned on
players belonging to the same team as the target can pass through
the target as if it was space.  This is a very nice idea I think.
There is a new map provided called teamfuzz4 to illustrate this idea.
Option and map are both contributed by Harvey Thompson.

New server option -treasureKillTeam.  Similar to targetKillTeam.
Contributed by Harvey Thompson.

New server option -treasureCollisionDestroys.  Specifies whether balls
are destroyed when a player hits it.  Contributed by Harvey Thompson.

New server option -treasureCollisionMayKill.  Specifies whether balls
kill unshielded players.  Contributed by Harvey Thompson.

New server option -shotsWallBounce.  Specifies whether shots bounce
from walls or not.  Can be fun, but be prepared to be shot by your
own bullets.  Together with clusters this may be nice too :-)

New server option -ballsWallBounce.  Specifies whether balls bounce
from walls or not.  Can be fun with balls because when a player looses
his connection with a ball the ball can be hard to find back.

New server option -minesWallBounce.  Specifies whether mines bounce
from walls or not.  Not sure if this is a nice option.

New server option -itemsWallBounce.  Specifies whether items bounce
from walls or not.  Great fun to chase that wide angle item you need
so badly, or that fuel item when you don't have fuel anymore, etc.

New server option -missilesWallBounce.  Specifies whether missiles bounce
from walls or not.  Makes missiles live almost forever.

New server option -sparksWallBounce.  Specifies whether sparks from
thrusting and bounce off walls or not.  Turning on this option causes
thrust to be "reactive", that is something like ground effect in real
physics.  Useful to slow you down even more before hitting a wall.
Contributed by Harvey Thompson.

New server option -debrisWallBounce.  Specifies whether debris from
explosions bounce off walls or not. Watch out for the combination of
this option and nuke exposions.  Too many fast moving and bouncing
objects can slow down the server for a long time.  You can tune this
with the -maxObjectWallBounceSpeed option.  Otherwise it is great fun.

New server option -maxObjectWallBounceSpeed.  Specifies the maximum
allowed speed for objects to bounce off walls.  Setting this below 50 is
recommended to avoid slowdowns of the server in case of big explosions.

New server option -maxShieldedWallBounceSpeed.  Specifies the maximum
allowed speed for shielded players to bounce off walls.

New server option -maxUnshieldedWallBounceSpeed.  Specifies the maximum
allowed speed for unshielded players to bounce off walls.  Nice to set
it high in tournament style maps.

New server option -maxShieldedWallBounceAngle.  Specifies the maximum
allowed angle for shielded players to land on walls.

New server option -maxUnshieldedWallBounceAngle.  Specifies the maximum
allowed angle for unshielded players to land on walls.  Nice to set
it high in tournament style maps.

New server option -playerWallBounceBrakeFactor.
Factor to slow down players when they hit the wall (between 0 and 1).
For instance, setting it to zero causes walls to immediately absorb
all speed of a player that touches it.  Setting it to one causes
players to keep all of their speed when they bounce.

New server option -objectWallBounceBrakeFactor.
Factor to slow down objects when they hit the wall (between 0 and 1).

New server option -objectWallBounceLifeFactor.
Factor to reduce the life of objects after bouncing (between 0 and 1).
This option allows you to reduce the life of bouncing objects if you
think that too many objects slow down the server.

New server option -wallBounceFuelDrainMult.
Multiplication factor for player wall bounce fuel cost.

New server option -wallBounceDestroyItemProb.
Factor probability of loosing one or more items from each set when a
player bounces of a wall.  Higher probabilities give greater chance
of loosing objects.  Contributed by Harvey Thompson.

Objects are now warped through wormholes if the wormhole has ever warped
a player before.  The object is warped to the same place as the player
has been warped to.

Being hit by debris from explosions now costs a little fuel depending upon
the speed and mass of the debris.  Being hit by fast and heavy debris
costs more fuel than being hit by slow and light debris.  If a player is in
the middle of a nuke explosion and sparksWallBounce is on then this could
cost him quite some fuel.  Not having enough fuel is fatal.

New key called keyLockNextClose.  To lock on the next closest player.
Default key is the down arrow.  Contributed by Harvey Thompson.

New key called keyToggleNuclear.  To toggle the nuclear weapon modifier.
Default key is 'n'.  Contributed by Harvey Thompson.

New key called keyToggleCluster.  To toggle the cluster weapon modifier.
Default key is 'c'.  Contributed by Harvey Thompson.

New key called keyToggleImplosion.  To toggle the cluster weapon modifier.
Default key is the 'i' (the ID default key is now 'u').

New key called keyToggleVelocity.  To toggle the velocity weapon modifier.
Default key is the 'v'.  Contributed by Harvey Thompson.

New key called keyToggleMini.  To toggle the mini weapon modifier.
Default key is the 'x'.  Contributed by Harvey Thompson.

New key called keyToggleSpread.  To toggle the spread weapon modifier.
Default key is the 'z'.  Contributed by Harvey Thompson.

New key called keyTogglePower.  To toggle the power weapon modifier.
Default key is the 'b'.  Contributed by Harvey Thompson.

New key called keyToggleLaser.  To toggle to laser type modifier.
Default key is the 'l' (the compass toggle default key is now `y').
Contributed by Harvey Thompson.

New key called keyToggleAutoPilot.  To toggle automatic pilot mode.
Default key is the 'h'.  Contributed by Harvey Thompson.

New key called keyEmergencyThrust.  To toggle emergency thrust mode.
Default key is the 'j'.  Contributed by Harvey Thompson.

New key called keyTractorBeam.  To activate the tractor beam in attract mode.
Default key is the ','.  Contributed by Harvey Thompson.

New key called keyPressorBeam.  To activate the tractor beam in repulse mode.
Default key is the '.'.  Contributed by Harvey Thompson.

New key called keyClearModifiers.  To clear all of the modifiers.
Default key is the 'k'.  Contributed by Harvey Thompson.

New keys called keyLoadModifiers1, keyLoadModifiers2, keyLoadModifiers3
and keyLoadModifiers4.  To load modifiers in bank 1, 2, 3 or 4.
Default keys are '1', '2', '3' and '4'.
Users can specify up to four modifier settings which affect all of
the modifiers available.  During active play these banks allow rapid
switching between different settings.
For advanced use you can combine this with another key like this:
         xpilot.keyLoadModifiers1:       1
         xpilot.modifierBank1:           NC V1 X4 Z2
         xpilot.keyDropMine:             Tab 1
to make the Tab key drop some modified mini nuclear cluster mines.
Many nice combinations using this technique are imaginable.
Contributed by Harvey Thompson.

New client resources xpilot.modifierBank1, xpilot.modifierBank2,
xpilot.modifierBank3 and xpilot.modifierBank4.  To specify what modifier
options the modifier banks should contain.  Contributed by Harvey Thompson.

New key called keyToggleOwnedItems.  To toggle display of owned items
on the HUD.  Contributed by Harvey Thompson.

New key called keyToggleMessages.  To toggle display of messages on
the screen.  Contributed by Harvey Thompson.

New client option -keyListFont.  To set the font to use in the key help
window.  This was needed because of the many keys which overflowed the
available screen space.  By setting this option to a small font this
problem is overcome to some extent.  What we really want is a multi-column
or multi-page key list.  Contributed by Harvey Thompson.

New client option -shieldDrawSolid.   Dunno what it does.
Contributed by Harvey Thompson.

There is now a new kind of pause mode called HoverPause.  You can pause
when you are in AutoPilot mode, but you don't get all of the immunity
of a normal paused player.  It is only meant as a temporary pause
to answer a phone or open a door for someone, etc.
Contributed by Harvey Thompson.

Shots are now transferred to the client much more efficiently.  They now
use the same compression algorithm as was used for debris.  This was
needed for the new cluster explosions and for players having dozens of
wide angle items.  Contributed by Harvey Thompson.

New client option -titleFlip.  To control if you want the titlebar
to flip between different titles.  Some window managers like twm seem
to have (performance?) problems with clients changing their titlebar.
Contributed by Harvey Thompson.

ECM works a little differently now.  Now it also affects mines.
Contributed by Harvey Thompson.

Talk messages can now be directed to a particular player or team.
To direct a message to a player prepend the player name and a
colon to the message.  To direct a message to a team prepend the
team number with a colon.  For instance, to talk to Smasher type
the following: "Smasher: Sharp move Smasher! :)".
You don't need to type the complete name and case is not important.
Note that this way of directing messages requires you to use
smilies with care as they contain a colon.
Contributed by Harvey Thompson.

Mines dropped by yourself or one of your teammembers are now
drawn with a hollow center to distinguish them from enemy mines.
Dunno if this is an improvement or not.
Contributed by Harvey Thompson.

Destroying targets from empty teams, or from teams whose members
are all in the game over state or paused, only gives as many points
as destroying a cannon would have given.

Thrusting now really costs a little fuel.

The client now tries better to contact servers on the local network
even if it can't get information about attached network interfaces.

The default value for the repair key has been changed from 'x' to 'f'.

The dollar sign is a new map symbol to force the direction of homebases.
Players starting on homebases that are adjacent to this symbol will
start with the front of their ship pointing to this dollar sign.
Except that the client does not draw it.

The shots of cannons are now moving at approximately the same speed
as player shots (they used to be much slower).  Cannons also fire
a little more often.  (Maybe this should be made optional?)

Smart missiles now try to avoid targets and treasures.

Servers now can have a motd which players can read while they are
connected to the server.  The client has a pager with scrollbars
for easy reading of the motd.  By default this server motd is displayed
as soon as the client has successfully joined a game.  This behavior
can be turned off by setting the -autoServerMotdPopup option to False.
Alternatively the client can ask for the server motd by selecting
the motd entry in the menu.
The default place to store the server motd is in LIBDIR/servermotd, but
this can be changed by the server option -motd.

The server now better handles games with more players and robots due
to improvements in the way player-object collisions are calculated.
However, due to the new wall collision routines which are slower
the server handles situations with lots of objects in the air slower.

A bugfix for initialCloaks thanks to Yves-Henri BERNE and Ramdane FERHATI.

Three new server options called initialAutopilots, initialEmergencyThrusts
and initialTractorBeams.

The number of initial items a player has when he starts on his homebase
can now be changed by the client, even when play already has begun.
This was done after effort by Kevin Pearcey and Ramdane FERHATI.

All of the server options with their current values can now be examined
by all clients.

A new server option called -distinguishMissiles.  If this option
is true (the default) then different types of missiles like smart,
heat or torpedo are drawn with different lengths.
Smart missiles have length 12, heat seakers have length 15 and
torpedoes have length 18.  Thanks to Tony Plate.
He also renamed "smarts" to "missiles" where applicable.



Users can now define their own ship shape with a few limitations.
The server has a new server option -allowShipShapes to enable
user-defined ship shapes (the default is to enable it).
The client has a new option called -shipShape <decription>.
Where description defines the edges of the ship.  When the ship
is drawn the edges are connected in the order they are listed
in the description, with lines connecting them.  The first and last
point are also connected.
For example, the following defines the default ship we all know so well:

    xpilot -shipShape '(3,1,2)(15,0)(-9,8)(-9,-8)'

Where the first parentheses surrounds a triple of numbers.
The first number of this triple denotes the number of points that
follow.  The second and third number of the triple define the two back
points of the ship, which are marked with the marking lights.
These two back points also determine where the thrust of the ship
originates, namely at the mean of these points.
All of the points follow, each one surrounded by parentheses.
The first point should be the top point of the ship as this is the
point where shots originate from (otherwise the ship will kill itself
by its own shots).
The ship shape is defined as if it was rotated 90 degrees to the right.
The definition should meet some requirements to enforce users to define
a ship which is not too small or too weird.  These restrictions are
arbitrary and open to discussion.  Currently they are as follows:
  1) each ship should have at least three different points and not more
     than sixteen points.
  2) at least one point should be eight or more pixels left from the origin.
  3) at least one point should be eight or more pixels right from the origin.
  4) at least one point should be eight or more pixels above the origin.
  5) at least one point should be eight or more pixels below the origin.
  6) at least three points should be eight or more pixels away from the origin.
  7) no point may be more than fifteen pixels away from the x- or y-axis.
Hopefully this is understandable, otherwise it is unusable :-)
Some example ship shapes made by Mark Boyns are:
##spike
xpilot.shipShape: (6,2,4)(15,0)(0,2)(-9,8)(-3,0)(-9,-8)(0,-2)
##mushroom
xpilot.shipShape: (11,5,6)(8,0)(5,8)(3,12)(0,15)(0,0)(-8,3)(-8,-3)(0,0)(0,-15)(3,-12)(5,-8)
##star
xpilot.shipShape: (8,3,5)(15,0)(2,2)(0,15)(-2,2)(-15,0)(-2,-2)(0,-15)(2,-2)
Stig Sther Bakken adds:
##Milennium Falcon
xpilot.shipShape: (16,5,6)(14,2)(14,4)(2,10)(-5,10)(-10,8)(-12,3)(-12,-3)(-10,-8)(-5,-10)(9,-11)(10,-8)(7,-8)(14,-4)(14,-2)(4,-2)(4,2)
Someone has to make a shipshape editor! :-)
(And we need an archive of nice ship shapes.)
Andy Skinner adds:
xpilot*shipShape: (4,1,3)(15,0)(-9,8)(0,0)(-9,-8)
## squatty
xpilot*shipShape: (6,1,5)(8,0)(-8,12)(-4,4)(-8,0)(-4,-4)(-8,-12)
##Y-wing
xpilot*shipShape: (16,5,11)(14,0)(5,5)(6,2)(0,2)(0,8)(-13,8)(-13,4)(-4,4)(-6,0)(-4,-4)(-13,-4)(-13,-8)(0,-8)(0,-2)(6,-2)(5,-5)
##side wings
xpilot*shipShape: (15,5,9)(15,0)(-4,-3)(-4,-6)(0,-6)(0,-8)(-12,-8)(-12,-6)(-5,-6)(-5,6)(-12,6)(-12,8)(0,8)(0,6)(-4,6)(-4,3)
##fishy
xpilot*shipShape: (8,2,6)(15,0)(8,4)(-15,-8)(-8,2)(-4,0)(-8,-2)(-15,8)(8,-4)

Enough examples I think :)

Most of the work on user definable ship shapes has been done
by Scott W. Adkins.



There is a new server option by Harvey Thompson called: -mineFuseTime.
It specifies the time after which mines also explode if the player
who dropped the mine approaches it.  The default is 0 seconds, which means
that this feature is not used.


A new server option -robotsTalk based on work by Greg Shebert.
We only need some more robot messages.


Changes to the way ECM and mines interact by Tony Plate:
(1) ECMs change mine ownership.  This is a pretty powerful trick, so
one ECM can only change the ownership of one mine (the closest one).
This option is controlled by the -emcsReprogramMines.
(2) Mine ownership is displayed on the screen, when you are close enough.
How close you need to be depends on how many sensors you have (with no
sensors, you have to be within 1.5 times the mine explode range, increases
by 0.5 for each sensor).  Whether or not the mines are displayed as a
hollow or filled circle depends on who originally laid the mine, not who
it is safe for.  Controlled by the server option -identifyMines.
(3) The client has a -showMineName option.


The maps2image package by Andrew Scherpbier has been added to
the contrib directory.  It takes a set of xpilot maps and builds a
single PBM image from them. Each image is labeled with the map's
name below it.  If you have a lot of xpilot maps, this is a simple way
to remind yourself of what the different maps are/look like.


New in 3.1.0 is the inclusion of TkXpInterface in the contrib directory.
TkXpInterface is made by Ramdane FERHATI, Yves-Henry Berne.
It is based on an early version of tkxpilot by Richard Oak.
It is a very nice and complete package presenting an easy to use
graphical user interface to configure an XPilot server.  It provides
handles to tune options, select and preview a map, and to startup
a server with this setup.  It also provides a nice interface to
the meta server and can startup a client connected to the server of
your choice.  It requires installation of the Tcl/Tk and maps2image.
See the accompagnied README in the contrib/TkXpInterface directory for details.
This is hot stuff!  Recommended.


Hmm, I'm not sure if I haven't overlooked some changes.  There are so many.


The manual page for the client has been updated somewhat by Harvey Thompson
and Tony Plate.


===============================================================================

Changes in 3.0.7 compared to 3.0.6:

1) New compile time option for Suns called SPARC_CMAP_HACK, which
   gives a very high speedup on some low quality graphics hardware.
   Faster display systems (e.g. those that do not have trouble
   displaying 12 or more frames per second) do not experience
   any benefit from this option.  This option needs the ERASE
   compile time option set to 1 (e.g. -DERASE=1).
   Be warned that this option needs further work and that it is
   currently not entirely riskfree in the sense that it should check
   if the display is local before trying to alter the colormap.
   We are hoping for some volunteer to improve this as we don't
   have Suns available to do it ourselves.
   Thanks to Steven Singer for providing extensive testing and analysis.
   His test report follows here:
    I've retimed the xpilot client response with various option setings -
    particularly to see the effect of my colourmap hack. I've also tried an
    alternate server we had on the system - Xsun - which doesn't include the
    NeWS support which our default server (xnews) does provide.
    I've tried to measure the maximum frame rate that can be obtained under
    the various settings. Note that I've increased the maximum frame rate as
    measured for ERASE on, my hack off to 23 fps (from 15 fps as I said
    previously). However, although it will cope some times at 23 fps, at
    other times it goes jerky. Anyway, here are the measurements:

    xpilots running on a remote machine - performace degrades badly if
    xpilots run on local machine.
    xpilot running locally on a SPARC 2 with a cg3 display card.
    xpilot 3.0.6 beta + my colourmap hacking.

    server	ERASE	My Hack	Max fps	Comments
    -------	------- ------- ------- -------------------------------
    xnews	Off	Off	~6	With fps>6 ~0.5 sec delay between
					key press and response.
    xnews	Off	On	~7	With fps>7 response lag as above.
    xnews	On	Off	23	Goes jerky if a lot of stuff (like
					landscape) on screen or for some other
					reason I haven't worked out
					(system load?). Generally on-on is
					smoother.
    xnews	On	On	>76	18 fps is smooth and playable but a
    					little flickery.
    Xsun	Off	Off	8-12	Difficult to say exactly as it copes
    					well when the server is going too fast.
    					Ie. there is no key lag, and the frame
    					update is fairly smooth
    Xsun	Off	On	????	As above, somewhere around 12 fps at a
    					guess.
    Xsun	On	Off	23	Similar to xnews response
    Xsun	On	On	76	Similar to xnews response

    Other notes
    -----------
    On the xnews server rotating dashes (shield and cloak) don't rotate.
    With ERASE On and the xnews server, the shield isn't erased properly.
    With ERASE On on either server the cloak isn't erased properly if your ship
    rotates.

    Glad he is our beta tester :-)

2) New server option called maxMissilesPerNuke, or maxNuke for short,
   which limits the number of missiles used per nuke and thusly allows
   players to fire more nukes at once if the player has enough missiles.
   Made by Stig Bakken.

3) New server options to set the initial number of items a player gets
   when he starts at his homebase.  Listed they are:
   initialFuel, initialTanks, initialECMs, initialMines, initialMissiles,
   initialCloaks, initialSensors, initialWideangles, initialRearshots,
   initialAfterburners, initialTransporters, initialLasers.
   Made by Stig Bakken.

4) Changes to the new server option targetKillTeam which kills all
   members of a team if their last target was destroyed.

5) Longer lasers as the current lasers were a bit weak.
   If this makes lasers too strong then we will shorten them again.
   Or better yet, make an option to set the laser length.

6) Targets can now be repaired if they are damaged.  The new target repair
   key is 'x' by default.  Made by Andy Skinner.

7) New features for talking made by Steve Davis.
   The mouse cursor is now warped to the talk window.
   The talk window now supports emacs-style line editing with
   CTRL-b, CTRL-f, CTRL-a and CTRL-k.
   A new user configurable fixed font for talking.
   Talk window editing has been cleaned up to make it easier to
   add more editing commands.

8) Changes to the player lock by Steve Davis.
   The arc is now red instead of blue.  This enhances visibility.
   The size is more visually appealing.
   Size is more linear to actual distance, and has a set maximum.
   Size scales with the map size.

9) New -motd option in the client thanks to Zack Evans.

10) -altTurnspeed and -altTurnresistance are now -altTurnSpeed and
    -altTurnResistance everywhere consistently.  Bugfix.

11) Important bugfix for dropping balls thanks to Gary O'Brien.

12) Very important bugfix for limited visibility maps like Tournament.
    Thanks to Geert Van der Plas from KU Leuven, Belgium.

13) Targets now also exist during non-teamplay as a form of destructable
    wall.

14) Bugfix for kicking a player.  Since 3.0.6 this also terminated
    the server.  This is in fact a more general bugfix.  In 3.0.6 if
    a players connection got corrupt then the server terminated.
    This is now also fixed.
    If I remember correctly this was reported first by Michael Eckardt.
    Not sure about the name, sorry.

15) Bugfix for nukes.  The nuke was counted as a shot on firing, but
    not when destroyed.  This caused serious problems in limted shots
    mode where players could not fire anymore after they had fired a couple
    of nukes.

16) Bugfix for tournament mode maps to correctly calculate when there
    is a draw.

17) Robots are now less handicapped by unusual directions of gravity.

18) Fix for NoQuit mode.  If NoQuit is set then the server does not quit
    even if no players show up ever.  Thanks to Dave Merrill.

19) Servers now report to the meta server whether they support sound or not.

20) Bugfix for calculating winner and loser teams in pizza mode thanks
    to Fred Hucht.

21) A new XPilot Map Transfer Protocol program by Andrew Scherpbier.
    It is in the contrib/xpmtp subdirectory and enables you to really
    conveniently upload, download, preview or generate maps to/from
    xpilot.sdsu.edu.  Check it out.

22) A new XPilot map generator program called wildmap.  It is in
    the contrib directory.  It generates nice maps and has a couple
    of options to tune the map characteristics like the map density,
    dimensions and so on.


===============================================================================

Changes in 3.0.6 compared to 3.0.5:

This patch contains only a few new features.  The majority of
the changes include a VMS port by Curt Hjorring, several bug
fixes and several speedups.  This is an incomplete summary:

* VMS port by Curt Hjorring.  See the VMS subdirectory.

* Configurable text message printing in client.

* New toggleShield option for the client.

* New clock option for the client.

* Speedups of the client drawing (e.g. modulus removed in Paint_world).

* Faster server response during login.

* Several fixes to prevent zombie players.

* A new (unfinished) client compile time option called ERASE which seems
  to noticably speedup the drawing of clients on some particular kind of
  slow display system (a SPARC with a cg3 card).  Faster systems don't
  experience any advantage of this option (even a slight decrease in
  performamce).  Thanks to Stephen Singer and Curt Hjorring for testing.

* Much faster gravity object processing during server startup thanks to
  two posts in alt.games.xpilot which I can't find anywhere anymore :(

* And a number of bug fixes and small tweaks.


===============================================================================

Changes in 3.0.5 compared to 3.0.4:

* XPilot will compile using G++ (tested on Linux and HPUX)
* Support for Thrusted Solaris CMW (thanks to Steve Marsden)
* Made it configurable if items can be picked up while shields are up
* Made it configurable if mines can be thrown while shields are up
* Added stun-gun option for laser
* Laser has been seriously weakened to balance the game
* Laser is no longer immediate (it is pulsed)
* New sounds for laser (thanks to Mark Boyns)
* Made robots less good at using lasers
* Bouncing against items while shields up now moves the item
* Right alignment of messages
* Messages are written character by character
* Default values for graphics (window size, num. colors) is
  reverted to 3.0.3 defaults
* Throwing/detaching mines now costs fuel
  (thanks to Fred & Michael from Duisburg)
* Might have fixed cloak bug (Charles, let us know if it works, ok? :)
* Bug fix for bouncing against objects in general (might have caused crash)
* Fix for drawing targets (which were drawn ugly and wrong)
* Fix for stealing a base from someone having game over (limited lives)
* Hopefully removed the bug that hung the server when a tank was released
* Several other small bug fixes

===============================================================================

