Garry's Mod Logo
schedule 12 November 2025
devblog

November 2025 Update

New water visuals, NPC improvements, and more!

Rubat
Garry's Mod Project Lead
Estonia

New water visuals

This update adds new water rendering features from newer Source Engine games to Garry's Mod. Here's a comparison video:
This includes flow maps, lightmaps and ability to reflect 3D skybox. This both improves compatibility with mountable games, as well as enables map makers to use these new features in their maps.

It must be noted that these changes may unexpectedly affect a small amount of existing maps. The issue here is that some map makers are using (modified) water materials from other Source Engine  games which have parameters that did not previously work, but do work correctly now, causing unexpected changes in water appearance. This is unfortunately unavoidable from our end, and will need to be individually fixed by map makers by editing their water materials. No map recompilation needed.

4-way blends

Another port from newer Source Engine games is the 4-way blend shader.
This is also going to help map makers make better looking maps, easier.

Built-in NPC improvements

A long standing issue from the very inception of Garry's Mod was the lackluster support for weapons used by NPCs, especially when NPCs use weapons that they never used in Half-Life 2. This update finally addresses these issues.

NPCs no longer T-pose when trying to use non default weapons, such as Metrocops using RPGs or AR2s, Combine Soldiers can not only use all the built-in weapons without issue, but also run around and chase the player with no weapons. Citizens no longer stand up to shoot when crouched.

More NPCs can now use weapons as well, providing more options than ever.
With improvements to duplicator support for Half-Life 2 entities, Resistance-hacked Combine Mines are now available from the spawnmenu, and both it and the Flechette Gun are now available for all players, regardless of what games are mounted.

Sandbox improvements

Faceposer got some minor improvements with the ability to randomize or clear only a specific category of sliders:
And an option for Spawn Menu and Context Menu keys to act as a toggle has been added to the Utilities panel:

Other stuff

As per usual, this update also brings a set of under the hood fixes and optimizations, and of course a number of new Lua API features have been added.

The full change log can be found below.
add_circle

Features

  • Added NPC support for MP5 from Half-Life: Source
  • Added sv_pause_sp - allows singleplayer game to not be paused automatically when pressing ESC/opening console or the Steam overlay
  • Added option to hide outdated servers to the server browser (Community Contribution)
  • Added ability to toggle spawn menu & context menu, option for it can be found in Spawnmenu => Utilities menu, disabled by default
  • Added ability to select what weapon Creator Tool spawns NPCs with from the NPC icon right click menu (Spawn with toolgun option)
  • Added resistance-hacked combine mine to the spawnmenu
  • Added ability to middle click Keybinder UI element in Sandbox to reset it to default value, just like tool sliders already do
  • Added ability to randomize or clear only one category in Faceposer
arrow_circle_up

Improvements

  • Enable Jalopy idle animation (Engine "jiggle" animation) without hl2_episodic console variable having to be set to 1 (This applies to all vehicles, even modded ones, if they have an animation bound to ACT_IDLE_STIMULATED)
  • Unhide Jalopy seat and Flechette Gun when not mounting HL2, since we now ship content needed for those by default
  • Unhide CS:S thruster models by default (Community Contribution)
  • Kleiner, Mossman, Eli, Breen and Magnusson can now spawn with guns, Vortigaunts and Half-Life: Source G-Man can no longer spawn with guns
  • Enable "Spawn with Weapon" UI for Eli, Mossman, Breen, Magnusson, Kleiner (when right clicking their NPC spawn icons)
  • Added icons to NPC weapon selection in spawnmenu NPC tab and on NPC spawn icon right click
  • Also group weapons in NPC spawnicon right click by category like it is in other places
  • Digitally sign .exe files (in addition to .dll files which was done a while ago)
  • Improved invalid model detection - fixes crashes when loading models from a specific addon
  • Updated Day of Defeat: Source player model texture fallbacks to be full resolution
  • Added missing map icons for new Team Fortress 2 maps
  • Added lua_strict convar checkbox to Lua problems menu
  • Minor visual adjustments to alignment of certain elements in the start new game options menu (Community Contribution)
  • Minor optimization and fixes for main menu new game and addon pages (Community Contribution)
  • Adjust colors in the server browser to be consistent with each other, and be slightly darker for better contrast with white text
  • Slightly adjusted visuals of Spawnmenu Dupes and Saves tabs
  • Automatically close spawn and context menus when the main menu is open, as well as prevent F1 from opening the spawn menu when main menu is open
  • Use better max values for "Utilities => Sandbox" limit sliders, derived from default convar values
  • Respawning while "entity driving" will no longer snap view angles to the spawnpoint
  • gm_construct water now reflects 3D skybox
  • Implemented visual placeholder entities for dod_control_point, prop_exploding_barrel (CS:GO) and team_control_point (TF2)
  • Disallowed spawning (as in at crosshair, not equipping) SWEPs without models via spawnmenu, such as the Fists weapon
  • Sped up entry animations for the 3 airboat seats with different animations, from 3 seconds to 1 second to match the other seats
  • Server rating penalty for outdated servers that cannot be joined anyway (Community Contribution)
  • Do not draw Tool Gun help and HUD in vehicles if entered the vehicle with the toolgun equipped, and weapons are not allowed in vehicles
  • Dead players who are not admins can no longer spawn stuff from the spawnmenu
  • Updated localization files
  • Trying to load a save while playing on a server no longer disconnects the player from the server
  • firstperson console command now disables camortho (Community Contribution from TF2 SDK)
  • ESC closes chat box even if the chat message text entry is not focused (Community Contribution from TF2 SDK)
  • Faceposer sliders and groups now appear in the same order as they are stored in the model, allowing model makers full control
handyman

Fixed

  • Default Sandbox fonts are now "extended" for better rendering of non Latin characters (Community Contribution)
  • Combine NPCs no longer T-pose with pistols, instead use rifle animations
  • Improved crouch support for NPCs using pistols and rifles - NPCs wont crouch to shoot for 0.3 seconds and then stand back up
  • RPG/Crossbow animation support improvements for citizens
  • Support for Combine Soldiers firing the RPG Launcher
  • Improve metropolice weapon support for Shotguns, AR2, RPGs
  • Fixed Combine Soldiers not walking/running with pistols/RPG/melee weapons or no weapon equipped
  • Metrocops now draw other types of pistols from their holster, not just the default Pistol
  • Fixed Enemy Rebels refusing to use RPG against the player
  • Fixed Enemy Rebels commenting on player's death as if they weren't hating them
  • Fixed NPCs being unable to shoot the Alyx Gun
  • Fixed certain NPCs constantly lowering their weapons after each weapon burst
  • Fixed Eli, Magnusson, Kleiner, Mossman and Breen shooting from their feet
  • Fixed NPCs being able to shoot some guns forever, without reloading, such as the AR2
  • Main menu: Check box labels are now clickable (Community Contribution)
  • Fixed regression with FindUseEntity behavior making players unable to use some entities
  • Fixed addon dependencies not showing on install due to regressive Pull Request the previous update
  • Fixed kill credit for strider kills with the Magnusson device
  • Fixed Combine Gunship, Helicopter, Ceiling Turret, Camera, Sniper and Antlion Grub not appearing in the kill feed when killed by the player
  • Fixed certain gibs (from Manhacks, Scanners, Attack Helicopter) never fading out
  • Fixed gibs that should be ragdolls not being ragdolls in multiplayer (cardboard boxes)
  • Fixed Strider still shooting the player with ignore players or disable AI enabled
  • Fixed AR2 impact effects appearing when shooting the skybox
  • Fixed "P2P: Friends only" setting resetting after starting a game (Community Contribution)
  • Fixed some missing Server Browser localization strings, added chat prefix localizations (Community Contribution)
  • Fixed a visual inconsistency with text indentation in spawnicon resize menu
  • Update Source Engine IME candidate menu size to fit updated text when typing
  • Fixed respawning while "entity driving" a prop putting you back to the death position instead of at the respawn point
  • Fixed the 2 PHX bomb models not igniting from explosive damage like they used to
  • Fixed a number of materials for Day of Defeat maps
  • Fixed localization files not loading correctly on Linux
  • Fixed potential Lua errors when spawning props while the server is at the entity limit
  • Fixed not being able to duplicate Half-Life 2 entities and weapons as a non-admin player (while playing in multiplayer basically)
  • Fixed Portal Cores reverting to wrong type in saves and duplications (not retroactive)
  • Fixed Tree Sway causing graphical glitches when lit up by player's flashlight, lamps or other projected textures
  • Added map icons for new TF2 maps
  • Ragdolls now inherit sub-materials from their parent entities (NPCs)
  • Zombie gibs and spawned headcrabs inherit materials and render mode of the original zombie
  • Fixed saving dupes not updating "My Dupes" screen immediately
  • Tools (with weapons in vehicles allowed) and spawnmenu spawning now ignores player's current vehicle when placing props while in a vehicle
  • Fixed swimming animations for the Passive hold type not working correctly
  • Fixed physics models for light_cagelight01_off.mdl, windmill_blade004b.mdl, dock_broken01a.mdl and utilityconnecter006b/d.mdl
remove_circle

Removed

  • Delete unused DLL files - DataModel.dll, DMSerializers.DLL, VTex.DLL
  • Removed fallback textures for CSS player models, since we now ship those textures in full resolution
add_circle

Features

  • Added custom radio button support and extra default sounds (Community Contribution)
  • Added optional translation parameters when adding radio sound names (Community Contribution)
arrow_circle_up

Improvements

  • Set Attacker and Inflictor in usages of SWEP:FireBullets (Community Contribution)
  • Raise passive equipment item limit from 16 to 32 (Community Contribution)
  • Russian and Turkish localization updates (Community Contributions)
handyman

Fixed

  • Fixed "Tried to create font 'X' from a game font 'Y'" warnings
  • Prevent the round start info box from stacking when restarting rounds rapidly
remove_circle

Removed

  • Remove "Missing CS:S" chat warning (Community Contribution)
add_circle

Features

  • status console command now also prints server & map uptime
  • Implemented Lightmapped_4WayBlend shader with full tools support
  • Implemented new Water shader features - lightmapped water fog, flow maps and ability to reflect 3D skybox ($reflect3dskybox), envmaps for expensive water, support for $reflect2dskybox
  • Use gmod_flashlight attachment for flashlight if it exists - this works for player models, world models and view models
  • Added sv_nomap_timeout convar - Closes a dedicated server if it is running without a map for given amount of seconds.
  • Added "Restore" input to func_breakable_surf entity
  • Added $PortalColorGradientDark and $PortalColorGradientLight to PortalRefract shader
  • Added new parameters to SpriteCard shader
  • $AimAtCamera, $OrientationMatrix ($Orientation 2)
  • $Orientation now supports modes 3 and 4
  • $basetexturetransform support for DepthWrite shader (for alpha tested materials)
arrow_circle_up

Improvements

  • Prevent silly values in fog_controller (malicious map "protection"), as well as prevent map reload loop via player_loadsaved entity
  • Improvements to multiplayer player getters
  • FindEntityProcedural !pvsplayer multiplayer support improvement
  • UTIL_GetLocalPlayer micro optimizations
  • UTIL_FindClientInPVS now tries to get the closest client
  • Changed "exe version" to "network version" in output of "version" console command to avoid confusion
  • Removed newline from "Disconnect by server." kick message, so server console log is less messy. No other kick reason adds a new line at the end.
  • Micro optimization for GM:HUDDrawTargetID (Community Contribution)
  • Enable Episode 2 behavior for npc_combine_s (Some sort of "march" mode)
  • Allow .PCF as valid network transfer extension (FastDL)
  • SRCDS workshop addon cache also caches titles - Also display a warning when that cache will be used
  • Make "No account token specified" message in SRCDS console a warning
  • Unhide sv_soundscape_printdebuginfo
  • Reset render library's internal "last material" vartiable on map shutdown
  • Fallback "VertexBeckman" shader to "VertexLitGeneric" (PVK2 game)
  • Improve free edict detection during entity creation, so allocated edict count cannot pass the internal buffer amount and prevent creation of entities until map restart
  • Clean-up doubleclicking code in the main menu (Community Contribution)
  • Internal rework of main menu's bottom bar (Community Contribution)
  • Make zombies/metrocops propagate their "use lag compensation" state to spawned child NPCs (headcrabs and manhacks)
  • Dynamically calculate max autocomplete items for the console based on available space
  • Added SteamID64 to "Dropped %s player from server" console message
  • Enabled CEF credits button in the Options
  • Limit static prop counts to safe values to prevent crashes
  • Minor VPK support changes from CS:GO - potential memory usage improvement
  • Add description to g_ragdoll_maxcount convar, update descriptions for gm_snapangles and gm_snapgrid
  • Give prop_active_gib* convars descriptions and more sane values - 100 active gibs should be plenty (was 999999)
  • Add a better crash message when getting vertex size 0 to help catch source of the crash
  • Alias dz_door (CS:GO danger zone map doors) to prop_door_rotating
  • Prevent item_item_crate from spawning certain entities that could cause game crashes
  • Throw an engine error when trying to request invalid shader parameter, instead of cryptic crashing
  • Changed whereis to print path of missing files (useful for mat_texture_list 1)
  • Improved several console warnings and crash popups with extra information to help diagnose the underlying issues
  • Improved .nav file error handling to prevent game crashes and freezes, as well as error reporting
  • Do not save or load mat_specular/mat_bumpmap convars across game sessions - These are debugging convars, they do not need to save and cause persistent visual downgrade with no video options enabling them back.
  • Increase max lightmap dimensions to 128 for brushes (from 32)
  • Renamed npc_tf2_ghost to nb_example, and moved it from base gamemode to Sandbox
  • Alias sdk_lightmappedgeneric_dx9 shader to lightmappedgeneric for content from some Source Engine games/mods
  • Potentially improved console variable related performance
  • Remove main menu's reliance on RUNLUA: hack through console.log
  • Use consistent search paths for textures and some model code - makes textures load from consistent location of disk, just like models and materials
  • Make gm_spawn only work for .mdl files
  • Fixed crashes to do with a certain demo files that play on the wrong map (compared to the one it was recorded on)
  • Clear "material is missing" flag on all materials when a map is started loading
  • Initialize 3rd person camera on map load, to fix behavior change after first disconnect
  • Defer gameevent/OnRequestFullUpdate game event if not in main thread (instead of dropping it)
  • Reject non .vtf customization files
  • Optimized Sandbox Widgets system, especially when none are used on the entire server (Community Contribution)
  • Minor optimizations for GM:PlayerSelectSpawn (Community Contribution)
  • Minor loading screen cleanups (Community Contribution)
  • Optimized some internal engine functions to do with looping over player list, so they no longer loop over the player list
  • Added function locations to output of lua_find(hooks) commands and adjusted formatting and colors so its easier to read
  • Adjusted formatting of lua_dumptimers commands so its easier to read
  • Updated gmod_physiterations description to specifically mention constraints
  • Default presets in Utilities tab dynamically load convar defaults instead of being hardcoded
  • Allow fractional tickrates (i.e. 66.666), and clamp the result between 1ms and 100ms
  • Constraint library - Change the rope material shader blacklist to a whitelist (of UnlitGeneric, SplineRope and Cable shaders), and disallow materials that do not exist
  • Prevent player's view roll from being changed by bad actor maps either by spawning or teleporting the player
handyman

Fixed

  • Fixed "TraceAttackToTriggers" system for bullets causing the shot entity to have a separate damage event for each pellet of a shotgun shot
  • Fixed func_lookdoor in multiplayer only reacting to the first player on the server (now reacts to the closest player)
  • Multiple improvements to error handling of particle sheet loading
  • weapon_fists sets Weapon in DamageInfo (Community Contribution)
  • Prevent crashes due to net_graph trying to draw too much at a time
  • Fix Error() in C not exiting the game with a nice message when multicore rendering is enabled
  • Fixed sv_lagcompensationforcerestore not really doing what it says in its description
  • Fixed soundscapes not working with duplicate sounds
  • Fixed Entity:FireBullets causing "CLuaObject:GetType with invalid lua state" warnings after a changelevel when using FireBullet callbacks
  • Restore rope texture scaling to Half-Life 2 values when they are spawned by the map
  • Prevent potential Lua errors with weapon_base when owner dies during firing bullets
  • Fixed some IMaterial functions complaining in console about "$basetexture not being a texture". (Non multicore rendering only)
  • Fixed server crash when mounting ladders at edict limit
  • Prevent crash to do with CSpatialPartition invalid handles
  • Fixed edict exhaustion prevention affecting nextbot players, and crashing the server
  • Fixed a crash when using gm_load on dedicated server
  • Fixed a crash with clientside ropes on props
  • Fixed server crashes to do with Gonarch NPC
  • Fixed many server crashes when trying to spawn gibs at edict limit
  • Make prop water level changes actually work, and apply on clientside too
  • MsgC no longer outputs empty strings when first argument is a color, preventing console message deduplication
  • Fixed fall damage constants being inconsistent between client/server
  • Prevent "bone write access" warnings with ClientsideRagdoll
  • Fixed CLC_Move::ToString numbers being flipped
  • Fixed CBaseFileSystem::ReadLine not working for workshop files at all
  • Fixed VPK file.Find issues with folder searching
  • Fixed BSP file.Find not really working well
  • Fixed Lua errors with DProperty_VectorColor when deleting the associated editable entity
  • Prevent misleading "X used to create wrong class type" warning that happened at edict limit when spawning gibs
  • Try to prevent Half-Life: Source gibs from falling out of the world
  • Fixed an issue with GM:HUDShouldDraw that allowed blocking access to main menu
  • Fixed some weird v7.4 VTF cubemap textures not loading due to missing sphere map
  • Fixed clientside prediction breaking hull traces against local player in multiplayer
  • Do not complain about missing "$refracttexture" when polling water material for its requirements
  • Fixed kickid via SteamID64 not working on dedicated servers
  • Prevent crashes in engine tracing code to do with BSP models
  • Fixed maps compiled without VVIS not rendering any water surfaces (and when noclipping outside of the map)
  • Fixed 'status' console command showing IP address for -p2p dedicated servers
  • Fixed sun glow overlay not rendering in water reflections
  • Fixed a nullptr crash on game exit to do with models
  • Prevent crashes with vertexSize of 0 on materials - will now use error material instead, and throw a warning about what material is wrong
  • Fixed spam about "Trying to use Map as if it were a variable" on GUI dedicated server
  • Try to improve static props fading out randomly for CS:GO maps
  • Fixed render.RenderView affecting FOV for worldclicker, including the context menu
  • Fixed (near?) infinite loops/game freezes in when listing entities in a box with negative bounds
  • Fixed a potential issue with bad BSP embedded files
  • Prevent potential crashes on map change to do with color correction entities
  • asset:// sets correct mime type for .svg files (Community Contribution)
  • Fixed an obscure crash with LuaJIT
  • Fixed an null pointer crash with sv_debug_player_use convar
  • Fix Un-Statue property bypassing GM:CanProperty serverside
  • Fixed ATI1N and ATI2N names being swapped in the texture list
  • Made env_smoketrail entity not add its velocity to its particles, SMG1 grenade trail works as expected
  • Improved handling of v7.5 texture image formats
  • Fixed exit game crash to do with procedural sounds
  • Fixed some theoretical, extremely tiny memory leaks to do with Key Values parsing (Community Contribution from TF2 SDK)
  • Fixed pose parameter support for CMDLPanel (Community Contribution from TF2 SDK)
  • Fixed asset://mapimage/ URLs using wrong mime type (Community Contribution)
  • Fixed a exit game crash to do with -multirun
  • Applied potential fix for retry command for local server host not working correctly when other players are present on the server
  • Applied a potential fix for r_flushlod crashing the game (Community Contribution)
  • Fixed -tools mode spamming about "Too many popups!" when many particle previews are on screen
  • Fixed crashes to do with IK in certain models
remove_circle

Removed

  • Removed pointless "PREP OK" console message during map loading
  • Removed "HudBloodSplat" effect. (It did nothing at all)
  • Removed mat_remoteshadercompile console variable
  • Removed GMOD_Player::ViewPunch, Weapon_Drop and OnTakeDamage overrides (did nothing), m_iCallSpawnTimer and m_iStartTick which were unused at all
  • Removed CHL2_Player::GetAutoaimVector, ShouldKeepLockedAutoaimTarget, BumpWeapon, Weapon_CanUse (all were doing nothing, or were Xbox only)
  • Removed autoaim_unlock_target convar which is now unused
add_circle

Features

  • Added MakeRegularAlly/MakeGameEndAlly inputs for GMan/Mossman/Monk/Fisherman in Hammer
  • Added new .QC commands to studiomdl.exe - $maxverts, $phyname, $internalname, $qcassert, $lcaseallsequences, $defaultfadein, $defaultfadeout, $appendsource, $redefineattachment, $skinnedLODs
  • Mount CSS/Episodic VPKs in tools (Hammer & compilers)
  • Implemented color preview for models in Hammer
  • Added color keyvalue to prop_door_rotating in Hammer
  • Added ability to paint 4-way blend materials in Hammer (Supported materials only!)
  • Implemented particle picker for Hammer
  • Added file metadata to map and model compiler exes (version, description, product name, etc.), and given them an icon
  • Added -SunSamplesAreaLight option for VRad (Community Contribution)
  • Reenable -maxlightmapdim and -defaultluxelsize for VBsp, and them add to help text
  • Water materials with $lightmapwaterfog (and flowmaps) will now receive lightmaps on map compile
arrow_circle_up

Improvements

  • Add descriptions to light entity keyvalue properties in Hammer
  • Update StudioMDL usage info when given no parameters - added previously unmentioned command line options, dump supported .qc command list
  • Move modelscale keyvalue from Breakable to specifically prop_physics and its variants in Hammer to better represent what entities support the feature
  • Make tools/toolsinvisibleladder not create visleaves during map compilation
  • Adjusted VRAD's post-compile stats to show data size limits in correct places, as well as bump max data size for entity lump
  • Enable static prop lighting (vertex & lightmap) for VRAD with -fast (Since it is already controlled by -StaticPropLighting)
  • Mention -StaticPropLighting requirement for vertex lighting on static props in Hammer (Disable Vertex Lighting field)
  • Images are now saved as .bmp instead of .tga in HLMV
  • Change Shader display to a read only text entry in HLMV, so it can be copied
  • Display selected material in a text box in HLMV, so it can be copied
handyman

Fixed

  • Fixed default model for physics_cannister, npc_launcher, npc_missiledefense (now a box) and weapon_bugbait in Hammer
  • Fixed some entities such as info_ladder_dismount not using colors in Hammer as defined in the FGD files
  • Fixed visual and undo bugs with CMapSweptPlayerHull (func_useableladder) in Hammer
  • Enable VRAD compile stats without -verbose flag
  • Fixed StudioMDL crashing when creating folders for the model
  • Fixed HLMV crashes when doing stuff without a model selected
  • Fixed extremely slow "Take screenshot" performance in HLMV
  • When a material is missing in HLMV, include the missing material name in "VMTs loaded" section
remove_circle

Removed

  • Remove non existent key-values from env_smoketrail in Hammer
  • Removed non existent entities from Hammer - Weapon_Brickbat, env_rotorwash, references to weapon_beerbottle, test_sidelist, npc_crabsynth, env_terrainmorph
  • Remove non existent entities from BreakableBrush "spawn on break" keyvalue in Hammer
  • Disallowed creating "Auto" visgroup in Hammer manually
add_circle

Features

  • Added Entity:FindGestureLayer
  • Added Entity:FindGestureSequenceLayer
  • Added Entity:RemoveLayer
  • Added Entity:SetLayerAutokill
  • Added GM:OnNPCDropItem
  • Added NPC:IsCrouching
  • Added NPC:SetForceCrouch
  • Added 2 new optional args to mesh.TexCoord
  • Added NPC:CapabilitiesHas
  • Added NPC:ConditionID
  • Added NPC:IsUnforgettable
  • Added NPC:MoveGroundStep
  • Added effects.TracerSound
  • Added sequence events to util.GetModelInfo
  • Added util.IsBoxIntersectingBox
  • Added MATERIAL_CULLMODE_NONE for render.CullMode
  • Added new arguments to Entity:DropToFloor
  • Added new argument to HTML:ConsoleMessage
  • Added Panel:SetTextHidden
  • Added MAX_PLAYER_BITS global
  • Added MainEyePos and MainEyeAngles
  • Added IGModAudioChannel:GetTagsWMA & IGModAudioChannel:GetTagsMP4
  • Added render.GetFogMaxDensity
  • Added skin parameter to util.GetModelMeshes + up to 15% optimization
arrow_circle_up

Improvements

  • ClientsideModel is now able to be hit by clientside only traces after initializing physics on it post creation (Collision bounds must be set manually if model changes)
  • Try to end mesh.Begin when a mesh wasn't ended when the function is called. (i.e. after a Lua error) It will still error afterwards like it did before, but now prevents game hanging, hopefully without side effects
  • End current Lua mesh (if there is one) on Lua error - preventing game crashes and graphical glitches
  • Change ents.CreateClientRope slack parameter to work better
  • ents.CreateClientRope ropes now despawn if any of its attached entities are removed
  • Allow giving ents.CreateClientRope local vectors instead of attachment IDs
  • Made Entity:PhysicsInitBox/Sphere set solidity before setting the physics object - this improves behavior for those functions with ClientsideModel and is consistent with PhysicsInit()
  • Validate input range for File:Read and File:Write, so the game does not crash with negative bytes to read
  • Improved handling of BSP model names for Lua clientside entities (sets the model index so tracing code can work better)
  • Improved handling of infinite loops with Entity:WaterLevel when called from the water level change hook
  • Switch debugoverlay functions to better optional argument checking with type checking
  • util.IsValidModel returns false if extension is not .mdl
  • Changed render.DrawQuadEasy to use better optional argument handling (potentially breaking)
  • Sandbox gamemode: Do not store the NPCTable/VehicleTable tables on the entities (The name is still stored)
  • Player:GetPunchAngle will now error with lua_strict set to 1 (deprecation warning)
  • Allow mesh.TexCoord to only accept 1 texture coordinate
  • Optimizations for usage of GM:PlayerCanHearPlayersVoice - it will no longer be called for non speaking players
  • Minor optimizations for most Lua functions returning a sequential table
  • Minor adjustment to WEAPON:OnRemove for consistency of execution time with other OnRemove hooks, no functional change expected
  • Validate input ranges for sound.Generate (will error)
  • Validate input ranges for most Lua functions that use enumerations in arguments (will silently clamp the value)
  • Entity:GetCycle now returns 0 instead of nil for invalid entities
handyman

Fixed

  • Fixed clientside sounds not firing WEAPON:FireAnimationEvent
  • Fixed render.SetShadowsDisabled setting the shadow distance instead of disabling shadows
  • Fixed duplicate HTTP headers being discarded instead of being joined with a comma like it did previously
  • Fixed Player:Flashlight playing sounds when disabling a disabled flashlight, etc.
  • Fixed list.GetEntry erroring when used
  • Fixed infinite loops when calling Entity:DrawModel from GM:PrePlayerDraw/GM:PostPlayerDraw
remove_circle

Removed

  • Blocked editdemo console command from Lua just in case
  • Removed obsolete/undocumented/useless panel types from vgui.Create
  • Disabled vmevent API (jit.attach)