Garry's Mod Logo
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.