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.

Empire 3.0.7
- Fixed a server crashing bug in the sneak attack code
- Sectors with 0 mobility can no longer enlist mil
- In a HIDDEN game, you can now only see relations for countries you
  haven't met yet
- Fixed a bug in the "Last login from" part of the login sequence.
- added new global array player_commands which keeps a list of the
  last 100 commands typed by players.  Added a file doc/debugging which
  explains to deities how they can access this list.
- Fixed a bug that would prevent you from being able to assault your
  own sector if SLOW_WAR was enabled.
- In a HIDDEN game, llook will now contact.
- Fixed a bug in the SLOW_WAR mods which was charging people WarCost to
  declare war when their enemy was Sitzkrieg towards them.
- Fixed a bug in HIDDEN--sending a telegram or auto-coastwatch
  sighting ships will now both contact.
- Fixed a bug in SNEAK_ATTACK--you are no longer charged for boarding
  a non-at-war ship.

Empire 3.0.8
- Removed an infinite from the autonav code.
- Fixed the "client" login command.

Empire 3.0.9
- Consolidated budget code for ships, land units, & planes (Ville Virrankoski)

Empire 3.0.10
- Fixed a bug in radar (anonymous)
- Ported the server to Ultrix (Yannick Tremblay)

Empire 3.0.11
- Port to FreeBSD (submitted by Janjaap van Velthooven)
- Fixed a server crashing bug in range command
- Fixed a bug which gave players free info when they shelled deity bridges
  (reported by Jim Gillogly)
- Small ships can now fuel in cities (reported by Walter Smith)
- Fixed compile bug in wu.c (reported by Curtis Larsen)
- Documented toggle sync and toggle async (reported by Bernhard Reiter)
- Fixed a bug in shoot which was leading to abuses (reported by
  Nathaniel Thurston)
- route now prints % sectors (reported by Nathaniel Thurston)

Empire 3.0.12
- mkmf is no longer needed to compile the server (Michael Straub)
  NOTE: This change depends on "cpp -M" working on your system.
- A number of bug fixes to the "budget" command (Ville Virrankoski)

Empire 3.0.13
- Fixed a bug in "budget" command
- If cpp doesn't exist on the system, then "cc -MM" is used in place
  of "cpp -M"

Empire 3.0.14
- Extensive consolidation of "budget" command with update routines
  (Ville Virrankoski)
- Fixed some of the portability problems arising from the switch to "mkdep"
Empire 3.0.14a
- Fixed a server crashing bug in the update routines (introduced at 3.0.14)

Empire 3.0.15
- Fix of a MAJOR bug in the budget/update routines which was
  overcharging countries for military reserves (Ville Virrankoski)
- Simplification & fix of mkdep/configure (Yannick Tremblay)
- Port to Solaris 5.5 (Ron Kuris <rk@unify.com>).  Here are the notes
that came with the Solaris port:
----------------
These are the patches to make the new server work on Solaris.
Some notes:

    My environment is that we have cc from Sun, but no license.
    We have gcc installed as /opt/gnu/bin/gcc.  Although it was
    built with Solaris 5.4, it works fine on 5.5.  If you need
    gcc, use archie to exact search for FSFgcc.gz (I found it
    on qiclab.scn.rain.com in /pub/solaris).  You also need
    FSFtools.gz for gnumake.  These packages install very easily.

    While running configure, your 'gnumake' is /opt/gnu/bin/make,
    and the compiler you should use is /opt/gnu/bin/gcc.

    My build path is something like:
    PATH=/opt/gnu/bin:/usr/ucb:/usr/bin:/usr/sbin:.

    Once you apply the patches, everything seems to work.

Whoever integrates this into the mainstream:
    The change to client/GNUmakefile is the only one I think
    that might need tweaking.  It sets the default build flags
    to Solaris (somehow I don't think you want that).  I tried
    pretty hard not to break anything else.

    The change in lwp.c I think is just an outright bug, but
    most versions of the lwp system dependent stuff just happen
    to get lucky by not saving the registers.  This should NOT
    be relied upon!
----------------

Empire 3.0.16
- Optimization of mkdep (Yannick Tremblay)
- Moved solaris from emp3 to emp3/make/Systems (Ron Kuris)
- Minor enhancement to "lcargo" code (Ron Kuris)
- Fixed a bug which had setting budget priorities on land units
  result in being charged twice for them (Ville Virrankoski)

Empire 3.0.17
- "read" command now sends a C_SYNC nation message.  (Curtis Larsen)
- Fixed a bug which was deleting the announcement file when there were
  no announcements (reported by Ed Down).
- Fixed "~u" tilde-escape for "telegram" and "announce" commands (it was
  possible to undo back past the beginning of the buffer and crash the
  server (reported by Nathaniel Thurston).
- mkdep optimization (Yannick Tremblay).
- Changed syntax for "cede" command so that you can specify "se" or
  "sh" on the command line (reported by Tero Paananen).

Empire 3.0.18
- fixed a serious bug in configure and mkdep which prevented the
  server from compiling

Empire 3.0.19  Ken Stevens  17 Apr 96
- Fixed a serious bug in the Empire3 server which allowed players to
  create an infinite number of shells and food out of nothing.
  I added a new field "simulation" to the player struct and set this
  field to 1 in all update simulation commands (budg, prod, neweff).
  Then in the update code, instead of checking the variable update_pending
  to determine whether the update is "for real", I check the player->simulation
  variable.  Note that when the commands sneweff, pneweff, and lneweff
  get added to the server, they should also set player->simulation to 1.
- subs/takeover.c added a check to make sure the number of che doesn't
  overflow (Paul Byrne)
- update/revolt.c.  It fixes two problems.  First, after security
  forces kill che, if there are no che left, the function returns
  without saving the zero-che value.  Worse, it never checks for
  negative che values, which looks like it could happen.  The second one
  is in che moving.  It loops through the neighbors looking for the best
  place to move.  Problem is, if it finds a place to move it doesn't
  move to that place, but simply to whichever place it last looked.
  (Paul Byrne)

Empire 3.0.20  Ken Stevens  21 May 96
[from 3.1.2]
- fixed a serious bug in the "production" command which could cause
  a server crash (Steve McClure).
- fixed a bug in the "starve" command which could suck all the food
  off of a ship or land unit on the ship (Steve McClure).
- fixed a bug in the "deliver" command mis-interpreting the return
  value of the putvar function (Steve McClure).

[from 3.1.3]
- Fixed a bug in road mobcost calculation (Steve McClure)
- Fixed a bug in the toggle command (reported by Keir Novik)

[from 3.1.6]
- Fixed a bug in the attacking code where moving mil into a sector was
  going on.  It would probmpt for the max amount of mil to move in
  by mobility, but when you moved in it never checked, so you could still
  move all the attacking mil in (Steve McClure)
- Fixed a bug in fairland (Ken Stevens - reported by Janjaap van Velthooven)
- Fixed a bug in map C_SYNC (Ken Stevens - reported by Markus Armbruster)

[from 3.1.7]
- fairland.c.  Better representation of the map for >30 continents.
  The markings for continents start wrapping for more than 62 continents,
  the map won't get any control characters anymore (Janjaap van Velthooven).
- C_SYNC. forces a newline whenever data with a different id is appended to a
  partial line.  Caveat: this sacrifices the line structure to correct
  the line tagging (Markus Armbruster).
- Fixed a bug which wasn't printing the last row of `sync object bmap'
  in god's coordinate system (Markus Armbruster).

[from 3.1.16]
- port to Ultrix (Markus Armbruster)

Empire 3.0.21  Ken Stevens  1 July 96
- fixed a bug in reco & sat which wasn't putting a carriage return
  after land units.
- fixed a bug in starvation command which sent the user a telegram
  telling them how much each of their land units lost due to starvation.
- fixed a bug which would send you a message "RUMBLE...your sub hears
  a depth-charge explode nearby" when you weren't navigating subs
  (reported by Keir E. Novik)
- increased buffer size in emp_client from 1024 to 4096 for sync
  class version (reported by Markus Armbruster)
- fixed a bug in revolt code which could damage a sector below 20%
  without checking if it was a bridge (reported by Pat Loney)
- fixed a bug in SLOW_WAR which prevented you from re-inforcing your
  own sector by assaulting (Aaron Dewell).
- fixed a bug in sack capping news item (reported by Ed Down)
- fixed a server crashing bug in "offer" command (reported by Jon Wright)
- fixed a bunch of info files (reported by Keir E. Novik)
