private void World_OnPlayerKilled(PlayerDamage damageEvent) { ServerMPPlayer killer = (ServerMPPlayer)damageEvent.Attacker; ServerMPPlayer assistant = (ServerMPPlayer)damageEvent.AttackerAssistant; ServerMPPlayer killed = (ServerMPPlayer)damageEvent.Attacked; string item = damageEvent.Cause; if (killer == killed) { // Kill was actually suicide killer = null; } // Killer only gets credit within 6.5s of players death if (Environment.TickCount - damageEvent.DamagedAt >= 6500) { killer = null; } // Assistant only gets credit within 8s of players death if (Environment.TickCount - damageEvent.AttackerAssistedAt >= 8000) { assistant = null; } // Get network players string leftName = "", rightName = "", assistantName = ""; NetworkPlayer killerNetPlayer = null, killedNetPlayer = null, assistantNetPlayer = null; if (killer != null && netPlayerComponent.TryGetPlayer(killer.StateInfo.Owner, out killerNetPlayer)) { leftName = killerNetPlayer.Name; } if (killed != null && netPlayerComponent.TryGetPlayer(killed.StateInfo.Owner, out killedNetPlayer)) { rightName = killedNetPlayer.Name; } if (assistant != null && netPlayerComponent.TryGetPlayer(assistant.StateInfo.Owner, out assistantNetPlayer)) { assistantName = assistantNetPlayer.Name; } // Announce feed item AddFeedItem( leftName, assistantName, killer != null ? World.GetTeamColor(killer.Team) : Color.White, item, rightName, killed != null ? World.GetTeamColor(killed.Team) : Color.White); // Notify gamemode currentGamemode.OnPlayerKilled(killer, killerNetPlayer, assistant, assistantNetPlayer, killed, killedNetPlayer, item); // Debug if (killer != null) { if (assistant != null) { DashCMD.WriteLine("[MatchScreen] '{0} + {1} [ {2} ] {3}'", leftName, assistantName, item, rightName); } else { DashCMD.WriteLine("[MatchScreen] '{0} [ {1} ] {2}'", leftName, item, rightName); } } else { DashCMD.WriteLine("[MatchScreen] '[ {0} ] {1}'", item, rightName); } }