Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Added net.WriteUInt64, net.ReadUInt64, File:WriteUInt64 and File:ReadUInt64
  • Added Angle:IsEqualTol
  • Added render.ComputePixelDiameterOfSphere
  • Added COND.* enums, used in NPC creation
  • Added ENTITY:OnTaskFailed for ai type entities
  • Added NPC:GetIdealYaw, NPC:GetArrivalDirection, NPC:SetUnforgettable
  • Added NPC:GetCurGoalType, NPC:IsCurWaypointGoal, NPC:GetGoalTarget, NPC:GetGoalPos
  • Added CNavArea:MarkAsDamaging, CNavArea:IsDamaging
  • Added 2 optional arguments to util.JSONToTable - bypass depth/breadth limits & disable string to number conversion for keys
  • Added 6th optional argument to util.ScreenShake - AirShake
  • Added DComboBox:RemoveChoice (Community Contribution)
  • Added MatSelect:Clear (Community Contribution)
  • Added MatSelect:SelectedItemPaintOver (Community Contribution)
  • MatSelect:AddMaterial* methods now return the created DImageButton (Community Contribution)
  • Added local pnl = MatSelect:FindMaterialByValue (Community Contribution)
  • Added MatSelect:SelectMaterial (Community Contribution)
  • Vector:Mul now supports VMatrix
  • Added navmesh.CreateNavLadder
  • Added GM:OnCloseCaptionEmit hook
  • Added gui.AddCaption
  • Added Player:IsWalking
  • Added GM:OnPlayerJump hook
  • Added new optional argument to render.ClearDepth - stencil
  • Added a new argument to GM:EntityRemoved - for full update removes
  • Added NPC:SetViewOffset and NPC:GetViewOffset
  • Added Panel:GetScrollStartIndexes
  • Added missing enum for NAV_MESH_BLOCKED_PROPDOOR
  • Added navmesh.GetBlockedAreas
  • Added CNavArea:MarkAsBlocked, CNavArea:MarkAsUnblocked
  • Added CNavArea:RemoveAttributes, CNavArea:AddAttributes
  • Added ENT.ClassNameOverride and SWEP.ClassNameOverride (Community Contribution)
  • NPCData.OnCeiling, OnFloor, OnDuplicated can now also be functions
  • Added net.ReadPlayer and net.WritePlayer (Community Contribution)
  • Added 2nd return value to NPC:Disposition - priority
  • Added ents.Iterator and player.Iterator (Community Contribution)
  • Added string.CardinalToOrdinal (Community Contribution)
  • Added a new argument for killicon.GetSize
  • Added killicon.Render
  • Added killicon.AddTexCoord - subrect killicons on a single texture (Community Contribution)
  • Added sequential parameter to net.ReadTable/net.WriteTable (Community Contribution)
  • Added CNavArea:GetIncomingConnectionDistances
  • Added CNavArea:GetAdjacentAreaDistances
  • GM:OnEntityCreated is now also called for clientside only entities
  • Support Vector / Vector - divide each component individually
  • GM:OnScreenSizeChanged and PANEL:OnScreenSizeChanged get 2 new parameters - new width & height
  • Added optional filter option to EmitSound and Entity:EmitSound
  • Added Panel:GetLineHeight
  • Added Panel:SetLineHeight
  • Added Panel:AppendTextWithURLs
  • Added navmesh.FindInBox
  • Added CRecipientFilter:AddPlayers
  • Added CRecipientFilter:RemovePlayers
  • Added CRecipientFilter:RemoveMismatchedPlayers
  • Added "Bone" field for Entity:GetAttachment
  • Added optional argument to CLuaLocomotion:Jump - activity
  • Added Vector:Distance2D and Vector:Distance2DSqr
  • Added GM:HandlePlayerArmorReduction
  • Added SANDBOX:PreRegisterTOOL hook (Community Contribution)
  • Added GM:CanCreateUndo hook (Community Contribution)
  • Added math.Factorial (Community Contribution)
  • Added ENTITY:TranslateActivity for ai type entities
  • Added GM:PostEntityFireBullets
  • Added NPC:SetIdealYaw
  • Added NPC:UpdateYaw
  • Added NPC:IsFacingIdealYaw
  • Added NPC:SetIgnoreConditions
  • Added NPC:RemoveIgnoreConditions
  • Added IGModAudioChannel:GetBufferedTime
  • Added math.tau (Community Contribution)
  • Added option to force override child tables in table.Merge (Community Contribution)
  • Added table.move for non x86-64 beta versions of the game (Community Contribution)
  • Added ENT:OverrideMove and ENT:OverrideMoveFacing for ai ents
  • Added ENT:TranslateSchedule and ENT:OnStateChange for ai sents
  • Added NPC:AdvancePath
  • Added net.Abort
  • Added ENT.WantsTranslucency and use it for sandbox entities - better handles render group stuff for Sandbox entities
  • Added IsValid methods to CMoveData/CUserCmd/CEffectData/CTakeDamageInfo
  • Allow omitting first argument to NPC:SetSquad to remove the NPC from its squad
  • Added util.GetAnimEventNameByID for integration with custom animation events in models
  • Added a callback to game.CleanUpMap to defer it until end of tick and avoid overflowing entity limit
  • Added util.IsRayIntersectingRay
  • Added NPC:GetIdealSequence
  • Added 7th optional argument to util.ScreenShake - filter (serverside only)
  • Added DMenuOption:SetRadio/DMenuOption:GetRadio
  • Added DSP as 6th optional argument to sound.Play
arrow_circle_up

Improvements

  • Panel:GetNumLines now works with TextEntry
  • Added .dem, .gma and .vcd to file.Write whitelist
  • Added model file types to file.Write whitelist
  • Weapon:GetTracerOrigin is now called for 3rd person view as well
  • Also made certain render.Push* function overflowing not crash the game outright
  • Better optional argument handling for sound.Play
  • Bumped gui.OpenURL url limit to 2000 characters
  • Allowed GM:OnPhysgunFreeze to be ran on non vphysics entities - the 2nd argument (PhysObj) will be NULL for those cases
  • Panel:DrawTextEntryText doesn't silently fail with invalid input, will correctly error instead
  • killicon.Add can now use .pngs
  • Made NPC:SetUnforgettable 2nd argument default to true
  • ProtectedCall supports varargs just like pcall
  • Entity:SetIK is now shared (was clientside only)
  • Increased output limits of ents.FindInCone/Box, ents.FindAlongRay to match max entity count
  • Altered how missing members of GM:EntityFireBullets return table work, defaulting to pre existing values, not to static values
  • Entity:SetPreventTransmit can now accept a table of players or a filter
  • Return true for GM:EntityFireBullets in base gamemode - This allows multiple hooks to modify the bullet structure (Community Contribution)
  • Allowed omitting slot parameter to Entity:NetworkVar (Community Contribution)
  • Panel:GetText/Panel:GetValue now returns text of RichText panels
  • Improved default ammo HUD interactions with WEAPON:CustomAmmoDisplay
  • Player:SetPData and util.SetPData transition to use SteamID64
  • Significantly improve the performance of SortedPairs (Community Contribution)
  • Refactored list library - micro optimisations and added a 2nd argument to list.GetForEdit - do not create the list if it is missing (Community Contribution)
  • Limited DAdjustableModelPanel FOV to 0-179
  • Base gamemode respects DMG_REMOVENORAGDOLL for players
  • surface.SetFont throws non halting error when font is invalid - This matches behavior of other font related functions
  • Type error when giving invalid input to Entity:PhysicsInitMultiConvex and Entity:PhysicsFromMesh
  • ClientsideRagdoll and ClientsideModel uses dynamic model indices clientside - This allows ragdolls to have their physics clientside without being first precached on the server
  • Blocked cl_defaultweapon convar from being modified by Lua - Creates confusion for players who don't know of its existence
  • Move where GM:HUDShouldDraw for NetGraph is called
  • Blocked developer & contimes convars
  • Blocked render.Capture and render.CapturePixels while the main menu is open
  • Prevent clientside entities spawning when they would be inaccessible with Lua due to the entity limit
  • Allow constraint.Keepupright to be called on more entities
  • Throw an error on invalid input to PropSelect:AddModel
handyman

Fixed

  • Fixed DNumberWang passing both strings and numbers to OnValueChanged (Community Contribution)
  • Fixed Player:SprintEnable not working
  • GM:EntityEmitSound blocks CSceneEntity close captions
  • Made 2nd argument of EmitSound actually set the sound position
  • EmitSound precaches the sound when ran in multiplayer serverside
  • Sentences system calls GM:EntityEmitSound
  • Use brackets for keys in PrintTable to avoid confusion with trailing/leading whitespace (Community Contribution)
  • Fixed Panel:GetNumLines not being up to date within TextEntry:OnTextChanged.
  • Fixed an infinite loop with string.Comma when giving invalid input (Community Contribution)
  • Fixed NPC:SetSquad not working when the NPC has no squad
  • Fixed DListBox selection not working
  • Fixed IGModAudioChannel:SetPan not using float inputs
  • Round down DGrid column/row sizes to get rid of 1 pixel gaps (Community Contribution)
  • Fixed Entity:SetNW/GetNW methods being usable on NULLs without errors
  • Fixed crashes when trying to call navmesh.Load too early
  • Fixed calling Entity:Spawn twice on ragdolls crashing the game
  • Fixed Entity:SetModel on prop_ragdoll causing the model to look glitchy
  • SurfaceInfo:GetVertices now works on surfaces with non poly primitives
  • Performance improvements for file.Exists/file.IsDir in Lua paths
  • Mitigate a random crash with NPC:SetSquad
  • Made clientside ragdolls be considered ragdolls
  • Fixed freeze with table.Add when given same table in both arguments (Community Contribution)
  • Fixed a crash when AddOriginToPVS is ran too early
  • Fixed DMenuOption:SetChecked not calling DMenuOption:OnChecked
  • Enabled usage of clientside entities for CEffectData:SetEntity
  • Fixed util.IsBinaryModuleInstalled giving false positives when the module is in addons/ (Community Contribution)
  • Fixed an infinite loop with Panel:SetDragParent (Community Contribution)
  • Added u1 and v1 field support to IMesh:BuildFromTriangles
  • GM:PropBreak uses attacker, not inflictor for the player in certain cases. Also now checks for physics attacker.
  • Fixed Lua Effects changing their Lua entity table if accessed too early
remove_circle

Removed

  • Removed DHScrollBar:Value and DVScrollBar:Value() (long deprecated, returned nil)
  • file.Exists no longer works with wildcards. This was an undocumented unintentional feature, or more accurately a bug. Very likely util.IsBinaryModuleInstalled will fulfill your use case.
add_circle

Features

  • Added some Portal 1 entities - the rocket and normal turrets, personality cores, fizzler trigger and security camera. They are available to be spawned through the spawn menu in Sandbox
  • New default crosshair and crosshair customization
  • Addon preset importing and exporting
  • Confirmation when deleting addon presets
  • Added custom icons for tree nodes in spawnmenu categories (Community Contribution)
  • Added g_ragdoll_maxcount to server settings in spawnmenu
  • Added map icons for new Team Fortress 2 maps
  • You can now favorite addons through main menu
  • Added Server settings to Sandbox menu bar - Making them more visible to players
  • Allow right clicking in Bodygroup & Skin context menus - This allows you quickly change bodygroups and skins without closing the menu
  • Added gmod_sneak_attack console variable to disable Half-Life 2 sneak attack system
arrow_circle_up

Improvements

  • More kill icons for physics-related kills
  • Adjust "Failed to find any models for this addon" error in spawnmenu to include a reason why it might be happening, as well as fit the text within its container
  • Half-Life Source ceiling turrets can now be spawned on the ground as well (Community Contribution)
  • Reduced default max_fps to 150, made it save across sessions, and add an option for it in video settings
  • Renamed CS:GO mountable game to mention the legacy branch - this option might be removed in a future version
  • Updated gm_construct navigation mesh - added walkable drop down only areas to elevated areas, such as roofs of certain buildings, added one way out of the secret room - this is mainly to hide the warnings on map load
  • Save NPC health and maximum health in duplications
  • Set max health for NPCs spawned from spawnmenu that have health override, for things like healing NPCs
  • Moved Multiplayer options tab to front, and renamed it to Game, moved FOV and Fast Weapon Switch options to it, removed those from their previous places, removed "Advanced" keyboard options which are now obsolete - this is aimed to help players find these settings easier
  • Make it easier to select addons in the Addons list - by being able to click the description, etc (Community Contribution)
  • Improved projected texture shadow quality - enabled texture filtering
  • mat_depthbias_shadowmap was changed from 0.00001 to 0.001 by default (affects shadow rendering)
  • Replaced util.TraceLine by util.TraceHull for tool traces. Fixes trace bypassing parented props (Community Contribution)
  • Don't play ammo pickup sounds for NPCs
  • Updated language files
  • Added placeholder Portal 2 entities to visually fill gaps on Portal 2 maps
  • Added L4D1 entity placeholders - makes safehouse doors at least appear on those maps, etc.
  • Prevent empty gun sounds when trying to secondary fire certain weapons underwater that do not have a secondary fire attack
  • Do not allow Half-Life 2 helicopter to be dissolved by AR2 altfire
  • Faceposer: When model has too many flexes, display a message and visually disable non functioning sliders
  • Disabled ability to grab jeeps with super Gravity Gun - causes severe physics lag
  • Added fallbacks for CS:S muzzleflash textures that do not conflict with base game textures
  • Added window titles to disconnect messages based on the message source
  • Ported RPG weapon behavior from Half-Life 2 - prevent NPCs from killing themselves with it
  • Don't record certain pointless convars and commands in demos (like gm_demo itself)
  • Query server addons 500 at a time (was 50) - Should speed it up
  • Display a message when the HTML main menu fails to load with simple options to quit the game
  • Added timestamp to code signed game binaries
  • Display a problem in the Problems panel when certain files are not writable, such are user configurations being set to read-only
  • Selecting items in the Paint tool UI will now switch to the Tool gun if it is not active
handyman

Fixed

  • Added Portal 1 scene files and made particles work on Portal 1 maps
  • Several map category adjustments for new Fistful of Frags and Team Fortress 2 maps (Community Contribution) (fofhr_, zi_, vsh_)
  • Disallowed making addon presets with empty names
  • Fixed addon presets with number only names being unable to be deleted
  • Fixed saved cursor position resetting to middle of the screen when clicking outside of the spawnmenu while it is open
  • Disabled Half-Life 2's sneak attack code for non-hostile NPCs, when "ignore players" is enabled, or AI is disabled - Fixes NPCs getting one shot in the head by players most the time
  • Favorite and Vote Up/Vote Down status for addons is now better synchronized with real values
  • Fixed citizens healing players with ai_ignoreplayers set to 1, or when the player is standing above the NPC
  • Fixed "addon file conflict" problem duplicating file paths on addon remount
  • Fixed env_skypaint shader flickering when not given a valid sun normal
  • Fixed bugbait animations when using alt fire right after throwing a bait
  • Fixed AR2 using 2 extra bullets when trying to fire right after using the alt attack
  • Fixed shotgun locking up when holding reload and attack buttons during the reload animation
  • Fixed 3rd person animation events playing in 1st person when the animations are reset - fixes shotgun playing extra pump sound when holding reload key while firing
  • Fixed certain sandbox tool entities not saving certain settings in duplications - such as being frozen by the physics gun and the "Make Persistent" setting
  • Consistent death handling for Half-Life: Source NPCs with ai_serverragdolls enabled and disabled (previously, certain NPCs would either not die, or make extra ragdolls)
  • Security fixes and improvements
  • Fixed spawnmenu "Save Changes" / "Revert" buttons not having icons
  • Don't explode props on touch if caught by Physics Gun (explosive barrel after being launched using Gravity Gun)
  • Fixed game_text text (on screen text from maps) being cut off on screen if it is very long
  • Fixed bugs when entering a vehicle while dismounting a ladder
  • Prevented Half-Life 2 avoidance system making NPCs invisible when standing inside of them
  • Fixed old saves, dupes and demos not extracting when loaded in the main menu
  • Fixed combine dropship container gun aiming
  • Fixed taunt camera (act dance, etc) making view punch angle roll permanent
  • Fixed deleting a bunch of text in a TextEntry (And console input) and then typing not updating the horizontal scrolling to show the typed text
  • Fixed duplicated NPCs being unintentionally dropped to floor sometimes
  • Fixed shotgun firing on its own after being unholstered when trying to fire while reloading and holstering the weapon
  • Fixed being able to open ammo crates from any distance using delayed damage (such as a grenade) and switching to Crowbar
  • Fixed RPG spamming sounds clientside in 3rd person in multiplayer when trying to fire during reload
  • Prevent certain NPCs from being eaten by Barnacles, leaving uninteractable/non removable models behind
  • Fixed func_tanklaser trying to use missing sounds
  • Prevent mega Gravity Gun being enabled making all NPC weapons dissolve on death, even when not killed by it
handyman

Fixed

  • Fixed crash with npc_satchel
  • Fixed crash when try to push a NULL ITexture
  • Fixed a crash when failing to create a fish entity
  • Fixed a crash when failing to create child ents for point_spotlight
  • Fixed crashes when failing to create entities for fire entity
  • Fixed Gravity Gun leaking material reference count
  • Fixed crashes with deleting ai_network entity
  • Bumped "insane reference count" threshold 10x
add_circle

Features

  • Made GM:OnLuaError available on client and server
  • Added overflow/underflow safeguards to render.Push/PopRenderTarget functions
arrow_circle_up

Improvements

  • Made Entity.PhysicsInitMultiConvex throw type errors when given invalid input
  • Shutdown HTML after VGUI - hopefully fixes a rare crash on game exit
  • Blocked access to .db files via the file library
  • Added safeguards against malformed .gma files
handyman

Fixed

  • Made the BSP whitelist case insensitive
  • Made LuaMesh.BuildFromTriangles correctly modify the mesh when used on an already generated mesh - This is now only permitted when the vertex count matches between existing mesh, and the new mesh.
  • Fixed several security issues reported on HackerOne
remove_circle

Removed

  • Removed unused DLLs from game's folder - bugreporter.dll, sixense.dll, headtrack_oculus.dll
arrow_circle_up

Improvements

  • Made "Entity thinking for X ms!!!" physics warning to only appear when "developer" is set to "1" or above
handyman

Fixed

  • Fixed saves really not working on maps with spaces in their names
  • Fixed a number of security issues reported over the holidays
  • Fixed addon file paths being lowercased before being mounted, causing issues for Linux users
  • Allowed color correction files (materials/*.raw) and vehicle scripts (scripts/vehicles/*.txt) in map files