Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Added SF_PHYSPROP_IS_GIB, SF_PHYSBOX_ALWAYS_PICK_UP, SF_PHYSBOX_NEVER_PUNT, SF_WEAPON_START_CONSTRAINED, SF_WEAPON_NO_PLAYER_PICKUP and SF_WEAPON_NO_PHYSCANNON_PUNT enums (all shared)
  • Added NextBot.IsAbleToSee( ent, useFOV = true )
  • Added NextBot:Set/GetFOV()
  • Added CNavArea.IsPotentiallyVisible( cnavarea )
  • Added CNavArea:IsCompletelyVisible( cnavarea )
  • Added Nextbot.Set/GetMaxVisionRange()
  • Added CNavArea:IsPartiallyVisible( eyepos, ignoreEnt = NULL )
  • Added DLabelEditable.Set/GetAutoStretch, defaults to false
  • Added NEXTBOT:OnEntitySight and NEXTBOT:OnEntitySightLost
  • Added Material:Get/SetVector4D, returns/takes 4 numbers
  • Added DButton.SetMaterial() (Community Contribution)
  • Added Player.OwnerSteamID64(), serverside only, returns the SteamID of family sharing owner of the game license (or just the player's SteamID if not using FS), will be 0 before player is fully authed
  • NPC.NavSetGoalTarget, NPC.NavSetRandomGoal, NPC.NavSetGoal and NPC.NavSetWanderGoal now return a bool - whether the path generation succeeded or failed
  • Added a 2nd argument to util.RedownloadAllLightmaps - update static prop lighting
  • Added "stack" argument for GM:OnLuaError
  • Added DTree_Node.GetChildNodes
  • Added DTree_Node.GetChildNodeCount
  • Added DCollapsibleCategory.SetHeaderHeight
  • Added DCollapsibleCategory.GetHeaderHeight
  • PropSelect.AddModel(Ex) now returns the icon it creates (Community Contribution)
  • RecipientFilter global now has a new optional argument - make unreliable
arrow_circle_up

Improvements

  • DNumberWang.OnValueChanged is now only called when the value has actually changed
  • Increased precision of doubles in util.TableToJSON
  • Player.SetActiveWeapon( NULL ) now hides the view model as expected
  • Player.SetActiveWeapon( NULL ) no longer causes next selected weapon to be force-lowered
  • surface.DrawCircle is no longer made out of dots but uses lines and it's color argument is now optional
  • Promoted "HTTP failed - ISteamHTTP isn't available!" to an ErrorNoHalt with stack to help identify what addon is causing the error message
  • Weapon.SetClip1/SetClip2 marks the weapon to not give out reserve ammo/reset clips on weapon pickup
  • Made Entity.Use's last 3 arguments optional
  • More consistent "self" type/NULL checking for CNavArea and CLuaEmitter
  • CLuaParticle.SetThinkFunction/CollideFunction now ErrorNoHalts on bad input, instead of a silent message
  • DCollapsibleCategory now works better with Derma skins
  • CreateSound() no longer forces the internal filter to be reliable
handyman

Fixed

  • surface.DrawTexturedRect(UV) now work with poster command nicely
  • Fixed clientside DTVar callbacks not being called when setting an "Entity" type property to NULL
  • Fixed PANEL:OnStopDragging being called multiple times per "dragging drop" (Community Contribution)
  • Fixed engine.LightStyle crashing with style=64
  • NPC.NavSetGoal no longer tries to generate a 0 length path failing every time, now has 2 more arguments, minPathLength and direction = vec3_origin
  • Fixed render.DrawQuadEasy producing malformed/squashed quads in very certain rare cases
  • Player.PickupObject now force drops the given object before trying to pick it back up, so the object doesn't get stuck in an invalid state
  • Player.SetNoCollideWithTeammates( true ) no longer causes players with Team ID 1-4 to not receive melee damage from NPCs
  • Fixed walking on player heads not working correctly if SetNoCollideWithTeammates() is set to true and the 2 players are in different teams in teamID range 1-4
  • Fixed players on moving brush entities getting instantly killed if inside each other with SetNoCollideWithTeammates( true )
  • Fixed players getting flung unexpectedly from frozen props, most noticeably with SetNoCollideWithTeammates enabled and standing in teammates
  • Avoid console errors when using PrintMessage with weird input
  • DMenu submenus inherit parent's derma Skin
  • Fixed HTTP() global trying to use invalid ISteamHTTP pointer after changelevel on dedicated servers causing a crash
  • DModelPanel clears render depth automatically fixing weird artifacts when 2 or more DModelPanels are on top of each other
add_circle

Features

  • Added client console de-duplication, can be toggled with con_filter_dupe
  • Added Mass icon resize and re-render feature to the spawnmenu, by selecting many icons and right clicking on them
  • Added Freeze/Unfreeze effects check boxes to Physics Gun Settings
  • Added "Sandbox Settings" in User category in Utilities which contains the search max results slider + some sandbox related toggles from the menubar
  • Weapons in the weapons tab now have an "NPC" icon if they can be used as NPC weapons, with a right click option to set that weapon as the current NPC weapon override
  • Added kill icons for prop_ragdoll, prop_physics_respawnable, func_pushable and func_physbox (same as prop_physics)
  • Added 51 new main menu backgrounds from the contest, replacing old ones
arrow_circle_up

Improvements

  • Changed "persistence mode" to "persistence file" and added a bit more info about persistence itself to Spawnmenu's Sandbox Settings menu
  • Garry's Mod Terms Of Service and Privacy Policy now open in Steam overlay if possible
  • Links that open in Steam Overlay fallback to built-in HTML renderer if Steam Overlay is disabled
  • Servers with ping under 60 now have identical ranking impact from ping in the server browser (Community Contribution)
  • Bot players are also subtracted from maxplayers, so there are no cases of server appearing with open slots while it has none
  • NPC weapon selection is now sorted alphabetically
  • Added sk_npc/plr_dmg_crowbar/stunstick convars that control Crowbar and Stunstick damage, as a result default crowbar and stunstick damage was reduced to its Half-Life 2 values, matching all other built-in weapons
  • Improved performance of projected textures (Lamp tool, flashlight, etc) when looking away from them (Community Contribution)
  • Reduced minimum width for rope based constraints to 0.2, from 1 (Community Contribution)
  • weapon_fists now obeys the phys_pushscale convar (Community Contribution)
  • Updated language files
  • Main menu backgrounds never switch to the same image unless there's only 1 image
  • Exiting the server browser will now immediately stop searching for servers
  • Resizing the spawnmenu tabs will affect all tabs on the same side at the same time
handyman

Fixed

  • Fixed extreme lag when entering PVS with props that have material override pointing to a non existent material, most noticeable on multiplayer Sandbox servers
  • Fixed extreme performance loss when trying to render unmounted materials (unmounting CSS while on a map that uses CSS content and re-joining that map)
  • Fixed certain props disappearing and spamming the console on map change
  • Underwater sounds no longer play when dead and player's camera is not underwater
  • Dying to Half-Life 2 leeches no longer keeps playing the leech sounds until you respawn
  • Dying above water with leeches also no longer plays the leech sounds when your player entity falls underwater while you are dead
  • Addons that use too many decals will no longer boot players to main menu when trying to start singleplayer game
  • Fixed Undo & Cleanup panels in Utilities becoming blank after spawnmenu_reload
  • Fixed Motion Blur and Overlay Post Processing effects not working well with poster command
  • Fixed Toy Town post processing effect having 1px tall gap at the bottom of the screen with certain settings
  • SuperDOF UI window now repositions itself when player's screen resolution changes so it will not be left off-screen
  • Fixed a large memory leak when decompressing files embedded in the BSP map file
  • Physics Gun glow/beam will no longer render in 3rd person if the weapon itself is not visible
  • Fixed echo and other DSP effects not resetting on map change
  • "retry" console command in singleplayer now acts like "map currentmap.bsp", instead of locking up the game
  • Reduced/removed high frequency noise on wood, concrete, tile and metal footsteps
  • Reduced hard cutoff on rubber footstep sounds (loud clicking noises) when sprinting
  • Player's footsteps no longer play mid-air if the prop they were walking on got deleted
  • Reduced volume of chain link footsteps to match the other footstep sounds
  • Fixed missing Stalker NPC sounds
  • Right click removing stuff with the Remover tool now properly progresses the Remover achievement on Steam (Community Contribution)
  • Fixed missing sounds for Narrator from The Stanley Parable
  • Self-controlled func_tank turrets obey "Ignore Players" option
  • Fixed props on certain maps (Half-Life 2 Episode 2 for example) going invisible or becoming transparent unexpectedly
  • Fixed Star Scale, Fade and Speed fields of Sky Editor not saving/restoring properly with the duplicator/save tab
  • Fixed certain (looping) sounds not restarting when reconnecting to a server
  • Fixed certain (looping) sounds not updating properly sometimes (such as Thruster sounds keep playing when the thruster is turned off)
  • Fixed addon titles in the Spawnmenu not properly reflecting the addons' Workshop title
  • Picking up an Effect with the Physics Gun now applies the glow effect to the model itself, not the green ring
  • Fixed spawnlist divider not restoring its width properly (Community Contribution)
  • Fixed pressing Enter in Tool tab search/filter collapsing all categories unexpectedly
remove_circle

Removed

  • Removed cheat flag from "viewmodel_fov" console variable
  • "Drive" property no longer appears for Jeeps as it simply cannot move them
handyman

Fixed

  • TTT: Fixed an incorrect comment (Community Contribution)
  • TTT: Added French translation (Community Contribution)
  • TTT: Optimized streaming of end-of-round report (Community Contribution)
  • TTT: Avoid clipping victory text in round report and other fixes (Community Contribution)
add_circle

Features

  • Added current material count to mat_texture_list when expanded
  • point_teleport - Added the episodic "Teleport into crouch" spawnflag, Added TeleportEntity & TeleportToCurrentPos inputs (Hammer Editor included)
  • Added mat_dumptextures console command - dumps all used textures by the engine, for debugging
arrow_circle_up

Improvements

  • Sandbox persistence now trims whitespace on input so you don't end up with files that the game refuses to write to/read from
  • Minor improvement for addonsystem from x64
  • Delete physics object of Toolgun ghost as it doesn't need physics at all
  • Added filename to "steamworks.DownloadUGC: Failed to read addon file" console message
  • Increased MAXSTUDIOFLEXVERTS to 65536
  • Switched GM:GetFallDamage to use GetConVar() over GetConVarNumber() in base gamemode (Community Contribution)
  • Broken Patch materials fallback to LightmappedGeneric, instead of Wireframe, reducing invisible walls, floors, etc
  • Increased MAX_MAP_MODELS to 4096
  • Quadrupled console history log if game is started with "developer 1" or higher
  • "Something is creating script errors" message now also shows the folder addon names, instead of falling back to the default "Something is creating script errors"
handyman

Fixed

  • Fixed a rare Javascript error with the server browser
  • Fixed materials without a valid shader becoming completely inivisible, now appear as wireframe
  • Fixed a typo in a certain gm_save console message (Community Contribution)
  • Fixed prop_physics_respawnable not respawning as expected
  • Fixed loading of .png textures after a map change trying to load non existent .vtf versions of the textures
  • Fixed mounting Portal 2 making models/player.mdl spawn as an unmovable, uninteractable object
  • Fixed servers trying to send a random Lua file to clients if there is no files needed to be sent
  • Fixed some procedural textures allocating a material slot every time they are reloaded, for example spawnmenu icons on spawnmenu_reload/map reload and Material() calls with backslashes
  • npc_barnacle clears the entities it spawns when removed
  • trigger_weapon_dissolve no longer crashes the game if one of the weapons it is meant to delete got removed prematurely by something else
  • npc_barnacle no longer crashes the game if it is missing its "tongue" entities
  • Shadow rendering doesn't crash when it encounters a null renderable
  • Potential fix for crashing with Inverse Kinematics on certain models
  • Fixed decal related crashes on world geometry (brushes/displacements) when the material they are applied to/rendering with is unmounted
  • More crash safeguards when loading localization files
  • Fixed gamemode ConVars being recreated multiple times during map loading, possibly leaking memory
remove_circle

Removed

  • Hide mat_texture_limit console variable
add_circle

Features

  • Added GM:PlayerAmmoChanged
  • Added GM:PreDrawViewModels
  • Added SANDBOX:CanArmDupe
  • Added Player.GetUseEntity
  • Added Player.PickupWeapon
  • Added NPC.PickupWeapon
  • Added NPC.GetWeapons
  • Added NPC.GetWeapon
  • Added NPC.SelectWeapon
  • Added NPC.RememberUnreachable, to give NPC.IsUnreachable a reason to exist
  • Added NPC.HasEnemyEluded
  • Added NPC.HasEnemyMemory
  • Added NPC.GetEnemyLastKnownPos
  • Added NPC.GetEnemyLastSeenPos
  • Added NPC.GetEnemyLastTimeSeen
  • Added NPC.GetEnemyFirstTimeSeen
  • Added NPC.SetIdealYawAndUpdate
  • Added ENT:OnChangeActivity for base_ai entities
  • Added Entity.SetLayerSequence
  • Added Entity.GetLayerSequence
  • Added utf8.sub and utf8.GetChar (Community Contribution)
  • Added GM:PlayerCheckLimit (Community Contribution)
  • Added GM:CanUndo (Community Contribution)
  • Added PLAYER:Death (Community Contribution)
  • Added optional argument to render.DrawScreenQuad() - Apply poster corrections
  • Added optional argument to NPC.MarkEnemyAsEluded and NPC.ClearEnemyMemory - Enemy entity override
  • Added .vmt to file.Write whitelist
  • Current value is passed to DTextEntry's OnEnter callback (Community Contribution)
arrow_circle_up

Improvements

  • controlpanel.Get will no longer return panels that are about to be deleted (in the next frame)
  • Vector.__div now type checks its second argument
  • Angle/Vector.__newindex now type checks its 3rd argument
  • Added a non-halting error message when mods are trying to send an overflowed net message
  • Entity.Set/GetLayerDuration, Entity.Set/GetLayerCycle, Entity.SetLayerBlendIn, Entity.SetLayerBlendOut, Entity.IsValidLayer are now shared
  • render.Capture now accepts "jpg" as an alias of "jpeg" format
handyman

Fixed

  • ENT:StoreOutput() works for newer Source Engine map IO format
  • Fixed OBS_MODE_FIXED/CHASE/IN_EYE having bad spectator behavior due to the player's movetype being set to NONE
  • Fixed SWEP:OwnerChanged being very unreliable and inconsistent
  • Fixed ents.CreateClientside entities not receiving projected textures
  • Fixed returning true in GM:EntityEmitSound hook when the Entity is a clientside only entity causing the ent index to be read incorrectly, which in turn caused infinite scrape sounds for gibs
  • Fixed effects.BeamRingPoint having its blue and green color channels swapped
  • Fixed NPC.Give() being able to give an NPC multiple copies of the same weapon, now returns the existing copy
  • Fixed double "expected" in VMatrix.__mul type error message
  • Fixed PANEL:OnMouse* and PANEL:OnCursor* hooks not working on panels derived from RichText
  • Fixed cvars.AddChangeCallback's identifier not working as intended (Community Contribution)
  • base_gmodentity.GetPlayer() now properly returns the player object after player reconnected to the server for base_gmodentity derived entities (Community Contribution)
  • Fixed loading of .png materials with different material parameters not working properly
  • Fixed Entity.AdvanceFrame crashing the game with invalid sequences
  • Fixed Lua errors from PositionSpawnIcon() with bad entities
  • Fixed Entity.NetworkVarElement not saving/restoring properly
  • Fixed NWVars not updating properly on clients when joining a server/reconnecting
  • Fixed an exploit with presets.Add (Thanks to Deyvan)