          Changelog for the ZDaemon 1.08 -> 1.09 transition
          =================================================

1. Point 01 release (Jan 1, 2006)
-----------------------------------------------------------------------
 1. Fixed a sound problem; many sounds (projectiles and map items) were
    not scaled by sfx volume, which resulted in very distorted sounds.
 2. Added a new possible value to the netstats CVAR; when it's 3, it
    displays both numbers and graph.
 3. When the "cl_showpressuse" CVAR is false, the client does not display
    the player name while spectating (and if the watched player is equal
    to the console player). Combined with the no-gravity conditions while
    spectating, this facilitates the taking of map screenshots.
 4. Sometimes you see rockets sticking to a wall; this is a dropped
    packet problem. Added a fix to circumvent it.
 5. Improved the "teleport jackhammer" and "spawn jackhammer" problems
    when cl_floorfix=1. Right now, cl_floorfix is not 100% right (because
    it treats the symptom rather than the cause), but it doesn't appear to
    have any bad side effects either; therefore, it should make the
    game quite more enjoyable.
 6. There was an oversight in the blocking of color changes (while alive
    and playing) on the server which resulted in some people using disco
    scripts again. It should be finally put to rest.
 7. Skin switching is allowed only in the same cases as color switching.
 8. The player setup dialog has been reworked to avoid sending many
    messages to the server when someone changes teams, colors, etc. Only
    a single message is sent (if necessary) when someone exits the menu.
    This should also reduce problems with spamming in team modes.
 9. Fixed a CTF exploit: flag carriers cannot switch teams.
10. Added another method to reduce spamming via team switching; any
    attempts to switch teams more than once in less than 5 seconds are
    ignored.
11. New server CVAR called "sv_deathlimit". If non-zero, it specifies
    the max. number of seconds that one is allowed to remain dead. When
    the limit is reached, he becomes either a spectator or is respawned
    depending on the sv_forcerespawn dmflag (which was not previously
    used in practice, so it looked like a fitting candidate for this
    feature). The default value for the CVAR is 180 seconds.
-----------------------------------------------------------------------

2. Point 02 release (Apr. 4, 2006)
-----------------------------------------------------------------------
 1. Fixed a problem in coop mode with the sv_deathlimit cvar. If someone
    remained dead long enough to become a spectator and then rejoined,
    then that person could not shoot any monsters and monsters could not
    kill him. It has been fixed now.
 2. Fixed a crash on some maps (eg., exec map09) when the "no exit"
    dmflag is used.
 3. Fixed a problem where the "A secret has been revealed" and other (wad-
    specific) messages were printed on the console instead of being
    displayed at the screen center.
 4. The "weapnext" and "weapprev" commands are automatically translated to
    "spynext" and "spyprev" respectively while spectating or viewing demos.
 5. Fixed a problem with the "Boss cube"; it would crash the client in
    client/server mode (eg. doom2 map30).
 6. Added a new dmflag (DF_RESET_INVENTORY = 1048576) and an associated
    cvar (sv_resetinventory). It's meant for coop and it determines whether
    player inventory should be reset at the end of each map.
 7. The "respawn items" , "no exit" and "weapons stay" dmflags needed the
    "alwaysapplydmflags" cvar to operate properly in coop. Not any more:
    alwaysapplydmflags is gone now and the dmflags work as expected.
 8. More server code cleanups.
 9. Improved the coop spawn algorithm; if your spot is occupied, it will
    try all coop spawns until it finds an empty one.
10. Updated the ip-country database.
11. Blocked any runtime changes to the "maxclients" CVAR; it can be
    set only in zserv.cfg.
12. Added a new dmflag (DF_QUAD_RESPAWN_TIME= 8388608) and an associated
    cvar (sv_quadrespawntime). It quadruples the time between item respawns
    and obviously applies only if item respawn is ON.
13. When the OS Sound range dmflag is on AND it's not a team game, then
    spawns facing west are silent. It's an old doom2.exe bug, but it was
    inconsistent between VC++ and gcc because it relied on undefined compiler
    behavior. This has been formalized now and is consistent across the board.
14. When you try to connect to a full server, you get an error message
    instead of no reply.
15. Added a new dmflag2 (DF2_USEBLOCKING = 16777216) and an associated
    cvar (sv_useblocking). It's taken from ZDoom 2.0.98 and it means
    "All special lines can block use lines".
16. Fixed the missing puffs bug introduced in 1.08
17. Grunting on 2-sided linedefs is now blocked when the silent BFG dmflag
    is on.
18. Multiplayer weapons are now spawned in coop mode (not SP mode).
19. sv_resend defaults to 1 now.
20. New server cvar (sv_maxclientsperip) which limits the number of allowed
    clients per IP. It defaults to 4. Can be disabled if set to a non-
    positive value.
21. Various security fixes (mostly DOS-related). When zserv detects a DOS
    attack, it auto-bans the attacking IP; the ban is temporary and expires
    in 15 minutes.
-----------------------------------------------------------------------

3. Point 03 release (Nov. 4, 2006)
-----------------------------------------------------------------------
 1. New server CVAR "specs_dont_disturb_players". It defaults to false.
    If turned on, spectator chat is echoed to other spectators, but not
    to players.
 2. Fixed a problem where the server might freeze for a few seconds in
    rare occasions.
 3. Modified the server to avoid creating the .zdoom directory in the
    user's home directory (unix) and to enable a common convention
    across all O/Ss. All WAD files are searched on the current directory
    first, then on the directory specified by the "-waddir" cmd. line
    option or the "WADDIR" environment variable.
-----------------------------------------------------------------------

4. Point 04 release (Dec. 17, 2007)
-----------------------------------------------------------------------
 1. Security fix (DOS-related).
 2. New server CVAR "acl" (access list) that controls the nicks allowed
    to connect.
 3. New server commands "acl_add", "acl_remove" and "acl_clear". They're
    pretty obvious.
 4. More code cleanups in zserv.
 5. Fixed a memory leak in zserv; it was losing about 1K bytes on each
    respawn. The memory was reclaimed at level end and that's why it
    was not noticed in normal games. It would appear though when there
    was no time and frag limit.
-----------------------------------------------------------------------

5. Point 05 release (Dec. 26, 2007)
-----------------------------------------------------------------------
 1. Improved server-side speedhack detection.
 2. Better handling of uneven packet delivery
 3. The server is now UPnP-aware, so it can forward ports on NAT routers
    automatically. It's enabled via the -upnp command line switch.
 4. Implemented a "killlimit" server cvar. It's meant for coop and it's
    analogous to the fraglmit cvar of DM. It can also assume negative
    values, in which case it means that *everyone* in game must reach
    the specified number.
 5. Implemented an "overtime" server CVAR. When it's different from zero
    and the time limit expires, the game goes into overtime and ends on
    the first frag, suicide, capture, etc (ie., sudden death).
-----------------------------------------------------------------------

6. Point 06 release (May 26, 2008)
-----------------------------------------------------------------------
 1. Display the target player health along with name in coop or when the
    target player is a teammate (in team modes),  or when spectating (in
    any mode). The nick and health are color coded depending on the target
    health.
 2. Target names are not shown any more for dead players.
 3. Added support for teleporting missiles (all kinds). It's activated
    with the DF2_TELEMISSILES = 1 dmflag (dmflag2 actually) or the associated
    "sv_telemissiles" CVAR. If you don't want to enable teleporting of
    all missiles, you can also use the dehacked approach for selected
    ones only. Older clients will not be able to handle such missiles
    properly (they may be hit by invisible missiles: this is the only
    known incompatibility), so a client upgrade is strongly recommended.
 4. We now force "fuzz" rather than translucency when playing non-coop
    online.
 5. Implemented proper weapon animation during spying / demo viewing.
    There are still two minor glitches that cannot get fixed right now
    since they require protocol changes. Therefore, they'll have to
    wait for 1.09.
 6. New server CVAR "specs_dont_disturb_players". It defaults to false.
    If turned on, spectator chat is echoed to other spectators, but not
    to players.
 7. Private messages from players to spectators are now blocked
    (cheating opportunity).
 8. Private messages from spectator to spectator are now enabled.
 9. Added support for SECTINFO lumps in wads; they are plain text 
    lumps and specify:
	1. which sectors are considered parts of a team "base area".
        2. user-assigned names for each sector.
    There can be more than one such lumps in all wads; you can find
    some sample SECTINFO at http://www.zdemon.org/doc/sectinfo/
10. Added special escape sequences for chat strings: %a -> armor,
    %h -> health, %l -> current location (as determined by a SECTINFO
    lump). They can be useful for binds in team modes.
11. Spectator behavior is now identical between SP and CS mode. They
    don't activate anything, including teleports. Some maps though
    require teleporting (eg., Icon of Sin map in coop mode). For that
    reason, a "spectator teleport" button has been added. If you press
    it while crossing a teleport line, the teleport works (client-side
    only: nothing gets triggered on the server).
12. Fixed some problems in the automap code; it should now be able to
    handle maps up to 32767 units wide or long.
13. Implemented recursive directory searching for wads. It's activated
    by using 2 slashes at the end of the directory path. For example:
    "-waddir c:\zdaemon" does NOT do recursive searches, while
    "-waddir c:\zdaemon\\" does. Unix servers naturally use forward
    rather than backward slashes.
14. Enabled the server to find bots.cfg in the current directory
    in addition to the zcajun directory.
15. The PCX screenshot format has been replaced by PNG. A nice feature
    of the format is that it supports the specification of the gamma
    value, so the screenshot should look similar to the actual display
    inside the game.
16. Shooting corpses should now be a thing of the past.
17. Fixed a bug where the wrong switch would be lit in online mode. It
    happened when more than 1 switches triggered the same item.
18. Implemented a new client CVAR called "screenshot_scores". If set
    to true, it automatically takes screenshots at the end of games.
19. Added a "motd" client command.
20. Fixed a problem where the server might freeze for a few seconds in
    rare occasions.
21. Got rid of the "tx" and "ty" client CVARs; they are inappropriate
    for a multiplayer environment.
22. No more "Cannot play non-ZDoom demos. (They would go out of sync
    badly.)" messages.
23. Fixed the spectator splashing problem (example: heretic e1m1).
24. Spectators should not be pushed by wind (example: heretic e1m1).
25. Spectators should not grunt when hitting walls or landing on things.
26. The "limitpainelemental" server CVAR imposes a limit of 20 lost
    souls per map. The CVAR now defaults to true (ie., same as classic
    doom) rather than false.
27. Corrected a sprite scaling issue, courtesy of Phenex2.
28. Heretic gauntlet usage could result in a server kick (turbo); same
    idea as the doom chainsaw.
29. Fixed a problem with the color of Heretic KeyGizmos in online mode.
30. "Bullet puffs" (so to speak) were missing in Heretic online mode.
31. The client would get stuck into an infinite loop on connection to a
    heretic server containing dead heretic imps. Fixed.
32. The "zbot" skin name is automatically translated to "zbor" in Heretic
    mode and "zbox" in Hexen mode. All 3 skins are not available to
    players: only to bots.
33. The "You need the XXX key to open this door" message now produces a
    grunt in online mode as well.
34. Fixed the behavior of missiles when they hit Line_Horizon lines.
35. Dormant items should not generate blood spurts or splatter.
36. Water splashes were getting spawned both on the server and the client.
    Fixed.
37. Keys retained by the DF2_KEEP_KEYS dmflag when someone died in coop
    were not shown in the HUD.
38. More bot chatter/taunting courtesy of Adereth.
39. No more "Client output packet overflow" while viewing demos.
40. The client's pickup switch method would get inadvertently modified
    on some unusual conditions (manual map change and player NOT being
   the first on the server). Fixed.
41. Added a -nomsgbox cmd. line parameter to facilitate auto-restarts in
    case of crashes.
42. Blocked the respawning of monsters spawned by ACS or the Icon of Sin
    cube in nightmare mode. That was an old and unresolved doom2.exe bug.
43. No more "attempted server crash" auto-bans.
44. Blue armor is now included in the DF_NO_SUPER dmflag
45. Implemented a server sanity check for teamdamage (0..1)
46. Implemented a server sanity check for air control (0..1)
47. Implemented a server sanity check for gravity (0..1600)
48. Removed the enable_rcon cvar; rcon is enabled only when rcon_password
    is NOT empty.
49. Removed the force_password cvar: it's implied depending on the
    "password" cvar; if "password" is empty, then the server is public.
    If it's not empty, then the server will require a password.
50. Implemented new launcher info packet covering all the functionality
    needed for 1.09 
51. The manual /map command on the server was not saving the bot state,
    so bots added by /addbot on the current map would not spawn on the
    next one.
52. Stopped the auto-scrolling of the zserv32 window when the window
    is not already at the bottom.
53. Sometimes the server would report phantom players to the launcher.
    Should be fixed now.
54. Sometimes the player list on zserv32 was wrong. Fixed.
55. Increased number of map list slots from 36 to 1024.
56. New mapcycle related commands on the server:
       mapskipby <number>: Goes forward/backward in the map list 
       mapskipto <mapname>: Goes forward in the map list
                            to the specified map 
57. Automatically saves the mapcycle index to a file before each map start.
    The file gets deleted on normal exit. If the file is found on startup,
    it means that the program had previously crashed, so it continues the
    map cycle from the map following the one in the saved file.
58. Fixed the server to reduce the "pullback" on the first spawn.
59. The server can accept alternate wads in the place of one or more
    wads. Useful examples are allowing freedoom/freedm rather than
    doom2 (or vice versa), facevox rather than zvox2, etc. This is
    enabled via the "setaltwads" server command (which could reside
    in zserv.cfg). Here is an example:
    setaltwads "doom2=freedoom062=freedm062 zvox2=facevox2=sharkvox"
    This tells zserv that it can accept freedoom062.wad or freedm062.wad
    in place of doom2.wad and it can accept facevox2.wad or sharkvox.wad
    in place of zvox2.wad. Some important points:
      a. For any equivalence to be accepted, one of the wads in the
         equivalence must be already loaded and zserv must be able to
         find the other ones in order to checksum them. This also
         means that either all the wads should reside in the current
         or program directory, or you should use the -waddir cmd. line
         parameter (or the WADDIR env. variable) to tell zserv where
         the wads are.
      b. The entire argument of the setaltwads command must be enclosed
         in double quotes.
      c. When zserv executes this command, it does the above checks
         and sets up the equivalences. It will also display the
         equivalence on the console, so you can be sure if it has been
         accepted or not.
      d. Freedoom and freedm are not frozen like doom2.wad; therefore,
         we *absolutely* need proper versioning in their filenames,
         eg., use something like freedoom062.wad rather than freedoom.wad
         The use of the "unversioned" wad name will lead to chaos from
         the part of the players (what will happen for example if half
         the servers run one version of freedoom, the other half uses
         another version and they all use the same name? how will a
         player be able to play?). Therefore, we will have no other
         option but to block from the master server any zserv using
         the unversioned wad names.
60. The launcher has been upgraded to understand and handle alternate
    wads properly. It will prompt you when a selection has to be made
    and it will remember your choice.
61. Implemented a CTF point system that's based on the one from Q3 
    slightly extended to handle 3- and 4-way CTF. Here is the way
    points are calculated:
       1. +1 point for fragging an enemy player
       2. -1 point for fragging a teammate.
       3. -1 point for committing suicide (environment kills count
          as suicide too) 
       4. +2 points for fragging an enemy carrying your flag.
       5. +1 points for fragging an enemy carrying any other flag
          but yours (applicable to 3- and 4-way games only).
       6. -2 points for fragging a teammate carrying an enemy flag.
       7. +5 points for capturing an enemy flag.
       8. +1 point for returning your flag.
       9. +1 point for assisting a capture by returning your flag and
          your team capturing within 4 seconds.
      10. +2 points for assisting a capture by fragging an enemy
          carrying your flag and your team capturing within 4 seconds. 
      11. +2 points for fragging someone who has recently damaged
          your flag carrier.
      12. +1 point for fragging an enemy player within sight of AND
          near your flag carrier.
      13. +1 point for fragging an enemy player in your base area (as
          determined by a SECTINFO lump).
    The points are added up according to the applicable rules. Suppose
    for example that you frag an opponent carrying your flag and return
    it: you get +1 point from rule #1, +2 points from rule #4 and +1
    point from rule #8: 4 points in total. If the fragging took place
    in your base area, then rule #13 would apply as well, so another
    point would be added.
62. Modified the server to avoid creating the .zdoom directory in the
    user's home directory (unix) and to enable a common convention
    across all O/Ss. All WAD files are searched on the current directory
    first, then on the zserv program directory, then on the directory
    specified by the "-waddir" cmd. line option or the "WADDIR"
    environment variable.
63. cl_maxbodies lower bound goes from 1 to 3.
64. New chat spam defaults: 4 messages per 8 seconds for team modes
    or 10 seconds for non-team modes.
65. New "maplist" command on the client. It prints the server map
    rotation.
66. The "restartemptymap" server cvar has been extended to reset the
    level timer (if one is in effect) when the first player joins.
67. Spectators should not trigger "thing specials" (example: jumppads
    in zdctfmp map10).
68. "New style scoreboard" option removed from options menu. The
    "newscores" CVAR is still there for those who insist.
69. New client CVAR "zd_overridecolors" that lets you override the
    colors you see for your teammates and enemies (in all modes).
    When zd_overridecolors is on, teammates are displayed using
    the "teammate_color" CVAR, and enemies are displayed using the
    "enemy_color" CVAR.
70. Fixed a problem in the handling of the up arrow key in the option
    menus of the client. The menu would appear blank and it could lead
    to a client crash.
71. New "sitrep" CVAR that shows you your teammates names, health,
    armor and location in team modes or coop, or works like a mini
    scores-screen in DM. The report's position can be adjusted by
    the "sitrep_xofs" and "sitrep_yofs" CVARs. There is also a
    "sitrep_fontsize" CVAR that controls the size of the report's
    font (it can range from 0 up to 7: defaults to 1).
72. Fixed various problems with coop spawning, including spawning of
    players above the number of coop starts in the map, spawning 
    under bridge things, blocking of spawn points by other players
    or monsters, etc. If a spawn is blocked by a player or monster,
    they will get telefragged except for the first 5 seconds of
    the level. That should give players enough time to move off the
    spawn points.
73. Related to coop spawning is voodoo doll support. A new dmflag
    (DF2_VOODOO_DOLL = 0x2000000) was added that enables the
    detection of voodoo doll starts as such; this avoids spawning
    real players on the voodoo doll starts. Beware: this is only the
    beginning of voodoo doll support and it's very far from completion.
    So don't expect voodoo dolls to work yet.
74. Fixed an oversight in the team switching server code whereby one
    could get around the maxplayersperteam limit.
75. Implemented map reset, map switch and player kick voting. They
    are controlled by the following server CVARs:
       sv_vote_limit = 3          // # of times someone can call a
                                  //     vote per map
       sv_vote_timeout = 45       // How long the voting will last
                                  //     (in seconds)
       sv_vote_reset = 0          // Enable/disable reset voting
       sv_vote_map = 0            // Enable/disable map voting
       sv_vote_map_percent = 51   // Percentage needed to pass the
                                  //     reset/switch vote
       sv_vote_map_skip = 0       // How many maps must be played before
                                  //     a given map is eligible for
                                  //     voting after it has been played.
       sv_vote_kick = 0           // Enable/disable kick voting
       sv_vote_kick_percent = 75  // Percentage needed to pass the
                                  //     player kick vote
    Player kicking is available only for coop modes. The other forms of
    voting are recommended only on coop or private/LAN or tournament servers.
    The voting is initiated by the "callvote" command on the client. It can
    assume one of the forms:
       callvote reset
       callvote map <mapname>
       callvote kick <playername>
    When someone calls a vote, a notification about the ongoing vote is
    displayed on everyone's HUD. Players can then vote for or against the
    proposal by typing "yes" or "no" on their console or saying "yes" or
    "no" in chat.

    There are 2 other voting related client commands: the "voteinfo" command
    displays the server voting CVARs, while the "maplist" command displays
    the server map rotation (this is useful for issuing a callvote map
    command as you may not know which maps are in the server rotation).

    The position of the voting display on the client can be adjusted by
    the "vote_xofs" and "vote_yofs" CVARs. The "vote_fontsize" CVAR controls
    the font size used for the display; it can range from 0 to 7 and it
    defaults to 1. Finally the "vote_compact" CVAR results in a slightly
    more compact voting display.
76. Introduced a concept of "limited rcon". The server admin can define up
    to 9 different "limited rcon levels". Each level is characterized by a
    different rcon password and a set of commands authorized to issue. Here
    is an applied example: suppose the server admin wants to give limited
    rcon access to a tournament referee. The referee should be able to do
    specific tasks, but he is not supposed to change the server setup, stop,
    restart the server, etc.The server admin could put the following in
    the zserv.cfg file:
       set rcon_pwd_1  "referee"
       set rcon_cmds_1 "mapskipby mapskipto maplist players kick addtempban"
    These 2 lines define "limited rcon level 1", its password and the
    authorized commands. You can define up to 9 such levels (rcon_pwd_1 ...
    rcon_pwd_9) if you have to.
77. Fixed an item respawn bug where the respawn sound and flash occured
    twice in quick succession in c/s mode.
78. Fixed an item respawn bug where a respawned item would appear at a
    different vertical position than where it actually was spawned on
    the server.
79. Made the parsing of MAPINFO lumps more forgiving in terms of unknown
    keywords. When such keywords are encountered, the parsing of mapinfo
    stops and the program continues rather than aborting.
80. Ported ANIMDEFS WARP2 Eternity style flat warping effect from ZDoom
    courtesy of Worst-vd-plas.
81. Implemented air supply support in MAPINFO courtesy of Phenex.
82. Started work on enabling dehacked for heretic/hexen courtesy of
    Worst-vd-plas.
-----------------------------------------------------------------------

7. Point 07 release (June 3, 2008)
-----------------------------------------------------------------------
 1. Fixed a desync in the appearance/spark/sound of respawned items.
 2. Fixed a bug when closing channel tabs in zrc.
 3. The launcher would not properly erase the contents of the death
    column when clicking on a server that didn't show deaths.
 4. Various ZSL fixes as reported in the ZSL readme.
 5. There was a bug in the handling of new connections in zserv; it
    could cause server crashes when the server got full.
 6. The player color override option would sometimes fail: fixed.
-----------------------------------------------------------------------
