Browse Source

Fix grunt medic spending healing charge (#339)

opfor
Roman Chistokhodov 2 years ago committed by GitHub
parent
commit
f96df77d2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      dlls/gearbox/fgrunt.cpp

9
dlls/gearbox/fgrunt.cpp

@ -3556,11 +3556,16 @@ bool CMedic::Heal( void )
if ( !HasHealCharge() || !HasHealTarget() ) if ( !HasHealCharge() || !HasHealTarget() )
return false; return false;
Vector target = m_hTargetEnt->pev->origin - pev->origin; CBaseEntity* pTargetEnt = m_hTargetEnt;
Vector target = pTargetEnt->pev->origin - pev->origin;
if ( target.Length() > 100 ) if ( target.Length() > 100 )
return false; return false;
m_flHealCharge -= m_hTargetEnt->TakeHealth( Q_min(10, m_flHealCharge), DMG_GENERIC ); const float maxHeal = Q_min(10, m_flHealCharge);
const float diff = pTargetEnt->pev->max_health - pTargetEnt->pev->health;
const int healAmount = static_cast<int>(Q_min(maxHeal, diff)); // cast to avoid player having non-integer hp
pTargetEnt->TakeHealth( healAmount, DMG_GENERIC );
m_flHealCharge -= healAmount;
ALERT(at_aiconsole, "Medic grunt heal charge left: %f\n", m_flHealCharge); ALERT(at_aiconsole, "Medic grunt heal charge left: %f\n", m_flHealCharge);
m_fHealing = TRUE; m_fHealing = TRUE;
return true; return true;

Loading…
Cancel
Save