tChangeLog.md - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tChangeLog.md (29147B)
       ---
            1 # HEAD
            2 - The text-mode client should now support Unicode input when in UTF-8
            3   locales, e.g. allowing player names containing accented characters
            4   to be input (#60).
            5 - Add support for networking on the Haiku operating system (thanks
            6   to Begasus) (#61).
            7 
            8 # 1.6.1 - 2020-12-11
            9 - Improved display in non-English text-mode clients; previously
           10   columns were not aligned properly in some cases and occasionally
           11   not all available drugs at a location were shown on screen (#54).
           12 - Minimal British English translation added (#57). Configuration file
           13   entries can now use either British English or American English spelling
           14   (i.e. Armor/Armour).
           15 - On Windows the "browse" button in the graphical client options dialog
           16   now opens at the folder containing the selected sound file (#55).
           17 
           18 # 1.6.0 - 2020-12-06
           19 - Fixes to build with OpenWRT (thanks to Theodor-Iulian Ciobanu).
           20 - Write server pidfile after fork (thanks to Theodor-Iulian Ciobanu).
           21 - Updated German and French Canadian translations from Benjamin Karaca
           22   and Francois Marier.
           23 - Support for old GTK1 and GLIB1 libraries removed - we now need version 2
           24   of these libraries to build dopewars. GTK+3 is also supported.
           25 - Update metaserver to work with new SourceForge; older versions can no
           26   longer successfully register with the metaserver.
           27 - Switch to using libcurl to talk to the metaserver (this supports https,
           28   unlike the old internal code). The metaserver configuration has changed
           29   accordingly; `MetaServer.Name`, `MetaServer.Port` and `MetaServer.Path` are
           30   replaced with `MetaServer.URL`, while `MetaServer.Auth`, `MetaServer.Proxy*`,
           31   and `MetaServer.UseSocks` are removed (set the `https_proxy` environment
           32   variable instead, as per
           33   https://curl.haxx.se/libcurl/c/libcurl-tutorial.html#Environment)
           34 - The default web browser on Linux has changed from 'mozilla' to
           35   'firefox'; on Mac the system-configured default browser is used.
           36 - On Windows the high score file, log file, and config file are now
           37   stored in the user application data directory (e.g.
           38   `C:\Users\foo\AppData\Local\dopewars`) rather than the same directory as
           39   the dopewars binary.
           40 - Add sound support with SDL2, and on Mac.
           41 - Add 64-bit Windows binaries.
           42 - Fix for a DOS against the server using the REQUESTJET message type
           43   (thanks to Doug Prostko for reporting the problem).
           44 
           45 # 1.5.12 - 2005-12-30
           46 - Really fix a potential exploit against the Win32 server when running as
           47   an NT service (user data was being used as a format string in some cases).
           48 
           49 # 1.5.11 - 2005-12-30
           50 - Add example configuration file to the documentation.
           51 - Fixed various typos in the German translation (thanks to Jens Seidel
           52   and Francois Marier).
           53 - Fix a remote exploit against the Win32 server (thanks to KF).
           54 - High score file on Windows is now written into local application data
           55   directory if available, to work more efficiently on multi-user systems.
           56 
           57 # 1.5.10 - 2004-10-24
           58 - High score file is now installed in `${localstatedir}` rather than
           59   `${datadir}`, to allow proper Filesystem Hierarchy Standard compliance
           60 - Fix for a curses client crash if the D key is pressed during attacks
           61   by the cops
           62 - Some problems with the curses client missing screen resize events fixed
           63 - Logging to a file should now work properly again
           64 - Minimum and maximum limits on all relevant integer configuration
           65   file variables are now imposed for sanity
           66 - Quique's Spanish translation is now available both in standard Spanish
           67   (`es.po`) and `es_ES.po`, which uses drugs slang from Spain
           68 - Fix for a trivial DOS of the server
           69 - Windows installer no longer hardcodes `C:\Program Files` so should
           70   work with non-English versions of Windows
           71 
           72 # 1.5.9 - 2003-06-07
           73 - The messages window in the curses client can now be scrolled with the
           74   + and - keys
           75 - The curses client now makes better use of space with screen sizes
           76   larger than 80x24
           77 - Fix for a crash encountered if you drop drugs and then encounter the cops
           78 - Addition of -P, --player command line option to set the player name
           79   to use (thanks to Michael Mitton)
           80 
           81 # 1.5.8 - 2002-10-21
           82 - Options dialog now allows sounds for all supported game events to be set
           83 - BindAddress config variable added, to allow the server to be bound to
           84   a non-default IP address
           85 - BankInterest and DebtInterest variables added, to allow the
           86   configuration of interest rates (with thanks to Matt)
           87 - New "UTF8" ability added; if client and server share this ability, then
           88   all network messages will be sent in UTF-8 (Unicode) encoding (without
           89   the ability, all messages are assumed to be in your locale's default
           90   codeset, which may cause problems on non-US ASCII systems)
           91 - Names.Month and Names.Year have been replaced with StartDate.Day,
           92   StartDate.Month, StartDate.Year and Names.Date; these can be used to
           93   handle the date display properly after the turn number exceeds 31
           94 - encoding and include config directives added, to allow the config file's
           95   encoding (usually taken from the locale) to be overridden, and to allow
           96   the inclusion of other config files
           97 - Spanish translation added by Quique
           98 - The Windows build of dopewars should now use Unicode throughout, on
           99   platforms with Unicode support (i.e. NT/2000/XP)
          100 - Under Windows XP, the "pretty" new common controls are now used
          101 - Sounds provided by Robin Kohli of www.19.5degs.com
          102 
          103 # 1.5.7 - 2002-06-25
          104 - Sound support; Windows multimedia, ESD and SDL outputs are supported;
          105   the individual modules can be statically linked in, or built as true
          106   "plugins"
          107 - Version mismatches between client and server are now treated more
          108   sensibly (it's all done server-side, and spurious warnings are now
          109   removed - only an old client connecting to a new server will
          110   trigger them)
          111 - Bug fix: when the buttons in the Fight dialog are not visible to a
          112   mouse user, previously you were able to access them via the keyboard
          113   shortcuts; now fixed.
          114 - configure should now work properly if GLib 2.0 is installed but
          115   GTK2.0 is not
          116 - Norwegian Nynorsk translation added by Åsmund
          117 - If dopewars is run setuid/setgid, it will now only use this privilege
          118   to open the default (hard-coded) high score file; it will not open
          119   a user-specified high score file with privilege
          120 - It is no longer necessary to run "dopewars -C" on a zero-byte high
          121   score file; it will be converted automatically
          122 - A new server command "save" can be used to save the current configuration
          123   to a named config file
          124 
          125 # 1.5.6 - 2002-04-29
          126 - Bug fix: the server will only let you pay back loans or deal with the
          127   bank when you are at the correct location, and you can no longer
          128   "pay back" negative amounts of cash to the loan shark
          129 - Minor improvements to fighting code
          130 - The GTK+2 client should now run properly in non-UTF8 locales, and
          131   handle configuration files in both UTF8 and non-UTF8 locales
          132 - Unsafe list iteration in serverside code (which could possibly cause
          133   memory corruption) fixed
          134 - Another dumb PPC bug fixed
          135 - Incorrect LIBS generated by configure script in some circumstances
          136   (due to a GTK+/Glib bug) - now fixed
          137 - Everything should now build with autoconf-2.53 (if desired)
          138 
          139 # 1.5.5 - 2002-04-13
          140 - On fight termination the player is now allowed to close the "Fight"
          141   dialog before any new dialogs pop up
          142 - Bug caused by a "fight" interrupting a "deal" fixed
          143 - dopewars no longer crashes if you set e.g. NumGun = 0
          144 - Incorrect handling of `WM_CLOSE` under Win32 fixed
          145 - Unix server now fails "gracefully" if it cannot create the Unix domain
          146   socket for admin connections
          147 - New ServerMOTD variable to welcome players to a server (with thanks
          148   to Mike Robinson)
          149 - GTK+ client should now work with GTK+2.0
          150 
          151 # 1.5.4 - 2002-03-03
          152 - Basic configuration file editor added to GTK+ client
          153 - Annoying flashing on closure of modal windows in Win32 fixed
          154 - Win32 client now uses "proper" dialog boxes (i.e. without a window menu)
          155 - Icon added for GTK+ client
          156 - Bug with withdrawing cash from the bank fixed
          157 - URL in GTK+ client "About" box is now clickable
          158 - Crash bugs when running on PPC systems fixed (with thanks to Zeke
          159   and Brian Campbell)
          160 
          161 # 1.5.3 - 2002-02-04
          162 - Text-mode server is now non-interactive by default (server admin can
          163   connect later with the -A option)
          164 - Windows server can now be run as an NT Service
          165 - Fatal bug when visiting the bank (under Win2000/XP) fixed
          166 - Windows installer should now upgrade old versions properly
          167 - Currency can now be configured with Currency.Symbol and Currency.Prefix
          168 - Windows client windows cannot now be made unreadably small
          169 - Bank/loan shark dialog now warns on entering negative prices
          170 - Default configuration is restored properly at the start of each game
          171 - Translations should now work with the Windows client
          172 - Documentation on the client-server protocol added
          173 - Windows graphical server can be minimized to the System Tray
          174 - Keyboard shortcuts for menu items in Windows client
          175 - Default buttons (ENTER -> "OK") for Windows client
          176 - RPM build/make install can now be run as non-superuser
          177 - Win32 install for current user/all users
          178 - Code cleanups
          179 
          180 # 1.5.2 - 2001-10-16
          181 - Slightly easier-to-use "run from fight" Jet dialog (avoids the crazy
          182   "windows pop up faster than you can close them" syndrome)
          183 - Support for HTTP proxies and authentication
          184 - SOCKS4 and SOCKS5 (user/password) support
          185 - French translation added by leonard
          186 - Boolean configuration variables (TRUE/FALSE) now supported
          187 - Many code cleanups
          188 - High score files now have a "proper" header, so that file(1) can
          189   identify them, and so the -f option cannot be used to force setgid-games
          190   dopewars to overwrite random files writeable by group "games" - use
          191   the -C option to convert old high score files to the new format
          192 - GNU long command line options now accepted on platforms with `getopt_long`
          193 - Simple installer now in place for Win32 systems
          194 
          195 # 1.5.1 - 2001-06-19
          196 - Improved logging in server via LogLevel and LogTimestamp variables
          197 - Metaserver (both client and server) moved to SourceForge
          198 - Icons (courtesy of Ocelot Mantis) and GNOME desktop entry added
          199 
          200 # 1.5.0 - 2001-05-13
          201 - Fixes for spurious tipoffs
          202 - High scores should now be written properly on Win32 systems
          203 - Various minor usability fixes on Win32 systems
          204 
          205 # 1.5.0beta2 - 2001-04-29
          206 - Various fixes for installation on BSD systems and Mac OS X
          207 - Multiplayer menus (spy on player, etc.) are now greyed out in GTK+ client
          208   when in single-player mode
          209 - Manpage (courtesy of Leon Breedt) added in doc/
          210 - Fix for missing "bgetch" when configured with --disable-curses-client
          211 - Broken "trenchcoat" message fixed
          212 - Value of bought drugs now displayed in curses client
          213 - AI players now are at least partially functional
          214 - Fix for server segfault on invalid short network messages
          215 - dopewars no longer runs GTK+ setgid
          216 - "make install" installs dopewars as group "wheel" if "games" is
          217   unavailable
          218 
          219 # 1.5.0beta1 - 2001-04-08
          220 - Completely rewritten fighting code
          221 - Internationalization (i18n) support
          222 - Tense and case-sensitive translated strings handled via `dpg_` analogues
          223   to glib's `g_` string handling functions `%P` = price,
          224   `%Txx` or `%txx` = tense-sensitive string, `%/.../` = comment (ignored)
          225 - Networking revamped - now uses nonblocking sockets to improve server
          226   responsiveness and to remove deadlocks (previously, any client could
          227   halt server by sending an unterminated message); "abilities" added to
          228   allow backwards-compatible protocol extensions; player IDs used rather
          229   than player names to save bandwidth, with newer client+server
          230 - Drug values now stored by server (e.g. "you have 5 Weed @ $600); sent
          231   only if DrugValue config. variable is set, and only to new clients
          232   (based on a patch by Pierre F)
          233 - Spying fixed (cannot now spy on a player until they accept your bitch)
          234 - Longer `T>alk` and `P>age` messages allowed in curses client
          235 - Minor bug fixes to configure options
          236 - configure script tweaked to fix networking under Solaris (and friends)
          237   (with thanks to Caolan McNamara)
          238 - Client-side code moved out of `clientside.c` and `dopewars.c`;
          239   client-specific code now placed in `<xxx>_client.c`, while generic code is
          240   in `message.c`
          241 - GTK+ client added
          242 - Native "pointy-clicky" Win32 graphical client added (via GTK+ emulation)
          243 - GLib dependency introduced; string and list handling is taken care of
          244   now by GLib routines
          245 - Configuration files now handled by GLib's GScanner; "string lists"
          246   (of the format { "string1", "string2", "string3" } ) are now supported
          247   for configuration of subway sayings, "stopped to" and overheard songs
          248 - Timeouts bug fixed
          249 - MaxClients bug fixed
          250 
          251 # 1.4.8 - 2000-07-09
          252 - Several fixes to Win32 networking code
          253 - IdleTimeout and ConnectTimeout variables added, to allow the server to
          254   break connections that have been idle for too long, or take too long
          255   to (dis)connect, respectively
          256 - Servers now use UDP packets to communicate with metaserver, for 
          257   a faster response to changing game conditions; the client, and older
          258   versions of the server, still use the "old" CGI script interface;
          259   MetaServer.Port variable split into .HttpPort and .UdpPort
          260 - MetaServer.Password can now be used with a blank MetaServer.LocalName
          261   (with the new metaserver interface only) in order to identify servers
          262   whose IPs are dynamic (but are otherwise the "same" server); this password
          263   must, again, be acquired from the metaserver maintainer
          264 - Metaserver now records current & maximum numbers of players, high
          265   scores, and last update time and uptime, for each server
          266 - Servers now re-register with metaserver when players join or leave,
          267   on receipt of a SIGUSR1 signal, and periodically
          268 - Metaserver list in client now lists uptime, and current/maximum
          269   numbers of players
          270 - Pid file maintained while in server mode (-r command line switch)
          271 - Names of the gun shop, pub, bank and loan shark can now be customised
          272   (GunShopName, RoughPubName, BankName and LoanSharkName)
          273 - When a player tries to run from a fight, running to the current location
          274   now takes them back to the fighting screen
          275 
          276 # 1.4.7 - 2000-01-14
          277 - Minor fixes to Win32 code
          278 - dopewars now uses autoconf to (hopefully) build properly on odd sytems
          279   such as HP-UX, and also to build "out of the box" under Cygwin (win32)
          280 - long long datatype used for all prices on platforms that support it
          281 - fixes to strtoprice and pricetostr code; replacement of code which
          282   uses printf("%ld") for prices with pricetostr calls (with thanks to
          283   Coolio)
          284 - "Leave" option added to Bank
          285 - Messages window is now only displayed for network games
          286 - Binary can be compiled without TCP/IP networking support (e.g. for use
          287   on standalone systems) by configuring with --disable-networking
          288 - Minor modification to config. file handling to allow variables to be set
          289   to null strings (use "Variable=")
          290 - Option to allow the "local" server name to be specified when registering
          291   with the metaserver - MetaServer.LocalName variable. Useful when the
          292   metaserver refuses to resolve your IP address to your "preferred" domain
          293   name or when connecting via an enforced web proxy. Email the metaserver
          294   maintainer, for an authentication password (MetaServer.Password) linked to
          295   your chosen domain name, to use this option successfully.
          296 
          297 # 1.4.6 - 1999-11-12
          298 - Bug fix for message window and "sew you up" prompt
          299 - Bug fix for server hanging in LoseBitch function
          300 - If player opts to play again, server selection method used last time
          301   is used again
          302 - Terminal resizing now handled properly
          303 - Port to Win32 (Windows 95,98,NT) console mode
          304 
          305 # 1.4.5 - 1999-10-21
          306 - Limited support now for terminals at sizes other than 80x24; but response
          307   to a resize during the program run doesn't work properly yet...
          308 - Minor improvements to AI players
          309 - Corrected website address displayed by client on connecting to a
          310   server of a different version
          311 - If player opts to play again, defaults to the name they used last time
          312 - Server now disconnects clients when their game ends (rather than
          313   waiting for them to politely disconnect) - this gets around the problem
          314   of particularly unresponsive clients getting killed and then sitting
          315   around in an "undead" state, able to be repeatedly killed by other
          316   players
          317 - Armed players cannot now "stand and take it" (why would you want to
          318   anyway?) in multiplayer fights
          319 - Client now offers to obtain the list of available servers from the
          320   metaserver, to select one to connect to
          321 - "Special" values (MetaServer), (Prompt) and (Single) (including the
          322   brackets) now accepted for the "Server" variable, which instruct the
          323   client to list the servers, prompt the user for a server, or play
          324   in single-player mode, rather than connecting immediately to a server
          325 - "MetaServer.Port" variable added to facilitate connection to the
          326   metaserver via a proxy server (with thanks to Tony Brown)
          327 - Signal handling cleaned up
          328 - Buffer overflow problem with ExtractWord() fixed (hopefully) (with thanks
          329   to Lamagra)
          330 - Command line option -S for running a "private" server (do not contact
          331   the metaserver)
          332 - Prices for spies and tipoffs can be customised; this information is not
          333   communicated properly between 1.4.5 and earlier versions, of course.
          334   In such a case, the game will still work properly, although the client
          335   may report erroneous spy and tipoff prices
          336 - Fixed dodgy "pricetostr" function
          337 - Bug fix for "Drop" command in single-player mode
          338 - Command line option -g for specifying a supplementary configuration file
          339 - FightTimeout variable fixed - it now actually does something...
          340 - GunShop, LoanShark, RoughPub and Bank variables corrected so that they
          341   take actual location numbers now - not (location-1). WARNING: this
          342   breaks old configuration files!
          343 - Full HTML documentation now provided
          344 - Prices of bitches for hire can now be configured - Bitch.MinPrice and
          345   Bitch.MaxPrice
          346 - Removed description of non-existent "die" command in server
          347 - Minor fixes in antique mode
          348 - Fix of NumDrug and NumGun processing (now allows more than the default
          349   number of drugs and guns) (with thanks to Matt Higgins)
          350 - "ConfigVerbose" option added to display extra feedback during config
          351   file processing (with thanks to Matt Higgins)
          352 
          353 # 1.4.4 - 1999-09-16
          354 - Full compatibility with 1.4.3 servers and clients maintained
          355   (although a warning is displayed to upgrade as soon as possible)
          356 - dopewars client now properly redraws the screen when Ctrl-L is pressed
          357 - Server output is now line-buffered by default for more sensible output
          358   of log files
          359 - `L>ist` bug in single player mode fixed
          360 - Number of game turns can now be configured with the "NumTurns"
          361   variable, or the game can be left to go on forever if it's set to zero
          362 - The shortcuts "k" and "m" are now supported in any input of numbers
          363   (e.g. money to put in the bank). So, for instance, typing 1.5m would
          364   be short for typing 1500000  (m=million, k=thousand)
          365 - Server now automatically contacts the dopewars metaserver (actually
          366   a CGI script), at bellatrix.pcl.ox.ac.uk, whenever it is brought up or
          367   down, to keep the list of servers on the dopewars webpage up to date.
          368   Aspects of the server's communication with the metaserver can be
          369   configured with the MetaServer.xxx variables
          370 - Names of the two police officers which chase you (originally
          371   Hardass and Bob) can now be configured with the variables
          372   "Names.Officer" and "Names.ReserveOfficer" respectively
          373   (provided by: Mike Meyer)
          374 - Several uses of the  string constant "bitches" rather than
          375   the variable "Names.Bitches" have been spotted, and corrected
          376   (provided by: Mike Meyer)
          377 - "Sanitized" variable - if nonzero, removes drug references
          378   (random events, the cops, etc.) - obviously drug names need to also
          379   be changed in the config. file to complement this. Turns dopewars into
          380   a simple trading game (provided by: Mike Meyer)
          381 - Minor formatting cleanups to accommodate longer drug names on the
          382   screen neatly (provided by: Mike Meyer)
          383 
          384 # 1.4.3 - 1999-06-23
          385 - Bug with random offer of weed/paraquat fixed
          386 - `L>ist` command now offers list of logged-on players or high scores
          387 - "Out of time" message to explain why the game stops suddenly after 31 days
          388 - Bank is now a little more user-friendly
          389 - Messages announcing players leaving or joining the game now appear in
          390   the central "messages" window, rather than the main, bottom window
          391 - Clients should now behave properly after the server crashes (or they
          392   are pushed off the server) - i.e. they should revert to a single-player
          393   mode game
          394 - `price_t` type used for all prices
          395 - Server interactive interface is now greatly improved, complete with
          396   help screen
          397 - `SO_REUSEADDR` set so that server can be restarted immediately if it crashes
          398 - Facility to drop unwanted drugs, with the accompanying chance that you
          399   are caught by Officer Hardass and shot at
          400 - Fighting interface greatly improved:-
          401   - All player-player fighting now occurs in a specialised window. Players
          402     can switch between the standard "deal drugs" window and the fighting
          403     window with the D and F keys
          404   - Number of keystrokes required to shoot and acknowledge all the
          405     relevant messages now greatly reduced
          406   - Some indication is now given of the other player's status (number of
          407     bitches and guns)
          408   - Server now imposes timeouts on fights, so if an opponent does not
          409     return fire within a set time, a repeat attack is allowed
          410   - A bounty is paid out for killing an enemy bitch, and any guns/drugs
          411     they're carrying are passed on to the victor (if he/she is able to
          412     carry them)
          413   - A dead player's cash is appropriated by the victor of a fight
          414 - Handling of configuration files now greatly improved; the same options
          415   that are set here can also be set within the server as long as no
          416   players are connected. A large number of dopewars settings can be
          417   changed and customised from here. Customised settings will be used
          418   in single-player mode, and if dopewars is used as a server the settings
          419   will be propagated to any clients (of version 1.4.3 or higher) that
          420   connect. Not everything can be customised, but any remaining changes
          421   should be server-side only (and thus require no alteration to the 
          422   clients). Options include:-
          423   - MaxClients option to limit the maximum number of players connected
          424     to the server
          425   - FightTimeout option to alter the length of the fight timeout
          426   - StartCash and StartDebt to change the default starting cash and debt
          427     of every player
          428   - Probabilities and toughness of Officer Hardass and his deputies can
          429     be "tweaked"
          430   - Numbers and names of locations, drugs and guns can be altered
          431   - The words used to denote "bitches", "guns" and "drugs" can be 
          432     customised
          433   - Drugs can now be sorted by name or by price, in forwards or reverse
          434     order, with the DrugSortMethod option (can take values 1-4)
          435 
          436 # 1.4.2 - 1999-05-16
          437 - AI player improvements
          438 - Message structure changed to use less bandwidth and neater code
          439 - Now easier to break out of buy/sell drug prompts etc. (by pressing an 
          440   'invalid' key or ENTER)
          441 - Cleanup of player list
          442 - Cleanup after a player leaves the server; i.e. remove any references to
          443   their spies or tipoffs with other players
          444 - Added highlight of most recent score (for systems without working 
          445   `A_STANDOUT` attribute)
          446 - Fixed bug which caused all street-bought (i.e. not at Dan's gun shop)
          447   guns to be Saturday Night Specials
          448 - Prevented badly-behaved clients from continuing to jet to new locations
          449   after their death 
          450 - Added code to remove whitespace from name=value data read from 
          451   configuration file, and defaulted from $HOME/.dopewars to /etc/dopewars
          452 - Added "helpful" messages when guns cannot be bought or sold in gun shop
          453 - Minor cleanups of player-player fighting messages
          454 
          455 # 1.4.1b - 1999-04-28
          456 - segfault bug in server fixed
          457 
          458 # 1.4.1a - 1999-04-28
          459 - Interim release before 1.4.2; a few bug fixes in antique mode
          460 
          461 # 1.4.1 - 1999-04-27
          462 - Fix of bug where paying off your debt would actually _increase_ it!
          463   Dunno how that one slipped through... I blame my beta testers... ;)
          464 
          465 # 1.4.0 - 1999-04-27
          466 - Fixed bug with server; server now detects if standard input has
          467   been closed properly (previously if its input was redirected from
          468   /dev/null it would keep trying to read from it, using 100% CPU. Oops.)
          469 - First release under GPL
          470 
          471 # 1.3.8 - 1999-04-26
          472 - Message structure changed; separator changed from : to ^ and extra
          473   field added to identify messages to AI players
          474 - Shorthand routines added for "printmessage" and "question" messages;
          475   SendPrintMessage and SendQuestion repectively
          476 - Display of status of fight with Officer Hardass cleaned up
          477 - All servers are now interactive; to run in background simply attach
          478   standard input and output to /dev/null
          479 - AI Player can now connect to server and perform simple actions
          480 - Bank and Loan Shark display cleaned up
          481 - Drug busts etc. now displayed all at once rather than singly
          482 - High scores now maintained by server
          483 - `print_price` replaced with `FormatPrice`
          484 - LOGF macro now used for all server log messages
          485 - Read in location of score files, server, port from ~/.dopewars
          486 - Fixed bugs in player-player fighting code
          487 
          488 # 1.3.7 - 1999-03-28
          489 - Proper support for tipoffs and spies
          490 - Discovered spies cannot now be shot if you don't have a gun...
          491 - Option added for computer players (non-functional however)
          492 
          493 # 1.3.6 - 1999-03-14
          494 - BreakoffCombat routine added to terminate fights cleanly when one
          495   player runs away from a fight (under 1.3.5 defending player would
          496   just hang when this was done...)
          497 
          498 # 1.3.5 - 1999-02-27
          499 - Basic support for meeting other players; `E_MEETOTHER` event added
          500 - Simple player-player fights allowed with the use of `E_WAITFIGHT`,
          501   `E_DEFEND` and `E_ATTACK` events 
          502 - Two players with same name bug fixed
          503 - "question" message extended; server now passes a list of allowed
          504   responses in the first "word" of message data
          505 
          506 # 1.3.4 - 1999-02-25
          507 - Client and virtual server now maintain completely separate lists of
          508   players
          509 - GunShop now works properly; user can actually see what's going on!
          510 
          511 # 1.3.3 - 1999-02-23
          512 - Complete implementation of fighting with Officer Hardass
          513 - `E_DOCTOR` event added to handle question "do you want a doctor to
          514   sew you up?" after killing Hardass
          515 - Clients now handle list and endlist messages properly to display
          516   lists of current players on starting a game
          517 - Minor bugfix to ensure game actually ends after the 31st
          518 - Client now wipes price list on each jet to stop old prices
          519   flashing up between messages from the server
          520 
          521 # 1.3.2 - 1999-02-22
          522 - "subwayflash" message added
          523 - OfferObject/RandomOffer split into separate event from OfficerHardass
          524 - "smoke paraquat" also given separate event (`E_WEED`) and implemented
          525 - Bank/LoanShark bugfixes
          526 - Bugfix for drug price generation code
          527 - Partial implementation of fighting with Officer Hardass
          528 
          529 # 1.3.1 - 1999-02-21
          530 - Drugs can now be bought and sold
          531 - RandomOffer and OfferObject routines added to handle server-based
          532   random events ("a friend gives you..." etc.) and object offers ("do
          533   you want to buy a..." etc.) although "smoke paraquat?" doesn't
          534   work properly
          535 - GunShop / LoanShark / Bank / Pub all handled by the server now
          536 - Some networking bugfixes 
          537 
          538 # 1.3.0 - 1999-02-20
          539 - Development series (moving decision-making from client to server to
          540   improve multi-player games and cut down on cheating, in preparation
          541   for an OpenSource release)
          542 - Simple implementation of a "virtual server" to handle the server-side
          543   stuff within a single-player game
          544 - Splitting up of Dopewars into dopewars.c (init. code and utils);
          545   message.c (message-handling code); serverside.c (server-side code);
          546   clientside.c (client-side code)
          547 - Drug prices now generated by server, not client - so synchronisation
          548   of turns (and drug prices) should be easy to implement in the future
          549 - Minimal functionality - networking backbone only...
          550 
          551 # 1.2.0 - 1999-02-13
          552 - Stable release; some bugs in fighting code cleaned up
          553 
          554 # 1.1.26 - 1999-02-13
          555 - "PolicePresence" member is now read - when a fight is started, there
          556   is a finite chance (varies from location to location) that the
          557   perpetrator will get attacked by the police
          558 - MinDrug and MaxDrug members added to Location struct - some locations
          559   may have a smaller range of drugs on offer than others
          560 
          561 # 1.1.25 - 1999-02-11
          562 - Added an "Inventory" struct to keep track of players' belongings
          563   and anything dropped during a fight; winner of a fight now gets
          564   whatever the other player dropped (guns and/or drugs)
          565 
          566 # 1.1.24 - 1999-02-09
          567 - Put in code to "finish" fights properly when one player escapes
          568 - Attacking player is now told whether they hit the other player or
          569   not when in a fight
          570 
          571 # 1.1.23 - 1999-02-03
          572 - "Jet" command replaced with "Run" when in a fight
          573 - "PolicePresence" member added to Location struct
          574 - GunShop bug fixed (guns were taking up no space) 
          575 
          576 # 1.1.22 - 1999-01-30
          577 - Implemented very simple "shoot at another dealers" code; players, on
          578   arriving at a location where another dealer already is, can choose
          579   to attack (if they have any guns). The attacked player can then
          580   choose to return fire or run for it...
          581 
          582 # 1.1.21 - 1999-01-29
          583 - Added support for the "spy on another dealer" bitch errand
          584 
          585 # 1.1.20 - 1999-01-29
          586 - Added support for the "tip off another dealer to the cops" bitch errand