Skip to content

Commit bdc69f7

Browse files
authored
Merge pull request #1005 from Kitsune44/hotfix
Fixes: OnHitConfirm - Exclude bot players from Strange Weapon statistics processing
2 parents bc90aec + 38456db commit bdc69f7

File tree

1 file changed

+36
-19
lines changed

1 file changed

+36
-19
lines changed

src/game/shared/swarm/rd_inventory_shared.cpp

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3804,18 +3804,29 @@ namespace ReactiveDropInventory
38043804

38053805
if ( !ASWDeathmatchMode() )
38063806
{
3807-
// Alien Kill Streak reset after marine death
3808-
if ( bKilled && pTarget && pTarget->IsInhabitableNPC() )
3809-
s_RD_Inventory_Manager.IncrementStrangePropertyOnEquippedItems( assert_cast<CASW_Inhabitable_NPC*>( pTarget ), 5007, 0, 0, false );
3807+
if ( !pTarget )
3808+
return;
3809+
3810+
// Reset the Alien Kill Streak of the player inhabiting this NPC when that NPC dies, regardless of the source of damage
3811+
if ( bKilled && pTarget->IsInhabitableNPC() )
3812+
{
3813+
CASW_Inhabitable_NPC *pInhabitableTarget = assert_cast<CASW_Inhabitable_NPC *>( pTarget );
3814+
// only for player-controlled characters
3815+
if ( pInhabitableTarget->IsInhabited() )
3816+
s_RD_Inventory_Manager.IncrementStrangePropertyOnEquippedItems( pInhabitableTarget, 5007, 0, 0, false );
3817+
}
38103818

3811-
if ( !pAttacker || !pTarget )
3819+
if ( !pAttacker )
38123820
return;
3813-
3821+
38143822
if ( bKilled && pWeapon
3815-
&& pAttacker->IsInhabitableNPC()
3816-
&& pTarget->IsAlien() )
3823+
&& pTarget->IsAlien()
3824+
&& pAttacker->IsInhabitableNPC()
3825+
&& pAttacker != pTarget
3826+
)
38173827
{
3818-
CASW_Inhabitable_NPC* pInhabitableAttacker = assert_cast<CASW_Inhabitable_NPC*>( pAttacker );
3828+
CASW_Inhabitable_NPC *pInhabitableAttacker = assert_cast<CASW_Inhabitable_NPC *>( pAttacker );
3829+
// only for player-controlled characters
38193830
if ( pInhabitableAttacker->IsInhabited() )
38203831
{
38213832
s_RD_Inventory_Manager.IncrementStrangePropertiesForWeapon( pInhabitableAttacker, pWeapon, 5002, 1 ); // Aliens Killed
@@ -3824,18 +3835,19 @@ namespace ReactiveDropInventory
38243835
}
38253836
}
38263837

3827-
if ( !V_stricmp( IGameSystem::MapName(), "rd-reduction2" )
3828-
&& !pAttacker->IsInhabitableNPC()
3829-
&& !V_strcmp( STRING( pAttacker->GetEntityName() ), "trigger_pitworm_hitbox" )
3830-
&& pTarget->IsInhabitableNPC() )
3838+
if ( !pAttacker->IsInhabitableNPC()
3839+
&& pTarget->IsInhabitableNPC()
3840+
&& !V_stricmp( IGameSystem::MapName(), "rd-reduction2" )
3841+
&& !V_strcmp( STRING( pAttacker->GetEntityName() ), "trigger_pitworm_hitbox" ) )
38313842
{
3832-
CASW_Inhabitable_NPC *pTargetNPC = assert_cast< CASW_Inhabitable_NPC * >( pTarget );
3833-
if ( pTargetNPC->IsInhabited() )
3843+
CASW_Inhabitable_NPC *pInhabitableTarget = assert_cast<CASW_Inhabitable_NPC *>( pTarget );
3844+
// only for player-controlled characters
3845+
if ( pInhabitableTarget->IsInhabited() )
38343846
{
3835-
s_RD_Inventory_Manager.IncrementStrangePropertyOnEquippedItems( pTargetNPC, 42, 1 );
3847+
s_RD_Inventory_Manager.IncrementStrangePropertyOnEquippedItems( pInhabitableTarget, 42, 1 );
38363848
#ifdef CLIENT_DLL
38373849
static bool s_bRequestedWormToucherMedal = false;
3838-
if ( !s_bRequestedWormToucherMedal && pTargetNPC->GetCommander() && pTargetNPC->GetCommander()->IsLocalPlayer() )
3850+
if ( !s_bRequestedWormToucherMedal && pInhabitableTarget->GetCommander() && pInhabitableTarget->GetCommander()->IsLocalPlayer() )
38393851
{
38403852
AddPromoItem( 42 );
38413853
s_bRequestedWormToucherMedal = true;
@@ -3850,11 +3862,16 @@ namespace ReactiveDropInventory
38503862
&& pAttacker && pTarget
38513863
&& pAttacker != pTarget
38523864
&& pAttacker->IsInhabitableNPC()
3853-
&& pTarget->Classify() == (Class_T)CLASS_ASW_MARINE )
3865+
&& pTarget->IsInhabitableNPC() )
38543866
{
38553867
CASW_Inhabitable_NPC *pInhabitableAttacker = assert_cast<CASW_Inhabitable_NPC *>( pAttacker );
3856-
s_RD_Inventory_Manager.IncrementStrangePropertiesForWeapon( pInhabitableAttacker, pWeapon, 5009, 1 ); // Deathmatch Kills
3857-
s_RD_Inventory_Manager.IncrementStrangePropertiesForWeapon( pInhabitableAttacker, pWeapon, 5011, 1 ); // Deathmatch Kills (Twitch)
3868+
CASW_Inhabitable_NPC *pInhabitableTarget = assert_cast<CASW_Inhabitable_NPC *>( pTarget );
3869+
// only for player-controlled characters
3870+
if ( pInhabitableAttacker->IsInhabited() && pInhabitableTarget->IsInhabited() )
3871+
{
3872+
s_RD_Inventory_Manager.IncrementStrangePropertiesForWeapon( pInhabitableAttacker, pWeapon, 5009, 1 ); // Deathmatch Kills
3873+
s_RD_Inventory_Manager.IncrementStrangePropertiesForWeapon( pInhabitableAttacker, pWeapon, 5011, 1 ); // Deathmatch Kills (Twitch)
3874+
}
38583875
}
38593876
}
38603877
}

0 commit comments

Comments
 (0)