*Backed out changeset 3be01fb200a5
--HG-- branch : trunk
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "OutdoorPvPNA.h"
|
||||
#include "Player.h"
|
||||
#include "ObjectMgr.h"
|
||||
@@ -22,10 +23,12 @@
|
||||
#include "WorldPacket.h"
|
||||
#include "Language.h"
|
||||
#include "World.h"
|
||||
|
||||
OutdoorPvPNA::OutdoorPvPNA()
|
||||
{
|
||||
m_TypeId = OUTDOOR_PVP_NA;
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::HandleKillImpl(Player *plr, Unit * killed)
|
||||
{
|
||||
if(killed->GetTypeId() == TYPEID_PLAYER && plr->GetTeam() != ((Player*)killed)->GetTeam())
|
||||
@@ -37,6 +40,7 @@ void OutdoorPvPNA::HandleKillImpl(Player *plr, Unit * killed)
|
||||
plr->CastSpell(plr,NA_KILL_TOKEN_HORDE,true);
|
||||
}
|
||||
}
|
||||
|
||||
uint32 OPvPCapturePointNA::GetAliveGuardsCount()
|
||||
{
|
||||
uint32 cnt = 0;
|
||||
@@ -78,6 +82,7 @@ uint32 OPvPCapturePointNA::GetAliveGuardsCount()
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::SpawnNPCsForTeam(uint32 team)
|
||||
{
|
||||
const creature_type * creatures = NULL;
|
||||
@@ -90,11 +95,13 @@ void OPvPCapturePointNA::SpawnNPCsForTeam(uint32 team)
|
||||
for(int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
|
||||
AddCreature(i,creatures[i].entry,creatures[i].teamval,creatures[i].map,creatures[i].x,creatures[i].y,creatures[i].z,creatures[i].o,1000000);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::DeSpawnNPCs()
|
||||
{
|
||||
for(int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
|
||||
DelCreature(i);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::SpawnGOsForTeam(uint32 team)
|
||||
{
|
||||
const go_type * gos = NULL;
|
||||
@@ -118,6 +125,7 @@ void OPvPCapturePointNA::SpawnGOsForTeam(uint32 team)
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::DeSpawnGOs()
|
||||
{
|
||||
for(int i = 0; i < NA_CONTROL_GO_NUM; ++i)
|
||||
@@ -125,6 +133,7 @@ void OPvPCapturePointNA::DeSpawnGOs()
|
||||
DelObject(i);
|
||||
}
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::FactionTakeOver(uint32 team)
|
||||
{
|
||||
if(m_ControllingFaction)
|
||||
@@ -133,6 +142,7 @@ void OPvPCapturePointNA::FactionTakeOver(uint32 team)
|
||||
sWorld.SendZoneText(NA_HALAA_GRAVEYARD_ZONE,objmgr.GetTrinityStringForDBCLocale(LANG_OPVP_NA_LOOSE_A));
|
||||
else if(m_ControllingFaction == HORDE)
|
||||
sWorld.SendZoneText(NA_HALAA_GRAVEYARD_ZONE,objmgr.GetTrinityStringForDBCLocale(LANG_OPVP_NA_LOOSE_H));
|
||||
|
||||
m_ControllingFaction = team;
|
||||
if(m_ControllingFaction)
|
||||
objmgr.AddGraveYardLink(NA_HALAA_GRAVEYARD,NA_HALAA_GRAVEYARD_ZONE,m_ControllingFaction,false);
|
||||
@@ -172,6 +182,7 @@ void OPvPCapturePointNA::FactionTakeOver(uint32 team)
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_W);
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_E);
|
||||
}
|
||||
|
||||
bool OPvPCapturePointNA::HandlePlayerEnter(Player *plr)
|
||||
{
|
||||
if(OPvPCapturePoint::HandlePlayerEnter(plr))
|
||||
@@ -184,11 +195,13 @@ bool OPvPCapturePointNA::HandlePlayerEnter(Player *plr)
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::HandlePlayerLeave(Player *plr)
|
||||
{
|
||||
plr->SendUpdateWorldState(NA_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(plr);
|
||||
}
|
||||
|
||||
OPvPCapturePointNA::OPvPCapturePointNA(OutdoorPvP *pvp) :
|
||||
OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFaction(0),
|
||||
m_HalaaState(HALAA_N), m_WyvernStateSouth(0), m_WyvernStateNorth(0), m_WyvernStateWest(0),
|
||||
@@ -196,18 +209,22 @@ m_WyvernStateEast(0), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUAR
|
||||
{
|
||||
SetCapturePointData(182210,530,-1572.57,7945.3,-22.475,2.05949,0,0,0.857167,0.515038);
|
||||
}
|
||||
|
||||
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
|
||||
RegisterZone(NA_BUFF_ZONE);
|
||||
|
||||
// halaa
|
||||
m_obj = new OPvPCapturePointNA(this);
|
||||
if(!m_obj)
|
||||
return false;
|
||||
AddCapturePoint(m_obj);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::HandlePlayerEnterZone(Player * plr, uint32 zone)
|
||||
{
|
||||
// add buffs
|
||||
@@ -215,16 +232,19 @@ void OutdoorPvPNA::HandlePlayerEnterZone(Player * plr, uint32 zone)
|
||||
plr->CastSpell(plr,NA_CAPTURE_BUFF,true);
|
||||
OutdoorPvP::HandlePlayerEnterZone(plr,zone);
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::HandlePlayerLeaveZone(Player * plr, uint32 zone)
|
||||
{
|
||||
// remove buffs
|
||||
plr->RemoveAurasDueToSpell(NA_CAPTURE_BUFF);
|
||||
OutdoorPvP::HandlePlayerLeaveZone(plr, zone);
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::FillInitialWorldStates(WorldPacket &data)
|
||||
{
|
||||
m_obj->FillInitialWorldStates(data);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::FillInitialWorldStates(WorldPacket &data)
|
||||
{
|
||||
if(m_ControllingFaction == ALLIANCE)
|
||||
@@ -242,33 +262,41 @@ void OPvPCapturePointNA::FillInitialWorldStates(WorldPacket &data)
|
||||
data << NA_UI_HORDE_GUARDS_SHOW << uint32(0);
|
||||
data << NA_UI_ALLIANCE_GUARDS_SHOW << uint32(0);
|
||||
}
|
||||
|
||||
data << NA_UI_GUARDS_MAX << NA_GUARDS_MAX;
|
||||
data << NA_UI_GUARDS_LEFT << uint32(m_GuardsAlive);
|
||||
|
||||
data << NA_UI_TOWER_SLIDER_DISPLAY << uint32(0);
|
||||
data << NA_UI_TOWER_SLIDER_POS << uint32(50);
|
||||
data << NA_UI_TOWER_SLIDER_N << uint32(100);
|
||||
|
||||
data << NA_MAP_WYVERN_NORTH_NEU_H << uint32(bool(m_WyvernStateNorth & WYVERN_NEU_HORDE));
|
||||
data << NA_MAP_WYVERN_NORTH_NEU_A << uint32(bool(m_WyvernStateNorth & WYVERN_NEU_ALLIANCE));
|
||||
data << NA_MAP_WYVERN_NORTH_H << uint32(bool(m_WyvernStateNorth & WYVERN_HORDE));
|
||||
data << NA_MAP_WYVERN_NORTH_A << uint32(bool(m_WyvernStateNorth & WYVERN_ALLIANCE));
|
||||
|
||||
data << NA_MAP_WYVERN_SOUTH_NEU_H << uint32(bool(m_WyvernStateSouth & WYVERN_NEU_HORDE));
|
||||
data << NA_MAP_WYVERN_SOUTH_NEU_A << uint32(bool(m_WyvernStateSouth & WYVERN_NEU_ALLIANCE));
|
||||
data << NA_MAP_WYVERN_SOUTH_H << uint32(bool(m_WyvernStateSouth & WYVERN_HORDE));
|
||||
data << NA_MAP_WYVERN_SOUTH_A << uint32(bool(m_WyvernStateSouth & WYVERN_ALLIANCE));
|
||||
|
||||
data << NA_MAP_WYVERN_WEST_NEU_H << uint32(bool(m_WyvernStateWest & WYVERN_NEU_HORDE));
|
||||
data << NA_MAP_WYVERN_WEST_NEU_A << uint32(bool(m_WyvernStateWest & WYVERN_NEU_ALLIANCE));
|
||||
data << NA_MAP_WYVERN_WEST_H << uint32(bool(m_WyvernStateWest & WYVERN_HORDE));
|
||||
data << NA_MAP_WYVERN_WEST_A << uint32(bool(m_WyvernStateWest & WYVERN_ALLIANCE));
|
||||
|
||||
data << NA_MAP_WYVERN_EAST_NEU_H << uint32(bool(m_WyvernStateEast & WYVERN_NEU_HORDE));
|
||||
data << NA_MAP_WYVERN_EAST_NEU_A << uint32(bool(m_WyvernStateEast & WYVERN_NEU_ALLIANCE));
|
||||
data << NA_MAP_WYVERN_EAST_H << uint32(bool(m_WyvernStateEast & WYVERN_HORDE));
|
||||
data << NA_MAP_WYVERN_EAST_A << uint32(bool(m_WyvernStateEast & WYVERN_ALLIANCE));
|
||||
|
||||
data << NA_MAP_HALAA_NEUTRAL << uint32(bool(m_HalaaState & HALAA_N));
|
||||
data << NA_MAP_HALAA_NEU_A << uint32(bool(m_HalaaState & HALAA_N_A));
|
||||
data << NA_MAP_HALAA_NEU_H << uint32(bool(m_HalaaState & HALAA_N_H));
|
||||
data << NA_MAP_HALAA_HORDE << uint32(bool(m_HalaaState & HALAA_H));
|
||||
data << NA_MAP_HALAA_ALLIANCE << uint32(bool(m_HalaaState & HALAA_A));
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::SendRemoveWorldStates(Player *plr)
|
||||
{
|
||||
plr->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW,0);
|
||||
@@ -300,10 +328,12 @@ void OutdoorPvPNA::SendRemoveWorldStates(Player *plr)
|
||||
plr->SendUpdateWorldState(NA_MAP_HALAA_HORDE,0);
|
||||
plr->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE,0);
|
||||
}
|
||||
|
||||
bool OutdoorPvPNA::Update(uint32 diff)
|
||||
{
|
||||
return m_obj->Update(diff);
|
||||
}
|
||||
|
||||
bool OPvPCapturePointNA::HandleCustomSpell(Player * plr, uint32 spellId, GameObject * go)
|
||||
{
|
||||
std::vector<uint32> nodes;
|
||||
@@ -346,31 +376,39 @@ bool OPvPCapturePointNA::HandleCustomSpell(Player * plr, uint32 spellId, GameObj
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(retval)
|
||||
{
|
||||
//Adding items
|
||||
uint32 noSpaceForCount = 0;
|
||||
|
||||
// check space and find places
|
||||
ItemPosCountVec dest;
|
||||
|
||||
int32 count = 10;
|
||||
uint32 itemid = 24538;
|
||||
// bomb id count
|
||||
uint8 msg = plr->CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, itemid, count, &noSpaceForCount );
|
||||
if( msg != EQUIP_ERR_OK ) // convert to possible store amount
|
||||
count -= noSpaceForCount;
|
||||
|
||||
if( count == 0 || dest.empty()) // can't add any
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
Item* item = plr->StoreNewItem( dest, itemid, true);
|
||||
|
||||
if(count > 0 && item)
|
||||
{
|
||||
plr->SendNewItem(item,count,true,false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int32 OPvPCapturePointNA::HandleOpenGo(Player *plr, uint64 guid)
|
||||
{
|
||||
uint32 retval = OPvPCapturePoint::HandleOpenGo(plr, guid);
|
||||
@@ -383,10 +421,12 @@ int32 OPvPCapturePointNA::HandleOpenGo(Player *plr, uint64 guid)
|
||||
gos=HordeControlGOs;
|
||||
else
|
||||
return -1;
|
||||
|
||||
int32 del = -1;
|
||||
int32 del2 = -1;
|
||||
int32 add = -1;
|
||||
int32 add2 = -1;
|
||||
|
||||
switch(retval)
|
||||
{
|
||||
case NA_DESTROYED_ROOST_S:
|
||||
@@ -473,18 +513,24 @@ int32 OPvPCapturePointNA::HandleOpenGo(Player *plr, uint64 guid)
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if(del>-1)
|
||||
DelObject(del);
|
||||
|
||||
if(del2>-1)
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
return retval;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
{
|
||||
// let the controlling faction advance in phase
|
||||
@@ -493,6 +539,7 @@ bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
capturable = true;
|
||||
else if(m_ControllingFaction == HORDE && m_activePlayers[0].size() < m_activePlayers[1].size())
|
||||
capturable = true;
|
||||
|
||||
if(m_GuardCheckTimer < diff)
|
||||
{
|
||||
m_GuardCheckTimer = NA_GUARD_CHECK_TIME;
|
||||
@@ -506,6 +553,7 @@ bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
m_PvP->SendUpdateWorldState(NA_UI_GUARDS_LEFT,m_GuardsAlive);
|
||||
}
|
||||
} else m_GuardCheckTimer -= diff;
|
||||
|
||||
if(m_capturable || capturable)
|
||||
{
|
||||
if(m_RespawnTimer < diff)
|
||||
@@ -516,10 +564,12 @@ bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
FactionTakeOver(m_ControllingFaction);
|
||||
m_RespawnTimer = NA_RESPAWN_TIME;
|
||||
} else m_RespawnTimer -= diff;
|
||||
|
||||
return OPvPCapturePoint::Update(diff);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::ChangeState()
|
||||
{
|
||||
uint32 artkit = 21;
|
||||
@@ -553,14 +603,17 @@ void OPvPCapturePointNA::ChangeState()
|
||||
artkit = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
|
||||
if(flag)
|
||||
{
|
||||
flag->SetGoArtKit(artkit);
|
||||
flag->SendUpdateObjectToAllExcept(NULL);
|
||||
}
|
||||
|
||||
UpdateHalaaWorldState();
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
@@ -570,6 +623,7 @@ void OPvPCapturePointNA::SendChangePhase()
|
||||
SendUpdateWorldState(NA_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(NA_UI_TOWER_SLIDER_N, m_neutralValuePct);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::UpdateHalaaWorldState()
|
||||
{
|
||||
m_PvP->SendUpdateWorldState( NA_MAP_HALAA_NEUTRAL ,uint32(bool(m_HalaaState & HALAA_N)));
|
||||
@@ -578,6 +632,7 @@ void OPvPCapturePointNA::UpdateHalaaWorldState()
|
||||
m_PvP->SendUpdateWorldState( NA_MAP_HALAA_HORDE ,uint32(bool(m_HalaaState & HALAA_H)));
|
||||
m_PvP->SendUpdateWorldState( NA_MAP_HALAA_ALLIANCE ,uint32(bool(m_HalaaState & HALAA_A)));
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::UpdateWyvernRoostWorldState(uint32 roost)
|
||||
{
|
||||
switch(roost)
|
||||
|
||||
Reference in New Issue
Block a user