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
24
26{
27 _worldPacket << QuestGiver.Guid;
28 _worldPacket << uint8(QuestGiver.Status);
29
30 return &_worldPacket;
31}
32
34{
35 _worldPacket << uint32(QuestGiver.size());
36 for (QuestGiverInfo const& questGiver : QuestGiver)
37 {
38 _worldPacket << questGiver.Guid;
39 _worldPacket << uint8(questGiver.Status);
40 }
41
42 return &_worldPacket;
43}
44
46{
47 _worldPacket >> QuestID;
48}
49
51{
52 _worldPacket << uint32(Info.QuestID);
53 _worldPacket << uint32(Info.QuestType);
54 _worldPacket << uint32(Info.QuestLevel);
55 _worldPacket << uint32(Info.QuestMinLevel);
56 _worldPacket << uint32(Info.QuestSortID);
57
58 _worldPacket << uint32(Info.QuestInfoID);
59 _worldPacket << uint32(Info.SuggestedGroupNum);
60
61 for (uint8 i = 0; i < PVP_TEAMS_COUNT; ++i)
62 {
63 _worldPacket << uint32(Info.RequiredFactionId[i]);
64 _worldPacket << uint32(Info.RequiredFactionValue[i]);
65 }
66
67 _worldPacket << uint32(Info.RewardNextQuest);
68 _worldPacket << uint32(Info.RewardXPDifficulty);
69
70 _worldPacket << uint32(Info.RewardMoney);
71 _worldPacket << uint32(Info.RewardBonusMoney);
72 _worldPacket << uint32(Info.RewardDisplaySpell);
73 _worldPacket << int32(Info.RewardSpell);
74
75 _worldPacket << uint32(Info.RewardHonor);
76 _worldPacket << float(Info.RewardKillHonor);
77 _worldPacket << uint32(Info.StartItem);
78 _worldPacket << uint32(Info.Flags);
79 _worldPacket << uint32(Info.RewardTitle);
80 _worldPacket << uint32(Info.RequiredPlayerKills);
81 _worldPacket << uint32(Info.RewardTalents);
82 _worldPacket << uint32(Info.RewardArenaPoints);
83 _worldPacket << uint32(Info.RewardFactionFlags);
84
85 for (uint8 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i)
86 {
87 _worldPacket << uint32(Info.RewardItems[i]);
88 _worldPacket << uint32(Info.RewardAmount[i]);
89 }
90 for (uint8 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i)
91 {
92 _worldPacket << uint32(Info.UnfilteredChoiceItems[i].ItemID);
93 _worldPacket << uint32(Info.UnfilteredChoiceItems[i].Quantity);
94 }
95
97 _worldPacket << uint32(Info.RewardFactionID[i]);
98
100 _worldPacket << int32(Info.RewardFactionValue[i]);
101
103 _worldPacket << int32(Info.RewardFactionOverride[i]);
104
105 _worldPacket << uint32(Info.POIContinent);
106 _worldPacket << float(Info.POIx);
107 _worldPacket << float(Info.POIy);
108 _worldPacket << uint32(Info.POIPriority);
109
110 _worldPacket << Info.LogTitle;
111 _worldPacket << Info.LogDescription;
112 _worldPacket << Info.QuestDescription;
113 _worldPacket << Info.AreaDescription;
114 _worldPacket << Info.QuestCompletionLog;
115
116 for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i)
117 {
118 if (Info.RequiredNpcOrGo[i] < 0)
119 _worldPacket << uint32(-Info.RequiredNpcOrGo[i] | 0x80000000); // client expects gameobject template id in form (id|0x80000000)
120 else
121 _worldPacket << uint32(Info.RequiredNpcOrGo[i]);
122
123 _worldPacket << uint32(Info.RequiredNpcOrGoCount[i]);
124
125 _worldPacket << uint32(Info.ItemDrop[i]);
126 _worldPacket << uint32(Info.ItemDropQuantity[i]);
127 }
128
129 for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i)
130 {
131 _worldPacket << uint32(Info.RequiredItemId[i]);
132 _worldPacket << uint32(Info.RequiredItemCount[i]);
133 }
134
135 for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i)
136 _worldPacket << Info.ObjectiveText[i];
137
138 return &_worldPacket;
139}
140
142{
143 _worldPacket << QuestGiverGUID;
144 _worldPacket << InformUnit;
145 _worldPacket << uint32(QuestID);
146 _worldPacket << QuestTitle;
147 _worldPacket << DescriptionText;
148 _worldPacket << LogDescription;
149 _worldPacket << uint8(AutoLaunched);
150 _worldPacket << uint32(Flags);
151 _worldPacket << uint32(SuggestedGroupNum);
152 _worldPacket << uint8(StartCheat);
153
154 _worldPacket << uint32(Rewards.UnfilteredChoiceItems.size());
155 for (WorldPackets::Quest::QuestChoiceItem const& item : Rewards.UnfilteredChoiceItems)
156 {
157 _worldPacket << uint32(item.ItemID);
158 _worldPacket << uint32(item.Quantity);
159 _worldPacket << uint32(item.DisplayID);
160 }
161
162 _worldPacket << uint32(Rewards.RewardItems.size());
163 for (WorldPackets::Quest::QuestChoiceItem const& item : Rewards.RewardItems)
164 {
165 _worldPacket << uint32(item.ItemID);
166 _worldPacket << uint32(item.Quantity);
167 _worldPacket << uint32(item.DisplayID);
168 }
169
170 _worldPacket << uint32(Rewards.RewardMoney);
171 _worldPacket << uint32(Rewards.RewardXPDifficulty);
172 _worldPacket << uint32(Rewards.RewardHonor);
173 _worldPacket << float(Rewards.RewardKillHonor);
174 _worldPacket << uint32(Rewards.RewardDisplaySpell);
175 _worldPacket << int32(Rewards.RewardSpell);
176 _worldPacket << uint32(Rewards.RewardTitleId);
177 _worldPacket << uint32(Rewards.RewardTalents);
178 _worldPacket << uint32(Rewards.RewardArenaPoints);
179 _worldPacket << uint32(Rewards.RewardFactionFlags);
180
181 for (uint32 factionId : Rewards.RewardFactionID)
182 _worldPacket << uint32(factionId);
183
184 for (int32 value : Rewards.RewardFactionValue)
185 _worldPacket << int32(value);
186
187 for (int32 valueOverride : Rewards.RewardFactionOverride)
188 _worldPacket << int32(valueOverride);
189
190 _worldPacket << int32(DescEmotes.size());
191 for (QuestDescEmote const& emote : DescEmotes)
192 {
193 _worldPacket << uint32(emote.Type);
194 _worldPacket << uint32(emote.Delay);
195 }
196
197 return &_worldPacket;
198}
199
201{
202 _worldPacket << QuestGiverGUID;
203 _worldPacket << int32(QuestID);
204 _worldPacket << QuestTitle;
205 _worldPacket << CompletionText;
206 _worldPacket << int32(CompEmoteDelay);
207 _worldPacket << int32(CompEmoteType);
208 _worldPacket << int32(AutoLaunched ? 1 : 0);
209 _worldPacket << uint32(QuestFlags);
210 _worldPacket << int32(SuggestPartyMembers);
211 _worldPacket << int32(MoneyToGet);
212 _worldPacket << uint32(Collect.size());
213
214 for (QuestObjectiveCollect const& obj : Collect)
215 {
216 _worldPacket << int32(obj.ObjectID);
217 _worldPacket << int32(obj.Amount);
218 _worldPacket << uint32(obj.DisplayID);
219 }
220
221 _worldPacket << uint32(Explored);
222 _worldPacket << uint32(HasItems);
223 _worldPacket << uint32(HasFaction);
224 _worldPacket << uint32(HasMoney);
225
226 return &_worldPacket;
227}
228
230{
231 _worldPacket >> QuestGiverGUID;
232 _worldPacket >> QuestID;
233}
234
236{
237 _worldPacket >> QuestGiverGUID;
238 _worldPacket >> QuestID;
239 _worldPacket >> RespondToGiver;
240}
241
243{
244 _worldPacket << QuestGiverGUID;
245 _worldPacket << uint32(QuestID);
246
247 _worldPacket << QuestTitle;
248 _worldPacket << RewardText;
249
250 _worldPacket << uint8(AutoLaunched);
251 _worldPacket << uint32(Flags);
252 _worldPacket << uint32(SuggestedGroupNum);
253
254 _worldPacket << uint32(Emotes.size());
256 {
257 _worldPacket << uint32(emote.Delay);
258 _worldPacket << uint32(emote.Type);
259 }
260
261 _worldPacket << uint32(Rewards.UnfilteredChoiceItems.size());
262 for (WorldPackets::Quest::QuestChoiceItem const& item : Rewards.UnfilteredChoiceItems)
263 {
264 _worldPacket << uint32(item.ItemID);
265 _worldPacket << uint32(item.Quantity);
266 _worldPacket << uint32(item.DisplayID);
267 }
268
269 _worldPacket << uint32(Rewards.RewardItems.size());
270 for (WorldPackets::Quest::QuestChoiceItem const& item : Rewards.RewardItems)
271 {
272 _worldPacket << uint32(item.ItemID);
273 _worldPacket << uint32(item.Quantity);
274 _worldPacket << uint32(item.DisplayID);
275 }
276
277 _worldPacket << uint32(Rewards.RewardMoney);
278 _worldPacket << uint32(Rewards.RewardXPDifficulty);
279
280 _worldPacket << uint32(Rewards.RewardHonor);
281 _worldPacket << float(Rewards.RewardKillHonor);
282 _worldPacket << uint32(0); // Unknown value. Read in the packet handler but unused
283 _worldPacket << uint32(Rewards.RewardDisplaySpell);
284 _worldPacket << int32(Rewards.RewardSpell);
285 _worldPacket << uint32(Rewards.RewardTitleId);
286 _worldPacket << uint32(Rewards.RewardTalents);
287 _worldPacket << uint32(Rewards.RewardArenaPoints);
288 _worldPacket << uint32(Rewards.RewardFactionFlags);
289
290 for (uint32 factionId : Rewards.RewardFactionID)
291 _worldPacket << uint32(factionId);
292
293 for (uint32 value : Rewards.RewardFactionValue)
294 _worldPacket << int32(value);
295
296 for (uint32 valueOverride : Rewards.RewardFactionOverride)
297 _worldPacket << int32(valueOverride);
298
299 return &_worldPacket;
300}
301
303{
304 _worldPacket.reserve(sizeof(uint32) + QuestsCompleted->size() * sizeof(uint32));
305
306 _worldPacket << uint32(QuestsCompleted->size());
307 for (uint32 questId : *QuestsCompleted)
308 _worldPacket << uint32(questId);
309
310 return &_worldPacket;
311}
uint8_t uint8
Definition Define.h:135
int32_t int32
Definition Define.h:129
uint32_t uint32
Definition Define.h:133
#define QUEST_REWARD_ITEM_COUNT
Definition QuestDef.h:42
#define QUEST_ITEM_OBJECTIVES_COUNT
Definition QuestDef.h:39
#define QUEST_REWARD_REPUTATIONS_COUNT
Definition QuestDef.h:43
#define QUEST_OBJECTIVES_COUNT
Definition QuestDef.h:38
QuestFlags
Definition QuestDef.h:129
#define QUEST_REWARD_CHOICES_COUNT
Definition QuestDef.h:41
uint8 constexpr PVP_TEAMS_COUNT
void reserve(size_t ressize)
Definition ByteBuffer.h:423
WorldPacket _worldPacket
Definition Packet.h:42
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override