diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/NPCHandler.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/NPCPackets.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Server/Packets/NPCPackets.h | 20 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 7 |
6 files changed, 43 insertions, 12 deletions
diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 9ee942b7fb7..2cd7787dcb2 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -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; } diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 2ca1ad7447d..02186b58a91 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -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; +}
\ No newline at end of file diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index a6e265b5d9f..ec23c51a206 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -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; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 2b5f8c6503d..258fd4a15bb 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -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); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 873a926aa82..29a0a0dba4e 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -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); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 451dc933d86..453fa8ad4cf 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -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()); } } |