aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/OutdoorPvP
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2015-09-23 20:21:20 +0200
committerCarbenium <carbenium@outlook.com>2015-09-23 20:21:20 +0200
commitff31a1d9eddccca5f8077bb35cd5a7f7740f467d (patch)
tree93a1bc20a25da58e73f356c8dfa14b4b07154748 /src/server/scripts/OutdoorPvP
parentd476e0eff24af5849bbbc21128aa461a24d4fe9b (diff)
parentdcb7082277447c21b11c4a1d59f105fa342c172e (diff)
Merge pull request #15313 from pete318/map_local_guid_335
[3.3.5/Core/Map] map local guids 6.x -> 3.3.5
Diffstat (limited to 'src/server/scripts/OutdoorPvP')
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp83
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp20
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp23
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPNA.h2
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp6
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp9
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp23
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPZM.h4
8 files changed, 88 insertions, 82 deletions
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp
index dec236e5f33..9224817b699 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp
@@ -15,6 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "MapManager.h"
#include "ScriptMgr.h"
#include "OutdoorPvPEP.h"
#include "WorldPacket.h"
@@ -70,16 +71,14 @@ void OPvPCapturePointEP_EWT::ChangeState()
break;
}
- GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
- GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_EWT_FLAGS]);
- if (flag)
- {
- flag->SetGoArtKit(artkit);
- }
- if (flag2)
- {
- flag2->SetGoArtKit(artkit);
- }
+ Map* map = sMapMgr->FindMap(0, 0);
+ auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
+
+ bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_EWT_FLAGS]);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
UpdateTowerState();
@@ -180,16 +179,14 @@ void OPvPCapturePointEP_NPT::ChangeState()
break;
}
- GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
- GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_NPT_FLAGS]);
- if (flag)
- {
- flag->SetGoArtKit(artkit);
- }
- if (flag2)
- {
- flag2->SetGoArtKit(artkit);
- }
+ Map* map = sMapMgr->FindMap(0, 0);
+ auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
+
+ bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_NPT_FLAGS]);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
UpdateTowerState();
@@ -223,9 +220,12 @@ void OPvPCapturePointEP_NPT::SummonGO(uint32 team)
m_SummonedGOSide = team;
DelObject(EP_NPT_BUFF);
AddObject(EP_NPT_BUFF, EP_NPT_LordaeronShrine.entry, EP_NPT_LordaeronShrine.map, EP_NPT_LordaeronShrine.x, EP_NPT_LordaeronShrine.y, EP_NPT_LordaeronShrine.z, EP_NPT_LordaeronShrine.o, EP_NPT_LordaeronShrine.rot0, EP_NPT_LordaeronShrine.rot1, EP_NPT_LordaeronShrine.rot2, EP_NPT_LordaeronShrine.rot3);
- GameObject* go = HashMapHolder<GameObject>::Find(m_Objects[EP_NPT_BUFF]);
- if (go)
- go->SetUInt32Value(GAMEOBJECT_FACTION, (team == ALLIANCE ? 84 : 83));
+
+ Map* map = sMapMgr->FindMap(0, 0);
+ auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_NPT_BUFF]);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ if (GameObject* go = itr->second)
+ go->SetUInt32Value(GAMEOBJECT_FACTION, (team == ALLIANCE ? 84 : 83));
}
}
@@ -274,16 +274,14 @@ void OPvPCapturePointEP_CGT::ChangeState()
break;
}
- GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
- GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_CGT_FLAGS]);
- if (flag)
- {
- flag->SetGoArtKit(artkit);
- }
- if (flag2)
- {
- flag2->SetGoArtKit(artkit);
- }
+ Map* map = sMapMgr->FindMap(0, 0);
+ auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
+
+ bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_CGT_FLAGS]);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
UpdateTowerState();
@@ -375,16 +373,14 @@ void OPvPCapturePointEP_PWT::ChangeState()
break;
}
- GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
- GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_PWT_FLAGS]);
- if (flag)
- {
- flag->SetGoArtKit(artkit);
- }
- if (flag2)
- {
- flag2->SetGoArtKit(artkit);
- }
+ Map* map = sMapMgr->FindMap(0, 0);
+ auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
+
+ bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_PWT_FLAGS]);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
UpdateTowerState();
@@ -479,6 +475,7 @@ bool OutdoorPvPEP::SetupOutdoorPvP()
AddCapturePoint(new OPvPCapturePointEP_PWT(this));
AddCapturePoint(new OPvPCapturePointEP_CGT(this));
AddCapturePoint(new OPvPCapturePointEP_NPT(this));
+ SetMapFromZone(EPBuffZones[0]);
return true;
}
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
index f8a7647a1d5..a639962efde 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
@@ -15,6 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "MapManager.h"
#include "ScriptMgr.h"
#include "OutdoorPvPHP.h"
#include "OutdoorPvP.h"
@@ -58,6 +59,7 @@ OutdoorPvPHP::OutdoorPvPHP()
m_TypeId = OUTDOOR_PVP_HP;
m_AllianceTowersControlled = 0;
m_HordeTowersControlled = 0;
+ SetMapFromZone(OutdoorPvPHPBuffZones[0]);
}
bool OutdoorPvPHP::SetupOutdoorPvP()
@@ -238,16 +240,14 @@ void OPvPCapturePointHP::ChangeState()
break;
}
- GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
- GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[m_TowerType]);
- if (flag)
- {
- flag->SetGoArtKit(artkit);
- }
- if (flag2)
- {
- flag2->SetGoArtKit(artkit2);
- }
+ Map* map = sMapMgr->FindMap(530, 0);
+ auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
+
+ bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[m_TowerType]);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit2);
// send world state update
if (field)
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp
index 761e12b226c..8664acdfc57 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp
@@ -15,6 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "MapManager.h"
#include "ScriptMgr.h"
#include "OutdoorPvPNA.h"
#include "Player.h"
@@ -43,7 +44,7 @@ void OutdoorPvPNA::HandleKillImpl(Player* player, Unit* killed)
uint32 OPvPCapturePointNA::GetAliveGuardsCount()
{
uint32 cnt = 0;
- for (std::map<uint32, ObjectGuid>::iterator itr = m_Creatures.begin(); itr != m_Creatures.end(); ++itr)
+ for (std::map<uint32, uint32>::iterator itr = m_Creatures.begin(); itr != m_Creatures.end(); ++itr)
{
switch (itr->first)
{
@@ -62,10 +63,13 @@ uint32 OPvPCapturePointNA::GetAliveGuardsCount()
case NA_NPC_GUARD_13:
case NA_NPC_GUARD_14:
case NA_NPC_GUARD_15:
- if (Creature const* const cr = HashMapHolder<Creature>::Find(itr->second))
- if (cr->IsAlive())
+ {
+ auto bounds = m_PvP->GetMap()->GetCreatureBySpawnIdStore().equal_range(itr->second);
+ for (auto itr2 = bounds.first; itr2 != bounds.second; ++itr2)
+ if (itr2->second->IsAlive())
++cnt;
break;
+ }
default:
break;
}
@@ -186,6 +190,7 @@ bool OutdoorPvPNA::SetupOutdoorPvP()
{
// m_TypeId = OUTDOOR_PVP_NA; _MUST_ be set in ctor, because of spawns cleanup
// add the zones affected by the pvp buff
+ SetMapFromZone(NA_BUFF_ZONE);
RegisterZone(NA_BUFF_ZONE);
// halaa
@@ -372,9 +377,9 @@ bool OPvPCapturePointNA::HandleCustomSpell(Player* player, uint32 spellId, GameO
return false;
}
-int32 OPvPCapturePointNA::HandleOpenGo(Player* player, ObjectGuid guid)
+int32 OPvPCapturePointNA::HandleOpenGo(Player* player, GameObject* go)
{
- int32 retval = OPvPCapturePoint::HandleOpenGo(player, guid);
+ int32 retval = OPvPCapturePoint::HandleOpenGo(player, go);
if (retval >= 0)
{
const go_type * gos = NULL;
@@ -567,11 +572,9 @@ void OPvPCapturePointNA::ChangeState()
break;
}
- GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
- if (flag)
- {
- flag->SetGoArtKit(artkit);
- }
+ auto bounds = sMapMgr->FindMap(530, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
UpdateHalaaWorldState();
}
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
index fac9d8fa357..07bf6919b7a 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
@@ -269,7 +269,7 @@ class OPvPCapturePointNA : public OPvPCapturePoint
bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go) override;
- int32 HandleOpenGo(Player* player, ObjectGuid guid) override;
+ int32 HandleOpenGo(Player* player, GameObject* go) override;
uint32 GetAliveGuardsCount();
uint32 GetControllingFaction() const;
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
index f052824538e..94ec7acba1f 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
@@ -58,6 +58,8 @@ void OutdoorPvPSI::UpdateWorldState()
bool OutdoorPvPSI::SetupOutdoorPvP()
{
+ SetMapFromZone(OutdoorPvPSIBuffZones[0]);
+
for (uint8 i = 0; i < OutdoorPvPSIBuffZonesNum; ++i)
RegisterZone(OutdoorPvPSIBuffZones[i]);
return true;
@@ -166,7 +168,7 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
return true;
}
- if (!go->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
+ if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
{
delete go;
return true;
@@ -200,7 +202,7 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
return true;
}
- if (!go->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
+ if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), 0, 0, 0, 0, 100, GO_STATE_READY))
{
delete go;
return true;
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
index 17736c7747b..0b68a45f8a5 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
@@ -15,6 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "MapManager.h"
#include "ScriptMgr.h"
#include "OutdoorPvPTF.h"
#include "OutdoorPvPMgr.h"
@@ -227,6 +228,8 @@ bool OutdoorPvPTF::SetupOutdoorPvP()
second_digit = 0;
first_digit = 0;
+ SetMapFromZone(OutdoorPvPTFBuffZones[0]);
+
// add the zones affected by the pvp buff
for (uint8 i = 0; i < OutdoorPvPTFBuffZonesNum; ++i)
RegisterZone(OutdoorPvPTFBuffZones[i]);
@@ -310,9 +313,9 @@ void OPvPCapturePointTF::ChangeState()
break;
}
- GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
- if (flag)
- flag->SetGoArtKit(artkit);
+ auto bounds = sMapMgr->FindMap(530, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
+ for (auto itr = bounds.first; itr != bounds.second; ++itr)
+ itr->second->SetGoArtKit(artkit);
UpdateTowerState();
}
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp
index ee86d8efc90..54aa815617e 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp
@@ -15,6 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "MapManager.h"
#include "ScriptMgr.h"
#include "OutdoorPvPZM.h"
#include "ObjectMgr.h"
@@ -151,6 +152,8 @@ bool OutdoorPvPZM::SetupOutdoorPvP()
m_AllianceTowersControlled = 0;
m_HordeTowersControlled = 0;
+ SetMapFromZone(OutdoorPvPZMBuffZones[0]);
+
// add the zones affected by the pvp buff
for (uint8 i = 0; i < OutdoorPvPZMBuffZonesNum; ++i)
RegisterZone(OutdoorPvPZMBuffZones[i]);
@@ -181,9 +184,9 @@ bool OPvPCapturePointZM_GraveYard::Update(uint32 /*diff*/)
return retval;
}
-int32 OPvPCapturePointZM_GraveYard::HandleOpenGo(Player* player, ObjectGuid guid)
+int32 OPvPCapturePointZM_GraveYard::HandleOpenGo(Player* player, GameObject* go)
{
- int32 retval = OPvPCapturePoint::HandleOpenGo(player, guid);
+ int32 retval = OPvPCapturePoint::HandleOpenGo(player, go);
if (retval >= 0)
{
if (player->HasAura(ZM_BATTLE_STANDARD_A) && m_GraveYardState != ZM_GRAVEYARD_A)
@@ -297,8 +300,8 @@ void OPvPCapturePointZM_GraveYard::SetBeaconState(uint32 controlling_faction)
bool OPvPCapturePointZM_GraveYard::CanTalkTo(Player* player, Creature* c, GossipMenuItems const& /*gso*/)
{
- ObjectGuid guid = c->GetGUID();
- std::map<ObjectGuid, uint32>::iterator itr = m_CreatureTypes.find(guid);
+ std::map<uint32, uint32>::iterator itr = m_CreatureTypes.find(c->GetSpawnId());
+
if (itr != m_CreatureTypes.end())
{
if (itr->second == ZM_ALLIANCE_FIELD_SCOUT && player->GetTeam() == ALLIANCE && m_BothControllingFaction == ALLIANCE && !m_FlagCarrierGUID && m_GraveYardState != ZM_GRAVEYARD_A)
@@ -309,25 +312,23 @@ bool OPvPCapturePointZM_GraveYard::CanTalkTo(Player* player, Creature* c, Gossip
return false;
}
-bool OPvPCapturePointZM_GraveYard::HandleGossipOption(Player* player, ObjectGuid guid, uint32 /*gossipid*/)
+bool OPvPCapturePointZM_GraveYard::HandleGossipOption(Player* player, Creature* creature, uint32 /*gossipid*/)
{
- std::map<ObjectGuid, uint32>::iterator itr = m_CreatureTypes.find(guid);
+ std::map<uint32, uint32>::iterator itr = m_CreatureTypes.find(creature->GetSpawnId());
+
if (itr != m_CreatureTypes.end())
{
- Creature* cr = HashMapHolder<Creature>::Find(guid);
- if (!cr)
- return true;
// if the flag is already taken, then return
if (m_FlagCarrierGUID)
return true;
if (itr->second == ZM_ALLIANCE_FIELD_SCOUT)
{
- cr->CastSpell(player, ZM_BATTLE_STANDARD_A, true);
+ creature->CastSpell(player, ZM_BATTLE_STANDARD_A, true);
m_FlagCarrierGUID = player->GetGUID();
}
else if (itr->second == ZM_HORDE_FIELD_SCOUT)
{
- cr->CastSpell(player, ZM_BATTLE_STANDARD_H, true);
+ creature->CastSpell(player, ZM_BATTLE_STANDARD_H, true);
m_FlagCarrierGUID = player->GetGUID();
}
UpdateTowerState();
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h
index a07905b3ae6..4be0d0eedb7 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h
@@ -192,11 +192,11 @@ class OPvPCapturePointZM_GraveYard : public OPvPCapturePoint
void UpdateTowerState();
- int32 HandleOpenGo(Player* player, ObjectGuid guid) override;
+ int32 HandleOpenGo(Player* player, GameObject* go) override;
void SetBeaconState(uint32 controlling_team); // not good atm
- bool HandleGossipOption(Player* player, ObjectGuid guid, uint32 gossipid) override;
+ bool HandleGossipOption(Player* player, Creature* creature, uint32 gossipid) override;
bool HandleDropFlag(Player* player, uint32 spellId) override;