public void EndRaid(bool finished = false) { // End the raid Started = false; if (CurrentMap.Players.Count > 0) { int[] rewards = new int[CurrentMap.Players.Count]; for (int i = 0; i < rewards.Length; i++) { rewards[i] = Envir.Random.Next(0, Info.ItemRewards.Count); } PlayerStats = PlayerStats.OrderBy(o => o.DamageDealt).ToList(); PlayerStats.Reverse(); for (int i = CurrentMap.Players.Count - 1; i >= 0; i--) { if (!CurrentMap.Players[i].Dead) { if (finished) { for (int x = 0; x < PlayerStats.Count; x++) { if (rewards[x] == -1) { continue; } if (PlayerStats[x].PlayerName == CurrentMap.Players[i].Name) { UserItem item = CreateRaidItem(rewards[x], CurrentMap.Players[i].Class); List <UserItem> items = new List <UserItem> { item }; if (item != null) { rewards[x] = -1; MailInfo mail = new MailInfo(CurrentMap.Players[i].Info.Index) { Items = items, Message = string.Format("You were awarded {0} for your efforts in the raid", item.FriendlyName), MailID = ++Envir.NextMailID, Sender = string.Format("Raid{0}", Info.Index) }; mail.Send(); } } } CurrentMap.Players[i].ReceiveChat(string.Format("All monsters have been banished!"), ChatType.System); } CurrentMap.Players[i].Teleport(Envir.GetMap(CurrentMap.Players[i].BindMapIndex), CurrentMap.Players[i].BindLocation); } } } Envir.Broadcast(new ServerPackets.Chat { Message = string.Format("{0} raid has finished!", Info.Title) }); }