diff options
author | Aokromes <Aokromes@users.noreply.github.com> | 2016-11-23 02:25:42 +0100 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2018-02-11 12:25:22 +0100 |
commit | 995901b6b80a907fd4e07f57b5b353e3af394583 (patch) | |
tree | bb07e69b6ffc669056ac54b4756a1fbb45b33326 /src | |
parent | 4a97a5b5b2c1b9da3bf505f2f99ffc9a0b7d1737 (diff) |
Merge pull request #17983 from Ghost-R/3.3.5-wgbuff
Core/Battlefield: Wintergrasp 'Tenacity' buff
(cherry picked from commit 24105ec1587be5c3864c912359cb783cd99de26a)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.cpp | 26 | ||||
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.h | 1 |
2 files changed, 13 insertions, 14 deletions
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 35180413d2e..4e7f6a96cc4 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -424,6 +424,7 @@ bool BattlefieldWG::SetupBattlefield() m_StartGroupingTimer = 15 * MINUTE * IN_MILLISECONDS; m_StartGrouping = false; + m_tenacityTeam = TEAM_NEUTRAL; m_tenacityStack = 0; KickPosition.Relocate(5728.117f, 2714.346f, 697.733f, 0); @@ -1089,6 +1090,7 @@ void BattlefieldWG::OnPlayerLeaveWar(Player* player) player->RemoveAurasDueToSpell(SPELL_ALLIANCE_CONTROLS_FACTORY_PHASE_SHIFT); player->RemoveAurasDueToSpell(SPELL_HORDE_CONTROL_PHASE_SHIFT); player->RemoveAurasDueToSpell(SPELL_ALLIANCE_CONTROL_PHASE_SHIFT); + UpdateTenacity(); } void BattlefieldWG::OnPlayerLeaveZone(Player* player) @@ -1289,7 +1291,6 @@ void BattlefieldWG::UpdateVehicleCountWG() void BattlefieldWG::UpdateTenacity() { - TeamId team = TEAM_NEUTRAL; uint32 alliancePlayers = m_PlayersInWar[TEAM_ALLIANCE].size(); uint32 hordePlayers = m_PlayersInWar[TEAM_HORDE].size(); int32 newStack = 0; @@ -1305,21 +1306,16 @@ void BattlefieldWG::UpdateTenacity() if (newStack == int32(m_tenacityStack)) return; - if (m_tenacityStack > 0 && newStack <= 0) // old buff was on alliance - team = TEAM_ALLIANCE; - else if (newStack >= 0) // old buff was on horde - team = TEAM_HORDE; - m_tenacityStack = newStack; // Remove old buff - if (team != TEAM_NEUTRAL) + if (m_tenacityTeam != TEAM_NEUTRAL) { - for (auto itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) + for (auto itr = m_players[m_tenacityTeam].begin(); itr != m_players[m_tenacityTeam].end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(*itr)) if (player->getLevel() >= m_MinLevel) player->RemoveAurasDueToSpell(SPELL_TENACITY); - for (auto itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) + for (auto itr = m_vehicles[m_tenacityTeam].begin(); itr != m_vehicles[m_tenacityTeam].end(); ++itr) if (Creature* creature = GetCreature(*itr)) creature->RemoveAurasDueToSpell(SPELL_TENACITY_VEHICLE); } @@ -1327,7 +1323,7 @@ void BattlefieldWG::UpdateTenacity() // Apply new buff if (newStack) { - team = newStack > 0 ? TEAM_ALLIANCE : TEAM_HORDE; + m_tenacityTeam = newStack > 0 ? TEAM_ALLIANCE : TEAM_HORDE; if (newStack < 0) newStack = -newStack; @@ -1342,25 +1338,27 @@ void BattlefieldWG::UpdateTenacity() if (newStack < 5) buff_honor = 0; - for (auto itr = m_PlayersInWar[team].begin(); itr != m_PlayersInWar[team].end(); ++itr) + for (auto itr = m_PlayersInWar[m_tenacityTeam].begin(); itr != m_PlayersInWar[m_tenacityTeam].end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(*itr)) player->SetAuraStack(SPELL_TENACITY, player, newStack); - for (auto itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) + for (auto itr = m_vehicles[m_tenacityTeam].begin(); itr != m_vehicles[m_tenacityTeam].end(); ++itr) if (Creature* creature = GetCreature(*itr)) creature->SetAuraStack(SPELL_TENACITY_VEHICLE, creature, newStack); if (buff_honor != 0) { - for (auto itr = m_PlayersInWar[team].begin(); itr != m_PlayersInWar[team].end(); ++itr) + for (auto itr = m_PlayersInWar[m_tenacityTeam].begin(); itr != m_PlayersInWar[m_tenacityTeam].end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(*itr)) player->CastSpell(player, buff_honor, true); - for (auto itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) + for (auto itr = m_vehicles[m_tenacityTeam].begin(); itr != m_vehicles[m_tenacityTeam].end(); ++itr) if (Creature* creature = GetCreature(*itr)) creature->CastSpell(creature, buff_honor, true); } } + else + m_tenacityTeam = TEAM_NEUTRAL; } WintergraspCapturePoint::WintergraspCapturePoint(BattlefieldWG* battlefield, TeamId teamInControl) : BfCapturePoint(battlefield) diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 4e0c35d1c63..bb4c518adec 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -393,6 +393,7 @@ class TC_GAME_API BattlefieldWG : public Battlefield GuidUnorderedSet m_vehicles[BG_TEAMS_COUNT]; GuidVector CanonList; + TeamId m_tenacityTeam; uint32 m_tenacityStack; uint32 m_saveTimer; |