@@ -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