Version history/3.2: Difference between revisions

From Zandronum Wiki
(Update to 230709-1914)
Tag: Source edit
(Update changelog)
Tag: Source edit
 
(19 intermediate revisions by the same user not shown)
Line 11: Line 11:
==Changes==
==Changes==
===Additions===
===Additions===
*Added the new AUTHINFO lump, allowing modders to define their own list of lumps to be authenticated. [Kaminsky]
* Added the new [[AUTHINFO]] lump, allowing modders to define their own list of lumps to be authenticated. [Kaminsky]
*Revamped the scoreboard, and added the new SCORINFO lump that allows full customization of the scoreboard. [Kaminsky]
* Revamped the scoreboard, and added the new [[SCORINFO]] lump that allows full customization of the scoreboard. [Kaminsky]
*Added CVars: "con_interpolate" and "con_speed" which interpolates and controls how fast the console moves. Based on featues from ZCC. [Kaminsky]
* Added support for custom vote types using the new [[VOTEINFO]] lump. [Dusk]
*Added ACS functions: "GetCurrentMapPosition", "GetEventResult", "GetActorSectorLocation", and "ChangeTeamScore". [Kaminsky]
* Added support for voice chat. Audio is encoded and decoded using Opus, allowing it to be transmitted over the network with minimal bandwidth usage and decent quality. Any unwanted noise in the audio is also removed with RNNoise before it's sent to the server. [Kaminsky]
*Added an optional parameter to the ACS function GetChatMessage to let color codes to stay in chat messages. [Kaminsky]
* Generalized the medal system and added the new [[MEDALDEF]] lump to define custom medals. Players can be awarded medals using the ACS and DECORATE functions: "[[GivePlayerMedal]]" and "[[A_GivePlayerMedal]]". [Kaminsky]
*Add the resetmap command and associated vote type. [DrinkyBird]
* Added the +NOMORPHLIMITATIONS flag, allowing morphs to switch weapons, play sounds, and be affected by speed powerups. [geNia/Binary]
*Added new BotScript commands that allow controlling more inputs (e.g. altfire, crouch, and use), and also to execute ACS_ExecuteWithResult. [TDRR]
* Added CVars: "con_interpolate" and "con_speed" which interpolates and controls how fast the console moves. Based on featues from ZCC. [Kaminsky]
*Added the CVar "snd_lockmusic" which prevents any music changes as if a playlist was playing, based on a feature from ZCC. [Kaminsky]
* Added ACS functions: "[[GetCurrentMapPosition]]", "[[GetEventResult]]", "[[GetActorSectorLocation]]", and "[[ChangeTeamScore]]". [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 an optional parameter to the ACS function [[GetChatMessage]] to let color codes to stay in chat messages. [Kaminsky]
*Added the AAPTR_PLAYER_GETCAMERA constant that returns the actor a player is looking from. [Kaminsky]
* Add the resetmap command and associated vote type. [Sean]
*Added an argument to GAMEEVENT_ACTOR_SPAWNED that indicates if the actor was spawned by the level or not. [Kaminsky]
* Added new BotScript commands that allow controlling more inputs (e.g. altfire, crouch, and use), and also to execute {{zdoomwiki|ACS_ExecuteWithResult}}. [TDRR]
*Added the dmflag "sv_donthidestats" to show an enemy player's stats. [DoomJoshuaBoy]
* Added the CVar "snd_lockmusic" which prevents any music changes as if a playlist was playing, based on a feature from ZCC. [Kaminsky]
*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 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 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 the AAPTR_PLAYER_GETCAMERA constant that returns the actor a player is looking from. [Kaminsky]
*Added an option to filter the server list by name within the built-in server browser menu. [Kaminsky]
* Added an argument to [[EVENT scripts|GAMEEVENT_ACTOR_SPAWNED]] representing a bitfield that indicates how the actor was spawned. [Kaminsky]
*Added the dmflag "sv_dontoverrideplayercolors", which prevents player colors from being overriden. [Kaminsky]
* Added the [[DMFlags|dmflag]] "sv_donthidestats" to show an enemy player's stats. [DoomJoshuaBoy]
*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 a new [[DECORATE#Actor properties|SelfObituary]] actor property for when a player kills themselves with an actor. This replaces Skulltag's hardcoded self obituaries for the BFG10K and Grenades. [Sean]
*Added the CVar "cl_identifymonsters" which allows monsters to be identified with cl_identifytarget. [Kaminsky]
* Added the DECORATE flags [[DECORATE#Behaviour|GIVEFISTINGMEDAL]] and [[DECORATE#Behaviour|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 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 an option to filter the server list by name within the built-in server browser menu. [Kaminsky]
*Added ACS function: "SetGameplaySetting", allowing modders to change gameplay-related CVars on the fly. [Kaminsky]
* Added the [[DMFlags|dmflag]] "sv_dontoverrideplayercolors", which prevents player colors from being overriden. [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 [[EVENT scripts|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 "sv_distinguishteamchatlines", which distinguishes team chat messages from normal chat messages in the server console/logfile when sv_markchatlines is enabled. [Kaminsky]
* Added the CVar "cl_identifymonsters" which allows monsters to be identified with cl_identifytarget. [Kaminsky]
*The server can now broadcast the name of the current game mode (as defined in the GAMEMODE lump) to launchers. [DrinkyBird]
* 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 a segmented version of the launcher protocol, which allows splitting responses across multiple packets, avoiding network issues that arise when packets reach large sizes. [DrinkyBird]
* Added ACS function: "[[SetGameplaySetting]]", allowing modders to change gameplay-related CVars on the fly. [Kaminsky]
*Added an optional parameter to the "ignore" and "ignore_idx" CCMDs that allows servers to specify a reason for muting a client, based on Janko Knezevic's patch. [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 ACS functions that provide lump reading capabilities: "LumpOpen", "LumpReadChar", "LumpReadShort", "LumpReadInt", "LumpReadString", and "LumpSize". [TDRR]
* 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. [Sean]
* Added a segmented version of the launcher protocol, which allows splitting responses across multiple packets, avoiding network issues that arise when packets reach large sizes. [Sean]
* Added an optional parameter to the "ignore" and "ignore_idx" CCMDs that allows servers to specify a reason for muting a client, based on Janko Knezevic's patch. [Kaminsky]
* Added ACS functions that provide lump reading capabilities: "[[LumpOpen]]", "[[LumpReadChar]]", "[[LumpReadShort]]", "[[LumpReadInt]]", "[[LumpReadString]]", and "[[LumpSize]]". [TDRR]
* Added the forcerename and forcerename_idx [[Console commands|CCMDs]], which forcibly change a player's name to a random generic one. [Sean]
* Added the GAMEEVENT_PLAYERLEAVESSERVER [[EVENT scripts|EVENT script]] type, which fires when a player disconnects from the server. [Sean]
* Added the [[DMFlags|dmflag]] "sv_nospawntelefog", preventing teleport fog from spawning when a player does. [Kaminsky]
* Added ACS functions: "[[AddBot]]" and "[[RemoveBot]]", to add or remove bots from the game. [Kaminsky]
* The authentication mechanism for non-map related lumps now allows Freedoom 0.12.x and 0.13.0/Doom clients to join Doom/Freedoom 0.12.x and 0.13.0 servers. [Sean]
* Added ACS functions: "[[OpenMenu]]" and "[[CloseMenu]]", to open or close menus defined in MENUDEF. [Kaminsky]
* Added the [[BanFromGame]] ACS function, allowing mods to give timed bans to players up to whatever the CVar "sv_maxacsbanduration" allows. A value of zero means that the server forbids use of the function. [Binary/Kaminsky]
* Added ACS function: "[[GetPlayerStatus]]", which returns a bitfield of all the player's statuses (i.e. typing a chat message, talking on the microphone, in the console/menu, or lagging). [Kaminsky]
* Added ACS function: "[[SetPlayerWeaponZoomFactor]]" from Q-Zandronum, the ACS-equivalent to the A_ZoomFactor DECORATE function. [Kaminsky]
* Added SwayStyle, ViewSwaySpeed, ViewPitchStyle, and ViewPitchOffset [[DECORATE#Actor properties|properties]] for DECORATE weapons. [StrikerTheHedgefox]
* Added ACS functions: "[[SetPlayerSkin]]" (from Q-Zandronum) and "GetPlayerSkin", to change or retrieve the name of a player's skin. [Kaminsky]
* Added client-server netcode for Strife conversations. [Sean]
* Added ACS function: "[[GetPlayerCountry]]", to return the alpha-2 or alpha-3 code, or full name, of the country a player's connecting from. This also respects a player's choice to hide their country. [Kaminsky]
* Added the CVars "cl_motionswayspeed" and "cl_jumpswayspeed" (and MotionSwaySpeed and JumpSwaySpeed DECORATE weapon properties), to add additional sway to a player's weapon when they move, crouch, or jump up or down. [Kaminsky]
* Added the CVars "cl_stillbobspeed" and "cl_stillbobrange" (and StillBobSpeed and StillBobRange DECORATE weapon properties), to also bob the weapon up and down while the player stands still. [Kaminsky]
* Added the CVar "cl_spectatorsource", which enables source-engine like noclipping that allows spectators to pass through floors and ceilings. Based on the "zcc_spectsource" feature from ZCC. [Kaminsky]
* Added a new flag to lmsspectatorsettings: "lms_spectatorvoicechat", to decide if spectators can talk with live players while a game's in progress. [Kaminsky]
* Added event [[EVENT scripts#Script types|GAMEEVENT_LEVEL_INIT]], which executes early in map initialization, before things are spawned, OPEN scripts executed, etc. [StrikerTheHedgefox]
* Added [[A_ClientsideACSExecute]] which allows non-clientside actors to execute clientside scripts from within actor states, without using any network traffic. Useful for per-client effects. [StrikerTheHedgefox]
* Added ACS function: "[[SetNextMapPosition]]", to change what the next entry in the map rotation will be. [Kaminsky]
* Added the enemy icon back and added the CVars "cl_showallyicon" and "cl_showenemyicon" to control when the ally/enemy icons appear. [Kaminsky]
* Added the PLAYERSEARNMEDALS game mode flag, offering more control over which game modes the players earn medals in. [Kaminsky]
* Added the dmflags "sv_noallyicons" and "sv_noenemyicons", preventing ally or enemy icons from appearing over a player's head respectively. [Kaminsky]
* Added the CVar "cl_autologin", allowing clients to automatically log into their default account upon connecting to a server (Windows only). [Kaminsky]
* Added the CVar "sv_respawninsurvivalinvasion" to allow (dead) spectators to spawn at the start of a new wave in survival invasion. This partially restores the old behaviour of not allowing anyone to respawn until all waves are finished or all players are dead, which was broken since 3.1. [Kaminsky]
* Added the CVar "cl_showscoreleft", which if disabled will turn "x things left" messages on the scoreboard into "x things to win" and show the current score limit instead of how much is left to win. This only affects frags, points, and wins. [Kaminsky]
* Added ACS functions: "[[GetPlayerJoinQueuePosition]]" and "[[SkipJoinQueue]]", to return the player's position in the join queue and allow true spectators in the join queue to join the game outside of normal game mode rules. Modders can also take advantage of the new [[EVENT scripts#Script types|GAMEEVENT_JOINQUEUECHANGED]] EVENT script type to know when players are added or removed from the join queue. [Kaminsky]
* Added over a hundred new text colors recently made by Fuzzball. [Kaminsky]


===Fixes===
===Fixes===
*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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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]
* 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]
* 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 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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 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: The random class was still selectable in the join menu when NoRandomPlayerClass was enabled in MAPINFO. [Sean]
*Fixed: when a player joined a new team in online games, the health and armor of their new teammates weren't updated. [Kaminsky]
* 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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]
* Fixed: players didn't drop important items like flags, skulls, etc. when they respawned using SetPlayerClass. [Kaminsky]
*Fixed: stealth monsters didn't reveal themselves in online games when they took damage or died. [Kaminsky]
* Fixed: stealth monsters didn't reveal themselves in online games when they took damage or died. [Kaminsky]
*Fixed: backslashes were not being included in chat messages correctly. [Kaminsky]
* Fixed: backslashes were not being included in chat messages correctly. [Kaminsky]
*Fixed: flags in CTF could be captured after the round was over. [auratoostronk]
* Fixed: flags in CTF could be captured after the round was over. [auratoostronk]
* Fixed: opening the text scaling menu sometimes changed the user's con_virtualwidth and/or con_virtualheight CVars when it shouldn't. [Kaminsky]
* Fixed: the coop info wasn't getting drawn in clientside demos. [Kaminsky]
* Fixed: Floatbob items having incorrect z-height after a map reset and glitchy GL floor clipping (addresses {{issue|2361}}). [Ru5tK1ng]
* Fixed: Monsters spawned by BossBrain cubes would move before being spawned on the clients therefore triggering warning messages (addresses {{issue|2655}}). [Ru5tK1ng]
* Fixed: Cleric's CircleFlame projectile did not rotate properly online (addresses {{issue|2101}}). [Ru5tK1ng]
* Fixed: Fighter's flechettes weren't working properly online (addresses {{issue|796}}, {{issue|2948}} and {{issue|2949}}). [Ru5tK1ng]
* Fixed: Porkalator and Morph Ovum couldn't spawn bloodsplatter actors online (addresses {{issue|3007}}). [Ru5tK1ng]
* Fixed: P_CheckMissileSpawn would instruct clients to explode a missile they hadn't spawn in yet (addresses {{issue|4186}}). [Ru5tK1ng]
* Fixed: Clients tried to destroy pillars twice which would cause out of sequence errors between building and destroying them (addresses {{issue|2946}}). [Ru5tK1ng]
* Fixed: ShareKeys was not working properly with dehacked keys, with puzzle items, in hubs and would ignore losekeys when maps didn't reset in survival (addresses {{issue|4183}}). [Ru5tK1ng]
* Fixed: Enter scripts would stack repeatedly in hubs each time a map was visted and exited causing multiple instances of the script(s) (addresses {{issue|2977}}). [Ru5tK1ng]
* Fixed: a player with an incredibly long name that won the game after the timer expired could crash the game. [Kaminsky]
* Fixed: STRFTIME would crash Zandronum if a negative was passed into the first argument (addresses {{issue|4144}}). [Ru5tK1ng]
* Fixed: the server would freeze after running for long enough (e.g. 24 days on Windows) due to an integer overflow in SERVER_Tick. [Kaminsky]
* Fixed: the SendToCommunicator special didn't stop the previous sound when online. [Sean]
* Fixed: a spectator could still kill themselves if they committed suicide in the same tick as when they spectated (e.g. typing "kill; spectate" in the console). [Kaminsky]
* Fixed: A_SkullPop would keep the old body as the activator of the player's running scripts causing the world to become the activator when revisiting hub maps. [Ru5tK1ng]
* Fixed: A_LookEx did not account for the +LOOKALLAROUND flag (addresses {{issue|3886}}). [Ru5tK1ng]
* Fixed: Friendly monsters could still be killed by splash damage even with sv_shootthroughallies being set to true (addresses {{issue|4013}}). [Ru5tK1ng]
* Fixed: a player's time and death count didn't reset on the client's end upon resetting the map in online games. [Kaminsky]
* Fixed: Hexen effects were causing MissileExplode warnings due to not having NETFL_SERVERSIDEONLY set (partially addresses {{issue|4187}}). [Ru5tK1ng]
* Fixed: if the wrong password was used to log into RCON through the menu, and then the correct password was sent through the console, the server setup menu suddenly popped up again despite being closed. [Kaminsky]
* Fixed: serverinfo CVars didn't always save into the "LocalServerInfo" subsection of a config file in offline games (e.g. when multiplayer emulation is on). [Kaminsky]
* Fixed: when a player changed their color or colorset, it didn't immediately update the status bar correctly in online games. [Kaminsky]
* Fixed: A regression from a codebase update was introduced that caused +TOUCHY to no longer work at all (addresses {{issue|4172}}). [Ru5tK1ng]
* Fixed: a skin's death sound didn't get used if the player respawned before the death sound could play on the corpse. [Kaminsky]
* Fixed: Player_SetTeam would cause players to select the fist instead of the Pistol depending on PWO settings (addresses {{issue|2897}}). [Ru5tK1ng]
* Fixed: a dummy player would be spawned behind if a morphed player dies and is forced to dead spectate in a gamemode with dead spectators. [Kaminsky]
* Fixed: a dummy sprite of the player's overridden skin (e.g. their weapon's preferred skin) appeared when they bursted into chunks after dying from ice. [Kaminsky]
* Fixed: actors that didn't need to respawn upon resetting the map didn't trigger GAMEEVENT_ACTOR_SPAWNED. [Kaminsky]
* Fixed: Monsters in sectors marked with Damage_End (e1m8) weren't being removed from the monster count when sv_nocountendmonst was true (addresses {{issue|3475}}). [Ru5tK1ng]
* Fixed: A player holding a hellstone could still cycle through their weapon tags (addresses {{issue|409}}). [Ru5tK1ng]
* Fixed: Numerous Heretic/Hexen actors and code pointers were sending invalid commands to clients that could not be executed (partially addresses {{issue|4187}}). [Ru5tK1ng]
* Fixed: Voodoo dolls weren't being pushed by barrel explosions in order to trigger linedef actions online (addresses 3963). [Ru5tK1ng]
* Fixed: +SPAWNSOUNDSOURCE wouldn't play the missile sound at the source online (addresses {{issue|807}}). [Ru5tK1ng]
* Fixed: ThingCountNameSector would count spectators that were present in the tagged sector (addresses {{issue|2447}}). [Ru5tK1ng]
* Fixed: The removebot commands could crash singleplayer when using OpenGL (addresses {{issue|1112}}) and would not stop scripts (addresses {{issue|802}}). [Ru5tK1ng]
* Fixed: gl_PrintStartupLog wasn't being called when not compiled with MSVC (addresses {{issue|4128}}). [TDRR]
* Fixed: Bots would continue aiming at players even when fully frozen [TDRR]
* Fixed: Bots would stop targeting players after being frozen [TDRR]
* Fixed: A_SpawnItemEx now always syncs AAPTR_TARGET for +MISSILE actors (addresses {{issue|4200}}). [Trillster]
* Fixed: Last skin in a SKININFO file was not properly parsed, resulting in extra skin removals (addresses {{issue|4204}}). [BarrelsOFun]
* Fixed: Shotgun starts could crash if the replacement wasn't a weapon (addresses {{issue|1844}}) and clients didn't have the right ammo on spawn (addresses 1059). [Ru5tK1ng]
* Fixed: SpawnSpot functions would still spawn things at a spot that had been removed with thing_remove in survival (addresses 1877). [Ru5tK1ng]
* Fixed: Spectators weren't able to use turn180 after connecting to a server or turning into a dead spectator (addresses 3490). [Ru5tK1ng]
* Fixed: a morphed player class's score icon wasn't set to the original player class's in online games. [Kaminsky]
* Fixed: a client didn't locally keep a name assigned to them by the server upon reconnecting to the server that executed the "map" CCMD. [Kaminsky]
* Fixed: the next level and countdown time didn't update on the scoreboard when the server used the "changemap" CCMD in the middle of an intermission. [Kaminsky]
* Fixed: Fraglimit changes wouldn't end the match properly if a player had more frags than the new limit (addresses 1137). [Ru5tK1ng]
* Fixed: Max bonus amounts for health and armor weren't being sync'd between map changes online (addresses 2706). [Ru5tK1ng]
* Fixed: the client's weapon desynced if they fired it too early after respawning. [Kaminsky]
* Fixed: a RandomPowerup could try giving the player a powerup that isn't actually an inventory item (i.e. the powerup was replaced by a non-inventory actor), causing the game to crash. [Kaminsky]
* Fixed: while in free spectate mode, the free spectator itself was used to refresh the HUD instead of the local player. [Kaminsky]
* Fixed: the ChangeCamera line special didn't revert the HUD back to the local player if they were spying on another player and their view changed to a non-player actor, or reverted back to them because they moved. [Kaminsky]
* Fixed: players would lose a life if they stayed dead before a wave began, or respawned when a wave was complete, in survival invasion. [Kaminsky]
* Fixed: the local player didn't keep viewing whoever they were spying on (as a spectator) when all players respawned during a map reset in offline games. [Kaminsky]
* Fixed: the local player couldn't remove themselves from the join queue with the "spectate" CCMD in offline games. [Kaminsky]
* Fixed: savegames didn't store the player's spectator status. [Kaminsky]
* Fixed: when the player changed their class through the class selection menu or console, it didn't take effect when they spawned for the first time in offline games. [Kaminsky]
* Fixed: the "SetPlayerClass" ACS function could assign a random class that's forbidden to the player's team in offline games. [Kaminsky]
* Fixed: sv_unlimited_pickup didn't work properly in online games. [Kaminsky]
* Fixed: icons would only render above the head of another player being spied on if they had chasecam enabled, instead of if the local player did. Also, icons didn't appear above the head of the player when they're being rendered in a mirror unless chasecam was enabled. [Kaminsky]
* Fixed: Bots no longer attempt to pathfind across monster blocking linedefs if they have -NOBLOCKMONST. [Trillster]
* Fixed: Large frag messages still appeared on the screen for spawn telefrags in online games. [Kaminsky]
* Fixed: sv_respawndelaytime wasn't ignored when players were spawn telefragged in game modes that didn't use lives. [Kaminsky]
* Fixed: Skyboxes that have been moved now reset properly on map reset. [Barrels O' Fun]
* Fixed: the "next round in..." message was missing in (team) possession since 3.1. [Kaminsky]
* Fixed: the intermission timer on the scoreboard wasn't always accurate and on some occassions was longer than it should've been. [Kaminsky]
* Fixed: player limits assigned to entries in the map rotation weren't respected when the server started up, so it could still choose a map that shouldn't be enterable. [Kaminsky]
* Fixed: Artifact stones no longer duplicate when picked up on the same tic they respawn. [Barrels O' Fun]
* Fixed: the server didn't send all server settings to clients that were gaining RCON access, and clients with RCON access didn't tell the server to set latched CVars if it was done without the "rcon" CCMD. [Kaminsky]
* Fixed: UDMF values and user variables of map things are now properly reset on map reset. [Barrels O' Fun]
* Fixed: the ally and enemy counters on the bottom of the HUD didn't update when a player changed their team without respawning. [Kaminsky]
* Fixed: sv_spawnfarthest didn't work at all in team-based game modes (excluding Team DM and Team LMS). [Kaminsky]
* Fixed: an actor's pitch wasn't synced to clients when they received a full update or when the map resetted in online games. [Kaminsky]


===Other changes===
===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]
* 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]
* 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]
* 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]
* 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]
* "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]
* 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 "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]
* 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]
* 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]
* 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]
* 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 "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]
* 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]
* 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]
* 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]
* 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 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]
* 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]
* 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. [Sean]
*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]
* 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. [Sean]
*The "logo" property in TEAMINFO, as well as a PlayerPawn's "ScoreIcon", are now usable and appear on the scoreboard. [Kaminsky]
* The "logo" property in TEAMINFO, as well as a PlayerPawn's "ScoreIcon", are now usable and appear on the scoreboard. [Kaminsky]
*Clients are now informed the moment when they're (un)muted on the server, based on Janko Knezevic's patch. [Kaminsky]
* Clients are now informed the moment when they're (un)muted on the server, based on Janko Knezevic's patch. [Kaminsky]
*Showing the player's skin sprite is now prevented if their class's current sprite is TNT1A0 (and its original sprite is also TNT1A0). [Kaminsky]
* Showing the player's skin sprite is now prevented if their class's current sprite is TNT1A0 (and its original sprite is also TNT1A0). [Kaminsky]
* HudMessages that are scaled to the virtual screen now respect con_scaletext_usescreenratio. [Kaminsky]
* Authentication errors now use all WADs containing authenticated lumps and maps instead of all PWADs, meaning zandronum.pk3, the IWAD, and auto-loaded PWADs can be identified in the error. [Sean]
* The ACS function "SetCurrentGameMode" now resets the current level upon successfully changing the game mode instead of restarting the entire game, thus no longer requiring clients to reconnect to the server. [Kaminsky]
* Voting will no longer end when traversing through maps and portals when in a hub. This will prevent a player from purposely cancelling a vote on the server (addresses {{issue|711}}). [Ru5tK1ng]
* Changed the color of the "SPKRA0" sprite to orange and made it low-res to fit with Doom's aesthetics better. [Kaminsky]
* Maps that have team spawns but no deathmatch spawns should load and spawn the players in when running modes like TeamDM or TeamLMS (addresses {{issue|1327}}). [Ru5tK1ng]
* A server's settings (i.e. any serverinfo CVars the server syncs with the client) are now discarded when the client disconnects and won't be saved into their config file. [Kaminsky]
* The position of the weapon sprite while swaying now only updates at 35 Hz instead of at the refresh rate. [Kaminsky]
* Renamed "cl_swayspeed" to "cl_viewswayspeed", to distinguish it from the new weapon sway speeds (i.e. motion and jump). [Kaminsky]
* Made the mini flag icons that appear on the HUD and scoreboard bigger and easier to see. [Kaminsky]
* Make GL extension printing optional (using the developer CVAR) [TDRR]
* Rename GAMEEVENT_ACTOR_ARMORDAMAGED to GAMEEVENT_ACTOR_DAMAGED_PREMOD and changed behaviour to execute on actors without inventory. [StrikerTheHedgefox]
* IP addresses ranging between 172.16.0.0 to 172.31.255.255 are now treated as LAN when determining which country an IP address originates from. [Kaminsky]
* The next entry in the map rotation is now calculated upon entering a new level, instead of when the current level is being exited. [Kaminsky]
* The "MapExit" server command now sends all flags used to change the level, so clients may change the level under the same conditions. [Kaminsky]
* Added new and/or improved ally, enemy, and chat icons made by unknownna that are less intrusive and appear correctly in the software renderer for non-Doom IWADs like Hexen or Strife, while still keeping the same style as the old ones. [Kaminsky]
* The ally icon now remains fully opaque even when the player has some type of visibility effect (e.g. BlurSphere), to make it easy to spot teammates. [Kaminsky]
* The console is no longer hidden for clients that were already in the console when a new level is loaded. [Kaminsky]
* All loaded "ALLYA" sprites are now protected. [Kaminsky]
* Changed "opponents" to "enemies", changed the coloring of "allies" and "enemies" to match those used in the target identification, and removed a redundant comma on the HUD. [Kaminsky]
* Changed the default value of "cl_ticsperupdate" from 3 to 1. [Kaminsky]
* Large frag messages no longer print console messages when they appear, and are now displayed according to the spied player's perspective. [Kaminsky]
* The login menu automatically sets the username to the client's default username when it's opened for the first time (Windows only). [Kaminsky]
* Clients now update their ping during intermissions and won't timeout when the server receives their response. Lagging icons now appear properly on the scoreboard without clients thinking that they're lagging when they're not. [Kaminsky]
* Ally and enemy icons no longer appear above the head of a player being spied on. [Kaminsky]
* The "next round in..." message is now used in (team) LMS during countdown sequences. [Kaminsky]
* Map rotations are no longer exclusive to online games and can now be used in offline games. [Kaminsky]
* Clients with RCON access can no longer start a new (skirmish) game unless they log out with "rcon_logout" first. [Kaminsky]
* The end level delay no longer ticks while the game's paused. [Kaminsky]
* Players now earn medals while cl_medals is disabled, but the medals themselves still remain unseen. [Kaminsky]
* Removed the hardcoded spawning behaviour that was used specifically for Team LMS, in favour of using sv_spawnfarthest. [Kaminsky]


==Beta builds==
==Beta builds==
*{{ForumThread|10792|Zandronum 3.2-alpha-220904-2011}}
{| class="wikitable"
*{{ForumThread|10849|Zandronum 3.2-alpha-221030-0316}}
! Version number !! [[File:Mercurial logo cropped.svg|16px]] Mercurial revision
 
|-
| {{ForumThread|10792|Zandronum 3.2-alpha-220904-2011}} || <code>a079616e5796</code>
|-
| {{ForumThread|10849|Zandronum 3.2-alpha-221030-0316}} || <code>2c280cd262f3</code>
|-
| {{ForumThread|10973|Zandronum 3.2-alpha-230709-1914}} || <code>89bccf7127ba</code>
|-
| {{ForumThread|11166|Zandronum 3.2-alpha-240405-2229}} || <code>ec2e32b05ed8</code>
|-
| {{ForumThread|11172|Zandronum 3.2-alpha-240414-1910}} || <code>fdf5f68843a5</code>
|-
| {{ForumThread|11259|Zandronum 3.2-alpha-241027-2139}} || <code>4e8342339656<code>
|-
| {{ForumThread|11261|Zandronum 3.2-alpha-241030-1744}} || <code>0c2b243f9d02<code>
|}


{{Navbox/Versions}}
{{Navbox/Versions}}
[[Category: Zandronum versions]]
[[Category: Zandronum versions]]
[[Category: Versions]]
[[Category: Versions]]

Latest revision as of 00:57, 4 November 2024

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.

Changes

Additions

  • Added the new AUTHINFO lump, allowing modders to define their own list of lumps to be authenticated. [Kaminsky]
  • Revamped the scoreboard, and added the new SCORINFO lump that allows full customization of the scoreboard. [Kaminsky]
  • Added support for custom vote types using the new VOTEINFO lump. [Dusk]
  • Added support for voice chat. Audio is encoded and decoded using Opus, allowing it to be transmitted over the network with minimal bandwidth usage and decent quality. Any unwanted noise in the audio is also removed with RNNoise before it's sent to the server. [Kaminsky]
  • Generalized the medal system and added the new MEDALDEF lump to define custom medals. Players can be awarded medals using the ACS and DECORATE functions: "GivePlayerMedal" and "A_GivePlayerMedal". [Kaminsky]
  • Added the +NOMORPHLIMITATIONS flag, allowing morphs to switch weapons, play sounds, and be affected by speed powerups. [geNia/Binary]
  • 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. [Sean]
  • 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 representing a bitfield that indicates how the actor was spawned. [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. [Sean]
  • 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. [Sean]
  • Added a segmented version of the launcher protocol, which allows splitting responses across multiple packets, avoiding network issues that arise when packets reach large sizes. [Sean]
  • Added an optional parameter to the "ignore" and "ignore_idx" CCMDs that allows servers to specify a reason for muting a client, based on Janko Knezevic's patch. [Kaminsky]
  • Added ACS functions that provide lump reading capabilities: "LumpOpen", "LumpReadChar", "LumpReadShort", "LumpReadInt", "LumpReadString", and "LumpSize". [TDRR]
  • Added the forcerename and forcerename_idx CCMDs, which forcibly change a player's name to a random generic one. [Sean]
  • Added the GAMEEVENT_PLAYERLEAVESSERVER EVENT script type, which fires when a player disconnects from the server. [Sean]
  • Added the dmflag "sv_nospawntelefog", preventing teleport fog from spawning when a player does. [Kaminsky]
  • Added ACS functions: "AddBot" and "RemoveBot", to add or remove bots from the game. [Kaminsky]
  • The authentication mechanism for non-map related lumps now allows Freedoom 0.12.x and 0.13.0/Doom clients to join Doom/Freedoom 0.12.x and 0.13.0 servers. [Sean]
  • Added ACS functions: "OpenMenu" and "CloseMenu", to open or close menus defined in MENUDEF. [Kaminsky]
  • Added the BanFromGame ACS function, allowing mods to give timed bans to players up to whatever the CVar "sv_maxacsbanduration" allows. A value of zero means that the server forbids use of the function. [Binary/Kaminsky]
  • Added ACS function: "GetPlayerStatus", which returns a bitfield of all the player's statuses (i.e. typing a chat message, talking on the microphone, in the console/menu, or lagging). [Kaminsky]
  • Added ACS function: "SetPlayerWeaponZoomFactor" from Q-Zandronum, the ACS-equivalent to the A_ZoomFactor DECORATE function. [Kaminsky]
  • Added SwayStyle, ViewSwaySpeed, ViewPitchStyle, and ViewPitchOffset properties for DECORATE weapons. [StrikerTheHedgefox]
  • Added ACS functions: "SetPlayerSkin" (from Q-Zandronum) and "GetPlayerSkin", to change or retrieve the name of a player's skin. [Kaminsky]
  • Added client-server netcode for Strife conversations. [Sean]
  • Added ACS function: "GetPlayerCountry", to return the alpha-2 or alpha-3 code, or full name, of the country a player's connecting from. This also respects a player's choice to hide their country. [Kaminsky]
  • Added the CVars "cl_motionswayspeed" and "cl_jumpswayspeed" (and MotionSwaySpeed and JumpSwaySpeed DECORATE weapon properties), to add additional sway to a player's weapon when they move, crouch, or jump up or down. [Kaminsky]
  • Added the CVars "cl_stillbobspeed" and "cl_stillbobrange" (and StillBobSpeed and StillBobRange DECORATE weapon properties), to also bob the weapon up and down while the player stands still. [Kaminsky]
  • Added the CVar "cl_spectatorsource", which enables source-engine like noclipping that allows spectators to pass through floors and ceilings. Based on the "zcc_spectsource" feature from ZCC. [Kaminsky]
  • Added a new flag to lmsspectatorsettings: "lms_spectatorvoicechat", to decide if spectators can talk with live players while a game's in progress. [Kaminsky]
  • Added event GAMEEVENT_LEVEL_INIT, which executes early in map initialization, before things are spawned, OPEN scripts executed, etc. [StrikerTheHedgefox]
  • Added A_ClientsideACSExecute which allows non-clientside actors to execute clientside scripts from within actor states, without using any network traffic. Useful for per-client effects. [StrikerTheHedgefox]
  • Added ACS function: "SetNextMapPosition", to change what the next entry in the map rotation will be. [Kaminsky]
  • Added the enemy icon back and added the CVars "cl_showallyicon" and "cl_showenemyicon" to control when the ally/enemy icons appear. [Kaminsky]
  • Added the PLAYERSEARNMEDALS game mode flag, offering more control over which game modes the players earn medals in. [Kaminsky]
  • Added the dmflags "sv_noallyicons" and "sv_noenemyicons", preventing ally or enemy icons from appearing over a player's head respectively. [Kaminsky]
  • Added the CVar "cl_autologin", allowing clients to automatically log into their default account upon connecting to a server (Windows only). [Kaminsky]
  • Added the CVar "sv_respawninsurvivalinvasion" to allow (dead) spectators to spawn at the start of a new wave in survival invasion. This partially restores the old behaviour of not allowing anyone to respawn until all waves are finished or all players are dead, which was broken since 3.1. [Kaminsky]
  • Added the CVar "cl_showscoreleft", which if disabled will turn "x things left" messages on the scoreboard into "x things to win" and show the current score limit instead of how much is left to win. This only affects frags, points, and wins. [Kaminsky]
  • Added ACS functions: "GetPlayerJoinQueuePosition" and "SkipJoinQueue", to return the player's position in the join queue and allow true spectators in the join queue to join the game outside of normal game mode rules. Modders can also take advantage of the new GAMEEVENT_JOINQUEUECHANGED EVENT script type to know when players are added or removed from the join queue. [Kaminsky]
  • Added over a hundred new text colors recently made by Fuzzball. [Kaminsky]

Fixes

  • 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. [Sean]
  • 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]
  • Fixed: stealth monsters didn't reveal themselves in online games when they took damage or died. [Kaminsky]
  • Fixed: backslashes were not being included in chat messages correctly. [Kaminsky]
  • Fixed: flags in CTF could be captured after the round was over. [auratoostronk]
  • Fixed: opening the text scaling menu sometimes changed the user's con_virtualwidth and/or con_virtualheight CVars when it shouldn't. [Kaminsky]
  • Fixed: the coop info wasn't getting drawn in clientside demos. [Kaminsky]
  • Fixed: Floatbob items having incorrect z-height after a map reset and glitchy GL floor clipping (addresses Issue 2361 ). [Ru5tK1ng]
  • Fixed: Monsters spawned by BossBrain cubes would move before being spawned on the clients therefore triggering warning messages (addresses Issue 2655 ). [Ru5tK1ng]
  • Fixed: Cleric's CircleFlame projectile did not rotate properly online (addresses Issue 2101 ). [Ru5tK1ng]
  • Fixed: Fighter's flechettes weren't working properly online (addresses Issue 796 , Issue 2948 and Issue 2949 ). [Ru5tK1ng]
  • Fixed: Porkalator and Morph Ovum couldn't spawn bloodsplatter actors online (addresses Issue 3007 ). [Ru5tK1ng]
  • Fixed: P_CheckMissileSpawn would instruct clients to explode a missile they hadn't spawn in yet (addresses Issue 4186 ). [Ru5tK1ng]
  • Fixed: Clients tried to destroy pillars twice which would cause out of sequence errors between building and destroying them (addresses Issue 2946 ). [Ru5tK1ng]
  • Fixed: ShareKeys was not working properly with dehacked keys, with puzzle items, in hubs and would ignore losekeys when maps didn't reset in survival (addresses Issue 4183 ). [Ru5tK1ng]
  • Fixed: Enter scripts would stack repeatedly in hubs each time a map was visted and exited causing multiple instances of the script(s) (addresses Issue 2977 ). [Ru5tK1ng]
  • Fixed: a player with an incredibly long name that won the game after the timer expired could crash the game. [Kaminsky]
  • Fixed: STRFTIME would crash Zandronum if a negative was passed into the first argument (addresses Issue 4144 ). [Ru5tK1ng]
  • Fixed: the server would freeze after running for long enough (e.g. 24 days on Windows) due to an integer overflow in SERVER_Tick. [Kaminsky]
  • Fixed: the SendToCommunicator special didn't stop the previous sound when online. [Sean]
  • Fixed: a spectator could still kill themselves if they committed suicide in the same tick as when they spectated (e.g. typing "kill; spectate" in the console). [Kaminsky]
  • Fixed: A_SkullPop would keep the old body as the activator of the player's running scripts causing the world to become the activator when revisiting hub maps. [Ru5tK1ng]
  • Fixed: A_LookEx did not account for the +LOOKALLAROUND flag (addresses Issue 3886 ). [Ru5tK1ng]
  • Fixed: Friendly monsters could still be killed by splash damage even with sv_shootthroughallies being set to true (addresses Issue 4013 ). [Ru5tK1ng]
  • Fixed: a player's time and death count didn't reset on the client's end upon resetting the map in online games. [Kaminsky]
  • Fixed: Hexen effects were causing MissileExplode warnings due to not having NETFL_SERVERSIDEONLY set (partially addresses Issue 4187 ). [Ru5tK1ng]
  • Fixed: if the wrong password was used to log into RCON through the menu, and then the correct password was sent through the console, the server setup menu suddenly popped up again despite being closed. [Kaminsky]
  • Fixed: serverinfo CVars didn't always save into the "LocalServerInfo" subsection of a config file in offline games (e.g. when multiplayer emulation is on). [Kaminsky]
  • Fixed: when a player changed their color or colorset, it didn't immediately update the status bar correctly in online games. [Kaminsky]
  • Fixed: A regression from a codebase update was introduced that caused +TOUCHY to no longer work at all (addresses Issue 4172 ). [Ru5tK1ng]
  • Fixed: a skin's death sound didn't get used if the player respawned before the death sound could play on the corpse. [Kaminsky]
  • Fixed: Player_SetTeam would cause players to select the fist instead of the Pistol depending on PWO settings (addresses Issue 2897 ). [Ru5tK1ng]
  • Fixed: a dummy player would be spawned behind if a morphed player dies and is forced to dead spectate in a gamemode with dead spectators. [Kaminsky]
  • Fixed: a dummy sprite of the player's overridden skin (e.g. their weapon's preferred skin) appeared when they bursted into chunks after dying from ice. [Kaminsky]
  • Fixed: actors that didn't need to respawn upon resetting the map didn't trigger GAMEEVENT_ACTOR_SPAWNED. [Kaminsky]
  • Fixed: Monsters in sectors marked with Damage_End (e1m8) weren't being removed from the monster count when sv_nocountendmonst was true (addresses Issue 3475 ). [Ru5tK1ng]
  • Fixed: A player holding a hellstone could still cycle through their weapon tags (addresses Issue 409 ). [Ru5tK1ng]
  • Fixed: Numerous Heretic/Hexen actors and code pointers were sending invalid commands to clients that could not be executed (partially addresses Issue 4187 ). [Ru5tK1ng]
  • Fixed: Voodoo dolls weren't being pushed by barrel explosions in order to trigger linedef actions online (addresses 3963). [Ru5tK1ng]
  • Fixed: +SPAWNSOUNDSOURCE wouldn't play the missile sound at the source online (addresses Issue 807 ). [Ru5tK1ng]
  • Fixed: ThingCountNameSector would count spectators that were present in the tagged sector (addresses Issue 2447 ). [Ru5tK1ng]
  • Fixed: The removebot commands could crash singleplayer when using OpenGL (addresses Issue 1112 ) and would not stop scripts (addresses Issue 802 ). [Ru5tK1ng]
  • Fixed: gl_PrintStartupLog wasn't being called when not compiled with MSVC (addresses Issue 4128 ). [TDRR]
  • Fixed: Bots would continue aiming at players even when fully frozen [TDRR]
  • Fixed: Bots would stop targeting players after being frozen [TDRR]
  • Fixed: A_SpawnItemEx now always syncs AAPTR_TARGET for +MISSILE actors (addresses Issue 4200 ). [Trillster]
  • Fixed: Last skin in a SKININFO file was not properly parsed, resulting in extra skin removals (addresses Issue 4204 ). [BarrelsOFun]
  • Fixed: Shotgun starts could crash if the replacement wasn't a weapon (addresses Issue 1844 ) and clients didn't have the right ammo on spawn (addresses 1059). [Ru5tK1ng]
  • Fixed: SpawnSpot functions would still spawn things at a spot that had been removed with thing_remove in survival (addresses 1877). [Ru5tK1ng]
  • Fixed: Spectators weren't able to use turn180 after connecting to a server or turning into a dead spectator (addresses 3490). [Ru5tK1ng]
  • Fixed: a morphed player class's score icon wasn't set to the original player class's in online games. [Kaminsky]
  • Fixed: a client didn't locally keep a name assigned to them by the server upon reconnecting to the server that executed the "map" CCMD. [Kaminsky]
  • Fixed: the next level and countdown time didn't update on the scoreboard when the server used the "changemap" CCMD in the middle of an intermission. [Kaminsky]
  • Fixed: Fraglimit changes wouldn't end the match properly if a player had more frags than the new limit (addresses 1137). [Ru5tK1ng]
  • Fixed: Max bonus amounts for health and armor weren't being sync'd between map changes online (addresses 2706). [Ru5tK1ng]
  • Fixed: the client's weapon desynced if they fired it too early after respawning. [Kaminsky]
  • Fixed: a RandomPowerup could try giving the player a powerup that isn't actually an inventory item (i.e. the powerup was replaced by a non-inventory actor), causing the game to crash. [Kaminsky]
  • Fixed: while in free spectate mode, the free spectator itself was used to refresh the HUD instead of the local player. [Kaminsky]
  • Fixed: the ChangeCamera line special didn't revert the HUD back to the local player if they were spying on another player and their view changed to a non-player actor, or reverted back to them because they moved. [Kaminsky]
  • Fixed: players would lose a life if they stayed dead before a wave began, or respawned when a wave was complete, in survival invasion. [Kaminsky]
  • Fixed: the local player didn't keep viewing whoever they were spying on (as a spectator) when all players respawned during a map reset in offline games. [Kaminsky]
  • Fixed: the local player couldn't remove themselves from the join queue with the "spectate" CCMD in offline games. [Kaminsky]
  • Fixed: savegames didn't store the player's spectator status. [Kaminsky]
  • Fixed: when the player changed their class through the class selection menu or console, it didn't take effect when they spawned for the first time in offline games. [Kaminsky]
  • Fixed: the "SetPlayerClass" ACS function could assign a random class that's forbidden to the player's team in offline games. [Kaminsky]
  • Fixed: sv_unlimited_pickup didn't work properly in online games. [Kaminsky]
  • Fixed: icons would only render above the head of another player being spied on if they had chasecam enabled, instead of if the local player did. Also, icons didn't appear above the head of the player when they're being rendered in a mirror unless chasecam was enabled. [Kaminsky]
  • Fixed: Bots no longer attempt to pathfind across monster blocking linedefs if they have -NOBLOCKMONST. [Trillster]
  • Fixed: Large frag messages still appeared on the screen for spawn telefrags in online games. [Kaminsky]
  • Fixed: sv_respawndelaytime wasn't ignored when players were spawn telefragged in game modes that didn't use lives. [Kaminsky]
  • Fixed: Skyboxes that have been moved now reset properly on map reset. [Barrels O' Fun]
  • Fixed: the "next round in..." message was missing in (team) possession since 3.1. [Kaminsky]
  • Fixed: the intermission timer on the scoreboard wasn't always accurate and on some occassions was longer than it should've been. [Kaminsky]
  • Fixed: player limits assigned to entries in the map rotation weren't respected when the server started up, so it could still choose a map that shouldn't be enterable. [Kaminsky]
  • Fixed: Artifact stones no longer duplicate when picked up on the same tic they respawn. [Barrels O' Fun]
  • Fixed: the server didn't send all server settings to clients that were gaining RCON access, and clients with RCON access didn't tell the server to set latched CVars if it was done without the "rcon" CCMD. [Kaminsky]
  • Fixed: UDMF values and user variables of map things are now properly reset on map reset. [Barrels O' Fun]
  • Fixed: the ally and enemy counters on the bottom of the HUD didn't update when a player changed their team without respawning. [Kaminsky]
  • Fixed: sv_spawnfarthest didn't work at all in team-based game modes (excluding Team DM and Team LMS). [Kaminsky]
  • Fixed: an actor's pitch wasn't synced to clients when they received a full update or when the map resetted in online games. [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. [Sean]
  • 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. [Sean]
  • The "logo" property in TEAMINFO, as well as a PlayerPawn's "ScoreIcon", are now usable and appear on the scoreboard. [Kaminsky]
  • Clients are now informed the moment when they're (un)muted on the server, based on Janko Knezevic's patch. [Kaminsky]
  • Showing the player's skin sprite is now prevented if their class's current sprite is TNT1A0 (and its original sprite is also TNT1A0). [Kaminsky]
  • HudMessages that are scaled to the virtual screen now respect con_scaletext_usescreenratio. [Kaminsky]
  • Authentication errors now use all WADs containing authenticated lumps and maps instead of all PWADs, meaning zandronum.pk3, the IWAD, and auto-loaded PWADs can be identified in the error. [Sean]
  • The ACS function "SetCurrentGameMode" now resets the current level upon successfully changing the game mode instead of restarting the entire game, thus no longer requiring clients to reconnect to the server. [Kaminsky]
  • Voting will no longer end when traversing through maps and portals when in a hub. This will prevent a player from purposely cancelling a vote on the server (addresses Issue 711 ). [Ru5tK1ng]
  • Changed the color of the "SPKRA0" sprite to orange and made it low-res to fit with Doom's aesthetics better. [Kaminsky]
  • Maps that have team spawns but no deathmatch spawns should load and spawn the players in when running modes like TeamDM or TeamLMS (addresses Issue 1327 ). [Ru5tK1ng]
  • A server's settings (i.e. any serverinfo CVars the server syncs with the client) are now discarded when the client disconnects and won't be saved into their config file. [Kaminsky]
  • The position of the weapon sprite while swaying now only updates at 35 Hz instead of at the refresh rate. [Kaminsky]
  • Renamed "cl_swayspeed" to "cl_viewswayspeed", to distinguish it from the new weapon sway speeds (i.e. motion and jump). [Kaminsky]
  • Made the mini flag icons that appear on the HUD and scoreboard bigger and easier to see. [Kaminsky]
  • Make GL extension printing optional (using the developer CVAR) [TDRR]
  • Rename GAMEEVENT_ACTOR_ARMORDAMAGED to GAMEEVENT_ACTOR_DAMAGED_PREMOD and changed behaviour to execute on actors without inventory. [StrikerTheHedgefox]
  • IP addresses ranging between 172.16.0.0 to 172.31.255.255 are now treated as LAN when determining which country an IP address originates from. [Kaminsky]
  • The next entry in the map rotation is now calculated upon entering a new level, instead of when the current level is being exited. [Kaminsky]
  • The "MapExit" server command now sends all flags used to change the level, so clients may change the level under the same conditions. [Kaminsky]
  • Added new and/or improved ally, enemy, and chat icons made by unknownna that are less intrusive and appear correctly in the software renderer for non-Doom IWADs like Hexen or Strife, while still keeping the same style as the old ones. [Kaminsky]
  • The ally icon now remains fully opaque even when the player has some type of visibility effect (e.g. BlurSphere), to make it easy to spot teammates. [Kaminsky]
  • The console is no longer hidden for clients that were already in the console when a new level is loaded. [Kaminsky]
  • All loaded "ALLYA" sprites are now protected. [Kaminsky]
  • Changed "opponents" to "enemies", changed the coloring of "allies" and "enemies" to match those used in the target identification, and removed a redundant comma on the HUD. [Kaminsky]
  • Changed the default value of "cl_ticsperupdate" from 3 to 1. [Kaminsky]
  • Large frag messages no longer print console messages when they appear, and are now displayed according to the spied player's perspective. [Kaminsky]
  • The login menu automatically sets the username to the client's default username when it's opened for the first time (Windows only). [Kaminsky]
  • Clients now update their ping during intermissions and won't timeout when the server receives their response. Lagging icons now appear properly on the scoreboard without clients thinking that they're lagging when they're not. [Kaminsky]
  • Ally and enemy icons no longer appear above the head of a player being spied on. [Kaminsky]
  • The "next round in..." message is now used in (team) LMS during countdown sequences. [Kaminsky]
  • Map rotations are no longer exclusive to online games and can now be used in offline games. [Kaminsky]
  • Clients with RCON access can no longer start a new (skirmish) game unless they log out with "rcon_logout" first. [Kaminsky]
  • The end level delay no longer ticks while the game's paused. [Kaminsky]
  • Players now earn medals while cl_medals is disabled, but the medals themselves still remain unseen. [Kaminsky]
  • Removed the hardcoded spawning behaviour that was used specifically for Team LMS, in favour of using sv_spawnfarthest. [Kaminsky]

Beta builds

Version number Mercurial revision
Zandronum 3.2-alpha-220904-2011 a079616e5796
Zandronum 3.2-alpha-221030-0316 2c280cd262f3
Zandronum 3.2-alpha-230709-1914 89bccf7127ba
Zandronum 3.2-alpha-240405-2229 ec2e32b05ed8
Zandronum 3.2-alpha-240414-1910 fdf5f68843a5
Zandronum 3.2-alpha-241027-2139 4e8342339656
Zandronum 3.2-alpha-241030-1744 0c2b243f9d02