public void Update(VvVPlayerEntry victim, VvVPlayerEntry killer, UpdateType type) { VvVGuildBattleStats killerStats = GetGuildStats(killer.Guild); VvVGuildBattleStats victimStats = victim == null ? null : GetGuildStats(victim.Guild); switch (type) { case UpdateType.Kill: if (killer != null) { killer.Kills++; } if (victim != null) { victim.Deaths++; } if (killerStats != null) { killerStats.Kills++; } if (victimStats != null) { victimStats.Deaths++; } if (victim != null && victim.Player != null) { if (!KillCooldown.ContainsKey(victim.Player) || KillCooldown[victim.Player] < DateTime.UtcNow) { if (killerStats != null) { killerStats.Points += KillPoints; } SendStatusMessage(String.Format("{0} has killed {1}!", killer.Player.Name, victim.Player.Name)); killerStats.Silver += KillSilver + (OppositionCount(killer.Guild) * 50); KillCooldown[victim.Player] = DateTime.UtcNow + TimeSpan.FromMinutes(KillCooldownDuration); } } break; case UpdateType.Assist: if (killer != null) { killer.Assists++; } if (killerStats != null) { killerStats.Assists++; } break; case UpdateType.Steal: if (killerStats != null) { killer.StolenSigils++; killerStats.Stolen++; SendStatusMessage(String.Format("{0} has stolen the sigil!", killer.Player.Name)); } break; case UpdateType.TurnInVice: if (killerStats != null) { killer.ReturnedSigils++; killerStats.ViceReturned++; killerStats.Points += TurnInPoints; killerStats.Silver += TurnInSilver + (OppositionCount(killer.Guild) * 50); SendStatusMessage(String.Format("{0} has returned the sigil!", killer.Player.Name)); NextSigilSpawn = DateTime.UtcNow + TimeSpan.FromMinutes(1); } RemovePriests(); break; case UpdateType.TurnInVirtue: if (killerStats != null) { killer.ReturnedSigils++; killerStats.VirtueReturned++; killerStats.Points += TurnInPoints; killerStats.Silver += TurnInSilver + (OppositionCount(killer.Guild) * 50); SendStatusMessage(String.Format("{0} has returned the sigil!", killer.Player.Name)); NextSigilSpawn = DateTime.UtcNow + TimeSpan.FromMinutes(1); } RemovePriests(); break; case UpdateType.Disarm: if (killerStats != null) { killerStats.Disarmed++; killer.DisarmedTraps++; killerStats.Silver += DisarmSilver + (OppositionCount(killer.Guild) * 50); SendStatusMessage(String.Format("{0} has disarmed a trap!", killer.Player.Name)); } break; } CheckScore(); }
public void Update(VvVPlayerEntry victim, VvVPlayerEntry killer, UpdateType type) { if (killer == null || killer.Player == null || killer.Guild == null) { return; } VvVPlayerBattleStats killerStats = GetPlayerStats(killer.Player); VvVPlayerBattleStats victimStats = victim == null ? null : GetPlayerStats(victim.Player); BattleTeam killerTeam = GetTeam(killer.Guild); BattleTeam victimTeam = null; if (victim != null) { victimTeam = GetTeam(victim.Guild); } switch (type) { case UpdateType.Kill: if (killerStats != null) { killerStats.Kills++; } if (victimStats != null) { victimStats.Deaths++; } if (killerTeam != null) { killerTeam.Kills++; } if (victimTeam != null) { victimTeam.Deaths++; } if (victim != null && victim.Player != null) { if (!KillCooldown.ContainsKey(victim.Player) || KillCooldown[victim.Player] < DateTime.UtcNow) { if (killerTeam != null) { killerTeam.Score += (int)KillPoints; killerTeam.Silver += AwardSilver(KillSilver + (OppositionCount(killer.Guild) * 50)); } SendStatusMessage(String.Format("{0} has killed {1}!", killer.Player.Name, victim.Player.Name)); KillCooldown[victim.Player] = DateTime.UtcNow + TimeSpan.FromMinutes(KillCooldownDuration); } } break; case UpdateType.Assist: if (killerStats != null) { killerStats.Assists++; } if (killerTeam != null) { killerTeam.Assists++; } break; case UpdateType.Steal: if (killerStats != null) { killerStats.Stolen++; SendStatusMessage(String.Format("{0} has stolen the sigil!", killer.Player.Name)); } if (killerTeam != null) { killerTeam.Stolen++; } break; case UpdateType.TurnInVice: case UpdateType.TurnInVirtue: if (killerTeam != null) { killerTeam.Score += (int)TurnInPoints; killerTeam.Silver += AwardSilver(TurnInSilver + (OppositionCount(killer.Guild) * 50)); } if (killerStats != null && killerTeam != null) { if (type == UpdateType.TurnInVirtue) { killerStats.VirtueReturned++; killerTeam.VirtueReturned++; } else { killerStats.ViceReturned++; killerTeam.ViceReturned++; } } SendStatusMessage(String.Format("{0} has returned the sigil!", killer.Player.Name)); NextSigilSpawn = DateTime.UtcNow + TimeSpan.FromMinutes(1); RemovePriests(); break; case UpdateType.Disarm: SendStatusMessage(String.Format("{0} has disarmed a trap!", killer.Player.Name)); if (killerStats != null) { killerStats.Disarmed++; } if (killerTeam != null) { killerTeam.Silver += AwardSilver(DisarmSilver + (OppositionCount(killer.Guild) * 50)); killerTeam.Disarmed++; } break; } CheckScore(); }