aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOvah <dreadkiller@gmx.de>2016-07-07 13:30:24 +0200
committerShauren <shauren.trinity@gmail.com>2016-07-07 13:30:24 +0200
commit2bede7bffdbb0cb96aaaa5c8857f787490c029b9 (patch)
treefc335c30a271e86aeb8caee6e246ef3f28263da8
parent147d77102c0dcb2e2c38c4e0b69d6cf45ab74e33 (diff)
Core/Instances: implemented handling for SMSG_BOSS_KILL_CREDIT (#17525)
-rw-r--r--src/server/game/Instances/InstanceScript.cpp8
-rw-r--r--src/server/game/Instances/InstanceScript.h2
-rw-r--r--src/server/game/Server/Packets/InstancePackets.cpp7
-rw-r--r--src/server/game/Server/Packets/InstancePackets.h9
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
5 files changed, 27 insertions, 1 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp
index dc008aa881e..6ddef1ceeaa 100644
--- a/src/server/game/Instances/InstanceScript.cpp
+++ b/src/server/game/Instances/InstanceScript.cpp
@@ -664,6 +664,14 @@ void InstanceScript::SendEncounterEnd()
instance->SendToPlayers(encounterEndMessage.Write());
}
+void InstanceScript::SendBossKillCredit(uint32 encounterId)
+{
+ WorldPackets::Instance::BossKillCredit bossKillCreditMessage;
+ bossKillCreditMessage.DungeonEncounterID = encounterId;
+
+ instance->SendToPlayers(bossKillCreditMessage.Write());
+}
+
void InstanceScript::UpdateEncounterState(EncounterCreditType type, uint32 creditEntry, Unit* /*source*/)
{
DungeonEncounterList const* encounters = sObjectMgr->GetDungeonEncounterList(instance->GetId(), instance->GetDifficultyID());
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index 92c7be92752..d858bb6b9c2 100644
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -250,6 +250,8 @@ class TC_GAME_API InstanceScript : public ZoneScript
void SendEncounterStart(uint32 inCombatResCount = 0, uint32 maxInCombatResCount = 0, uint32 inCombatResChargeRecovery = 0, uint32 nextCombatResChargeTime = 0);
void SendEncounterEnd();
+ void SendBossKillCredit(uint32 encounterId);
+
virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) { }
// ReCheck PhaseTemplate related conditions
diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp
index a6278c315e2..375761a5611 100644
--- a/src/server/game/Server/Packets/InstancePackets.cpp
+++ b/src/server/game/Server/Packets/InstancePackets.cpp
@@ -158,3 +158,10 @@ WorldPacket const* WorldPackets::Instance::InstanceEncounterGainCombatResurrecti
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Instance::BossKillCredit::Write()
+{
+ _worldPacket << uint32(DungeonEncounterID);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h
index 137984d8396..71bd5fa5268 100644
--- a/src/server/game/Server/Packets/InstancePackets.h
+++ b/src/server/game/Server/Packets/InstancePackets.h
@@ -236,6 +236,15 @@ namespace WorldPackets
int32 InCombatResCount = 0;
uint32 CombatResChargeRecovery = 0;
};
+
+ class BossKillCredit final : public ServerPacket
+ {
+ public:
+ BossKillCredit() : ServerPacket(SMSG_BOSS_KILL_CREDIT, 4) { }
+
+ WorldPacket const* Write() override;
+ uint32 DungeonEncounterID = 0;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index ac2041d981a..d089b1efb2f 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -912,7 +912,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_WON, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BONUS_ROLL_EMPTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BOSS_KILL_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BOSS_KILL_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BREAK_TARGET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_SUCCEEDED, STATUS_NEVER, CONNECTION_TYPE_REALM);