160,383 Commits over 4,566 Days - 1.46cph!
Moved MenuUI2's UIBlurCanvasesBehind from FadedBackground to PageBackground as it needs a CanvasRenderer
merge from uiblur_faded_fix
Uzi: mag drop and shell ejection
- Mag drop on world model reloads
- Shell ejection in first person and 3p: new eject_shell (viewmodel) and w_eject_pistol_shell (world, on the uzi shell_eject bone)
- viewmodel updated, shell eject position + enforceClipWeights on so fire/fire_ADS sharing a blend tree don't spawn two shells per shot
- 1-2 boat groups will spawn every 5-8 hours (spawn together)
- Each individual group gets a random lifetime of 30-60 minutes before egress
viewmodel lasersight/brake attachment placment
update base_occlusion/foundation_offset_fix
Cant take the pt boat out of the deepsea (just like the other boats)
More Uzi 3p setup - stock and no stock anims for world model and player
- w_uzi anim hooked up, now swaps between the stock/ no stock anim sets when rifle mode is is toggled
- 3p anims now using a subsystem, not an overrride....so I can use multiple masks (no stock = one handed, left arm stays on locomotion, left hand comes in for the reload, stock out = two handed
- removed holdtype controller (not needed now)
- Stock deploy / collapse anims play when toggling between the two
- 3p anim updates + deploy/collapse stock clips
- uzi.entity: ProjectileAnimationSubSystem driven by the StockDeployed flag, HoldType.uzi override removed
- Uzi.cs (client only): sets the rifle_mode float on the world model animator from the stock flag. Skipped while the animator is inactive, same approach as CrossbowWeapon/Handcuffs driving their world animators
Handle 0 byte model files crashing the game
Adjust empty model file handling
* Change where it bails so maybe its less error prone?
Cherry pick alloc fix for pool table and fishing, and fix compile error
▄ ▊▅▆▇▍▋ ▌▆▍ ▆▍▇▄▅ ▋▍▆▆ ▊▅▊ ▅▋██▆ ▅█▄ ▅▋ ▋▌▉▊ ▉▍▋▋▍ ▇▍▍▊▍▅▄▉ ▄█▉▊ ▍▅
Fix industrial pipe segments being permanently dynamic via flag on the prefab, toggle their LODs only when on a moving parent like base io lines
merge from base_occlusion/vending_door_fix -> base_occlusion
Add support for doors to be "always closed" but still treated like portals between rooms
- allows vending machines to block visibility between rooms while keeping the same code as doors
Add the "door blocker" component for base occlusion to the vending machine prefab too
Fix entities placed in sockets (vending machines) not linking up with their sockets until stability runs (which doesn't apply for vending machines) or server restart
- part of the reason vending machines didn't block occlusion: they sometimes had no links
Fix entities that were forced dynamic due to being parented never resetting the flag when pooled and staying dynamic when reused without a parent
Update tests to be aware of the extra faces on foundations now
Fix a foundation surrounded by walls being connected to a foundation outside the base offset half below
- add faces on the sides of foundations & rely on existing face linking behavior to work properly
Reserialize foundation prefabs before adding new faces (for clean diff)
added example mesh for jarryd -
idea is to box’s position, dimensions and rotation
Use object-name suffixes to assign physics materials, e.g. floor_01_wood uses Wood.
Remove material suffixes from generated child names
Place aligned colliders directly on the parent; create separate children for rotated boxes
Remove the reference instance after conversion, with Undo/Redo support
Cherry pick old animals fixes (flee when attacked from afar, do not sleep)
UIBlurCanvasesBehind skips the capture while a CanvasGroup above is faded out
Improve DImage shader replacement system
* Uses case insensitive check for VertexLitGeneric, includes LightmappedGeneric now
* Handles SubRect shader materials by drawing the correct part of the texture
Try to have Paint tool UI with previews
* https://files.facepunch.com/rubat/2026/October13-3318-SecondhandWoodborer.png
Lets try ignoring UV adjustments in surface.DrawTexturedRectUV
* So the function's UV arguments work like expected, without the "sub pixel adjustment" stuff, which seems unnecessary?
* Only the Lua binding is affected
Refine DImage subrect support and KeepAspect features
Minor cleanups
Remove leftover debug panel from Paint tool, KeepAspect the icons
Update GHA actions to version 6 for Linux and Windows
Add trigger_portal_cleanser to entity override whitelist
Fixed a crash with render.UpdateScreenEffectTexture
Remove widgets.RenderMe and properties.GetHovered serverside
* widgets would just do nothing, but shouldn't exist on the server, properties.GetHovered would just error out
Minor cleanups of various methods to match wiki and vice versa
Fixed a couple memory leaks with multicore rendering
* Mostly relates to functions such as render.UpdateScreenEffectTexture and render.PushCustomClipPlane
Try downgrading actions/checkout to v5
* goddamn github man
Port a fix for math.ceil/floor
Add some self checks for corrupted map files
"load" concommand doesn't boot you from session for missing saves
* So "load quick" bind doesn't disconnect you if you accidentally press it without having a quick save
Fixed ZFunc not being set when overriding depth testing
Fixed regression with DPanel:OnMousePressed due to recent changes
Merge Pull Requests
* Make ENT:StoreOutput treat times=0 same as times=-1, making it consistent with engine entities
Try to add the file path to CWin32ReadOnlyFile::FS_fread warnings
Move DrawTexturedRectUV changes to a separate func
* DrawTexturedRectRawUV
Prediction errors on arrays include array index for ints and floats
Try to add classname to CUtlRBTree overflow message
Rename ErrorFromLua to ErrorNoHaltStack
Added CLuaInterface::FormatError
Fixed some compile warnings
Allow mesh.BoneData to be called with index 2
* Weight value is ignored in this case
* Mesh() global now allows 3 bone weights
* Mesh:BuildFromTriangles will now read up to 3 weights, depending on the input above
Added 2 new sub scopes to PhysFrame
* `PhysFrame-CPhysicsEnvironment::Simulate` and `PhysFrame-VPhysicsShadowUpdate`
Added OnChangedFromMin/Max to math_counter entity
* Also added SetMax/MinValueNoFire inputs for it
Improve error handling of Autorefresh
Fixed memory leak with Windows auto refresh with symlinks
* Hopefully without regressions, as the system was changed somewhat substantially
Fixed a crash with inputs firing from removed triggers
Fixed wrong lookup function used in Hunter NPC code
Add m_hStoredPathTarget to SetSaveValue whitelist
Minor Hammer code fixes
Fixed wrongful error with Mesh:DrawSkinned with 52 bones
Fix Folder addons being searched in mountable games/platform
Add "Engine Error" to Sys_Error_Internal printf
Disable some unused Bootil stuff that spits out warnings
Fixed an issue with prediction error counting affecting certain fields
Make "SetPos touch triggers" change opt-in via argument
* This change causes infinite loops in existing addons, such as TTT.
Fixed auto complete for lua_refresh_file
rename `demo.newui` to `demo.oldui`, enable demoui2 by default.
[old ui stays. we really don't have a reason to nuke it for now and there are still some people that prefer the old one.]
Adjust empty model file handling
* Change where it bails so maybe its less error prone?
Fixed an issue with prediction error counting affecting certain fields
Added icons for the 5 new TF2 maps
Set "occlusion_door_immediate" to false by default (was supposed to be since we show everything within 32m)
merge from aizone_sleep_fix
Add special staging-only gamepad UI button option that hackily enables gamepad override just for that session.
Hide all other gamepad options in the gamepad section until it is enabled.
Fix navmesh building on top of cargoship
Fix AI Sleep Zones not working correctly since May
- race condition fix earlier this year inadvertently made any zone outside of a BaseEntity not initialise correctly (all except underwater labs)
- before / after on fresh procmap: https://files.facepunch.com/ryanw/2026/October/26_19-06-IndelibleBlackrhino.png / https://files.facepunch.com/ryanw/2026/October/26_18-54-FluffyDaddylonglegs.png
Fix sheeps starving despite a trough, their feed time was lower than cows so they wasted time shuffling with each other for a turn, now feeding time can't desync between sheep and cows
Update: Item.UseItem now returns if the entire item was consumed
- bugfix IndustrialConveyor's use-after-free of item in QuickMove path
Tests: ran conveyor tests, no longer failing
▉ ▄▅▄▌▇ █▆ ▍▅▉▇ ▋▋▄▍▌▉▅▄█▅▌ ▋▆▋▆▉ ▊█▆██ ▌█▋▍▊▇▇▍█▇ ▄ ▍▄▉▇▇ ▇█ ▅█▅▉█▆▇▋ ▅▄▍▊▉ ▌▄▍▍▆▆▍▆ ▅▋▅▍▋▌▋▆▆ ▌▆▆▍▅▍▆▇▄▉▉ ▌▆▆▍ ▋▋▅ ▌▅▉▅▄▇▆ ▍▊▄▉ ▊█▊▉▌ ▅▋▇▉▋ ▅▊▊▆▊ █▇▍ █▅▅▄ ▊▌▄▋▋▅ ▍▋▅▆ ▅▌ ▇▅▌▇█ ▄▆█▆▇ ▋█▌▍▇▌▍▍▆ ▍▇▊▋▋▉▄█▉▇▌▉▌█▌▌▉▉▄▉▇▍▋▋▆▅ ▉▌▌ ▌▄▋▆▄▆█▊ █▅▌▇▊▊▄▇ ▌▍▄▄▄ ▌▇▍ █▌▍▉ ▌█▊ ▍▆▊▋▇▄▇▋▅▇▆▄█▅▅▋▆▊ ██▅▉▌ ▋▍▋▌ ▋▆▆▍▋▍█▌▅▄▍▋▆█ ▅▌▊▌ ▋▌▋▆▅▊▌█▄ █▇▇▌▋▉▅▉
Optimize doors when recalculating series of connected rooms when doors are opened & closed
merge from analytics_base_occlusion -> main
merge from work_queue_optims
- anims and clips for weapons own anims, inc stock deploy + collapse, reload and fire
- initial animator setup for these weapon anims
- clip update of 3p idle
- avatar setup for world weapon rig
Add analytics events for rotating and flipping building blocks
▄ █▍█▅▊ ▌▅▋▉ ▇▄▍▅▌▊▍██▍▍▋█▊▊▄
█ ▅ ▆▆▋▋▇ ▊▉▅▊ ▆▆▊▅▄ ▉▌ ▇▉▌ █▆▆▉█▄▋▅▊▆ ▇▉▅▄▊▉▆▋ ▄▅▍▌▍▋▆▇▍▊▋ ▇▍ ▌▊▄ ▍▌▍▊ ▆▊▉▉ ▍▌ ▇▊▄▊▉█▆▄▇▇ ▍▊▇▉▇▅▅▅ ▇▇ ▇▉▌ ▄▄▋▊▊ █▇ ▉▇▍▄ █▉▆▇▅▆▄ ▌█▆▅ ▇▉█▇▅ ▉█▅ ▉▉▌▋▄▉▋▌ ▊▊▄▋▉▊▆
boat_scientists_improvements -> main
Only attempt turns when we can actually see the player
Lap interval pass on additional work queues
- DroppedItemUnderwaterQueue, 0.05, keep inline (ish) with physics tick rate
- BotColliderWorkQueue, 0.1, this is only refreshed every 0.2-0.3 seconds anyway