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 << gossipOption.Treasure;
50 data << int32(gossipOption.Flags);
51 data << int32(gossipOption.OrderIndex);
52 data << SizedString::BitsSize<12>(gossipOption.Text);
53 data << SizedString::BitsSize<12>(gossipOption.Confirm);
54 data << Bits<2>(gossipOption.Status);
55 data << OptionalInit(gossipOption.SpellID);
56 data << OptionalInit(gossipOption.OverrideIconID);
57 data << SizedCString::BitsSize<8>(gossipOption.FailureDescription);
58 data.FlushBits();
59
60 data << SizedString::Data(gossipOption.Text);
61 data << SizedString::Data(gossipOption.Confirm);
62
63 if (gossipOption.SpellID)
64 data << int32(*gossipOption.SpellID);
65
66 if (gossipOption.OverrideIconID)
67 data << int32(*gossipOption.OverrideIconID);
68
69 data << SizedCString::Data(gossipOption.FailureDescription);
70
71 return data;
72}
73
75{
76 data << int32(gossipText.QuestID);
77 data << int32(gossipText.ContentTuningID);
78 data << int32(gossipText.QuestType);
79 data << int32(gossipText.QuestInfoID);
80 data.append(gossipText.QuestFlags);
81
82 data << Bits<1>(gossipText.Repeatable);
83 data << Bits<1>(gossipText.ResetByScheduler);
84 data << Bits<1>(gossipText.Important);
85 data << Bits<1>(gossipText.Meta);
86 data << SizedString::BitsSize<9>(gossipText.QuestTitle);
87 data.FlushBits();
88
89 data << SizedString::Data(gossipText.QuestTitle);
90
91 return data;
92}
93
95{
97}
98
100{
101 _worldPacket << Npc;
103 _worldPacket << Bits<1>(Success);
105
106 return &_worldPacket;
107}
108
110{
115 _worldPacket << Size<uint32>(GossipOptions);
116 _worldPacket << Size<uint32>(GossipText);
117
118 for (ClientGossipOptions const& options : GossipOptions)
119 _worldPacket << options;
120
121 for (ClientGossipText const& text : GossipText)
122 _worldPacket << text;
123
127
128 if (RandomTextID)
130
131 if (BroadcastTextID)
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 << item.Item;
147 data << Bits<1>(item.Locked);
148 data << Bits<1>(item.DoNotFilterOnVendor);
149 data << Bits<1>(item.Refundable);
150 data.FlushBits();
151
152 return data;
153}
154
156{
159 _worldPacket << Size<uint32>(Items);
160 for (VendorItem const& item : Items)
161 _worldPacket << item;
162
163 return &_worldPacket;
164}
165
167{
171
172 _worldPacket << Size<uint32>(Spells);
173 for (TrainerListSpell const& spell : Spells)
174 {
175 _worldPacket << int32(spell.SpellID);
176 _worldPacket << uint32(spell.MoneyCost);
177 _worldPacket << uint32(spell.ReqSkillLine);
178 _worldPacket << uint32(spell.ReqSkillRank);
179 _worldPacket.append(spell.ReqAbility.data(), spell.ReqAbility.size());
180 _worldPacket << uint8(spell.Usable);
181 _worldPacket << uint8(spell.ReqLevel);
182 }
183
184 _worldPacket << SizedString::BitsSize<11>(Greeting);
186
188
189 return &_worldPacket;
190}
191
200
213
215{
216 _worldPacket << Bits<1>(SuppressSound);
218
219 return &_worldPacket;
220}
221
223{
226 _worldPacket << Pos;
230 _worldPacket << SizedString::BitsSize<6>(Name);
232
234
235 return &_worldPacket;
236}
237
242
248
255
264
269
276}
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:131
void FlushBits()
Definition ByteBuffer.h:142
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