From 1b811d564462f8d6afd0d67cad8d61a25e3f09ea Mon Sep 17 00:00:00 2001 From: mittorn Date: Sun, 27 Mar 2016 19:57:45 +0000 Subject: [PATCH] Limit gib attacks --- dlls/combat.cpp | 29 +++++++++++++++-------------- dlls/monsters.h | 1 + 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/dlls/combat.cpp b/dlls/combat.cpp index 8343067b..e3e3ae42 100644 --- a/dlls/combat.cpp +++ b/dlls/combat.cpp @@ -726,20 +726,21 @@ void CGib :: BounceGibTouch ( CBaseEntity *pOther ) } else { - if ( pev->velocity.Length() > 300) - { - entvars_t *pevOwner = pev; - if( pev->owner) - pevOwner = &pev->owner->v; - if(pevOwner) + if ( m_flNextAttack < gpGlobals->time && pev->velocity.Length() > 300 ) { - float dmg = 10 + pev->velocity.Length() / 50; - TraceResult tr = UTIL_GetGlobalTrace(); - ClearMultiDamage(); - pOther->TraceAttack(pevOwner, dmg, gpGlobals->v_forward, &tr, DMG_CLUB); - ApplyMultiDamage(pev, pevOwner); + entvars_t *pevOwner = pev; + if( pev->owner) + pevOwner = &pev->owner->v; + if(pevOwner) + { + float dmg = 10 + pev->velocity.Length() / 50; + TraceResult tr = UTIL_GetGlobalTrace(); + ClearMultiDamage(); + pOther->TraceAttack(pevOwner, dmg, gpGlobals->v_forward, &tr, DMG_CLUB); + ApplyMultiDamage(pev, pevOwner); + } + m_flNextAttack = gpGlobals->time + 1.0; // debounce } - } if ( g_Language != LANGUAGE_GERMAN && m_cBloodDecals > 0 && m_bloodColor != DONT_BLEED ) { vecSpot = pev->origin + Vector ( 0 , 0 , 8 );//move up a bit, and trace down. @@ -811,8 +812,8 @@ void CGib :: Spawn( const char *szGibModel ) pev->nextthink = gpGlobals->time + 4; m_lifeTime = 250; - SetThink( &WaitTillLand ); - SetTouch( &BounceGibTouch ); + SetThink( &CGib::WaitTillLand ); + SetTouch( &CGib::BounceGibTouch ); m_material = matNone; m_cBloodDecals = 5;// how many blood decals this gib can place (1 per bounce until none remain). diff --git a/dlls/monsters.h b/dlls/monsters.h index 6152c39a..f5ec09cc 100644 --- a/dlls/monsters.h +++ b/dlls/monsters.h @@ -162,6 +162,7 @@ public: return 700; } + float m_flNextAttack; int m_bloodColor; int m_cBloodDecals; int m_material;