TrinityCore
LootPackets.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 "LootPackets.h"
19
21{
22 data.WriteBits(lootItem.Type, 2);
23 data.WriteBits(lootItem.UIType, 3);
24 data.WriteBit(lootItem.CanTradeToTapList);
25 data.FlushBits();
26 data << lootItem.Loot; // WorldPackets::Item::ItemInstance
27 data << uint32(lootItem.Quantity);
28 data << uint8(lootItem.LootItemType);
29 data << uint8(lootItem.LootListID);
30 return data;
31}
32
34{
36}
37
39{
40 _worldPacket << Owner;
41 _worldPacket << LootObj;
42 _worldPacket << uint8(FailureReason);
43 _worldPacket << uint8(AcquireReason);
44 _worldPacket << uint8(_LootMethod);
45 _worldPacket << uint8(Threshold);
46 _worldPacket << uint32(Coins);
47 _worldPacket << uint32(Items.size());
48 _worldPacket << uint32(Currencies.size());
49 _worldPacket.WriteBit(Acquired);
50 _worldPacket.WriteBit(AELooting);
51 _worldPacket.FlushBits();
52
53 for (LootItemData const& item : Items)
54 _worldPacket << item;
55
56 for (LootCurrency const& currency : Currencies)
57 {
58 _worldPacket << uint32(currency.CurrencyID);
59 _worldPacket << uint32(currency.Quantity);
60 _worldPacket << uint8(currency.LootListID);
61 _worldPacket.WriteBits(currency.UIType, 3);
62 _worldPacket.FlushBits();
63 }
64
65 return &_worldPacket;
66}
67
69{
70 uint32 Count;
71 _worldPacket >> Count;
72
73 Loot.resize(Count);
74 for (uint32 i = 0; i < Count; ++i)
75 {
76 _worldPacket >> Loot[i].Object;
77 _worldPacket >> Loot[i].LootListID;
78 }
79
80 IsSoftInteract = _worldPacket.ReadBit();
81}
82
84{
85 uint32 Count;
86 _worldPacket >> Count;
87 _worldPacket >> Target;
88
89 Loot.resize(Count);
90 for (uint32 i = 0; i < Count; ++i)
91 {
92 _worldPacket >> Loot[i].Object;
93 _worldPacket >> Loot[i].LootListID;
94 }
95}
96
98{
99 _worldPacket << Owner;
100 _worldPacket << LootObj;
101 _worldPacket << LootListID;
102
103 return &_worldPacket;
104}
105
107{
108 _worldPacket >> Unit;
109}
110
112{
113 IsSoftInteract = _worldPacket.ReadBit();
114}
115
117{
118 _worldPacket << uint64(Money);
119 _worldPacket << uint64(MoneyMod);
120 _worldPacket.WriteBit(SoleLooter);
121 _worldPacket.FlushBits();
122
123 return &_worldPacket;
124}
125
127{
128 _worldPacket << LootObj;
129
130 return &_worldPacket;
131}
132
134{
135 _worldPacket >> LootObj;
136 _worldPacket >> LootListID;
137 _worldPacket >> RollType;
138}
139
141{
142 _worldPacket << LootObj;
143 _worldPacket << Owner;
144
145 return &_worldPacket;
146}
147
149{
150 _worldPacket << Owner;
151 _worldPacket << LootObj;
152
153 _worldPacket.WriteBit(Master.has_value());
154 _worldPacket.WriteBit(RoundRobinWinner.has_value());
155
156 _worldPacket.FlushBits();
157
158 if (Master)
159 _worldPacket << *Master;
160
161 if (RoundRobinWinner)
162 _worldPacket << *RoundRobinWinner;
163
164 return &_worldPacket;
165}
166
168{
169 _worldPacket >> SpecID;
170}
171
173{
174 _worldPacket << LootObj;
175 _worldPacket << int32(MapID);
176 _worldPacket << RollTime;
177 _worldPacket << uint8(ValidRolls);
178 _worldPacket.append(LootRollIneligibleReason.data(), LootRollIneligibleReason.size());
179 _worldPacket << uint8(Method);
180 _worldPacket << int32(DungeonEncounterID);
181 _worldPacket << Item;
182
183 return &_worldPacket;
184}
185
187{
188 _worldPacket << LootObj;
189 _worldPacket << Player;
190 _worldPacket << int32(Roll);
191 _worldPacket << uint8(RollType);
192 _worldPacket << int32(DungeonEncounterID);
193 _worldPacket << Item;
194 _worldPacket.WriteBit(Autopassed);
195 _worldPacket.WriteBit(OffSpec);
196 _worldPacket.FlushBits();
197
198 return &_worldPacket;
199}
200
202{
203 _worldPacket << LootObj;
204 _worldPacket << Winner;
205 _worldPacket << int32(Roll);
206 _worldPacket << uint8(RollType);
207 _worldPacket << int32(DungeonEncounterID);
208 _worldPacket << Item;
209 _worldPacket.WriteBit(MainSpec);
210 _worldPacket.FlushBits();
211
212 return &_worldPacket;
213}
214
216{
217 _worldPacket << LootObj;
218 _worldPacket << int32(DungeonEncounterID);
219 _worldPacket << Item;
220
221 return &_worldPacket;
222}
223
225{
226 _worldPacket << LootObj;
227 _worldPacket << uint8(LootListID);
228 _worldPacket << int32(DungeonEncounterID);
229
230 return &_worldPacket;
231}
232
234{
235 _worldPacket << LootObj;
236 _worldPacket << uint32(Players.size());
237 for (ObjectGuid const& player : Players)
238 _worldPacket << player;
239
240 return &_worldPacket;
241}
242
244{
245 _worldPacket << uint32(Count);
246
247 return &_worldPacket;
248}
uint8_t uint8
Definition: Define.h:144
int32_t int32
Definition: Define.h:138
uint64_t uint64
Definition: Define.h:141
uint32_t uint32
Definition: Define.h:142
ByteBuffer & operator<<(ByteBuffer &data, WorldPackets::Loot::LootItemData const &lootItem)
Definition: LootPackets.cpp:20
RollType
Definition: Loot.h:54
std::vector< TraitCurrencyEntry const * > Currencies
Definition: TraitMgr.cpp:64
bool WriteBit(bool bit)
Definition: ByteBuffer.h:175
void WriteBits(std::size_t value, int32 bits)
Definition: ByteBuffer.h:203
void FlushBits()
Definition: ByteBuffer.h:155
Definition: Item.h:170
Definition: Unit.h:627
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
Definition: LootPackets.cpp:97
WorldPacket const * Write() override
Definition: LootPackets.cpp:38
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket _worldPacket
Definition: Packet.h:43
Definition: Loot.h:281
WorldPackets::Item::ItemInstance Loot
Definition: LootPackets.h:49