Core/OpenPVP: Fix Outdoor PVP objectives in Eastern Plaguelands - patch by retriman, converted by D_Skywalker

--HG--
branch : trunk
This commit is contained in:
click
2010-10-25 01:51:48 +02:00
parent 989f696d1e
commit 910264070c
2 changed files with 189 additions and 200 deletions
+189 -192
View File
@@ -37,39 +37,31 @@ OPvPCapturePointEP_EWT::OPvPCapturePointEP_EWT(OutdoorPvP *pvp)
void OPvPCapturePointEP_EWT::ChangeState() void OPvPCapturePointEP_EWT::ChangeState()
{ {
if (fabs(m_value) == m_maxValue) // state won't change, only phase when maxed out! // if changing from controlling alliance to horde or vice versa
if ( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State )
{ {
// if changing from controlling alliance to horde or vice versa sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_A));
if (m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_A)); else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State )
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0; {
} sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_H));
else if (m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_H));
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
}
uint32 artkit = 21; uint32 artkit = 21;
switch(m_State) switch (m_State)
{ {
case OBJECTIVESTATE_ALLIANCE: case OBJECTIVESTATE_ALLIANCE:
if (m_value == m_maxValue) m_TowerState = EP_TS_A;
m_TowerState = EP_TS_A;
else
m_TowerState = EP_TS_A_P;
artkit = 2; artkit = 2;
SummonSupportUnitAtNorthpassTower(ALLIANCE); SummonSupportUnitAtNorthpassTower(ALLIANCE);
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = ALLIANCE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = ALLIANCE;
if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_A)); if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_A));
break; break;
case OBJECTIVESTATE_HORDE: case OBJECTIVESTATE_HORDE:
if (m_value == -m_maxValue) m_TowerState = EP_TS_H;
m_TowerState = EP_TS_H;
else
m_TowerState = EP_TS_H_P;
artkit = 1; artkit = 1;
SummonSupportUnitAtNorthpassTower(HORDE); SummonSupportUnitAtNorthpassTower(HORDE);
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = HORDE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = HORDE;
@@ -86,25 +78,24 @@ void OPvPCapturePointEP_EWT::ChangeState()
case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
m_TowerState = EP_TS_N_H; m_TowerState = EP_TS_N_H;
break; 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);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_EWT_CM, 0);
} }
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);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_EWT_CM, 0);
} }
void OPvPCapturePointEP_EWT::SendChangePhase() void OPvPCapturePointEP_EWT::SendChangePhase()
@@ -122,8 +113,6 @@ void OPvPCapturePointEP_EWT::FillInitialWorldStates(WorldPacket &data)
{ {
data << EP_EWT_A << uint32(bool(m_TowerState & EP_TS_A)); data << EP_EWT_A << uint32(bool(m_TowerState & EP_TS_A));
data << EP_EWT_H << uint32(bool(m_TowerState & EP_TS_H)); data << EP_EWT_H << uint32(bool(m_TowerState & EP_TS_H));
data << EP_EWT_A_P << uint32(bool(m_TowerState & EP_TS_A_P));
data << EP_EWT_H_P << uint32(bool(m_TowerState & EP_TS_H_P));
data << EP_EWT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); data << EP_EWT_N_A << uint32(bool(m_TowerState & EP_TS_N_A));
data << EP_EWT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); data << EP_EWT_N_H << uint32(bool(m_TowerState & EP_TS_N_H));
data << EP_EWT_N << uint32(bool(m_TowerState & EP_TS_N)); data << EP_EWT_N << uint32(bool(m_TowerState & EP_TS_N));
@@ -133,8 +122,6 @@ void OPvPCapturePointEP_EWT::UpdateTowerState()
{ {
m_PvP->SendUpdateWorldState(EP_EWT_A , bool(m_TowerState & EP_TS_A)); m_PvP->SendUpdateWorldState(EP_EWT_A , bool(m_TowerState & EP_TS_A));
m_PvP->SendUpdateWorldState(EP_EWT_H , bool(m_TowerState & EP_TS_H)); m_PvP->SendUpdateWorldState(EP_EWT_H , bool(m_TowerState & EP_TS_H));
m_PvP->SendUpdateWorldState(EP_EWT_A_P , bool(m_TowerState & EP_TS_A_P));
m_PvP->SendUpdateWorldState(EP_EWT_H_P , bool(m_TowerState & EP_TS_H_P));
m_PvP->SendUpdateWorldState(EP_EWT_N_A , bool(m_TowerState & EP_TS_N_A)); m_PvP->SendUpdateWorldState(EP_EWT_N_A , bool(m_TowerState & EP_TS_N_A));
m_PvP->SendUpdateWorldState(EP_EWT_N_H , bool(m_TowerState & EP_TS_N_H)); m_PvP->SendUpdateWorldState(EP_EWT_N_H , bool(m_TowerState & EP_TS_N_H));
m_PvP->SendUpdateWorldState(EP_EWT_N , bool(m_TowerState & EP_TS_N)); m_PvP->SendUpdateWorldState(EP_EWT_N , bool(m_TowerState & EP_TS_N));
@@ -188,39 +175,31 @@ OPvPCapturePointEP_NPT::OPvPCapturePointEP_NPT(OutdoorPvP *pvp)
void OPvPCapturePointEP_NPT::ChangeState() void OPvPCapturePointEP_NPT::ChangeState()
{ {
if (fabs(m_value) == m_maxValue) // state won't change, only phase when maxed out! // if changing from controlling alliance to horde or vice versa
if ( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State )
{ {
// if changing from controlling alliance to horde or vice versa sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_A));
if (m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_A)); else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State )
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0; {
} sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_H));
else if (m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_NPT_H));
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = 0;
}
uint32 artkit = 21; uint32 artkit = 21;
switch(m_State) switch (m_State)
{ {
case OBJECTIVESTATE_ALLIANCE: case OBJECTIVESTATE_ALLIANCE:
if (m_value == m_maxValue) m_TowerState = EP_TS_A;
m_TowerState = EP_TS_A;
else
m_TowerState = EP_TS_A_P;
artkit = 2; artkit = 2;
SummonGO(ALLIANCE); SummonGO(ALLIANCE);
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = ALLIANCE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = ALLIANCE;
if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_A)); if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_A));
break; break;
case OBJECTIVESTATE_HORDE: case OBJECTIVESTATE_HORDE:
if (m_value == -m_maxValue) m_TowerState = EP_TS_H;
m_TowerState = EP_TS_H;
else
m_TowerState = EP_TS_H_P;
artkit = 1; artkit = 1;
SummonGO(HORDE); SummonGO(HORDE);
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = HORDE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_NPT] = HORDE;
@@ -232,32 +211,40 @@ void OPvPCapturePointEP_NPT::ChangeState()
DelObject(EP_NPT_BUFF); DelObject(EP_NPT_BUFF);
break; break;
case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
m_TowerState = EP_TS_N_A; m_TowerState = EP_TS_N_A;
break; break;
case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
m_TowerState = EP_TS_N_A;
m_SummonedGOSide = 0;
DelObject(EP_NPT_BUFF);
break;
case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
m_TowerState = EP_TS_N_H; m_TowerState = EP_TS_N_H;
break; break;
} case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
m_TowerState = EP_TS_N_H;
GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID); m_SummonedGOSide = 0;
GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_NPT_FLAGS]); DelObject(EP_NPT_BUFF);
if (flag) break;
{
flag->SetGoArtKit(artkit);
}
if (flag2)
{
flag2->SetGoArtKit(artkit);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_NPT_CM, 0);
} }
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);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_NPT_CM, 0);
} }
void OPvPCapturePointEP_NPT::SendChangePhase() void OPvPCapturePointEP_NPT::SendChangePhase()
@@ -275,8 +262,6 @@ void OPvPCapturePointEP_NPT::FillInitialWorldStates(WorldPacket &data)
{ {
data << EP_NPT_A << uint32(bool(m_TowerState & EP_TS_A)); data << EP_NPT_A << uint32(bool(m_TowerState & EP_TS_A));
data << EP_NPT_H << uint32(bool(m_TowerState & EP_TS_H)); data << EP_NPT_H << uint32(bool(m_TowerState & EP_TS_H));
data << EP_NPT_A_P << uint32(bool(m_TowerState & EP_TS_A_P));
data << EP_NPT_H_P << uint32(bool(m_TowerState & EP_TS_H_P));
data << EP_NPT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); data << EP_NPT_N_A << uint32(bool(m_TowerState & EP_TS_N_A));
data << EP_NPT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); data << EP_NPT_N_H << uint32(bool(m_TowerState & EP_TS_N_H));
data << EP_NPT_N << uint32(bool(m_TowerState & EP_TS_N)); data << EP_NPT_N << uint32(bool(m_TowerState & EP_TS_N));
@@ -286,8 +271,6 @@ void OPvPCapturePointEP_NPT::UpdateTowerState()
{ {
m_PvP->SendUpdateWorldState(EP_NPT_A , bool(m_TowerState & EP_TS_A)); m_PvP->SendUpdateWorldState(EP_NPT_A , bool(m_TowerState & EP_TS_A));
m_PvP->SendUpdateWorldState(EP_NPT_H , bool(m_TowerState & EP_TS_H)); m_PvP->SendUpdateWorldState(EP_NPT_H , bool(m_TowerState & EP_TS_H));
m_PvP->SendUpdateWorldState(EP_NPT_A_P , bool(m_TowerState & EP_TS_A_P));
m_PvP->SendUpdateWorldState(EP_NPT_H_P , bool(m_TowerState & EP_TS_H_P));
m_PvP->SendUpdateWorldState(EP_NPT_N_A , bool(m_TowerState & EP_TS_N_A)); m_PvP->SendUpdateWorldState(EP_NPT_N_A , bool(m_TowerState & EP_TS_N_A));
m_PvP->SendUpdateWorldState(EP_NPT_N_H , bool(m_TowerState & EP_TS_N_H)); m_PvP->SendUpdateWorldState(EP_NPT_N_H , bool(m_TowerState & EP_TS_N_H));
m_PvP->SendUpdateWorldState(EP_NPT_N , bool(m_TowerState & EP_TS_N)); m_PvP->SendUpdateWorldState(EP_NPT_N , bool(m_TowerState & EP_TS_N));
@@ -335,39 +318,31 @@ OPvPCapturePointEP_CGT::OPvPCapturePointEP_CGT(OutdoorPvP *pvp)
void OPvPCapturePointEP_CGT::ChangeState() void OPvPCapturePointEP_CGT::ChangeState()
{ {
if (fabs(m_value) == m_maxValue) // state won't change, only phase when maxed out! // if changing from controlling alliance to horde or vice versa
if( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State )
{ {
// if changing from controlling alliance to horde or vice versa sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_CGT_A));
if (m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_CGT_A)); else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State )
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = 0; {
} sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_CGT_H));
else if (m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_CGT_H));
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = 0;
}
uint32 artkit = 21; uint32 artkit = 21;
switch(m_State) switch (m_State)
{ {
case OBJECTIVESTATE_ALLIANCE: case OBJECTIVESTATE_ALLIANCE:
if (m_value == m_maxValue) m_TowerState = EP_TS_A;
m_TowerState = EP_TS_A;
else
m_TowerState = EP_TS_A_P;
artkit = 2; artkit = 2;
LinkGraveYard(ALLIANCE); LinkGraveYard(ALLIANCE);
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = ALLIANCE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = ALLIANCE;
if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_CGT_A)); if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_CGT_A));
break; break;
case OBJECTIVESTATE_HORDE: case OBJECTIVESTATE_HORDE:
if (m_value == -m_maxValue) m_TowerState = EP_TS_H;
m_TowerState = EP_TS_H;
else
m_TowerState = EP_TS_H_P;
artkit = 1; artkit = 1;
LinkGraveYard(HORDE); LinkGraveYard(HORDE);
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = HORDE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_CGT] = HORDE;
@@ -384,25 +359,24 @@ void OPvPCapturePointEP_CGT::ChangeState()
case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
m_TowerState = EP_TS_N_H; m_TowerState = EP_TS_N_H;
break; 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);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_CGT_CM, 0);
} }
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);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_CGT_CM, 0);
} }
void OPvPCapturePointEP_CGT::SendChangePhase() void OPvPCapturePointEP_CGT::SendChangePhase()
@@ -420,8 +394,6 @@ void OPvPCapturePointEP_CGT::FillInitialWorldStates(WorldPacket &data)
{ {
data << EP_CGT_A << uint32(bool(m_TowerState & EP_TS_A)); data << EP_CGT_A << uint32(bool(m_TowerState & EP_TS_A));
data << EP_CGT_H << uint32(bool(m_TowerState & EP_TS_H)); data << EP_CGT_H << uint32(bool(m_TowerState & EP_TS_H));
data << EP_CGT_A_P << uint32(bool(m_TowerState & EP_TS_A_P));
data << EP_CGT_H_P << uint32(bool(m_TowerState & EP_TS_H_P));
data << EP_CGT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); data << EP_CGT_N_A << uint32(bool(m_TowerState & EP_TS_N_A));
data << EP_CGT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); data << EP_CGT_N_H << uint32(bool(m_TowerState & EP_TS_N_H));
data << EP_CGT_N << uint32(bool(m_TowerState & EP_TS_N)); data << EP_CGT_N << uint32(bool(m_TowerState & EP_TS_N));
@@ -431,8 +403,6 @@ void OPvPCapturePointEP_CGT::UpdateTowerState()
{ {
m_PvP->SendUpdateWorldState(EP_CGT_A , bool(m_TowerState & EP_TS_A)); m_PvP->SendUpdateWorldState(EP_CGT_A , bool(m_TowerState & EP_TS_A));
m_PvP->SendUpdateWorldState(EP_CGT_H , bool(m_TowerState & EP_TS_H)); m_PvP->SendUpdateWorldState(EP_CGT_H , bool(m_TowerState & EP_TS_H));
m_PvP->SendUpdateWorldState(EP_CGT_A_P , bool(m_TowerState & EP_TS_A_P));
m_PvP->SendUpdateWorldState(EP_CGT_H_P , bool(m_TowerState & EP_TS_H_P));
m_PvP->SendUpdateWorldState(EP_CGT_N_A , bool(m_TowerState & EP_TS_N_A)); m_PvP->SendUpdateWorldState(EP_CGT_N_A , bool(m_TowerState & EP_TS_N_A));
m_PvP->SendUpdateWorldState(EP_CGT_N_H , bool(m_TowerState & EP_TS_N_H)); m_PvP->SendUpdateWorldState(EP_CGT_N_H , bool(m_TowerState & EP_TS_N_H));
m_PvP->SendUpdateWorldState(EP_CGT_N , bool(m_TowerState & EP_TS_N)); m_PvP->SendUpdateWorldState(EP_CGT_N , bool(m_TowerState & EP_TS_N));
@@ -477,39 +447,31 @@ OPvPCapturePointEP_PWT::OPvPCapturePointEP_PWT(OutdoorPvP *pvp)
void OPvPCapturePointEP_PWT::ChangeState() void OPvPCapturePointEP_PWT::ChangeState()
{ {
if (fabs(m_value) == m_maxValue) // state won't change, only phase when maxed out! // if changing from controlling alliance to horde or vice versa
if ( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State )
{ {
// if changing from controlling alliance to horde or vice versa sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_PWT_A));
if (m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_PWT_A)); else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State )
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = 0; {
} sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_PWT_H));
else if (m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State) ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = 0;
{ }
sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_LOOSE_PWT_H));
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = 0;
}
uint32 artkit = 21; uint32 artkit = 21;
switch(m_State) switch (m_State)
{ {
case OBJECTIVESTATE_ALLIANCE: case OBJECTIVESTATE_ALLIANCE:
if (m_value == m_maxValue) m_TowerState = EP_TS_A;
m_TowerState = EP_TS_A;
else
m_TowerState = EP_TS_A_P;
SummonFlightMaster(ALLIANCE); SummonFlightMaster(ALLIANCE);
artkit = 2; artkit = 2;
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = ALLIANCE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = ALLIANCE;
if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_A)); if (m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_A));
break; break;
case OBJECTIVESTATE_HORDE: case OBJECTIVESTATE_HORDE:
if (m_value == -m_maxValue) m_TowerState = EP_TS_H;
m_TowerState = EP_TS_H;
else
m_TowerState = EP_TS_H_P;
SummonFlightMaster(HORDE); SummonFlightMaster(HORDE);
artkit = 1; artkit = 1;
((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = HORDE; ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_PWT] = HORDE;
@@ -521,32 +483,39 @@ void OPvPCapturePointEP_PWT::ChangeState()
m_FlightMasterSpawned = 0; m_FlightMasterSpawned = 0;
break; break;
case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
m_TowerState = EP_TS_N_A; m_TowerState = EP_TS_N_A;
break; break;
case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
m_TowerState = EP_TS_N_A;
DelCreature(EP_PWT_FLIGHTMASTER);
m_FlightMasterSpawned = 0;
break;
case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
m_TowerState = EP_TS_N_H; m_TowerState = EP_TS_N_H;
break; break;
} case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
m_TowerState = EP_TS_N_H;
GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID); DelCreature(EP_PWT_FLIGHTMASTER);
GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_PWT_FLAGS]); m_FlightMasterSpawned = 0;
if (flag) break;
{
flag->SetGoArtKit(artkit);
}
if (flag2)
{
flag2->SetGoArtKit(artkit);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_PWT_CM, 0);
} }
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);
}
UpdateTowerState();
// complete quest objective
if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
SendObjectiveComplete(EP_PWT_CM, 0);
} }
void OPvPCapturePointEP_PWT::SendChangePhase() void OPvPCapturePointEP_PWT::SendChangePhase()
@@ -564,8 +533,6 @@ void OPvPCapturePointEP_PWT::FillInitialWorldStates(WorldPacket &data)
{ {
data << EP_PWT_A << uint32(bool(m_TowerState & EP_TS_A)); data << EP_PWT_A << uint32(bool(m_TowerState & EP_TS_A));
data << EP_PWT_H << uint32(bool(m_TowerState & EP_TS_H)); data << EP_PWT_H << uint32(bool(m_TowerState & EP_TS_H));
data << EP_PWT_A_P << uint32(bool(m_TowerState & EP_TS_A_P));
data << EP_PWT_H_P << uint32(bool(m_TowerState & EP_TS_H_P));
data << EP_PWT_N_A << uint32(bool(m_TowerState & EP_TS_N_A)); data << EP_PWT_N_A << uint32(bool(m_TowerState & EP_TS_N_A));
data << EP_PWT_N_H << uint32(bool(m_TowerState & EP_TS_N_H)); data << EP_PWT_N_H << uint32(bool(m_TowerState & EP_TS_N_H));
data << EP_PWT_N << uint32(bool(m_TowerState & EP_TS_N)); data << EP_PWT_N << uint32(bool(m_TowerState & EP_TS_N));
@@ -575,8 +542,6 @@ void OPvPCapturePointEP_PWT::UpdateTowerState()
{ {
m_PvP->SendUpdateWorldState(EP_PWT_A , bool(m_TowerState & EP_TS_A)); m_PvP->SendUpdateWorldState(EP_PWT_A , bool(m_TowerState & EP_TS_A));
m_PvP->SendUpdateWorldState(EP_PWT_H , bool(m_TowerState & EP_TS_H)); m_PvP->SendUpdateWorldState(EP_PWT_H , bool(m_TowerState & EP_TS_H));
m_PvP->SendUpdateWorldState(EP_PWT_A_P , bool(m_TowerState & EP_TS_A_P));
m_PvP->SendUpdateWorldState(EP_PWT_H_P , bool(m_TowerState & EP_TS_H_P));
m_PvP->SendUpdateWorldState(EP_PWT_N_A , bool(m_TowerState & EP_TS_N_A)); m_PvP->SendUpdateWorldState(EP_PWT_N_A , bool(m_TowerState & EP_TS_N_A));
m_PvP->SendUpdateWorldState(EP_PWT_N_H , bool(m_TowerState & EP_TS_N_H)); m_PvP->SendUpdateWorldState(EP_PWT_N_H , bool(m_TowerState & EP_TS_N_H));
m_PvP->SendUpdateWorldState(EP_PWT_N , bool(m_TowerState & EP_TS_N)); m_PvP->SendUpdateWorldState(EP_PWT_N , bool(m_TowerState & EP_TS_N));
@@ -608,6 +573,46 @@ void OPvPCapturePointEP_PWT::SummonFlightMaster(uint32 team)
m_FlightMasterSpawned = team; m_FlightMasterSpawned = team;
DelCreature(EP_PWT_FLIGHTMASTER); DelCreature(EP_PWT_FLIGHTMASTER);
AddCreature(EP_PWT_FLIGHTMASTER,EP_PWT_FlightMaster.entry,team,EP_PWT_FlightMaster.map,EP_PWT_FlightMaster.x,EP_PWT_FlightMaster.y,EP_PWT_FlightMaster.z,EP_PWT_FlightMaster.o); AddCreature(EP_PWT_FLIGHTMASTER,EP_PWT_FlightMaster.entry,team,EP_PWT_FlightMaster.map,EP_PWT_FlightMaster.x,EP_PWT_FlightMaster.y,EP_PWT_FlightMaster.z,EP_PWT_FlightMaster.o);
/*
// sky - we need update gso code
Creature * c = HashMapHolder<Creature>::Find(m_Creatures[EP_PWT_FLIGHTMASTER]);
//Spawn flight master as friendly to capturing team
c->SetUInt32Value(GAMEOBJECT_FACTION,(team == ALLIANCE ? 55 : 68));
if(c)
{
GossipOption gso;
gso.Action = GOSSIP_OPTION_OUTDOORPVP;
gso.GossipId = 0;
gso.OptionText.assign(sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_FLIGHT_NPT));
gso.Id = 50;
gso.Icon = 0;
gso.NpcFlag = 0;
gso.BoxMoney = 0;
gso.Coded = false;
c->addGossipOption(gso);
gso.Action = GOSSIP_OPTION_OUTDOORPVP;
gso.GossipId = 0;
gso.OptionText.assign(sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_FLIGHT_EWT));
gso.Id = 50;
gso.Icon = 0;
gso.NpcFlag = 0;
gso.BoxMoney = 0;
gso.Coded = false;
c->addGossipOption(gso);
gso.Action = GOSSIP_OPTION_OUTDOORPVP;
gso.GossipId = 0;
gso.OptionText.assign(sObjectMgr.GetTrinityStringForDBCLocale(LANG_OPVP_EP_FLIGHT_CGT));
gso.Id = 50;
gso.Icon = 0;
gso.NpcFlag = 0;
gso.BoxMoney = 0;
gso.Coded = false;
c->addGossipOption(gso);
}
*/
} }
} }
@@ -733,32 +738,24 @@ void OutdoorPvPEP::SendRemoveWorldStates(Player *plr)
plr->SendUpdateWorldState(EP_EWT_A,0); plr->SendUpdateWorldState(EP_EWT_A,0);
plr->SendUpdateWorldState(EP_EWT_H,0); plr->SendUpdateWorldState(EP_EWT_H,0);
plr->SendUpdateWorldState(EP_EWT_N,0); plr->SendUpdateWorldState(EP_EWT_N,0);
plr->SendUpdateWorldState(EP_EWT_A_P,0);
plr->SendUpdateWorldState(EP_EWT_H_P,0);
plr->SendUpdateWorldState(EP_EWT_N_A,0); plr->SendUpdateWorldState(EP_EWT_N_A,0);
plr->SendUpdateWorldState(EP_EWT_N_H,0); plr->SendUpdateWorldState(EP_EWT_N_H,0);
plr->SendUpdateWorldState(EP_PWT_A,0); plr->SendUpdateWorldState(EP_PWT_A,0);
plr->SendUpdateWorldState(EP_PWT_H,0); plr->SendUpdateWorldState(EP_PWT_H,0);
plr->SendUpdateWorldState(EP_PWT_N,0); plr->SendUpdateWorldState(EP_PWT_N,0);
plr->SendUpdateWorldState(EP_PWT_A_P,0);
plr->SendUpdateWorldState(EP_PWT_H_P,0);
plr->SendUpdateWorldState(EP_PWT_N_A,0); plr->SendUpdateWorldState(EP_PWT_N_A,0);
plr->SendUpdateWorldState(EP_PWT_N_H,0); plr->SendUpdateWorldState(EP_PWT_N_H,0);
plr->SendUpdateWorldState(EP_NPT_A,0); plr->SendUpdateWorldState(EP_NPT_A,0);
plr->SendUpdateWorldState(EP_NPT_H,0); plr->SendUpdateWorldState(EP_NPT_H,0);
plr->SendUpdateWorldState(EP_NPT_N,0); plr->SendUpdateWorldState(EP_NPT_N,0);
plr->SendUpdateWorldState(EP_NPT_A_P,0);
plr->SendUpdateWorldState(EP_NPT_H_P,0);
plr->SendUpdateWorldState(EP_NPT_N_A,0); plr->SendUpdateWorldState(EP_NPT_N_A,0);
plr->SendUpdateWorldState(EP_NPT_N_H,0); plr->SendUpdateWorldState(EP_NPT_N_H,0);
plr->SendUpdateWorldState(EP_CGT_A,0); plr->SendUpdateWorldState(EP_CGT_A,0);
plr->SendUpdateWorldState(EP_CGT_H,0); plr->SendUpdateWorldState(EP_CGT_H,0);
plr->SendUpdateWorldState(EP_CGT_N,0); plr->SendUpdateWorldState(EP_CGT_N,0);
plr->SendUpdateWorldState(EP_CGT_A_P,0);
plr->SendUpdateWorldState(EP_CGT_H_P,0);
plr->SendUpdateWorldState(EP_CGT_N_A,0); plr->SendUpdateWorldState(EP_CGT_N_A,0);
plr->SendUpdateWorldState(EP_CGT_N_H,0); plr->SendUpdateWorldState(EP_CGT_N_H,0);
} }
@@ -50,8 +50,6 @@ enum EP_EastwallTowerWorldStates
{ {
EP_EWT_A = 2354, EP_EWT_A = 2354,
EP_EWT_H = 2356, EP_EWT_H = 2356,
EP_EWT_A_P = 2357, // ally progressing
EP_EWT_H_P = 2358,
EP_EWT_N_A = 2359, // ally conquested EP_EWT_N_A = 2359, // ally conquested
EP_EWT_N_H = 2360, EP_EWT_N_H = 2360,
EP_EWT_N = 2361 EP_EWT_N = 2361
@@ -62,8 +60,6 @@ enum EP_NorthpassTowerWorldStates
EP_NPT_N = 2352, EP_NPT_N = 2352,
EP_NPT_N_A = 2362, EP_NPT_N_A = 2362,
EP_NPT_N_H = 2363, EP_NPT_N_H = 2363,
EP_NPT_A_P = 2364,
EP_NPT_H_P = 2365,
EP_NPT_A = 2372, EP_NPT_A = 2372,
EP_NPT_H = 2373 EP_NPT_H = 2373
}; };
@@ -72,8 +68,6 @@ enum EP_PlagewoodTowerWorldStates
{ {
EP_PWT_N_A = 2366, EP_PWT_N_A = 2366,
EP_PWT_N_H = 2353, //2367 not present! use neutral! EP_PWT_N_H = 2353, //2367 not present! use neutral!
EP_PWT_A_P = 2368,
EP_PWT_H_P = 2369,
EP_PWT_A = 2370, EP_PWT_A = 2370,
EP_PWT_H = 2371, EP_PWT_H = 2371,
EP_PWT_N = 2353 EP_PWT_N = 2353
@@ -83,8 +77,6 @@ enum EP_CrownGuardTowerWorldStates
{ {
EP_CGT_N_A = 2374, EP_CGT_N_A = 2374,
EP_CGT_N_H = 2375, EP_CGT_N_H = 2375,
EP_CGT_A_P = 2376,
EP_CGT_H_P = 2377,
EP_CGT_A = 2378, EP_CGT_A = 2378,
EP_CGT_H = 2379, EP_CGT_H = 2379,
EP_CGT_N = 2355 EP_CGT_N = 2355