public void Handle(KillEventRecord record) { PlayerStats person; if (record.attacker.Id != null && Players.TryGetValue(record.attacker.Id, out person)) { lock (person) person.RegisterDeathEvent(record); } if (record.victim.Id != null && record.attacker.Id != record.victim.Id && Players.TryGetValue(record.victim.Id, out person)) { lock (person) person.RegisterDeathEvent(record); } }
public void RegisterDeathEvent(KillEventRecord record) { if (record.attacker.Id == record.victim.Id) { _stat.Suicides++; } else if (record.attacker.Id == CharacterId) { if (record.victim.Faction != record.attacker.Faction) { _stat.Kills++; } else { _stat.TeamKills++; } if (!string.IsNullOrEmpty(record.victim.Outfit) && record.victim.Outfit == record.attacker.Outfit) { _stat.OutfitKills++; } if (record.headshot && record.victim.Faction != record.attacker.Faction) { _stat.HeadshotEnemyKills++; } if (record.victim.Faction != record.attacker.Faction && record.weaponName != null && record.weaponName.IndexOf("Orbital Strike", StringComparison.OrdinalIgnoreCase) == -1 && record.attackerVehicle.Name == null) { _stat.ConventionalKills++; } } else { if (record.attacker.Faction != record.victim.Faction) { _stat.Deaths++; } else { _stat.TeamDeaths++; } if (!string.IsNullOrEmpty(record.victim.Outfit) && record.attacker.Outfit == record.victim.Outfit) { _stat.OutfitDeaths++; } } Events.Add(record); }