TrinityCore
LootPackets.h
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#ifndef LootPackets_h__
19#define LootPackets_h__
20
21#include "Packet.h"
22#include "ObjectGuid.h"
23#include "ItemPacketsCommon.h"
24
26
27namespace WorldPackets
28{
29 namespace Loot
30 {
31 class LootUnit final : public ClientPacket
32 {
33 public:
34 LootUnit(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_UNIT, std::move(packet)) { }
35
36 void Read() override;
37
39 };
40
42 {
48 bool CanTradeToTapList = false;
50 };
51
53 {
58 };
59
60 class LootResponse final : public ServerPacket
61 {
62 public:
64
65 WorldPacket const* Write() override;
66
69 uint8 Threshold = 2; // Most common value, 2 = Uncommon
72 uint8 FailureReason = 17; // Most common value
74 std::vector<LootItemData> Items;
75 std::vector<LootCurrency> Currencies;
76 bool Acquired = false;
77 bool AELooting = false;
78 };
79
81 {
84 };
85
86 // PlayerCliLootItem
87 class LootItem final : public ClientPacket
88 {
89 public:
90 LootItem(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_ITEM, std::move(packet)) { }
91
92 void Read() override;
93
95 bool IsSoftInteract = false;
96 };
97
98 class MasterLootItem final : public ClientPacket
99 {
100 public:
102
103 void Read() override;
104
107 };
108
109 class LootRemoved final : public ServerPacket
110 {
111 public:
113
114 WorldPacket const* Write() override;
115
119 };
120
121 class LootRelease final : public ClientPacket
122 {
123 public:
125
126 void Read() override;
127
129 };
130
131 class LootMoney final : public ClientPacket
132 {
133 public:
134 LootMoney(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_MONEY, std::move(packet)) { }
135
136 void Read() override;
137
138 bool IsSoftInteract = false;
139 };
140
141 class LootMoneyNotify final : public ServerPacket
142 {
143 public:
145
146 WorldPacket const* Write() override;
147
150 bool SoleLooter = false;
151 };
152
153 class CoinRemoved final : public ServerPacket
154 {
155 public:
157
158 WorldPacket const* Write() override;
159
161 };
162
163 class LootRoll final : public ClientPacket
164 {
165 public:
166 LootRoll(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_ROLL, std::move(packet)) { }
167
168 void Read() override;
169
173 };
174
176 {
177 public:
179
180 WorldPacket const* Write() override;
181
184 };
185
186 class LootReleaseAll final : public ServerPacket
187 {
188 public:
190
191 WorldPacket const* Write() override { return &_worldPacket; }
192 };
193
194 class LootList final : public ServerPacket
195 {
196 public:
198
199 WorldPacket const* Write() override;
200
205 };
206
208 {
209 public:
211
212 void Read() override;
213
215 };
216
217 class StartLootRoll final : public ServerPacket
218 {
219 public:
221
222 WorldPacket const* Write() override;
223
229 std::array<LootRollIneligibilityReason, 5> LootRollIneligibleReason = { };
232 };
233
234 class LootRollBroadcast final : public ServerPacket
235 {
236 public:
238
239 WorldPacket const* Write() override;
240
246 bool Autopassed = false;
247 bool OffSpec = false;
249 };
250
251 class LootRollWon final : public ServerPacket
252 {
253 public:
255
256 WorldPacket const* Write() override;
257
263 bool MainSpec = false;
265 };
266
267 class LootAllPassed final : public ServerPacket
268 {
269 public:
271
272 WorldPacket const* Write() override;
273
277 };
278
279 class LootRollsComplete final : public ServerPacket
280 {
281 public:
283
284 WorldPacket const* Write() override;
285
289 };
290
292 {
293 public:
295
296 WorldPacket const* Write() override;
297
300 };
301
302 class AELootTargets final : public ServerPacket
303 {
304 public:
306
307 WorldPacket const* Write() override;
308
310 };
311
312 class AELootTargetsAck final : public ServerPacket
313 {
314 public:
316
317 WorldPacket const* Write() override { return &_worldPacket; }
318 };
319 }
320}
321
322#endif // LootPackets_h__
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
LootItemType
Definition: LootItemType.h:24
LootRollIneligibilityReason
Definition: Loot.h:165
RollType
Definition: Loot.h:54
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition: ObjectGuid.h:396
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:25
WorldPacket const * Write() override
Definition: LootPackets.h:317
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
Array< LootRequest, 1000 > Loot
Definition: LootPackets.h:94
LootItem(WorldPacket &&packet)
Definition: LootPackets.h:90
Optional< ObjectGuid > Master
Definition: LootPackets.h:203
WorldPacket const * Write() override
Optional< ObjectGuid > RoundRobinWinner
Definition: LootPackets.h:204
WorldPacket const * Write() override
LootMoney(WorldPacket &&packet)
Definition: LootPackets.h:134
WorldPacket const * Write() override
Definition: LootPackets.h:191
WorldPacket const * Write() override
LootRelease(WorldPacket &&packet)
Definition: LootPackets.h:124
WorldPacket const * Write() override
Definition: LootPackets.cpp:97
std::vector< LootItemData > Items
Definition: LootPackets.h:74
WorldPacket const * Write() override
Definition: LootPackets.cpp:38
std::vector< LootCurrency > Currencies
Definition: LootPackets.h:75
WorldPacket const * Write() override
int32 Roll
Roll value can be negative, it means that it is an "offspec" roll but only during roll selection broa...
Definition: LootPackets.h:243
bool Autopassed
Triggers message |HlootHistory:d|h[Loot]|h: You automatically passed on: s because you cannot loot th...
Definition: LootPackets.h:246
WorldPacket const * Write() override
LootRoll(WorldPacket &&packet)
Definition: LootPackets.h:166
WorldPacket const * Write() override
LootUnit(WorldPacket &&packet)
Definition: LootPackets.h:34
WorldPacket const * Write() override
Array< LootRequest, 1000 > Loot
Definition: LootPackets.h:105
MasterLootItem(WorldPacket &&packet)
Definition: LootPackets.h:101
SetLootSpecialization(WorldPacket &&packet)
Definition: LootPackets.h:210
WorldPacket const * Write() override
std::array< LootRollIneligibilityReason, 5 > LootRollIneligibleReason
Definition: LootPackets.h:229
Duration< Milliseconds, uint32 > RollTime
Definition: LootPackets.h:226
WorldPacket _worldPacket
Definition: Packet.h:43
@ CMSG_LOOT_ITEM
Definition: Opcodes.h:476
@ CMSG_LOOT_RELEASE
Definition: Opcodes.h:478
@ CMSG_LOOT_UNIT
Definition: Opcodes.h:480
@ CMSG_SET_LOOT_SPECIALIZATION
Definition: Opcodes.h:785
@ CMSG_MASTER_LOOT_ITEM
Definition: Opcodes.h:491
@ CMSG_LOOT_MONEY
Definition: Opcodes.h:477
@ CMSG_LOOT_ROLL
Definition: Opcodes.h:479
@ SMSG_LOOT_REMOVED
Definition: Opcodes.h:1522
@ SMSG_AE_LOOT_TARGETS
Definition: Opcodes.h:928
@ SMSG_LOOT_RESPONSE
Definition: Opcodes.h:1523
@ SMSG_LOOT_ALL_PASSED
Definition: Opcodes.h:1517
@ SMSG_LOOT_LIST
Definition: Opcodes.h:1518
@ SMSG_LOOT_RELEASE
Definition: Opcodes.h:1520
@ SMSG_LOOT_RELEASE_ALL
Definition: Opcodes.h:1521
@ SMSG_MASTER_LOOT_CANDIDATE_LIST
Definition: Opcodes.h:1533
@ SMSG_COIN_REMOVED
Definition: Opcodes.h:1141
@ SMSG_LOOT_MONEY_NOTIFY
Definition: Opcodes.h:1519
@ SMSG_START_LOOT_ROLL
Definition: Opcodes.h:1975
@ SMSG_LOOT_ROLLS_COMPLETE
Definition: Opcodes.h:1525
@ SMSG_AE_LOOT_TARGET_ACK
Definition: Opcodes.h:929
@ SMSG_LOOT_ROLL
Definition: Opcodes.h:1524
@ SMSG_LOOT_ROLL_WON
Definition: Opcodes.h:1526
STL namespace.
Definition: Loot.h:281
WorldPackets::Item::ItemInstance Loot
Definition: LootPackets.h:49