TrinityCore
Loading...
Searching...
No Matches
NPCPackets.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 "NPCPackets.h"
19#include "PacketOperators.h"
20
22{
23ByteBuffer& operator<<(ByteBuffer& data, TreasureItem const& treasureItem)
24{
25 data << Bits<1>(treasureItem.Type);
26 data << int32(treasureItem.ID);
27 data << int32(treasureItem.Quantity);
28 data << int8(treasureItem.ItemContext);
29
30 return data;
31}
32
33ByteBuffer& operator<<(ByteBuffer& data, TreasureLootList const& treasureLootList)
34{
35 data << Size<uint32>(treasureLootList.Items);
36 for (TreasureItem const& treasureItem : treasureLootList.Items)
37 data << treasureItem;
38
39 return data;
40}
41
43{
44 data << int32(gossipOption.GossipOptionID);
45 data << uint32(gossipOption.OptionNPC);
46 data << int8(gossipOption.OptionFlags);
47 data << uint64(gossipOption.OptionCost);
48 data << uint32(gossipOption.OptionLanguage);
49 data << int32(gossipOption.Flags);
50 data << int32(gossipOption.OrderIndex);
51 data << SizedString::BitsSize<12>(gossipOption.Text);
52 data << SizedString::BitsSize<12>(gossipOption.Confirm);
53 data << Bits<2>(gossipOption.Status);
54 data << OptionalInit(gossipOption.SpellID);
55 data << OptionalInit(gossipOption.OverrideIconID);
56 data << SizedCString::BitsSize<8>(gossipOption.FailureDescription);
57 data.FlushBits();
58
59 data << gossipOption.Treasure;
60
61 data << SizedString::Data(gossipOption.Text);
62 data << SizedString::Data(gossipOption.Confirm);
63
64 if (gossipOption.SpellID)
65 data << int32(*gossipOption.SpellID);
66
67 if (gossipOption.OverrideIconID)
68 data << int32(*gossipOption.OverrideIconID);
69
70 data << SizedCString::Data(gossipOption.FailureDescription);
71
72 return data;
73}
74
76{
77 data << int32(gossipText.QuestID);
78 data << int32(gossipText.ContentTuningID);
79 data << int32(gossipText.QuestType);
80 data << int32(gossipText.Unused1102);
81 data.append(gossipText.QuestFlags);
82
83 data << Bits<1>(gossipText.Repeatable);
84 data << Bits<1>(gossipText.ResetByScheduler);
85 data << Bits<1>(gossipText.Important);
86 data << Bits<1>(gossipText.Meta);
87 data << SizedString::BitsSize<9>(gossipText.QuestTitle);
88 data.FlushBits();
89
90 data << SizedString::Data(gossipText.QuestTitle);
91
92 return data;
93}
94
96{
98}
99
101{
102 _worldPacket << Npc;
104 _worldPacket << Bits<1>(Success);
106
107 return &_worldPacket;
108}
109
111{
116 _worldPacket << Size<uint32>(GossipOptions);
117 _worldPacket << Size<uint32>(GossipText);
121
122 for (ClientGossipOptions const& options : GossipOptions)
123 _worldPacket << options;
124
125 if (RandomTextID)
127
128 if (BroadcastTextID)
130
131 for (ClientGossipText const& text : GossipText)
132 _worldPacket << text;
133
134 return &_worldPacket;
135}
136
138{
139 data << uint64(item.Price);
140 data << uint32(item.MuID);
141 data << int32(item.Type);
142 data << int32(item.StackCount);
143 data << int32(item.Quantity);
144 data << int32(item.ExtendedCostID);
145 data << int32(item.PlayerConditionFailed);
146 data << Bits<1>(item.Locked);
147 data << Bits<1>(item.DoNotFilterOnVendor);
148 data << Bits<1>(item.Refundable);
149 data.FlushBits();
150
151 data << item.Item;
152
153 return data;
154}
155
157{
160 _worldPacket << Size<uint32>(Items);
161 for (VendorItem const& item : Items)
162 _worldPacket << item;
163
164 return &_worldPacket;
165}
166
168{
172
173 _worldPacket << Size<uint32>(Spells);
174 for (TrainerListSpell const& spell : Spells)
175 {
176 _worldPacket << int32(spell.SpellID);
177 _worldPacket << uint32(spell.MoneyCost);
178 _worldPacket << uint32(spell.ReqSkillLine);
179 _worldPacket << uint32(spell.ReqSkillRank);
180 _worldPacket.append(spell.ReqAbility.data(), spell.ReqAbility.size());
181 _worldPacket << uint8(spell.Usable);
182 _worldPacket << uint8(spell.ReqLevel);
183 }
184
185 _worldPacket << SizedString::BitsSize<11>(Greeting);
187
189
190 return &_worldPacket;
191}
192
201
214
216{
217 _worldPacket << Bits<1>(SuppressSound);
219
220 return &_worldPacket;
221}
222
224{
227 _worldPacket << Pos;
231 _worldPacket << SizedString::BitsSize<6>(Name);
233
235
236 return &_worldPacket;
237}
238
243
249
256
265
270
277}
uint8_t uint8
Definition Define.h:156
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint32_t uint32
Definition Define.h:154
Spells
Definition PlayerAI.cpp:32
TrainerType
void append(T value)
Definition ByteBuffer.h:130
void FlushBits()
Definition ByteBuffer.h:141
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< ClientGossipOptions > GossipOptions
Definition NPCPackets.h:119
Optional< int32 > BroadcastTextID
Definition NPCPackets.h:124
std::vector< ClientGossipText > GossipText
Definition NPCPackets.h:122
WorldPacket const * Write() override
WorldPacket const * Write() override
TaggedPosition< Position::XYZ > Pos
Definition NPCPackets.h:225
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< TrainerListSpell > Spells
Definition NPCPackets.h:212
WorldPacket const * Write() override
std::vector< VendorItem > Items
Definition NPCPackets.h:187
WorldPacket _worldPacket
Definition Packet.h:43
ByteBuffer & operator<<(ByteBuffer &data, TreasureItem const &treasureItem)
DataWriter< Container > Data(Container const &value)
DataWriter< Container > Data(Container const &value)
OptionalInitWriter< T > OptionalInit(Optional< T > const &value)
std::array< int32, 4 > QuestFlags
Definition NPCPackets.h:107
GossipOptionRewardType Type
Definition NPCPackets.h:67
std::vector< TreasureItem > Items
Definition NPCPackets.h:75
WorldPackets::Item::ItemInstance Item
Definition NPCPackets.h:168