aboutsummaryrefslogtreecommitdiff
path: root/src/game/BattleGroundHandler.cpp
diff options
context:
space:
mode:
authortartalo <none@none>2009-10-22 17:58:25 +0200
committertartalo <none@none>2009-10-22 17:58:25 +0200
commitb90f307f3e88e7b9cb456a6458cb8614e3765fab (patch)
tree03f8e70e89d23f1069483ec877fc2f78cecf8d7f /src/game/BattleGroundHandler.cpp
parent9e8961bc4cd9bb99b863031924f16c6306a1e35d (diff)
*Wintergrasp: Implementation of spirit guides (Part 1), by Spp
*Wintergrasp: minor code optimizations, by Spp *Wintergrasp: Fortress workshop are not capturable, by Spp --HG-- branch : trunk
Diffstat (limited to 'src/game/BattleGroundHandler.cpp')
-rw-r--r--src/game/BattleGroundHandler.cpp39
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 )