aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2015-08-02 20:35:01 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2015-08-02 20:35:01 +0200
commitd8850f05362fe81c42a7b3dbfe36f9eae1b55e09 (patch)
tree9353a5a71c78087159c083aadf8e04e12bb034b8
parentf3d44b0309f428c3b45411275d4a1d1f2f5c8bf4 (diff)
Core/PacketIO: Update and enabled SMSG_PARTY_KILL_LOG opcode
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp21
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/PartyPackets.h11
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
4 files changed, 31 insertions, 11 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 9a69f3b35ff..34e914bc714 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -67,6 +67,8 @@
#include "CombatPackets.h"
#include "CombatLogPackets.h"
#include "VehiclePackets.h"
+#include "LootPackets.h"
+#include "PartyPackets.h"
#include <cmath>
@@ -13453,9 +13455,9 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
// call kill spell proc event (before real die and combat stop to triggering auras removed at death/combat stop)
if (isRewardAllowed && player && player != victim)
{
- WorldPacket data(SMSG_PARTY_KILL_LOG, (8+8)); // send event PARTY_KILL
- data << player->GetGUID(); // player with killing blow
- data << victim->GetGUID(); // victim
+ WorldPackets::Party::PartyKillLog partyKillLog;
+ partyKillLog.Player = player->GetGUID();
+ partyKillLog.Victim = victim->GetGUID();
Player* looter = player;
Group* group = player->GetGroup();
@@ -13463,7 +13465,7 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
if (group)
{
- group->BroadcastPacket(&data, group->GetMemberGroup(player->GetGUID()) != 0);
+ group->BroadcastPacket(partyKillLog.Write(), group->GetMemberGroup(player->GetGUID()) != 0);
if (creature)
{
@@ -13481,15 +13483,14 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
}
else
{
- player->SendDirectMessage(&data);
+ player->SendDirectMessage(partyKillLog.Write());
if (creature)
{
- WorldPacket data2(SMSG_LOOT_LIST, 8 + 1 + 1);
- data2 << creature->GetGUID();
- data2 << uint8(0); // unk1
- data2 << uint8(0); // no group looter
- player->SendMessageToSet(&data2, true);
+ WorldPackets::Loot::LootList lootList;
+ lootList.Owner = creature->GetGUID();
+
+ player->SendMessageToSet(lootList.Write(), true);
}
}
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index 1ca4d8095d0..332aa959a1e 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -541,6 +541,14 @@ void WorldPackets::Party::PartyMemberStats::Initialize(Player const* player)
}
}
+WorldPacket const* WorldPackets::Party::PartyKillLog::Write()
+{
+ _worldPacket << Player;
+ _worldPacket << Victim;
+
+ return &_worldPacket;
+}
+
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPhase const& phase)
{
data << phase.Flags;
diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h
index 34e8097f985..cb0e4aac440 100644
--- a/src/server/game/Server/Packets/PartyPackets.h
+++ b/src/server/game/Server/Packets/PartyPackets.h
@@ -594,6 +594,17 @@ namespace WorldPackets
std::vector<RaidMarker*> RaidMarkers;
};
+
+ class PartyKillLog final : public ServerPacket
+ {
+ public:
+ PartyKillLog() : ServerPacket(SMSG_PARTY_KILL_LOG, 2 * 16) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Player;
+ ObjectGuid Victim;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 6eda0a0a009..25b5e661ebe 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1430,7 +1430,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAGE_TEXT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);