aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp11
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h20
-rw-r--r--src/server/shared/SharedDefines.h2
5 files changed, 36 insertions, 13 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 54f48802077..6854a2b45e3 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -83,6 +83,7 @@
#include "SpellAuras.h"
#include "SpellHistory.h"
#include "SpellMgr.h"
+#include "SpellPackets.h"
#include "TicketMgr.h"
#include "TradeData.h"
#include "Trainer.h"
@@ -24601,16 +24602,15 @@ void Player::ResyncRunes() const
if (GetClass() != CLASS_DEATH_KNIGHT)
return;
- WorldPacket data(SMSG_RESYNC_RUNES, 4 + MAX_RUNES * 2);
- data << uint32(MAX_RUNES);
+ WorldPackets::Spells::ResyncRunes packet;
+ packet.Count = MAX_RUNES;
for (uint32 itr = 0; itr < MAX_RUNES; ++itr)
{
- data << uint8(GetCurrentRune(itr)); // rune type
-
- uint32 value = uint32(255) - ((GetRuneCooldown(itr) * uint32(255)) / uint32(RUNE_BASE_COOLDOWN));
- data << uint8(value); // passed cooldown time (0-255)
+ uint8 type = GetCurrentRune(itr);
+ uint32 value = uint32(255) - ((GetRuneCooldown(itr) * uint32(255)) / uint32(RUNE_BASE_COOLDOWN)); // cooldown time (0-255)
+ packet.Cooldowns.emplace_back(type, value);
}
- SendDirectMessage(&data);
+ SendDirectMessage(packet.Write());
}
void Player::AddRunePower(uint8 index) const
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 16a90dc7e23..a61285a57ff 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -255,8 +255,6 @@ struct Areas
float y2;
};
-#define MAX_RUNES 6
-
enum RuneCooldowns
{
RUNE_BASE_COOLDOWN = 10000,
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index ccefb2d4622..e117f5e98e5 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -158,3 +158,14 @@ WorldPacket const* WorldPackets::Spells::SpellStart::Write()
_worldPacket << Cast;
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Spells::ResyncRunes::Write()
+{
+ _worldPacket << Count;
+ for (auto itr = Cooldowns.begin(); itr != Cooldowns.end(); ++itr)
+ {
+ _worldPacket << itr->first;
+ _worldPacket << itr->second;
+ }
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index 3fdbde4a610..816b2e1c528 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -22,6 +22,7 @@
#include "ObjectGuid.h"
#include "Optional.h"
#include "Position.h"
+#include "SharedDefines.h"
namespace WorldPackets
{
@@ -79,10 +80,10 @@ namespace WorldPackets
{
ObjectGuid CasterGUID;
ObjectGuid CasterUnit;
- uint8 CastID = 0;
- uint32 SpellID = 0;
- uint32 CastFlags = 0;
- uint32 CastTime = 0;
+ uint8 CastID = 0;
+ uint32 SpellID = 0;
+ uint32 CastFlags = 0;
+ uint32 CastTime = 0;
mutable Optional<std::vector<ObjectGuid>> HitTargets;
mutable Optional<std::vector<SpellMissStatus>> MissStatus;
SpellTargetData Target;
@@ -112,6 +113,17 @@ namespace WorldPackets
SpellCastData Cast;
};
+
+ class ResyncRunes final : public ServerPacket
+ {
+ public:
+ ResyncRunes() : ServerPacket(SMSG_RESYNC_RUNES, 4 + 2 * MAX_RUNES) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Count = 0;
+ std::vector<std::pair<uint8, uint8>> Cooldowns;
+ };
}
}
diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h
index 2f58a29e08f..b270220113d 100644
--- a/src/server/shared/SharedDefines.h
+++ b/src/server/shared/SharedDefines.h
@@ -291,6 +291,8 @@ enum Powers : int8
POWER_ALL = 127 // SKIP
};
+#define MAX_RUNES 6
+
// EnumUtils: DESCRIBE THIS
enum SpellSchools
{