TrinityCore
Loading...
Searching...
No Matches
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 TRINITYCORE_LOOT_PACKETS_H
19#define TRINITYCORE_LOOT_PACKETS_H
20
21#include "ItemPacketsCommon.h"
22#include "LootItemType.h"
23#include "ObjectGuid.h"
24#include "Packet.h"
25
27
28namespace WorldPackets
29{
30 namespace Loot
31 {
32 class LootUnit final : public ClientPacket
33 {
34 public:
35 explicit LootUnit(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_UNIT, std::move(packet)) { }
36
37 void Read() override;
38
40 };
41
52
60
61 class LootResponse final : public ServerPacket
62 {
63 public:
65
66 WorldPacket const* Write() override;
67
70 uint8 Threshold = 2; // Most common value, 2 = Uncommon
73 uint8 FailureReason = 17; // Most common value
75 std::vector<LootItemData> Items;
76 std::vector<LootCurrency> Currencies;
77 bool Acquired = false;
78 bool AELooting = false;
79 bool SuppressError = false; // Hides error from UI
80 };
81
87
88 class LootItem final : public ClientPacket
89 {
90 public:
91 explicit LootItem(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_ITEM, std::move(packet)) { }
92
93 void Read() override;
94
96 bool IsSoftInteract = false;
97 };
98
99 class MasterLootItem final : public ClientPacket
100 {
101 public:
102 explicit MasterLootItem(WorldPacket&& packet) : ClientPacket(CMSG_MASTER_LOOT_ITEM, std::move(packet)) { }
103
104 void Read() override;
105
108 };
109
110 class LootRemoved final : public ServerPacket
111 {
112 public:
114
115 WorldPacket const* Write() override;
116
120 };
121
122 class LootRelease final : public ClientPacket
123 {
124 public:
125 explicit LootRelease(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_RELEASE, std::move(packet)) { }
126
127 void Read() override;
128
130 };
131
132 class LootMoney final : public ClientPacket
133 {
134 public:
135 explicit LootMoney(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_MONEY, std::move(packet)) { }
136
137 void Read() override;
138
139 bool IsSoftInteract = false;
140 };
141
142 class LootMoneyNotify final : public ServerPacket
143 {
144 public:
146
147 WorldPacket const* Write() override;
148
151 bool SoleLooter = false;
152 };
153
154 class CoinRemoved final : public ServerPacket
155 {
156 public:
158
159 WorldPacket const* Write() override;
160
162 };
163
164 class LootRoll final : public ClientPacket
165 {
166 public:
167 explicit LootRoll(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_ROLL, std::move(packet)) { }
168
169 void Read() override;
170
174 };
175
177 {
178 public:
180
181 WorldPacket const* Write() override;
182
185 };
186
187 class LootReleaseAll final : public ServerPacket
188 {
189 public:
191
192 WorldPacket const* Write() override { return &_worldPacket; }
193 };
194
207
209 {
210 public:
212
213 void Read() override;
214
216 };
217
218 class StartLootRoll final : public ServerPacket
219 {
220 public:
222
223 WorldPacket const* Write() override;
224
230 std::array<LootRollIneligibilityReason, 5> LootRollIneligibleReason = { };
233 };
234
235 class LootRollBroadcast final : public ServerPacket
236 {
237 public:
239
240 WorldPacket const* Write() override;
241
247 bool Autopassed = false;
248 bool OffSpec = false;
250 };
251
252 class LootRollWon final : public ServerPacket
253 {
254 public:
256
257 WorldPacket const* Write() override;
258
264 bool MainSpec = false;
266 };
267
268 class LootAllPassed final : public ServerPacket
269 {
270 public:
272
273 WorldPacket const* Write() override;
274
278 };
279
280 class LootRollsComplete final : public ServerPacket
281 {
282 public:
284
285 WorldPacket const* Write() override;
286
290 };
291
293 {
294 public:
296
297 WorldPacket const* Write() override;
298
301 };
302
303 class AELootTargets final : public ServerPacket
304 {
305 public:
307
308 WorldPacket const* Write() override;
309
311 };
312
313 class AELootTargetsAck final : public ServerPacket
314 {
315 public:
317
318 WorldPacket const* Write() override { return &_worldPacket; }
319 };
320 }
321}
322
323#endif // TRINITYCORE_LOOT_PACKETS_H
uint8_t uint8
Definition Define.h:156
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint32_t uint32
Definition Define.h:154
LootItemType
LootRollIneligibilityReason
Definition Loot.h:166
RollType
Definition Loot.h:55
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition ObjectGuid.h:435
@ SMSG_LOOT_REMOVED
Definition Opcodes.h:1832
@ SMSG_AE_LOOT_TARGETS
Definition Opcodes.h:1126
@ SMSG_LOOT_RESPONSE
Definition Opcodes.h:1833
@ SMSG_LOOT_ALL_PASSED
Definition Opcodes.h:1827
@ SMSG_LOOT_LIST
Definition Opcodes.h:1828
@ SMSG_LOOT_RELEASE
Definition Opcodes.h:1830
@ SMSG_LOOT_RELEASE_ALL
Definition Opcodes.h:1831
@ SMSG_MASTER_LOOT_CANDIDATE_LIST
Definition Opcodes.h:1843
@ SMSG_COIN_REMOVED
Definition Opcodes.h:1350
@ SMSG_LOOT_MONEY_NOTIFY
Definition Opcodes.h:1829
@ SMSG_START_LOOT_ROLL
Definition Opcodes.h:2353
@ SMSG_LOOT_ROLLS_COMPLETE
Definition Opcodes.h:1835
@ SMSG_AE_LOOT_TARGET_ACK
Definition Opcodes.h:1127
@ SMSG_LOOT_ROLL
Definition Opcodes.h:1834
@ SMSG_LOOT_ROLL_WON
Definition Opcodes.h:1836
@ CMSG_LOOT_ITEM
Definition Opcodes.h:561
@ CMSG_LOOT_RELEASE
Definition Opcodes.h:563
@ CMSG_LOOT_UNIT
Definition Opcodes.h:565
@ CMSG_SET_LOOT_SPECIALIZATION
Definition Opcodes.h:919
@ CMSG_MASTER_LOOT_ITEM
Definition Opcodes.h:576
@ CMSG_LOOT_MONEY
Definition Opcodes.h:562
@ CMSG_LOOT_ROLL
Definition Opcodes.h:564
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
Array< LootRequest, 100 > Loot
Definition LootPackets.h:95
LootItem(WorldPacket &&packet)
Definition LootPackets.h:91
Optional< ObjectGuid > Master
WorldPacket const * Write() override
Optional< ObjectGuid > RoundRobinWinner
WorldPacket const * Write() override
LootMoney(WorldPacket &&packet)
WorldPacket const * Write() override
WorldPacket const * Write() override
LootRelease(WorldPacket &&packet)
WorldPacket const * Write() override
std::vector< LootItemData > Items
Definition LootPackets.h:75
WorldPacket const * Write() override
std::vector< LootCurrency > Currencies
Definition LootPackets.h:76
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...
bool Autopassed
Triggers message |HlootHistory:d|h[Loot]|h: You automatically passed on: s because you cannot loot th...
WorldPacket const * Write() override
LootRoll(WorldPacket &&packet)
WorldPacket const * Write() override
LootUnit(WorldPacket &&packet)
Definition LootPackets.h:35
WorldPacket const * Write() override
MasterLootItem(WorldPacket &&packet)
Array< LootRequest, 100 > Loot
SetLootSpecialization(WorldPacket &&packet)
WorldPacket const * Write() override
std::array< LootRollIneligibilityReason, 5 > LootRollIneligibleReason
Duration< Milliseconds, uint32 > RollTime
WorldPacket _worldPacket
Definition Packet.h:43
STL namespace.
Definition Loot.h:286
WorldPackets::Item::ItemInstance Loot
Definition LootPackets.h:50