Ejemplo n.º 1
0
 public Matcher(Person[] people, Person[] offLimitsPeople)
 {
     _receivers = new Receivers(people);
     _givers = new Givers(people, offLimitsPeople);
 }
Ejemplo n.º 2
0
        public FlowerSystem(byte[] BasePacket, Receivers.ClientState Caller)
        {
            Packet = new FlowerPacket(false);
            Packet.Deserialize(BasePacket);

            if (!Kernel.GamePool.ContainsKey(Packet.UID1)) return;
            if (Caller.Entity.Level < 50) return;
            if (Caller.Entity.Body == 2001 || Caller.Entity.Body == 2002) return;
            if (Kernel.GamePool[Packet.UID1].Entity.Body == 1003 || Kernel.GamePool[Packet.UID1].Entity.Body == 1004) return;

            if (Packet.ItemUID == 0)
            {
                if (Caller.Entity.Flowers.LastFlowerSent == null) Caller.Entity.Flowers.LastFlowerSent = DateTime.Now.Subtract(TimeSpan.FromDays(1));
                if (Packet.FlowerType != FlowerType.RedRoses && Packet.Amount != 1) return;
                if (Caller.Entity.Flowers.LastFlowerSent.AddDays(1) <= DateTime.Now)
                {
                    Caller.Entity.Flowers.LastFlowerSent = DateTime.Now;

                    FlowerPacket NewPacket = new FlowerPacket(true);
                    NewPacket.SenderName = Caller.Entity.Name;
                    NewPacket.ReceiverName = Kernel.GamePool[Packet.UID1].Entity.Name;
                    NewPacket.SendAmount = 1;
                    NewPacket.SendFlowerType = FlowerType.RedRoses;
                    Kernel.GamePool[Packet.UID1].Send(NewPacket);
                    Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses++;
                    Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses2day++;
                }
                else
                    Caller.Send(Constants.OneFlowerADay);
            }
            else
            {
                IConquerItem Item;
                if (Caller.Inventory.TryGetValue(Packet.ItemUID, out Item))
                {
                    if (Item.Durability != Packet.Amount) return;
                    FlowerType Flower = FlowerType.Unknown;
                    switch (Item.ID / 1000)
                    {
                        case 751: Flower = FlowerType.RedRoses; break;
                        case 752: Flower = FlowerType.Lilies; break;
                        case 753: Flower = FlowerType.Orchids; break;
                        case 754: Flower = FlowerType.Tulips; break;
                    }
                    if (Flower != FlowerType.Unknown)
                    {
                        switch (Flower)
                        {
                            case FlowerType.RedRoses: Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.RedRoses2day += Packet.Amount; break;
                            case FlowerType.Lilies: Kernel.GamePool[Packet.UID1].Entity.Flowers.Lilies += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.Lilies2day += Packet.Amount; break;
                            case FlowerType.Orchids: Kernel.GamePool[Packet.UID1].Entity.Flowers.Orchads += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.Orchads2day += Packet.Amount; break;
                            case FlowerType.Tulips: Kernel.GamePool[Packet.UID1].Entity.Flowers.Tulips += Packet.Amount; Kernel.GamePool[Packet.UID1].Entity.Flowers.Tulips2day += Packet.Amount; break;
                        }

                        FlowerPacket NewPacket = new FlowerPacket(true);
                        NewPacket.SenderName = Caller.Entity.Name;
                        NewPacket.ReceiverName = Kernel.GamePool[Packet.UID1].Entity.Name;
                        NewPacket.SendAmount = Packet.Amount;
                        NewPacket.SendFlowerType = Flower;
                        Kernel.GamePool[Packet.UID1].Send(NewPacket);
                        Caller.Inventory.Remove(Item, Enums.ItemUse.Remove);
                        Database.ConquerItemTable.RemoveItem(Item.UID);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public Text(ulong timestep, bool useMask, byte[] payload, Receivers receivers, int groupId, bool isStream) : base(timestep, useMask, payload, receivers, groupId, isStream)
 {
 }
Ejemplo n.º 4
0
        public Handle(byte[] packet, Receivers.ClientState client)
        {
            #region Variables
            byte Type = packet[4];
            uint ItemUID = BitConverter.ToUInt32(packet, 8);
            uint RefineryUID = BitConverter.ToUInt32(packet, 12);
            Interfaces.IConquerItem Main = null;
            Interfaces.IConquerItem Minor = null;
            #endregion

            #region Refinery
            if (Type == 0)
            {
                #region Main Item
                Main = client.Equipment.TryGetItem(ItemUID);
                if (Main == null)
                {
                    client.Send(new Message("You need to be wearing the target item to refine", Color.Red, Message.TopLeft));
                    return;
                }
                #endregion
                #region Minor Item
                client.Inventory.TryGetItem(RefineryUID, out Minor);
                #endregion

                if (Minor != null)
                {
                    ConquerItemInformation Info = new ConquerItemInformation(Minor.ID, 0);
                    if (Info != null)
                    {
                        #region Info Split
                        string[] RefineryInfo = Info.BaseInformation.FinalDescription.Split('~');
                        #endregion
                        #region Safe RefineryName
                        string RefineryName = Info.BaseInformation.Name.Replace("Material", "");
                        RefineryName = RefineryName.Replace("(Super)", "");
                        RefineryName = RefineryName.Replace("(Unique)", "");
                        RefineryName = RefineryName.Replace("(Refined)", "");
                        RefineryName = RefineryName.Replace("(Elite)", "");
                        RefineryName = RefineryName.Replace("(Normal)", "");
                        #endregion
                        #region Set Info
                        RefineryID RefineryType = RefineryID.None;
                        byte RefineryLevel = byte.Parse(RefineryInfo[1]);
                        string ItemType = Info.BaseInformation.Description;
                        ushort RefineryPercent = 0;

                        switch (RefineryName)
                        {
                            case "Block": RefineryType = RefineryID.Block; break;
                            case "Detoxication": RefineryType = RefineryID.Detoxication; break;
                            case "Breakthrough": RefineryType = RefineryID.Breaktrough; break;
                            case "CriticalStrike": RefineryType = RefineryID.Critical; break;
                            case "Intensification": RefineryType = RefineryID.Intensificaiton; break;
                            default: Console.WriteLine("Uknown refinery item " + RefineryName); return;
                        }
                        RefineryPercent = getPercentage(RefineryName, ItemType, RefineryLevel);
                        if (RefineryPercent <= 0)
                            return;

                        #endregion
                        #region Switch RefineryType
                        #region Allow Refinery
                        bool AllowedRefinery = false;
                        switch (ItemType)
                        {
                            case "Headgear":
                                if (Main.Position == 1)
                                    AllowedRefinery = true;
                                break;
                            case "Necklace":
                                if (Main.Position == 2)
                                    AllowedRefinery = true;
                                break;
                            case "Armor":
                                if (Main.Position == 3)
                                    AllowedRefinery = true;
                                break;
                            case "Bracelet":
                            case "Ring":
                                if (Main.Position == 6)
                                    AllowedRefinery = true;
                                break;
                            case "1-Handed":
                                if (Main.Position == 4 || Main.Position == 5)
                                    if (Main.ID >= 410000 && Main.ID < 500000)
                                        AllowedRefinery = true;
                                break;
                            case "2-Handed":
                                if (Main.Position == 4)
                                    if (Main.ID >= 510000 && Main.ID < 600000)
                                        AllowedRefinery = true;
                                break;
                            case "Bow":
                                if (Main.Position == 4)
                                    if (Main.ID >= 500000 && Main.ID < 501000)
                                        AllowedRefinery = true;
                                break;
                            case "Shield":
                                if (Main.Position == 5)
                                    if (Main.ID >= 900000 && Main.ID < 901000)
                                        AllowedRefinery = true;
                                break;
                            case "Boots":
                                if (Main.Position == 8)
                                    AllowedRefinery = true;
                                break;
                            default: AllowedRefinery = false; break;
                        }

                        if (!AllowedRefinery)
                        {
                            client.Send(new Message("You can't refine the target item!", Color.Red, Message.TopLeft));
                            return;
                        }
                        #endregion

                        if (RefineryType != RefineryID.None)
                        {
                            Main.RefineryLevel = RefineryLevel;
                            Main.RefineryPart = (uint)RefineryType;
                            Main.RefineryPercent = RefineryPercent;
                            Main.Send(client);
                            ConquerItemTable.RefineryUpdate(Main, client);
                            client.Inventory.Remove(Minor, Enums.ItemUse.Remove);
                        }
                        #endregion
                    }
                    else
                    {
                        client.Send(new Message("You can't use this item to refine!", Color.Red, Message.TopLeft));
                        Console.WriteLine("Minor refinery info is null");
                        return;
                    }
                }
                else
                {
                    client.Send(new Message("You can't use this item to refine!", Color.Red, Message.TopLeft));
                    Console.WriteLine("Minor refinery is null");
                    return;
                }
            }
            #endregion
            #region Purify
            else if (Type == 1)
            {
                client.Inventory.TryGetItem(ItemUID, out Main);
                client.Inventory.TryGetItem(RefineryUID, out Minor);
                if (Main == null)
                    return;
                if (Minor == null)
                    return;

                if (client.Inventory.Contains(1088001, 15))
                {
                    Main.Mode = Enums.ItemMode.Update;
                    Main.SoulPart = Minor.ID;
                    Main.SoulStarted = DateTime.Now;
                    Main.Send(client);
                    Main.Mode = Enums.ItemMode.Default;
                    ConquerItemTable.SoulUpdate(Main, client);
                    client.Inventory.Remove(Minor, Enums.ItemUse.Remove);
                    client.Inventory.Remove(1088001, 15);
                    client.Send(packet);
                }
                else { client.Send(new Message("You don't have 15 meteors!", Color.Red, Message.TopLeft)); return; }
            }

            #endregion
        }
Ejemplo n.º 5
0
 public void AddReceiver(User receiver, bool isRead = false)
 {
     Receivers.Add(receiver);
     IsRead[receiver.Email] = isRead;
 }
 public ConnectionClose(ulong timestep, bool useMask, BMSByte payload, Receivers receivers, int groupId, bool isStream) : base(timestep, useMask, payload, receivers, groupId, isStream)
 {
 }
Ejemplo n.º 7
0
 public void RemoveReceiver(Action <byte> receiver)
 {
     Receivers.Remove(receiver);
 }
Ejemplo n.º 8
0
 public void AddReceiver(Action <byte> receiver)
 {
     Receivers.Add(receiver);
 }
Ejemplo n.º 9
0
 public void SoloReceiver(Action <byte> receiver)
 {
     Receivers.RemoveAll(p => true);
     AddReceiver(receiver);
 }
Ejemplo n.º 10
0
 public Action <byte> GetCurrentReceiver()
 {
     return(Receivers.First(p => true));
 }
Ejemplo n.º 11
0
 public Ping(ulong timestep, bool useMask, Receivers receivers, int groupId, bool isStream) : base(timestep, useMask, receivers, groupId, isStream)
 {
 }