Exemplo n.º 1
0
        public override void Save(StreamHandler writer)
        {
            writer.WriteByte((byte)ContainerSlot);
            writer.WriteByte((byte)Slot);
            writer.WriteByte(CastId);
            writer.WriteUInt32(SpellId);
            writer.WriteGuid(ItemGuid);
            writer.WriteUInt32(GlyphSlot);
            writer.WriteByte(UnkFlags);

            TargetData.Write(writer);
        }
Exemplo n.º 2
0
        public override void Save(StreamHandler Writer)
        {
            Writer.WritePackedGuid(Caster);
            Writer.WritePackedGuid(CastInvoker);
            Writer.WriteByte(CastId);
            Writer.WriteUInt32(SpellId);
            Writer.WriteUInt32((uint)Flags);
            Writer.WriteUInt32(Unk43);
            Writer.WriteUInt32(Unk43_2);

            TargetData.Write(Writer);

            if ((Flags & CastFlags.PredictedPower) != 0)
            {
                Writer.WriteUInt32(PredictedPower);
            }

            if ((Flags & CastFlags.RuneStates) != 0)
            {
                Writer.WriteByte((byte)RunesBefore);
                Writer.WriteByte((byte)RunesAfter);
                for (int i = 0; i < RuneCooldowns.Length; ++i)
                {
                    Writer.WriteByte((byte)RuneCooldowns[i]);
                }
            }

            if ((Flags & CastFlags.Ammo) != 0)
            {
                Writer.WriteUInt32(ProjectileDisplayId);
                Writer.WriteUInt32((uint)ProjectileInventoryType);
            }

            if ((Flags & CastFlags.Unk0x04000000) != 0)
            {
                Writer.WriteUInt32(Unk0x04000000_UInt32_1);
                Writer.WriteUInt32(Unk0x04000000_UInt32_2);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Saves the current instance of SpellGo class to a StreamHandler.
        /// </summary>
        /// <param name="Writer">The StreamHandler to use.</param>
        public override void Save(StreamHandler Writer)
        {
            Writer.WritePackedGuid(Caster);
            Writer.WritePackedGuid(CastInvoker);
            Writer.WriteByte(CastId);
            Writer.WriteUInt32(SpellId);
            Writer.WriteUInt32((uint)Flags);
            Writer.WriteUInt32(Unk43);
            Writer.WriteUInt32(CastTime);

            Writer.WriteByte((byte)Hits.Count);
            foreach (WowGuid guid in Hits)
            {
                Writer.WriteGuid(guid);
            }

            Writer.WriteByte((byte)Misses.Count);
            foreach (MissData miss in Misses)
            {
                miss.Write(Writer);
            }

            TargetData.Write(Writer);

            if ((Flags & CastFlags.PredictedPower) != 0)
            {
                Writer.WriteUInt32(PredictedPower);
            }

            if ((Flags & CastFlags.RuneStates) != 0)
            {
                Writer.WriteByte((byte)RunesBefore);
                Writer.WriteByte((byte)RunesAfter);
                for (int i = 0; i < RuneCooldowns.Length; ++i)
                {
                    Writer.WriteByte((byte)RuneCooldowns[i]);
                }
            }

            if ((Flags & CastFlags.Unk0x00020000) != 0)
            {
                Writer.WriteSingle(Unk0x20000_Float);
                Writer.WriteUInt32(Unk0x20000_UInt32);
            }

            if ((Flags & CastFlags.Ammo) != 0)
            {
                Writer.WriteUInt32(ProjectileDisplayId);
                Writer.WriteUInt32((uint)ProjectileInventoryType);
            }

            if ((Flags & CastFlags.Unk0x00080000) != 0)
            {
                Writer.WriteUInt32(Unk0x80000_UInt32_1);
                Writer.WriteUInt32(Unk0x80000_UInt32_2);
            }

            if ((TargetData.Flags & SpellCastTargetFlags.DestLocation) != 0)
            {
                Writer.WriteByte(DestLocationCounter);
            }

            if ((TargetData.Flags & SpellCastTargetFlags.Unk4) != 0)
            {
                Writer.WriteUInt32(Unk4_Count);
                foreach (var pair in Unk4_List)
                {
                    Writer.WriteStruct(pair.Value);
                    Writer.WriteGuid(pair.Key);
                    if (pair.Key.IsEmpty)
                    {
                        break;
                    }
                }
            }
        }