From 05521ad53e5c922c030aa0152fecae63e5368310 Mon Sep 17 00:00:00 2001 From: TomyLobo Date: Sun, 19 Jun 2016 13:22:48 +0200 Subject: [PATCH] Before transitioning to superfall, award "Worth it!" only if the target was killed --- mp/src/game/server/sdk/sdk_player.cpp | 22 ++++++++++++++++++---- mp/src/game/server/sdk/sdk_player.h | 3 ++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/mp/src/game/server/sdk/sdk_player.cpp b/mp/src/game/server/sdk/sdk_player.cpp index 396dc4b5b..e9f97a09b 100644 --- a/mp/src/game/server/sdk/sdk_player.cpp +++ b/mp/src/game/server/sdk/sdk_player.cpp @@ -1708,7 +1708,7 @@ int CSDKPlayer::OnTakeDamage_Alive( const CTakeDamageInfo &info ) // we'll keep track of this in case the dive kills him, but not if we're on the same team! if ( SDKGameRules()->PlayerRelationship(this, pAttackerSDK) != GR_TEAMMATE ) - pAttackerSDK->m_bDamagedEnemyDuringFall = true; + pAttackerSDK->m_bDamagedEnemyDuringSuperFall = true; } if (m_Shared.m_iStyleSkill != SKILL_RESILIENT) @@ -1755,6 +1755,15 @@ void CSDKPlayer::Event_Killed( const CTakeDamageInfo &info ) m_vecKillingExplosionPosition = m_hInflictor->GetAbsOrigin(); } + if( m_hKiller && m_hKiller->IsPlayer() ) + { + CSDKPlayer* pAttackerSDK = ToSDKPlayer(m_hKiller); + + // we'll keep track of this in case the dive kills him, but not if we're on the same team! + if ( SDKGameRules()->PlayerRelationship(this, pAttackerSDK) != GR_TEAMMATE ) + pAttackerSDK->m_bKilledEnemyDuringFall = true; + } + if (dynamic_cast(m_hInflictor.Get())) m_bWasKilledByGrenade = true; @@ -1769,7 +1778,7 @@ void CSDKPlayer::Event_Killed( const CTakeDamageInfo &info ) else if (info.GetInflictor() && (FStrEq(info.GetInflictor()->GetClassname(), "trigger_kill") || FStrEq(info.GetInflictor()->GetClassname(), "trigger_hurt"))) bEligible = true; - if (bEligible && (m_bDamagedEnemyDuringFall || (m_hKiller.Get() && m_hKiller->IsPlayer() && m_hKiller.Get() != this))) + if (bEligible && (m_bKilledEnemyDuringFall || m_bDamagedEnemyDuringSuperFall || (m_hKiller.Get() && m_hKiller->IsPlayer() && m_hKiller.Get() != this))) { AddStylePoints(10, STYLE_SOUND_LARGE, ANNOUNCEMENT_STYLISH, STYLE_POINT_LARGE); // Send "Worth it!" after the style points so that if the player gets their skill activated because of it, that message won't override the "Worth it!" message. @@ -3756,8 +3765,13 @@ void CSDKPlayer::State_PreThink_ACTIVE() SwitchToNextBestWeapon( NULL ); } - if (IsAlive() && !m_Shared.m_bSuperFalling && (GetFlags() & FL_ONGROUND)) - m_bDamagedEnemyDuringFall = false; + if (IsAlive() && !m_Shared.m_bSuperFalling) + { + if (GetFlags() & FL_ONGROUND) + m_bKilledEnemyDuringFall = false; + + m_bDamagedEnemyDuringSuperFall = false; + } } void CSDKPlayer::NoteWeaponFired( void ) diff --git a/mp/src/game/server/sdk/sdk_player.h b/mp/src/game/server/sdk/sdk_player.h index 7e7021188..71f0ef3b7 100644 --- a/mp/src/game/server/sdk/sdk_player.h +++ b/mp/src/game/server/sdk/sdk_player.h @@ -463,7 +463,8 @@ class CSDKPlayer : public CBaseMultiplayerPlayer Vector m_vecTotalBulletForce; //Accumulator for bullet force in a single frame - bool m_bDamagedEnemyDuringFall; + bool m_bKilledEnemyDuringFall; + bool m_bDamagedEnemyDuringSuperFall; public: #if defined ( SDK_USE_PRONE )