aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2016-02-29 01:54:18 +0000
committerDDuarte <dnpd.dd@gmail.com>2016-02-29 01:54:18 +0000
commitf76771dca05874b101099f1b79fe17e651ee210a (patch)
treeba1dd150a1d7d66d84da8d592c9fdc31e99af251 /src/server/game/Server
parentce0deb10132c6e85253bdc85770e931cb554920b (diff)
Core/Packets: Updated and enabled SMSG_SPELL_DISPELL_LOG
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.cpp29
-rw-r--r--src/server/game/Server/Packets/CombatLogPackets.h23
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
3 files changed, 53 insertions, 1 deletions
diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp
index 39cf8fe0284..a1aa276be2a 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.cpp
+++ b/src/server/game/Server/Packets/CombatLogPackets.cpp
@@ -334,3 +334,32 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write()
return &_worldPacket;
}
+
+ByteBuffer& operator<<(ByteBuffer& buffer, WorldPackets::CombatLog::SpellDispellData const& dispellData)
+{
+ buffer << int32(dispellData.SpellID);
+ buffer.WriteBit(dispellData.Harmful);
+ buffer.WriteBit(dispellData.Rolled.is_initialized());
+ buffer.WriteBit(dispellData.Needed.is_initialized());
+ if (dispellData.Rolled.is_initialized())
+ buffer << int32(*dispellData.Rolled);
+ if (dispellData.Needed.is_initialized())
+ buffer << int32(*dispellData.Needed);
+
+ return buffer;
+}
+
+WorldPacket const* WorldPackets::CombatLog::SpellDispellLog::Write()
+{
+ _worldPacket.WriteBit(IsSteal);
+ _worldPacket.WriteBit(IsBreak);
+ _worldPacket << TargetGUID;
+ _worldPacket << CasterGUID;
+ _worldPacket << int32(DispelledBySpellID);
+
+ _worldPacket << uint32(DispellData.size());
+ for (SpellDispellData const& data : DispellData)
+ _worldPacket << data;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h
index acad24548e1..050c436a770 100644
--- a/src/server/game/Server/Packets/CombatLogPackets.h
+++ b/src/server/game/Server/Packets/CombatLogPackets.h
@@ -198,6 +198,29 @@ namespace WorldPackets
int32 SpellID = 0;
};
+ struct SpellDispellData
+ {
+ int32 SpellID = 0;
+ bool Harmful = false;
+ Optional<int32> Rolled;
+ Optional<int32> Needed;
+ };
+
+ class SpellDispellLog : public ServerPacket
+ {
+ public:
+ SpellDispellLog() : ServerPacket(SMSG_SPELL_DISPELL_LOG, 1 + 16 + 16 + 4 + 4 + 20) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<SpellDispellData> DispellData;
+ ObjectGuid CasterGUID;
+ ObjectGuid TargetGUID;
+ int32 DispelledBySpellID = 0;
+ bool IsBreak = false;
+ bool IsSteal = false;
+ };
+
class SpellEnergizeLog final : public CombatLogServerPacket
{
public:
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 2ca5024ab67..9c3466d813b 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1605,7 +1605,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DAMAGE_SHIELD, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DELAYED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DISPELL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DISPELL_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ENERGIZE_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EXECUTE_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILED_OTHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);