Example #1
0
        public static ItemInstance ReadItemInstance901(Packet packet, params object[] indexes)
        {
            ItemInstance instance = new ItemInstance();

            instance.ItemID = packet.ReadInt32 <ItemId>("ItemID", indexes);

            packet.ResetBitReader();
            var hasBonuses = packet.ReadBit("HasItemBonus", indexes);

            {
                packet.ResetBitReader();
                var modificationCount = packet.ReadBits(6);
                for (var j = 0u; j < modificationCount; ++j)
                {
                    var          value = packet.ReadInt32();
                    ItemModifier mod   = packet.ReadByteE <ItemModifier>();
                    packet.AddValue(mod.ToString(), value, indexes);
                    instance.ItemModifier[mod] = value;
                }
            }

            if (hasBonuses)
            {
                instance.Context = packet.ReadByte("Context", indexes);

                var bonusCount = packet.ReadUInt32();
                instance.BonusListIDs = new uint[bonusCount];
                for (var j = 0; j < bonusCount; ++j)
                {
                    instance.BonusListIDs[j] = packet.ReadUInt32("BonusListID", indexes, j);
                }
            }

            return(instance);
        }
Example #2
0
        public static ItemInstance ReadItemInstance602(Packet packet, params object[] indexes)
        {
            ItemInstance instance = new ItemInstance();

            instance.ItemID = packet.ReadInt32 <ItemId>("ItemID", indexes);
            instance.RandomPropertiesSeed = packet.ReadUInt32("RandomPropertiesSeed", indexes);
            instance.RandomPropertiesID   = packet.ReadUInt32("RandomPropertiesID", indexes);

            packet.ResetBitReader();

            var hasBonuses       = packet.ReadBit("HasItemBonus", indexes);
            var hasModifications = packet.ReadBit("HasModifications", indexes);

            if (hasBonuses)
            {
                instance.Context = packet.ReadByte("Context", indexes);

                var bonusCount = packet.ReadUInt32();
                instance.BonusListIDs = new uint[bonusCount];
                for (var j = 0; j < bonusCount; ++j)
                {
                    instance.BonusListIDs[j] = packet.ReadUInt32("BonusListID", indexes, j);
                }
            }

            if (hasModifications)
            {
                var mask = packet.ReadUInt32();
                for (var j = 0; mask != 0; mask >>= 1, ++j)
                {
                    if ((mask & 1) != 0)
                    {
                        ItemModifier mod = (ItemModifier)j;
                        instance.ItemModifier[mod] = packet.ReadInt32(mod.ToString(), indexes);
                    }
                }
            }
            return(instance);
        }