From 19ad87f0830f4e8f00cbb143b08a617d9db706ca Mon Sep 17 00:00:00 2001 From: Micr0Byte <26364458+micr0-dev@users.noreply.github.com> Date: Fri, 26 Jun 2026 09:16:25 -0400 Subject: [PATCH 1/2] Fix OnServerRagdoll hook leaving 'ragdoll' param undefined on Linux --- sp/src/game/server/physics_prop_ragdoll.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sp/src/game/server/physics_prop_ragdoll.cpp b/sp/src/game/server/physics_prop_ragdoll.cpp index cf2a4a1861c..efd2870cf55 100644 --- a/sp/src/game/server/physics_prop_ragdoll.cpp +++ b/sp/src/game/server/physics_prop_ragdoll.cpp @@ -1656,7 +1656,8 @@ CBaseAnimating *CreateServerRagdollSubmodel( CBaseAnimating *pOwner, const char if (pOwner && pOwner->m_ScriptScope.IsInitialized() && CBaseAnimating::g_Hook_OnServerRagdoll.CanRunInScope( pOwner->m_ScriptScope )) { // ragdoll, submodel - ScriptVariant_t args[] = { ScriptVariant_t( pRagdoll->GetScriptInstance() ), true }; + HSCRIPT hRagdoll = pRagdoll ? pRagdoll->GetScriptInstance() : NULL; + ScriptVariant_t args[] = { ScriptVariant_t( hRagdoll ), true }; CBaseAnimating::g_Hook_OnServerRagdoll.Call( pOwner->m_ScriptScope, NULL, args ); } #endif @@ -1690,7 +1691,8 @@ CBaseEntity *CreateServerRagdoll( CBaseAnimating *pAnimating, int forceBone, con if (pAnimating->m_ScriptScope.IsInitialized() && CBaseAnimating::g_Hook_OnServerRagdoll.CanRunInScope( pAnimating->m_ScriptScope )) { // ragdoll, submodel - ScriptVariant_t args[] = { ScriptVariant_t( pRagdoll->GetScriptInstance() ), false }; + HSCRIPT hRagdoll = pRagdoll ? pRagdoll->GetScriptInstance() : NULL; + ScriptVariant_t args[] = { ScriptVariant_t( hRagdoll ), false }; CBaseAnimating::g_Hook_OnServerRagdoll.Call( pAnimating->m_ScriptScope, NULL, args ); } #endif From 14dca8dd8b2896dd371d6622fb074ea79c1311fe Mon Sep 17 00:00:00 2001 From: Micr0Byte <26364458+micr0-dev@users.noreply.github.com> Date: Sat, 27 Jun 2026 08:23:06 -0400 Subject: [PATCH 2/2] Guard TASK_SMALL_FLINCH/TASK_BIG_FLINCH against ACT_INVALID --- sp/src/game/server/ai_basenpc_schedule.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sp/src/game/server/ai_basenpc_schedule.cpp b/sp/src/game/server/ai_basenpc_schedule.cpp index ec5d612d621..62fd8bafa71 100644 --- a/sp/src/game/server/ai_basenpc_schedule.cpp +++ b/sp/src/game/server/ai_basenpc_schedule.cpp @@ -2800,14 +2800,22 @@ void CAI_BaseNPC::StartTask( const Task_t *pTask ) case TASK_SMALL_FLINCH: { Remember(bits_MEMORY_FLINCHED); - SetIdealActivity( GetFlinchActivity( false, false ) ); + Activity flinchActivity = GetFlinchActivity( false, false ); + if ( HaveSequenceForActivity( flinchActivity ) ) + SetIdealActivity( flinchActivity ); + else + TaskComplete(); m_flNextFlinchTime = gpGlobals->curtime + random->RandomFloat( 3, 5 ); break; } case TASK_BIG_FLINCH: { Remember(bits_MEMORY_FLINCHED); - SetIdealActivity( GetFlinchActivity( true, false ) ); + Activity flinchActivity = GetFlinchActivity( true, false ); + if ( HaveSequenceForActivity( flinchActivity ) ) + SetIdealActivity( flinchActivity ); + else + TaskComplete(); m_flNextFlinchTime = gpGlobals->curtime + random->RandomFloat( 3, 5 ); break; }