Garry's Mod Logo
Changes Header

Changes

What’s changed in Garry's Mod in each patch.

add_circle

Features

  • Added DSlider.Set/GetNotchColor
  • Added SKIN.colNumSliderNotch
  • Added 2 new arguments to CanTool hooks - the toolobject and the button used (left/right/reload = 1/2/3)
  • Added missing ACT_ enums used by the default player model animations
  • Added NPC:GetBestSoundHint( types = all of them ) = table or nil
  • Added sound.GetLoudestSoundHint( type, pos ) = table or nil
  • Added ENT:GetSoundInterests for "ai" type SENTs
  • Added PhysObj.SetAngleVelocityInstantaneous
  • Added PhysObj.SetAngleVelocity
  • Implemented ENT:OnTakeDamage for nextbots
  • Added Player.Get/SetVoiceVolumeScale(0 .. 1) - Clientside only, sets the desired voice volume multiplier per player
  • Added Player.LocalEyeAngles(), which returns eye angles unmodified by being parented to a different entity (such as while being in a vehicle)
  • Added a 3rd argument to Pre/PostDrawTranslucent/OpaqueRenderables - isRendering3DSky
  • Added CMoveData.Set/Get for: ConstraintWidth, ConstraintSpeedScale, ConstraintCenter, FinalIdealVelocity, FinalJumpVelocity, FinalStepHeight
  • Added permissions library
arrow_circle_up

Improvements

  • Use ErrorNoHaltWithStack for numpad.OnDown/OnUp errors when given an invalid key
  • Added con_filter*, gm_video, mat_dxlevel and the new voice cvars to blocked cvar list
  • Switched Think, OnRemove and RunAI entity hooks to use the Lua string pool for "anim" and "ai" SENTs
  • Made Player.IsSpeaking shared (on server, it will return true within 0.1s of the last voice packet from a player, no packets are sent when the voice chat button is held but the player is not talking)
  • Reduced update rate of PlayerCanHearPlayersVoice when nobody is talking to 5 seconds
  • PathFollower functions can now accept player.CreateNextbot() entities instead of the NextBot SENTs. They will also throw proper errors when given invalid entities
  • Made DrawBokehDOF function available to addons, i.e. it is no longer a local function (Community Contribution)
  • Apply PhysObj.EnableMotion to all PhysObjects of a Jeep (it also works on Jeeps now)
  • Entity.GetModelMaterials will now return a complete list of materials if used on a brush model, including the map. Maximum for models is reduced to 128 (from 256) which matches other places in the engine when it comes to models
  • Micro optimization to player:__index (Community Contribution)
  • Forcibly disallow the resource library from adding .xbox.vtx and .sw.vtx files to the server's downloadables list
  • Make sound.Add soundscripts treated as overrides so they are cleaned up/restored on disconnect
  • gma.MountGMA now also clears list of missing materials
handyman

Fixed

  • sound.Generate now flushes its cache on level shutdown (And also with snd_restart)
  • Fixed dedicated server crashing when trying to reference invalid SteamAPI pointers after using the map console command, such as the HTTP functions
  • Fixed sounds not working correctly (playing everywhere) with clientside only entities: Footstep sounds, _G.CreateSound, Entity.EmitSound, Entity.StopSound, Entity.StartLoopingSound
  • Fixed ClientsideRagdoll crashing if called too early
  • CSpawnIcon::RebuildIcon(Ex) now clears the cached spawnicon material like it did before (so the spawnicon appears in its “loading” state again)
  • Fixed Entity.FollowBone glitching around clientside in certain cases
  • Fixed srcds workshop addons missing some fields in engine.GetAddons()
  • SteamID functions return the correct(-ish, the steam universe is hardcoded to "Public" one) value in singleplayer for the player serverside (It was already correct on client)
  • Fixed GetTouchTrace() crashing the game when the entity in the cached trace result no longer exists
  • render.RenderView now resets the "ShouldDrawLocalPlayer" cache, allowing the hook to be called again for those renders, fixing ShouldDrawLocalPlayer not working properly with multiple renders within a frame.
  • Prevent weld constraint assigning a global variable with the last created weld (Community Contribution)
  • Fixed performance discrepancy of Entity:GetMaterials() between different models
  • Fixed GM:PlayerLeaveVehicle not being called when the player is forced into a vehicle while being in a different vehicle
  • Entity.SetAngles properly sets angles on jeeps, they no longer snap back to old angles
  • Fixed some entities (such as props) reporting "took damage" as false in PostEntityTakeDamage when they are killed
  • Fixed some constraint library functions (such as HasConstraints, GetAllConstrainedEntities, etc) not functioning with the world entity
  • Fixed gmsave library (Spawnmenu save system) not saving constraints that are attached to the world entity on both ends (such as ropes)
  • Fixed duplicator library's Min/Max calculations for dupes
add_circle

Features

  • (Un)Subscribing to an addon while in a map now refreshes the Spawnmenu > Browse > Addons section to contain the new addons or remove the deleted addons
  • Spawnmenu > Browse > Games also refreshes when a game is mounted or unmounted
  • You can now open the workshop addon on Steam directly from Spawnmenu > Browse > Addons by right clicking
  • You can now right click on any folder in Spawnmenu > Browse > Games to quickly generate a spawnlist for that folder and its subfolders
  • Added duplicated NPC settings to the NPC spawnmenu tab under NPC categories so they are easier to find
  • Added "Games" label to the mountable games button to hopefully better direct players to it, and added "Not Owned" / "Not installed" labels so there's no questions about which icon means what
  • Added Problems panel which displays Lua Errors with quick way to disable/uninstall/report the problematic addon and reports common problems with a button to quickly fix the issue where applicable
  • Workshop content downloading (server addons, dupes, saves) after joining a server/singleplayer will now be displayed with the usual Workshop download progress interface
  • Server browser now has "Add to favorites" button for every server in every section, not just in the Favorites section
  • Server browser will now display an Outdated "tag" when a server is running a version of the game different to the version the client is running. Players can still try to join such servers
  • Added total server and gamemode count readouts to the server browser
  • Added sv_location convar for servers, which is used to set a custom flag icon for the server in the server browser so players can more easily find servers from a preferred location or of a language they can understand
  • Added more filtering/sorting options to the server browser: Gamemode list sorting by server count/name. Server filters by player count and ping
  • Added gamemode categories to the server browser to help players more easily find their preferred gameplay styles. Currently available categories are PvP, PvE, Roleplay and Other. It may take some time for community servers and gamemodes to define tags
arrow_circle_up

Improvements

  • The "Add current server to Favorites" button now changes to "Remove current server from favorites" if the server is already in favorites
  • Addons that have failed to download or are waiting to be downloaded will now display in the Addons menu. Their description also explains why they are not working
  • Do not copy old API .gma subscriptions to .gma.outdated files when an update is needed, the copied file is never used
  • Added map icons for new Fistful of Frags and CS:GO maps
  • Display a UI message when we failed to find models for an addon in Spawnmenu > Browse > Addons
  • Improvements to main menu's bottom navbar for tiny screen resolutions
  • Added "Any/All" aspect ratio to the Video options that shows all supported screen resolutions by the GPU, made it default
  • Added default bindings to Mouse4 and Mouse5 - “Previous weapon” and “Voice chat” respectively. Existing settings unaffected
  • Added extra space for map names in the server list for screens that can fit it
  • Adjusted the server info area of the server browser to show the full server name even if it is too long
  • Fixed player list in the server browser sometimes appearing broken due to long player names
  • Changed server browser search text fields placeholder text to better represent what they search through
  • Added an outline/border to text fields in server browser so they are visible better on bright backgrounds
  • More consistent styling for text boxes in the main menu between operating systems and beta branches
  • Improved performance of the translation system in the main menu
  • Improved performance of the "first click" on the "Start New Game" menu
handyman

Fixed

  • The decal limit now uses r_decals's current value (with a maximum of 8192), not its default value, which is 2048. Must be set before a map is loaded
  • Fixed Lua errors when generating Spawnmenu tabs when a modded entity or a weapon does not have a Category set, or it is not valid
  • menu_cleanupgmas now takes into account addons that updated to ISteamUGC API from the old API, which makes their old .gma in addons/ unused
  • Fixed subscribed addons not being able to update in the main menu due to them being mounted/used while updating
  • Fixed loading screen progress bar going backwards at certain points, and added more steps to the very end
  • Fixed sounds becoming too quiet sometimes such as underwater when using the new Sound Effects Volume slider
  • Added kill feed translation for point_template (Found on Half-Life 2: Episode 2 maps)
  • Fixed properties (Hold C > Right click on a prop) not working on map/brush entities
  • Fixed DMenuOptions text color not being affected by currently active Derma skin (Community Contribution)
  • Fixed border color of "Server is full" button in the server browser so it matches the color of the button itself (Community Contribution)
  • Fixed "Disable Sprays" checkbox sometimes not being clickable due to it being covered up the invisible part of the label above it
  • Fixed Motor tool applying torque incorrectly when attached to a prop that is rotated 90 or 180 degree from initial position
  • Fixed an issue where dragging icons from Browse => Addons/Games and resizing them would not properly move all other icons to fit the resized icon
  • Potential fixes for models becoming errors on map reload (Fixes L4D1 maps crashing on load)
add_circle

Features

  • TTT: Added Japanese translation (Community Contribution)
arrow_circle_up

Improvements

  • TTT: Brazilian Portuguese translation - Changes to the highlights and to the AFK message (Community Contribution)
handyman

Fixed

  • TTT: Fixed an issue with LANG.AddToLanguage to do with missing languages (Community Contribution)
  • TTT: Fixed an instant reload exploit (Community Contribution)
  • TTT: Fixed ragdoll pinning HUD for innocents (Community Contribution)
  • TTT: Fixed karma affecting damage when karma system is disabled (Community Contribution)
add_circle

Features

  • Implemented a basic "Hold key to continue scrolling" feature to all ListPanel vgui elements, such as old server browser and Hammer's model browser
  • Added lua_dumptimers concommands (each realm has its own suffix) for debugging
  • Added lua_dumpfonts(_menu) for debugging
arrow_circle_up

Improvements

  • Try to avoid reloading the language multiple times on startup, and add some safeguards when trying to set the language to an invalid one
  • Other minor error handling improvements for Steam Workshop subscriptions
  • Use the new undo.AddFunction return value for "Make Statue" property
  • Made the message "CTextureAllocator::GetTextureRect has invalid texture handle! Expect crashes!" not as spammy
  • Improved handling of invalid texture handles when shadow rendering
  • Added infinite loop prevention for a rare case in shadow rendering
  • Do not try to load filesystem_steam.dll/so/dylib since we do not ship it or use it, should avoid a certain startup crash
  • Minor optimization in Base gamemode's CalcView hook (Community Contribution)
  • Updated CPackedStoreReadCache to its TF2 version, to hopefully fix an uncommon crash
  • Better error handling for getting subscriptions to hopefully prevent "Fetching subscriptions" rarely getting stuck forever for some people
  • Reduced spaminess of "Couldn't find/load font" warnings
  • Added some debug info to "%s overflowed reliable buffer" disconnect message
  • Added "total" count to mat_dump(textures/materials)
  • Saving tool presets now only resaves the changed preset group, not all of the preset groups
  • The default server browser now uses the connection address to connect, not the query address
  • Minor optimization with the PlayerColor material proxy (Community Contribution)
  • Minor optimization with the PlayerWeaponColor material proxy
handyman

Fixed

  • Fixed the game refreshing gamemode and map lists for menus multiple times while loading onto a map or disconnecting, remounting addons or changing gamemode
  • Fixed subscribing to addons while in game remounting addons more than once
  • Fixed memory sizes being displayed incorrectly in certain places with large values
  • Prevent spawnicons with sizes 33-63 from saving "_64" versions of the spawnicons, now uses the default 64x64 image without any suffix like it should
  • Properly remove unmounted (.gma) addon files from internal map so when something tries to access them we don't crash
  • Fixed models loaded by ClientsideModel() or similar methods losing their modelbounds data on map disconnect due to them being reloaded (for now, we don't reload such models)
  • Fixed gui.EnableScreenClicker()'s internal panel showing up after a screen resolution change while it is active
  • Fixes for potential crash issues when handling Lua entities in C++
  • Fixes for potential crashes with MOVECOLLIDE_FLY_CUSTOM, FLY_BOUNCE, FLY_SLIDE, DEFAULT
  • Fixed server browser blacklist being case sensitive
  • Missing the weapons/scripted_ents.Get function at entity creation no longer exits the game (For example when it's only missing clientside)
  • Let people know that -authkey is no longer needed in the srcds console if it is still in the srcds launch options
  • Fixed GameContentChanged hook running 3 times in a row in menu state
  • Fixed first file embedded in the BSP not being decompressed when needed
  • Fixed the default screen resolution selection so it should now select the desktop resolution
  • Added a nullptr check when generating the error texture to prevent crashes
  • Fixed PlayerWeaponColor material proxy hack for Super Grav Gun for cases where people override the default gravity gun (Community Contribution)
  • SteamAPI errors on non first page of Dupes/Saves/Addons/Demos will not hide the pagination so you can go back to the cached pages
  • Fixed a potential issue with Workshop Subscriptions not properly marking files as downloaded
  • Fixed deleting npc_manhack's sprites causing a crash when its deleted sprites are accessed by the NPC code
  • Fixed ErrorNoHalt not being considered a menu state error when it was called in the menu state
  • Fixed a bug with VPK file searching that would result in garbage data in file.Find
  • Fixed potential clientside crashes with ragdolls
  • Potential workaround for "SV_CreatePacketEntities: GetEntServerClass failed for ent 1." error message and crash when disconnecting from a listen server as a host while it is not empty
remove_circle

Removed

  • Removed files that are automatically sent from lua/send.txt
  • Deleted the Panel.IsModal existence check from DMenu now that the update is released and that check is no longer necessary
  • Removed unnecessary arguments in C++ => Lua workshop download callbacks in menu state
add_circle

Features

  • Enabled "Visual Styles 6.0", so Hammer's UI styles should now match OS
  • Added icons for env_sun, point_template and info_lighting_relative,
  • Added targetname keyvalue to light_environment (with a warning about file size) and updated the key names and help text of other keyvalues to better explain what each key does
  • Added "Sprinkle" tool from CS:GO (with an example sprinkle definition)
  • Added Random XYZ and Offset Z to Sprinkle tool
  • Added the Sprinkle Tool to the left sidebar
  • Added func_pendulum to the .fgd
  • Added info_lighting_relative to the fgd
  • Added (Set)LightingOrigin(Hack) inputs and keyvalues to prop_dynamic and all NPCs and (Set)ModelScale for prop_physics, prop_dynamic and NPCs
  • Added a preventative warning when trying to convert a displacement to an entity (Map with that won't compile)
  • Added fade distance keyvalues for prop_door_rotating
  • Texture Browser => Mark now marks decals/overlays if no solids with given texture were marked
  • Creating a new VMF will now spawn a simple box in front of the camera for orientation and select the "Selection" tool
  • Hammer will now select the nodraw texture on VMF load and when creating a new VMF rather than the first texture which will be random depending on custom content installed
arrow_circle_up

Improvements

  • Added a missing tooltip for ID_TOOLS_DISP_DRAWREMOVEDVERTS (One of the buttons on the top toolbar)
  • Horizontal resizing of Texture Browser now moves the buttons that would cover the current texture text
  • Adjusted the Texture Application Tool UI (Face Edit Sheet window) to fit longer texture names
  • Added extra width to the right side toolbar so Auto Visgroups can fit without a horizontal scrollbar
  • Adjusted icons for env_skypaint, lua_run (To remove the ugly white lines around the image) and info_lighting
  • Adjusted "Run Map [Advanced]" window to fit more parameters and made the newlines work in the Parameters text box
  • Increased textbox size of Texture scale so it fits the longest value it can have
  • Minor visual adjustments to Object Properties window
  • Made "Show Detail Objects" setting save across sessions
  • Moved the "use count" in texture browser above the texture name and fixed the opaque/self-illum/transparency icons to display properly
  • Made the "Entity Report" window a bit wider and stretched the bottom controls to the right edge
  • Changed the default 3D view type to "Textured Shaded" from "Wireframe"
  • Texture Browser's current selection is now a read only editable text box so you can copy from it
  • Replaced "Select Folder" dialogs in Options menu with the more modern ones
  • Increased the text fields width for many things in the first tab of Object Properties window
  • Model Browser now scrolls to the selected model
  • Marked "Hinge Axis" of prop_door_rotating as non functioning so there is no question about it. ("Fixing" it would break all existing maps)
  • "angles" keyvalue will no longer be created with values "0 0 0" when moving objects that have a model in the editor (such as decals)
  • Opening Entity Report for a different VMF when the Entity Report is already open will now properly recreate it for the currently active VMF
  • Added "CTRL+(SHIFT+)V" text to "Paste (Special)" in right click menus to let the user know about the existence of these shortcuts
handyman

Fixed

  • Fixed Auto visgroups UI being rebuilt for each solid face of the brush textures are being applied to, now rebuilds once
  • Fixed major hang when opening Texture Application Tool with many objects selected
  • Fixed multiple crashes due to .fgd BaseClasses being redefined with fewer variables than they had before
  • Applying textures via the "Face Edit Sheet" window or "Apply Current Texture" Tools no longer rebuilds visgroups UI for each object, only after all textures are applied, so it should be much faster now
  • Fixed custom detail.vbsp in map properties not having an effect in the editor itself
  • Fixed map views forcibly taking focus away from LightingPreviewWindow
  • Fixed custom "detailmaterial" not showing in the editor
  • Fixed the Ray-Traced Preview in Hammer being an error texture
  • Fixed a crash when trying to place a non existent Prefab using the Entity tool
  • Fixed a crash in Object Properties => Model
  • Marked certain Hammer config files as userconfig so they do not get wiped on branch change/verification (You can still delete them and verify to reset)
  • Fixed carving brushes with decals/overlays on them creating "Tell a programmer" windows
  • Fixed releasing LMB/RMB outside of the 3D view while painting displacements continuing to paint until you re-click in the 3D view
  • Fixed crashing issues with Object Properties Output/Input column sorting
  • KeyValue copy & paste now properly pastes the spawnflags (and updates the UI)
  • The Entity Report dialog will now close when its associated VMF is closed to prevent crashes
  • VRAD: Fixed 3d skybox being forced on certain leafs where 2d only skybox is expected