mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-18 11:25:42 +00:00
fix(Core/Weather): Improve weather system thread safety (#22772)
Co-authored-by: Shauren <shauren.trinity@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1895,13 +1895,7 @@ public:
|
||||
Player* player = handler->GetSession()->GetPlayer();
|
||||
uint32 zoneid = player->GetZoneId();
|
||||
|
||||
Weather* weather = WeatherMgr::FindWeather(zoneid);
|
||||
|
||||
if (!weather)
|
||||
{
|
||||
weather = WeatherMgr::AddWeather(zoneid);
|
||||
}
|
||||
|
||||
Weather* weather = player->GetMap()->GetOrGenerateZoneDefaultWeather(zoneid);
|
||||
if (!weather)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_NO_WEATHER);
|
||||
|
||||
@@ -43,12 +43,12 @@ void OPvPCapturePointEP_EWT::ChangeState()
|
||||
// if changing from controlling alliance to horde or vice versa
|
||||
if (_oldState == OBJECTIVESTATE_ALLIANCE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_EWT_A));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_EWT_A).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_EWT, TEAM_NEUTRAL);
|
||||
}
|
||||
else if (_oldState == OBJECTIVESTATE_HORDE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_EWT_H));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_EWT_H).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_EWT, TEAM_NEUTRAL);
|
||||
}
|
||||
|
||||
@@ -61,14 +61,16 @@ void OPvPCapturePointEP_EWT::ChangeState()
|
||||
artkit = 2;
|
||||
SummonSupportUnitAtNorthpassTower(TEAM_ALLIANCE);
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_EWT, TEAM_ALLIANCE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_A));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_A).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_HORDE:
|
||||
m_TowerState = EP_TS_H;
|
||||
artkit = 1;
|
||||
SummonSupportUnitAtNorthpassTower(TEAM_HORDE);
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_EWT, TEAM_HORDE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_H));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_H).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_NEUTRAL:
|
||||
m_TowerState = EP_TS_N;
|
||||
@@ -176,12 +178,12 @@ void OPvPCapturePointEP_NPT::ChangeState()
|
||||
// if changing from controlling alliance to horde or vice versa
|
||||
if (_oldState == OBJECTIVESTATE_ALLIANCE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_NPT_A));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_NPT_A).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_NEUTRAL);
|
||||
}
|
||||
else if (_oldState == OBJECTIVESTATE_HORDE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_NPT_H));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_NPT_H).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_NEUTRAL);
|
||||
}
|
||||
|
||||
@@ -194,14 +196,16 @@ void OPvPCapturePointEP_NPT::ChangeState()
|
||||
artkit = 2;
|
||||
SummonGO(TEAM_ALLIANCE);
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_ALLIANCE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_A));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_A).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_HORDE:
|
||||
m_TowerState = EP_TS_H;
|
||||
artkit = 1;
|
||||
SummonGO(TEAM_HORDE);
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_NPT, TEAM_HORDE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_H));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_NPT_H).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_NEUTRAL:
|
||||
m_TowerState = EP_TS_N;
|
||||
@@ -319,12 +323,12 @@ void OPvPCapturePointEP_CGT::ChangeState()
|
||||
// if changing from controlling alliance to horde or vice versa
|
||||
if (_oldState == OBJECTIVESTATE_ALLIANCE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_CGT_A));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_CGT_A).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_CGT, TEAM_NEUTRAL);
|
||||
}
|
||||
else if (_oldState == OBJECTIVESTATE_HORDE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_CGT_H));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_CGT_H).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_CGT, TEAM_NEUTRAL);
|
||||
}
|
||||
|
||||
@@ -337,14 +341,16 @@ void OPvPCapturePointEP_CGT::ChangeState()
|
||||
artkit = 2;
|
||||
LinkGraveyard(TEAM_ALLIANCE);
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_CGT, TEAM_ALLIANCE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_CGT_A));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_CGT_A).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_HORDE:
|
||||
m_TowerState = EP_TS_H;
|
||||
artkit = 1;
|
||||
LinkGraveyard(TEAM_HORDE);
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_CGT, TEAM_HORDE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_CGT_H));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_CGT_H).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_NEUTRAL:
|
||||
m_TowerState = EP_TS_N;
|
||||
@@ -447,12 +453,12 @@ void OPvPCapturePointEP_PWT::ChangeState()
|
||||
// if changing from controlling alliance to horde or vice versa
|
||||
if (_oldState == OBJECTIVESTATE_ALLIANCE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_PWT_A));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_PWT_A).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_NEUTRAL);
|
||||
}
|
||||
else if (_oldState == OBJECTIVESTATE_HORDE && _oldState != _state)
|
||||
{
|
||||
sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_PWT_H));
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_LOSE_PWT_H).c_str());
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_NEUTRAL);
|
||||
}
|
||||
|
||||
@@ -465,14 +471,16 @@ void OPvPCapturePointEP_PWT::ChangeState()
|
||||
SummonFlightMaster(TEAM_ALLIANCE);
|
||||
artkit = 2;
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_ALLIANCE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_A));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_A).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_HORDE:
|
||||
m_TowerState = EP_TS_H;
|
||||
SummonFlightMaster(TEAM_HORDE);
|
||||
artkit = 1;
|
||||
((OutdoorPvPEP*)_pvp)->SetControlledState(EP_PWT, TEAM_HORDE);
|
||||
if (_oldState != _state) sWorldSessionMgr->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_H));
|
||||
if (_oldState != _state)
|
||||
_pvp->GetMap()->SendZoneText(EP_GraveyardZone, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_EP_CAPTURE_PWT_H).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_NEUTRAL:
|
||||
m_TowerState = EP_TS_N;
|
||||
|
||||
@@ -184,13 +184,13 @@ void OPvPCapturePointHP::ChangeState()
|
||||
field = HP_MAP_A[m_TowerType];
|
||||
if (uint32 alliance_towers = ((OutdoorPvPHP*)_pvp)->GetAllianceTowersControlled())
|
||||
((OutdoorPvPHP*)_pvp)->SetAllianceTowersControlled(--alliance_towers);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_LOSE_A[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_LOSE_A[m_TowerType]).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_HORDE:
|
||||
field = HP_MAP_H[m_TowerType];
|
||||
if (uint32 horde_towers = ((OutdoorPvPHP*)_pvp)->GetHordeTowersControlled())
|
||||
((OutdoorPvPHP*)_pvp)->SetHordeTowersControlled(--horde_towers);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_LOSE_H[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_LOSE_H[m_TowerType]).c_str());
|
||||
break;
|
||||
case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
|
||||
field = HP_MAP_N[m_TowerType];
|
||||
@@ -227,7 +227,7 @@ void OPvPCapturePointHP::ChangeState()
|
||||
uint32 alliance_towers = ((OutdoorPvPHP*)_pvp)->GetAllianceTowersControlled();
|
||||
if (alliance_towers < 3)
|
||||
((OutdoorPvPHP*)_pvp)->SetAllianceTowersControlled(++alliance_towers);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_CAPTURE_A[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_CAPTURE_A[m_TowerType]).c_str());
|
||||
break;
|
||||
}
|
||||
case OBJECTIVESTATE_HORDE:
|
||||
@@ -238,7 +238,7 @@ void OPvPCapturePointHP::ChangeState()
|
||||
uint32 horde_towers = ((OutdoorPvPHP*)_pvp)->GetHordeTowersControlled();
|
||||
if (horde_towers < 3)
|
||||
((OutdoorPvPHP*)_pvp)->SetHordeTowersControlled(++horde_towers);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_CAPTURE_H[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_CAPTURE_H[m_TowerType]).c_str());
|
||||
break;
|
||||
}
|
||||
case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
|
||||
|
||||
@@ -197,9 +197,9 @@ void OPvPCapturePointNA::FactionTakeOver(TeamId teamId)
|
||||
if (m_ControllingFaction != TEAM_NEUTRAL)
|
||||
sGraveyard->RemoveGraveyardLink(NA_HALAA_GRAVEYARD, NA_HALAA_GRAVEYARD_ZONE, m_ControllingFaction, false);
|
||||
if (m_ControllingFaction == TEAM_ALLIANCE)
|
||||
sWorldSessionMgr->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_A));
|
||||
_pvp->GetMap()->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_A).c_str());
|
||||
else if (m_ControllingFaction == TEAM_HORDE)
|
||||
sWorldSessionMgr->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_H));
|
||||
_pvp->GetMap()->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_LOSE_H).c_str());
|
||||
DespawnCreatures(GetControllingFaction() == TEAM_HORDE ? halaaNPCHorde : halaaNPCAlly);
|
||||
m_ControllingFaction = teamId;
|
||||
if (m_ControllingFaction != TEAM_NEUTRAL)
|
||||
@@ -221,7 +221,7 @@ void OPvPCapturePointNA::FactionTakeOver(TeamId teamId)
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 1);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
sWorldSessionMgr->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_A));
|
||||
_pvp->GetMap()->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_A).c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -233,7 +233,7 @@ void OPvPCapturePointNA::FactionTakeOver(TeamId teamId)
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 1);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
sWorldSessionMgr->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_H));
|
||||
_pvp->GetMap()->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_H).c_str());
|
||||
}
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_N);
|
||||
@@ -637,7 +637,7 @@ bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
{
|
||||
m_capturable = true;
|
||||
m_RespawnTimer = NA_RESPAWN_TIME;
|
||||
sWorldSessionMgr->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_DEFENSELESS));
|
||||
_pvp->GetMap()->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_DEFENSELESS).c_str());
|
||||
}
|
||||
else
|
||||
m_capturable = false;
|
||||
|
||||
@@ -106,7 +106,7 @@ bool OutdoorPvPSI::HandleAreaTrigger(Player* player, uint32 trigger)
|
||||
if (m_Gathered_A >= SI_MAX_RESOURCES)
|
||||
{
|
||||
TeamApplyBuff(TEAM_ALLIANCE, SI_CENARION_FAVOR, 0, player);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_A));
|
||||
GetMap()->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_A).c_str());
|
||||
m_LastController = TEAM_ALLIANCE;
|
||||
m_Gathered_A = 0;
|
||||
m_Gathered_H = 0;
|
||||
@@ -132,7 +132,7 @@ bool OutdoorPvPSI::HandleAreaTrigger(Player* player, uint32 trigger)
|
||||
if (m_Gathered_H >= SI_MAX_RESOURCES)
|
||||
{
|
||||
TeamApplyBuff(TEAM_HORDE, SI_CENARION_FAVOR, 0, player);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_H));
|
||||
GetMap()->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_H).c_str());
|
||||
m_LastController = TEAM_HORDE;
|
||||
m_Gathered_A = 0;
|
||||
m_Gathered_H = 0;
|
||||
|
||||
@@ -400,14 +400,14 @@ void OPvPCapturePointTF::ChangeState()
|
||||
{
|
||||
if (uint32 alliance_towers = ((OutdoorPvPTF*)_pvp)->GetAllianceTowersControlled())
|
||||
((OutdoorPvPTF*)_pvp)->SetAllianceTowersControlled(--alliance_towers);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_A));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_A).c_str());
|
||||
}
|
||||
// if changing from controlling horde to alliance
|
||||
else if (_oldState == OBJECTIVESTATE_HORDE)
|
||||
{
|
||||
if (uint32 horde_towers = ((OutdoorPvPTF*)_pvp)->GetHordeTowersControlled())
|
||||
((OutdoorPvPTF*)_pvp)->SetHordeTowersControlled(--horde_towers);
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_H));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_H).c_str());
|
||||
}
|
||||
|
||||
uint32 artkit = 21;
|
||||
@@ -422,7 +422,7 @@ void OPvPCapturePointTF::ChangeState()
|
||||
if (alliance_towers < TF_TOWER_NUM)
|
||||
((OutdoorPvPTF*)_pvp)->SetAllianceTowersControlled(++alliance_towers);
|
||||
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_A));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_A).c_str());
|
||||
|
||||
for (PlayerSet::iterator itr = _activePlayers[0].begin(); itr != _activePlayers[0].end(); ++itr)
|
||||
if (Player* player = ObjectAccessor::FindPlayer(*itr))
|
||||
@@ -437,7 +437,7 @@ void OPvPCapturePointTF::ChangeState()
|
||||
if (horde_towers < TF_TOWER_NUM)
|
||||
((OutdoorPvPTF*)_pvp)->SetHordeTowersControlled(++horde_towers);
|
||||
|
||||
sWorldSessionMgr->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_H));
|
||||
_pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_H).c_str());
|
||||
|
||||
for (PlayerSet::iterator itr = _activePlayers[1].begin(); itr != _activePlayers[1].end(); ++itr)
|
||||
if (Player* player = ObjectAccessor::FindPlayer(*itr))
|
||||
|
||||
@@ -82,14 +82,14 @@ void OPvPCapturePointZM_Beacon::ChangeState()
|
||||
{
|
||||
if (uint32 alliance_towers = ((OutdoorPvPZM*)_pvp)->GetAllianceTowersControlled())
|
||||
((OutdoorPvPZM*)_pvp)->SetAllianceTowersControlled(--alliance_towers);
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconLoseA[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconLoseA[m_TowerType]).c_str());
|
||||
}
|
||||
// if changing from controlling horde to alliance
|
||||
else if (_oldState == OBJECTIVESTATE_HORDE)
|
||||
{
|
||||
if (uint32 horde_towers = ((OutdoorPvPZM*)_pvp)->GetHordeTowersControlled())
|
||||
((OutdoorPvPZM*)_pvp)->SetHordeTowersControlled(--horde_towers);
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconLoseH[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconLoseH[m_TowerType]).c_str());
|
||||
}
|
||||
|
||||
switch (_state)
|
||||
@@ -100,7 +100,7 @@ void OPvPCapturePointZM_Beacon::ChangeState()
|
||||
uint32 alliance_towers = ((OutdoorPvPZM*)_pvp)->GetAllianceTowersControlled();
|
||||
if (alliance_towers < ZM_NUM_BEACONS)
|
||||
((OutdoorPvPZM*)_pvp)->SetAllianceTowersControlled(++alliance_towers);
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconCaptureA[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconCaptureA[m_TowerType]).c_str());
|
||||
break;
|
||||
}
|
||||
case OBJECTIVESTATE_HORDE:
|
||||
@@ -109,7 +109,7 @@ void OPvPCapturePointZM_Beacon::ChangeState()
|
||||
uint32 horde_towers = ((OutdoorPvPZM*)_pvp)->GetHordeTowersControlled();
|
||||
if (horde_towers < ZM_NUM_BEACONS)
|
||||
((OutdoorPvPZM*)_pvp)->SetHordeTowersControlled(++horde_towers);
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconCaptureH[m_TowerType]));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(ZMBeaconCaptureH[m_TowerType]).c_str());
|
||||
break;
|
||||
}
|
||||
case OBJECTIVESTATE_NEUTRAL:
|
||||
@@ -227,7 +227,7 @@ int32 OPvPCapturePointZM_Graveyard::HandleOpenGo(Player* player, GameObject* go)
|
||||
if (player->HasAura(ZM_BATTLE_STANDARD_A) && m_GraveyardState != ZM_GRAVEYARD_A)
|
||||
{
|
||||
if (m_GraveyardState == ZM_GRAVEYARD_H)
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_LOSE_GY_H));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_LOSE_GY_H).c_str());
|
||||
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);
|
||||
@@ -235,12 +235,12 @@ int32 OPvPCapturePointZM_Graveyard::HandleOpenGo(Player* player, GameObject* go)
|
||||
sGraveyard->AddGraveyardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, TEAM_ALLIANCE, false); // add gy
|
||||
_pvp->TeamApplyBuff(TEAM_ALLIANCE, ZM_CAPTURE_BUFF, 0, player);
|
||||
player->RemoveAurasDueToSpell(ZM_BATTLE_STANDARD_A);
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_CAPTURE_GY_A));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_CAPTURE_GY_A).c_str());
|
||||
}
|
||||
else if (player->HasAura(ZM_BATTLE_STANDARD_H) && m_GraveyardState != ZM_GRAVEYARD_H)
|
||||
{
|
||||
if (m_GraveyardState == ZM_GRAVEYARD_A)
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_LOSE_GY_A));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_LOSE_GY_A).c_str());
|
||||
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);
|
||||
@@ -248,7 +248,7 @@ int32 OPvPCapturePointZM_Graveyard::HandleOpenGo(Player* player, GameObject* go)
|
||||
sGraveyard->AddGraveyardLink(ZM_GRAVEYARD_ID, ZM_GRAVEYARD_ZONE, TEAM_HORDE, false); // add gy
|
||||
_pvp->TeamApplyBuff(TEAM_HORDE, ZM_CAPTURE_BUFF, 0, player);
|
||||
player->RemoveAurasDueToSpell(ZM_BATTLE_STANDARD_H);
|
||||
sWorldSessionMgr->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_CAPTURE_GY_H));
|
||||
_pvp->GetMap()->SendZoneText(ZM_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_ZM_CAPTURE_GY_H).c_str());
|
||||
}
|
||||
UpdateTowerState();
|
||||
}
|
||||
|
||||
@@ -63,14 +63,8 @@ struct npc_herald_of_the_lich_king : public ScriptedAI
|
||||
|
||||
void UpdateWeather(bool startEvent)
|
||||
{
|
||||
if (Weather* weather = WeatherMgr::FindWeather(me->GetZoneId()))
|
||||
{
|
||||
if (startEvent)
|
||||
weather->SetWeather(WEATHER_TYPE_STORM, 0.25f);
|
||||
else
|
||||
weather->SetWeather(WEATHER_TYPE_RAIN, 0.0f);
|
||||
}
|
||||
else if (Weather* weather = WeatherMgr::AddWeather(me->GetZoneId()))
|
||||
Weather* weather = me->GetMap()->GetOrGenerateZoneDefaultWeather(me->GetZoneId());
|
||||
if (weather)
|
||||
{
|
||||
if (startEvent)
|
||||
weather->SetWeather(WEATHER_TYPE_STORM, 0.25f);
|
||||
@@ -956,14 +950,8 @@ struct npc_pallid_horror : public ScriptedAI
|
||||
|
||||
void UpdateWeather(bool startEvent)
|
||||
{
|
||||
if (Weather* weather = WeatherMgr::FindWeather(me->GetZoneId()))
|
||||
{
|
||||
if (startEvent)
|
||||
weather->SetWeather(WEATHER_TYPE_STORM, 0.25f);
|
||||
else
|
||||
weather->SetWeather(WEATHER_TYPE_RAIN, 0.0f);
|
||||
}
|
||||
else if (Weather* weather = WeatherMgr::AddWeather(me->GetZoneId()))
|
||||
Weather* weather = me->GetMap()->GetOrGenerateZoneDefaultWeather(me->GetZoneId());
|
||||
if (weather)
|
||||
{
|
||||
if (startEvent)
|
||||
weather->SetWeather(WEATHER_TYPE_STORM, 0.25f);
|
||||
|
||||
Reference in New Issue
Block a user