diff options
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/MiscHandler.cpp | 14 | ||||
| -rwxr-xr-x | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/Server/WorldSession.h | 1 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp index 62fd3608e3c..1d3e72e68bd 100755 --- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp @@ -1716,3 +1716,17 @@ void WorldSession::SendSetPhaseShift(uint32 PhaseShift) data << uint32(PhaseShift); SendPacket(&data); } + +void WorldSession::HandleHearthAndResurrect(WorldPacket &recv_data) +{ + if (_player->isInFlight()) + return; + + AreaTableEntry const *atEntry = sAreaStore.LookupEntry(_player->GetAreaId()); + if (!atEntry || !(atEntry->flags & AREA_FLAG_OUTDOOR_PVP2)) + return; + + _player->BuildPlayerRepop(); + _player->ResurrectPlayer(100); + _player->TeleportTo(_player->m_homebindMapId, _player->m_homebindX, _player->m_homebindY, _player->m_homebindZ, _player->GetOrientation()); +} diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index a17d9474f39..200ae7418e0 100755 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1206,7 +1206,7 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] = /*0x499*/ { "SMSG_PET_LEARNED_SPELL", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x49A*/ { "SMSG_PET_REMOVED_SPELL", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x49B*/ { "CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE", STATUS_LOGGEDIN, &WorldSession::HandleChangeSeatsOnControlledVehicle}, - /*0x49C*/ { "CMSG_HEARTH_AND_RESURRECT", STATUS_NEVER, &WorldSession::Handle_NULL }, + /*0x49C*/ { "CMSG_HEARTH_AND_RESURRECT", STATUS_LOGGEDIN, &WorldSession::HandleHearthAndResurrect, }, /*0x49D*/ { "SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x49E*/ { "SMSG_CRITERIA_DELETED", STATUS_NEVER, &WorldSession::Handle_ServerSide }, /*0x49F*/ { "SMSG_ACHIEVEMENT_DELETED", STATUS_NEVER, &WorldSession::Handle_ServerSide }, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 4284cd86021..5f5f4d1b335 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -708,6 +708,7 @@ class WorldSession void HandleTimeSyncResp(WorldPacket& recv_data); void HandleWhoisOpcode(WorldPacket& recv_data); void HandleResetInstancesOpcode(WorldPacket& recv_data); + void HandleHearthAndResurrect(WorldPacket& recv_data); // Looking for Dungeon/Raid void HandleSetLfgCommentOpcode(WorldPacket & recv_data); |
