Empire 3.0.0
- Implemented the C_SYNC RFC
  - New commands:
    sync
    toggle sync
    toggle async
  - New files:  
    h/edb.h
    h/toolkit.h
    lib/commands/sync.c
    lib/global/edb.c
    lib/subs/prsync.c
    info/Commands/sync.t
    doc/CHANGES3.0
- New struct members (currently not used)
  - player.comhistory command history (for debugging) last 10 commands
  - nat.nat_mission_trigger set which relation you want to trigger
    various missions and autodefenses at.
  - Added land.lnd_scar -- how experienced the land unit is.
  - sect.sct_mobil was changed from unsigned char to short (to permit
    the removal of updates--note I don't plan to remove updates, but
    someday someone might try and they will need this so that sectors can
    go to negative mob).
- New struct members (currently used):
  - Added type field to all objects so they can identify themselves
  - Moved var structs to the top of all class structs for easy location
    (see struct genchrstr defined in h/genitem.h)
  - nat.nat_hostaddr, nat.nat_hostname, nat.nat_userid, userid and hostname
    of last person to connect to that country.  If when you login,
    your userid or hostname is different from the last person to conenct
    to that country, then you will get a message like:
Last connection from: Mon Nov 13 01:48:04 1995
                  to: Mon Nov 13 01:48:12 1995
                  by: children@RedDragon.Empire.Net
    this will improve security and be helpful for co-rulers.  Also
    added were nat.nat_last_login and nat.nat_last_logout.
  - Nation now has 50 realms.
- New global constants:
  - Extended nsc ("next selection conditionals" e.g. cen * ?mil=5) to
    support C_SYNC messages and include the objects "map" (bmap), and "nation".
    These will transmit to the client the equivalent of "dump", "ship",
    "car", "land", "lcar", "bmap", and "nation" output and more.
  - Added nsc entries for the following classes: sect, ship, plane,
    land, nuke, map, item, product, and version.  These will transmit to
    the client the equivalent of the "show" and "version" command output
    and more.

Empire 3.0.1  C_SYNC 0.0.1
- changed the order of the struct members of sect, ship, plane, land unit,
  nuke to put own and uid out front (note this results in a new version
  of the C_SYNC protocol)
- fixed a bug in "sync object" which was sending erronious data
- for now all C_SYNC messages will automatically send uid (or x,y for sects).
  this should be changed to implement "surfacing noises" and interdiction.
- whenever any of your sect, ship, plane, land unit, or nuke changes,
  you will get a C_SYNC message describing the entire new struct.
  - Note this occurs everytime the data changes EXCEPT for changes
    which happen durring an update.  For now, I will require clients
    to call "sync object all" after an update if they want to sync their
    database after the update.
  - If you loose a sect, ship, plane, land unit, or nuke, then you will
    get a very partial C_SYNC message only telling you the id and new owner.
- look, spy, coastwatch (async & sync), now all send you partial
  C_SYNC messages telling you information about your enemy's stuff.
  - Note: For now, you get precise information about the number of mil in
    the sector etc...  This will be fixed in 3.0.2

Empire 3.0.2  C_SYNC 0.0.2
- there is now only one announcement file which all countries post to
  and read from.  the wire syntax has changed to "wire [y|n|<days>]" to
  allow you to read announcements from <days> days ago if you want.
- at each update, all announcements older than 7 days (deity
  configureable as #define ANNO_KEEP_DAYS in misc.h) are automatically
  deleted.
- a player's bmap can now be changed (e.g. by planes flying missions)
  even when they're not logged on.
- added a new command "sharebmap <COUN> <SECTS>".  If <COUN>
  is friendly towards you and your bmaps already share enough information
  in common, then your bmap will be added to their bmap.  For more details
  (there are alot more details) connect to empire.net 7773 1-10 and type
  "info sharebmap".
- now whenever a designation gets added to your bmap, the client will
  receive a very small C_SYNC MAP_CLASS message
- when your country's money, reserves, cap location, name or origin
  changes, you will get a C_SYNC NAT_OBJECT message with your new nation
  data.  Client writers take note: there is a new field in the nat
  struct called "xstart,ystart" which is the start location of the
  origin.  So if the client needs to make some transformation of the
  co-ordinates, it can refer to this variable.
- when you type "nation", that will also send a C_SYNC NAT_OBJECT
  message to the client.
- removed a bunch of fields from the C_SYNC nat struct (to cut down bandwidth)
  (this results in a new version of C_SYNC).
- information about enemy commodities, tech, or efficiency are now
  rounded to the nearest 10.

Empire 3.0.3  C_SYNC 0.0.3
- added three new land units: "cavalry 2", "light infantry", and
  "aau1".  Here's the basic scheme.  The old cavalry are an average
  between the somewhat weaker cav1 and somewhat stronger cav2.
  light infantry are half the size of and slightly fastar than inf1's.
  "aau1" come at the same tech as Zepplins and let low tech countries
  try to throw rocks at low tech planes...
- reduced the size of "ts1 trade ship 1" to 100 lcm, 50 hcm, $1500
  (from 200 lcm, 100 hcm, $2500).  Most players were waiting for ts2
  so this is a nice way to deal with that.
- after each update, all countries receive the message "C_SYNC EDB_UPDATE".
  (this results in a new version of C_SYNC).
- all telegram files have been moved into a subdirectory called "tel".
- new subdirectory of the data directory "sync" holds spooled C_SYNC messages.
- if the player is not logged on when they receive a C_SYNC message,
  then it will be spooled to their sync file.  If the sync file
  contains spooled messages older than 3 days (deity
  configurable as SYNC_KEEP_DAYS in misc.h), then the C_SYNC message will
  not be spooled.
- New command "sync read [yes|no]" reads all spooled C_SYNC messages.
  If the [yes|no] argument is not specified, the player will be asked:
  "Can I throw this information away now?".
- Removed the "bdes" command.  It is no longer necessary (since the
  server now automatically adds 'X' sectors to your bmap, and it also
  automatically adds sectors that your planes fly over when they're
  flying missions).  The "bdes" command in conjunction with the new
  "sharebmap" could lead to abuses, and since it is no longer really
  necessary, I removed it.  Given the choice between sharebmap and bdes,
  I think most players would choose sharebmap.
- The delivery and distribution stuff was removed from the output of
  "commodity" and each column was widened to 5 characters (to accomodate
  the new system where sectors are now allowed to hold up to 9999 of stuff)
- IP addresses will now only be resolved into hostnames if RESOLVE_IPADDRESS
  (in misc.h) is defined.
- Mountains will now mine gold at 1/5th the rate that gold mines do (thar's
  gold 'n them thar hills!)

Empire 3.0.4 beta  C_SYNC 0.0.4
- If the game is a blitz, then the "players" command will list other
  countries which are logged on.  This will cut down on the "is anybody
  else logged on?" announcements.  Note that for players, "last command"
  and "user@hostname" are not printed (only deities get to see this stuff).
- fixed a server crashing bug in "sync class all".
- each country now has two bmaps, their 'working' bmap and their
  'true' bmap.  The true bmap contains only information put there by the
  server.  The working bmap also contains information put there by the
  bdes and sharebmap commands.  The "bmap" command usually displays the
  working bmap unless the player specifies "bmap <SECTS> true".  Also,
  if the players working bmap somehow becomes corrupted, then they can
  type "bmap <SECTS> revert" to revert their working bmap back to their
  true bmap.  This change was necessary to prevent abuse of the new
  "sharebmap" command (which now compares the players true bmaps when
  determining whether they overlap).
- There is a new info page 'info Empire3' which contains game changes
  of particular interest to players.
- Put the bdes command back in.
- Added a new question in the "configure" script: "Do you require your
  server to be unusually small?".  If the deity answers "yes" to this
  question, then many bells and whistles will be turned off to generate
  a lightweight "bare bones" Empire server.
- I have padded each object struct out by a spare char, int, and long.
  This is to give me room in the coming months in case I need to make
  a change which needs data in the object structs, and I don't want to
  invalidate currently running long term games.
- Tested the HIDDEN and SLOW_WAR mods (these hadn't been tested for
  the Empire2+ server yet).

Empire 3.0.5 beta

Note: the primary focus of this upgrade is to address the f1
SAM-soaking problem.  The solution I adapted is a mixture of ideas
from various people--mostly not myself.  I appologize for forgetting
whose ideas these were, and I hope that in consolation for not
acknowledging you, you will at least be happy that I implemented
your ideas.  This was a pretty big job.

- In the old system, planes would be charged either 10 mobility
  (interceptors), 12 mobility (escorts) or 20 mobility (the rest) per
  flight.  This cost was then multiplied by (100/eff) with the
  restriction that plane mobility could not go below -32.  Planes flying
  missions were charged only 1/4 of this.  In the new system, planes are
  charged a base rate of 5 mobility to prepare for takeoff.  On top of
  this, they are charged a "flight cost" which is either 10 (interceptors
  and escorts) or 20 (the rest), however this flight cost is scaled down
  according to the length of the flight--it is multiplied by (flight
  length) / (max plane range).  The flight cost is then scaled by
  (100/eff) with the restriction that a plane can't go below -32
  mobility.  Planes flying missions are charged 1/2 of this.
- The mobility of a plane will now go down by one point for every two
  points of damage it took from air-to-air combat, to a limit of -32
  mob.  This is to simulate the high mobility cost of air-to-air combat,
  and the fact that air-to-air combat is more effort for low tech planes.
- SAM interception is now separate from plane interception; for each
  attacking plane, if the plane cost at least $1000 to build, then one
  SAM will be launched at it.  After SAMs have been fired, fighter
  planes will intercept what's left over.
- The restriction that high tech nations can not build low tech planes
  has been removed (the above changes address the f1 SAM-soaking problem).
- marine missiles on interdiction now fire at a single ship rather
  than the whole fleet.  They pick the ship which is the most valuable
  according to (cost to build) * efficiency.  Furthermore, marine
  missiles will only launch at a ship if the ship cost at least $1000
  to build  or if it can carry land units or planes.
- the NEWPAF option has been made standard.
- fixed a bug which wasn't giving a +1 radius bonus to units in 60% HQ's.
- "toggle sync on" now sends back a "sync version" as per the RFC.
- fairland now prints an error to stderr if it can't grow the
  continents (it used to just print the last partially built map).
- when you break sanctuary, your 100% sanctuaries turn into cities and
  all your other sanctuaries turn into roads (this is helpful for
  games which use "bigstart").

Empire 3.0.6  C_SYNC 0.0.5
- Fixed a bug in the attack code which was underestimating defense
  strength (it was only giving the sector defense bonus to land
  units--not mil).  Note--the bug was only in the estimation part, so
  countries were not being given a chance to abort attacks where the
  odds were clearly against them.
- Mountains can now only hold 1/10th as many civs as normal sectors.
- Raised the gold production efficiency of mountains from 20% to 75%.
- Changed fairland to put gold in mountains.
- flash and wall messages are no longer truncated.  Instead the message
  is split into 60 character pieces which are transmitted one at a time.
- If the game is HIDDEN then non-contacted countries no longer show up
  on your "relations" output.
- If the game is HIDDEN and you try to declare relations with a
  country you haven't contacted yet, then you will now get an error
  message (before you got nothing at all).
- Update production reports are now Production Reports again (they
  were BULLETINS since Empire2.0.0).  This will fix a bug which was
  preventing players from being "informed" when they get an update telegram.
- The new info page "info Mobility" gives the formulas for all
  mobility costs in the game.
- Before you type a telegram, you will now see:
    Enter telegram for Fodderland
    undo last line with ~u, print with ~p, abort with ~q, end with ^D or .
    1024 left:
  The new tilde escapes work very nicely.
- The prompt for escorts has been changed from "plane(s)? " to "escort(s)? ".
- Changed the mobility cost to move into a sector from
    cost = (mcost - eff) / 5
  to:
    if (mcost < 25)
      cost = (2 + (3 - mcost) * eff) / 5
    else
      cost = (mcost - 20 * eff) / 5

OLD SYSTEM: eff   0%  100%     NEW SYSTEM: eff   0%  100%
              +  0.2   0.0                   +  0.4   0.0
              m  0.4   0.2                   m  0.4   0.2
              ^  5.0   4.8                   ^  5.0   1.0

  Note that this means land units can attack 100% mountains now, so
  there will be a tradeoff for the defender--either they can have a low
  efficiency mountain that costs more mobility to attack but gets a
  lower defense bonus, or they can have a high efficiency mountain that
  costs less mobility to attack but gets a higher defense bonus.
- New conditional query "coastal" which gets set when you take a
  "census" of the sector.  Type "cens * ?coast=1" to get a list of all
  of your sectors which are adjacent to water (and thus vulnerable to
  assault).
- Added a new C_SYNC field to SCT_OBJECT called "coastal".  This results
  in a new version of the C_SYNC protocol.
