aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/OutdoorPvP
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-18 22:35:54 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-18 22:35:54 +0200
commit195341c807fa98e76608fb9449979f6be8b5362e (patch)
treeb12f4cbcd3fd345066c409df5e067a3b9c29ad6b /src/server/scripts/OutdoorPvP
parent1f853d068ff1b25ea51031d2e2f2a269d7998d47 (diff)
Core/OutdoorPvP: Move remaining outdoorpvp spawns to db
Diffstat (limited to 'src/server/scripts/OutdoorPvP')
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp60
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPHP.h7
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp47
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPTF.h3
4 files changed, 74 insertions, 43 deletions
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
index d6cebc606dd..68bcef12d02 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
@@ -34,29 +34,18 @@ uint32 const HP_TowerArtKit_A[HP_TOWER_NUM] = { 65, 62, 67 };
uint32 const HP_TowerArtKit_H[HP_TOWER_NUM] = { 64, 61, 68 };
uint32 const HP_TowerArtKit_N[HP_TOWER_NUM] = { 66, 63, 69 };
-go_type const HPCapturePoints[HP_TOWER_NUM] =
-{
- { 182175, 530, { -471.462f, 3451.09f, 34.6432f, 0.174533f }, { 0.0f, 0.0f, 0.087156f, 0.996195f } }, // 0 - Broken Hill
- { 182174, 530, { -184.889f, 3476.93f, 38.2050f, -0.017453f }, { 0.0f, 0.0f, 0.008727f, -0.999962f } }, // 1 - Overlook
- { 182173, 530, { -290.016f, 3702.42f, 56.6729f, 0.034907f }, { 0.0f, 0.0f, 0.017452f, 0.999848f } } // 2 - Stadium
-};
-
-go_type const HPTowerFlags[HP_TOWER_NUM] =
-{
- { 183514, 530, { -467.078f, 3528.17f, 64.7121f, 3.14159f }, { 0.0f, 0.0f, 1.000000f, 0.000000f } }, // 0 broken hill
- { 182525, 530, { -187.887f, 3459.38f, 60.0403f, -3.12414f }, { 0.0f, 0.0f, 0.999962f, -0.008727f } }, // 1 overlook
- { 183515, 530, { -289.610f, 3696.83f, 75.9447f, 3.12414f }, { 0.0f, 0.0f, 0.999962f, 0.008727f } } // 2 stadium
-};
-
uint32 const HP_LANG_CAPTURE_A[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_ALLIANCE, TEXT_OVERLOOK_TAKEN_ALLIANCE, TEXT_STADIUM_TAKEN_ALLIANCE };
uint32 const HP_LANG_CAPTURE_H[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_HORDE, TEXT_OVERLOOK_TAKEN_HORDE, TEXT_STADIUM_TAKEN_HORDE };
-OPvPCapturePointHP::OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type) : OPvPCapturePoint(pvp), m_TowerType(type)
+OPvPCapturePointHP::OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type, GameObject* go, ObjectGuid::LowType const& flagSpawnId)
+ : OPvPCapturePoint(pvp), m_TowerType(type), m_flagSpawnId(flagSpawnId)
{
- SetCapturePointData(HPCapturePoints[type].entry, HPCapturePoints[type].map, HPCapturePoints[type].pos, HPCapturePoints[type].rot);
- AddObject(type, HPTowerFlags[type].entry, HPTowerFlags[type].map, HPTowerFlags[type].pos, HPTowerFlags[type].rot);
+ m_capturePointSpawnId = go->GetSpawnId();
+ m_capturePoint = go;
+ SetCapturePointData(go->GetEntry());
}
-OutdoorPvPHP::OutdoorPvPHP()
+
+OutdoorPvPHP::OutdoorPvPHP() : m_towerFlagSpawnIds()
{
m_TypeId = OUTDOOR_PVP_HP;
m_AllianceTowersControlled = 0;
@@ -73,13 +62,36 @@ bool OutdoorPvPHP::SetupOutdoorPvP()
for (uint32 i = 0; i < OutdoorPvPHPBuffZonesNum; ++i)
RegisterZone(OutdoorPvPHPBuffZones[i]);
- AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_BROKEN_HILL));
-
- AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_OVERLOOK));
+ return true;
+}
- AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_STADIUM));
+void OutdoorPvPHP::OnGameObjectCreate(GameObject* go)
+{
+ switch (go->GetEntry())
+ {
+ case 182175:
+ AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_BROKEN_HILL, go, m_towerFlagSpawnIds[HP_TOWER_BROKEN_HILL]));
+ break;
+ case 182174:
+ AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_OVERLOOK, go, m_towerFlagSpawnIds[HP_TOWER_OVERLOOK]));
+ break;
+ case 182173:
+ AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_STADIUM, go, m_towerFlagSpawnIds[HP_TOWER_STADIUM]));
+ break;
+ case 183514:
+ m_towerFlagSpawnIds[HP_TOWER_BROKEN_HILL] = go->GetSpawnId();
+ break;
+ case 182525:
+ m_towerFlagSpawnIds[HP_TOWER_OVERLOOK] = go->GetSpawnId();
+ break;
+ case 183515:
+ m_towerFlagSpawnIds[HP_TOWER_STADIUM] = go->GetSpawnId();
+ break;
+ default:
+ break;
+ }
- return true;
+ OutdoorPvP::OnGameObjectCreate(go);
}
void OutdoorPvPHP::HandlePlayerEnterZone(Player* player, uint32 zone)
@@ -243,7 +255,7 @@ void OPvPCapturePointHP::ChangeState()
for (auto itr = bounds.first; itr != bounds.second; ++itr)
itr->second->SetGoArtKit(artkit);
- bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[m_TowerType]);
+ bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_flagSpawnId);
for (auto itr = bounds.first; itr != bounds.second; ++itr)
itr->second->SetGoArtKit(artkit2);
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h
index 6ce163c9ebc..4c9ee6bc278 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h
@@ -19,6 +19,7 @@
#define OUTDOOR_PVP_HP_
#include "OutdoorPvP.h"
+#include <array>
enum DefenseMessages
{
@@ -58,12 +59,13 @@ enum OutdoorPvPHPWorldStates
class OPvPCapturePointHP : public OPvPCapturePoint
{
public:
- OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type);
+ OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type, GameObject* go, ObjectGuid::LowType const& flagSpawnId);
void ChangeState() override;
private:
OutdoorPvPHPTowerType m_TowerType;
+ ObjectGuid::LowType const& m_flagSpawnId;
};
class OutdoorPvPHP : public OutdoorPvP
@@ -73,6 +75,8 @@ class OutdoorPvPHP : public OutdoorPvP
bool SetupOutdoorPvP() override;
+ void OnGameObjectCreate(GameObject* go) override;
+
void HandlePlayerEnterZone(Player* player, uint32 zone) override;
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
@@ -88,6 +92,7 @@ class OutdoorPvPHP : public OutdoorPvP
private:
uint32 m_AllianceTowersControlled; // how many towers are controlled
uint32 m_HordeTowersControlled;
+ std::array<ObjectGuid::LowType, HP_TOWER_NUM> m_towerFlagSpawnIds;
};
#endif
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
index 48951be2d9c..4dba5934a48 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
@@ -45,15 +45,6 @@ int32 const TF_CAPTURE_BUFF = 33377;
uint32 const TF_ALLY_QUEST = 11505;
uint32 const TF_HORDE_QUEST = 11506;
-go_type const TFCapturePoints[TF_TOWER_NUM] =
-{
- { 183104, 530, { -3081.65f, 5335.03f, 17.1853f, -2.146750f }, { 0.0f, 0.0f, 0.878817f, -0.477159f } },
- { 183411, 530, { -2939.90f, 4788.73f, 18.9870f, 2.775070f }, { 0.0f, 0.0f, 0.983255f, 0.182236f } },
- { 183412, 530, { -3174.94f, 4440.97f, 16.2281f, 1.867500f }, { 0.0f, 0.0f, 0.803857f, 0.594823f } },
- { 183413, 530, { -3603.31f, 4529.15f, 20.9077f, 0.994838f }, { 0.0f, 0.0f, 0.477159f, 0.878817f } },
- { 183414, 530, { -3812.37f, 4899.30f, 17.7249f, 0.087266f }, { 0.0f, 0.0f, 0.043619f, 0.999048f } }
-};
-
struct tf_tower_world_state
{
int32 n;
@@ -103,9 +94,11 @@ OutdoorPvPTF::OutdoorPvPTF()
first_digit = 0;
}
-OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N)
+OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type, GameObject* go) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N)
{
- SetCapturePointData(TFCapturePoints[type].entry, TFCapturePoints[type].map, TFCapturePoints[type].pos, TFCapturePoints[type].rot);
+ m_capturePointSpawnId = go->GetSpawnId();
+ m_capturePoint = go;
+ SetCapturePointData(go->GetEntry());
}
void OutdoorPvPTF::SendRemoveWorldStates(Player* player)
@@ -275,15 +268,35 @@ bool OutdoorPvPTF::SetupOutdoorPvP()
for (uint8 i = 0; i < OutdoorPvPTFBuffZonesNum; ++i)
RegisterZone(OutdoorPvPTFBuffZones[i]);
- AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NW));
- AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_N));
- AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NE));
- AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_SE));
- AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_S));
-
return true;
}
+void OutdoorPvPTF::OnGameObjectCreate(GameObject* go)
+{
+ switch (go->GetEntry())
+ {
+ case 183104:
+ AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NW, go));
+ break;
+ case 183411:
+ AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_N, go));
+ break;
+ case 183412:
+ AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NE, go));
+ break;
+ case 183413:
+ AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_SE, go));
+ break;
+ case 183414:
+ AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_S, go));
+ break;
+ default:
+ break;
+ }
+
+ OutdoorPvP::OnGameObjectCreate(go);
+}
+
bool OPvPCapturePointTF::Update(uint32 diff)
{
// can update even in locked state if gathers the controlling faction
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h
index 2aeb1c093e0..e7b7e13268c 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h
@@ -64,7 +64,7 @@ enum TFTowerStates
class OPvPCapturePointTF : public OPvPCapturePoint
{
public:
- OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type);
+ OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type, GameObject* go);
bool Update(uint32 diff) override;
void ChangeState() override;
@@ -82,6 +82,7 @@ class OutdoorPvPTF : public OutdoorPvP
OutdoorPvPTF();
bool SetupOutdoorPvP() override;
+ void OnGameObjectCreate(GameObject* go) override;
void HandlePlayerEnterZone(Player* player, uint32 zone) override;
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
bool Update(uint32 diff) override;