Core/OutdoorPvP: Move remaining outdoorpvp spawns to db

This commit is contained in:
Shauren
2022-07-18 22:35:54 +02:00
parent 1f853d068f
commit 195341c807
5 changed files with 88 additions and 44 deletions

View File

@@ -0,0 +1,13 @@
DELETE FROM `gameobject` WHERE `guid` BETWEEN 23303 AND 23313;
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `phaseUseFlags`, `PhaseId`, `PhaseGroup`, `terrainSwapMap`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES
(23303, 183104, 530, 0, 0, '0', 0, 0, 0, -1, -3081.65, 5335.03, 17.1853, -2.146750, 0, 0, 0.878817, -0.477159, 0, 0, 1, '', 0),
(23304, 183411, 530, 0, 0, '0', 0, 0, 0, -1, -2939.90, 4788.73, 18.9870, 2.775070, 0, 0, 0.983255, 0.182236, 0, 0, 1, '', 0),
(23305, 183412, 530, 0, 0, '0', 0, 0, 0, -1, -3174.94, 4440.97, 16.2281, 1.867500, 0, 0, 0.803857, 0.594823, 0, 0, 1, '', 0),
(23306, 183413, 530, 0, 0, '0', 0, 0, 0, -1, -3603.31, 4529.15, 20.9077, 0.994838, 0, 0, 0.477159, 0.878817, 0, 0, 1, '', 0),
(23307, 183414, 530, 0, 0, '0', 0, 0, 0, -1, -3812.37, 4899.30, 17.7249, 0.087266, 0, 0, 0.043619, 0.999048, 0, 0, 1, '', 0),
(23308, 182175, 530, 0, 0, '0', 0, 0, 0, -1, -471.462, 3451.09, 34.6432, 0.174533, 0, 0, 0.087156, 0.996195, 0, 0, 1, '', 0),
(23309, 182174, 530, 0, 0, '0', 0, 0, 0, -1, -184.889, 3476.93, 38.2050, -0.017453, 0, 0, 0.008727, -0.999962, 0, 0, 1, '', 0),
(23310, 182173, 530, 0, 0, '0', 0, 0, 0, -1, -290.016, 3702.42, 56.6729, 0.034907, 0, 0, 0.017452, 0.999848, 0, 0, 1, '', 0),
(23311, 183514, 530, 0, 0, '0', 0, 0, 0, -1, -467.078, 3528.17, 64.7121, 3.14159, 0, 0, 1.000000, 0.000000, 0, 0, 1, '', 0),
(23312, 182525, 530, 0, 0, '0', 0, 0, 0, -1, -187.887, 3459.38, 60.0403, -3.12414, 0, 0, 0.999962, -0.008727, 0, 0, 1, '', 0),
(23313, 183515, 530, 0, 0, '0', 0, 0, 0, -1, -289.610, 3696.83, 75.9447, 3.12414, 0, 0, 0.999962, 0.008727, 0, 0, 1, '', 0);

View File

@@ -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,15 +62,38 @@ 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));
AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_STADIUM));
return true;
}
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;
}
OutdoorPvP::OnGameObjectCreate(go);
}
void OutdoorPvPHP::HandlePlayerEnterZone(Player* player, uint32 zone)
{
// add buffs
@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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;