Garry's Mod Logo
schedule 13 March 2024
update

March 2024 Update

This update brings a new default crosshair for the base game, ability to customize your crosshair, as well as plethora of other changes.

Rubat
Programmer
Estonia
This update brings a new default crosshair for the base game, as well as ability to customize your crosshair.

This is usually fulfilled by using addons, but the default crosshair had a long standing issue of being impossible to see on bright backgrounds, so a new one was well overdue.

You can now customize the crosshair in the Options menu:
(You can reset the slider values by middle mouse clicking on them! It works in many places!)

The new default crosshair, a dot image, is visible no matter what you are looking at. You can still use the old crosshair if you really must, via the aforementioned crosshair customization.

The options menu was also changed a bit:
Bringing some of the more obscure settings to the front, so players know of their existence.
A quality of life change to the built-in Bodygroup & Skin changer is added in Sandbox:
You can now switch skins and bodygroups without closing the menu by right clicking on the options.

Additionally, new quick options are now available in the Server section of the menu bar:

These are only available to be changed in singleplayer or by the listen server host, but hopefully will bring more of a spotlight to existence of these settings.




A lot of more of them can be found in the Spawnmenu's Utilities tab, which were added in previous updates:






  
Portal 1 entities are now also available in the base game for owners of Portal 1 on Steam:
There has been a huge amount of other, smaller changes that may or may not be visible to players.

You can now share addon presets with your friends, or import them from collections:
Some improvements were made to duplicator support, such as saving NPC health and max health, "Make Persistent" option, and "frozen by physics gun" status.

A large amount of crash issues were fixed.

As usual, a large amount of new Lua API features were added for mod makers, as well as some minor improvements to map making tools.

You will find a complete list of changes below this update post.
arrow_circle_up

Improvements

  • Increased some mapping limits:
  • MAX_MAP_OVERLAYS 1024 -> 8192
  • MAX_MAP_TEXDATA 2048 -> 8192
  • MAX_MAP_TEXINFO 12288 ->16384
  • Error checking in spawnicon context menu when spawnicons are removed while the player has the context menu open
handyman

Fixed

  • Fixed "cc_lang: invalid language" warning appearing with empty cc_lang
  • Fixed "Tried to Read into NULL memory!" warning appearing when mounting L4D2
  • Fixed random crashes to do with ClientsideModel & ents.CreateClientProp
  • Fixed a crash with NWVars
  • "Remember my choice for this server" is actually remembered when pressing "no" for the current session
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
add_circle

Features

  • Added Turkish translations (Community Contribution)
arrow_circle_up

Improvements

  • Prevent TTT weapon base creating Lua errors with NPCs (Community Contribution)
  • Transition to use SteamID64 where possible (Community Contribution)
  • Changed capitalization of certain weapon ammo types to match engine (Community Contribution)
  • Minor code clean ups and optimisations (Community Contribution)
  • Optimized radar ping network traffic (Community Contribution)
handyman

Fixed

  • Fixed a bug with Magneto Stick and the pinning convars (Community Contribution)
add_circle

Features

  • New VertexLitGeneric shader parameters - $AllowDiffuseModulation and $NoTint - both allow disabling color tint per material, enabling better compatibility with content from other Source engine games
  • Additions to .gma whitelist - materials/colorcorrection/*.raw and data_static/ - alternative to data/ folder with all the acceptable extensions for file.Write (except for the files that were already previously allowed, such as models, materials, etc)
  • Added some of the existing navmesh related entities to the base FGD
  • Restored content unloading, behind a convar - gmod_unload_test
  • Added SolidEnergy shader from CS:GO - enables certain things to draw correctly from Portal 2
  • Added lua_refresh_file <path>
  • Added quit keep_players option to not force disconnect players, a requested feature by server owners
  • -allowquit makes engine.CloseServer() function and run "quit keep_players"
  • Added Impact_GMOD effect that supports usage of IMPACT_ flags
  • Added "teamonly" param to "player_say" game event
  • Added "trace" console command for debugging purposes
  • Added sphere visualizer to point_message radius in Hammer
  • Added "Use" input to most entities in Hammer
arrow_circle_up

Improvements

  • Added file path to "ERROR: couldn't open." warnings
  • Change usages of deprecated gui.MousePos to input.GetCursorPos (Community Contribution)
  • Safeguards against malformed .gma files
  • Empty stored entity outputs when pasting duplications to prevent abuse
  • Reduced Player.__index calls in player 3rd person animations for performance improvement (Community Contribution)
  • func_physbox/func_pushable is ignored by navmesh generation as walkable surfaces
  • More "reportable" keyvalues in default FGDs - shows useful info in the Entity Report window
  • Disabled default automatic navmesh unblocking to accommodate CNavArea:MarkAsBlocked
  • Hide "No bound shader" warning behind developer 1 - and also add which materials the error is for
  • A bit faster optional argument handling for Lua API
  • Added classnames to "C_BaseEntity::UnlinkFromHierarchy" warning
  • Safe guard against invalid vector input to PhysObj functions to prevent crashes
  • Read settings/users.txt from MOD search path for safety
  • Limited lua_error_url to http(s) and send the client's SteamID with the Lua errors
  • Bumped MAX_MAP_ENTITIES to 65k (tools only) and engine hunk limit to 256MB
  • Unhide r_portalscloseall cheat convar
  • Fallback certain shaders that are not shipped with the game to existing ones only if they don't exist
  • Favorite workshop categories are no longer cached - so that they update properly when favorites change
  • Mention what nav_quicksave 2 does in the description of nav_quicksave
  • Enable episodic behaviors for npc_citizen when hl2_episodic is set to 1
  • Do not handle spawnicons during render.RenderView to prevent possible issues
  • Turn Lua effect creation warnings into non halting Lua errors so they have a stack trace
  • Initialize vectors when GetSequenceLinearMotion fails to prevent potential crash issues
  • Increased MAX_LIGHTSTYLES to 128 (from 64)
  • Switched func_rotating to use CSoundPatch for its looping sounds to fix missing sounds when joining a multiplayer server after a round has started
  • Display HLTV client connect messages differently from normal clients
  • Hide HLTV servers from the server list - They can't be displayed properly side by side right now (Game servers running HLTV are still visible)
  • WEAPON:CustomAmmoDisplay uses pooled string (potential micro optimization)
  • Micro optimization for missing physics objects
  • Validate model header values to not crash the game later - warnings are printed in console for such models, and they are not loaded
  • Patched base game cs_fix.mdl to not crash the game in certain scenarios
  • Do not even try to read weight of first bone for models without any
  • When deleting ragdoll physics objects, also delete constraints
  • Reset movehelper host after bot command processing, like players already do
  • Disabled SteamID authentication checking for LAN only servers - Fixes -multirun clients being stuck for some players waiting for confirmation whether the SteamID is valid or not when joining a LAN server
  • Hide IP address in status command for P2P servers
  • Prevented creating render target with names of non RT textures to avoid crashes
  • Prevented movement when the player is dead for WALK/NOCLIP/FLY movetypes
  • Do not mark addons with id of 0 for download from server - Just avoids the unnecessary wait time when its the only addon
  • Switched server downloads extension filter to a whitelist
  • Increased the default Hammer Map Compile Window size to 1280x720, from 600x400
  • Made 'Couldn't find target' warning more verbose
  • Clean up render targets created by Lua API, improving memory usage on map disconnect
  • Set inflictor of Crowbar/Stunstick damage to the weapon itself, not the player
  • Set Gravity Gun damage inflictor to the gravity gun, not the player, which is the attacker
  • Prop physics damage tries to set correct attacker, based on entity ownership and physics attackers
  • Applied a whitelist to Auto refresh folder watchers, to save system resource usage
handyman

Fixed

  • RPG rocket stops its looping sound when removed prematurely
  • Fixed crashes when using tv_record console command
  • Player:IsBot now returns true for SourceTV master client
  • Prevented tv_enable going beyond absolute max player count and crashing
  • SourceTV players are considered bots for player library
  • Do not wait for SteamID validation for HLTV clients that will never come, so players can actually join such servers
  • Fixed tags for HLTV servers, added extra hltv:1 tag
  • Fixed duplicate definitions for Player:GetTool (Community Contribution)
  • Improved support for non-English messages in DTextEntry history (Community Contribution)
  • World clicker aim uses correct FOV values, so it works when FOV is modified by GM:CalcView hooks, etc
  • Fixed displacements with $alphatest 1 materials not having collisions
  • Fixed props with VortWarp shader crashing the game when entering water
  • Fixed crashes when accessing out of bounds flex controllers
  • Given sk_ally_regen_time a minimum value of 0.01 to avoid division by 0, and subsequent freezes due to infinite loops
  • Resolved incompatibility with $BlendModulateTexture and $detail - fixes gm_construct sand/grass transitions
  • Fixed blendable textures on a brush being inverted in Hammer i.e. not appearing like they do in-game
  • Fixed fonts from gamemode's content/ folder inside a .gma not being extracted - so that they can actually be loaded
  • Clean up DOF_Ents table on DOF_Kill (Community Contribution)
  • Fixed airboat model attachment name
  • Fixed seemingly incorrect calculation of vehicle wheel total height
  • Prevent audio system being able to read files outside of game folder
  • Make duplicator actually spawn the correct NPC - It was spawning them by entity class, luckily all of the base ones are present in the "NPC" list by their classname, now it spawns them by their actual original name in the "NPC" list.
  • Fixed SteamID placeholder calculation for clients with no SteamID (multirun environments)
  • Fixed crashes due to CSoundPatch
  • Fixed Panel:SetDrawLanguageIDAtLeft causing cursor selection to be offset
  • Fixes for func_door looping sounds
  • Improve autorefresh handling for lua_openscript(_cl) scripts
  • Fixed secondary map instances overriding base map revision
  • Fixed navmesh place names being cutoff by 1 character
  • Fixed "from end/current position" seeking for files stored in VPKs
  • Fixed viewpunch prediction errors when landing
  • Fixed useless spam in output of VBSP (when compiling maps)
  • Fixed useless spam in console when starting Linux Dedicated Server
  • Fixed nav_generate and nav_edit trying to run unknown or removed concommands and convars
  • Fixed 2 community.properties translations that had typos
  • Do not force Nextbot/SNPC render group to opaque by default - let the engine decide based on the entity's model
  • Fixed an issue where text too long in mat_texture_list would not draw at all
  • Clear water reflection view every frame - fixes not rendering skybox causing water reflections to be "stuck" to screen, etc.
  • Fixed crash when prop_doors have no model on spawn
  • Fixed drag'n'drop preview being offset when local panel position is above 2048 pixels on any axis
  • Fixed a crash with npc_vortigaunt in a specific Half-Life 2 Coast map scripted sequence when you make it shoot an explosive barrel
  • Fixed an infinite loop in EnumerateElementsAlongRay when ray has infinite end position
  • Fixed minor saverestore warning with prop_physics
  • Force DXT1 /w 1BitAlpha to DXT1 format in VTF loading to make them actually appear correctly
  • Reject textures whose size is calculated to be 0 bytes
  • Prevented crashes with ragdolls (especially when created too early)
  • Fixed crashes when Half-Life: Source vortigaunt or scientist is killed by unowned combine ball
  • Fixed potential minor memory leaks with Source Engine
  • Fixed crashes related to shadow rendering
  • Do not cleanup env_soundscape_proxy entities - This used to break soundscapes, and other soundscape entities are already not cleaned up
  • Fixed func_tank becoming unusable after temporarily setting its firerate to 0
  • Fixed trigger_hurt damagetype keyvalue parsing for unsigned int values
  • Fixed func_instance_io_proxy not updating inputs correctly - All instance .vmf files will need to be re-saved for the fix to work
  • Set -game to garrysmod for Hammer if not already set, fixing "missing shader" warning spam on start up
  • Initialize mod shaders for VBSP (during map compile), so painted skybox materials can load correctly for cubemaps (since they use custom shaders, and missing shaders make materials not load)
  • Fixed crashes when failing to create physics bone followers at entity limit
  • Prevent crash on game exit to do with the loading screen
  • Fixed datapack_stats not correctly decompressing data, causing crashes sometimes
  • Fixed crashes when maps have entities parented in an infinite loop
  • Fixed a graphical glitch-exploit with pp/copy material and the halo library
  • Added sound/*.ogg to BSP whitelist
  • Gravity Gun stores and restores PhysObj drag state, instead of always resetting it
  • Fixed many crashes when certain models try to access invalid data
  • Fixed potential crash with game_ui entity
  • A number of crash fixes to do with infinities
  • Potential crash fixes with npc_barnacle
  • Fixed Problem count not being visible if problems are fired before the menu is created
  • Prevent models going invisible when animation cycle somehow becomes infinity
  • Fixed func_breakable_surf crashes on spawn without a model set
  • Fixed certain brushes not having any collisions on maps when the brush count is over 65k
  • Better reference counting for model decal materials, so they are not unloaded when the decals are still being rendered
  • Enable unloading of decal materials (and textures) on map shutdown
  • Fixed a crash with prop_vehicle_crane and map cleanups
  • Fixed crash when running editdemo without HLTV
remove_circle

Removed

  • Removed a number of useless files from Dedicated Server Distributions, such as binaries and other files only used by the game client
  • Removed unused "bodyque" entity system
  • Disabled and partially removed unused Source Engine commentary system
  • Removed mem_eat command
add_circle

Features

  • Added -quiet to suppress spammy messages
arrow_circle_up

Improvements

  • Auto ignore .git folder and .git* files
  • Print out list of files that did not match the whitelist at the end of the console output, so they are more visible, as well as their amount
  • Reduced buffer reallocations, which results in much faster .gma file creation, most noticeable with many small files (Community Contribution)
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.
arrow_circle_up

Improvements

  • CPropDoorRotatingBreakable does not try to precache NULL model breakables
  • Moved "render to video" temp file to videos/ folder
  • Allowed physgun_wheelspeed to go negative again
handyman

Fixed

  • Fixed symlinked autorefresh not working
  • More potential crash fixes to do with texture loading
  • Fixed net.WriteData warning not displaying correct data
  • Fixed async model loading system trying to load already loaded models
  • Fixed "bad sequence" warnings so they display correct max number
  • Fixed "Unable to initialize DirectSoundCapture" disabling voice chat
  • Fixed lua_refresh_file not working with gamemode or addon files
  • Fixed RecipientFilter global having its argument have a flipped meaning
  • Fixed some presets being erroneously treated as collection ID
  • Fixed "flush" concommand crashing on windows dedicated server
  • video library restores fps_max if it sets it
  • Fixed "render to video" not rendering while main menu is open
  • Fixed quitting while demo is being recorded writing invalid tick count to the demo count
  • Fixed a crash due to sounds failing to be loaded
  • Fixed a crash with the mesh library
  • Fixed DModelPanel having issues with depth buffer when 2 panels are overlayed
remove_circle

Removed

  • Removed some useless console commands - Test_CreateEntity, Test_RandomPlayerPosition, con_enable, con_drawnotify