diff options
| author | Golrag <golrag.jeremy@gmail.com> | 2015-02-14 15:09:09 +0100 |
|---|---|---|
| committer | Golrag <golrag.jeremy@gmail.com> | 2015-02-14 17:09:02 +0100 |
| commit | 7eb02e945f973ef3e5881cc1674123581f6750d4 (patch) | |
| tree | 6632fb2e7dd98c74babb91401c8355d6b3899cfd /src/server/game/Server | |
| parent | e8c7d476416bcc42cf938178c729ac437ea9884e (diff) | |
Core/Opcodes:
* SMSG_POWER_UPDATE
* CMSG_SET_SHEATHED
* SMSG_ATTACKSTOP
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/CombatPackets.cpp | 21 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/CombatPackets.h | 33 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
4 files changed, 55 insertions, 6 deletions
diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index 53a489ebc21..5a23729f7bc 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -35,7 +35,7 @@ WorldPacket const* WorldPackets::Combat::SAttackStop::Write() { _worldPacket << Attacker; _worldPacket << Victim; - _worldPacket.WriteBit(Dead); + _worldPacket.WriteBit(NowDead); _worldPacket.FlushBits(); return &_worldPacket; @@ -147,3 +147,22 @@ WorldPacket const* WorldPackets::Combat::AttackSwingError::Write() _worldPacket.FlushBits(); return &_worldPacket; } + +WorldPacket const* WorldPackets::Combat::PowerUpdate::Write() +{ + _worldPacket << Guid; + _worldPacket << uint32(Powers.size()); + for (WorldPackets::Combat::PowerUpdatePower const& power : Powers) + { + _worldPacket << power.Power; + _worldPacket << power.PowerType; + } + + return &_worldPacket; +} + +void WorldPackets::Combat::SetSheathed::Read() +{ + _worldPacket >> CurrentSheathState; + Animate = _worldPacket.ReadBit(); +} diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 54d97e5774c..4e2aa3c34b2 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -69,13 +69,14 @@ namespace WorldPackets class SAttackStop final : public ServerPacket { public: - SAttackStop() : ServerPacket(SMSG_ATTACKSTOP, 17) { } + SAttackStop() : ServerPacket(SMSG_ATTACKSTOP, 16 + 16 + 1) { } + SAttackStop(ObjectGuid attacker, ObjectGuid victim, bool nowDead) : ServerPacket(SMSG_ATTACKSTOP, 16 + 16 + 1), Attacker(attacker), Victim(victim), NowDead(nowDead) { } WorldPacket const* Write() override; ObjectGuid Attacker; ObjectGuid Victim; - bool Dead = false; + bool NowDead = false; }; struct ThreatInfo @@ -184,6 +185,34 @@ namespace WorldPackets WorldPacket const* Write() override { return &_worldPacket; } }; + + struct PowerUpdatePower + { + int32 Power = 0; + uint8 PowerType = 0; + }; + + class PowerUpdate final : public ServerPacket + { + public: + PowerUpdate() : ServerPacket(SMSG_POWER_UPDATE, 16 + 4 + 1) { } + + WorldPacket const* Write() override; + + ObjectGuid Guid; + std::vector<PowerUpdatePower> Powers; + }; + + class SetSheathed final : public ClientPacket + { + public: + SetSheathed(WorldPacket&& packet) : ClientPacket(CMSG_SET_SHEATHED, std::move(packet)) { } + + void Read() override; + + int32 CurrentSheathState = 0; + bool Animate = true; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index c6a24f5be15..c9f450c5e78 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -793,7 +793,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ROLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SAVED_INSTANCE_EXTEND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetSavedInstanceExtend ); DEFINE_HANDLER(CMSG_SET_SELECTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetSelection, &WorldSession::HandleSetSelectionOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SHEATHED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSetSheathedOpcode ); + DEFINE_HANDLER(CMSG_SET_SHEATHED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Combat::SetSheathed, &WorldSession::HandleSetSheathedOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SKILL_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_SET_SPECIALIZATION, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Talent::SetSpecialization, &WorldSession::HandleSetSpecializationOpcode); @@ -1650,7 +1650,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPELL_VISUAL_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_TIME_WARNING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PONG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_POWER_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_POWER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRE_RESSURECT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROC_RESIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 4ad9e35c01e..0cab4b9bf7a 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -145,6 +145,7 @@ namespace WorldPackets { class AttackSwing; class AttackStop; + class SetSheathed; } namespace Duel @@ -1048,7 +1049,7 @@ class WorldSession void HandleAttackSwingOpcode(WorldPackets::Combat::AttackSwing& packet); void HandleAttackStopOpcode(WorldPackets::Combat::AttackStop& packet); - void HandleSetSheathedOpcode(WorldPacket& recvPacket); + void HandleSetSheathedOpcode(WorldPackets::Combat::SetSheathed& packet); void HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet); void HandleOpenItemOpcode(WorldPacket& recvPacket); |
