aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorGolrag <golrag.jeremy@gmail.com>2015-02-14 15:09:09 +0100
committerGolrag <golrag.jeremy@gmail.com>2015-02-14 17:09:02 +0100
commit7eb02e945f973ef3e5881cc1674123581f6750d4 (patch)
tree6632fb2e7dd98c74babb91401c8355d6b3899cfd /src/server/game/Server
parente8c7d476416bcc42cf938178c729ac437ea9884e (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.cpp21
-rw-r--r--src/server/game/Server/Packets/CombatPackets.h33
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h3
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);