Пример #1
0
 public bool Add(Interfaces.IConquerItem item)
 {
     try
     {
         if (item.Position > 19)
             return false;
         if (objects[item.Position - 1] == null)
         {
             UpdateItemview(item);
             objects[item.Position - 1] = item;
             item.Position = item.Position;
             item.Send(Owner);
             EntityEquipment equips = new EntityEquipment(true);
             equips.ParseHero(Owner);
             Owner.Send(equips);
             Owner.LoadItemStats(item);
             Owner.SendScreenSpawn(Owner.Entity, false);
             return true;
         }
         else return false;
     }
     catch (Exception e)
     {
         Program.SaveException(e);
         Console.WriteLine(e.ToString());
         return false;
     }
 }
        public bool Add(Interfaces.IConquerItem item)
        {
            if (objects[item.Position - 1] == null)
            {
                UpdateItemview(item);
                objects[item.Position - 1] = item;
                item.Position = item.Position;
                item.Send(Owner);

                Owner.SendScreenSpawn(Owner.Entity, false);

                return true;
            }
            else return false;
        }
        public bool Add(Interfaces.IConquerItem item, Enums.ItemUse use)
        {
            if (objects[item.Position - 1] == null)
            {
                objects[item.Position - 1] = item;
                item.Mode = Enums.ItemMode.Default;

                if (use != Enums.ItemUse.None)
                {
                    UpdateItemview(item);

                    item.Send(Owner);
                    Owner.LoadItemStats(Owner.Entity);
                }
                return true;
            }
            else return false;
        }
Пример #4
0
 public bool AddSpell(Interfaces.ISkill spell)
 {
     if (Spells.ContainsKey(spell.ID))
     {
         if (Spells[spell.ID].Level < spell.Level)
         {
             Spells[spell.ID].Level = spell.Level;
             Spells[spell.ID].Experience = spell.Experience;
             if (spell.ID != 3060)
                 spell.Send(this);
         }
         return false;
     }
     else
     {
         if (spell.ID == 1045 || spell.ID == 1046)
         {
             if (Proficiencies.ContainsKey(Database.SpellTable.SpellInformations[spell.ID][spell.Level].WeaponSubtype))
             {
                 if (Proficiencies[Database.SpellTable.SpellInformations[spell.ID][spell.Level].WeaponSubtype].Level < 5)
                     return false;
             }
             else
                 return false;
         }
         Spells.Add(spell.ID, spell);
         if (spell.ID != 3060)
             spell.Send(this);
         return true;
     }
 }
Пример #5
0
 public bool AddProficiency(Interfaces.ISkill proficiency)
 {
     if (Proficiencies.ContainsKey(proficiency.ID))
     {
         Proficiencies[proficiency.ID].Level = proficiency.Level;
         Proficiencies[proficiency.ID].Experience = proficiency.Experience;
         proficiency.Send(this);
         return false;
     }
     else
     {
         Proficiencies.Add(proficiency.ID, proficiency);
         proficiency.Send(this);
         return true;
     }
 }
Пример #6
0
        public void ReviewItem(Interfaces.IConquerItem item)
        {
            Database.ConquerItemTable.DeleteItem(item.UID);
            if (item.Position != 0)
            {
                Network.GamePackets.ItemUsage iu = new Network.GamePackets.ItemUsage(true);
                iu.UID = item.UID;
                iu.dwParam = item.Position;
                iu.ID = Network.GamePackets.ItemUsage.UnequipItem;
                Owner.Send(iu);
            }
            Network.GamePackets.ItemUsage iud = new Network.GamePackets.ItemUsage(true);
            iud.UID = item.UID;
            iud.ID = Network.GamePackets.ItemUsage.RemoveInventory;
            Owner.Send(iud);

            Database.ConquerItemTable.AddItem(ref item, Owner);

            item.Send(Owner);
        }
Пример #7
0
        public bool Remove(Interfaces.IConquerItem item, Enums.ItemUse use)
        {
            if (inventory.ContainsKey(item.UID))
            {
                if (!Network.PacketHandler.IsEquipment(item.ID))
                {
                    if (item.StackSize != 0)
                    {
                        item.StackSize--;
                        if (item.StackSize != 0)
                        {
                            Database.ConquerItemTable.UpdateStackItem(item, Owner);
                            item.Mode = Enums.ItemMode.Update;
                            item.Send(Owner);
                            item.Mode = Enums.ItemMode.Default;
                            return true;
                        }
                    }
                }
                switch (use)
                {
                    case Enums.ItemUse.Remove: Database.ConquerItemTable.RemoveItem(item.UID); break;
                    case Enums.ItemUse.Delete: Database.ConquerItemTable.DeleteItem(item.UID); break;
                    case Enums.ItemUse.Move: Database.ConquerItemTable.UpdateLocation(item, Owner); break;
                }

                inventory.Remove(item.UID);
                objects = inventory.Values.ToArray();
                Network.GamePackets.ItemUsage iu = new Network.GamePackets.ItemUsage(true);
                iu.UID = item.UID;
                iu.ID = Network.GamePackets.ItemUsage.RemoveInventory;
                Owner.Send(iu);
                return true;
            }
            return false;
        }
Пример #8
0
 public bool Add(Interfaces.IConquerItem item, Enums.ItemUse use)
 {
     if (!Database.ConquerItemInformation.BaseInformations.ContainsKey(item.ID))
         return true;
     if (Count == 40 && CanStack(item.ID) == null)
     {
         Owner.Send(ServerBase.Constants.FullInventory);
         return false;
     }
     if (!inventory.ContainsKey(item.UID))
     {
         item.Position = 0;
         if (!Network.PacketHandler.IsEquipment(item.ID))
         {
             if (item.StackSize != item.MaxStackSize)
             {
                 Interfaces.IConquerItem stacker = null;
                 if ((stacker = CanStack(item.ID)) != null)
                 {
                     bool Continue = false;
                     if (stacker.StackSize + item.StackSize > stacker.MaxStackSize)
                     {
                         Continue = true;
                         item.StackSize = (ushort)(stacker.StackSize + item.StackSize - stacker.MaxStackSize);
                         stacker.StackSize = stacker.MaxStackSize;
                     }
                     else
                         stacker.StackSize++;
                     Database.ConquerItemTable.UpdateStackItem(stacker, Owner);
                     stacker.Mode = Enums.ItemMode.Update;
                     stacker.Send(Owner);
                     stacker.Mode = Enums.ItemMode.Default;
                     if (!Continue)
                         return true;
                 }
             }
         }
         switch (use)
         {
             case Enums.ItemUse.CreateAndAdd:
                 item.UID = Conquer_Online_Server.Network.GamePackets.ConquerItem.ItemUID.Next;
                 Database.ConquerItemTable.AddItem(ref item, Owner);
                 item.MobDropped = false;
                 break;
             case Enums.ItemUse.Add:
                 Database.ConquerItemTable.UpdateLocation(item, Owner);
                 break;
             case Enums.ItemUse.Move:
                 item.Position = 0;
                 item.StatsLoaded = false;
                 Database.ConquerItemTable.UpdateLocation(item, Owner);
                 break;
         }
         inventory.Add(item.UID, item);
         objects = inventory.Values.ToArray();
         item.Mode = Enums.ItemMode.Default;
         if (use != Enums.ItemUse.None)
             item.Send(Owner);
         return true;
     }
     return false;
 }
Пример #9
0
        public bool Add(Interfaces.IConquerItem item, Enums.ItemUse use)
        {
            try
            {
                if (item.Position < 20)
                {
                    if (objects[item.Position - 1] == null)
                    {
                        objects[item.Position - 1] = item;
                        item.Mode = Enums.ItemMode.Default;

                        if (use != Enums.ItemUse.None)
                        {
                            UpdateItemview(item);
                            EntityEquipment equips = new EntityEquipment(true);
                            equips.ParseHero(Owner);
                            Owner.Send(equips);
                            item.Send(Owner);
                            Owner.LoadItemStats(item);
                        }
                        return true;
                    }
                    else return false;
                }
                else return false;
            }
            catch { return false; }
        }
        public static void CheckItemExtra(Interfaces.IConquerItem i, Client.GameState c)
        {
            if (i.RefineryTime.Ticks != 0)
            {
                if (DateTime.Now > i.RefineryTime)
                {
                    i.RefineItem = 0;
                    i.RefineryTime = new DateTime(0);

                    Game_ItemSoul expire = new Game_ItemSoul()
                    {
                        Identifier = i.UID
                    };
                    expire.Expired(c);
                    i.Send(c);
                    c.Send(PacketHandler.WindowStats(c));

                    Database.ConquerItemTable.UpdateRefineryItem(i);
                    Database.ConquerItemTable.UpdateRefineryTime(i);

                    if (!c.Equipment.Free(i.Position))
                    {
                        //c.UnloadItemStats(i, true);
                        c.LoadItemStats(c.Entity);
                    }
                }
            }
        }
        public bool Add(Interfaces.IConquerItem item, Enums.ItemUse use)
        {
            try {
            if (!Database.ConquerItemInformation.BaseInformations.ContainsKey(item.ID))
                return true;
            if (Count == 40)
            {
                Owner.Send(ServerBase.Constants.FullInventory);
                return false;
            }
            if (!inventory.ContainsKey(item.UID))
            {
                item.Position = 0;
                Interfaces.IConquerItem _ExistingItem;
                Database.ConquerItemInformation iteminfo = new PhoenixProject.Database.ConquerItemInformation(item.ID, 0);
                if (Owner.Inventory.Contains(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, out _ExistingItem) && Owner.SpiltStack && use !=Enums.ItemUse.None)
                {

                    if (_ExistingItem.StackSize == 0)
                        _ExistingItem.StackSize = 1;
                    ushort _StackCount = iteminfo.BaseInformation.StackSize;
                    _StackCount -= (ushort)_ExistingItem.StackSize;

                    if (_StackCount >= 1)
                        _StackCount += 1;
                    _ExistingItem.StackSize += 1;

                    Database.ConquerItemTable.UpdateStack(_ExistingItem);
                    _ExistingItem.Mode = Game.Enums.ItemMode.Update;
                    _ExistingItem.Send(Owner);
                    _ExistingItem.Mode = Game.Enums.ItemMode.Default;
                    switch (use)
                    {

                        case Enums.ItemUse.Add:
                            Database.ConquerItemTable.DeleteItem(item.UID);
                            break;
                        case Enums.ItemUse.Move:
                            Database.ConquerItemTable.DeleteItem(item.UID);
                            break;
                    }
                    // Owner.SpiltStack = false;
                    return true;

                }
                else
                {
                    switch (use)
                    {
                        case Enums.ItemUse.CreateAndAdd:
                            item.UID = PhoenixProject.Client.AuthState.nextID;
                            PhoenixProject.Client.AuthState.nextID++;
                            Database.ConquerItemTable.AddItem(ref item, Owner);
                            item.MobDropped = false;
                            break;
                        case Enums.ItemUse.Add:
                            Database.ConquerItemTable.UpdateLocation(item, Owner);
                            break;
                        case Enums.ItemUse.Move:
                            item.Position = 0;
                            item.StatsLoaded = false;
                            Database.ConquerItemTable.UpdateLocation(item, Owner);
                            break;
                    }
                    inventory.Add(item.UID, item);
                    objects = inventory.Values.ToArray();
                    item.Mode = Enums.ItemMode.Default;
                    if (use != Enums.ItemUse.None)
                        item.Send(Owner);
                    return true;
                }
            }
            }
            catch (Exception e)
            {
            Program.SaveException(e);
            }
            return false;
        }
Пример #12
0
 public void Inscribe(ArsenalType Type, Interfaces.IConquerItem Item, Client.GameState client)
 {
     if (!Inscribed[Type].ContainsKey(Item.UID))
     {
         Item.Mode = Enums.ItemMode.Update;
         Item.Inscribed = true;
         Item.Send(client);
         Item.Mode = Enums.ItemMode.Default;
         ArsenalSingle Inscriber = new ArsenalSingle();
         Inscriber.D_UID = client.Entity.UID;
         Inscriber.Item = Item;
         Inscriber.Name = client.Entity.Name;
         Inscriber.UID = Item.UID;
         Inscriber.Type = Type;
         Inscriber.Donation = GetDonation(Item);
         Inscribed[Type].Add(Inscriber.UID, Inscriber);
         Database.ArsenalsTable.Inscribe(Type, Inscriber.Donation, Item, client.Entity);
         Donation[Type] += Inscriber.Donation;
     }
     else
     {
         client.Send(new Network.GamePackets.Message("This item is already inscribed!", System.Drawing.Color.Red, 2005));
         return;
     }
 }