diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype.gnut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype.gnut index 362407b39..459649ef6 100644 --- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype.gnut +++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype.gnut @@ -831,6 +831,27 @@ bool function PlayerOrNPCKilled( entity ent, var damageInfo ) return true } +void function HandleAssists( entity victim, var damageInfo ) +{ + if ( !victim.IsPlayer() ) + return + + entity attacker = GetAttackerOrLastAttacker( victim, damageInfo ) + table< int, bool > alreadyAssisted + foreach ( DamageHistoryStruct attackerInfo in victim.e.recentDamageHistory ) + { + if ( !IsValid( attackerInfo.attacker ) || !attackerInfo.attacker.IsPlayer() || attackerInfo.attacker == victim ) + continue + + if ( attackerInfo.attacker != attacker && !( attackerInfo.attacker.GetEncodedEHandle() in alreadyAssisted ) ) + { + alreadyAssisted[attackerInfo.attacker.GetEncodedEHandle()] <- true + foreach ( callback in svGlobal.onPlayerAssistCallbacks ) + callback( attacker, victim ) + } + } +} + // used to calculate build time credit in special cases. Cloak Drones and Suicide Spectres use it for now. float function CalculateBuildTimeCredit( entity attacker, entity target, float damage, int health, int maxHealth, string playlistVarStr, float defaultCredit ) { diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut index b77a37b2a..73f3d0b4a 100644 --- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut +++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_base_gametype_mp.gnut @@ -250,6 +250,7 @@ void function CodeCallback_OnPlayerKilled( entity player, var damageInfo ) { PlayerOrNPCKilled( player, damageInfo ) HandleDeathPackage( player, damageInfo ) + HandleAssists( player, damageInfo ) thread PostDeathThread_MP( player, damageInfo ) }