public override void Write() { _worldPacket.WritePackedGuid(QuestGiverGUID); _worldPacket.WritePackedGuid(InformUnit); _worldPacket.WriteUInt32(QuestID); _worldPacket.WriteInt32(QuestPackageID); _worldPacket.WriteUInt32(PortraitGiver); _worldPacket.WriteUInt32(PortraitGiverMount); _worldPacket.WriteUInt32(PortraitTurnIn); _worldPacket.WriteUInt32(QuestFlags[0]); // Flags _worldPacket.WriteUInt32(QuestFlags[1]); // FlagsEx _worldPacket.WriteUInt32(SuggestedPartyMembers); _worldPacket.WriteInt32(LearnSpells.Count); _worldPacket.WriteInt32(DescEmotes.Count); _worldPacket.WriteInt32(Objectives.Count); _worldPacket.WriteInt32(QuestStartItemID); _worldPacket.WriteInt32(QuestSessionBonus); foreach (uint spell in LearnSpells) { _worldPacket.WriteUInt32(spell); } foreach (QuestDescEmote emote in DescEmotes) { _worldPacket.WriteUInt32(emote.Type); _worldPacket.WriteUInt32(emote.Delay); } foreach (QuestObjectiveSimple obj in Objectives) { _worldPacket.WriteUInt32(obj.Id); _worldPacket.WriteInt32(obj.ObjectID); _worldPacket.WriteInt32(obj.Amount); _worldPacket.WriteUInt8(obj.Type); } _worldPacket.WriteBits(QuestTitle.GetByteCount(), 9); _worldPacket.WriteBits(DescriptionText.GetByteCount(), 12); _worldPacket.WriteBits(LogDescription.GetByteCount(), 12); _worldPacket.WriteBits(PortraitGiverText.GetByteCount(), 10); _worldPacket.WriteBits(PortraitGiverName.GetByteCount(), 8); _worldPacket.WriteBits(PortraitTurnInText.GetByteCount(), 10); _worldPacket.WriteBits(PortraitTurnInName.GetByteCount(), 8); _worldPacket.WriteBit(AutoLaunched); _worldPacket.WriteBit(false); // unused in client _worldPacket.WriteBit(StartCheat); _worldPacket.WriteBit(DisplayPopup); _worldPacket.FlushBits(); Rewards.Write(_worldPacket); _worldPacket.WriteString(QuestTitle); _worldPacket.WriteString(DescriptionText); _worldPacket.WriteString(LogDescription); _worldPacket.WriteString(PortraitGiverText); _worldPacket.WriteString(PortraitGiverName); _worldPacket.WriteString(PortraitTurnInText); _worldPacket.WriteString(PortraitTurnInName); }