mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-08 19:12:51 +00:00
Merge f2a1c849e7
into 0565403b15
This commit is contained in:
commit
8ced6b295a
10 changed files with 67 additions and 49 deletions
|
@ -278,7 +278,7 @@ void CBaseObject::UpdateOnRemove( void )
|
|||
CTFPlayer *pSapperOwner = pSapper->GetOwner();
|
||||
if ( pSapperOwner )
|
||||
{
|
||||
pSapperOwner->m_Shared.IncrementRevengeCrits();
|
||||
pSapperOwner->m_Shared.AddRevengeCrits( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12037,7 +12037,7 @@ void CTFPlayer::Event_Killed( const CTakeDamageInfo &info )
|
|||
// Revenge Crits for Diamondback
|
||||
if ( info.GetDamageCustom() == TF_DMG_CUSTOM_BACKSTAB )
|
||||
{
|
||||
pPlayerAttacker->m_Shared.IncrementRevengeCrits();
|
||||
pPlayerAttacker->m_Shared.AddRevengeCrits( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -476,6 +476,7 @@ BEGIN_PREDICTION_DATA_NO_BASE( CTFPlayerShared )
|
|||
DEFINE_PRED_ARRAY( m_flItemChargeMeter, FIELD_FLOAT, LAST_LOADOUT_SLOT_WITH_CHARGE_METER, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_iStunIndex, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_bScattergunJump, FIELD_BOOLEAN, 0 ),
|
||||
DEFINE_PRED_FIELD( m_iRevengeCrits, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
|
||||
END_PREDICTION_DATA()
|
||||
|
||||
// Server specific.
|
||||
|
@ -14348,9 +14349,9 @@ void CTFPlayerShared::PulseKingRuneBuff( void )
|
|||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFPlayerShared::IncrementRevengeCrits( void )
|
||||
void CTFPlayerShared::AddRevengeCrits( int iCrits )
|
||||
{
|
||||
SetRevengeCrits( m_iRevengeCrits + 1 );
|
||||
SetRevengeCrits( m_iRevengeCrits + iCrits );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -662,7 +662,7 @@ public:
|
|||
|
||||
void SetRevengeCrits( int iVal );
|
||||
int GetRevengeCrits( void ) const { return m_iRevengeCrits; }
|
||||
void IncrementRevengeCrits( void );
|
||||
void AddRevengeCrits( int iCrits );
|
||||
|
||||
int GetSequenceForDeath( CBaseAnimating* pRagdoll, bool bBurning, int nCustomDeath );
|
||||
|
||||
|
|
|
@ -113,32 +113,39 @@ void CTFFlareGun::DestroySounds( void )
|
|||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFFlareGun::PrimaryAttack( void )
|
||||
{
|
||||
if ( !CanAttack() )
|
||||
return;
|
||||
|
||||
BaseClass::PrimaryAttack();
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
m_bReadyToFire = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CTFFlareGun::CanAttack( void )
|
||||
{
|
||||
// Get the player owning the weapon.
|
||||
CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() );
|
||||
if ( !pOwner )
|
||||
return;
|
||||
return false;
|
||||
|
||||
if ( m_flChargeBeginTime > 0.0f )
|
||||
return;
|
||||
return false;
|
||||
|
||||
// Don't attack if we're underwater
|
||||
if ( pOwner->GetWaterLevel() != WL_Eyes )
|
||||
{
|
||||
BaseClass::PrimaryAttack();
|
||||
}
|
||||
else
|
||||
if ( pOwner->GetWaterLevel() >= WL_Eyes )
|
||||
{
|
||||
if ( gpGlobals->curtime > m_flLastDenySoundTime )
|
||||
{
|
||||
WeaponSound( SPECIAL2 );
|
||||
m_flLastDenySoundTime = gpGlobals->curtime + 1.0f;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
m_bReadyToFire = false;
|
||||
#endif
|
||||
return BaseClass::CanAttack();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -149,7 +156,8 @@ void CTFFlareGun::SecondaryAttack( void )
|
|||
if ( GetFlareGunType() != FLAREGUN_DETONATE )
|
||||
return;
|
||||
|
||||
if ( !CanAttack() )
|
||||
// Detonator is allowed to detonate even if underwater, but not if base CanAttack fails
|
||||
if ( !BaseClass::CanAttack() )
|
||||
return;
|
||||
|
||||
CTFPlayer *pPlayer = ToTFPlayer( GetOwner() );
|
||||
|
@ -476,20 +484,22 @@ int CTFFlareGun_Revenge::GetCount( void )
|
|||
return 0;
|
||||
}
|
||||
|
||||
void CTFFlareGun_Revenge::PrimaryAttack()
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CBaseEntity *CTFFlareGun_Revenge::FireProjectile( CTFPlayer *pPlayer )
|
||||
{
|
||||
if ( !CanAttack() )
|
||||
return;
|
||||
CBaseEntity *pProjectile = BaseClass::FireProjectile( pPlayer );
|
||||
|
||||
BaseClass::PrimaryAttack();
|
||||
|
||||
// Lower the reveng crit count
|
||||
// Lower the revenge crit count
|
||||
// Do this after the attack, so that we know if we are doing custom damage
|
||||
CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() );
|
||||
if ( pOwner )
|
||||
{
|
||||
int iNewRevengeCrits = MAX( pOwner->m_Shared.GetRevengeCrits() - 1, 0 );
|
||||
pOwner->m_Shared.SetRevengeCrits( iNewRevengeCrits );
|
||||
pOwner->m_Shared.AddRevengeCrits( -1 );
|
||||
}
|
||||
|
||||
return pProjectile;
|
||||
}
|
||||
|
||||
void CTFFlareGun_Revenge::SecondaryAttack( void )
|
||||
|
@ -551,7 +561,7 @@ void CTFFlareGun_Revenge::ChargePostFrame( void )
|
|||
if ( pBurner && pBurner->GetTeamNumber() != pOwner->GetTeamNumber() )
|
||||
{
|
||||
// Grant revenge crits
|
||||
pOwner->m_Shared.SetRevengeCrits( pOwner->m_Shared.GetRevengeCrits() + 1 );
|
||||
pOwner->m_Shared.AddRevengeCrits( 1 );
|
||||
|
||||
// Return health to the Pyro.
|
||||
int iRestoreHealthOnExtinguish = 0;
|
||||
|
@ -614,13 +624,14 @@ void CTFFlareGun_Revenge::OnDataChanged( DataUpdateType_t type )
|
|||
{
|
||||
DoAbsorbEffect();
|
||||
}
|
||||
|
||||
|
||||
m_nOldRevengeCrits = pOwner->m_Shared.GetRevengeCrits();
|
||||
}
|
||||
}
|
||||
|
||||
void CTFFlareGun_Revenge::DoAbsorbEffect( void )
|
||||
{
|
||||
// Flaregun/manmelter don't define this???
|
||||
WeaponSound( SPECIAL1 );
|
||||
|
||||
CTFPlayer *pPlayer = ToTFPlayer( GetPlayerOwner() );
|
||||
|
|
|
@ -52,6 +52,7 @@ public:
|
|||
virtual void DestroySounds( void );
|
||||
|
||||
virtual int GetWeaponID( void ) const { return TF_WEAPON_FLAREGUN; }
|
||||
virtual bool CanAttack( void ) OVERRIDE;
|
||||
virtual void PrimaryAttack();
|
||||
virtual void SecondaryAttack();
|
||||
|
||||
|
@ -141,7 +142,7 @@ public:
|
|||
|
||||
const char* GetMuzzleFlashParticleEffect( void ) { return "drg_manmelter_muzzleflash"; }
|
||||
|
||||
virtual void PrimaryAttack();
|
||||
virtual CBaseEntity *FireProjectile( CTFPlayer *pPlayer ) OVERRIDE;
|
||||
virtual void SecondaryAttack( void );
|
||||
virtual void ChargePostFrame( void );
|
||||
virtual const char* GetChargeEffect( void ) const { return "drg_manmelter_vacuum"; }
|
||||
|
|
|
@ -117,6 +117,24 @@ bool CTFRevolver::CanFireCriticalShot( bool bIsHeadshot, CBaseEntity *pTarget /*
|
|||
return true;
|
||||
}
|
||||
|
||||
CBaseEntity *CTFRevolver::FireProjectile( CTFPlayer *pPlayer )
|
||||
{
|
||||
CBaseEntity *pProjectile = BaseClass::FireProjectile( pPlayer );
|
||||
|
||||
if ( SapperKillsCollectCrits() )
|
||||
{
|
||||
// Lower the revenge crit count
|
||||
// Do this after the attack, so that we know if we are doing custom damage
|
||||
CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() );
|
||||
if ( pOwner )
|
||||
{
|
||||
pOwner->m_Shared.AddRevengeCrits( -1 );
|
||||
}
|
||||
}
|
||||
|
||||
return pProjectile;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -156,19 +174,6 @@ void CTFRevolver::PrimaryAttack( void )
|
|||
|
||||
m_flLastAccuracyCheck = gpGlobals->curtime;
|
||||
|
||||
if ( SapperKillsCollectCrits() )
|
||||
{
|
||||
// Do this after the attack, so that we know if we are doing custom damage
|
||||
CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() );
|
||||
if ( pOwner )
|
||||
{
|
||||
int iRevengeCrits = pOwner->m_Shared.GetRevengeCrits();
|
||||
if ( iRevengeCrits > 0 )
|
||||
{
|
||||
pOwner->m_Shared.SetRevengeCrits( iRevengeCrits-1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef GAME_DLL
|
||||
// Lower bonus for each attack
|
||||
int iExtraDamageOnHitPenalty = 0;
|
||||
|
|
|
@ -41,6 +41,7 @@ public:
|
|||
|
||||
virtual bool CanFireCriticalShot( bool bIsHeadshot, CBaseEntity *pTarget = NULL ) OVERRIDE;
|
||||
|
||||
virtual CBaseEntity *FireProjectile( CTFPlayer *pPlayer ) OVERRIDE;
|
||||
virtual void PrimaryAttack( void );
|
||||
virtual float GetWeaponSpread( void );
|
||||
|
||||
|
|
|
@ -129,20 +129,19 @@ void CTFShotgun_Revenge::Precache()
|
|||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFShotgun_Revenge::PrimaryAttack()
|
||||
CBaseEntity *CTFShotgun_Revenge::FireProjectile( CTFPlayer *pPlayer )
|
||||
{
|
||||
if ( !CanAttack() )
|
||||
return;
|
||||
|
||||
BaseClass::PrimaryAttack();
|
||||
CBaseEntity *pProjectile = BaseClass::FireProjectile( pPlayer );
|
||||
|
||||
// Lower the revenge crit count
|
||||
// Do this after the attack, so that we know if we are doing custom damage
|
||||
CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() );
|
||||
if ( pOwner )
|
||||
{
|
||||
int iRevengeCrits = pOwner->m_Shared.GetRevengeCrits();
|
||||
pOwner->m_Shared.SetRevengeCrits( iRevengeCrits-1 );
|
||||
pOwner->m_Shared.AddRevengeCrits( -1 );
|
||||
}
|
||||
|
||||
return pProjectile;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -157,7 +156,7 @@ void CTFShotgun_Revenge::SentryKilled( int iCrits )
|
|||
CTFPlayer *pOwner = ToTFPlayer( GetPlayerOwner() );
|
||||
if ( pOwner )
|
||||
{
|
||||
pOwner->m_Shared.SetRevengeCrits( pOwner->m_Shared.GetRevengeCrits() + iCrits );
|
||||
pOwner->m_Shared.AddRevengeCrits( iCrits );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ public:
|
|||
virtual int GetWeaponID( void ) const { return TF_WEAPON_SENTRY_REVENGE; }
|
||||
|
||||
void Precache();
|
||||
virtual void PrimaryAttack();
|
||||
virtual CBaseEntity *FireProjectile( CTFPlayer *pPlayer ) OVERRIDE;
|
||||
virtual void SentryKilled( int iKills );
|
||||
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo = NULL );
|
||||
virtual bool Deploy( void );
|
||||
|
|
Loading…
Reference in a new issue