Garry's Mod Wiki

Revision Difference

Update_Preview_Changelog#563781

<cat>Play</cat> <title>Update Preview Changelog</title> This page contains upcoming changes to the game in the next update. The update date is available on the Steam News section for Garry's Mod. The update is already accessible on the `dev` [beta branch](Dev_Branch), and possibly on the `prerelease` beta branch. # Game Changes ## Additions * Added Portal 2 Coop player spawn points * Added all missing Portal 2 map icons * Added visual placeholder entities for Portal 2 excursion funnel, Wheatley boss and npc_personality_core * Added Hacked and Harmless Rollermine variants to spawnmenu * Added Enemy Rebel NPC to the spawnmenu - This NPC is intended as an example for modders to have humanoid NPC reskins not produce combine noises * Added ability to copy Sandbox tool class names via right click context menu * Added new Bloom preset * Added mounting support for Klaus Veen's Treason at the request of its developer ## Fixes * Fixed some props in Portal 2 appearing rainbow-y * Fixed `"missing sound common/null.wav"` when throwing grenades * Fixed Mega Gravity Gun not being able to pick up flesh * Fixed base Lua SWEPs not using correct localization strings * Fixed unicode addon name display for Workshop Addons when they are downloaded while joining servers * Fixed player death ragdoll forces always being applied to center - now applies forces to the body part that was shot * Fixed NPC icons in spawnmenu search not having weapon selection on right click * Fixed strider stomp attack creating invisible ragdoll with Keep Ragdolls * Fixed Portal Rocket Turret not updating its facing angles with no target * Fixed right-side padding of the gamemode list items in main menu to be consistent with other padding (Community Contribution) * Fixed inconsistent margins on language list and Start Game button (Community Contribution) * Fixed camera tool entity losing its key binds on level transition, leaving the player potentially stuck in the camera view * Fixed singleplayer toolgun ghost from saving in map saves as a prop * Fixed more missing spawnmenu localizations (entity categories and others) (Community Contribution) * Implemented localization for built-in undo actions * Implemented ammo name localization for built-in ammo types (shown when picked up) * Localization support for crosshair customization (Community Contribution) * Localized Balloon and Dynamite world tool tips (Community Contribution) * Fixed the game not downloading maps from servers if compressed version exists locally, but wasn't extracted/was corrupted * Prevent Keyboard options tab contents from being loaded from addons/mountable games * Half-Life's Geiger counter only reacts to enabled `trigger_hurt` entities * Fixed Barney missing animations in his Half-Life 2: Episode 1 appearances * Fixed crashes when using SuperDOF with multicore rendering * Fixed certain languages not working at all on Linux due to filename capitalization issues * Fixed a crash when spawning certain vehicles with malformed vehicle scripts * Fixed tool sorting not being alphabetical when some tools are missing localization strings (Community Contribution) * Fixes towards MP3s hanging the game on first playback * Ported some exploit fixes from Team Fortress 2 SDK * Fixed .357 Magnum reload missing its shell eject effect * Fixed Bugbait not having viewmodel bob when sprinting * Fixed missing AR2 reload sound in 3rd person * Fixed missing Pistol brass eject effects for players in 3rd person * Fixed missing holdtype & player animations for Bugbait in 3rd person * Fixed missing holdtype animations for Citizen Suitcase, Citizen Package, Annabelle and Alyxgun weapons * Fixed `npc_zombie` not using `sk_zombie_dmg_both_slash` console variable at all * Fixed inaccessible area on `ep2_outland_10` due to model name collision * Fixed Half-Life 2: Episode 2 Fast Zombie on car jumpscare sequence * Fixed missing animation on hula doll in Half-Life 2: Episode 2's final map * Fixed Lua errors when damage is dealt without an attacker * Fixed being able to reset Frag Grenade timer after it exploded, prevent it from being removed, and make it explode again while invisible * Added missing icons for new Team Fortress 2 maps⤶ ## Changes * Bumped default value of `sbox_maxconstraints` to `2000` to account for larger dupes/saves * Made Sniper kills in "Alyx as sniper" sections in Half-Life 2 episodes appear as Alyx in the kill feed * Fixed mass-adjusted punt forces being applied to Mega Gravity Gun * Fixed Gravity Gun launching things too far due to a previous fix for `spin_none` physics interaction * Removed cheat flag from `cl_wpn_sway_scale` * Added a Player Model Selector button to spawnmenu * Added an ever increasing counter to poster file names to avoid name collisions * Allowed closecaptions in multiplayer with the `closecaption` console variable set to `1` (`closecaption_mp` for dedicated servers) * Updated Portal turret relationships to certain NPCs * Main menu news panel now has rounded corners to match the rest of the main menu styles (Community Contribution) * Do not penalize full servers in the ranking (Community Contribution) * Do not display effect rings with Gravity Gun equipped (Community Contribution) * Adjusted Sandbox weapon, NPC icons, etc. to scroll text if it is too long, for cases where translations take too much space * Replaced "::" buttons with proper icons * Spawnmenu drawers scale the category list - so that when the drawers are open, the bottom categories are not hidden behind the drawer (NPCs and Spawnlists tabs) * Loading screen gets map information faster when hosting a game * Update/render loading screen when running stringtable callbacks, which would normally freeze for some period of time (Community Contribution) * Port original explosion ear ringing behavior from Half-Life 2 to Lua - produces less ear ringing in general * Added icons to drag'n'drop right click menu (i.e. when drag and dropping spawnmenu icons with right click) * Added RPG Launcher as default weapon for Rebels in the spawnmenu (Community Contribution) * Updated some Half-Life 2 campaign map icons to show more recognizable areas, and be less dark.⤶ * Fixed water material in the first map of Half-Life 2: Episode 2 appearing different from the original game⤶ ## Deletions * Do not apply spawnmenu names to map-spawned NPCs in kill feed - it was too error prone * Removed player jingles/impulse 202 ## TTT Changes * Magneto-stick DoAttack code cleanup (Community Contribution) * Fixed C4/Radio sounds not playing in certain cases (Community Contribution) * Fixed "CS:S not mounted" warning not showing when CS:S is not mounted (Community Contribution) * Changed holdtypes for consistency with viewmodels (Community Contribution) * Clarify Health Station usage in hint text (Community Contribution) * Update localization files (Community Contributions) * Added `ttt_filter_role` entity (Community Contribution) * Close player volume slider along with scoreboard (Community Contribution) * Fixed players sometimes being revealed as dead when they chat/voicechat right as they die (Community Contribution) * Let `GM:TTTLastWordsMsg` hook override default behaviour (Community Contribution) * Fixed Health Station not breaking at exactly 0 HP (it being damaged, not used) (Community Contribution)⤶ # Technical Changes ## Additions * Added some generic logic entities from Portal 2 - `logic_register_activator`, `logic_coop_manager`, `point_viewcontrol_multiplayer`, `point_viewproxy` * Added new inputs/keyvalues to `prop_vehicle_choreo_generic` from Portal 2 * Inputs: `SetCanShoot`, `UseAttachmentEyes`, `SetMaxPitch`, `SetMinPitch`, `SetMaxYaw`, `SetMinYaw` * Key-values: `PlayerCanShoot`, `UseAttachmentEyes` * Enable DMX versions 3, 4 and 5 loading for particles from newer Source Engine games * Ported most particle related features from CS:GO * Added 2 new spawnflags to `env_player_surface_trigger` - Trigger on player(s) leaving ground & Set output activator to the player * Added new inputs to `game_text` - `SetText`, `SetPosX`, `SetPosY`, `SetTextColor`, `SetTextColor2` * Added new inputs for `game_player_equip` - `TriggerForAllPlayers` and `TriggerForActivatedPlayer`, as well as `"Strip All Weapons First"` spawnflag * Added `skybox_swapper` entity * Added `logic_eventlistener` and `logic_eventlistener_itemequip` from Team Fortress 2 * Added `point_worldtext` entity (CS:GO version) and added most Team Fortress 2-exclusive features into it * Added `logic_random_outputs` entity * Added `fog_volume` entity * Added `trigger_tonemap` entity * Added `env_ambient_light` entity * Added `point_entity_finder` entity * Added particle-based `func_precipitation` types from CS:GO * Added ability to override `func_precipitation` particle systems by name * Added `func_precipitation_blocker` entity * Implemented `origin` for `playlooping`/`playrandom` and `ambientOriginOverride` for "playSoundscape" in soundscapes * Added new options to Run Map dialog in Hammer * Restored `"JellyFish"` shader (Partially Community Contribution) * Added `hostile` keyvalue to `npc_citizen` * Will be treated as a combine. Useful for NPC reskins to not have combine noises. Or just for fun. * Implemented experimental 24-bit color support for Windows Dedicated Server console, and proper color support on Linux SRCDS * Implemented HDR override for fog colors for 20th anniversary Half-Life 2 maps (Also available in Hammer for mappers) * Added `Master` spawnflag to `env_tonemap_controller` * Added `SetMaxDensityLerpTo` input & `HDRColorScale` key-value to `env_fog_controller` * Implemented `AttachToVehicle` input for `npc_fastzombie` * Added `sv_maxvoicepacketsperframe` console variable * Enable `"flammable" "no"` prop interaction, to prevent props from igniting on explosion damage (for modellers at compile time) * Added `min_use_angle` for `func_button` from CS:GO * Added `DisappearMinDist` & `DisappearMaxDist` key values to `func_lod` (`DisappearDist` being deprecated and hidden, but still working) * Added `GetSpeed` and `SnapToStartPos` to `func_rotating` entity * Added `AffectedByWind` keyvalue to `func_dustmotes` entity * Added `trigger_playermovement` auto walk and no jump spawnflags * New localisation phrases in community.properties (Community Contribution) * Added `ip_steam` console variable * Added `sv_usercmd_custom_random_seed` console variable * Added `sv_showimpacts` console variable * Added radius support to `env_wind` * `color_correction` entities now work correctly with `fog_volume` - Adds Master and Simulate clientside spawnflags * Upgraded `ColorCorrectionUI` to CS:GO's version with ability to load saved presets * Added Quick Switches to the console dialog, allowing easy usage of common console commands and variables for debugging purposes * Added inputs to `env_skypaint` in Hammer for mapping ## Fixes * Fixed some minor memory leaks - These are mostly in developer features to do with KeyValues, not normal gameplay * Initialize `m_rgflCoordinateFrame` on creation clientside - This fixes certain matrices being nulled out when they are not supposed to, such as when calculating `prop_vehicle_choreo_generic` look angles * Allow loading PCF version 2 in `-tools` Particle Editor * Fixed many, many potential crashes with the particle system * Fixed missing materials with legacy Ash precipitation type * Fixed 2 `"Parent cvar in server.dll not allowed"` warnings on client start up * Do not print `cc_lang = ` with `developer 1` * Fixed `"Not playing a local game"` being printed on game start up * Fixed some warnings on map load when Portal 1 or Half-Life Source are not mounted * Fixed crashes with `func_tank` * Fixed crash when <page>ents.CreateClientProp</page> is given an empty string * Fixed `logic_collision_pair` and some other obscure entities not calling <page>GM:EntityRemoved</page> * Remove NULL entities from `Entity.Constraints` table when associated constraints are removed * Fixes for `tanktrain_ai` * Fixed sound playback and updated default sounds to existing files * Added `"Chase Target"` key value * Added missing `"Target Entity"` input to the FGD * Fixed movement direction selection & movement speed * `!player` target will update to the closest player before every move * Change update rate while moving to 0.1s (from 0.5) * Updated RPG viewmodel to use correct muzzle flash event and prevent console warning when firing * Fixed a server crash exploit to do with malicious packets * Fixed bone manipulations (scale, position) being transformed by how much the player moved on level transition * Fixed which entity is the inflictor/weapon in <page>CTakeDamageInfo</page> when firing built-in C++ weapons, including when NPCs fire them, as well as `trigger_WateryDeath`. * Fixed small potential memory leak with creating Lua bone followers * Fixed a small memory leak in gamemode .txt file parsing * Fixed a small memory leak with saving presets (<page>presets</page> library) * Fixed `"Bad SetLocalOrigin on gmod_hands"` warnings (Community Contribution) * Prevent `.ani` files from loading if they would crash the game i.e. if the `.ani` file is smaller than the model expects it to be * Update jQuery version and reduce reliance on it in main menu, as well as lazy load images (Community Contribution) * Do not crash with `"bad inline model number"`, show a console warning instead * Fixed bone manipulated entities' render bounding box being set to invalid sizes with certain models * Fixed `"Toggle"` input on some triggers improperly toggling the entity * Fixed console warning about missing material when opening Options menu * Fixed max player speed not being set when trying to slow walk with `+walk` but slow walk is disabled via <page>Player:SetCanWalk</page> * Do not unexpectedly reduce maximum health on dead entities * Play `act` console command animations on the server as well (for hitboxes) * Fixed a stack overflow in TextEntry scrolling * Fixed a rare crash when `net_showmsg` console variable is in use * "Fixed" an infinite loop in memory allocation by exiting the engine/tool with a nice message * Prevent developer only messages about bone access not being allowed with <page>util.DecalEx</page> in multiplayer * Fixed MP3s recaching 2 times in a row sometimes for no reason * Fixed cache size not being able to exceed 65kb per item * Make MP3s skip the ID3 data immediately on cache, not on first playback. This makes loading a bit slower per-file, but makes it so we don't need to cache upwards of 400KB of unused data per MP3 for playback without hanging the game * Increased amount of cached data for MP3s to satiate initial burst of data access by BASS.DLL (from 16K to 96k) This was preventing asynchronous load of the entire file * Fixed `SWEP.ViewModelFlip` making view model sway backwards * Fixed scrollbar parent resizing not adjusting scrollbar grip position (Lua scrollbar panels) * Fixed `CRopeKeyframe` having huge serverside bounds when not attached to anything, such as being the last entity in a series * Fixed `trigger_remove` `OnRemove` output not working at all * Made `cmd` console command not kick people (And hide it) * Fixed `.gma` files being left open in some cases if they failed to load/parse * Prevent potential crashes to do with traces on models * Materials using the `SpriteCard` shader can now render correctly with `render_sprite_trail` particle renderer * Mitigate invalid vehicle scripts causing server crashes * Fixed `player_squad` NPC squad being overflown when spawning too many npc_alyx or npc_citizen entities * Fixed spawnmenu NPC squads being overflown when spawning many NPCs in the same faction at once * Fixed infinite loop with removing world decals⤶ * Fixed input parameter type for `prop_ragdoll`'s `StartRagdollBoogie` input⤶ ## Changes * Do not estimate velocity clientside since we network it for every entity anyway * Use networked velocity for entities that set it serverside * Physics entities such as props, vehicles, SENTS do not set their velocity, since its all handled by the physics engine, so it ends up not actually being networked * Moved `"SOLID_VPHYSICS static prop with no vphysics"` warning to developer 1 * Made particle preview background slightly lighter (32,32,32) * Set the default particle orientation in Particle Editor on creation * Added particle material name to `"unimplemented sprite renderer"` warning (.pcf particles) * Force Sandbox tool classnames to lowercase at all times to fix a bug in multiplayer where the client and server classname could have mismatching capitalization * Applied potential filesystem optimization suggested by the community * Micro optimization for SWEP think * Optimize `DListView_Line` - Remove `DListViewLabel`'s Think function since it does nothing in `DListView_Line` anyway * Minor code quality & performance improvements to Toolgun Help, RenderTarget related Lua code, `skypaint` matproxy, ToolGun and Post Processing control panels, ents.FindByClassAndParent, removed deprecated calls to ControlPanel:AddControl, Workshop Mount VGUI, Sandbox hints, Removed unused JS dependencies in main menu - angular-ui, jquery-ui, jquery-color, AngularJS from 1.1.2 to 1.8.2, cleaner server list layout code & Better display on small screens (Community Contributions) * Micro optimization for Entity.__index (Community Contribution) * Micro optimizations for team library (Community Contribution) * Potential micro optimizations in localization loading/parsing * Store disabled workshop addon IDs as Uint64 instead of IDs turned to strings - should save some memory * Clear `CShadowDepthView` to black instead of white - fixes reflective glass on certain maps having while glow with flashlight turned on * Do not throttle loopback (local servers) connections when sending data from server to client * Check allocated edict count before allocating more - this should prevent `"ED_Alloc: no free edicts"` crashes when spam spawning hundreds of entities per second * Improved X-axis text inset handling with center alignment (for DButton when an icon is use) * Change Hitbox 7 color from white to orange for the debugging console variable and HMLV * Search for shaders in map file if none were found in the game folder * Added `"shaders/*.vcs"` to BSP whitelist * Updated `screenspace_general` shader with some CS:GO features * Removes `$X360APPCHOOSER` (Use `$VertexColor`) * Adds `$VERTEXSHADER` * Added most CS:GO parameters except for C4* and C5* parameters * Enable `sv_parallel_sendsnapshot` by default * Display a warning when async file read operation tries to read more bytes than there are in the file * Display HTTP error when FastDL fails to download a file and if it's not a 404 error * Made `lua_run` entity keyvalues case insensitive * Call <page>Entity:SetCreator</page> on all Sandbox spawned entities, not just SENTs (Community Contribution) * Filled in some GMod specific console variable descriptions that are defined in C++ * Added shader name to `"failed to create shader"` console error message * Rework how LZMA decompression works for BSP files to be more reliable and less wasteful * Added more useful info to Client=>Server and Server=>Client GMod specific net message ToStrings for debugging purposes (`net_showmsg`) * Unhide `sv_maxspeed` console variable * Do not read mapcycle.txt file from addons or mountable games * Added weapon class name & entity index to `"Weapon spawning in solid"` console warning * Exit SRCDS (with a message) if GSLT is invalid or expired (can still not provide one), instead of never connecting to Steam. This behavior is consistent with CS:GO. `hide_server 1` can be used to hide your server from the server list. * Added description for `debug_dump` console command and print more info about what it did when ran * Rollermine uses two-pass render group when open instead of translucent, this makes it render better with SSAO pass (such as with Bokeh DOF) * Allow Map I/O to convert integer/float parameters to strings automatically * Unhide `sv_hl2mp_weapon_respawn_time`/`sv_hl2mp_item_respawn_time`⤶ * Also made `mp_weaponstay` work for map spawned entities, by respawning them⤶ ## Deletions * Removed scratchpad from game builds * Removed `bloodspray` console command * Removed some perforce VGUI panels from builds * Removed some useless strings from `garrysmod_english.txt` * Removed `mat_surfaceid` and `vgui_drawtree_panelptr` console commands/variables * Removed unused `resource/chromium/` folder * Removed non existent `commedit.dll` from `sdkenginetools.txt` * Removed `cl_threaded_client_leaf_system` console variable, which was doing nothing since 2016, except to mislead people * Removed `sv_autojump` as it also does nothing besides misleading people * Removed hack for Intel GPUs that disabled Shader Model 3 shaders * Removed some clientside weapon stubs for non existent weapons * Removed usage of <page>Global.DOFModeHack</page> from Bokeh DOF * Remove `cl_customsounds` as it no longer has an effect on anything⤶ # Developer tool changes ## Hammer * Added model scale preview to Hammer * Made Hammer use `gmod.exe` when generating GameConfig.txt * Fixed collision model preview in Hammer being offset in 3D when dragging * Fixed keybinds in Hammer for `1` & `2` not updating the render distance setting correctly, resulting in it being reset to previous step when certain actions happen * Fixed empty buttons appearing in Hammer Entity Properties when it is opened before any entity is selected * Hammer & other tools mount `addons/` folder by default (can be disabled with `-noaddons` launch parameter) * Added HammerID for entities in Hammer's selection status bar (Brushes already had this added a while back) * Added build date to Hammer's About dialog * When copying game configs in Hammer options, ask for a new name instead of copying the existing name without a way to change it * Updated the Hammer icon to be higher quality and have Garry's Mod colors * Switch Hammer to use `CmdSeqDefault.wc` by default (like CS:GO, user preferences are still stored in `CmdSeq.wc`) * Updated input elements Hammer Options tabs to fit the width of the window and fit more data * Increase `MAX_MAP_BRUSHES` from `16384` to `65535` * Tweak Hammer splash image & .exe info * Expand Hammer Object Bar by 20px to fit auto vis groups horizontally * Increase default size of Hammer Entity Help window * Allow `bool` and `boolean` to be interchangeable in `.fgd` files * Update "Lighting Origin" KV description to mention `info_target`, not `info_lighting`, latter of which is removed on compile and is only meant for static props * Added `"starlayers"` to `env_skypaint` in Hammer, and mention the skybox texture name requirement in the entity description * Include missing Garry's Mod specific additions in Hammer - new Rollermine spawnflag and `beam_spotlight`'s `SetColor` input * Added internal/hidden npc_rollermine inputs in Hammer * Fixed Hammer breaking VMF files if they contain \n in keyvalue values * Implemented Hammer preview for point_worldtext - https://files.facepunch.com/rubat/2025/February21-1113-CrowdedFoxhound.jpg * Ensure Hammer's Entity Properties Input/Output columns fit the header text, so its not "P...", "O...", etc. when adding a new input for the first time * Fixed map instances being added to recently opened files in Hammer when opening the parent map * Implemented Hammer multi-cordon system from CS:GO * Fixed certain inputs having wrong descriptions in Hammer Entity Properties window * Text parsing: Handle loading/writing \r correctly (Hammer VMF) * Entity comments allow adding new lines with Enter in Hammer Object Properties ## Map Compile Tools * Added `light_directional` support for VRAD * Ported some other VRAD changes from CS:GO to do with displacement lightmaps, supposedly should be better where brushes/displacements meet * Implement `-StaticPropSampleScale` & `-StaticPropBounce` for VRADfrom CS:GO * Added `-softenCosine` for VRAD * Only show `"Warning! Invalid model version"` with verbose flag in VRAD output * Fixed a memory corruption issue with VRAD static prop lightmaps * Added `-bounceFromNamed` (lights) to VRAD (Community Contribution) * Added `%alphatexture` VMT compile parameter for VRAD (Community Contribution) * Fixed VRAD crashing due to missing VVD files * Increase usefulness of "Occluder straddles multiple areas" VBSP warning * Fixed VBSP crashing with missing VVDs, and fix it trying to look for VVDs in incorrect places in rare cases * Added support for `%CompileNoShadows` to VBSP * Prevent VBSP crashing with bad VMFs (that contain unescaped newlines in KV values), display an error * Do not set thread count to 1 if the local CPU has more than 32 of them (limited to 64 now, and is clamped instead of resetting) * Fixed map compile tool output formatting to do with missing prints related to threaded workloads * Removed duplicate "missing material" output from VBSP ## Other * Added missing HLFaceposer.exe icons * Fixed a crash in HLFaceposer.exe when opening file lists when files are in VPKs * Fixed HLFaceposer.exe crash due to missing phoneme extractor DLLs * Fixed tool Model Picker causing console warnings * Set default Model Picker model image output folder to a game sub-folder, not `C:/` * Hide `"Generate Backpack Icons"` button in Model Picker as it is not applicable to Garry's Mod * Fixed `"Clear Undo History"` option not working in Particle Editor * Fixed panel/memory leak with particle picker previews (Particle Editor) * Actually implement undo limit in tools (and set it to 512 in Particle Editor) * Fixed a crash with Material Picker (`-tools`) * Tools: try searching for `gameinfo.txt` relative to the .exe of the tool, if `gameinfo.txt` not found * Allows BSPZIP (and probably others) to run from scripts outside of the game directory without additional parameters such as `-game` * StudioMdl: Gracefully handle `numframes 0` or below in `$sequence` with an error message, instead of crashing # Lua API Changes ## Additions * Added <page>PhysObj:GetIndex</page> * Added <page>NPC:SetFOV</page>, <page>NPC:GetFOV</page> (in degrees), <page>NPC:IsInViewCone</page> ( vector/entity ) * Added <page>Entity:AddSpawnFlags</page>, <page>Entity:RemoveSpawnFlags</page> and <page>Entity:SetSpawnFlags</page> (Community Contribution) * Added `MAX_EDICT_BITS` global enum * Added <page>NPC:GetLastPosition</page> * Added <page>NPC:GetMoveDelay</page> * Added <page>NPC:SetMoveDelay</page> * Added <page>physenv.GetPhysicsPaused</page> * Added <page>physenv.SetPhysicsPaused</page> * Added <page>ENTITY:TranslateNavGoal</page> * Added <page>sound.SetActorGender</page> * Added `viewid` to <page>render.GetViewSetup</page>, can be used to detect water rendering passes * Added <page>ENTITY:DoImpactEffect</page> for `ai` and `nextbot` SENTs * Added <page>CTakeDamageInfo:GetWeapon</page> and <page>CTakeDamageInfo:SetWeapon</page> * Added <page>Entity:Alive</page> * Added <page>math.IsNearlyEqual</page> * Added <page>Global.HWBToColor</page> (Community Contribution) * Added <page>COLOR:ToHWB</page> (Community Contribution) * Added <page>COLOR:GetHue</page>, <page>COLOR:SetHue</page>, <page>COLOR:AddHue</page> (Community Contribution) * Added <page>COLOR:GetSaturation</page>, <page>COLOR:SetSaturation</page>, <page>COLOR:AddSaturation</page> (Community Contribution) * Added <page>COLOR:GetBrightness</page>, <page>COLOR:SetBrightness</page>, <page>COLOR:AddBrightness</page> (Community Contribution) * Added <page>COLOR:GetLightness</page>, <page>COLOR:SetLightness</page>, <page>COLOR:AddLightness</page> (Community Contribution) * Added <page>COLOR:GetWhiteness</page>, <page>COLOR:SetWhiteness</page>, <page>COLOR:AddWhiteness</page> (Community Contribution) * Added <page>COLOR:GetBlackness</page>, <page>COLOR:SetBlackness</page>, <page>COLOR:AddBlackness</page> (Community Contribution) * Added 2nd argument to <page>Global.CompileFile</page> - showError * Added <page>util.RemoveDecalsAt</page> * Added <page>Player:ExitLadder</page> * Added `"owner"` argument to <page>WEAPON:OnDrop</page> * Allow NPC list (<page>list.Set</page>) to set `Author` property (displayed in spawnmenu on hover tooltip) * Added `drawviewer` field to <page>render.RenderView</page> * Added ability to ship custom shaders in Workshop addons * Added <page>NPC:GetHeadDirection</page> and <page>NPC:GetEyeDirection</page> * Added <page>Entity:SetNetworkVarsFromMapInput</page> as a helper and a sister function to <page>Entity:SetNetworkKeyValue</page> * Added <page>SANDBOX:SpawnmenuIconMenuOpen</page> * ENT.Information support for tooltips in NPC spawn icons ## Fixes * Fixed not being able to `StopSound` generated sounds * Fixed clientside only entities being considered map created by <page>Entity:CreatedByMap</page> * Fixed <page>DAdjustableModelPanel</page> spazzing out when main menu is open (by ignoring mouse input) * <page>gmsave.SaveMap</page> now respects `Entity.DoNotDuplicate` fully * Improve JSON function compliance with the JSON specification * <page>util.TableToJSON</page> - <page>math.huge</page> keys now become `"Infinity"` instead of `"inf"` * <page>util.JSONToTable</page> - Handle `nil` in arrays, convert boolean looking keys ("true", "false") to booleans if this behavior is not disabled by the 3rd argument * Fixed <page>DButton:SetConsoleCommand</page> not accepting <page>vararg</page> (Community Contribution) * Fixed <page>DTextEntry</page> autocomplete menu not inheriting text entry's skin * Fixed <page>GM:NeedsDepthPass</page> causing NPCs to not render, and fixed it rendering ropes twice * Try to mitigate <page>util.TableToJSON</page> leaving junk behind on failure * Fixed <page>ai.GetSquadMemberCount</page> returning nothing if there is no squad with given name. Now returns 0. * Fixed <page>team.GetColor</page> retuning non copied default color for invalid team IDs ## Changes * Display a non halting error when teamID in <page>Player:SetTeam</page> would not network correctly * <page>GM:ClientSignOnStateChanged</page> is no longer called for HLTV clients * <page>util.IsValidModel</page> uses meshcount to determine useless models, instead of hardcoded path substrings, which is error prone * Do not `IsValid` the ident in `hook.Add` & `hook.Remove` - The check was added solely to print an error for invalid input types, but NULL entity is still an entity * Make <page>Entity:IsOnFire</page> return `false` instead of `nil` for non animated entities * <page>Entity:FollowBone</page> doesn't check the `boneID` argument if given a NULL entity, or no arguments at all * Cache gamemode table for <page>gamemode.Call</page> and <page>hook.Run</page> (Community Contribution) * <page>engine.CloseServer</page> now returns true if quit command was issued, also fixed it not working immediately on server start up * <page>COLOR:SetUnpacked</page> now type checks its inputs * Made certain Lua errors thrown from Lua-defined functions produce more useful stack traces * <page>game.CleanUpMap</page> deletes `C_Hairball` * Make <page>file.Write</page> and <page>file.Append</page> return success of <page>file.Open</page> used internally (Community Contribution) * Added Lua implementations of HSVToColor & HSLToColor for higher performance and ensuring their return value has the Color metatable (Community Contribution) * Allow comments and trailing commas in JSON parsing * Made <page>util.TableToJSON</page> output whole numbers without decimal point when encountering such whole Lua numbers * Made <page>Player:LimitHit</page> serverside only (it would error clientside) * Made <page>file.Read</page> return `nil` on failure instead of `no value` * <page>Global.HTTP</page> calls the fail callback with `-disablehttp`⤶ ## Deletions * Removed last 3 parameters of <page>engine.WriteSave</page> which are now handled in-engine automatically * Added `timedemo` and related console variables/console commands to blocked console command list * Blocked the `"showconsole"` console command, and the `tv_record` console command clientside