From 2533e18427deea86719bd5e615e18400deb400f4 Mon Sep 17 00:00:00 2001 From: speedvoltage <32344549+speedvoltage@users.noreply.github.com> Date: Tue, 11 Mar 2025 16:55:52 +0100 Subject: [PATCH 1/2] Fix stuck sticking props collision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ► Set the proper collision group for stuck at position props such as saw blades --- src/game/server/props.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/server/props.cpp b/src/game/server/props.cpp index dec14e42d..7a8fba1c4 100644 --- a/src/game/server/props.cpp +++ b/src/game/server/props.cpp @@ -655,7 +655,7 @@ void CBreakableProp::StickAtPosition( const Vector &stickPosition, const Vector VPhysicsGetObject()->EnableMotion( false ); AddSpawnFlags( SF_PHYSPROP_ENABLE_ON_PHYSCANNON ); - SetCollisionGroup( COLLISION_GROUP_DEBRIS ); + SetCollisionGroup( COLLISION_GROUP_INTERACTIVE ); } //----------------------------------------------------------------------------- From a08793a34defa56a01ff04f2647183c394489e21 Mon Sep 17 00:00:00 2001 From: speedvoltage <32344549+speedvoltage@users.noreply.github.com> Date: Sat, 15 Mar 2025 11:39:08 +0100 Subject: [PATCH 2/2] Add sv_stuck_prop_disable_collisions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ► Added sv_stuck_prop_disable_collisions to control whether server ops want to disable collisions for stuck props in walls. Some maps like js_build_puzzle use those mechanics to solve some puzzles. --- src/game/server/props.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/game/server/props.cpp b/src/game/server/props.cpp index 7a8fba1c4..a087af216 100644 --- a/src/game/server/props.cpp +++ b/src/game/server/props.cpp @@ -64,7 +64,7 @@ extern CBaseEntity *FindPickerEntity( CBasePlayer *pPlayer ); ConVar g_debug_doors( "g_debug_doors", "0" ); ConVar breakable_disable_gib_limit( "breakable_disable_gib_limit", "0" ); ConVar breakable_multiplayer( "breakable_multiplayer", "1" ); - +ConVar sv_stuck_prop_disable_collisions( "sv_stuck_prop_disable_collisions", "1", 0, "If non-zero, props like saw blades, harpoons, etc that stick to a wall will not collide with players" ); // AI Interaction for being hit by a physics object int g_interactionHitByPlayerThrownPhysObj = 0; int g_interactionPlayerPuntedHeavyObject = 0; @@ -655,7 +655,10 @@ void CBreakableProp::StickAtPosition( const Vector &stickPosition, const Vector VPhysicsGetObject()->EnableMotion( false ); AddSpawnFlags( SF_PHYSPROP_ENABLE_ON_PHYSCANNON ); - SetCollisionGroup( COLLISION_GROUP_INTERACTIVE ); + if ( sv_stuck_prop_disable_collisions.GetBool() ) + SetCollisionGroup( COLLISION_GROUP_DEBRIS ); + else + SetCollisionGroup( COLLISION_GROUP_INTERACTIVE ); } //-----------------------------------------------------------------------------