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); }
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); } }
/// <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; } } } }