Пример #1
0
 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)
     });
 }