diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d8b2e46974efe..2aae0333ebf62 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25664,13 +25664,6 @@ void Player::ResyncRunes() const GetSession()->SendPacket(data.Write()); } -void Player::AddRunePower(uint8 index) const -{ - WorldPacket data(SMSG_ADD_RUNE_POWER, 4); - data << uint32(1 << index); // mask (0x00-0x3F probably) - GetSession()->SendPacket(&data); -} - void Player::InitRunes() { if (getClass() != CLASS_DEATH_KNIGHT) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 93dcfb4b593cd..7cbea6951f0ab 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2307,7 +2307,6 @@ class TC_GAME_API Player : public Unit, public GridObject uint32 GetRuneBaseCooldown() const; void SetRuneCooldown(uint8 index, uint32 cooldown); void ResyncRunes() const; - void AddRunePower(uint8 index) const; void InitRunes(); void SendRespondInspectAchievements(Player* player) const; diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index c0bee0561450f..ec6d57f27482f 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -875,6 +875,13 @@ WorldPacket const* WorldPackets::Spells::ResyncRunes::Write() return &_worldPacket; } +WorldPacket const* WorldPackets::Spells::AddRunePower::Write() +{ + _worldPacket << uint32(AddedRunesMask); + + return &_worldPacket; +} + void WorldPackets::Spells::MissileTrajectoryCollision::Read() { _worldPacket >> Target; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 80c40f5c715ef..b1230459627c5 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -894,6 +894,16 @@ namespace WorldPackets RuneData Runes; }; + class AddRunePower final : public ServerPacket + { + public: + AddRunePower() : ServerPacket(SMSG_ADD_RUNE_POWER, 4) { } + + WorldPacket const* Write() override; + + uint32 AddedRunesMask = 0; + }; + class MissileTrajectoryCollision final : public ClientPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 6f528dce8dd89..448b277aa16d8 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -876,7 +876,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_BATTLENET_FRIEND_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_ITEM_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGETS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGET_ACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);