Exemple #1
0
        public void SendItemUpdate(Item.ItemUpdateMethod reason, Common.Item.Item item)
        {
            SM_ITEM_INFO            p    = new SM_ITEM_INFO();
            List <Common.Item.Item> list = new List <Common.Item.Item>();

            list.Add(item);
            p.Reason = reason;
            p.Items  = list;

            Network.SendPacket(p);
        }
Exemple #2
0
        public void SendItemUpdate(Item.ItemUpdateMethod reason, List <Common.Item.Item> list)
        {
            SM_ITEM_INFO p = new SM_ITEM_INFO()
            {
                Reason = reason,
                Items  = list
            };

            Logger.Log.Debug(p.DumpData());
            Network.SendPacket(p);
        }
Exemple #3
0
        public void SendItemList()
        {
            List <Common.Item.Item> items = new List <Common.Item.Item>();

            foreach (Containers c in Enum.GetValues(typeof(Containers)))
            {
                foreach (Common.Item.Item i in chara.Inventory.Container[c])
                {
                    if (i != null)
                    {
                        items.Add(i);
                    }
                }
            }
            if (items.Count > 0)
            {
                SM_ITEM_INFO p = new SM_ITEM_INFO()
                {
                    Reason = ItemUpdateMethod.List,
                    Items  = items
                };
                Network.SendPacket(p);
            }
        }
        public void ComposeBaGua(CM_COMPOSE_BAGUA p)
        {
            Common.Item.Item primary   = chara.Inventory.Container[Containers.Inventory][p.PrimarySlot];
            Common.Item.Item secondary = chara.Inventory.Container[Containers.Inventory][p.SecondarySlot];
            Stats            stat      = Utils.FindStat(p.Stat);

            if (primary != null && secondary != null)
            {
                if (primary.BaseData.ItemType == ItemType.Bagua && secondary.BaseData.ItemType == ItemType.Bagua)
                {
                    if (primary.BaseData.SecondaryStats.ContainsKey(stat) && secondary.BaseData.PrimaryStats.ContainsKey(stat))
                    {
                        Dictionary <Common.Item.Item, ushort> update = new Dictionary <Common.Item.Item, ushort>();
                        Common.Item.Item add;
                        ushort           total = 0;
                        bool             pass;

                        foreach (KeyValuePair <ushort, ushort> i in p.ExchangeItems)
                        {
                            add = Character.Inventory.Container[Containers.Inventory][i.Key];
                            if (add != null)
                            {
                                if (add.Count >= i.Value && add.ItemID == primary.BaseData.BaGuaPowderId)
                                {
                                    update.Add(add, i.Value);
                                    total += i.Value;
                                }
                                else
                                {
                                    break;
                                }
                            }
                        }

                        if (total == primary.BaseData.BaGuaPowderCount)
                        {
                            pass = BaGuaSuccess(primary, secondary);
                            update.Add(secondary, secondary.Count);
                            RemoveItemsBySlot(update);
                            if (pass)
                            {
                                Common.Item.Item remove = new Common.Item.Item(primary.BaseData)
                                {
                                    Synthesis = primary.Synthesis
                                };
                                primary.Synthesis = p.Stat;
                                List <Common.Item.Item> items = new List <Common.Item.Item>();
                                items.Add(primary);
                                CharacterSession.Instance.SaveItem(primary);
                                SM_ITEM_INFO r = new SM_ITEM_INFO()
                                {
                                    Reason = Item.ItemUpdateMethod.Synthesis,
                                    Items  = items
                                };
                                Network.SendPacket(r);

                                /*if (primary.InventoryEquipSlot != InventoryEquipSlot.None)
                                 * {
                                 *  PC.Status.EquipItem(chara, remove,false);
                                 *  PC.Status.EquipItem(chara, primary,true);
                                 *  PC.Status.CalcStatus(chara);
                                 *  SendPlayerEquiptStats(primary, Utils.FindStat(remove.Synthesis));
                                 * }*/
                            }
                            else
                            {
                                SM_COMPOSE_BAGUA_FAIL r = new SM_COMPOSE_BAGUA_FAIL()
                                {
                                    Code = 0x148
                                };
                                Network.SendPacket(r);
                            }
                        }
                    }
                }
            }
        }