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.