aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorIntel <chemicstry@gmail.com>2014-11-19 00:30:31 +0200
committerIntel <chemicstry@gmail.com>2014-11-19 20:18:14 +0200
commitb86bf40f617a480f8e78bbde2e9884dd9edd2ebe (patch)
tree74c70848170eced6222df44b812b79a00ea122b8 /src/server/game/Server
parent73a7d7c0538b5c791aaa89caae6547c4b330dd80 (diff)
Core/Packets: Added the following packets:
CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY SMSG_QUESTGIVER_STATUS_MULTIPLE CMSG_QUESTGIVER_STATUS_QUERY SMSG_QUESTGIVER_STATUS SMSG_AI_REACTION SMSG_ATTACKERSTATEUPDATE SMSG_ATTACKSTART SMSG_ATTACKSTOP SMSG_THREAT_UPDATE SMSG_HIGHEST_THREAT_UPDATE SMSG_SET_PROFICIENCY
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/CombatPackets.cpp118
-rw-r--r--src/server/game/Server/Packets/CombatPackets.h123
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp17
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h16
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp25
-rw-r--r--src/server/game/Server/WorldSession.h10
6 files changed, 295 insertions, 14 deletions
diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp
index 17c0599d266..3383435814c 100644
--- a/src/server/game/Server/Packets/CombatPackets.cpp
+++ b/src/server/game/Server/Packets/CombatPackets.cpp
@@ -16,8 +16,126 @@
*/
#include "CombatPackets.h"
+#include "SpellPackets.h"
void WorldPackets::Combat::AttackSwing::Read()
{
_worldPacket >> Victim;
}
+
+WorldPacket const* WorldPackets::Combat::AttackStart::Write()
+{
+ _worldPacket << Attacker;
+ _worldPacket << Victim;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Combat::SAttackStop::Write()
+{
+ _worldPacket << Attacker;
+ _worldPacket << Victim;
+ _worldPacket.WriteBit(Dead);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Combat::ThreatUpdate::Write()
+{
+ _worldPacket << UnitGUID;
+ _worldPacket << int32(ThreatList.size());
+ for (WorldPackets::Combat::ThreatInfo const& threatInfo : ThreatList)
+ {
+ _worldPacket << threatInfo.UnitGUID;
+ _worldPacket << threatInfo.Threat;
+ }
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Combat::HighestThreatUpdate::Write()
+{
+ _worldPacket << UnitGUID;
+ _worldPacket << HighestThreatGUID;
+ _worldPacket << int32(ThreatList.size());
+ for (WorldPackets::Combat::ThreatInfo const& threatInfo : ThreatList)
+ {
+ _worldPacket << threatInfo.UnitGUID;
+ _worldPacket << threatInfo.Threat;
+ }
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Combat::ThreatRemove::Write()
+{
+ _worldPacket << UnitGUID;
+ _worldPacket << AboutGUID;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Combat::AIReaction::Write()
+{
+ _worldPacket << UnitGUID;
+ _worldPacket << Reaction;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Combat::AttackerStateUpdate::Write()
+{
+ if (_worldPacket.WriteBit(LogData.HasValue))
+ _worldPacket << LogData.value;
+
+ // Placeholder for size which will be calculated at the end based on packet size
+ // Client uses this size to copy remaining packet to another CDataStore
+ _worldPacket << int32(0);
+ size_t pos = _worldPacket.wpos();
+
+ _worldPacket << HitInfo;
+ _worldPacket << AttackerGUID;
+ _worldPacket << VictimGUID;
+ _worldPacket << Damage;
+ _worldPacket << OverDamage;
+ if (_worldPacket.WriteBit(SubDmg.HasValue))
+ {
+ _worldPacket << SubDmg.value.SchoolMask;
+ _worldPacket << SubDmg.value.FDamage;
+ _worldPacket << SubDmg.value.Damage;
+ if (HitInfo & (HITINFO_FULL_ABSORB|HITINFO_PARTIAL_ABSORB))
+ _worldPacket << SubDmg.value.Absorbed;
+ if (HitInfo & (HITINFO_FULL_RESIST|HITINFO_PARTIAL_RESIST))
+ _worldPacket << SubDmg.value.Resisted;
+ }
+ _worldPacket << VictimState;
+ _worldPacket << AttackerState;
+ _worldPacket << MeleeSpellID;
+ if (HitInfo & HITINFO_BLOCK)
+ _worldPacket << BlockAmount;
+ if (HitInfo & HITINFO_RAGE_GAIN)
+ _worldPacket << RageGained;
+ if (HitInfo & HITINFO_UNK1)
+ {
+ _worldPacket << UnkState.State1;
+ _worldPacket << UnkState.State2;
+ _worldPacket << UnkState.State3;
+ _worldPacket << UnkState.State4;
+ _worldPacket << UnkState.State5;
+ _worldPacket << UnkState.State6;
+ _worldPacket << UnkState.State7;
+ _worldPacket << UnkState.State8;
+ _worldPacket << UnkState.State9;
+ _worldPacket << UnkState.State10;
+ _worldPacket << UnkState.State11;
+ _worldPacket << UnkState.State12;
+ }
+ if (HitInfo & (HITINFO_BLOCK|HITINFO_UNK12))
+ _worldPacket << Unk;
+
+ // Update size placeholder
+ _worldPacket.put<int32>(pos-sizeof(int32), _worldPacket.wpos()-pos);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h
index 5c6576e68c5..14648297342 100644
--- a/src/server/game/Server/Packets/CombatPackets.h
+++ b/src/server/game/Server/Packets/CombatPackets.h
@@ -20,6 +20,7 @@
#include "Packet.h"
#include "ObjectGuid.h"
+#include "SpellPackets.h"
namespace WorldPackets
{
@@ -42,6 +43,128 @@ namespace WorldPackets
void Read() override { }
};
+
+ class AttackStart final : public ServerPacket
+ {
+ public:
+ AttackStart() : ServerPacket(SMSG_ATTACKSTART, 16) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Attacker;
+ ObjectGuid Victim;
+ };
+
+ class SAttackStop final : public ServerPacket
+ {
+ public:
+ SAttackStop() : ServerPacket(SMSG_ATTACKSTOP, 17) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Attacker;
+ ObjectGuid Victim;
+ bool Dead = false;
+ };
+
+ struct ThreatInfo
+ {
+ ObjectGuid UnitGUID;
+ int32 Threat = 0;
+ };
+
+ class ThreatUpdate final : public ServerPacket
+ {
+ public:
+ ThreatUpdate() : ServerPacket(SMSG_THREAT_UPDATE, 24) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid UnitGUID;
+ std::vector<ThreatInfo> ThreatList;
+ };
+
+ class HighestThreatUpdate final : public ServerPacket
+ {
+ public:
+ HighestThreatUpdate() : ServerPacket(SMSG_HIGHEST_THREAT_UPDATE, 44) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid UnitGUID;
+ std::vector<ThreatInfo> ThreatList;
+ ObjectGuid HighestThreatGUID;
+ };
+
+ class ThreatRemove final : public ServerPacket
+ {
+ public:
+ ThreatRemove() : ServerPacket(SMSG_THREAT_REMOVE, 16) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid AboutGUID; // Unit to remove threat from (e.g. player, pet, guardian)
+ ObjectGuid UnitGUID; // Unit being attacked (e.g. creature, boss)
+ };
+
+ class AIReaction final : public ServerPacket
+ {
+ public:
+ AIReaction() : ServerPacket(SMSG_AI_REACTION, 12) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid UnitGUID;
+ uint32 Reaction = 0;
+ };
+
+ struct SubDamage
+ {
+ int32 SchoolMask = 0;
+ float FDamage = 0.0f; // Float damage (Most of the time equals to Damage)
+ int32 Damage = 0;
+ int32 Absorbed = 0;
+ int32 Resisted = 0;
+ };
+
+ struct UnkAttackerState
+ {
+ int32 State1 = 0;
+ float State2 = 0.0f;
+ float State3 = 0.0f;
+ float State4 = 0.0f;
+ float State5 = 0.0f;
+ float State6 = 0.0f;
+ float State7 = 0.0f;
+ float State8 = 0.0f;
+ float State9 = 0.0f;
+ float State10 = 0.0f;
+ float State11 = 0.0f;
+ int32 State12 = 0;
+ };
+
+ class AttackerStateUpdate final : public ServerPacket
+ {
+ public:
+ AttackerStateUpdate() : ServerPacket(SMSG_ATTACKERSTATEUPDATE, 70) { }
+
+ WorldPacket const* Write() override;
+
+ Optional<WorldPackets::Spell::SpellCastLogData> LogData;
+ uint32 HitInfo = 0; // Flags
+ ObjectGuid AttackerGUID;
+ ObjectGuid VictimGUID;
+ int32 Damage = 0;
+ int32 OverDamage = -1; // (damage - health) or -1 if unit is still alive
+ Optional<SubDamage> SubDmg;
+ uint8 VictimState = 0;
+ int32 AttackerState = -1;
+ int32 MeleeSpellID = 0;
+ int32 BlockAmount = 0;
+ int32 RageGained = 0;
+ UnkAttackerState UnkState;
+ float Unk = 0.0f;
+ };
}
}
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 09914b292bb..6ca1012a51c 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -64,3 +64,20 @@ WorldPacket const* WorldPackets::Spell::SendUnlearnSpells::Write()
return &_worldPacket;
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spell::SpellCastLogData& spellCastLogData)
+{
+ data << spellCastLogData.Health;
+ data << spellCastLogData.AttackPower;
+ data << spellCastLogData.SpellPower;
+ data << int32(spellCastLogData.PowerData.size());
+ for (WorldPackets::Spell::SpellLogPowerData const& powerData : spellCastLogData.PowerData)
+ {
+ data << powerData.PowerType;
+ data << powerData.Amount;
+ }
+ data.FlushBits();
+ data.WriteBit(false);
+ // data << float // Unk data if bit is true
+ data.FlushBits();
+}
+
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index c02f5cc2a5f..0bfd979b6ca 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -84,7 +84,23 @@ namespace WorldPackets
std::vector<uint32> Spells;
};
+
+ struct SpellLogPowerData
+ {
+ int32 PowerType = 0;
+ int32 Amount = 0;
+ };
+
+ struct SpellCastLogData
+ {
+ int32 Health = 0;
+ int32 AttackPower = 0;
+ int32 SpellPower = 0;
+ std::vector<SpellLogPowerData> PowerData;
+ };
}
}
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spell::SpellCastLogData& spellCastLogData);
+
#endif // SpellPackets_h__
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 595e19cd7ef..ab4b768cfd4 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -27,6 +27,7 @@
#include "Packets/MiscPackets.h"
#include "Packets/MovementPackets.h"
#include "Packets/QueryPackets.h"
+#include "Packets/QuestPackets.h"
#include "Packets/TalentPackets.h"
#include "Packets/TradePackets.h"
@@ -524,8 +525,8 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_HELLO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverHelloOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_QUERY_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverQueryQuestOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_REQUEST_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverRequestRewardOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverStatusMultipleQuery);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_STATUS_QUERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusQueryOpcode);
+ DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverStatusMultipleQuery, &WorldSession::HandleQuestgiverStatusMultipleQuery);
+ DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Quest::QuestGiverStatusQuery, &WorldSession::HandleQuestgiverStatusQueryOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTLOG_REMOVE_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestLogRemoveQuest );
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept );
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEST_NPC_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestNPCQuery );
@@ -701,7 +702,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ACTIVATETAXIREPLY, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADDON_INFO, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_AI_REACTION, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_AI_REACTION, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ALL_ACHIEVEMENT_DATA, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_SPIRIT_HEALER_TIME, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_MESSAGE, STATUS_UNHANDLED);
@@ -715,9 +716,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_TEAM_QUERY_RESPONSE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_TEAM_ROSTER, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_TEAM_STATS, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKERSTATEUPDATE, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTART, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTOP, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKERSTATEUPDATE, STATUS_NEVER);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTART, STATUS_NEVER);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSTOP, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_BADFACING, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_CANT_ATTACK, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ATTACKSWING_DEADTARGET, STATUS_UNHANDLED);
@@ -992,7 +993,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_XP, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_XP_GAIN, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_HIGHEST_THREAT_UPDATE, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_HIGHEST_THREAT_UPDATE, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_INFO, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INITIALIZE_FACTIONS, STATUS_NEVER);
@@ -1210,8 +1211,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_INVALID, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_LIST, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_REQUEST_ITEMS, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS_MULTIPLE, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS, STATUS_NEVER);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS_MULTIPLE, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTLOG_FULL, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTUPDATE_ADD_KILL, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTUPDATE_ADD_PVP_KILL, STATUS_UNHANDLED);
@@ -1279,7 +1280,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PHASE_SHIFT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PLAY_HOVER_ANIM, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PROFICIENCY, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PROFICIENCY, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_PROJECTILE_POSITION, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_TIME_ZONE_INFORMATION, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SHOWTAXINODES, STATUS_UNHANDLED);
@@ -1357,8 +1358,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEST_DROP_RATE_RESULT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEXT_EMOTE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_CLEAR, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_REMOVE, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_UPDATE, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_REMOVE, STATUS_NEVER);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_UPDATE, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIME_ADJUSTMENT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIME_SYNC_REQ, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TITLE_EARNED, STATUS_UNHANDLED);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 1b2d6c5762a..c176bf5a3b1 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -154,6 +154,12 @@ namespace WorldPackets
class QueryPageText;
}
+ namespace Quest
+ {
+ class QuestGiverStatusQuery;
+ class QuestGiverStatusMultipleQuery;
+ }
+
namespace Movement
{
class ClientPlayerMovement;
@@ -833,8 +839,8 @@ class WorldSession
void HandleUnlearnSkillOpcode(WorldPacket& recvPacket);
void HandleSetSpecializationOpcode(WorldPackets::Talent::SetSpecialization& packet);
- void HandleQuestgiverStatusQueryOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverStatusMultipleQuery(WorldPacket& recvPacket);
+ void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet);
+ void HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& packet);
void HandleQuestgiverHelloOpcode(WorldPacket& recvPacket);
void HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvPacket);
void HandleQuestgiverQueryQuestOpcode(WorldPacket& recvPacket);