Garry's Mod Logo
schedule 17 March 2020
Update

March 2020 Update

This update brings many new features for addon creators as well as adds general polish to other parts of the game, such as the Spawnmenu.

Rubat
Programmer
Parts Unknown
This update brings many new features for addon creators as well as adds general polish to other parts of the game, such as the Spawnmenu. Resizing the spawnmenu now saves the changes after you exit the game, so you do not have to resize it every time you join a Sandbox server or start a singleplayer Sandbox game. There are also numerous improvements to spawnlist customization, including more intuitive drag'n'drop controls that mimic drag'n'drop controls of your Operating System and inability to delete NPCs, Weapons, Vehicles, Entities and Post Processing effects from their own tabs so players no longer have to rejoin server/restart their singleplayer game if they accidentally deleted something in their spawnmenu. There's also an option to revert any currently unsaved spawnlist changes. A number of Steam Workshop related issues introduced with the previous update were also resolved. You will find the complete changelist below. Header artwork "Red Letter Day"
arrow_circle_up

Improvements

  • Sandbox's prop_effect will now change its color if the player is looking at it, indicating which/if prop_effect will be picked up via Physics Gun/Tool Gun
  • Only allow vehicle boost/"nitro" in forward direction and only if we are not recovering from previous boost
  • Added closecaptions and subtitles for all languages supported by Half-Life 2 games
  • Switch spawnicon editor skins/bodygroups to sliders from dropdowns
  • Updated language files
  • Translated drag'n'drop right click drag dropdown menu
  • You can no longer modify unmodifiable Spawnmenu tabs (NPCs, Weapons, etc), but you can still copy from them to your spawnlists as usual
  • Display a console warning during addon mounting when an addon contains a Lua file already mounted from another addon
  • "Missing map somemap.bsp, disconnecting" error now tells the player if their cl_downloadfilter is set to not download maps and how to fix it
  • Renamed Other tab back to Multiplayer in the Options menu
  • Added "Do not download Workshop addons" option to the download filter in Multiplayer Options menu
  • Spawnmenu resizes save between sessions
  • Added "Revert changes" button when editing spawnlists
  • Sprinting and clicking on spawnicons no longer selects them and allows the player to spawn things
  • Area selection while holding Shift key only adds to current selection, while holding Control will invert current selection (old behavior)
  • Holding control key (CTRL) now also toggles multi-selection in spawnmenu
  • Adjusted minimum sizes for spawnmenu areas to work better on extremely small resolutions
  • Increased brightness on some map icons (Half-Life Source) so you can actually see what's on them and added some missing icons for Left 4 Dead and Counter-Strike: Global Offensive maps
  • Moved certain community made maps from Counter-Strike games into their own category (aim, fy, awp, etc)
  • Renamed certain games in the mountable games list to more closely match their actual names on Steam
  • Do not complain about undefined water overlays in console
  • TTT: Updated Portuguese translation (Community Contribution)
handyman

Fixed

  • Fixed func_breakable being misaligned on Half-Life: Source maps
  • Fixed Half-Life: Source snarks not attacking anything when spawned from spawnmenu on flat surfaces
  • Fixed Faceposer tool forcing hidden "useless" flex controllers to 0 causing problems with other flexcontrollers, such as eyelid control on Team Fortress 2 player models
  • Half-Life: Source turrets start in retracted animation rather than in the firing? animation
  • Restored close caption support
  • Fixed certain build-in chat messages getting cut off if player's name is too long
  • Very tall disconnect messages are no longer being cut off vertically midway and don't go off screen
  • Fixed a progression stopper on d2_coast_11.bsp if "Keep Corpses" option is turned on
  • Fixed a progression stopper on c2a5g.bsp (not being able to use the airstrike controls)
  • Level transitions (as well as loading engine saves) no longer resets Suit Power as well as Crouched and Flashlight states
  • Combine Soldiers, Metrocops, Stalkers, Zombine, Eli and Antlion Guards get their custom footsteps back
  • Death ragdolls copy dead NPC/Player's flex and bone manipulations, as well as RenderFX and targetname (serverside ragdolls)
remove_circle

Removed

  • Disabled overview_mode completely (Counter-Strike like radar), it was used to cheat, and is completely replaceable by Lua
arrow_circle_up

Improvements

  • Minor changes to Workshop subscriptions
  • Workshop server downloads: Also try to mount the old steamworks.Download files if they exist
  • Include Workshop file ID for the "There is no file to mount" console error message
  • Improved Offline Mode for workshop addons - now uses the cached subscribed list from Steam
  • Do not mount already mounted Workshop files when joining servers
handyman

Fixed

  • Do not try to mount Workshop files we failed to rename when joining a server and mount the old file instead
  • Fonts are now properly extracted from Workshop addons when joining severs
  • Resolved some issues with stuck download prevention for server Workshop downloads
  • Subscribing to addons with missing Type tags while in-game no longer fails
add_circle

Features

  • Loading Screens are now passed game volume via GameDetails() (Community Contribution)
  • Added new CLIP tool textures with custom step sounds to mimic Counter-Strike: Global Offensive
  • Allowed usage of multiple unique clip brush textures in vbsp.exe to enable custom footsteps on them
  • Added -nocrc option to gmad.exe which will skip CRC calculations when creating addons to help with very big addons
arrow_circle_up

Improvements

  • Force lowercase map names on changelevel/map
  • Updated "DefaultUnderline" font to match "Default" font's weight so that RichText URLs and text look consistent
  • Made Menu Lua errors appear mostly like Client/Server errors appear (formatting)
  • Made ErrorNoHalt w/ trace and menu errors trigger the "Something is creating script errors" message
  • Minor changes to config_default.cfg - mp_decals & r_decals set to 2048 (from 5000), sensitivity set to 6 (from 8) and removed spawnmenu_icon_precache since it doesnt exist (Community Contribution)
  • WaterLevel() for non player entities will report WL_Eyes(3) if touching water, rather than WL_Feet(1) when fully submerged
  • Do not add models/*.sw.vtx files to the server download list automatically
  • Fixed Dedicated servers not being able to read unlisted collections
  • "Connection to Steam servers lost" message now also displays user friendly error messages
  • Fixed Lua autorefresh on Linux causing Lua errors with big files and SFTP
  • Added position printout to vrad.exe's "Zero area child patch" message
  • Added Toggle input for func_brush in base.fgd
  • gmad.exe will complain and bail if it fails to get file's size instead of writing 0 causing malformed addon files being created
  • Reduced amount of "Failed to grow buffer" errors with gmad.exe
  • Skip newline as first character when copying text from RichText
handyman

Fixed

  • Do not reset angles/position/speed when unparenting entities since it causes unexpected results
  • $decalfadeduration now works on world brushes & displacements (Jeep gauss gun hit marks now fade away like intended)
  • Changing RT no longer sometimes clamps viewport bounds to backbuffer bounds
  • Fixed a crash issue with prop_combine_ball when it's missing its physics object
  • Clientside crazy physics: Delete the entity AFTER simulating all of its physics objects to avoid crashing
  • Fixed an infinite loop with decal cleanup
  • Striders no longer leave entities they created behind slowly filling up server entity limit
  • buildcubemaps no longer crashes the game in main menu
  • Fixed RichText selection being offset from cursor with clickable text using a different font to the rest of the text
  • Fixed RichText clickable text becoming unclickable if the currently rendering text ranges start with a clickable text
  • RichText now uses clickable text font height for clickable text overlay panels
  • RichText's default color is now black, not fully transparent
  • Fixed RichText clickable panels never being clickable if the first character is a new line
  • Fixed RichText crashing when containing a lot of text without a newline and with the same color
add_circle

Features

  • Added Entity.GetHitBoxHitGroup( hitbox, set )
  • Added Player.SetLastHitGroup( group )
  • Added NPC.GetCurWaypointPos()
  • Added NPC.GetNextWaypointPos()
  • Added Entity.LookupPoseParameter( name ) = id
  • Added 3rd argument to Player.SetFOV - requester entity
  • Added GM.PostEntityTakeDamage( ent, dmginfo, tookDamage )
  • Added Entity.GetLayerPlaybackRate (shared)
  • Added Panel.SetUnderlineFont( font ), sets the clickable text font for RichText panels
  • Added Panel.GetFG/BGColor()
  • Added Panel.GetSelectedTextRange() = start,end pos, works for both RichText and TextArea
  • Added Panel.Set/GetMaximumCharCount, both of which work on TextEntry and RichText
  • Added CLuaParticle.Set/GetMaterial
  • Added File.EndOfFile
  • Added Entity.RemoveInternalConstraint( num = -1 )
  • Added GM:OnEntityWaterLevelChanged( ent, old, new ) hook
  • Added BLENDFUNC_MIN and BLENDFUNC_MAX enums
  • Added GM:PlayerChangedTeam( ply, old, new ) - serverside
  • Added PhysObj.GetFrictionSnapshot()
  • steamworks.DownloadUGC's callback now has a second argument - a File object pointing to the .gma file
  • DisableClipping global now returns the previous state of Clipping
  • Added Player.SetSlowWalkSpeed( new speed )
  • Added Player.GetSlowWalkSpeed() = speed
  • Added Player.SetLadderClimbSpeed( new speed )
  • Added Player.GetLadderClimbSpeed() = speed
arrow_circle_up

Improvements

  • Allow using "Model" keyvalue from Spawnmenu on Zombie NPCs
  • Automatically remove FCVAR_ARCHIVE from replicated convars clientside
  • Made Entity.SetLayerPlaybackRate and Entity.Set/GetLayerWeight shared (currently only intended to be used on players as a trial)
  • Made Vehicle.GetDriver, Vehicle.GetPassenger, Vehicle.GetVehicleViewPosition shared
  • Added DevWarnings for trying to base surface.CreateFont fonts off of game/existing fonts
  • CTakeDamageInfo.__tostring now includes the damage value
  • Entity.StopSound now also sort of works with direct paths
  • Move certain S_RegisterSound messages to developer 1 (sound.Register)
  • Stack trace for "[ParticleEmitter:Add] Material Handle is invalid!"
  • Converted umsg.Start error messages into ErrorNoHalts
  • Not providing the first argument to umsg.Start won't create a new message and then just fail and do nothing with it
  • surface.DrawPoly with no arguments causes an expected Lua error, rather than printing a warning into console.
  • Minor optimizations to player.GetBy* functions (Community Contribution)
  • util.TypeToString now works nicer for angles (Community Contribution)
  • Better error handling for Entity.SetBonePosition, Entity.GetBonePosition, Entity.SetBoneMatrix, Entity.GetBoneMatrix
handyman

Fixed

  • Fixed SendUserMessage erroring on client (Community Contribution)
  • Fixed HSVToColor and HSLToColor freezing the game with large Hue values
  • Fixed CNavArea.ConnectTo crashing the game when we could not compute a direction between the 2 nav areas
  • Fixed DListView's non sortable columns creating duplicate panels
  • Fixed Entity.TranslatePhysBoneToBone not working on ai_serverragdolls 1 ragdolls
  • Fixed DFrame causing issues with 3D2D
  • Fixed underline not working for custom fonts
  • steamworks.DownloadUGC doesn't fail with 2 or more files downloading concurrently
  • Vehicle.SetVehicleParams doesn't unexpectedly change maxSpeed, boostMaxSpeed and maxRevSpeed when not given new values for those fields
  • Entity.SetMaterial works on Brush entities (You can now also use LightmappedGeneric materials on brush entities with SetMaterial)
  • Disabling suit zoom (Player:SetCanZoom(false)) no longer prevents firing weapons when trying to use suit zoom