@@ -80,9 +80,11 @@ DECLARE_DETOUR(TraceShape, Detour_TraceShape);
80
80
81
81
static bool g_bBlockMolotovSelfDmg = false ;
82
82
static bool g_bBlockAllDamage = false ;
83
+ static bool g_bFixBlockDamage = false ;
83
84
84
85
FAKE_BOOL_CVAR (cs2f_block_molotov_self_dmg, " Whether to block self-damage from molotovs" , g_bBlockMolotovSelfDmg, false , false )
85
86
FAKE_BOOL_CVAR(cs2f_block_all_dmg, " Whether to block all damage to players" , g_bBlockAllDamage, false , false )
87
+ FAKE_BOOL_CVAR(cs2f_fix_block_dmg, " Whether to fix block-damage on players" , g_bFixBlockDamage, false , false )
86
88
87
89
void FASTCALL Detour_CBaseEntity_TakeDamageOld(CBaseEntity *pThis, CTakeDamageInfo *inputInfo)
88
90
{
@@ -110,6 +112,25 @@ void FASTCALL Detour_CBaseEntity_TakeDamageOld(CBaseEntity *pThis, CTakeDamageIn
110
112
CBaseEntity *pInflictor = inputInfo->m_hInflictor .Get ();
111
113
const char *pszInflictorClass = pInflictor ? pInflictor->GetClassname () : " " ;
112
114
115
+ // After Armory update, activator became attacker on block damage, which broke it..
116
+ if (g_bFixBlockDamage && inputInfo->m_AttackerInfo .m_bIsPawn && inputInfo->m_bitsDamageType ^ DMG_BULLET && inputInfo->m_hAttacker != pThis->GetHandle ())
117
+ {
118
+ if (V_strcasecmp (pszInflictorClass, " func_movelinear" ) == 0
119
+ || V_strcasecmp (pszInflictorClass, " func_mover" ) == 0
120
+ || V_strcasecmp (pszInflictorClass, " func_door" ) == 0
121
+ || V_strcasecmp (pszInflictorClass, " func_door_rotating" ) == 0
122
+ || V_strcasecmp (pszInflictorClass, " func_rotating" ) == 0
123
+ || V_strcasecmp (pszInflictorClass, " point_hurt" ) == 0 )
124
+ {
125
+ inputInfo->m_AttackerInfo .m_bIsPawn = false ;
126
+ inputInfo->m_AttackerInfo .m_bIsWorld = true ;
127
+ inputInfo->m_hAttacker = inputInfo->m_hInflictor ;
128
+
129
+ inputInfo->m_AttackerInfo .m_hAttackerPawn = CHandle<CCSPlayerPawn>(~0u );
130
+ inputInfo->m_AttackerInfo .m_nAttackerPlayerSlot = ~0 ;
131
+ }
132
+ }
133
+
113
134
// Prevent everything but nades from inflicting blast damage
114
135
if (inputInfo->m_bitsDamageType == DamageTypes_t::DMG_BLAST && V_strncmp (pszInflictorClass, " hegrenade" , 9 ))
115
136
inputInfo->m_bitsDamageType = DamageTypes_t::DMG_GENERIC;
0 commit comments