Version history/3.2

Revision as of 21:48, 24 March 2024 by DrinkyBird (talk | contribs) (Update changelog as of 1a8a5f5d76eb17e2f7b70613bd320c5be06a987f)
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]
  • 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]

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 2361). [Ru5tK1ng]
  • Fixed: Monsters spawned by BossBrain cubes would move before being spawned on the clients therefore triggering warning messages (addresses 2655). [Ru5tK1ng]
  • Fixed: Cleric's CircleFlame projectile did not rotate properly online (addresses 2101). [Ru5tK1ng]
  • Fixed: Fighter's flechettes weren't working properly online (addresses 796, 2948 and 2949). [Ru5tK1ng]
  • Fixed: Porkalator and Morph Ovum couldn't spawn bloodsplatter actors online (addresses 3007). [Ru5tK1ng]
  • Fixed: P_CheckMissileSpawn would instruct clients to explode a missile they hadn't spawn in yet (addresses 4186). [Ru5tK1ng]
  • Fixed: Clients tried to destroy pillars twice which would cause out of sequence errors between building and destroying them (addresses 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 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 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 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 3886). [Ru5tK1ng]
  • Fixed: Friendly monsters could still be killed by splash damage even with sv_shootthroughallies being set to true (addresses 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 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 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 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 3475). [Ru5tK1ng]
  • Fixed: A player holding a hellstone could still cycle through their weapon tags (addresses 409). [Ru5tK1ng]
  • Fixed: Numerous Heretic/Hexen actors and code pointers were sending invalid commands to clients that could not be executed (partially addresses 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 807). [Ru5tK1ng]

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 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 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]

Beta builds