Version history/3.2

From Zandronum Wiki
Zandronum 3.2
ZDoom base 2.8pre-441-g458e1b1
GZDoom base 1.8.6
Previous 3.1

Zandronum 3.2 is an upcoming minor update for Zandronum.



  • Added the new AUTHINFO lump, allowing modders to define their own list of lumps to be authenticated. [Kaminsky]
  • Added CVars: "con_interpolate" and "con_speed" which interpolates and controls how fast the console moves. Based on featues from ZCC. [Kaminsky]
  • Added ACS functions: "GetCurrentMapPosition", "GetEventResult", "GetActorSectorLocation", and "ChangeTeamScore". [Kaminsky]
  • Added an optional parameter to the ACS function GetChatMessage to let color codes to stay in chat messages. [Kaminsky]
  • Add the resetmap command and associated vote type. [DrinkyBird]
  • Added new BotScript commands that allow controlling more inputs (e.g. altfire, crouch, and use), and also to execute ACS_ExecuteWithResult. [TDRR]
  • Added the CVar "snd_lockmusic" which prevents any music changes as if a playlist was playing, based on a feature from ZCC. [Kaminsky]
  • Added the CVar "blood_fade_usemaxhealth", which scales the intensity of the blood based on the player's max health instead of a hardcoded health of 100, unless the server wants to force max blood on the screen. [Kaminsky]
  • Added the AAPTR_PLAYER_GETCAMERA constant that returns the actor a player is looking from. [Kaminsky]
  • Added an argument to GAMEEVENT_ACTOR_SPAWNED that indicates if the actor was spawned by the level or not. [Kaminsky]
  • Added the dmflag "sv_donthidestats" to show an enemy player's stats. [DoomJoshuaBoy]
  • Added a new SelfObituary actor property for when a player kills themselves with an actor. This replaces Skulltag's hardcoded self obituaries for the BFG10K and Grenades. [DrinkyBird]
  • Added the DECORATE flags GIVEFISTINGMEDAL and GIVESPAMMEDAL. Projectiles or puffs with these flags will award the player with the "fisting" and "spam" medals respectively upon killing an enemy player. [Kaminsky]
  • Added an option to filter the server list by name within the built-in server browser menu. [Kaminsky]
  • Added the dmflag "sv_dontoverrideplayercolors", which prevents player colors from being overriden. [Kaminsky]
  • Added the EVENT script types for domination: GAMEEVENT_DOMINATION_CONTROL for when a team takes control of a point sector, and GAMEEVENT_DOMINATION_POINT for when a team gets a point for owning a sector. [Kaminsky]
  • Added the CVar "cl_identifymonsters" which allows monsters to be identified with cl_identifytarget. [Kaminsky]
  • Added the CCMD "rcon_logout" so that clients with RCON access may logout if they want to. This also changes the old behaviour where a client who already had RCON access could lose it if they resent the wrong password to the server. [Kaminsky]
  • Added ACS function: "SetGameplaySetting", allowing modders to change gameplay-related CVars on the fly. [Kaminsky]
  • Added "offlineonly" and "onlineonly" options to the game settings feature of the GAMEMODE lump. This allows some CVars to only be configured for offline or online games, or both. [Kaminsky]
  • Added the CVar "sv_distinguishteamchatlines", which distinguishes team chat messages from normal chat messages in the server console/logfile when sv_markchatlines is enabled. [Kaminsky]
  • The server can now broadcast the name of the current game mode (as defined in the GAMEMODE lump) to launchers. [DrinkyBird]


  • Fixed: clients didn't initialize a sector's friction properly in some cases due to a superfluous check that wasn't removed earlier. [Kaminsky]
  • Fixed: the server wouldn't initialize compatflags and compatflags2 properly if entered as command line parameters. [Kaminsky]
  • Fixed: serverinfo CVars entered on the command line were restored in reverse order. [Kaminsky]
  • Fixed: PickActor wouldn't pick actors that were the same species if called by the server. [Kaminsky]
  • Fixed: chat messages sent by the server weren't colorized properly. [Kaminsky]
  • Fixed: restarting the map didn't unfreeze the game properly in online games. [Kaminsky]
  • Fixed: Changing the COUNTKILL flag via A_ChangeFlag didn't update the invasion monster count. [Kaminsky]
  • Fixed: projectiles and bulletpuffs didn't trigger GAMEEVENT_ACTOR_SPAWNED if "ForceSpawnEventScripts" was enabled. [Kaminsky]
  • Fixed: RCON clients still printed two copies of the chat message that they sent. [Kaminsky]
  • Fixed: spectating a morphed player could potentially crash the game. [Kaminsky]
  • Fixed: a player could get stuck in the chasecam in co-op game modes if they respawn when it's disallowed. [Kaminsky]
  • Fixed: PlayerSpeedTrail powerups always used a player's chosen skin even if their current weapon had its own preferred skin. [Kaminsky]
  • Fixed: a player's old body didn't show a weapon's preferred skin when they respawned. [Kaminsky]
  • Fixed: changing cl_skin also changed a player's scale even though P_CheckPlayerSprite already handled the skin's scaling automatically every tick. [Kaminsky]
  • Fixed: clients didn't clear their maplist first when reconnecting to the server via the "map" CCMD. [Kaminsky]
  • Fixed: the server rejected backup weapon select commands that used different weapon network indices but had the same client gametic. [Kaminsky]
  • Fixed: GAMEEVENT_ACTOR_DAMAGED didn't trigger when the player took poison damage. [Kaminsky]
  • Fixed: GetMapRotationInfo now always returns zero (or an empty string) if the maplist is empty, the map position's level info is invalid, or if the current map position isn't the current level. [Kaminsky]
  • Fix a crash with the Hexen Firestorm weapon projectiles caused by a compiler misoptimization on Linux architecture. [Edward-san]
  • Fixed: players appeared jittery when standing on lifts moving downward in online games. [Kaminsky]
  • Fixed: players couldn't spy on enemy bots in offline deathmatch games like they could in 3.0 anymore. [Kaminsky]
  • Fixed: the player's view didn't revert back to itself if they were spying on an enemy player when lms_spectatorview was disabled. [Kaminsky]
  • Fixed: clients could give players more health when they weren't allowed to know their actual health. [Kaminsky]
  • Fixed: Player.DamageScreenColor didn't work properly in online games if it used a specific damage type. [Kaminsky]
  • Fixed: CCMDs that came after a "wait" CCMD were always flagged as unsafe and couldn't be executed.
  • Fixed: events triggered in the middle of another event could override the result value of the latter. [Kaminsky]
  • Fixed: fast projectiles didn't reward players with an accuracy or precision medal. [Kaminsky]
  • Fixed: medal icons drawn on the screen didn't fade out properly. [Kaminsky]
  • Fixed: PLAYERINFO_TEAM didn't return 255 if the player wasn't on team like it does in GZDoom. [Kaminsky]
  • Fixed: unlagged would also reconcile for bots, causing them to miss shots in online games. [Kaminsky]
  • Fixed: the 64-bit Windows build would never produce a crash report.
  • Fixed: The random class was still selectable in the join menu when NoRandomPlayerClass was enabled in MAPINFO. [DrinkyBird]
  • Fixed: when a player joined a new team in online games, the health and armor of their new teammates weren't updated. [Kaminsky]
  • Fixed: clients sometimes invalidated "nextmap" or "nextsecret" vote types despite the vote successfully being called on the server's end. [Kaminsky]
  • Fixed: A_Saw did not consume ammo properly online. [Kaminsky]
  • Fixed: the built-in server browser was broken since 3.1 due to the "unsafe command restart" error. This adds an extra prompt message before the user can join a server. [Kaminsky]
  • Fixed: dead players and spectators in the join queue did not respawn at the start of a new wave in survival invasion. [Kaminsky]
  • Fixed: The countdown screen in invasion did not show the correct wave after the level changed. [Kaminsky]
  • Fixed: trailing color codes weren't being removed properly from chat strings. [Kaminsky]
  • Fixed: a player's class could still change if they were still alive when travelling from one map to the next in cooperative. [Kaminsky]
  • Fixed: players could still respawn (albeit frozen) during the result sequence if sv_forcerespawn was on. [Kaminsky]
  • Fixed: puffs didn't enter their XDeath states in online games. [Kaminsky]
  • Fixed: spawning game mode artifacts like the possession stone and terminator ball didn't correctly account for useplayerstartz. [Kaminsky]
  • Fixed: cl_telespy still teleported a spectator when they were already looking through their own eyes. [Kaminsky]
  • Fixed: rail attacks didn't always account for sv_shootthroughallies. [Kaminsky]
  • Fixed: players didn't receive keys that were already found if respawning with a different class while sv_sharekeys was enabled. [Kaminsky]
  • Fixed: cl_medals also affected the server and could prevent players from earning any medals if disabled. [Kaminsky]
  • Fixed: the server didn't always update the correct flagset (e.g. dmflags, compatflags, lmsspectatorsettings) to the clients. [Kaminsky]
  • Fixed: the server would still print which flags have changed for lmsallowedweapons when the current game mode wasn't (T)LMS. [Kaminsky]
  • Fixed: Every client's ping would be stuck at zero on a Linux server that was running for more than 24 consecutive days. [Kaminsky]
  • Fixed: when the server printed a list of flags that were changed, it didn't check if a flag CVar existed first before incrementing the number of flags changed (e.g. "dmflags2 1" doesn't enable any flags because no flag CVar occupies the first bit of dmflags2). [Kaminsky]
  • Fixed: sv_markchatlines printed chat lines with two timestamps if sv_logfiletimestamp was enabled. [Kaminsky]
  • Fixed: players still respawned inside sectors with extended damage types if sv_samespawnspot was enabled. [Kaminsky]
  • Fixed: the Doomsphere mugshot graphics were missing in zandronum.pk3. [Kaminsky]
  • Fixed: a player's flash state wasn't removed when they turned into a spectator. [Kaminsky]
  • Fixed: the "ready to respawn in..." message could appear even when compat_instantrespawn was enabled in online games. [Kaminsky]
  • Fixed: clients that weren't fully connected to the server still triggered DISCONNECT scripts if they were kicked because of an error. [Kaminsky]
  • Fixed: the localhost couldn't successfully join the server through the server console window if it was forcing a connect or join password. [Kaminsky]
  • Fixed: local CVars defined in CVARINFO were never saved in the user's config file. [Kaminsky]
  • Fixed: players didn't drop important items like flags, skulls, etc. when they respawned using SetPlayerClass. [Kaminsky]

Other changes

  • The result value of GAMEEVENT_MEDALS event scripts can now be used to determine whether or not the player receives the medal. [Kaminsky]
  • GAMEMODE flags are now validated after all GAMEMODE lumps have been parsed instead of after each one. The internal game mode name (e.g. "TeamLMS") is now printed with the error message instead of the actual name. [Kaminsky]
  • Added an extra check to ensure that game modes have a (short) name. [Kaminsky]
  • Restrict broadcasted net commands to clients who already have the full update. [Torr Samaho]
  • "wait 0" is now acceptable and will properly wait one tic. This is because the wait CCMD was always off by one tic, meaning that "wait" or "wait 1" actually delayed a command by 2 tics. [Kaminsky]
  • Changed "sv_respawndelaytime" into a float. It's now possible to set respawn times that are below one second. [Kaminsky]
  • The "ready to respawn in..." message now always appears if a player can respawn, which can be disabled with the CVar "r_drawrespawnstring". [Kaminsky]
  • The server now updates a spectator's lagging status to all clients and the mini lag icon on the scoreboard now shows for spectators. [Kaminsky]
  • By default, the join queue is no longer cleared between levels for all game modes like in duel. The old behaviour can be restored by enabling the new dmflag "sv_dontkeepjoinqueue" which also works in duel. [Kaminsky]
  • Unlagged now restores a player's old height when reconciling them. [Kaminsky]
  • sv_hostname is now cleaned up so that any unacceptable characters and trailing crap are removed. Also, it's now limited to a maximum length of 160 characters to avoid incredibly long server names. [Kaminsky]
  • The "fisting" medal is now only awarded if the player frags another player with a melee hitscan attack, or with a projectile or puff that awards the medal, as it should be. [Kaminsky]
  • The "spam" medal is now only awarded if the player frags another player with a projectile or puff that awards the medal, as it should be. [Kaminsky]
  • Blacklisted the connect, disconnect, reconnect, and restart CCMDs from ConsoleCommand. [Kaminsky]
  • gl_texture is now forced to be true when sv_forcevideodefaults is true. [Kaminsky]
  • cl_identifytarget now prints "ally" if the target is a teammate of the player being spied on, instead of the local player. Also, it now always prints a player's skin with their current class, if unmorphed. If cl_skins is 0, then the skin is always printed as "base" instead. [Kaminsky]
  • The GAMEMODE lump now accepts a wider range of gameplay-related CVars that aren't limited to flags. Strictly speaking, any CVars with the CVAR_GAMEPLAYSETTING bit, or any flags whose flagset has the CVAR_GAMEPLAYFLAGSET (previously named CVAR_GAMEMODELOCK) bit. [Kaminsky]
  • The "maplist" CCMD now also prints "current" or "used" alongside green or red text for map entries that are currently being played or used. This change is particularly useful for consoles or logfiles that strip color codes and couldn't show the colored text. [Kaminsky]
  • Zandronum is now marked as DPI-aware on Windows, which prevents issues caused by the operating system automatically upscaling the game window on high-DPI displays. [DrinkyBird]
  • The output of the dumptrafficmeasure CCMD is now sorted by the bandwidth used in ascending order. This can be changed to descending order by specifying "desc" as the first parameter. [DrinkyBird]

Beta builds