aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuarte Duarte <dnpd.dd@gmail.com>2015-02-12 04:23:19 +0000
committerDuarte Duarte <dnpd.dd@gmail.com>2015-02-12 04:23:19 +0000
commit97e62c0ea5a53da71dfb788dfa88f429d04dd8c4 (patch)
tree7cb390e402a9be5066825ebd399c2ab06264730b
parent20aa605485a0772910766255a8e5e4ba2f2d92bc (diff)
Core/Packets: Update and enable CMSG_GOSSIP_SELECT_OPTION, SMSG_BINDER_CONFIRM, SMSG_GOSSIP_COMPLETE and SMSG_PLAYER_BOUND
Fixes #14115
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp6
-rw-r--r--src/server/game/Entities/Player/Player.cpp5
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp70
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp15
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h23
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h21
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2
-rw-r--r--src/server/game/Server/WorldSession.h3
-rw-r--r--src/server/game/Spells/SpellEffects.cpp7
11 files changed, 114 insertions, 58 deletions
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index 3728e567453..314aae65617 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -25,6 +25,7 @@
#include "Formulas.h"
#include "QuestPackets.h"
#include "NPCPackets.h"
+#include "WorldPacket.h"
GossipMenu::GossipMenu()
{
@@ -196,6 +197,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID)
WorldPackets::NPC::GossipMessage packet;
packet.GossipGUID = objectGUID;
+ packet.GossipID = _gossipMenu.GetMenuId();
packet.TextID = titleTextId;
packet.GossipOptions.resize(_gossipMenu.GetMenuItems().size());
@@ -256,8 +258,8 @@ void PlayerMenu::SendCloseGossip()
{
_gossipMenu.SetSenderGUID(ObjectGuid::Empty);
- WorldPacket data(SMSG_GOSSIP_COMPLETE, 0);
- _session->SendPacket(&data);
+ WorldPackets::NPC::GossipComplete packet;
+ _session->SendPacket(packet.Write());
}
void PlayerMenu::SendPointOfInterest(uint32 poiId) const
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index fc7dff4dcac..361c651e882 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -9566,9 +9566,8 @@ uint32 Player::GetXPRestBonus(uint32 xp)
void Player::SetBindPoint(ObjectGuid guid)
{
- WorldPacket data(SMSG_BINDER_CONFIRM, 8);
- data << guid;
- GetSession()->SendPacket(&data);
+ WorldPackets::Misc::BinderConfirm packet(guid);
+ GetSession()->SendPacket(packet.Write());
}
void Player::SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost)
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 02fdb9bd4e4..7a983f7b847 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -59,6 +59,7 @@
#include "CharacterPackets.h"
#include "ClientConfigPackets.h"
#include "MiscPackets.h"
+#include "NPCPackets.h"
#include "AchievementPackets.h"
#include "WhoPackets.h"
@@ -90,53 +91,40 @@ void WorldSession::HandleRepopRequest(WorldPackets::Misc::RepopRequest& packet)
GetPlayer()->RepopAtGraveyard();
}
-void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recvData)
+void WorldSession::HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet)
{
- TC_LOG_DEBUG("network", "WORLD: CMSG_GOSSIP_SELECT_OPTION");
-
- uint32 gossipListId;
- uint32 menuId;
- ObjectGuid guid;
- std::string code = "";
-
- recvData >> guid >> menuId >> gossipListId;
-
- if (!_player->PlayerTalkClass->GetGossipMenu().GetItem(gossipListId))
- {
- recvData.rfinish();
+ if (!_player->PlayerTalkClass->GetGossipMenu().GetItem(packet.GossipIndex))
return;
- }
-
- if (_player->PlayerTalkClass->IsGossipOptionCoded(gossipListId))
- recvData >> code;
// Prevent cheating on C++ scripted menus
- if (_player->PlayerTalkClass->GetGossipMenu().GetSenderGUID() != guid)
+ if (_player->PlayerTalkClass->GetGossipMenu().GetSenderGUID() != packet.GossipUnit)
return;
- Creature* unit = NULL;
- GameObject* go = NULL;
- if (guid.IsCreatureOrVehicle())
+ Creature* unit = nullptr;
+ GameObject* go = nullptr;
+ if (packet.GossipUnit.IsCreatureOrVehicle())
{
- unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE);
+ unit = GetPlayer()->GetNPCIfCanInteractWith(packet.GossipUnit, UNIT_NPC_FLAG_NONE);
if (!unit)
{
- TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found or you can't interact with him.", guid.ToString().c_str());
+
+ TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found or you can't interact with him.", packet.GossipUnit.ToString().c_str());
return;
}
}
- else if (guid.IsGameObject())
+ else if (packet.GossipUnit.IsGameObject())
{
- go = _player->GetMap()->GetGameObject(guid);
+ go = _player->GetMap()->GetGameObject(packet.GossipUnit);
if (!go)
{
- TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found.", guid.ToString().c_str());
+ TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - %s not found.", packet.GossipUnit.ToString().c_str());
return;
}
}
else
{
- TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - unsupported %s.", guid.ToString().c_str());
+
+ TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - unsupported %s.", packet.GossipUnit.ToString().c_str());
return;
}
@@ -149,39 +137,41 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recvData)
TC_LOG_DEBUG("network", "WORLD: HandleGossipSelectOptionOpcode - Script reloaded while in use, ignoring and set new scipt id");
if (unit)
unit->LastUsedScriptID = unit->GetCreatureTemplate()->ScriptID;
+
if (go)
go->LastUsedScriptID = go->GetGOInfo()->ScriptId;
_player->PlayerTalkClass->SendCloseGossip();
return;
}
- if (!code.empty())
+
+ if (!packet.PromotionCode.empty())
{
if (unit)
{
- unit->AI()->sGossipSelectCode(_player, menuId, gossipListId, code.c_str());
- if (!sScriptMgr->OnGossipSelectCode(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId), code.c_str()))
- _player->OnGossipSelect(unit, gossipListId, menuId);
+ unit->AI()->sGossipSelectCode(_player, packet.GossipID, packet.GossipIndex, packet.PromotionCode.c_str());
+ if (!sScriptMgr->OnGossipSelectCode(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex), packet.PromotionCode.c_str()))
+ _player->OnGossipSelect(unit, packet.GossipIndex, packet.GossipID);
}
else
{
- go->AI()->GossipSelectCode(_player, menuId, gossipListId, code.c_str());
- if (!sScriptMgr->OnGossipSelectCode(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId), code.c_str()))
- _player->OnGossipSelect(go, gossipListId, menuId);
+ go->AI()->GossipSelectCode(_player, packet.GossipID, packet.GossipIndex, packet.PromotionCode.c_str());
+ if (!sScriptMgr->OnGossipSelectCode(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex), packet.PromotionCode.c_str()))
+ _player->OnGossipSelect(go, packet.GossipIndex, packet.GossipID);
}
}
else
{
if (unit)
{
- unit->AI()->sGossipSelect(_player, menuId, gossipListId);
- if (!sScriptMgr->OnGossipSelect(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId)))
- _player->OnGossipSelect(unit, gossipListId, menuId);
+ unit->AI()->sGossipSelect(_player, packet.GossipID, packet.GossipIndex);
+ if (!sScriptMgr->OnGossipSelect(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex)))
+ _player->OnGossipSelect(unit, packet.GossipIndex, packet.GossipID);
}
else
{
- go->AI()->GossipSelect(_player, menuId, gossipListId);
- if (!sScriptMgr->OnGossipSelect(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId)))
- _player->OnGossipSelect(go, gossipListId, menuId);
+ go->AI()->GossipSelect(_player, packet.GossipID, packet.GossipIndex);
+ if (!sScriptMgr->OnGossipSelect(_player, go, _player->PlayerTalkClass->GetGossipOptionSender(packet.GossipIndex), _player->PlayerTalkClass->GetGossipOptionAction(packet.GossipIndex)))
+ _player->OnGossipSelect(go, packet.GossipIndex, packet.GossipID);
}
}
}
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index dbd14c469f4..82a49afbcec 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -286,3 +286,18 @@ WorldPacket const* WorldPackets::Misc::StandStateUpdate::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Misc::PlayerBound::Write()
+{
+ _worldPacket << BinderID;
+ _worldPacket << uint32(AreaID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Misc::BinderConfirm::Write()
+{
+ _worldPacket << Unit;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 7ec6ad5923a..53fd7ce8796 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -42,6 +42,29 @@ namespace WorldPackets
uint32 BindAreaID = 0;
};
+ class PlayerBound final : public ServerPacket
+ {
+ public:
+ PlayerBound() : ServerPacket(SMSG_PLAYER_BOUND, 16 + 4) { }
+ PlayerBound(ObjectGuid binderId, uint32 areaId) : ServerPacket(SMSG_PLAYER_BOUND, 16 + 4), BinderID(binderId), AreaID(areaId) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid BinderID;
+ uint32 AreaID = 0;
+ };
+
+ class BinderConfirm final : public ServerPacket
+ {
+ public:
+ BinderConfirm() : ServerPacket(SMSG_BINDER_CONFIRM, 16) { }
+ BinderConfirm(ObjectGuid unit) : ServerPacket(SMSG_BINDER_CONFIRM, 16), Unit(unit) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Unit;
+ };
+
class InvalidatePlayer final : public ServerPacket
{
public:
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
index bd3fe1e5803..1b1ef3ce613 100644
--- a/src/server/game/Server/Packets/NPCPackets.cpp
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -125,3 +125,13 @@ WorldPacket const* WorldPackets::NPC::ShowBank::Write()
return &_worldPacket;
}
+
+void WorldPackets::NPC::GossipSelectOption::Read()
+{
+ _worldPacket >> GossipUnit;
+ _worldPacket >> GossipID;
+ _worldPacket >> GossipIndex;
+
+ uint32 length = _worldPacket.ReadBits(8);
+ PromotionCode = _worldPacket.ReadString(length);
+}
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index 840041983d9..50c174539b5 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -77,6 +77,27 @@ namespace WorldPackets
int32 GossipID = 0;
};
+ class GossipSelectOption final : public ClientPacket
+ {
+ public:
+ GossipSelectOption(WorldPacket&& packet) : ClientPacket(CMSG_GOSSIP_SELECT_OPTION, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid GossipUnit;
+ int32 GossipIndex;
+ int32 GossipID;
+ std::string PromotionCode;
+ };
+
+ class GossipComplete final : public ServerPacket
+ {
+ public:
+ GossipComplete() : ServerPacket(SMSG_GOSSIP_COMPLETE, 0) { }
+
+ WorldPacket const* Write() override { return &_worldPacket; }
+ };
+
struct VendorItem
{
int32 MuID = 0;
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 8230a246265..00d136d9c76 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -397,7 +397,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_RESPONSE_RESOLVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMResponseResolve );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GM_TICKET_UPDATE_TEXT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketUpdateOpcode );
DEFINE_HANDLER(CMSG_GOSSIP_HELLO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleGossipHelloOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_GOSSIP_SELECT_OPTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGossipSelectOptionOpcode );
+ DEFINE_HANDLER(CMSG_GOSSIP_SELECT_OPTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::GossipSelectOption, &WorldSession::HandleGossipSelectOptionOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GRANT_LEVEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGrantLevel );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GROUP_ASSISTANT_LEADER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupAssistantLeaderOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GROUP_CANCEL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -1046,9 +1046,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_REVOKED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_TRAP_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PET_UPDATES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDER_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDPOINTUPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BINDZONEREPLY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_OPEN_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_OUTBID, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1288,7 +1287,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_SYSTEM_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GM_TICKET_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOD_MODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_ACTION_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1660,8 +1659,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_TAME_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_UPDATE_COMBO_POINTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYERBINDERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SKINNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_VEHICLE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_DANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 394448a21b2..6dfa72cf46b 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -949,7 +949,6 @@ enum OpcodeServer : uint32
SMSG_BATTLE_PET_UPDATES = 0x0354,
SMSG_BINDER_CONFIRM = 0x0B11,
SMSG_BINDPOINTUPDATE = 0x0A30,
- SMSG_BINDZONEREPLY = 0xBADD,
SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x0825,
SMSG_BLACK_MARKET_OPEN_RESULT = 0x0A05,
SMSG_BLACK_MARKET_OUTBID = 0x0B1D,
@@ -1561,7 +1560,6 @@ enum OpcodeServer : uint32
SMSG_PET_TAME_FAILURE = 0x0025,
SMSG_PET_UPDATE_COMBO_POINTS = 0xBADD,
SMSG_PLAYED_TIME = 0x038B,
- SMSG_PLAYERBINDERROR = 0xBADD,
SMSG_PLAYER_BOUND = 0x078E,
SMSG_PLAYER_SKINNED = 0x00D2,
SMSG_PLAYER_VEHICLE_DATA = 0xBADD,
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index e6b5b3b215d..d6bdc0f11fb 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -239,6 +239,7 @@ namespace WorldPackets
namespace NPC
{
class Hello;
+ class GossipSelectOption;
}
namespace Query
@@ -922,7 +923,7 @@ class WorldSession
void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
void HandlePetitionShowListOpcode(WorldPacket& recvPacket);
void HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet);
- void HandleGossipSelectOptionOpcode(WorldPacket& recvPacket);
+ void HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet);
void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket);
void HandleNpcTextQueryOpcode(WorldPackets::Query::QueryNPCText& packet);
void HandleBinderActivateOpcode(WorldPackets::NPC::Hello& packet);
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 54f3f95dff9..3a358154bc4 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -66,6 +66,7 @@
#include "GuildMgr.h"
#include "ReputationMgr.h"
#include "AreaTrigger.h"
+#include "MiscPackets.h"
pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
{
@@ -5690,10 +5691,8 @@ void Spell::EffectBind(SpellEffIndex /*effIndex*/)
homeLoc.GetPositionX(), homeLoc.GetPositionY(), homeLoc.GetPositionZ(), homeLoc.GetMapId(), areaId);
// zone update
- WorldPacket data(SMSG_PLAYER_BOUND, 8 + 4);
- data << m_caster->GetGUID();
- data << uint32(areaId);
- player->SendDirectMessage(&data);
+ WorldPackets::Misc::PlayerBound packet(m_caster->GetGUID(), areaId);
+ player->SendDirectMessage(packet.Write());
}
void Spell::EffectSummonRaFFriend(SpellEffIndex /*effIndex*/)