diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 11 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 20 | ||||
| -rw-r--r-- | src/server/shared/SharedDefines.h | 2 |
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 { |
