コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }