TrinityCore
Loading...
Searching...
No Matches
QuestPackets.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "QuestPackets.h"
19#include "PacketOperators.h"
20
21namespace WorldPackets::Quest
22{
24{
25 data << int32(questDisplaySpell.SpellID);
26 data << int32(questDisplaySpell.PlayerConditionID);
27 data << int32(questDisplaySpell.Type);
28
29 return data;
30}
31
32ByteBuffer& operator<<(ByteBuffer& data, ConditionalQuestText const& conditionalQuestText)
33{
34 data << int32(conditionalQuestText.PlayerConditionID);
35 data << int32(conditionalQuestText.QuestGiverCreatureID);
36 data << SizedString::BitsSize<12>(conditionalQuestText.Text);
37 data.FlushBits();
38
39 data << SizedString::Data(conditionalQuestText.Text);
40
41 return data;
42}
43
48
56
58{
59 _worldPacket << Size<int32>(QuestGiver);
60 for (QuestGiverInfo const& questGiver : QuestGiver)
61 {
62 _worldPacket << questGiver.Guid;
63 _worldPacket << uint64(questGiver.Status);
64 }
65
66 return &_worldPacket;
67}
68
73
79
81{
83
84 _worldPacket << Bits<1>(Allow);
86
87 if (Allow)
88 {
103 _worldPacket << Size<uint32>(Info.RewardDisplaySpell);
116
117 for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i)
118 {
123 }
124
125 for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i)
126 {
130 }
131
133 _worldPacket << float(Info.POIx);
134 _worldPacket << float(Info.POIy);
136
141
146
147 for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i)
148 {
153 }
154
156
157 for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i)
158 {
161 }
162
165
168
169 _worldPacket << Size<uint32>(Info.Objectives);
170 for (int32 allowableRaces : Info.AllowableRaces.RawValue)
171 _worldPacket << int32(allowableRaces);
172 _worldPacket << Size<uint32>(Info.TreasurePickerID);
173 _worldPacket << Size<uint32>(Info.NonDisplayableTreasurePickerIDs);
178
179 _worldPacket << Size<uint32>(Info.ConditionalQuestDescription);
180 _worldPacket << Size<uint32>(Info.ConditionalQuestCompletionLog);
181
182 _worldPacket << Size<uint32>(Info.RewardHouseRoomIDs);
183 _worldPacket << Size<uint32>(Info.RewardHouseDecorIDs);
184
185 for (QuestCompleteDisplaySpell const& rewardDisplaySpell : Info.RewardDisplaySpell)
186 _worldPacket << rewardDisplaySpell;
187
188 if (!Info.TreasurePickerID.empty())
190
193
194 if (!Info.RewardHouseRoomIDs.empty())
196
197 if (!Info.RewardHouseDecorIDs.empty())
199
200 _worldPacket << SizedString::BitsSize<9>(Info.LogTitle);
201 _worldPacket << SizedString::BitsSize<12>(Info.LogDescription);
202 _worldPacket << SizedString::BitsSize<12>(Info.QuestDescription);
203 _worldPacket << SizedString::BitsSize<9>(Info.AreaDescription);
204 _worldPacket << SizedString::BitsSize<10>(Info.PortraitGiverText);
205 _worldPacket << SizedString::BitsSize<8>(Info.PortraitGiverName);
206 _worldPacket << SizedString::BitsSize<10>(Info.PortraitTurnInText);
207 _worldPacket << SizedString::BitsSize<8>(Info.PortraitTurnInName);
208 _worldPacket << SizedString::BitsSize<11>(Info.QuestCompletionLog);
209 _worldPacket << Bits<1>(Info.ResetByScheduler);
210 _worldPacket << Bits<1>(Info.ReadyForTranslation);
212
213 for (QuestInfoObjective const& questObjective : Info.Objectives)
214 {
215 _worldPacket << uint32(questObjective.ID);
216 _worldPacket << int32(questObjective.Type);
217 _worldPacket << int8(questObjective.StorageIndex);
218 _worldPacket << int32(questObjective.ObjectID);
219 _worldPacket << int32(questObjective.Amount);
220 _worldPacket << int32(questObjective.ConditionalAmount); // only objective type 22
221 _worldPacket << uint32(questObjective.Flags);
222 _worldPacket << uint32(questObjective.Flags2);
223 _worldPacket << float(questObjective.ProgressBarWeight);
224
225 _worldPacket << Size<int32>(questObjective.VisualEffects);
226 _worldPacket << int32(questObjective.ParentObjectiveID); // related to new UF flags
227
228 for (int32 visualEffect : questObjective.VisualEffects)
229 _worldPacket << int32(visualEffect);
230
231 _worldPacket << SizedString::BitsSize<8>(questObjective.Description);
232 _worldPacket << Bits<1>(questObjective.Visible);
234
235 _worldPacket << SizedString::Data(questObjective.Description);
236 }
237
247
248 for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestDescription)
249 _worldPacket << conditionalQuestText;
250
251 for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestCompletionLog)
252 _worldPacket << conditionalQuestText;
253 }
254
255 return &_worldPacket;
256}
257
269
278
286
287ByteBuffer& operator<<(ByteBuffer& data, QuestRewardItem const& questRewardItem)
288{
289 data << int32(questRewardItem.ItemID);
290 data << int32(questRewardItem.ItemQty);
291 data << OptionalInit(questRewardItem.ContextFlags);
292 data.FlushBits();
293 if (questRewardItem.ContextFlags)
294 data << As<int32>(*questRewardItem.ContextFlags);
295
296 return data;
297}
298
299ByteBuffer& operator<<(ByteBuffer& data, QuestChoiceItem const& questChoiceItem)
300{
301 data << Bits<2>(questChoiceItem.LootItemType);
302 data << OptionalInit(questChoiceItem.ContextFlags);
303 data << questChoiceItem.Item;
304 data << int32(questChoiceItem.Quantity);
305 if (questChoiceItem.ContextFlags)
306 data << As<int32>(*questChoiceItem.ContextFlags);
307
308 return data;
309}
310
312{
313 data.ResetBitPos();
314 data >> Bits<2>(questChoiceItem.LootItemType);
315 data >> OptionalInit(questChoiceItem.ContextFlags);
316 data >> questChoiceItem.Item;
317 data >> questChoiceItem.Quantity;
318 if (questChoiceItem.ContextFlags)
319 data >> As<int32>(*questChoiceItem.ContextFlags);
320
321 return data;
322}
323
324ByteBuffer& operator<<(ByteBuffer& data, QuestRewardCurrency const& questRewardCurrency)
325{
326 data << int32(questRewardCurrency.CurrencyID);
327 data << int32(questRewardCurrency.CurrencyQty);
328 data << int32(questRewardCurrency.BonusQty);
329 data << OptionalInit(questRewardCurrency.ContextFlags);
330 data.FlushBits();
331 if (questRewardCurrency.ContextFlags)
332 data << As<int32>(*questRewardCurrency.ContextFlags);
333
334 return data;
335}
336
337ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards)
338{
339 for (QuestRewardItem const& item : questRewards.Items)
340 data << item;
341
342 data << int32(questRewards.ChoiceItemCount);
343 data << int32(questRewards.ItemCount);
344 data << int32(questRewards.Money);
345 data << int32(questRewards.XP);
346 data << int64(questRewards.ArtifactXP);
347 data << int32(questRewards.ArtifactCategoryID);
348 data << int32(questRewards.Honor);
349 data << int32(questRewards.Title);
350 data << int32(questRewards.FactionFlags);
351
352 for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i)
353 {
354 data << int32(questRewards.FactionID[i]);
355 data << int32(questRewards.FactionValue[i]);
356 data << int32(questRewards.FactionOverride[i]);
357 data << int32(questRewards.FactionCapIn[i]);
358 }
359
360 data.append(questRewards.SpellCompletionDisplayID.data(), questRewards.SpellCompletionDisplayID.size());
361
362 data << int32(questRewards.SpellCompletionID);
363
364 data << int32(questRewards.SkillLineID);
365 data << int32(questRewards.NumSkillUps);
366 data << Size<uint32>(questRewards.TreasurePickerID);
367 if (!questRewards.TreasurePickerID.empty())
368 data.append(questRewards.TreasurePickerID.data(), questRewards.TreasurePickerID.size());
369
370 for (QuestRewardCurrency const& currency : questRewards.Currencies)
371 data << currency;
372
373 data << Bits<1>(questRewards.IsBoostSpell);
374 data.FlushBits();
375
376 for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems)
377 data << choiceItem;
378
379 return data;
380}
381
383{
384 data << offer.Rewards; // QuestRewards
385 data << Size<int32>(offer.Emotes);
386 data << offer.QuestGiverGUID;
387 data.append(offer.QuestFlags);
388 data << int32(offer.QuestGiverCreatureID);
389 data << int32(offer.QuestID);
390 data << int32(offer.SuggestedPartyMembers);
391 data << int32(offer.QuestInfoID);
392 for (QuestDescEmote const& emote : offer.Emotes)
393 {
394 data << int32(emote.Type);
395 data << uint32(emote.Delay);
396 }
397
398 data << Bits<1>(offer.AutoLaunched);
399 data << Bits<1>(false); // Unused
400 data << Bits<1>(offer.ResetByScheduler);
401 data.FlushBits();
402
403 return data;
404}
405
407{
408 _worldPacket << QuestData; // QuestGiverOfferReward
415 _worldPacket << Size<uint32>(ConditionalRewardText);
416
417 _worldPacket << SizedString::BitsSize<9>(QuestTitle);
418 _worldPacket << SizedString::BitsSize<12>(RewardText);
419 _worldPacket << SizedString::BitsSize<10>(PortraitGiverText);
420 _worldPacket << SizedString::BitsSize<8>(PortraitGiverName);
421 _worldPacket << SizedString::BitsSize<10>(PortraitTurnInText);
422 _worldPacket << SizedString::BitsSize<8>(PortraitTurnInName);
424
425 for (ConditionalQuestText const& conditionalQuestText : ConditionalRewardText)
426 _worldPacket << conditionalQuestText;
427
434
435 return &_worldPacket;
436}
437
444
446{
452 _worldPacket << Bits<1>(UseQuestReward);
453 _worldPacket << Bits<1>(LaunchGossip);
454 _worldPacket << Bits<1>(LaunchQuest);
455 _worldPacket << Bits<1>(HideChatMessage);
456
458
459 return &_worldPacket;
460}
461
468
473
475{
486 _worldPacket << Size<uint32>(LearnSpells);
487 _worldPacket << Size<uint32>(DescEmotes);
488 _worldPacket << Size<uint32>(Objectives);
493 _worldPacket << Size<uint32>(ConditionalDescriptionText);
494
495 for (int32 spell : LearnSpells)
496 _worldPacket << int32(spell);
497
498 for (QuestDescEmote const& emote : DescEmotes)
499 {
500 _worldPacket << int32(emote.Type);
501 _worldPacket << uint32(emote.Delay);
502 }
503
504 for (QuestObjectiveSimple const& obj : Objectives)
505 {
506 _worldPacket << int32(obj.ID);
507 _worldPacket << int32(obj.Type);
508 _worldPacket << int32(obj.ObjectID);
509 _worldPacket << int32(obj.Amount);
510 }
511
512 _worldPacket << SizedString::BitsSize<9>(QuestTitle);
513 _worldPacket << SizedString::BitsSize<12>(DescriptionText);
514 _worldPacket << SizedString::BitsSize<12>(LogDescription);
515 _worldPacket << SizedString::BitsSize<10>(PortraitGiverText);
516 _worldPacket << SizedString::BitsSize<8>(PortraitGiverName);
517 _worldPacket << SizedString::BitsSize<10>(PortraitTurnInText);
518 _worldPacket << SizedString::BitsSize<8>(PortraitTurnInName);
519 _worldPacket << Bits<1>(AutoLaunched);
520 _worldPacket << Bits<1>(FromContentPush);
521 _worldPacket << Bits<1>(false); // unused in client
522 _worldPacket << Bits<1>(ResetByScheduler);
523 _worldPacket << Bits<1>(StartCheat);
524 _worldPacket << Bits<1>(DisplayPopup);
526
527 _worldPacket << Rewards; // QuestRewards
535
536 for (ConditionalQuestText const& conditionalQuestText : ConditionalDescriptionText)
537 _worldPacket << conditionalQuestText;
538
539 return &_worldPacket;
540}
541
543{
544 _worldPacket << Size<int32>(Collect);
545 _worldPacket << Size<int32>(Currency);
556
557 for (QuestObjectiveCollect const& obj : Collect)
558 {
559 _worldPacket << int32(obj.ObjectID);
560 _worldPacket << int32(obj.Amount);
561 _worldPacket << uint32(obj.Flags);
562 }
563
564 for (QuestCurrency const& cur : Currency)
565 {
566 _worldPacket << int32(cur.CurrencyID);
567 _worldPacket << int32(cur.Amount);
568 }
569
570 _worldPacket << Bits<1>(AutoLaunched);
571 _worldPacket << Bits<1>(ResetByScheduler);
573
575 _worldPacket << Size<uint32>(ConditionalCompletionText);
576
577 _worldPacket << SizedString::BitsSize<9>(QuestTitle);
578 _worldPacket << SizedString::BitsSize<12>(CompletionText);
580
581 for (ConditionalQuestText const& conditionalQuestText : ConditionalCompletionText)
582 _worldPacket << conditionalQuestText;
583
586
587 return &_worldPacket;
588}
589
595
602
609
614
616{
620 _worldPacket << Size<uint32>(QuestDataText);
621 _worldPacket << SizedString::BitsSize<11>(Greeting);
623
624 for (NPC::ClientGossipText const& gossip : QuestDataText)
625 _worldPacket << gossip;
626
628
629 return &_worldPacket;
630}
631
633{
635 _worldPacket << Bits<1>(HideCreditMessage);
637
638 return &_worldPacket;
639}
640
642{
645
646 _worldPacket << SizedString::BitsSize<10>(QuestTitle);
648
650
651 return &_worldPacket;
652}
653
658
660{
663
664 _worldPacket << SizedString::BitsSize<9>(QuestTitle);
666
668
669 return &_worldPacket;
670}
671
678
680{
683
684 _worldPacket << Bits<1>(SendErrorMessage);
685 _worldPacket << SizedString::BitsSize<9>(ReasonText);
687
689
690 return &_worldPacket;
691}
692
699
707
712
714{
716
717 return &_worldPacket;
718}
719
721{
723
724 return &_worldPacket;
725}
726
728{
729 _worldPacket << Size<uint32>(WorldQuestUpdates);
730
731 for (WorldQuestUpdateInfo const& worldQuestUpdate : WorldQuestUpdates)
732 {
733 _worldPacket << worldQuestUpdate.LastUpdate;
734 _worldPacket << uint32(worldQuestUpdate.QuestID);
735 _worldPacket << uint32(worldQuestUpdate.Timer);
736 _worldPacket << int32(worldQuestUpdate.VariableID);
737 _worldPacket << int32(worldQuestUpdate.Value);
738 }
739
740 return &_worldPacket;
741}
742
743ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseRewardEntry const& playerChoiceResponseRewardEntry)
744{
745 data << playerChoiceResponseRewardEntry.Item;
746 data << int32(playerChoiceResponseRewardEntry.Quantity);
747
748 return data;
749}
750
751ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseReward const& playerChoiceResponseReward)
752{
753 data << int32(playerChoiceResponseReward.TitleID);
754 data << int32(playerChoiceResponseReward.PackageID);
755 data << int32(playerChoiceResponseReward.SkillLineID);
756 data << uint32(playerChoiceResponseReward.SkillPointCount);
757 data << uint32(playerChoiceResponseReward.ArenaPointCount);
758 data << uint32(playerChoiceResponseReward.HonorPointCount);
759 data << uint64(playerChoiceResponseReward.Money);
760 data << uint32(playerChoiceResponseReward.Xp);
761 data << Size<uint32>(playerChoiceResponseReward.Items);
762 data << Size<uint32>(playerChoiceResponseReward.Currencies);
763 data << Size<uint32>(playerChoiceResponseReward.Factions);
764 data << Size<uint32>(playerChoiceResponseReward.ItemChoices);
765
766 for (PlayerChoiceResponseRewardEntry const& item : playerChoiceResponseReward.Items)
767 data << item;
768
769 for (PlayerChoiceResponseRewardEntry const& currency : playerChoiceResponseReward.Currencies)
770 data << currency;
771
772 for (PlayerChoiceResponseRewardEntry const& faction : playerChoiceResponseReward.Factions)
773 data << faction;
774
775 for (PlayerChoiceResponseRewardEntry const& itemChoice : playerChoiceResponseReward.ItemChoices)
776 data << itemChoice;
777
778 return data;
779}
780
781ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponseMawPower const& playerChoiceResponseMawPower)
782{
783 data << int32(playerChoiceResponseMawPower.Unused901_1);
784 data << int32(playerChoiceResponseMawPower.TypeArtFileID);
785 data << int32(playerChoiceResponseMawPower.BorderUiTextureAtlasMemberID);
786 data << int32(playerChoiceResponseMawPower.SpellID);
787 data << int32(playerChoiceResponseMawPower.MaxStacks);
788 data << OptionalInit(playerChoiceResponseMawPower.Rarity);
789 data.FlushBits();
790
791 if (playerChoiceResponseMawPower.Rarity)
792 data << int32(*playerChoiceResponseMawPower.Rarity);
793
794 return data;
795}
796
797ByteBuffer& operator<<(ByteBuffer& data, PlayerChoiceResponse const& playerChoiceResponse)
798{
799 data << int32(playerChoiceResponse.ResponseID);
800 data << uint16(playerChoiceResponse.ResponseIdentifier);
801 data << int32(playerChoiceResponse.ChoiceArtFileID);
802 data << int32(playerChoiceResponse.Flags);
803 data << uint32(playerChoiceResponse.WidgetSetID);
804 data << uint32(playerChoiceResponse.UiTextureAtlasElementID);
805 data << uint32(playerChoiceResponse.SoundKitID);
806 data << uint8(playerChoiceResponse.GroupID);
807 data << int32(playerChoiceResponse.UiTextureKitID);
808
809 data << SizedString::BitsSize<9>(playerChoiceResponse.Answer);
810 data << SizedString::BitsSize<9>(playerChoiceResponse.Header);
811 data << SizedString::BitsSize<7>(playerChoiceResponse.SubHeader);
812 data << SizedString::BitsSize<9>(playerChoiceResponse.ButtonTooltip);
813 data << SizedString::BitsSize<11>(playerChoiceResponse.Description);
814 data << SizedString::BitsSize<7>(playerChoiceResponse.Confirmation);
815 data << OptionalInit(playerChoiceResponse.RewardQuestID);
816 data << OptionalInit(playerChoiceResponse.Reward);
817 data << OptionalInit(playerChoiceResponse.MawPower);
818 data.FlushBits();
819
820 if (playerChoiceResponse.Reward)
821 data << *playerChoiceResponse.Reward;
822
823 data << SizedString::Data(playerChoiceResponse.Answer);
824 data << SizedString::Data(playerChoiceResponse.Header);
825 data << SizedString::Data(playerChoiceResponse.SubHeader);
826 data << SizedString::Data(playerChoiceResponse.ButtonTooltip);
827 data << SizedString::Data(playerChoiceResponse.Description);
828 data << SizedString::Data(playerChoiceResponse.Confirmation);
829
830 if (playerChoiceResponse.RewardQuestID)
831 data << uint32(*playerChoiceResponse.RewardQuestID);
832
833 if (playerChoiceResponse.MawPower)
834 data << *playerChoiceResponse.MawPower;
835
836 return data;
837}
838
840{
842 _worldPacket << Size<uint32>(Responses);
849 _worldPacket << SizedString::BitsSize<8>(Question);
850 _worldPacket << SizedString::BitsSize<8>(PendingChoiceText);
851 _worldPacket << Bits<1>(InfiniteRange);
852 _worldPacket << Bits<1>(HideWarboardHeader);
853 _worldPacket << Bits<1>(KeepOpenAfterChoice);
854 _worldPacket << Bits<1>(ShowChoicesAsList);
855 _worldPacket << Bits<1>(ForceDontShowChoicesAsList);
856 _worldPacket << Bits<1>(RequiresSelection);
858
859 for (PlayerChoiceResponse const& response : Responses)
860 _worldPacket << response;
861
864
865 return &_worldPacket;
866}
867
874
876{
878 _worldPacket << Size<uint32>(QuestLineXQuestIDs);
879 _worldPacket << Size<uint32>(QuestIDs);
880 _worldPacket << Size<uint32>(QuestLineIDs);
881
882 for (uint32 const& questLineQuestID : QuestLineXQuestIDs)
883 _worldPacket << uint32(questLineQuestID);
884
885 for (uint32 const& questID : QuestIDs)
886 _worldPacket << uint32(questID);
887
888 for (uint32 const& questLineID : QuestLineIDs)
889 _worldPacket << uint32(questLineID);
890
891 return &_worldPacket;
892}
893
898
900{
901 data >> spawnTrackingRequestInfo.ObjectTypeMask;
902 data >> spawnTrackingRequestInfo.ObjectID;
903 data >> spawnTrackingRequestInfo.SpawnTrackingID;
904
905 return data;
906}
907
909{
910 uint32 requests = _worldPacket.read<uint32>();
911 if (requests > 10000)
912 OnInvalidArraySize(requests, 10000);
913
914 SpawnTrackingRequests.resize(requests);
915 for (SpawnTrackingRequestInfo& spawnTrackingRequestInfo : SpawnTrackingRequests)
916 _worldPacket >> spawnTrackingRequestInfo;
917}
918
919ByteBuffer& operator<<(ByteBuffer& data, SpawnTrackingResponseInfo const& spawnTrackingResponseInfo)
920{
921 data << uint32(spawnTrackingResponseInfo.SpawnTrackingID);
922 data << int32(spawnTrackingResponseInfo.ObjectID);
923 data << int32(spawnTrackingResponseInfo.PhaseID);
924 data << int32(spawnTrackingResponseInfo.PhaseGroupID);
925 data << int32(spawnTrackingResponseInfo.PhaseUseFlags);
926
927 data << Bits<1>(spawnTrackingResponseInfo.Visible);
928 data.FlushBits();
929
930 return data;
931}
932
934{
935 _worldPacket << Size<uint32>(SpawnTrackingResponses);
936
937 for (SpawnTrackingResponseInfo const& spawnTrackingResponseInfo : SpawnTrackingResponses)
938 _worldPacket << spawnTrackingResponseInfo;
939
940 return &_worldPacket;
941}
942
949}
uint8_t uint8
Definition Define.h:156
int64_t int64
Definition Define.h:149
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint16_t uint16
Definition Define.h:155
uint32_t uint32
Definition Define.h:154
#define QUEST_REWARD_ITEM_COUNT
Definition QuestDef.h:50
#define QUEST_REWARD_REPUTATIONS_COUNT
Definition QuestDef.h:52
#define QUEST_REWARD_CURRENCY_COUNT
Definition QuestDef.h:54
#define QUEST_REWARD_CHOICES_COUNT
Definition QuestDef.h:49
QuestFlags
Definition QuestDef.h:216
void append(T value)
Definition ByteBuffer.h:130
void ResetBitPos()
Definition ByteBuffer.h:152
void FlushBits()
Definition ByteBuffer.h:141
WorldPacket _worldPacket
Definition Packet.h:43
WorldPacket const * Write() override
std::vector< PlayerChoiceResponse > Responses
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< ConditionalQuestText > ConditionalRewardText
WorldPackets::Item::ItemInstance ItemReward
std::vector< ConditionalQuestText > ConditionalDescriptionText
std::vector< QuestDescEmote > DescEmotes
std::vector< QuestObjectiveSimple > Objectives
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< NPC::ClientGossipText > QuestDataText
std::vector< QuestCurrency > Currency
std::vector< ConditionalQuestText > ConditionalCompletionText
WorldPacket const * Write() override
std::vector< QuestObjectiveCollect > Collect
std::vector< QuestGiverInfo > QuestGiver
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< SpawnTrackingResponseInfo > SpawnTrackingResponses
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< SpawnTrackingRequestInfo > SpawnTrackingRequests
std::vector< WorldQuestUpdateInfo > WorldQuestUpdates
ByteBuffer & operator>>(ByteBuffer &data, QuestChoiceItem &questChoiceItem)
ByteBuffer & operator<<(ByteBuffer &data, QuestCompleteDisplaySpell const &questDisplaySpell)
DataWriter< Container > Data(Container const &value)
void OnInvalidArraySize(std::size_t requestedSize, std::size_t sizeLimit)
OptionalInitWriter< T > OptionalInit(Optional< T > const &value)
std::vector< PlayerChoiceResponseRewardEntry > Factions
std::vector< PlayerChoiceResponseRewardEntry > ItemChoices
std::vector< PlayerChoiceResponseRewardEntry > Currencies
std::vector< PlayerChoiceResponseRewardEntry > Items
Optional< PlayerChoiceResponseReward > Reward
Optional< PlayerChoiceResponseMawPower > MawPower
Optional< QuestRewardContextFlags > ContextFlags
std::vector< QuestDescEmote > Emotes
std::vector< QuestCompleteDisplaySpell > RewardDisplaySpell
std::span< int32 const > NonDisplayableTreasurePickerIDs
std::span< int32 const > TreasurePickerID
std::span< int32 const > RewardHouseRoomIDs
int32 RewardAmount[QUEST_REWARD_ITEM_COUNT]
int32 ItemDrop[QUEST_ITEM_DROP_COUNT]
Trinity::RaceMask< std::array< int32, 2 > > AllowableRaces
std::span< int32 const > RewardHouseDecorIDs
int32 RewardFactionOverride[QUEST_REWARD_REPUTATIONS_COUNT]
int32 RewardItems[QUEST_REWARD_ITEM_COUNT]
int32 RewardFactionCapIn[QUEST_REWARD_REPUTATIONS_COUNT]
QuestInfoChoiceItem UnfilteredChoiceItems[QUEST_REWARD_CHOICES_COUNT]
std::vector< ConditionalQuestText > ConditionalQuestDescription
std::vector< ConditionalQuestText > ConditionalQuestCompletionLog
std::vector< QuestInfoObjective > Objectives
int32 RewardFactionID[QUEST_REWARD_REPUTATIONS_COUNT]
int32 RewardCurrencyID[QUEST_REWARD_CURRENCY_COUNT]
int32 ItemDropQuantity[QUEST_ITEM_DROP_COUNT]
int32 RewardCurrencyQty[QUEST_REWARD_CURRENCY_COUNT]
int32 RewardFactionValue[QUEST_REWARD_REPUTATIONS_COUNT]
Optional< QuestRewardContextFlags > ContextFlags
Optional< QuestRewardContextFlags > ContextFlags
std::array< int32, QUEST_REWARD_REPUTATIONS_COUNT > FactionOverride
std::array< QuestChoiceItem, QUEST_REWARD_CHOICES_COUNT > ChoiceItems
std::array< int32, QUEST_REWARD_DISPLAY_SPELL_COUNT > SpellCompletionDisplayID
std::array< QuestRewardItem, QUEST_REWARD_ITEM_COUNT > Items
std::array< int32, QUEST_REWARD_REPUTATIONS_COUNT > FactionValue
std::array< int32, QUEST_REWARD_REPUTATIONS_COUNT > FactionCapIn
std::array< int32, QUEST_REWARD_REPUTATIONS_COUNT > FactionID
std::array< QuestRewardCurrency, QUEST_REWARD_CURRENCY_COUNT > Currencies
std::span< int32 const > TreasurePickerID