diff options
Diffstat (limited to 'src/game/BattleGroundHandler.cpp')
-rw-r--r-- | src/game/BattleGroundHandler.cpp | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/src/game/BattleGroundHandler.cpp b/src/game/BattleGroundHandler.cpp index caf400f7364..bcd446cadfa 100644 --- a/src/game/BattleGroundHandler.cpp +++ b/src/game/BattleGroundHandler.cpp @@ -35,6 +35,11 @@ #include "Object.h" #include "Opcodes.h" +// Temporal fix to wintergrasp spirit guides till 3.2 +#include "Wintergrasp.h" +#include "OutdoorPvPMgr.h" +// WG end + void WorldSession::HandleBattlemasterHelloOpcode( WorldPacket & recv_data ) { uint64 guid; @@ -577,8 +582,6 @@ void WorldSession::HandleAreaSpiritHealerQueryOpcode( WorldPacket & recv_data ) sLog.outDebug("WORLD: CMSG_AREA_SPIRIT_HEALER_QUERY"); BattleGround *bg = _player->GetBattleGround(); - if (!bg) - return; uint64 guid; recv_data >> guid; @@ -590,7 +593,19 @@ void WorldSession::HandleAreaSpiritHealerQueryOpcode( WorldPacket & recv_data ) if(!unit->isSpiritService()) // it's not spirit service return; - sBattleGroundMgr.SendAreaSpiritHealerQueryOpcode(_player, bg, guid); + if (bg) + { + sBattleGroundMgr.SendAreaSpiritHealerQueryOpcode(_player, bg, guid); + } + else + { // Wintergrasp Hack till 3.2 and it's implemented as BG + if (GetPlayer()->GetZoneId() == 4197) + { + OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197); + if (pvpWG && pvpWG->isWarTime()) + pvpWG->SendAreaSpiritHealerQueryOpcode(_player, guid); + } + } } void WorldSession::HandleAreaSpiritHealerQueueOpcode( WorldPacket & recv_data ) @@ -598,8 +613,6 @@ void WorldSession::HandleAreaSpiritHealerQueueOpcode( WorldPacket & recv_data ) sLog.outDebug("WORLD: CMSG_AREA_SPIRIT_HEALER_QUEUE"); BattleGround *bg = _player->GetBattleGround(); - if (!bg) - return; uint64 guid; recv_data >> guid; @@ -611,7 +624,21 @@ void WorldSession::HandleAreaSpiritHealerQueueOpcode( WorldPacket & recv_data ) if(!unit->isSpiritService()) // it's not spirit service return; - bg->AddPlayerToResurrectQueue(guid, _player->GetGUID()); + if (bg) + { + bg->AddPlayerToResurrectQueue(guid, _player->GetGUID()); + } + else + { // Wintergrasp Hack till 3.2 and it's implemented as BG + if (GetPlayer()->GetZoneId() == 4197) + { + OPvPWintergrasp *pvpWG = (OPvPWintergrasp*)sOutdoorPvPMgr.GetOutdoorPvPToZoneId(4197); + if (pvpWG && pvpWG->isWarTime()) + pvpWG->AddPlayerToResurrectQueue(guid, _player->GetGUID()); + } + } + + } void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data ) |