mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Core/OutdoorPvP: refactor using Position and Quat to pack parameters
- Moved statics to cpp - Save scriptids into an array
This commit is contained in:
@@ -27,11 +27,76 @@
|
||||
#include "Creature.h"
|
||||
#include "GossipDef.h"
|
||||
|
||||
uint32 const EP_AllianceBuffs[4] = { 11413, 11414, 11415, 1386 };
|
||||
|
||||
uint32 const EP_HordeBuffs[4] = { 30880, 30683, 30682, 29520 };
|
||||
|
||||
uint32 const EP_GraveYardZone = 139;
|
||||
|
||||
uint32 const EP_GraveYardId = 927;
|
||||
|
||||
uint8 const EPBuffZonesNum = 3;
|
||||
|
||||
uint32 const EP_EWT_CM = 17690;
|
||||
uint32 const EP_CGT_CM = 17689;
|
||||
uint32 const EP_NPT_CM = 17696;
|
||||
uint32 const EP_PWT_CM = 17698;
|
||||
|
||||
uint32 const EPBuffZones[EPBuffZonesNum] = { 139, 2017, 2057 };
|
||||
|
||||
uint32 const EPTowerPlayerEnterEvents[EP_TOWER_NUM] = { 10691, 10699, 10701, 10705 };
|
||||
uint32 const EPTowerPlayerLeaveEvents[EP_TOWER_NUM] = { 10692, 10698, 10700, 10704 };
|
||||
|
||||
go_type const EPCapturePoints[EP_TOWER_NUM] =
|
||||
{
|
||||
{ 182097, 0, { 2574.51f, -4794.89f, 144.704f, -1.45003f }, { -0.097056f, 0.095578f, -0.656229f, 0.742165f } },
|
||||
{ 181899, 0, { 3181.08f, -4379.36f, 174.123f, -2.03472f }, { -0.065392f, 0.119494f, -0.842275f, 0.521553f } },
|
||||
{ 182098, 0, { 2962.71f, -3042.31f, 154.789f, 2.08426f }, { -0.074807f, -0.113837f, 0.855928f, 0.498830f } },
|
||||
{ 182096, 0, { 1860.85f, -3731.23f, 196.716f, -2.53214f }, { 0.033967f, -0.131914f, 0.944741f, -0.298177f } }
|
||||
};
|
||||
|
||||
go_type const EPTowerFlags[EP_TOWER_NUM] =
|
||||
{
|
||||
{ 182106, 0, { 2569.60f, -4772.93f, 115.399f, 2.722710f }, { 0.0f, 0.0f, 0.978148f, 0.207912f } },
|
||||
{ 182106, 0, { 3148.17f, -4365.51f, 145.029f, 1.535890f }, { 0.0f, 0.0f, 0.694658f, 0.719340f } },
|
||||
{ 182106, 0, { 2992.63f, -3022.95f, 125.593f, 3.036870f }, { 0.0f, 0.0f, 0.998630f, 0.052336f } },
|
||||
{ 182106, 0, { 1838.42f, -3703.56f, 167.713f, 0.890118f }, { 0.0f, 0.0f, 0.430511f, 0.902585f } }
|
||||
};
|
||||
|
||||
uint8 const EP_NUM_CREATURES = 6;
|
||||
uint8 const EP_EWT_NUM_CREATURES = 5;
|
||||
|
||||
// one lordaeron commander, 4 soldiers
|
||||
// should be spawned at EWT and follow a path, but trans-grid pathing isn't safe, so summon them directly at NPT
|
||||
creature_type const EP_EWT_Summons_A[EP_EWT_NUM_CREATURES] =
|
||||
{
|
||||
{ 17635, 0, { 3167.61f, -4352.09f, 138.20f, 4.5811f } },
|
||||
{ 17647, 0, { 3172.74f, -4352.99f, 139.14f, 4.9873f } },
|
||||
{ 17647, 0, { 3165.89f, -4354.46f, 138.67f, 3.7244f } },
|
||||
{ 17647, 0, { 3164.65f, -4350.26f, 138.22f, 2.4794f } },
|
||||
{ 17647, 0, { 3169.91f, -4349.68f, 138.37f, 0.7444f } }
|
||||
};
|
||||
|
||||
creature_type const EP_EWT_Summons_H[EP_EWT_NUM_CREATURES] =
|
||||
{
|
||||
{ 17995, 0, { 3167.61f, -4352.09f, 138.20f, 4.5811f } },
|
||||
{ 17996, 0, { 3172.74f, -4352.99f, 139.14f, 4.9873f } },
|
||||
{ 17996, 0, { 3165.89f, -4354.46f, 138.67f, 3.7244f } },
|
||||
{ 17996, 0, { 3164.65f, -4350.26f, 138.22f, 2.4794f } },
|
||||
{ 17996, 0, { 3169.91f, -4349.68f, 138.37f, 0.7444f } }
|
||||
};
|
||||
|
||||
// when spawning, pay attention at setting the faction manually!
|
||||
creature_type const EP_PWT_FlightMaster = { 17209, 0, { 2987.5f, -3049.11f, 120.126f, 5.75959f } };
|
||||
|
||||
// after spawning, modify the faction so that only the controller will be able to use it with SetUInt32Value(GAMEOBJECT_FACTION, faction_id);
|
||||
go_type const EP_NPT_LordaeronShrine = { 181682, 0, { 3167.72f, -4355.91f, 138.785f, 1.69297f }, { 0.0f, 0.0f, 0.748956f, 0.66262f } };
|
||||
|
||||
OPvPCapturePointEP_EWT::OPvPCapturePointEP_EWT(OutdoorPvP* pvp)
|
||||
: OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_UnitsSummonedSide(0)
|
||||
{
|
||||
SetCapturePointData(EPCapturePoints[EP_EWT].entry, EPCapturePoints[EP_EWT].map, EPCapturePoints[EP_EWT].x, EPCapturePoints[EP_EWT].y, EPCapturePoints[EP_EWT].z, EPCapturePoints[EP_EWT].o, EPCapturePoints[EP_EWT].rot0, EPCapturePoints[EP_EWT].rot1, EPCapturePoints[EP_EWT].rot2, EPCapturePoints[EP_EWT].rot3);
|
||||
AddObject(EP_EWT_FLAGS, EPTowerFlags[EP_EWT].entry, EPTowerFlags[EP_EWT].map, EPTowerFlags[EP_EWT].x, EPTowerFlags[EP_EWT].y, EPTowerFlags[EP_EWT].z, EPTowerFlags[EP_EWT].o, EPTowerFlags[EP_EWT].rot0, EPTowerFlags[EP_EWT].rot1, EPTowerFlags[EP_EWT].rot2, EPTowerFlags[EP_EWT].rot3);
|
||||
SetCapturePointData(EPCapturePoints[EP_EWT].entry, EPCapturePoints[EP_EWT].map, EPCapturePoints[EP_EWT].pos, EPCapturePoints[EP_EWT].rot);
|
||||
AddObject(EP_EWT_FLAGS, EPTowerFlags[EP_EWT].entry, EPTowerFlags[EP_EWT].map, EPTowerFlags[EP_EWT].pos, EPTowerFlags[EP_EWT].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_EWT::ChangeState()
|
||||
@@ -119,7 +184,7 @@ void OPvPCapturePointEP_EWT::SummonSupportUnitAtNorthpassTower(uint32 team)
|
||||
for (uint8 i = 0; i < EP_EWT_NUM_CREATURES; ++i)
|
||||
{
|
||||
DelCreature(i);
|
||||
AddCreature(i, ct[i].entry, ct[i].map, ct[i].x, ct[i].y, ct[i].z, ct[i].o, OutdoorPvP::GetTeamIdByTeam(team), 1000000);
|
||||
AddCreature(i, ct[i].entry, ct[i].map, ct[i].pos, OutdoorPvP::GetTeamIdByTeam(team), 1000000);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,8 +193,8 @@ void OPvPCapturePointEP_EWT::SummonSupportUnitAtNorthpassTower(uint32 team)
|
||||
OPvPCapturePointEP_NPT::OPvPCapturePointEP_NPT(OutdoorPvP* pvp)
|
||||
: OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_SummonedGOSide(0)
|
||||
{
|
||||
SetCapturePointData(EPCapturePoints[EP_NPT].entry, EPCapturePoints[EP_NPT].map, EPCapturePoints[EP_NPT].x, EPCapturePoints[EP_NPT].y, EPCapturePoints[EP_NPT].z, EPCapturePoints[EP_NPT].o, EPCapturePoints[EP_NPT].rot0, EPCapturePoints[EP_NPT].rot1, EPCapturePoints[EP_NPT].rot2, EPCapturePoints[EP_NPT].rot3);
|
||||
AddObject(EP_NPT_FLAGS, EPTowerFlags[EP_NPT].entry, EPTowerFlags[EP_NPT].map, EPTowerFlags[EP_NPT].x, EPTowerFlags[EP_NPT].y, EPTowerFlags[EP_NPT].z, EPTowerFlags[EP_NPT].o, EPTowerFlags[EP_NPT].rot0, EPTowerFlags[EP_NPT].rot1, EPTowerFlags[EP_NPT].rot2, EPTowerFlags[EP_NPT].rot3);
|
||||
SetCapturePointData(EPCapturePoints[EP_NPT].entry, EPCapturePoints[EP_NPT].map, EPCapturePoints[EP_NPT].pos, EPCapturePoints[EP_NPT].rot);
|
||||
AddObject(EP_NPT_FLAGS, EPTowerFlags[EP_NPT].entry, EPTowerFlags[EP_NPT].map, EPTowerFlags[EP_NPT].pos, EPTowerFlags[EP_NPT].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_NPT::ChangeState()
|
||||
@@ -219,7 +284,7 @@ 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);
|
||||
AddObject(EP_NPT_BUFF, EP_NPT_LordaeronShrine.entry, EP_NPT_LordaeronShrine.map, EP_NPT_LordaeronShrine.pos, EP_NPT_LordaeronShrine.rot);
|
||||
|
||||
Map* map = sMapMgr->FindMap(0, 0);
|
||||
auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[EP_NPT_BUFF]);
|
||||
@@ -233,8 +298,8 @@ void OPvPCapturePointEP_NPT::SummonGO(uint32 team)
|
||||
OPvPCapturePointEP_CGT::OPvPCapturePointEP_CGT(OutdoorPvP* pvp)
|
||||
: OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_GraveyardSide(0)
|
||||
{
|
||||
SetCapturePointData(EPCapturePoints[EP_CGT].entry, EPCapturePoints[EP_CGT].map, EPCapturePoints[EP_CGT].x, EPCapturePoints[EP_CGT].y, EPCapturePoints[EP_CGT].z, EPCapturePoints[EP_CGT].o, EPCapturePoints[EP_CGT].rot0, EPCapturePoints[EP_CGT].rot1, EPCapturePoints[EP_CGT].rot2, EPCapturePoints[EP_CGT].rot3);
|
||||
AddObject(EP_CGT_FLAGS, EPTowerFlags[EP_CGT].entry, EPTowerFlags[EP_CGT].map, EPTowerFlags[EP_CGT].x, EPTowerFlags[EP_CGT].y, EPTowerFlags[EP_CGT].z, EPTowerFlags[EP_CGT].o, EPTowerFlags[EP_CGT].rot0, EPTowerFlags[EP_CGT].rot1, EPTowerFlags[EP_CGT].rot2, EPTowerFlags[EP_CGT].rot3);
|
||||
SetCapturePointData(EPCapturePoints[EP_CGT].entry, EPCapturePoints[EP_CGT].map, EPCapturePoints[EP_CGT].pos, EPCapturePoints[EP_CGT].rot);
|
||||
AddObject(EP_CGT_FLAGS, EPTowerFlags[EP_CGT].entry, EPTowerFlags[EP_CGT].map, EPTowerFlags[EP_CGT].pos, EPTowerFlags[EP_CGT].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_CGT::ChangeState()
|
||||
@@ -322,8 +387,8 @@ void OPvPCapturePointEP_CGT::LinkGraveYard(uint32 team)
|
||||
OPvPCapturePointEP_PWT::OPvPCapturePointEP_PWT(OutdoorPvP* pvp)
|
||||
: OPvPCapturePoint(pvp), m_FlightMasterSpawned(0), m_TowerState(EP_TS_N)
|
||||
{
|
||||
SetCapturePointData(EPCapturePoints[EP_PWT].entry, EPCapturePoints[EP_PWT].map, EPCapturePoints[EP_PWT].x, EPCapturePoints[EP_PWT].y, EPCapturePoints[EP_PWT].z, EPCapturePoints[EP_PWT].o, EPCapturePoints[EP_PWT].rot0, EPCapturePoints[EP_PWT].rot1, EPCapturePoints[EP_PWT].rot2, EPCapturePoints[EP_PWT].rot3);
|
||||
AddObject(EP_PWT_FLAGS, EPTowerFlags[EP_PWT].entry, EPTowerFlags[EP_PWT].map, EPTowerFlags[EP_PWT].x, EPTowerFlags[EP_PWT].y, EPTowerFlags[EP_PWT].z, EPTowerFlags[EP_PWT].o, EPTowerFlags[EP_PWT].rot0, EPTowerFlags[EP_PWT].rot1, EPTowerFlags[EP_PWT].rot2, EPTowerFlags[EP_PWT].rot3);
|
||||
SetCapturePointData(EPCapturePoints[EP_PWT].entry, EPCapturePoints[EP_PWT].map, EPCapturePoints[EP_PWT].pos, EPCapturePoints[EP_PWT].rot);
|
||||
AddObject(EP_PWT_FLAGS, EPTowerFlags[EP_PWT].entry, EPTowerFlags[EP_PWT].map, EPTowerFlags[EP_PWT].pos, EPTowerFlags[EP_PWT].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_PWT::ChangeState()
|
||||
@@ -413,7 +478,7 @@ void OPvPCapturePointEP_PWT::SummonFlightMaster(uint32 team)
|
||||
{
|
||||
m_FlightMasterSpawned = team;
|
||||
DelCreature(EP_PWT_FLIGHTMASTER);
|
||||
AddCreature(EP_PWT_FLIGHTMASTER, EP_PWT_FlightMaster.entry, EP_PWT_FlightMaster.map, EP_PWT_FlightMaster.x, EP_PWT_FlightMaster.y, EP_PWT_FlightMaster.z, EP_PWT_FlightMaster.o, OutdoorPvP::GetTeamIdByTeam(team));
|
||||
AddCreature(EP_PWT_FLIGHTMASTER, EP_PWT_FlightMaster.entry, EP_PWT_FlightMaster.map, EP_PWT_FlightMaster.pos, OutdoorPvP::GetTeamIdByTeam(team));
|
||||
/*
|
||||
// sky - we need update gso code
|
||||
|
||||
|
||||
@@ -34,23 +34,6 @@ enum DefenseMessages
|
||||
TEXT_ALL_TOWERS_IN_CONTROL_HORDE = 13637, // (NYI) '|cffff0000All four towers are now in control of the Horde!|r'
|
||||
};
|
||||
|
||||
const uint32 EP_AllianceBuffs[4] = {11413, 11414, 11415, 1386};
|
||||
|
||||
const uint32 EP_HordeBuffs[4] = {30880, 30683, 30682, 29520};
|
||||
|
||||
const uint32 EP_GraveYardZone = 139;
|
||||
|
||||
const uint32 EP_GraveYardId = 927;
|
||||
|
||||
const uint8 EPBuffZonesNum = 3;
|
||||
|
||||
const uint32 EP_EWT_CM = 17690;
|
||||
const uint32 EP_CGT_CM = 17689;
|
||||
const uint32 EP_NPT_CM = 17696;
|
||||
const uint32 EP_PWT_CM = 17698;
|
||||
|
||||
const uint32 EPBuffZones[EPBuffZonesNum] = {139, 2017, 2057};
|
||||
|
||||
enum EP_TaxiNodes
|
||||
{
|
||||
EP_CGT_Taxi = 87,
|
||||
@@ -129,49 +112,6 @@ enum EP_Towers
|
||||
EP_TOWER_NUM
|
||||
};
|
||||
|
||||
const go_type EPCapturePoints[EP_TOWER_NUM] =
|
||||
{
|
||||
{182097, 0, 2574.51f, -4794.89f, 144.704f, -1.45003f, -0.097056f, 0.095578f, -0.656229f, 0.742165f},
|
||||
{181899, 0, 3181.08f, -4379.36f, 174.123f, -2.03472f, -0.065392f, 0.119494f, -0.842275f, 0.521553f},
|
||||
{182098, 0, 2962.71f, -3042.31f, 154.789f, 2.08426f, -0.074807f, -0.113837f, 0.855928f, 0.49883f},
|
||||
{182096, 0, 1860.85f, -3731.23f, 196.716f, -2.53214f, 0.033967f, -0.131914f, 0.944741f, -0.298177f}
|
||||
};
|
||||
|
||||
const go_type EPTowerFlags[EP_TOWER_NUM] =
|
||||
{
|
||||
{182106, 0, 2569.60f, -4772.93f, 115.399f, 2.72271f, 0.0f, 0.0f, 0.978148f, 0.207912f},
|
||||
{182106, 0, 3148.17f, -4365.51f, 145.029f, 1.53589f, 0.0f, 0.0f, 0.694658f, 0.71934f},
|
||||
{182106, 0, 2992.63f, -3022.95f, 125.593f, 3.03687f, 0.0f, 0.0f, 0.99863f, 0.052336f},
|
||||
{182106, 0, 1838.42f, -3703.56f, 167.713f, 0.890118f, 0.0f, 0.0f, 0.430511f, 0.902585f}
|
||||
};
|
||||
|
||||
const uint32 EPTowerPlayerEnterEvents[EP_TOWER_NUM] = {10691, 10699, 10701, 10705};
|
||||
|
||||
const uint32 EPTowerPlayerLeaveEvents[EP_TOWER_NUM] = {10692, 10698, 10700, 10704};
|
||||
|
||||
const uint8 EP_NUM_CREATURES = 6;
|
||||
const uint8 EP_EWT_NUM_CREATURES = 5;
|
||||
|
||||
// one lordaeron commander, 4 soldiers
|
||||
// should be spawned at EWT and follow a path, but trans-grid pathing isn't safe, so summon them directly at NPT
|
||||
const creature_type EP_EWT_Summons_A[EP_EWT_NUM_CREATURES] =
|
||||
{
|
||||
{17635, 0, 3167.61f, -4352.09f, 138.20f, 4.5811f},
|
||||
{17647, 0, 3172.74f, -4352.99f, 139.14f, 4.9873f},
|
||||
{17647, 0, 3165.89f, -4354.46f, 138.67f, 3.7244f},
|
||||
{17647, 0, 3164.65f, -4350.26f, 138.22f, 2.4794f},
|
||||
{17647, 0, 3169.91f, -4349.68f, 138.37f, 0.7444f}
|
||||
};
|
||||
|
||||
const creature_type EP_EWT_Summons_H[EP_EWT_NUM_CREATURES] =
|
||||
{
|
||||
{17995, 0, 3167.61f, -4352.09f, 138.20f, 4.5811f},
|
||||
{17996, 0, 3172.74f, -4352.99f, 139.14f, 4.9873f},
|
||||
{17996, 0, 3165.89f, -4354.46f, 138.67f, 3.7244f},
|
||||
{17996, 0, 3164.65f, -4350.26f, 138.22f, 2.4794f},
|
||||
{17996, 0, 3169.91f, -4349.68f, 138.37f, 0.7444f}
|
||||
};
|
||||
|
||||
enum EP_TowerStates
|
||||
{
|
||||
EP_TS_N = 1,
|
||||
@@ -183,12 +123,6 @@ enum EP_TowerStates
|
||||
EP_TS_H = 64
|
||||
};
|
||||
|
||||
// when spawning, pay attention at setting the faction manually!
|
||||
const creature_type EP_PWT_FlightMaster = {17209, 0, 2987.5f, -3049.11f, 120.126f, 5.75959f};
|
||||
|
||||
// after spawning, modify the faction so that only the controller will be able to use it with SetUInt32Value(GAMEOBJECT_FACTION, faction_id);
|
||||
const go_type EP_NPT_LordaeronShrine = {181682, 0, 3167.72f, -4355.91f, 138.785f, 1.69297f, 0.0f, 0.0f, 0.748956f, 0.66262f};
|
||||
|
||||
class OutdoorPvPEP;
|
||||
|
||||
class OPvPCapturePointEP_EWT : public OPvPCapturePoint
|
||||
|
||||
@@ -24,34 +24,46 @@
|
||||
#include "ObjectMgr.h"
|
||||
#include "WorldPacket.h"
|
||||
|
||||
const uint32 HP_LANG_CAPTURE_A[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_ALLIANCE, TEXT_OVERLOOK_TAKEN_ALLIANCE, TEXT_STADIUM_TAKEN_ALLIANCE };
|
||||
|
||||
const uint32 HP_LANG_CAPTURE_H[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_HORDE, TEXT_OVERLOOK_TAKEN_HORDE, TEXT_STADIUM_TAKEN_HORDE };
|
||||
uint32 const OutdoorPvPHPBuffZonesNum = 6;
|
||||
// HP, citadel, ramparts, blood furnace, shattered halls, mag's lair
|
||||
uint32 const OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum] = { 3483, 3563, 3562, 3713, 3714, 3836 };
|
||||
|
||||
uint32 const HP_CREDITMARKER[HP_TOWER_NUM] = { 19032, 19028, 19029 };
|
||||
|
||||
uint32 const HP_CapturePointEvent_Enter[HP_TOWER_NUM] = { 11404, 11396, 11388 };
|
||||
uint32 const HP_CapturePointEvent_Leave[HP_TOWER_NUM] = { 11403, 11395, 11387 };
|
||||
|
||||
uint32 const HP_MAP_N[HP_TOWER_NUM] = { 0x9b5, 0x9b2, 0x9a8 };
|
||||
uint32 const HP_MAP_A[HP_TOWER_NUM] = { 0x9b3, 0x9b0, 0x9a7 };
|
||||
uint32 const HP_MAP_H[HP_TOWER_NUM] = { 0x9b4, 0x9b1, 0x9a6 };
|
||||
|
||||
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)
|
||||
{
|
||||
SetCapturePointData(HPCapturePoints[type].entry,
|
||||
HPCapturePoints[type].map,
|
||||
HPCapturePoints[type].x,
|
||||
HPCapturePoints[type].y,
|
||||
HPCapturePoints[type].z,
|
||||
HPCapturePoints[type].o,
|
||||
HPCapturePoints[type].rot0,
|
||||
HPCapturePoints[type].rot1,
|
||||
HPCapturePoints[type].rot2,
|
||||
HPCapturePoints[type].rot3);
|
||||
AddObject(type,
|
||||
HPTowerFlags[type].entry,
|
||||
HPTowerFlags[type].map,
|
||||
HPTowerFlags[type].x,
|
||||
HPTowerFlags[type].y,
|
||||
HPTowerFlags[type].z,
|
||||
HPTowerFlags[type].o,
|
||||
HPTowerFlags[type].rot0,
|
||||
HPTowerFlags[type].rot1,
|
||||
HPTowerFlags[type].rot2,
|
||||
HPTowerFlags[type].rot3);
|
||||
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);
|
||||
}
|
||||
|
||||
OutdoorPvPHP::OutdoorPvPHP()
|
||||
|
||||
@@ -30,10 +30,6 @@ enum DefenseMessages
|
||||
TEXT_BROKEN_HILL_TAKEN_HORDE = 14846, // '|cffffff00Broken Hill has been taken by the Horde!|r'
|
||||
};
|
||||
|
||||
#define OutdoorPvPHPBuffZonesNum 6
|
||||
// HP, citadel, ramparts, blood furnace, shattered halls, mag's lair
|
||||
const uint32 OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum] = { 3483, 3563, 3562, 3713, 3714, 3836 };
|
||||
|
||||
enum OutdoorPvPHPSpells
|
||||
{
|
||||
AlliancePlayerKillReward = 32155,
|
||||
@@ -50,12 +46,6 @@ enum OutdoorPvPHPTowerType
|
||||
HP_TOWER_NUM = 3
|
||||
};
|
||||
|
||||
const uint32 HP_CREDITMARKER[HP_TOWER_NUM] = {19032, 19028, 19029};
|
||||
|
||||
const uint32 HP_CapturePointEvent_Enter[HP_TOWER_NUM] = {11404, 11396, 11388};
|
||||
|
||||
const uint32 HP_CapturePointEvent_Leave[HP_TOWER_NUM] = {11403, 11395, 11387};
|
||||
|
||||
enum OutdoorPvPHPWorldStates
|
||||
{
|
||||
HP_UI_TOWER_DISPLAY_A = 0x9ba,
|
||||
@@ -65,32 +55,6 @@ enum OutdoorPvPHPWorldStates
|
||||
HP_UI_TOWER_COUNT_A = 0x9ac
|
||||
};
|
||||
|
||||
const uint32 HP_MAP_N[HP_TOWER_NUM] = {0x9b5, 0x9b2, 0x9a8};
|
||||
|
||||
const uint32 HP_MAP_A[HP_TOWER_NUM] = {0x9b3, 0x9b0, 0x9a7};
|
||||
|
||||
const uint32 HP_MAP_H[HP_TOWER_NUM] = {0x9b4, 0x9b1, 0x9a6};
|
||||
|
||||
const uint32 HP_TowerArtKit_A[HP_TOWER_NUM] = {65, 62, 67};
|
||||
|
||||
const uint32 HP_TowerArtKit_H[HP_TOWER_NUM] = {64, 61, 68};
|
||||
|
||||
const uint32 HP_TowerArtKit_N[HP_TOWER_NUM] = {66, 63, 69};
|
||||
|
||||
const go_type 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.205f, -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
|
||||
};
|
||||
|
||||
const go_type HPTowerFlags[HP_TOWER_NUM] =
|
||||
{
|
||||
{183514, 530, -467.078f, 3528.17f, 64.7121f, 3.14159f, 0.0f, 0.0f, 1.0f, 0.0f}, // 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
|
||||
};
|
||||
|
||||
class OPvPCapturePointHP : public OPvPCapturePoint
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -23,6 +23,112 @@
|
||||
#include "OutdoorPvPMgr.h"
|
||||
#include "WorldPacket.h"
|
||||
|
||||
// kill credit for pks
|
||||
uint32 const NA_CREDIT_MARKER = 24867;
|
||||
|
||||
uint32 const NA_GUARDS_MAX = 15;
|
||||
|
||||
uint32 const NA_BUFF_ZONE = 3518;
|
||||
|
||||
uint32 const NA_HALAA_GRAVEYARD = 993;
|
||||
|
||||
uint32 const NA_HALAA_GRAVEYARD_ZONE = 3518; // need to add zone id, not area id
|
||||
|
||||
uint32 const NA_RESPAWN_TIME = 3600000; // one hour to capture after defeating all guards
|
||||
|
||||
uint32 const NA_GUARD_CHECK_TIME = 500; // every half second
|
||||
|
||||
uint32 const FLIGHT_NODES_NUM = 4;
|
||||
|
||||
uint32 const FlightPathStartNodes[FLIGHT_NODES_NUM] = { 103, 105, 107, 109 };
|
||||
uint32 const FlightPathEndNodes[FLIGHT_NODES_NUM] = { 104, 106, 108, 110 };
|
||||
|
||||
// spawned when the alliance is attacking, horde is in control
|
||||
go_type const HordeControlGOs[NA_CONTROL_GO_NUM] =
|
||||
{
|
||||
{ 182267, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //ALLY_ROOST_SOUTH
|
||||
{ 182280, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //ALLY_ROOST_WEST
|
||||
{ 182281, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //ALLY_ROOST_NORTH
|
||||
{ 182282, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //ALLY_ROOST_EAST
|
||||
|
||||
{ 182222, 530, { -1825.4022f, 8039.2602f, -26.0800f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //HORDE_BOMB_WAGON_SOUTH
|
||||
{ 182272, 530, { -1515.3700f, 8136.9100f, -20.4200f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //HORDE_BOMB_WAGON_WEST
|
||||
{ 182273, 530, { -1377.9500f, 7773.4400f, -10.3100f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //HORDE_BOMB_WAGON_NORTH
|
||||
{ 182274, 530, { -1659.8700f, 7733.1500f, -15.7500f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //HORDE_BOMB_WAGON_EAST
|
||||
|
||||
{ 182266, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //DESTROYED_ALLY_ROOST_SOUTH
|
||||
{ 182275, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //DESTROYED_ALLY_ROOST_WEST
|
||||
{ 182276, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //DESTROYED_ALLY_ROOST_NORTH
|
||||
{ 182277, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } } //DESTROYED_ALLY_ROOST_EAST
|
||||
};
|
||||
|
||||
// spawned when the horde is attacking, alliance is in control
|
||||
go_type const AllianceControlGOs[NA_CONTROL_GO_NUM] =
|
||||
{
|
||||
{ 182301, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //HORDE_ROOST_SOUTH
|
||||
{ 182302, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //HORDE_ROOST_WEST
|
||||
{ 182303, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //HORDE_ROOST_NORTH
|
||||
{ 182304, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //HORDE_ROOST_EAST
|
||||
|
||||
{ 182305, 530, { -1825.4022f, 8039.2602f, -26.0800f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //ALLY_BOMB_WAGON_SOUTH
|
||||
{ 182306, 530, { -1515.3700f, 8136.9100f, -20.4200f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //ALLY_BOMB_WAGON_WEST
|
||||
{ 182307, 530, { -1377.9500f, 7773.4400f, -10.3100f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //ALLY_BOMB_WAGON_NORTH
|
||||
{ 182308, 530, { -1659.8700f, 7733.1500f, -15.7500f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //ALLY_BOMB_WAGON_EAST
|
||||
|
||||
{ 182297, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //DESTROYED_HORDE_ROOST_SOUTH
|
||||
{ 182298, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //DESTROYED_HORDE_ROOST_WEST
|
||||
{ 182299, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //DESTROYED_HORDE_ROOST_NORTH
|
||||
{ 182300, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } } //DESTROYED_HORDE_ROOST_EAST
|
||||
};
|
||||
|
||||
creature_type const HordeControlNPCs[NA_CONTROL_NPC_NUM] =
|
||||
{
|
||||
{ 18816, 530, { -1523.92f, 7951.76f, -17.6942f, 3.51172f } },
|
||||
{ 18821, 530, { -1527.75f, 7952.46f, -17.6948f, 3.99317f } },
|
||||
{ 21474, 530, { -1520.14f, 7927.11f, -20.2527f, 3.39389f } },
|
||||
{ 21484, 530, { -1524.84f, 7930.34f, -20.1820f, 3.64050f } },
|
||||
{ 21483, 530, { -1570.01f, 7993.80f, -22.4505f, 5.02655f } },
|
||||
{ 18192, 530, { -1654.06f, 8000.46f, -26.5900f, 3.37000f } },
|
||||
{ 18192, 530, { -1487.18f, 7899.10f, -19.5300f, 0.95400f } },
|
||||
{ 18192, 530, { -1480.88f, 7908.79f, -19.1900f, 4.48500f } },
|
||||
{ 18192, 530, { -1540.56f, 7995.44f, -20.4500f, 0.94700f } },
|
||||
{ 18192, 530, { -1546.95f, 8000.85f, -20.7200f, 6.03500f } },
|
||||
{ 18192, 530, { -1595.31f, 7860.53f, -21.5100f, 3.74700f } },
|
||||
{ 18192, 530, { -1642.31f, 7995.59f, -25.8000f, 3.31700f } },
|
||||
{ 18192, 530, { -1545.46f, 7995.35f, -20.6300f, 1.09400f } },
|
||||
{ 18192, 530, { -1487.58f, 7907.99f, -19.2700f, 5.56700f } },
|
||||
{ 18192, 530, { -1651.54f, 7988.56f, -26.5289f, 2.98451f } },
|
||||
{ 18192, 530, { -1602.46f, 7866.43f, -22.1177f, 4.74729f } },
|
||||
{ 18192, 530, { -1591.22f, 7875.29f, -22.3536f, 4.34587f } },
|
||||
{ 18192, 530, { -1550.60f, 7944.45f, -21.6300f, 3.55900f } },
|
||||
{ 18192, 530, { -1545.57f, 7935.83f, -21.1300f, 3.44800f } },
|
||||
{ 18192, 530, { -1550.86f, 7937.56f, -21.7000f, 3.80100f } }
|
||||
};
|
||||
|
||||
creature_type const AllianceControlNPCs[NA_CONTROL_NPC_NUM] =
|
||||
{
|
||||
{ 18817, 530, { -1591.18f, 8020.39f, -22.2042f, 4.59022f } },
|
||||
{ 18822, 530, { -1588.00f, 8019.00f, -22.2042f, 4.06662f } },
|
||||
{ 21485, 530, { -1521.93f, 7927.37f, -20.2299f, 3.24631f } },
|
||||
{ 21487, 530, { -1540.33f, 7971.95f, -20.7186f, 3.07178f } },
|
||||
{ 21488, 530, { -1570.01f, 7993.80f, -22.4505f, 5.02655f } },
|
||||
{ 18256, 530, { -1654.06f, 8000.46f, -26.5900f, 3.37000f } },
|
||||
{ 18256, 530, { -1487.18f, 7899.10f, -19.5300f, 0.95400f } },
|
||||
{ 18256, 530, { -1480.88f, 7908.79f, -19.1900f, 4.48500f } },
|
||||
{ 18256, 530, { -1540.56f, 7995.44f, -20.4500f, 0.94700f } },
|
||||
{ 18256, 530, { -1546.95f, 8000.85f, -20.7200f, 6.03500f } },
|
||||
{ 18256, 530, { -1595.31f, 7860.53f, -21.5100f, 3.74700f } },
|
||||
{ 18256, 530, { -1642.31f, 7995.59f, -25.8000f, 3.31700f } },
|
||||
{ 18256, 530, { -1545.46f, 7995.35f, -20.6300f, 1.09400f } },
|
||||
{ 18256, 530, { -1487.58f, 7907.99f, -19.2700f, 5.56700f } },
|
||||
{ 18256, 530, { -1651.54f, 7988.56f, -26.5289f, 2.98451f } },
|
||||
{ 18256, 530, { -1602.46f, 7866.43f, -22.1177f, 4.74729f } },
|
||||
{ 18256, 530, { -1591.22f, 7875.29f, -22.3536f, 4.34587f } },
|
||||
{ 18256, 530, { -1603.75f, 8000.36f, -24.1800f, 4.51600f } },
|
||||
{ 18256, 530, { -1585.73f, 7994.68f, -23.2900f, 4.43900f } },
|
||||
{ 18256, 530, { -1595.50f, 7991.27f, -23.5300f, 4.73800f } }
|
||||
};
|
||||
|
||||
OutdoorPvPNA::OutdoorPvPNA()
|
||||
{
|
||||
m_TypeId = OUTDOOR_PVP_NA;
|
||||
@@ -92,7 +198,7 @@ void OPvPCapturePointNA::SpawnNPCsForTeam(uint32 team)
|
||||
else
|
||||
return;
|
||||
for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
|
||||
AddCreature(i, creatures[i].entry, creatures[i].map, creatures[i].x, creatures[i].y, creatures[i].z, creatures[i].o, OutdoorPvP::GetTeamIdByTeam(team), 1000000);
|
||||
AddCreature(i, creatures[i].entry, creatures[i].map, creatures[i].pos, OutdoorPvP::GetTeamIdByTeam(team), 1000000);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::DeSpawnNPCs()
|
||||
@@ -103,26 +209,25 @@ void OPvPCapturePointNA::DeSpawnNPCs()
|
||||
|
||||
void OPvPCapturePointNA::SpawnGOsForTeam(uint32 team)
|
||||
{
|
||||
const go_type * gos = NULL;
|
||||
go_type const* gos = nullptr;
|
||||
if (team == ALLIANCE)
|
||||
gos=AllianceControlGOs;
|
||||
gos = AllianceControlGOs;
|
||||
else if (team == HORDE)
|
||||
gos=HordeControlGOs;
|
||||
gos = HordeControlGOs;
|
||||
else
|
||||
return;
|
||||
for (int i = 0; i < NA_CONTROL_GO_NUM; ++i)
|
||||
|
||||
// roosts and bomb wagons are spawned when someone uses the matching destroyed roost
|
||||
static ControlGOTypes const GoTypes[] =
|
||||
{
|
||||
if (i == NA_ROOST_S ||
|
||||
i == NA_ROOST_W ||
|
||||
i == NA_ROOST_N ||
|
||||
i == NA_ROOST_E ||
|
||||
i == NA_BOMB_WAGON_S ||
|
||||
i == NA_BOMB_WAGON_W ||
|
||||
i == NA_BOMB_WAGON_N ||
|
||||
i == NA_BOMB_WAGON_E)
|
||||
continue; // roosts and bomb wagons are spawned when someone uses the matching destroyed roost
|
||||
AddObject(i, gos[i].entry, gos[i].map, gos[i].x, gos[i].y, gos[i].z, gos[i].o, gos[i].rot0, gos[i].rot1, gos[i].rot2, gos[i].rot3);
|
||||
}
|
||||
NA_DESTROYED_ROOST_S,
|
||||
NA_DESTROYED_ROOST_W,
|
||||
NA_DESTROYED_ROOST_N,
|
||||
NA_DESTROYED_ROOST_E
|
||||
};
|
||||
|
||||
for (ControlGOTypes goType : GoTypes)
|
||||
AddObject(goType, gos[goType].entry, gos[goType].map, gos[goType].pos, gos[goType].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::DeSpawnGOs()
|
||||
@@ -183,7 +288,7 @@ OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFactio
|
||||
m_WyvernStateNorth(0), m_WyvernStateSouth(0), m_WyvernStateEast(0), m_WyvernStateWest(0),
|
||||
m_HalaaState(HALAA_N), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME)
|
||||
{
|
||||
SetCapturePointData(182210, 530, -1572.57f, 7945.3f, -22.475f, 2.05949f, 0.0f, 0.0f, 0.857167f, 0.515038f);
|
||||
SetCapturePointData(182210, 530, { -1572.57f, 7945.3f, -22.475f, 2.05949f }, { 0.0f, 0.0f, 0.857167f, 0.515038f });
|
||||
}
|
||||
|
||||
bool OutdoorPvPNA::SetupOutdoorPvP()
|
||||
@@ -489,10 +594,10 @@ int32 OPvPCapturePointNA::HandleOpenGo(Player* player, GameObject* go)
|
||||
DelObject(del2);
|
||||
|
||||
if (add>-1)
|
||||
AddObject(add, gos[add].entry, gos[add].map, gos[add].x, gos[add].y, gos[add].z, gos[add].o, gos[add].rot0, gos[add].rot1, gos[add].rot2, gos[add].rot3);
|
||||
AddObject(add, gos[add].entry, gos[add].map, gos[add].pos, gos[add].rot);
|
||||
|
||||
if (add2>-1)
|
||||
AddObject(add2, gos[add2].entry, gos[add2].map, gos[add2].x, gos[add2].y, gos[add2].z, gos[add2].o, gos[add2].rot0, gos[add2].rot1, gos[add2].rot2, gos[add2].rot3);
|
||||
AddObject(add2, gos[add2].entry, gos[add2].map, gos[add2].pos, gos[add2].rot);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
@@ -39,21 +39,6 @@ enum OutdoorPvPNASpells
|
||||
NA_CAPTURE_BUFF = 33795 // strength of the halaani
|
||||
};
|
||||
|
||||
// kill credit for pks
|
||||
const uint32 NA_CREDIT_MARKER = 24867;
|
||||
|
||||
const uint32 NA_GUARDS_MAX = 15;
|
||||
|
||||
const uint32 NA_BUFF_ZONE = 3518;
|
||||
|
||||
const uint32 NA_HALAA_GRAVEYARD = 993;
|
||||
|
||||
const uint32 NA_HALAA_GRAVEYARD_ZONE = 3518; // need to add zone id, not area id
|
||||
|
||||
const uint32 NA_RESPAWN_TIME = 3600000; // one hour to capture after defeating all guards
|
||||
|
||||
const uint32 NA_GUARD_CHECK_TIME = 500; // every half second
|
||||
|
||||
enum OutdoorPvPNAWorldStates
|
||||
{
|
||||
NA_UI_HORDE_GUARDS_SHOW = 2503,
|
||||
@@ -88,8 +73,6 @@ enum OutdoorPvPNAWorldStates
|
||||
NA_MAP_HALAA_ALLIANCE = 2673
|
||||
};
|
||||
|
||||
const uint32 FLIGHT_NODES_NUM = 4;
|
||||
|
||||
// used to access the elements of Horde/AllyControlGOs
|
||||
enum ControlGOTypes
|
||||
{
|
||||
@@ -111,9 +94,6 @@ enum ControlGOTypes
|
||||
NA_CONTROL_GO_NUM = 12
|
||||
};
|
||||
|
||||
const uint32 FlightPathStartNodes[FLIGHT_NODES_NUM] = {103, 105, 107, 109};
|
||||
const uint32 FlightPathEndNodes[FLIGHT_NODES_NUM] = {104, 106, 108, 110};
|
||||
|
||||
enum FlightSpellsNA
|
||||
{
|
||||
NA_SPELL_FLY_SOUTH = 32059,
|
||||
@@ -122,44 +102,6 @@ enum FlightSpellsNA
|
||||
NA_SPELL_FLY_EAST = 32081
|
||||
};
|
||||
|
||||
// spawned when the alliance is attacking, horde is in control
|
||||
const go_type HordeControlGOs[NA_CONTROL_GO_NUM] =
|
||||
{
|
||||
{182267, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //ALLY_ROOST_SOUTH
|
||||
{182280, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //ALLY_ROOST_WEST
|
||||
{182281, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //ALLY_ROOST_NORTH
|
||||
{182282, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //ALLY_ROOST_EAST
|
||||
|
||||
{182222, 530, -1825.4022f, 8039.2602f, -26.08f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //HORDE_BOMB_WAGON_SOUTH
|
||||
{182272, 530, -1515.37f, 8136.91f, -20.42f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //HORDE_BOMB_WAGON_WEST
|
||||
{182273, 530, -1377.95f, 7773.44f, -10.31f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //HORDE_BOMB_WAGON_NORTH
|
||||
{182274, 530, -1659.87f, 7733.15f, -15.75f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //HORDE_BOMB_WAGON_EAST
|
||||
|
||||
{182266, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //DESTROYED_ALLY_ROOST_SOUTH
|
||||
{182275, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //DESTROYED_ALLY_ROOST_WEST
|
||||
{182276, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //DESTROYED_ALLY_ROOST_NORTH
|
||||
{182277, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f} //DESTROYED_ALLY_ROOST_EAST
|
||||
};
|
||||
|
||||
// spawned when the horde is attacking, alliance is in control
|
||||
const go_type AllianceControlGOs[NA_CONTROL_GO_NUM] =
|
||||
{
|
||||
{182301, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //HORDE_ROOST_SOUTH
|
||||
{182302, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //HORDE_ROOST_WEST
|
||||
{182303, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //HORDE_ROOST_NORTH
|
||||
{182304, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //HORDE_ROOST_EAST
|
||||
|
||||
{182305, 530, -1825.4022f, 8039.2602f, -26.08f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //ALLY_BOMB_WAGON_SOUTH
|
||||
{182306, 530, -1515.37f, 8136.91f, -20.42f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //ALLY_BOMB_WAGON_WEST
|
||||
{182307, 530, -1377.95f, 7773.44f, -10.31f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //ALLY_BOMB_WAGON_NORTH
|
||||
{182308, 530, -1659.87f, 7733.15f, -15.75f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f}, //ALLY_BOMB_WAGON_EAST
|
||||
|
||||
{182297, 530, -1815.8f, 8036.51f, -26.2354f, -2.89725f, 0.0f, 0.0f, 0.992546f, -0.121869f}, //DESTROYED_HORDE_ROOST_SOUTH
|
||||
{182298, 530, -1507.95f, 8132.1f, -19.5585f, -1.3439f, 0.0f, 0.0f, 0.622515f, -0.782608f}, //DESTROYED_HORDE_ROOST_WEST
|
||||
{182299, 530, -1384.52f, 7779.33f, -11.1663f, -0.575959f, 0.0f, 0.0f, 0.284015f, -0.95882f}, //DESTROYED_HORDE_ROOST_NORTH
|
||||
{182300, 530, -1650.11f, 7732.56f, -15.4505f, -2.80998f, 0.0f, 0.0f, 0.986286f, -0.165048f} //DESTROYED_HORDE_ROOST_EAST
|
||||
};
|
||||
|
||||
enum ControlNPCTypes
|
||||
{
|
||||
NA_NPC_RESEARCHER = 0,
|
||||
@@ -187,54 +129,6 @@ enum ControlNPCTypes
|
||||
NA_CONTROL_NPC_NUM
|
||||
};
|
||||
|
||||
const creature_type HordeControlNPCs[NA_CONTROL_NPC_NUM] =
|
||||
{
|
||||
{18816, 530, -1523.92f, 7951.76f, -17.6942f, 3.51172f},
|
||||
{18821, 530, -1527.75f, 7952.46f, -17.6948f, 3.99317f},
|
||||
{21474, 530, -1520.14f, 7927.11f, -20.2527f, 3.39389f},
|
||||
{21484, 530, -1524.84f, 7930.34f, -20.182f, 3.6405f},
|
||||
{21483, 530, -1570.01f, 7993.8f, -22.4505f, 5.02655f},
|
||||
{18192, 530, -1654.06f, 8000.46f, -26.59f, 3.37f},
|
||||
{18192, 530, -1487.18f, 7899.1f, -19.53f, 0.954f},
|
||||
{18192, 530, -1480.88f, 7908.79f, -19.19f, 4.485f},
|
||||
{18192, 530, -1540.56f, 7995.44f, -20.45f, 0.947f},
|
||||
{18192, 530, -1546.95f, 8000.85f, -20.72f, 6.035f},
|
||||
{18192, 530, -1595.31f, 7860.53f, -21.51f, 3.747f},
|
||||
{18192, 530, -1642.31f, 7995.59f, -25.8f, 3.317f},
|
||||
{18192, 530, -1545.46f, 7995.35f, -20.63f, 1.094f},
|
||||
{18192, 530, -1487.58f, 7907.99f, -19.27f, 5.567f},
|
||||
{18192, 530, -1651.54f, 7988.56f, -26.5289f, 2.98451f},
|
||||
{18192, 530, -1602.46f, 7866.43f, -22.1177f, 4.74729f},
|
||||
{18192, 530, -1591.22f, 7875.29f, -22.3536f, 4.34587f},
|
||||
{18192, 530, -1550.6f, 7944.45f, -21.63f, 3.559f},
|
||||
{18192, 530, -1545.57f, 7935.83f, -21.13f, 3.448f},
|
||||
{18192, 530, -1550.86f, 7937.56f, -21.7f, 3.801f}
|
||||
};
|
||||
|
||||
const creature_type AllianceControlNPCs[NA_CONTROL_NPC_NUM] =
|
||||
{
|
||||
{18817, 530, -1591.18f, 8020.39f, -22.2042f, 4.59022f},
|
||||
{18822, 530, -1588.0f, 8019.0f, -22.2042f, 4.06662f},
|
||||
{21485, 530, -1521.93f, 7927.37f, -20.2299f, 3.24631f},
|
||||
{21487, 530, -1540.33f, 7971.95f, -20.7186f, 3.07178f},
|
||||
{21488, 530, -1570.01f, 7993.8f, -22.4505f, 5.02655f},
|
||||
{18256, 530, -1654.06f, 8000.46f, -26.59f, 3.37f},
|
||||
{18256, 530, -1487.18f, 7899.1f, -19.53f, 0.954f},
|
||||
{18256, 530, -1480.88f, 7908.79f, -19.19f, 4.485f},
|
||||
{18256, 530, -1540.56f, 7995.44f, -20.45f, 0.947f},
|
||||
{18256, 530, -1546.95f, 8000.85f, -20.72f, 6.035f},
|
||||
{18256, 530, -1595.31f, 7860.53f, -21.51f, 3.747f},
|
||||
{18256, 530, -1642.31f, 7995.59f, -25.8f, 3.317f},
|
||||
{18256, 530, -1545.46f, 7995.35f, -20.63f, 1.094f},
|
||||
{18256, 530, -1487.58f, 7907.99f, -19.27f, 5.567f},
|
||||
{18256, 530, -1651.54f, 7988.56f, -26.5289f, 2.98451f},
|
||||
{18256, 530, -1602.46f, 7866.43f, -22.1177f, 4.74729f},
|
||||
{18256, 530, -1591.22f, 7875.29f, -22.3536f, 4.34587f},
|
||||
{18256, 530, -1603.75f, 8000.36f, -24.18f, 4.516f},
|
||||
{18256, 530, -1585.73f, 7994.68f, -23.29f, 4.439f},
|
||||
{18256, 530, -1595.5f, 7991.27f, -23.53f, 4.738f}
|
||||
};
|
||||
|
||||
enum WyvernStates
|
||||
{
|
||||
WYVERN_NEU_HORDE = 1,
|
||||
|
||||
@@ -27,6 +27,19 @@
|
||||
#include "Language.h"
|
||||
#include "World.h"
|
||||
|
||||
uint32 const SI_MAX_RESOURCES = 200;
|
||||
|
||||
uint32 const SI_AREATRIGGER_H = 4168;
|
||||
uint32 const SI_AREATRIGGER_A = 4162;
|
||||
|
||||
uint32 const SI_TURNIN_QUEST_CM_A = 17090;
|
||||
uint32 const SI_TURNIN_QUEST_CM_H = 18199;
|
||||
|
||||
uint32 const SI_SILITHYST_MOUND = 181597;
|
||||
|
||||
uint8 const OutdoorPvPSIBuffZonesNum = 3;
|
||||
uint32 const OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum] = { 1377, 3428, 3429 };
|
||||
|
||||
OutdoorPvPSI::OutdoorPvPSI()
|
||||
{
|
||||
m_TypeId = OUTDOOR_PVP_SI;
|
||||
@@ -151,7 +164,7 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
|
||||
// if it was dropped away from the player's turn-in point, then create a silithyst mound, if it was dropped near the areatrigger, then it was dispelled by the outdoorpvp, so do nothing
|
||||
switch (player->GetTeam())
|
||||
{
|
||||
case ALLIANCE:
|
||||
case ALLIANCE:
|
||||
{
|
||||
AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(SI_AREATRIGGER_A);
|
||||
if (atEntry)
|
||||
@@ -178,9 +191,9 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HORDE:
|
||||
case HORDE:
|
||||
{
|
||||
AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(SI_AREATRIGGER_H);
|
||||
if (atEntry)
|
||||
@@ -207,8 +220,8 @@ bool OutdoorPvPSI::HandleDropFlag(Player* player, uint32 spellId)
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -28,22 +28,6 @@ enum OutdoorPvPSISpells
|
||||
SI_CENARION_FAVOR = 30754
|
||||
};
|
||||
|
||||
const uint32 SI_MAX_RESOURCES = 200;
|
||||
|
||||
const uint8 OutdoorPvPSIBuffZonesNum = 3;
|
||||
|
||||
const uint32 OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum] = { 1377, 3428, 3429 };
|
||||
|
||||
const uint32 SI_AREATRIGGER_H = 4168;
|
||||
|
||||
const uint32 SI_AREATRIGGER_A = 4162;
|
||||
|
||||
const uint32 SI_TURNIN_QUEST_CM_A = 17090;
|
||||
|
||||
const uint32 SI_TURNIN_QUEST_CM_H = 18199;
|
||||
|
||||
const uint32 SI_SILITHYST_MOUND = 181597;
|
||||
|
||||
enum SI_WorldStates
|
||||
{
|
||||
SI_GATHERED_A = 2313,
|
||||
|
||||
@@ -24,6 +24,71 @@
|
||||
#include "Player.h"
|
||||
#include "ObjectMgr.h"
|
||||
|
||||
uint8 const OutdoorPvPTFBuffZonesNum = 5;
|
||||
uint32 const OutdoorPvPTFBuffZones[OutdoorPvPTFBuffZonesNum] =
|
||||
{
|
||||
3519 /*Terokkar Forest*/,
|
||||
3791 /*Sethekk Halls*/,
|
||||
3789 /*Shadow Labyrinth*/,
|
||||
3792 /*Mana-Tombs*/,
|
||||
3790 /*Auchenai Crypts*/
|
||||
};
|
||||
|
||||
// locked for 6 hours after capture
|
||||
uint32 const TF_LOCK_TIME = 3600 * 6 * 1000;
|
||||
|
||||
// update lock timer every 1/4 minute (overkill, but this way it's sure the timer won't "jump" 2 minutes at once.)
|
||||
uint32 const TF_LOCK_TIME_UPDATE = 15000;
|
||||
|
||||
// blessing of auchindoun, used in TeamCastSpell which uses signed int, so signed
|
||||
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
|
||||
{
|
||||
uint32 n;
|
||||
uint32 h;
|
||||
uint32 a;
|
||||
};
|
||||
|
||||
tf_tower_world_state const TFTowerWorldStates[TF_TOWER_NUM] =
|
||||
{
|
||||
{ 0xa79, 0xa7a, 0xa7b },
|
||||
{ 0xa7e, 0xa7d, 0xa7c },
|
||||
{ 0xa82, 0xa81, 0xa80 },
|
||||
{ 0xa88, 0xa87, 0xa86 },
|
||||
{ 0xa85, 0xa84, 0xa83 }
|
||||
};
|
||||
|
||||
uint32 const TFTowerPlayerEnterEvents[TF_TOWER_NUM] =
|
||||
{
|
||||
12226,
|
||||
12497,
|
||||
12486,
|
||||
12499,
|
||||
12501
|
||||
};
|
||||
|
||||
uint32 const TFTowerPlayerLeaveEvents[TF_TOWER_NUM] =
|
||||
{
|
||||
12225,
|
||||
12496,
|
||||
12487,
|
||||
12498,
|
||||
12500
|
||||
};
|
||||
|
||||
OutdoorPvPTF::OutdoorPvPTF()
|
||||
{
|
||||
m_TypeId = OUTDOOR_PVP_TF;
|
||||
@@ -43,7 +108,7 @@ OutdoorPvPTF::OutdoorPvPTF()
|
||||
OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type)
|
||||
: OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N)
|
||||
{
|
||||
SetCapturePointData(TFCapturePoints[type].entry, TFCapturePoints[type].map, TFCapturePoints[type].x, TFCapturePoints[type].y, TFCapturePoints[type].z, TFCapturePoints[type].o, TFCapturePoints[type].rot0, TFCapturePoints[type].rot1, TFCapturePoints[type].rot2, TFCapturePoints[type].rot3);
|
||||
SetCapturePointData(TFCapturePoints[type].entry, TFCapturePoints[type].map, TFCapturePoints[type].pos, TFCapturePoints[type].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointTF::FillInitialWorldStates(WorldPacket &data)
|
||||
|
||||
@@ -30,29 +30,6 @@ enum DefenseMessages
|
||||
TEXT_SPIRIT_TOWER_LOSE_HORDE = 18287 // '|cffffff00The Horde has lost control of a Spirit Tower!|r'
|
||||
};
|
||||
|
||||
const uint8 OutdoorPvPTFBuffZonesNum = 5;
|
||||
|
||||
const uint32 OutdoorPvPTFBuffZones[OutdoorPvPTFBuffZonesNum] =
|
||||
{
|
||||
3519 /*Terokkar Forest*/,
|
||||
3791 /*Sethekk Halls*/,
|
||||
3789 /*Shadow Labyrinth*/,
|
||||
3792 /*Mana-Tombs*/,
|
||||
3790 /*Auchenai Crypts*/
|
||||
};
|
||||
|
||||
// locked for 6 hours after capture
|
||||
const uint32 TF_LOCK_TIME = 3600 * 6 * 1000;
|
||||
|
||||
// update lock timer every 1/4 minute (overkill, but this way it's sure the timer won't "jump" 2 minutes at once.)
|
||||
const uint32 TF_LOCK_TIME_UPDATE = 15000;
|
||||
|
||||
// blessing of auchindoun
|
||||
#define TF_CAPTURE_BUFF 33377
|
||||
|
||||
const uint32 TF_ALLY_QUEST = 11505;
|
||||
const uint32 TF_HORDE_QUEST = 11506;
|
||||
|
||||
enum OutdoorPvPTF_TowerType
|
||||
{
|
||||
TF_TOWER_NW = 0,
|
||||
@@ -63,49 +40,6 @@ enum OutdoorPvPTF_TowerType
|
||||
TF_TOWER_NUM
|
||||
};
|
||||
|
||||
const go_type TFCapturePoints[TF_TOWER_NUM] =
|
||||
{
|
||||
{183104, 530, -3081.65f, 5335.03f, 17.1853f, -2.14675f, 0.0f, 0.0f, 0.878817f, -0.477159f},
|
||||
{183411, 530, -2939.9f, 4788.73f, 18.987f, 2.77507f, 0.0f, 0.0f, 0.983255f, 0.182236f},
|
||||
{183412, 530, -3174.94f, 4440.97f, 16.2281f, 1.86750f, 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.3f, 17.7249f, 0.087266f, 0.0f, 0.0f, 0.043619f, 0.999048f}
|
||||
};
|
||||
|
||||
struct tf_tower_world_state
|
||||
{
|
||||
uint32 n;
|
||||
uint32 h;
|
||||
uint32 a;
|
||||
};
|
||||
|
||||
const tf_tower_world_state TFTowerWorldStates[TF_TOWER_NUM] =
|
||||
{
|
||||
{0xa79, 0xa7a, 0xa7b},
|
||||
{0xa7e, 0xa7d, 0xa7c},
|
||||
{0xa82, 0xa81, 0xa80},
|
||||
{0xa88, 0xa87, 0xa86},
|
||||
{0xa85, 0xa84, 0xa83}
|
||||
};
|
||||
|
||||
const uint32 TFTowerPlayerEnterEvents[TF_TOWER_NUM] =
|
||||
{
|
||||
12226,
|
||||
12497,
|
||||
12486,
|
||||
12499,
|
||||
12501
|
||||
};
|
||||
|
||||
const uint32 TFTowerPlayerLeaveEvents[TF_TOWER_NUM] =
|
||||
{
|
||||
12225,
|
||||
12496,
|
||||
12487,
|
||||
12498,
|
||||
12500
|
||||
};
|
||||
|
||||
enum TFWorldStates
|
||||
{
|
||||
TF_UI_TOWER_COUNT_H = 0xa3e,
|
||||
|
||||
@@ -26,10 +26,69 @@
|
||||
#include "WorldPacket.h"
|
||||
#include "GossipDef.h"
|
||||
|
||||
uint8 const OutdoorPvPZMBuffZonesNum = 5;
|
||||
|
||||
// the buff is cast in these zones
|
||||
uint32 const OutdoorPvPZMBuffZones[OutdoorPvPZMBuffZonesNum] = { 3521, 3607, 3717, 3715, 3716 };
|
||||
|
||||
// linked when the central tower is controlled
|
||||
uint32 const ZM_GRAVEYARD_ZONE = 3521;
|
||||
|
||||
// linked when the central tower is controlled
|
||||
uint32 const ZM_GRAVEYARD_ID = 969;
|
||||
|
||||
|
||||
// banners 182527, 182528, 182529, gotta check them ingame
|
||||
go_type const ZM_Banner_A = { 182527, 530, { 253.54f, 7083.81f, 36.7728f, -0.017453f }, { 0.0f, 0.0f, 0.008727f, -0.999962f } };
|
||||
go_type const ZM_Banner_H = { 182528, 530, { 253.54f, 7083.81f, 36.7728f, -0.017453f }, { 0.0f, 0.0f, 0.008727f, -0.999962f } };
|
||||
go_type const ZM_Banner_N = { 182529, 530, { 253.54f, 7083.81f, 36.7728f, -0.017453f }, { 0.0f, 0.0f, 0.008727f, -0.999962f } };
|
||||
|
||||
// horde field scout spawn data
|
||||
creature_type const ZM_HordeFieldScout = { 18564, 530, { 296.625f, 7818.4f, 42.6294f, 5.18363f } };
|
||||
|
||||
// alliance field scout spawn data
|
||||
creature_type const ZM_AllianceFieldScout = { 18581, 530, { 374.395f, 6230.08f, 22.8351f, 0.593412f } };
|
||||
|
||||
struct zm_beacon
|
||||
{
|
||||
uint32 ui_tower_n;
|
||||
uint32 ui_tower_h;
|
||||
uint32 ui_tower_a;
|
||||
uint32 map_tower_n;
|
||||
uint32 map_tower_h;
|
||||
uint32 map_tower_a;
|
||||
uint32 event_enter;
|
||||
uint32 event_leave;
|
||||
};
|
||||
|
||||
zm_beacon const ZMBeaconInfo[ZM_NUM_BEACONS] =
|
||||
{
|
||||
{ 2560, 2559, 2558, 2652, 2651, 2650, 11807, 11806 },
|
||||
{ 2557, 2556, 2555, 2646, 2645, 2644, 11805, 11804 }
|
||||
};
|
||||
|
||||
uint32 const ZMBeaconCaptureA[ZM_NUM_BEACONS] =
|
||||
{
|
||||
TEXT_EAST_BEACON_TAKEN_ALLIANCE,
|
||||
TEXT_WEST_BEACON_TAKEN_ALLIANCE
|
||||
};
|
||||
|
||||
uint32 const ZMBeaconCaptureH[ZM_NUM_BEACONS] =
|
||||
{
|
||||
TEXT_EAST_BEACON_TAKEN_HORDE,
|
||||
TEXT_WEST_BEACON_TAKEN_HORDE
|
||||
};
|
||||
|
||||
go_type const ZMCapturePoints[ZM_NUM_BEACONS] =
|
||||
{
|
||||
{ 182523, 530, { 303.243f, 6841.36f, 40.1245f, -1.58825f }, { 0.0f, 0.0f, 0.71325f, -0.700909f } },
|
||||
{ 182522, 530, { 336.466f, 7340.26f, 41.4984f, -1.58825f }, { 0.0f, 0.0f, 0.71325f, -0.700909f } }
|
||||
};
|
||||
|
||||
OPvPCapturePointZM_Beacon::OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconType type)
|
||||
: OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(ZM_TOWERSTATE_N)
|
||||
{
|
||||
SetCapturePointData(ZMCapturePoints[type].entry, ZMCapturePoints[type].map, ZMCapturePoints[type].x, ZMCapturePoints[type].y, ZMCapturePoints[type].z, ZMCapturePoints[type].o, ZMCapturePoints[type].rot0, ZMCapturePoints[type].rot1, ZMCapturePoints[type].rot2, ZMCapturePoints[type].rot3);
|
||||
SetCapturePointData(ZMCapturePoints[type].entry, ZMCapturePoints[type].map, ZMCapturePoints[type].pos, ZMCapturePoints[type].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointZM_Beacon::FillInitialWorldStates(WorldPacket &data)
|
||||
@@ -193,7 +252,7 @@ int32 OPvPCapturePointZM_GraveYard::HandleOpenGo(Player* player, GameObject* go)
|
||||
{
|
||||
m_GraveYardState = ZM_GRAVEYARD_A;
|
||||
DelObject(0); // only one gotype is used in the whole outdoor pvp, no need to call it a constant
|
||||
AddObject(0, ZM_Banner_A.entry, ZM_Banner_A.map, ZM_Banner_A.x, ZM_Banner_A.y, ZM_Banner_A.z, ZM_Banner_A.o, ZM_Banner_A.rot0, ZM_Banner_A.rot1, ZM_Banner_A.rot2, ZM_Banner_A.rot3);
|
||||
AddObject(0, ZM_Banner_A.entry, ZM_Banner_A.map, ZM_Banner_A.pos, ZM_Banner_A.rot);
|
||||
sObjectMgr->RemoveGraveYardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, HORDE); // rem gy
|
||||
sObjectMgr->AddGraveYardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, ALLIANCE, false); // add gy
|
||||
m_PvP->TeamApplyBuff(TEAM_ALLIANCE, ZM_CAPTURE_BUFF);
|
||||
@@ -204,7 +263,7 @@ int32 OPvPCapturePointZM_GraveYard::HandleOpenGo(Player* player, GameObject* go)
|
||||
{
|
||||
m_GraveYardState = ZM_GRAVEYARD_H;
|
||||
DelObject(0); // only one gotype is used in the whole outdoor pvp, no need to call it a constant
|
||||
AddObject(0, ZM_Banner_H.entry, ZM_Banner_H.map, ZM_Banner_H.x, ZM_Banner_H.y, ZM_Banner_H.z, ZM_Banner_H.o, ZM_Banner_H.rot0, ZM_Banner_H.rot1, ZM_Banner_H.rot2, ZM_Banner_H.rot3);
|
||||
AddObject(0, ZM_Banner_H.entry, ZM_Banner_H.map, ZM_Banner_H.pos, ZM_Banner_H.rot);
|
||||
sObjectMgr->RemoveGraveYardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, ALLIANCE); // rem gy
|
||||
sObjectMgr->AddGraveYardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, HORDE, false); // add gy
|
||||
m_PvP->TeamApplyBuff(TEAM_HORDE, ZM_CAPTURE_BUFF);
|
||||
@@ -223,10 +282,10 @@ OPvPCapturePointZM_GraveYard::OPvPCapturePointZM_GraveYard(OutdoorPvP* pvp)
|
||||
m_GraveYardState = ZM_GRAVEYARD_N;
|
||||
m_FlagCarrierGUID.Clear();
|
||||
// add field scouts here
|
||||
AddCreature(ZM_ALLIANCE_FIELD_SCOUT, ZM_AllianceFieldScout.entry, ZM_AllianceFieldScout.map, ZM_AllianceFieldScout.x, ZM_AllianceFieldScout.y, ZM_AllianceFieldScout.z, ZM_AllianceFieldScout.o);
|
||||
AddCreature(ZM_HORDE_FIELD_SCOUT, ZM_HordeFieldScout.entry, ZM_HordeFieldScout.map, ZM_HordeFieldScout.x, ZM_HordeFieldScout.y, ZM_HordeFieldScout.z, ZM_HordeFieldScout.o);
|
||||
AddCreature(ZM_ALLIANCE_FIELD_SCOUT, ZM_AllianceFieldScout.entry, ZM_AllianceFieldScout.map, ZM_AllianceFieldScout.pos);
|
||||
AddCreature(ZM_HORDE_FIELD_SCOUT, ZM_HordeFieldScout.entry, ZM_HordeFieldScout.map, ZM_HordeFieldScout.pos);
|
||||
// add neutral banner
|
||||
AddObject(0, ZM_Banner_N.entry, ZM_Banner_N.map, ZM_Banner_N.x, ZM_Banner_N.y, ZM_Banner_N.z, ZM_Banner_N.o, ZM_Banner_N.rot0, ZM_Banner_N.rot1, ZM_Banner_N.rot2, ZM_Banner_N.rot3);
|
||||
AddObject(0, ZM_Banner_N.entry, ZM_Banner_N.map, ZM_Banner_N.pos, ZM_Banner_N.rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointZM_GraveYard::UpdateTowerState()
|
||||
|
||||
@@ -34,17 +34,6 @@ enum DefenseMessages
|
||||
TEXT_BATTLE_STANDARDS_HORDE = 16288 // (NYI) '|cffffff00The Horde Field Scout is now issuing battle standards.|r'
|
||||
};
|
||||
|
||||
const uint8 OutdoorPvPZMBuffZonesNum = 5;
|
||||
|
||||
// the buff is cast in these zones
|
||||
const uint32 OutdoorPvPZMBuffZones[OutdoorPvPZMBuffZonesNum] = {3521, 3607, 3717, 3715, 3716};
|
||||
|
||||
// linked when the central tower is controlled
|
||||
const uint32 ZM_GRAVEYARD_ZONE = 3521;
|
||||
|
||||
// linked when the central tower is controlled
|
||||
const uint32 ZM_GRAVEYARD_ID = 969;
|
||||
|
||||
enum OutdoorPvPZMSpells
|
||||
{
|
||||
// cast on the players of the controlling faction
|
||||
@@ -59,17 +48,6 @@ enum OutdoorPvPZMSpells
|
||||
ZM_HordePlayerKillReward = 32158
|
||||
};
|
||||
|
||||
// banners 182527, 182528, 182529, gotta check them ingame
|
||||
const go_type ZM_Banner_A = { 182527, 530, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f };
|
||||
const go_type ZM_Banner_H = { 182528, 530, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f };
|
||||
const go_type ZM_Banner_N = { 182529, 530, 253.54f, 7083.81f, 36.7728f, -0.017453f, 0.0f, 0.0f, 0.008727f, -0.999962f };
|
||||
|
||||
// horde field scout spawn data
|
||||
const creature_type ZM_HordeFieldScout = {18564, 530, 296.625f, 7818.4f, 42.6294f, 5.18363f};
|
||||
|
||||
// alliance field scout spawn data
|
||||
const creature_type ZM_AllianceFieldScout = {18581, 530, 374.395f, 6230.08f, 22.8351f, 0.593412f};
|
||||
|
||||
enum ZMCreatureTypes
|
||||
{
|
||||
ZM_ALLIANCE_FIELD_SCOUT = 0,
|
||||
@@ -77,18 +55,6 @@ enum ZMCreatureTypes
|
||||
ZM_CREATURE_NUM
|
||||
};
|
||||
|
||||
struct zm_beacon
|
||||
{
|
||||
uint32 ui_tower_n;
|
||||
uint32 ui_tower_h;
|
||||
uint32 ui_tower_a;
|
||||
uint32 map_tower_n;
|
||||
uint32 map_tower_h;
|
||||
uint32 map_tower_a;
|
||||
uint32 event_enter;
|
||||
uint32 event_leave;
|
||||
};
|
||||
|
||||
enum ZM_BeaconType
|
||||
{
|
||||
ZM_BEACON_EAST = 0,
|
||||
@@ -96,30 +62,6 @@ enum ZM_BeaconType
|
||||
ZM_NUM_BEACONS
|
||||
};
|
||||
|
||||
const zm_beacon ZMBeaconInfo[ZM_NUM_BEACONS] =
|
||||
{
|
||||
{2560, 2559, 2558, 2652, 2651, 2650, 11807, 11806},
|
||||
{2557, 2556, 2555, 2646, 2645, 2644, 11805, 11804}
|
||||
};
|
||||
|
||||
const uint32 ZMBeaconCaptureA[ZM_NUM_BEACONS] =
|
||||
{
|
||||
TEXT_EAST_BEACON_TAKEN_ALLIANCE,
|
||||
TEXT_WEST_BEACON_TAKEN_ALLIANCE
|
||||
};
|
||||
|
||||
const uint32 ZMBeaconCaptureH[ZM_NUM_BEACONS] =
|
||||
{
|
||||
TEXT_EAST_BEACON_TAKEN_HORDE,
|
||||
TEXT_WEST_BEACON_TAKEN_HORDE
|
||||
};
|
||||
|
||||
const go_type ZMCapturePoints[ZM_NUM_BEACONS] =
|
||||
{
|
||||
{182523, 530, 303.243f, 6841.36f, 40.1245f, -1.58825f, 0.0f, 0.0f, 0.71325f, -0.700909f},
|
||||
{182522, 530, 336.466f, 7340.26f, 41.4984f, -1.58825f, 0.0f, 0.0f, 0.71325f, -0.700909f}
|
||||
};
|
||||
|
||||
enum OutdoorPvPZMWorldStates
|
||||
{
|
||||
ZM_WORLDSTATE_UNK_1 = 2653,
|
||||
|
||||
Reference in New Issue
Block a user