Core/PacketIO: Updated and enabled CMSG_SPIRIT_HEALER_ACTIVATE / SMSG_SPIRIT_HEALER_CONFIRM for WoD

This commit is contained in:
Vincent-Michael
2015-04-19 00:22:46 +02:00
parent 9c7914524a
commit 8bde737d3a
6 changed files with 43 additions and 12 deletions
+3 -6
View File
@@ -347,17 +347,14 @@ void WorldSession::HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet)
}
}*/
void WorldSession::HandleSpiritHealerActivateOpcode(WorldPacket& recvData)
void WorldSession::HandleSpiritHealerActivate(WorldPackets::NPC::SpiritHealerActivate& packet)
{
TC_LOG_DEBUG("network", "WORLD: CMSG_SPIRIT_HEALER_ACTIVATE");
ObjectGuid guid;
recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_SPIRITHEALER);
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(packet.Healer, UNIT_NPC_FLAG_SPIRITHEALER);
if (!unit)
{
TC_LOG_DEBUG("network", "WORLD: HandleSpiritHealerActivateOpcode - %s not found or you can not interact with him.", guid.ToString().c_str());
TC_LOG_DEBUG("network", "WORLD: HandleSpiritHealerActivateOpcode - %s not found or you can not interact with him.", packet.Healer.ToString().c_str());
return;
}
@@ -163,3 +163,15 @@ WorldPacket const* WorldPackets::NPC::GossipPOI::Write()
return &_worldPacket;
}
void WorldPackets::NPC::SpiritHealerActivate::Read()
{
_worldPacket >> Healer;
}
WorldPacket const* WorldPackets::NPC::SpiritHealerConfirm::Write()
{
_worldPacket << Unit;
return &_worldPacket;
}
@@ -196,6 +196,26 @@ namespace WorldPackets
int32 Importance = 0;
std::string Name;
};
class SpiritHealerActivate final : public ClientPacket
{
public:
SpiritHealerActivate(WorldPacket&& packet) : ClientPacket(CMSG_SPIRIT_HEALER_ACTIVATE, std::move(packet)) { }
void Read() override;
ObjectGuid Healer;
};
class SpiritHealerConfirm final : public ServerPacket
{
public:
SpiritHealerConfirm() : ServerPacket(SMSG_SPIRIT_HEALER_CONFIRM, 16) { }
WorldPacket const* Write() override;
ObjectGuid Unit;
};
}
}
+2 -2
View File
@@ -760,7 +760,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SORT_BANK_BAGS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SORT_REAGENT_BANK_BAGS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SPELL_CLICK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSpellClick );
DEFINE_OPCODE_HANDLER_OLD(CMSG_SPIRIT_HEALER_ACTIVATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSpiritHealerActivateOpcode);
DEFINE_HANDLER(CMSG_SPIRIT_HEALER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::SpiritHealerActivate, &WorldSession::HandleSpiritHealerActivate);
DEFINE_HANDLER(CMSG_SPLIT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::SplitItem, &WorldSession::HandleSplitItemOpcode);
DEFINE_HANDLER(CMSG_STAND_STATE_CHANGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::StandStateChange, &WorldSession::HandleStandStateChangeOpcode);
DEFINE_HANDLER(CMSG_START_SPECTATOR_WAR_GAME, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -1657,7 +1657,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_PERIODIC_AURA_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_UPDATE_CHAIN_TARGETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPIRIT_HEALER_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPIRIT_HEALER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STAND_STATE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMERS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+2 -1
View File
@@ -338,6 +338,7 @@ namespace WorldPackets
{
class Hello;
class GossipSelectOption;
class SpiritHealerActivate;
}
namespace Petition
@@ -1111,7 +1112,7 @@ class WorldSession
void HandlePetitionShowList(WorldPackets::Petition::PetitionShowList& packet);
void HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet);
void HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet);
void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket);
void HandleSpiritHealerActivate(WorldPackets::NPC::SpiritHealerActivate& packet);
void HandleNpcTextQueryOpcode(WorldPackets::Query::QueryNPCText& packet);
void HandleBinderActivateOpcode(WorldPackets::NPC::Hello& packet);
void HandleListStabledPetsOpcode(WorldPacket& recvPacket);
+4 -3
View File
@@ -38,6 +38,7 @@
#include "SpellAuraEffects.h"
#include "SpellHistory.h"
#include "Vehicle.h"
#include "NPCPackets.h"
class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader
{
@@ -3052,9 +3053,9 @@ class spell_gen_spirit_healer_res : public SpellScriptLoader
Player* originalCaster = GetOriginalCaster()->ToPlayer();
if (Unit* target = GetHitUnit())
{
WorldPacket data(SMSG_SPIRIT_HEALER_CONFIRM, 8);
data << target->GetGUID();
originalCaster->GetSession()->SendPacket(&data);
WorldPackets::NPC::SpiritHealerConfirm spiritHealerConfirm;
spiritHealerConfirm.Unit = target->GetGUID();
originalCaster->GetSession()->SendPacket(spiritHealerConfirm.Write());
}
}