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 for (QuestInfoObjective const& questObjective : Info.Objectives)
189 {
190 _worldPacket << uint32(questObjective.ID);
191 _worldPacket << int32(questObjective.Type);
192 _worldPacket << int8(questObjective.StorageIndex);
193 _worldPacket << int32(questObjective.ObjectID);
194 _worldPacket << int32(questObjective.Amount);
195 _worldPacket << int32(questObjective.ConditionalAmount); // only objective type 22
196 _worldPacket << uint32(questObjective.Flags);
197 _worldPacket << uint32(questObjective.Flags2);
198 _worldPacket << float(questObjective.ProgressBarWeight);
199
200 _worldPacket << Size<int32>(questObjective.VisualEffects);
201 _worldPacket << int32(questObjective.ParentObjectiveID); // related to new UF flags
202
203 for (int32 visualEffect : questObjective.VisualEffects)
204 _worldPacket << int32(visualEffect);
205
206 _worldPacket << SizedString::BitsSize<8>(questObjective.Description);
207 _worldPacket << Bits<1>(questObjective.Visible);
209
210 _worldPacket << SizedString::Data(questObjective.Description);
211 }
212
213 if (!Info.TreasurePickerID.empty())
215
218
219 for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestDescription)
220 _worldPacket << conditionalQuestText;
221
222 for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestCompletionLog)
223 _worldPacket << conditionalQuestText;
224
225 if (!Info.RewardHouseRoomIDs.empty())
227
228 if (!Info.RewardHouseDecorIDs.empty())
230
231 _worldPacket << SizedString::BitsSize<9>(Info.LogTitle);
232 _worldPacket << SizedString::BitsSize<12>(Info.LogDescription);
233 _worldPacket << SizedString::BitsSize<12>(Info.QuestDescription);
234 _worldPacket << SizedString::BitsSize<9>(Info.AreaDescription);
235 _worldPacket << SizedString::BitsSize<10>(Info.PortraitGiverText);
236 _worldPacket << SizedString::BitsSize<8>(Info.PortraitGiverName);
237 _worldPacket << SizedString::BitsSize<10>(Info.PortraitTurnInText);
238 _worldPacket << SizedString::BitsSize<8>(Info.PortraitTurnInName);
239 _worldPacket << SizedString::BitsSize<11>(Info.QuestCompletionLog);
240 _worldPacket << Bits<1>(Info.ResetByScheduler);
241 _worldPacket << Bits<1>(Info.ReadyForTranslation);
243
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 for (QuestRewardCurrency const& currency : questRewards.Currencies)
343 data << currency;
344
345 data << int32(questRewards.ChoiceItemCount);
346 for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems)
347 data << choiceItem;
348
349 data << int32(questRewards.ItemCount);
350 data << int32(questRewards.Money);
351 data << int32(questRewards.XP);
352 data << int64(questRewards.ArtifactXP);
353 data << int32(questRewards.ArtifactCategoryID);
354 data << int32(questRewards.Honor);
355 data << int32(questRewards.Title);
356 data << int32(questRewards.FactionFlags);
357
358 for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i)
359 {
360 data << int32(questRewards.FactionID[i]);
361 data << int32(questRewards.FactionValue[i]);
362 data << int32(questRewards.FactionOverride[i]);
363 data << int32(questRewards.FactionCapIn[i]);
364 }
365
366 data.append(questRewards.SpellCompletionDisplayID.data(), questRewards.SpellCompletionDisplayID.size());
367
368 data << int32(questRewards.SpellCompletionID);
369
370 data << int32(questRewards.SkillLineID);
371 data << int32(questRewards.NumSkillUps);
372 data << Size<uint32>(questRewards.TreasurePickerID);
373 if (!questRewards.TreasurePickerID.empty())
374 data.append(questRewards.TreasurePickerID.data(), questRewards.TreasurePickerID.size());
375
376 data << Bits<1>(questRewards.IsBoostSpell);
377 data.FlushBits();
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 for (ConditionalQuestText const& conditionalQuestText : ConditionalRewardText)
418 _worldPacket << conditionalQuestText;
419
420 _worldPacket << SizedString::BitsSize<9>(QuestTitle);
421 _worldPacket << SizedString::BitsSize<12>(RewardText);
422 _worldPacket << SizedString::BitsSize<10>(PortraitGiverText);
423 _worldPacket << SizedString::BitsSize<8>(PortraitGiverName);
424 _worldPacket << SizedString::BitsSize<10>(PortraitTurnInText);
425 _worldPacket << SizedString::BitsSize<8>(PortraitTurnInName);
427
434
435 return &_worldPacket;
436}
437
444
446{
453 _worldPacket << Bits<1>(UseQuestReward);
454 _worldPacket << Bits<1>(LaunchGossip);
455 _worldPacket << Bits<1>(LaunchQuest);
456 _worldPacket << Bits<1>(HideChatMessage);
457
458 return &_worldPacket;
459}
460
467
472
474{
485 _worldPacket << Size<uint32>(LearnSpells);
486 _worldPacket << Rewards; // QuestRewards
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 for (ConditionalQuestText const& conditionalQuestText : ConditionalDescriptionText)
513 _worldPacket << conditionalQuestText;
514
515 _worldPacket << SizedString::BitsSize<9>(QuestTitle);
516 _worldPacket << SizedString::BitsSize<12>(DescriptionText);
517 _worldPacket << SizedString::BitsSize<12>(LogDescription);
518 _worldPacket << SizedString::BitsSize<10>(PortraitGiverText);
519 _worldPacket << SizedString::BitsSize<8>(PortraitGiverName);
520 _worldPacket << SizedString::BitsSize<10>(PortraitTurnInText);
521 _worldPacket << SizedString::BitsSize<8>(PortraitTurnInName);
522 _worldPacket << Bits<1>(AutoLaunched);
523 _worldPacket << Bits<1>(FromContentPush);
524 _worldPacket << Bits<1>(ReplayQuest);
525 _worldPacket << Bits<1>(ResetByScheduler);
526 _worldPacket << Bits<1>(StartCheat);
527 _worldPacket << Bits<1>(DisplayPopup);
529
537
538 return &_worldPacket;
539}
540
542{
543 _worldPacket << Size<int32>(Collect);
544 _worldPacket << Size<int32>(Currency);
555
556 for (QuestObjectiveCollect const& obj : Collect)
557 {
558 _worldPacket << int32(obj.ObjectID);
559 _worldPacket << int32(obj.Amount);
560 _worldPacket << uint32(obj.Flags);
561 }
562
563 for (QuestCurrency const& cur : Currency)
564 {
565 _worldPacket << int32(cur.CurrencyID);
566 _worldPacket << int32(cur.Amount);
567 }
568
569 _worldPacket << Bits<1>(AutoLaunched);
570 _worldPacket << Bits<1>(ResetByScheduler);
572
574 _worldPacket << Size<uint32>(ConditionalCompletionText);
575
576 for (ConditionalQuestText const& conditionalQuestText : ConditionalCompletionText)
577 _worldPacket << conditionalQuestText;
578
579 _worldPacket << SizedString::BitsSize<9>(QuestTitle);
580 _worldPacket << SizedString::BitsSize<12>(CompletionText);
582
585
586 return &_worldPacket;
587}
588
594
601
608
613
615{
619 _worldPacket << Size<uint32>(QuestDataText);
620
621 for (NPC::ClientGossipText const& gossip : QuestDataText)
622 _worldPacket << gossip;
623
624 _worldPacket << SizedString::BitsSize<11>(Greeting);
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 data << SizedString::Data(playerChoiceResponse.Answer);
821 data << SizedString::Data(playerChoiceResponse.Header);
822 data << SizedString::Data(playerChoiceResponse.SubHeader);
823 data << SizedString::Data(playerChoiceResponse.ButtonTooltip);
824 data << SizedString::Data(playerChoiceResponse.Description);
825 data << SizedString::Data(playerChoiceResponse.Confirmation);
826
827 if (playerChoiceResponse.RewardQuestID)
828 data << uint32(*playerChoiceResponse.RewardQuestID);
829
830 if (playerChoiceResponse.Reward)
831 data << *playerChoiceResponse.Reward;
832
833 if (playerChoiceResponse.MawPower)
834 data << *playerChoiceResponse.MawPower;
835
836 return data;
837}
838
840{
842 _worldPacket << Size<uint32>(Responses);
849
850 for (PlayerChoiceResponse const& response : Responses)
851 _worldPacket << response;
852
853 _worldPacket << SizedString::BitsSize<8>(Question);
854 _worldPacket << SizedString::BitsSize<8>(PendingChoiceText);
855 _worldPacket << Bits<1>(InfiniteRange);
856 _worldPacket << Bits<1>(HideWarboardHeader);
857 _worldPacket << Bits<1>(KeepOpenAfterChoice);
858 _worldPacket << Bits<1>(ShowChoicesAsList);
859 _worldPacket << Bits<1>(HasPowerChoice);
860 _worldPacket << Bits<1>(RequiresSelection);
861 _worldPacket << Bits<1>(ShowChoicesAsGrid);
862 _worldPacket << Bits<1>(HideAnswerArt);
863 _worldPacket << Bits<1>(ShowChoicesAsColumns);
865
868
869 return &_worldPacket;
870}
871
878
880{
882 _worldPacket << Size<uint32>(QuestLineXQuestIDs);
883 _worldPacket << Size<uint32>(QuestIDs);
884 _worldPacket << Size<uint32>(QuestLineIDs);
885
886 for (uint32 const& questLineQuestID : QuestLineXQuestIDs)
887 _worldPacket << uint32(questLineQuestID);
888
889 for (uint32 const& questID : QuestIDs)
890 _worldPacket << uint32(questID);
891
892 for (uint32 const& questLineID : QuestLineIDs)
893 _worldPacket << uint32(questLineID);
894
895 return &_worldPacket;
896}
897
902
904{
905 data >> spawnTrackingRequestInfo.ObjectTypeMask;
906 data >> spawnTrackingRequestInfo.ObjectID;
907 data >> spawnTrackingRequestInfo.SpawnTrackingID;
908
909 return data;
910}
911
913{
914 uint32 requests = _worldPacket.read<uint32>();
915 if (requests > 10000)
916 OnInvalidArraySize(requests, 10000);
917
918 SpawnTrackingRequests.resize(requests);
919 for (SpawnTrackingRequestInfo& spawnTrackingRequestInfo : SpawnTrackingRequests)
920 _worldPacket >> spawnTrackingRequestInfo;
921}
922
923ByteBuffer& operator<<(ByteBuffer& data, SpawnTrackingResponseInfo const& spawnTrackingResponseInfo)
924{
925 data << uint32(spawnTrackingResponseInfo.SpawnTrackingID);
926 data << int32(spawnTrackingResponseInfo.ObjectID);
927 data << int32(spawnTrackingResponseInfo.PhaseID);
928 data << int32(spawnTrackingResponseInfo.PhaseGroupID);
929 data << int32(spawnTrackingResponseInfo.PhaseUseFlags);
930
931 data << Bits<1>(spawnTrackingResponseInfo.Visible);
932 data.FlushBits();
933
934 return data;
935}
936
938{
939 _worldPacket << Size<uint32>(SpawnTrackingResponses);
940
941 for (SpawnTrackingResponseInfo const& spawnTrackingResponseInfo : SpawnTrackingResponses)
942 _worldPacket << spawnTrackingResponseInfo;
943
944 return &_worldPacket;
945}
946
953}
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:47
#define QUEST_REWARD_REPUTATIONS_COUNT
Definition QuestDef.h:48
#define QUEST_REWARD_CURRENCY_COUNT
Definition QuestDef.h:50
#define QUEST_REWARD_CHOICES_COUNT
Definition QuestDef.h:46
QuestFlags
Definition QuestDef.h:212
void append(T value)
Definition ByteBuffer.h:131
void ResetBitPos()
Definition ByteBuffer.h:153
void FlushBits()
Definition ByteBuffer.h:142
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::array< T, N > RawValue
Definition RaceMask.h:95
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
Trinity::RaceMask< int32, 2 > AllowableRaces
std::span< int32 const > RewardHouseRoomIDs
int32 RewardAmount[QUEST_REWARD_ITEM_COUNT]
int32 ItemDrop[QUEST_ITEM_DROP_COUNT]
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