Software Change Log

1.06 → 1.07 changes
             Changelog for the ZDaemon 1.06 -> 1.07 transition

1. Point 01 release (May 8, 2004)
 1. Fixed a problem in the win32 version of the server where the admin
    could not change the dmflags/dmflags2 values from the GUI.
 2. Fixed a server problem where a player's disconnection was not
    "clean" if he was kicked out of the game for any reason.
 3. Fixed a server problem where the red/blue keycards would not work
    properly in coop mode; the bug was introduced by the CTF code.
 4. Fixed a server problem where it would kick people out upon
    connection with a turbo message.
 5. Improved a bit the display of the "players" command on the
    server to show the IP address of each player.
 6. Fixed a minor server bug introduced by the CTF mode where the key
    cards would appear in DM mode (it was actually harmless).
 7. Fixed a server problem where the keycards appeared in Team DM mode
    (they shouldn't), they couldn't be picked up (as if the player had
    them already) but they didn't work (as if he didn't have them).
 8. Fixed the speedcheck problem on the server.
 9. Closed a security hole where some special packets could crash
    the server.
10. Removed some server memory leaks that would happen on each player
11. Cleaned up a bit the server net code.
12. Fixed an "SZ_GetSpace: overflow" message that would sometimes
    appear on the server; it would cause some packets to get lost.
13. Removed the MessageBox() function calls from the Win32 GUI version
    of the server to facilitate automatic restarts.
14. Improved the "thing" spawning algorithm to considerably decrease
    the CPU consumption of the server.

2. Point 02 release (June 3, 2004)
 1. Added some precautions in the server to avoid experience counting
    when bots are present during a game and also disabled the logging of
    frags in the frag and weapon logs when either the killer or the
    victim is a bot.

3. Point 03 release (July 4, 2004)
 1. Added some code in the server to detect a rare condition when its
    internal clock is going haywire. This can result in a DDOS to the
    master. If this happens, the server appends an entry to the 
    "zserv.crashlog" file and crashes (intentionally). In most cases,
    it will be automatically restarted by the usual zserv monitoring
    scripts run by server admins.
 2. If the master_advertise flag is on, the server enforces a chat
    spam limit of 3 messages per 10 seconds.
 3. The "SZ_GetSpace: overflow" sometimes still appears on the server;
    added more checks to avoid it.

4. Point 04 release (July 15, 2004)
 1. Improved the net code in terms of CPU efficiency.
 2. Fixed the crashes of the win32 version of the server (thx a million
 3. Fixed the log problem with the L@P servers.
 4. Forced the default directory in zsmon to be the one containing the
 5. New dmflags2 for Preferred Weapon Order and Display of target names.
 6. The server determines the country of each player and transmits it
    to the launcher and client.
 7. Implemented a global ban list without going through the file system.
 8. Added a ban refresh command that will be accepted only if sent by
    the master.
 9. Decoupled most loops in the server from the MAXPLAYERS compile time
    constant. The loops now go from 0 up to the last client which should
    result in lower cpu usage; another result is that it will be quite
    easier to increase MAXPLAYERS without worrying as much about cpu

5. Point 05 release (July 27, 2004)
 1. Added a "minplayers" variable in zserv.cfg; it forces bots to
    be automatically added / removed as humans join / disconnect
    in order to maintain a minimum desired number of players.
 2. Added a "removebotswhenhumans" variable in zserv.cfg; it applies
    when minplayers>2 and a second human enters the game; in that case,
    if "removebotswhenhumans" is greater than zero, then all bots get
    removed automatically. If "removebotswhenhumans" is zero, then the
    normal meaning of "minplayers" is effective.
 3. Added an "nbots" cmd. line parameter for desired number of bots.
 4. Fixed an old bot bug: if the last added bot had an id of zero (eg.,
    if you added a bot to the server and then someone connected), then
    the bot would not move at all. Also enabled bots to view all around
    (all the time) to make them a bit tougher. THIS MUST BE DONE ON THE
 5. Added a watchdog thread on the server to detect infinite loops; if
    such a condition is detected, the server appends an entry to the
    "zserv.crashlog" file and crashes (intentionally). In most cases,
    it will be automatically restarted by the usual zserv monitoring
    scripts run by server admins.
 6. Fixed an old connection bug that would manifest itself when bots
    were present on the server. It would screw up the connection and
    then many weird things could happen (eg., server crash, the player
    appearing as a bot,  a no camera problem, etc.)
 7. Fixed another bug where spectators disabled certain spawn points
    when the "respawn farthest" dmflag was used. THIS MUST BE DONE ON THE
 8. Fixed a bug in the coop respawn algorithm.  THIS MUST BE DONE ON THE
 9. Avoid spawning decals and splashes on the server; they are useless,
    slow the server down and produce memory leaks.
10. Improved the network handling of non-moving things.
11. Improved the both roaming by making them ignore items they already 
    have (eg., weapons/armor/health). THIS MUST BE DONE ON THE CLIENT
12. Improved the respawn farthest policy: there is a new cvar in zserv.cfg
    called "farthestalpha". It can range between -100 and +100, with +100
    being the default. It introduces a controled amount of randomness
    into the farthest selection policy. If it's equal to -100, then the
    respawn selection if completely random (identical to not using
    farthest respawn). If it's equal to +100, then the respawn selection
    is completely non-random: it will always use the farthest respawn point
    (identical to what we've been using so far). Values in-between those
    two extremes let us finetune the desired amount of randomness. THIS MUST
13. Added bot chat and taunts; bots talk on the following events:
      1. Entry
      2. End of level and they're at first place
      3. End of level and they're at the bottom
      4. End of level and they're in the middle
      5. When they frag someone
    For each event there is a probability of talking (so they will not
    talk for example on each frag), as well as a fairly large set of
    strings from which they choose at random. Right now all this stuff
    is hardcoded; later, we'll place this info into the bots.cfg file
    for better bot customization. THIS MUST BE DONE ON THE CLIENT TOO FOR

6. Point 06 release (August 1, 2004)
 1. Added 2 new events for bot chat:
     1. Suicide
     2. Death by BFG
 2. Enabled the chat probabilities to be adjustable from bots.cfg.
 3. Also enabled a "global section" inside bots.cfg for values that should
    apply by default to all bots in the file. Simply specify the desired
    attribute in the beginning of the file outside of any braces ( { } ).
 4. Fixed a small bug about lead tracking when bots enter / leave.
 5. Fixed a no-camera problem on the client when a spied upon bot
    was removed.

7. Point 07 release (August 15, 2004)
 1. Updated the country database in the server
 2. Fixed a problem on the server where it would not fetch the ban list
    under certain (rare) circumstances.

8. Point 08 release (November 28, 2004)
 1. Updated the country database in the server
 2. Fixed a problem where the server would not fetch the global
    ban list if it grew beyond 1500 bytes.
 3. After lots of testing, settled for a default value of 10 for
    the farthestalpha cvar.
 4. Fixed the freelook problem (centerview command was hosed)
 5. Fixed various compatibility problems on the server to compile under
    gcc 3.4
 6. Added the display of rank / spread info on the client; also added an
    option to turn the display on/off.
 7. The client now keeps accurate track about who is a bot and who is
    human. It also avoids displaying ping values for bots on the scores
 8. Extended the chat_block/chat_unblock/chat_toggle commands to accept
    a new parameter ("bots"). So you can type for example:
          chat_block bots
    to turn off all bot chatter.
 9. Added an option to display bots using a different skin; this is useful
    for mixed bots/humans games. For now, this requires some support from
    the server side as well (as the bot skin is in the file zbot1.wad);
    when 1.07 is out, we'll put the skin inside zdaemon.wad
10. Fixed an old problem with blinking player skins if someone was using
    a skin and you had turned off the "client skins" option. The fix also
    reduces the CPU utization on the client.
11. Added the display of the time and score limits on the scores screen
    for DM games.
12. The server now avoids sending a teleport spawn when someone connects
    (and is a spectator); the client now detects this case and plays the
    admin/chat sound.
13. Fixed the camera problem when viewing demos and the watched player
    is fragged.
14. Fixed another demo viewing / spying problem with respect to multi-
    kill and spreee messages. They are now displayed properly according
    to the player that you're watching at the moment.
15. Fixed a problem where any entries in a WAD were placed into a 
    separate namespace (and effectively disabled) if there was a skin
    inside the WAD.

7. 1.07rc1 release (June 9, 2005)
Far too many to list. Many OS improvements by Dash, other bug fixes
by Danni and Kilgore, LAN advertizing, etc.

8. 1.07rc2 release (July 7, 2005)
 1. Brought back the old scoreboards (with an option to use them)
 2. Added a DMFLAG about OS Vertical (Z) movement.
 3. Fixed a server problem about the player position update
    frequency; it made the game quite choppy.
 4. Fixed a width problem in the heretic menus.
 5. Added an option to show remaining time on the main screen.
 6. Minor adjustment to the OS speed
 7. Added an optional background to the new scoreboards. The
    brightness and opacity of the background are user-adjustable.
 8. Fixed a problem with the rank/spread info overlapping the
    HUD in some cases.
 9. Got rid of the "hud_scale" cvar. The "st_scale" (scale status
    bar) cvar is now used for that. The advantage is that you can
    scale both status bar and HUD with a single cvar and there is
    already a GUI for that.
10. The rank/spread info now obeys the st_scale cvar so it fits
    better (visually) with the rest of the HUD.
11. Fixed the railgun firing in client/server mode.
12. Removed the "-host", "-join", "-net", "-dup", "extratick"
    command line params. from the client. They are ZDoom specific;
    they don't apply to ZDaemon.
13. Expanded the "Silent weapon pickup" DMFLAG; now it is
    "Silent weapon/item pickup". As such, any health, armor,
    ammo, etc. pickups by player X are not heard by player Y
    when this flag is on.
14. Blocked the "noise" command in client/server mode. Also made
    sure "movebob" and "stillbob" range from 0 up to 0.25 in client/
    server mode.
15. Extended the "Respawn super" DMFLAG to cover all 4 spheres;
    not just Invulnerability and Invisibility.
16. Added a new DMFLAG to block the spawning of the spheres.
17. Added a new DMFLAG to disable crosshairs.
18. Enabled the Team DM mode to use teamstarts if available in 
    the map. If no teamstarts are in the map, then dmstarts are
    used (which means that we can still use any DM map for TDM).
    A similar thing applies to CTF; if for example there are
    no teamstarts in the map, then dmstarts will be used.
19. Added logic to avoid flag spawning unless valid for the given
    mode and maxteams. This means that we can use CTF maps for TDM
    too, or 4-team CTF maps for 2-team CTF, etc.
20. Made the new CTF map convention the "standard" one; added
    a new DMFLAG to enable backwards compatibility with the
    method we used in 1.06. This should give map authors
    enough time to convert the maps to the new standard. This
    compatibility flag is deprecated and will be removed after
    some time (most probably in 1.08).
21. In team modes, spectators can/will use any teamstart or
    dmstart; this means that CTF map authors don't have to include
    both kinds of starts in the map.
22. Improved compatibility with ST CTF maps; several ST-specific
    items are automatically converted to standard ones (eg.,
    minigun -> chaingun,  BFG10K -> BFG9000, etc). The conversion
    is (and cannot be) perfect; it's mostly an aid to map authors
    and developers.
23. Added a DMFLAG about spawning cards/keys in team modes; when
    it's on, the cards/keys spawn in the map and the players do
    NOT have any cards/keys automatically.
24. Added a DMFLAG to automatically give cards/keys to players
    in team modes according to their team. The correspondence is:
       red team   -> red card
       blue team  -> blue card
       green team -> red skullkey
       white team -> blue skullkey
    When this DMFLAG is on, all team players get the appropriate
    key/card on spawn, and the above 4 cards / keys do NOT
    spawn in the map. This means that the map authors can
    designate several areas as available only to members of a
    specific team. The map author can also use the yellow card
    or key; they will spawn normally in the map and they will
    be there for the taking by any team member.
25. Launcher: gold->white team
26. Launcher: new dmflags etc in sp launcher
27. Launcher: adjustment of OS definition for the golden bullets
28. Launcher: added support for Freedoom and FreeDM for SP and demos.
29. The program now adjusts the plasma radius depending on the OS
    Speed dmflag
30. New connection sound (thx to Mogul)
31. Added volume control for chat and team chat
32. zsadm: added system status command.
33. java applet: maxteams in ctf, no fraglimit in coop or ctf, support
    for more iwads,  maxplayersperteam, minplayers, master_advertise,
    removebotswhenhumans, autoreset, speed_check, new dmflags,
    numeric flags.
34. Added Chiphead's rcon fix
35. Fixed a bug with the mousewheel allowing faster than normal
    weapon switching.
36. Added a "switchtoempty" cvar to allow switching to empty weapon
37. Implemented Preferred Weapon Order (PWO) (thx to Jtoxification)
    The "neverswitchonpickup" cvar has been replaced by a new cvar
    called "pickup_switch_method". It can be zero (always switch as
    in normal doom), one (never switch), or two (switch according to
    the PWO).
38. Added "getpwo" and "setpwo" console commands to facilitate the
    adjustment of PWO from macros.
39. Added a "nextprevpwo" cvar that determines whether the PWO applies
    to the "weapnext" and "weapprev" commands.
40. Added an OS weapon switching DMFLAG that disables neverswitch
    and PWO, and enables switching to empty.
41. Added a "weapbest" command that switches scans the weapons you have
    and switches to the one with the highest priority.

1.07 release (July 11, 2005)
 1. Restored the "Respawn super" DMFLAG to its traditional meaning in
    order to avoid disturbing OS rules. The importance of the dmflag
    is not that high anyway (for non-OS setups), since we have the other
    dmflag that blocks all spheres from spawning in the first place.
 2. The program now obeys the dehacked MaxHealth statement (thx to
 3. Fixed a problem with playing 1.06 CTF demos; the program now turns
    on the CTF compatibility dmflag automatically when playing such demos.
 4. Fixed a problem with teleport fog and sound missing sometimes
    upon respawn.
 5. Fixed a problem in the server autoresetting logic when a spectator
 6. Fixed a bug in the enforcement of the pickup_switch_method.
 7. Improved the PWO dialog; when you change a weapon, the weapons
    selected above it are not affected (ie., you're allowed to select
    a weapon only from those under the given weapon). This simplifies
    the weapon selection a lot: you simply start from the top and move
    your way down.