diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-04-14 23:31:17 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-04-16 12:15:37 +0200 |
commit | 55587694053583b4cb85be38a47563a9fdf77271 (patch) | |
tree | f1573a869dd4ddb59f55bf8a5779aa7b0b73d49f | |
parent | 798693c0b8c6f4ae43f908c9239e14bcf4c3b76f (diff) |
Core/Battlegrounds: Replaced overriding m_team with more fine grained approach
23 files changed, 170 insertions, 153 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 4a5a604ce14..172f96b48a1 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -374,7 +374,7 @@ bool CriteriaData::Meets(uint32 criteriaId, Player const* source, WorldObject co if (!bg) return false; - uint32 score = bg->GetTeamScore(source->GetTeamId() == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE); + uint32 score = bg->GetTeamScore(bg->GetPlayerTeam(source->GetGUID()) == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE); return score >= BattlegroundScore.Min && score <= BattlegroundScore.Max; } case CRITERIA_DATA_TYPE_INSTANCE_SCRIPT: diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp index 17557902df2..ae555480031 100644 --- a/src/server/game/Battlegrounds/Arena.cpp +++ b/src/server/game/Battlegrounds/Arena.cpp @@ -49,14 +49,14 @@ void Arena::AddPlayer(Player* player) if (player->GetBGTeam() == ALLIANCE) // gold { - if (player->GetTeam() == HORDE) + if (player->GetEffectiveTeam() == HORDE) player->CastSpell(player, SPELL_HORDE_GOLD_FLAG, true); else player->CastSpell(player, SPELL_ALLIANCE_GOLD_FLAG, true); } else // green { - if (player->GetTeam() == HORDE) + if (player->GetEffectiveTeam() == HORDE) player->CastSpell(player, SPELL_HORDE_GREEN_FLAG, true); else player->CastSpell(player, SPELL_ALLIANCE_GREEN_FLAG, true); diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 4ff2d4216ef..2cfed828de7 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -573,7 +573,7 @@ Player* Battleground::_GetPlayerForTeam(uint32 teamId, BattlegroundPlayerMap::co { uint32 team = itr->second.Team; if (!team) - team = player->GetTeam(); + team = player->GetEffectiveTeam(); if (team != teamId) player = nullptr; } @@ -1821,6 +1821,8 @@ void Battleground::HandleKillPlayer(Player* victim, Player* killer) if (killer == victim) return; + uint32 killerTeam = GetPlayerTeam(killer->GetGUID()); + UpdatePlayerScore(killer, SCORE_HONORABLE_KILLS, 1); UpdatePlayerScore(killer, SCORE_KILLING_BLOWS, 1); @@ -1830,7 +1832,7 @@ void Battleground::HandleKillPlayer(Player* victim, Player* killer) if (!creditedPlayer || creditedPlayer == killer) continue; - if (creditedPlayer->GetTeam() == killer->GetTeam() && creditedPlayer->IsAtGroupRewardDistance(victim)) + if (itr->second.Team == killerTeam && creditedPlayer->IsAtGroupRewardDistance(victim)) UpdatePlayerScore(creditedPlayer, SCORE_HONORABLE_KILLS, 1); } } @@ -1928,7 +1930,7 @@ void Battleground::SetBgRaid(uint32 TeamID, Group* bg_raid) WorldSafeLocsEntry const* Battleground::GetClosestGraveyard(Player* player) { - return sObjectMgr->GetClosestGraveyard(*player, player->GetTeam(), player); + return sObjectMgr->GetClosestGraveyard(*player, GetPlayerTeam(player->GetGUID()), player); } void Battleground::StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index 436f91169dc..1340ac1b1fc 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -430,7 +430,7 @@ void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*targ return; } - TeamId teamIndex = GetTeamIndexByTeamId(source->GetTeam()); + TeamId teamIndex = GetTeamIndexByTeamId(GetPlayerTeam(source->GetGUID())); // Check if player really could use this banner, not cheated if (!(m_Nodes[node] == 0 || teamIndex == m_Nodes[node]%2)) @@ -638,7 +638,7 @@ void BattlegroundAB::EndBattleground(uint32 winner) WorldSafeLocsEntry const* BattlegroundAB::GetClosestGraveyard(Player* player) { - TeamId teamIndex = GetTeamIndexByTeamId(player->GetTeam()); + TeamId teamIndex = GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())); // Is there any occupied node for this team? std::vector<uint8> nodes; @@ -715,7 +715,7 @@ bool BattlegroundAB::CheckAchievementCriteriaMeet(uint32 criteriaId, Player cons switch (criteriaId) { case BG_CRITERIA_CHECK_RESILIENT_VICTORY: - return m_TeamScores500Disadvantage[GetTeamIndexByTeamId(player->GetTeam())]; + return m_TeamScores500Disadvantage[GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID()))]; } return Battleground::CheckAchievementCriteriaMeet(criteriaId, player, target, miscvalue); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 1a32b3ed93b..8618aac7099 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -63,7 +63,7 @@ void BattlegroundAV::HandleKillPlayer(Player* player, Player* killer) return; Battleground::HandleKillPlayer(player, killer); - UpdateScore(player->GetTeam(), -1); + UpdateScore(GetPlayerTeam(player->GetGUID()), -1); } void BattlegroundAV::HandleKillUnit(Creature* unit, Player* killer) @@ -138,16 +138,17 @@ void BattlegroundAV::HandleKillUnit(Creature* unit, Player* killer) herold->AI()->Talk(TEXT_FROSTWOLF_GENERAL_DEAD); } else if (entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_N_4] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_A_4] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_H_4]) - ChangeMineOwner(AV_NORTH_MINE, killer->GetTeam()); + ChangeMineOwner(AV_NORTH_MINE, GetPlayerTeam(killer->GetGUID())); else if (entry == BG_AV_CreatureInfo[AV_NPC_S_MINE_N_4] || entry == BG_AV_CreatureInfo[AV_NPC_S_MINE_A_4] || entry == BG_AV_CreatureInfo[AV_NPC_S_MINE_H_4]) - ChangeMineOwner(AV_SOUTH_MINE, killer->GetTeam()); + ChangeMineOwner(AV_SOUTH_MINE, GetPlayerTeam(killer->GetGUID())); } void BattlegroundAV::HandleQuestComplete(uint32 questid, Player* player) { if (GetStatus() != STATUS_IN_PROGRESS) return;//maybe we should log this, cause this must be a cheater or a big bug - uint8 team = GetTeamIndexByTeamId(player->GetTeam()); + uint32 team = GetPlayerTeam(player->GetGUID()); + uint8 teamIndex = GetTeamIndexByTeamId(team); /// @todo add reputation, events (including quest not available anymore, next quest available, go/npc de/spawning)and maybe honor TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed", questid); switch (questid) @@ -156,12 +157,12 @@ void BattlegroundAV::HandleQuestComplete(uint32 questid, Player* player) case AV_QUEST_A_SCRAPS2: case AV_QUEST_H_SCRAPS1: case AV_QUEST_H_SCRAPS2: - m_Team_QuestStatus[team][0]+=20; - if (m_Team_QuestStatus[team][0] == 500 || m_Team_QuestStatus[team][0] == 1000 || m_Team_QuestStatus[team][0] == 1500) //25, 50, 75 turn ins + m_Team_QuestStatus[teamIndex][0]+=20; + if (m_Team_QuestStatus[teamIndex][0] == 500 || m_Team_QuestStatus[teamIndex][0] == 1000 || m_Team_QuestStatus[teamIndex][0] == 1500) //25, 50, 75 turn ins { TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed starting with unit upgrading..", questid); for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) - if (m_Nodes[i].Owner == player->GetTeam() && m_Nodes[i].State == POINT_CONTROLED) + if (m_Nodes[i].Owner == team && m_Nodes[i].State == POINT_CONTROLED) { DePopulateNode(i); PopulateNode(i); @@ -171,72 +172,72 @@ void BattlegroundAV::HandleQuestComplete(uint32 questid, Player* player) break; case AV_QUEST_A_COMMANDER1: case AV_QUEST_H_COMMANDER1: - m_Team_QuestStatus[team][1]++; - RewardReputationToTeam(team, 1, player->GetTeam()); - if (m_Team_QuestStatus[team][1] == 30) + m_Team_QuestStatus[teamIndex][1]++; + RewardReputationToTeam(teamIndex, 1, team); + if (m_Team_QuestStatus[teamIndex][1] == 30) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); break; case AV_QUEST_A_COMMANDER2: case AV_QUEST_H_COMMANDER2: - m_Team_QuestStatus[team][2]++; - RewardReputationToTeam(team, 1, player->GetTeam()); - if (m_Team_QuestStatus[team][2] == 60) + m_Team_QuestStatus[teamIndex][2]++; + RewardReputationToTeam(teamIndex, 1, team); + if (m_Team_QuestStatus[teamIndex][2] == 60) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); break; case AV_QUEST_A_COMMANDER3: case AV_QUEST_H_COMMANDER3: - m_Team_QuestStatus[team][3]++; - RewardReputationToTeam(team, 1, player->GetTeam()); - if (m_Team_QuestStatus[team][3] == 120) + m_Team_QuestStatus[teamIndex][3]++; + RewardReputationToTeam(teamIndex, 1, team); + if (m_Team_QuestStatus[teamIndex][3] == 120) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); break; case AV_QUEST_A_BOSS1: case AV_QUEST_H_BOSS1: - m_Team_QuestStatus[team][4] += 9; //you can turn in 10 or 1 item.. + m_Team_QuestStatus[teamIndex][4] += 9; //you can turn in 10 or 1 item.. [[fallthrough]]; case AV_QUEST_A_BOSS2: case AV_QUEST_H_BOSS2: - m_Team_QuestStatus[team][4]++; - if (m_Team_QuestStatus[team][4] >= 200) + m_Team_QuestStatus[teamIndex][4]++; + if (m_Team_QuestStatus[teamIndex][4] >= 200) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); break; case AV_QUEST_A_NEAR_MINE: case AV_QUEST_H_NEAR_MINE: - m_Team_QuestStatus[team][5]++; - if (m_Team_QuestStatus[team][5] == 28) + m_Team_QuestStatus[teamIndex][5]++; + if (m_Team_QuestStatus[teamIndex][5] == 28) { TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); - if (m_Team_QuestStatus[team][6] == 7) + if (m_Team_QuestStatus[teamIndex][6] == 7) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here - ground assault ready", questid); } break; case AV_QUEST_A_OTHER_MINE: case AV_QUEST_H_OTHER_MINE: - m_Team_QuestStatus[team][6]++; - if (m_Team_QuestStatus[team][6] == 7) + m_Team_QuestStatus[teamIndex][6]++; + if (m_Team_QuestStatus[teamIndex][6] == 7) { TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); - if (m_Team_QuestStatus[team][5] == 20) + if (m_Team_QuestStatus[teamIndex][5] == 20) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here - ground assault ready", questid); } break; case AV_QUEST_A_RIDER_HIDE: case AV_QUEST_H_RIDER_HIDE: - m_Team_QuestStatus[team][7]++; - if (m_Team_QuestStatus[team][7] == 25) + m_Team_QuestStatus[teamIndex][7]++; + if (m_Team_QuestStatus[teamIndex][7] == 25) { TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); - if (m_Team_QuestStatus[team][8] == 25) + if (m_Team_QuestStatus[teamIndex][8] == 25) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here - rider assault ready", questid); } break; case AV_QUEST_A_RIDER_TAME: case AV_QUEST_H_RIDER_TAME: - m_Team_QuestStatus[team][8]++; - if (m_Team_QuestStatus[team][8] == 25) + m_Team_QuestStatus[teamIndex][8]++; + if (m_Team_QuestStatus[teamIndex][8] == 25) { TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here", questid); - if (m_Team_QuestStatus[team][7] == 25) + if (m_Team_QuestStatus[teamIndex][7] == 25) TC_LOG_DEBUG("bg.battleground", "BG_AV Quest %i completed (need to implement some events here - rider assault ready", questid); } break; @@ -873,9 +874,9 @@ void BattlegroundAV::EventPlayerDefendsPoint(Player* player, uint32 object) BG_AV_Nodes node = GetNodeThroughObject(object); uint32 owner = m_Nodes[node].Owner; //maybe should name it prevowner - uint32 team = player->GetTeam(); + uint32 team = GetPlayerTeam(player->GetGUID()); - if (owner == player->GetTeam() || m_Nodes[node].State != POINT_ASSAULTED) + if (owner == team || m_Nodes[node].State != POINT_ASSAULTED) return; if (m_Nodes[node].TotalOwner == AV_NEUTRAL_TEAM) { //until snowfall doesn't belong to anyone it is better handled in assault-code @@ -939,7 +940,7 @@ void BattlegroundAV::EventPlayerAssaultsPoint(Player* player, uint32 object) BG_AV_Nodes node = GetNodeThroughObject(object); uint32 owner = m_Nodes[node].Owner; //maybe name it prevowner - uint32 team = player->GetTeam(); + uint32 team = GetPlayerTeam(player->GetGUID()); TC_LOG_DEBUG("bg.battleground", "bg_av: player assaults point object %i node %i", object, node); if (owner == team || team == m_Nodes[node].TotalOwner) return; //surely a gm used this object @@ -1102,24 +1103,19 @@ void BattlegroundAV::SendMineWorldStates(uint32 mine) WorldSafeLocsEntry const* BattlegroundAV::GetClosestGraveyard(Player* player) { - WorldSafeLocsEntry const* pGraveyard = nullptr; - WorldSafeLocsEntry const* entry = nullptr; - float dist = 0; - float minDist = 0; float x, y; - player->GetPosition(x, y); - pGraveyard = sObjectMgr->GetWorldSafeLoc(BG_AV_GraveyardIds[GetTeamIndexByTeamId(player->GetTeam()) + 7]); - minDist = (pGraveyard->Loc.GetPositionX() - x) * (pGraveyard->Loc.GetPositionX() - x) + (pGraveyard->Loc.GetPositionY() - y) * (pGraveyard->Loc.GetPositionY() - y); + uint32 team = GetPlayerTeam(player->GetGUID()); + WorldSafeLocsEntry const* pGraveyard = sObjectMgr->GetWorldSafeLoc(BG_AV_GraveyardIds[GetTeamIndexByTeamId(team) + 7]); + float minDist = (pGraveyard->Loc.GetPositionX() - x) * (pGraveyard->Loc.GetPositionX() - x) + (pGraveyard->Loc.GetPositionY() - y) * (pGraveyard->Loc.GetPositionY() - y); for (uint8 i = BG_AV_NODES_FIRSTAID_STATION; i <= BG_AV_NODES_FROSTWOLF_HUT; ++i) - if (m_Nodes[i].Owner == player->GetTeam() && m_Nodes[i].State == POINT_CONTROLED) + if (m_Nodes[i].Owner == team && m_Nodes[i].State == POINT_CONTROLED) { - entry = sObjectMgr->GetWorldSafeLoc(BG_AV_GraveyardIds[i]); - if (entry) + if (WorldSafeLocsEntry const* entry = sObjectMgr->GetWorldSafeLoc(BG_AV_GraveyardIds[i])) { - dist = (entry->Loc.GetPositionX() - x) * (entry->Loc.GetPositionX() - x) + (entry->Loc.GetPositionY() - y) * (entry->Loc.GetPositionY() - y); + float dist = (entry->Loc.GetPositionX() - x) * (entry->Loc.GetPositionX() - x) + (entry->Loc.GetPositionY() - y) * (entry->Loc.GetPositionY() - y); if (dist < minDist) { minDist = dist; @@ -1507,7 +1503,7 @@ void BattlegroundAV::ResetBGSubclass() bool BattlegroundAV::CheckAchievementCriteriaMeet(uint32 criteriaId, Player const* source, Unit const* target, uint32 miscValue) { - uint32 team = source->GetTeam(); + uint32 team = GetPlayerTeam(source->GetGUID()); switch (criteriaId) { case BG_CRITERIA_CHECK_EVERYTHING_COUNTS: diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index f411457d6f4..b02bbddc158 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -244,7 +244,7 @@ void BattlegroundEY::CheckSomeoneLeftPoint() else { //player is neat flag, so update count: - m_CurrentPointPlayersCount[2 * i + GetTeamIndexByTeamId(player->GetTeam())]++; + m_CurrentPointPlayersCount[2 * i + GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID()))]++; ++j; } } @@ -285,20 +285,21 @@ void BattlegroundEY::UpdatePointStatuses() if (player) { player->SendUpdateWorldState(PROGRESS_BAR_STATUS, m_PointBarStatus[point]); + uint32 team = GetPlayerTeam(player->GetGUID()); //if point owner changed we must evoke event! if (pointOwnerTeamId != m_PointOwnedByTeam[point]) { //point was uncontrolled and player is from team which captured point - if (m_PointState[point] == EY_POINT_STATE_UNCONTROLLED && player->GetTeam() == pointOwnerTeamId) + if (m_PointState[point] == EY_POINT_STATE_UNCONTROLLED && team == pointOwnerTeamId) this->EventTeamCapturedPoint(player, point); //point was under control and player isn't from team which controlled it - if (m_PointState[point] == EY_POINT_UNDER_CONTROL && player->GetTeam() != m_PointOwnedByTeam[point]) + if (m_PointState[point] == EY_POINT_UNDER_CONTROL && team != m_PointOwnedByTeam[point]) this->EventTeamLostPoint(player, point); } /// @workaround The original AreaTrigger is covered by a bigger one and not triggered on client side. - if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetTeam()) + if (point == FEL_REAVER && m_PointOwnedByTeam[point] == team) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) if (player->GetDistance(2044.0f, 1729.729f, 1190.03f) < 3.0f) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); @@ -425,22 +426,22 @@ void BattlegroundEY::HandleAreaTrigger(Player* player, uint32 trigger, bool ente TeleportPlayerToExploitLocation(player); break; case TR_BLOOD_ELF_POINT: - if (m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[BLOOD_ELF] == player->GetTeam()) + if (m_PointState[BLOOD_ELF] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[BLOOD_ELF] == GetPlayerTeam(player->GetGUID())) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_BLOOD_ELF); break; case TR_FEL_REAVER_POINT: - if (m_PointState[FEL_REAVER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[FEL_REAVER] == player->GetTeam()) + if (m_PointState[FEL_REAVER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[FEL_REAVER] == GetPlayerTeam(player->GetGUID())) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); break; case TR_MAGE_TOWER_POINT: - if (m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[MAGE_TOWER] == player->GetTeam()) + if (m_PointState[MAGE_TOWER] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[MAGE_TOWER] == GetPlayerTeam(player->GetGUID())) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_MAGE_TOWER); break; case TR_DRAENEI_RUINS_POINT: - if (m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[DRAENEI_RUINS] == player->GetTeam()) + if (m_PointState[DRAENEI_RUINS] == EY_POINT_UNDER_CONTROL && m_PointOwnedByTeam[DRAENEI_RUINS] == GetPlayerTeam(player->GetGUID())) if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_DRAENEI_RUINS); break; @@ -656,7 +657,7 @@ void BattlegroundEY::EventPlayerDroppedFlag(Player* player) UpdateWorldState(NETHERSTORM_FLAG_STATE_HORDE, BG_EY_FLAG_STATE_WAIT_RESPAWN); UpdateWorldState(NETHERSTORM_FLAG_STATE_ALLIANCE, BG_EY_FLAG_STATE_WAIT_RESPAWN); - if (player->GetTeam() == ALLIANCE) + if (GetPlayerTeam(player->GetGUID()) == ALLIANCE) SendBroadcastText(BG_EY_TEXT_FLAG_DROPPED, CHAT_MSG_BG_SYSTEM_ALLIANCE); else SendBroadcastText(BG_EY_TEXT_FLAG_DROPPED, CHAT_MSG_BG_SYSTEM_HORDE); @@ -667,7 +668,7 @@ void BattlegroundEY::EventPlayerClickedOnFlag(Player* player, GameObject* target if (GetStatus() != STATUS_IN_PROGRESS || IsFlagPickedup() || !player->IsWithinDistInMap(target_obj, 10)) return; - if (player->GetTeam() == ALLIANCE) + if (GetPlayerTeam(player->GetGUID()) == ALLIANCE) { UpdateWorldState(NETHERSTORM_FLAG_STATE_ALLIANCE, BG_EY_FLAG_STATE_ON_PLAYER); PlaySoundToAll(BG_EY_SOUND_FLAG_PICKED_UP_ALLIANCE); @@ -688,7 +689,7 @@ void BattlegroundEY::EventPlayerClickedOnFlag(Player* player, GameObject* target player->CastSpell(player, BG_EY_NETHERSTORM_FLAG_SPELL, true); player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::PvPActive); - if (player->GetTeam() == ALLIANCE) + if (GetPlayerTeam(player->GetGUID()) == ALLIANCE) SendBroadcastText(BG_EY_TEXT_TAKEN_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); else SendBroadcastText(BG_EY_TEXT_TAKEN_FLAG, CHAT_MSG_BG_SYSTEM_HORDE, player); @@ -746,7 +747,7 @@ void BattlegroundEY::EventTeamCapturedPoint(Player* player, uint32 Point) if (GetStatus() != STATUS_IN_PROGRESS) return; - uint32 Team = player->GetTeam(); + uint32 Team = GetPlayerTeam(player->GetGUID()); SpawnBGObject(m_CapturingPointTypes[Point].DespawnNeutralObjectType, RESPAWN_ONE_DAY); SpawnBGObject(m_CapturingPointTypes[Point].DespawnNeutralObjectType + 1, RESPAWN_ONE_DAY); @@ -815,7 +816,8 @@ void BattlegroundEY::EventPlayerCapturedFlag(Player* player, uint32 BgObjectType player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::PvPActive); - if (player->GetTeam() == ALLIANCE) + uint32 team = GetPlayerTeam(player->GetGUID()); + if (team == ALLIANCE) { SendBroadcastText(BG_EY_TEXT_ALLIANCE_CAPTURED_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); PlaySoundToAll(BG_EY_SOUND_FLAG_CAPTURED_ALLIANCE); @@ -831,9 +833,9 @@ void BattlegroundEY::EventPlayerCapturedFlag(Player* player, uint32 BgObjectType m_FlagsTimer = BG_EY_FLAG_RESPAWN_TIME; m_FlagCapturedBgObjectType = BgObjectType; - uint8 team_id = player->GetTeam() == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE; + uint8 team_id = GetTeamIndexByTeamId(team); if (m_TeamPointsCount[team_id] > 0) - AddPoints(player->GetTeam(), BG_EY_FlagPoints[m_TeamPointsCount[team_id] - 1]); + AddPoints(team, BG_EY_FlagPoints[m_TeamPointsCount[team_id] - 1]); UpdateWorldState(NETHERSTORM_FLAG_STATE_HORDE, BG_EY_FLAG_STATE_ON_BASE); UpdateWorldState(NETHERSTORM_FLAG_STATE_ALLIANCE, BG_EY_FLAG_STATE_ON_BASE); @@ -907,7 +909,8 @@ WorldSafeLocsEntry const* BattlegroundEY::GetClosestGraveyard(Player* player) { uint32 g_id = 0; - switch (player->GetTeam()) + uint32 team = GetPlayerTeam(player->GetGUID()); + switch (team) { case ALLIANCE: g_id = EY_GRAVEYARD_MAIN_ALLIANCE; break; case HORDE: g_id = EY_GRAVEYARD_MAIN_HORDE; break; @@ -938,7 +941,7 @@ WorldSafeLocsEntry const* BattlegroundEY::GetClosestGraveyard(Player* player) for (uint8 i = 0; i < EY_POINTS_MAX; ++i) { - if (m_PointOwnedByTeam[i] == player->GetTeam() && m_PointState[i] == EY_POINT_UNDER_CONTROL) + if (m_PointOwnedByTeam[i] == team && m_PointState[i] == EY_POINT_UNDER_CONTROL) { entry = sObjectMgr->GetWorldSafeLoc(m_CapturingPointTypes[i].GraveyardId); if (!entry) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index d0518e566e0..4af2912c388 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -56,10 +56,10 @@ BattlegroundIC::~BattlegroundIC() { } void BattlegroundIC::HandlePlayerResurrect(Player* player) { - if (nodePoint[NODE_TYPE_QUARRY].nodeState == (player->GetTeamId() == TEAM_ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) + if (nodePoint[NODE_TYPE_QUARRY].nodeState == (GetPlayerTeam(player->GetGUID()) == ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) player->CastSpell(player, SPELL_QUARRY, true); - if (nodePoint[NODE_TYPE_REFINERY].nodeState == (player->GetTeamId() == TEAM_ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) + if (nodePoint[NODE_TYPE_REFINERY].nodeState == (GetPlayerTeam(player->GetGUID()) == ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) player->CastSpell(player, SPELL_OIL_REFINERY, true); } @@ -247,10 +247,10 @@ void BattlegroundIC::AddPlayer(Player* player) if (!isInBattleground) PlayerScores[player->GetGUID()] = new BattlegroundICScore(player->GetGUID(), player->GetBGTeam()); - if (nodePoint[NODE_TYPE_QUARRY].nodeState == (player->GetTeamId() == TEAM_ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) + if (nodePoint[NODE_TYPE_QUARRY].nodeState == (GetPlayerTeam(player->GetGUID()) == ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) player->CastSpell(player, SPELL_QUARRY, true); - if (nodePoint[NODE_TYPE_REFINERY].nodeState == (player->GetTeamId() == TEAM_ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) + if (nodePoint[NODE_TYPE_REFINERY].nodeState == (GetPlayerTeam(player->GetGUID()) == ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H)) player->CastSpell(player, SPELL_OIL_REFINERY, true); } @@ -271,14 +271,14 @@ void BattlegroundIC::HandleAreaTrigger(Player* player, uint32 trigger, bool ente TeleportPlayerToExploitLocation(player); /// @hack: this spell should be cast by npc 22515 (World Trigger) and not by the player - if (trigger == 5555 && player->GetTeamId() == TEAM_HORDE) + if (trigger == 5555 && GetPlayerTeam(player->GetGUID()) == HORDE) { if (GateStatus[BG_IC_A_FRONT] != BG_IC_GATE_DESTROYED && GateStatus[BG_IC_A_WEST] != BG_IC_GATE_DESTROYED && GateStatus[BG_IC_A_EAST] != BG_IC_GATE_DESTROYED) player->CastSpell(player, SPELL_BACK_DOOR_JOB_ACHIEVEMENT, true); } - else if (trigger == 5535 && player->GetTeamId() == TEAM_ALLIANCE) + else if (trigger == 5535 && GetPlayerTeam(player->GetGUID()) == ALLIANCE) { if (GateStatus[BG_IC_H_FRONT] != BG_IC_GATE_DESTROYED && GateStatus[BG_IC_H_WEST] != BG_IC_GATE_DESTROYED @@ -406,13 +406,14 @@ void BattlegroundIC::HandleKillPlayer(Player* player, Player* killer) Battleground::HandleKillPlayer(player, killer); - factionReinforcements[player->GetTeamId()] -= 1; + TeamId victimTeamId = GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())); + factionReinforcements[victimTeamId] -= 1; - UpdateWorldState((player->GetTeamId() == TEAM_ALLIANCE ? BG_IC_ALLIANCE_RENFORT : BG_IC_HORDE_RENFORT), factionReinforcements[player->GetTeamId()]); + UpdateWorldState((GetPlayerTeam(player->GetGUID()) == ALLIANCE ? BG_IC_ALLIANCE_RENFORT : BG_IC_HORDE_RENFORT), factionReinforcements[victimTeamId]); // we must end the battleground - if (factionReinforcements[player->GetTeamId()] < 1) - EndBattleground(killer->GetTeam()); + if (factionReinforcements[victimTeamId] < 1) + EndBattleground(GetPlayerTeam(killer->GetGUID())); } void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target_obj) @@ -425,14 +426,16 @@ void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target { if (nodePoint[i].gameobject_entry == target_obj->GetEntry()) { + TeamId teamId = GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())); + // THIS SHOULD NEEVEER HAPPEN - if (nodePoint[i].faction == player->GetTeamId()) + if (nodePoint[i].faction == teamId) return; - uint32 nextBanner = GetNextBanner(&nodePoint[i], player->GetTeamId(), false); + uint32 nextBanner = GetNextBanner(&nodePoint[i], teamId, false); // we set the new settings of the nodePoint - nodePoint[i].faction = player->GetTeamId(); + nodePoint[i].faction = teamId; nodePoint[i].last_entry = nodePoint[i].gameobject_entry; nodePoint[i].gameobject_entry = nextBanner; @@ -801,7 +804,7 @@ void BattlegroundIC::DestroyGate(Player* player, GameObject* go) UpdateWorldState(uws_close, 0); UpdateWorldState(uws_open, 1); } - if (player->GetTeamId() == TEAM_ALLIANCE) + if (GetPlayerTeam(player->GetGUID()) == ALLIANCE) { DoorOpen(BG_IC_GO_HORDE_KEEP_PORTCULLIS); GetBGObject(BG_IC_GO_HORDE_BANNER)->RemoveFlag(GO_FLAG_NOT_SELECTABLE); @@ -860,12 +863,12 @@ void BattlegroundIC::DestroyGate(Player* player, GameObject* go) WorldSafeLocsEntry const* BattlegroundIC::GetClosestGraveyard(Player* player) { - TeamId teamIndex = GetTeamIndexByTeamId(player->GetTeam()); + TeamId teamIndex = GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())); // Is there any occupied node for this team? std::vector<uint8> nodes; for (uint8 i = 0; i < MAX_NODE_TYPES; ++i) - if (nodePoint[i].faction == player->GetTeamId()) + if (nodePoint[i].faction == GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID()))) nodes.push_back(i); WorldSafeLocsEntry const* good_entry = nullptr; @@ -922,9 +925,9 @@ bool BattlegroundIC::IsSpellAllowed(uint32 spellId, Player const* player) const case SPELL_OIL_REFINERY: case SPELL_QUARRY: { - uint32 team = player->GetTeamId(); + uint32 team = GetPlayerTeam(player->GetGUID()); uint8 nodeType = spellId == SPELL_OIL_REFINERY ? NODE_TYPE_REFINERY : NODE_TYPE_QUARRY; - uint8 nodeState = team == TEAM_ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H; + uint8 nodeState = team == ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H; return GetNodeState(nodeType) == nodeState; } default: diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index e112eff40ce..544ab43174c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -524,7 +524,7 @@ void BattlegroundSA::TeleportPlayers() void BattlegroundSA::TeleportToEntrancePosition(Player* player) { - if (player->GetTeamId() == Attackers) + if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers) { if (!ShipsStarted) { @@ -697,7 +697,8 @@ WorldSafeLocsEntry const* BattlegroundSA::GetClosestGraveyard(Player* player) player->GetPosition(x, y, z); - if (player->GetTeamId() == Attackers) + TeamId teamId = GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())); + if (teamId == Attackers) safeloc = BG_SA_GYEntries[BG_SA_BEACH_GY]; else safeloc = BG_SA_GYEntries[BG_SA_DEFENDER_LAST_GY]; @@ -707,7 +708,7 @@ WorldSafeLocsEntry const* BattlegroundSA::GetClosestGraveyard(Player* player) for (uint8 i = BG_SA_RIGHT_CAPTURABLE_GY; i < BG_SA_MAX_GY; i++) { - if (GraveyardStatus[i] != player->GetTeamId()) + if (GraveyardStatus[i] != teamId) continue; ret = sObjectMgr->GetWorldSafeLoc(BG_SA_GYEntries[i]); @@ -803,7 +804,8 @@ void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source) return; DelCreature(BG_SA_MAXNPC + i); - GraveyardStatus[i] = Source->GetTeamId(); + TeamId teamId = GetTeamIndexByTeamId(GetPlayerTeam(Source->GetGUID())); + GraveyardStatus[i] = teamId; WorldSafeLocsEntry const* sg = sObjectMgr->GetWorldSafeLoc(BG_SA_GYEntries[i]); if (!sg) { @@ -820,7 +822,7 @@ void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source) case BG_SA_LEFT_CAPTURABLE_GY: flag = BG_SA_LEFT_FLAG; DelObject(flag); - AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0 : 1)), + AddObject(flag, (BG_SA_ObjEntries[flag] - (teamId == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); npc = BG_SA_NPC_RIGSPARK; @@ -839,13 +841,13 @@ void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source) UpdateWorldState(BG_SA_LEFT_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) - SendChatMessage(c, Source->GetTeamId() == TEAM_ALLIANCE ? TEXT_WEST_GRAVEYARD_CAPTURED_A : TEXT_WEST_GRAVEYARD_CAPTURED_H, Source); + SendChatMessage(c, teamId == TEAM_ALLIANCE ? TEXT_WEST_GRAVEYARD_CAPTURED_A : TEXT_WEST_GRAVEYARD_CAPTURED_H, Source); break; case BG_SA_RIGHT_CAPTURABLE_GY: flag = BG_SA_RIGHT_FLAG; DelObject(flag); - AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0 : 1)), + AddObject(flag, (BG_SA_ObjEntries[flag] - (teamId == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); npc = BG_SA_NPC_SPARKLIGHT; @@ -864,20 +866,20 @@ void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source) UpdateWorldState(BG_SA_RIGHT_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) - SendChatMessage(c, Source->GetTeamId() == TEAM_ALLIANCE ? TEXT_EAST_GRAVEYARD_CAPTURED_A : TEXT_EAST_GRAVEYARD_CAPTURED_H, Source); + SendChatMessage(c, teamId == TEAM_ALLIANCE ? TEXT_EAST_GRAVEYARD_CAPTURED_A : TEXT_EAST_GRAVEYARD_CAPTURED_H, Source); break; case BG_SA_CENTRAL_CAPTURABLE_GY: flag = BG_SA_CENTRAL_FLAG; DelObject(flag); - AddObject(flag, (BG_SA_ObjEntries[flag] - (Source->GetTeamId() == TEAM_ALLIANCE ? 0 : 1)), + AddObject(flag, (BG_SA_ObjEntries[flag] - (teamId == TEAM_ALLIANCE ? 0 : 1)), BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); UpdateWorldState(BG_SA_CENTER_GY_ALLIANCE, GraveyardStatus[i] == TEAM_ALLIANCE); UpdateWorldState(BG_SA_CENTER_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) - SendChatMessage(c, Source->GetTeamId() == TEAM_ALLIANCE ? TEXT_SOUTH_GRAVEYARD_CAPTURED_A : TEXT_SOUTH_GRAVEYARD_CAPTURED_H, Source); + SendChatMessage(c, teamId == TEAM_ALLIANCE ? TEXT_SOUTH_GRAVEYARD_CAPTURED_A : TEXT_SOUTH_GRAVEYARD_CAPTURED_H, Source); break; default: @@ -893,9 +895,10 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker) if (CanInteractWithObject(BG_SA_TITAN_RELIC)) { - if (clicker->GetTeamId() == Attackers) + TeamId clickerTeamId = GetTeamIndexByTeamId(GetPlayerTeam(clicker->GetGUID())); + if (clickerTeamId == Attackers) { - if (clicker->GetTeamId() == TEAM_ALLIANCE) + if (clickerTeamId == TEAM_ALLIANCE) SendBroadcastText(BG_SA_TEXT_ALLIANCE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_ALLIANCE); else SendBroadcastText(BG_SA_TEXT_HORDE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_HORDE); @@ -908,7 +911,7 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker) for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) { if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - if (player->GetTeamId() == Attackers) + if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers) player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); } @@ -938,7 +941,7 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker) for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) { if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - if (player->GetTeamId() == Attackers && RoundScores[1].winner == Attackers) + if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers && RoundScores[1].winner == Attackers) player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); } @@ -1041,9 +1044,9 @@ bool BattlegroundSA::CheckAchievementCriteriaMeet(uint32 criteriaId, Player cons switch (criteriaId) { case BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH: - return _allVehiclesAlive[GetTeamIndexByTeamId(source->GetTeam())]; + return _allVehiclesAlive[GetTeamIndexByTeamId(GetPlayerTeam(source->GetGUID()))]; case BG_CRITERIA_CHECK_DEFENSE_OF_THE_ANCIENTS: - return source->GetTeamId() != Attackers && !_gateDestroyed; + return GetTeamIndexByTeamId(GetPlayerTeam(source->GetGUID())) != Attackers && !_gateDestroyed; } return Battleground::CheckAchievementCriteriaMeet(criteriaId, source, target, miscValue); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index eaa8d4f3898..1a1ae1d8c65 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -289,7 +289,8 @@ void BattlegroundWS::EventPlayerCapturedFlag(Player* player) uint32 winner = 0; player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::PvPActive); - if (player->GetTeam() == ALLIANCE) + uint32 team = GetPlayerTeam(player->GetGUID()); + if (team == ALLIANCE) { if (!IsHordeFlagPickedup()) return; @@ -328,23 +329,23 @@ void BattlegroundWS::EventPlayerCapturedFlag(Player* player) RewardReputationToTeam(889, m_ReputationCapture, HORDE); } //for flag capture is reward 2 honorable kills - RewardHonorToTeam(GetBonusHonorFromKill(2), player->GetTeam()); + RewardHonorToTeam(GetBonusHonorFromKill(2), team); SpawnBGObject(BG_WS_OBJECT_H_FLAG, BG_WS_FLAG_RESPAWN_TIME); SpawnBGObject(BG_WS_OBJECT_A_FLAG, BG_WS_FLAG_RESPAWN_TIME); - if (player->GetTeam() == ALLIANCE) + if (team == ALLIANCE) SendBroadcastText(BG_WS_TEXT_CAPTURED_HORDE_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); else SendBroadcastText(BG_WS_TEXT_CAPTURED_ALLIANCE_FLAG, CHAT_MSG_BG_SYSTEM_HORDE, player); - UpdateFlagState(player->GetTeam(), 1); // flag state none - UpdateTeamScore(player->GetTeamId()); + UpdateFlagState(team, 1); // flag state none + UpdateTeamScore(GetTeamIndexByTeamId(team)); // only flag capture should be updated UpdatePlayerScore(player, SCORE_FLAG_CAPTURES, 1); // +1 flag captures // update last flag capture to be used if teamscore is equal - SetLastFlagCapture(player->GetTeam()); + SetLastFlagCapture(team); if (GetTeamScore(TEAM_ALLIANCE) == BG_WS_MAX_TEAM_SCORE) winner = ALLIANCE; @@ -365,17 +366,18 @@ void BattlegroundWS::EventPlayerCapturedFlag(Player* player) } else { - _flagsTimer[GetTeamIndexByTeamId(player->GetTeam()) ? 0 : 1] = BG_WS_FLAG_RESPAWN_TIME; + _flagsTimer[GetTeamIndexByTeamId(team) ? 0 : 1] = BG_WS_FLAG_RESPAWN_TIME; } } void BattlegroundWS::EventPlayerDroppedFlag(Player* player) { + uint32 team = GetPlayerTeam(player->GetGUID()); if (GetStatus() != STATUS_IN_PROGRESS) { // if not running, do not cast things at the dropper player (prevent spawning the "dropped" flag), neither send unnecessary messages // just take off the aura - if (player->GetTeam() == ALLIANCE) + if (team == ALLIANCE) { if (!IsHordeFlagPickedup()) return; @@ -402,7 +404,7 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* player) bool set = false; - if (player->GetTeam() == ALLIANCE) + if (team == ALLIANCE) { if (!IsHordeFlagPickedup()) return; @@ -440,9 +442,9 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* player) if (set) { player->CastSpell(player, SPELL_RECENTLY_DROPPED_FLAG, true); - UpdateFlagState(player->GetTeam(), 1); + UpdateFlagState(team, 1); - if (player->GetTeam() == ALLIANCE) + if (team == ALLIANCE) { SendBroadcastText(BG_WS_TEXT_HORDE_FLAG_DROPPED, CHAT_MSG_BG_SYSTEM_HORDE, player); UpdateWorldState(BG_WS_FLAG_UNK_HORDE, uint32(-1)); @@ -453,7 +455,7 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* player) UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, uint32(-1)); } - _flagsDropTimer[GetTeamIndexByTeamId(player->GetTeam()) ? 0 : 1] = BG_WS_FLAG_DROP_TIME; + _flagsDropTimer[GetTeamIndexByTeamId(team) ? 0 : 1] = BG_WS_FLAG_DROP_TIME; } } @@ -462,8 +464,10 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target if (GetStatus() != STATUS_IN_PROGRESS) return; + uint32 team = GetPlayerTeam(player->GetGUID()); + //alliance flag picked up from base - if (player->GetTeam() == HORDE && GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_BASE + if (team == HORDE && GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_BASE && BgObjects[BG_WS_OBJECT_A_FLAG] == target_obj->GetGUID()) { SendBroadcastText(BG_WS_TEXT_ALLIANCE_FLAG_PICKED_UP, CHAT_MSG_BG_SYSTEM_HORDE, player); @@ -481,7 +485,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target } //horde flag picked up from base - if (player->GetTeam() == ALLIANCE && GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_BASE + if (team == ALLIANCE && GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_BASE && BgObjects[BG_WS_OBJECT_H_FLAG] == target_obj->GetGUID()) { SendBroadcastText(BG_WS_TEXT_HORDE_FLAG_PICKED_UP, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); @@ -502,7 +506,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target if (GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_GROUND && player->IsWithinDistInMap(target_obj, 10) && target_obj->GetGOInfo()->entry == BG_OBJECT_A_FLAG_GROUND_WS_ENTRY) { - if (player->GetTeam() == ALLIANCE) + if (team == ALLIANCE) { SendBroadcastText(BG_WS_TEXT_ALLIANCE_FLAG_RETURNED, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); UpdateFlagState(HORDE, BG_WS_FLAG_STATE_WAIT_RESPAWN); @@ -535,7 +539,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target if (GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_GROUND && player->IsWithinDistInMap(target_obj, 10) && target_obj->GetGOInfo()->entry == BG_OBJECT_H_FLAG_GROUND_WS_ENTRY) { - if (player->GetTeam() == HORDE) + if (team == HORDE) { SendBroadcastText(BG_WS_TEXT_HORDE_FLAG_RETURNED, CHAT_MSG_BG_SYSTEM_HORDE, player); UpdateFlagState(ALLIANCE, BG_WS_FLAG_STATE_WAIT_RESPAWN); @@ -799,7 +803,7 @@ WorldSafeLocsEntry const* BattlegroundWS::GetClosestGraveyard(Player* player) //if a player dies in preparation phase - then the player can't cheat //and teleport to the graveyard outside the flagroom //and start running around, while the doors are still closed - if (player->GetTeam() == ALLIANCE) + if (GetPlayerTeam(player->GetGUID()) == ALLIANCE) { if (GetStatus() == STATUS_IN_PROGRESS) return sObjectMgr->GetWorldSafeLoc(WS_GRAVEYARD_MAIN_ALLIANCE); @@ -877,7 +881,7 @@ bool BattlegroundWS::CheckAchievementCriteriaMeet(uint32 criteriaId, Player cons case BG_CRITERIA_CHECK_SAVE_THE_DAY: if (target) if (Player const* playerTarget = target->ToPlayer()) - return GetFlagState(playerTarget->GetTeam()) == BG_WS_FLAG_STATE_ON_BASE; + return GetFlagState(GetPlayerTeam(playerTarget->GetGUID())) == BG_WS_FLAG_STATE_ON_BASE; return false; } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index bdd4b55c2eb..3996591d41d 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1564,7 +1564,7 @@ bool GameObject::ActivateToQuest(Player const* target) const if (target->GetQuestStatus(GetGOInfo()->chest.questID) == QUEST_STATUS_INCOMPLETE || LootTemplates_Gameobject.HaveQuestLootForPlayer(GetGOInfo()->GetLootId(), target)) { if (Battleground const* bg = target->GetBattleground()) - return bg->CanActivateGO(GetEntry(), target->GetTeam()); + return bg->CanActivateGO(GetEntry(), bg->GetPlayerTeam(target->GetGUID())); return true; } break; diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 9350f7073e6..aede0b4276f 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1520,7 +1520,7 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo { if (Player const* objPlayer = obj->ToPlayer()) { - if (thisPlayer->GetTeam() != objPlayer->GetTeam() || !thisPlayer->IsGroupVisibleFor(objPlayer)) + if (!thisPlayer->IsGroupVisibleFor(objPlayer)) return false; } else diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 175b8cea529..c860dedbd28 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6285,12 +6285,13 @@ TeamId Player::TeamIdForRace(uint8 race) return TEAM_NEUTRAL; } -void Player::SwitchToOppositeTeam(bool apply) +void Player::SwitchToOppositeTeam(bool /*apply*/) { - m_team = TeamForRace(GetRace()); + // TODO: remove + //m_team = TeamForRace(GetRace()); - if (apply) - m_team = (m_team == ALLIANCE) ? HORDE : ALLIANCE; + //if (apply) + // m_team = (m_team == ALLIANCE) ? HORDE : ALLIANCE; } void Player::SetFactionForRace(uint8 race) @@ -6570,7 +6571,7 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto if (Player* plrVictim = victim->ToPlayer()) { - if (GetTeam() == plrVictim->GetTeam() && !sWorld->IsFFAPvPRealm()) + if (GetEffectiveTeam() == plrVictim->GetEffectiveTeam() && !sWorld->IsFFAPvPRealm()) return false; uint8 k_level = GetLevel(); @@ -8793,7 +8794,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type, bool aeLooting/* = fa { uint32 lootid = go->GetGOInfo()->GetLootId(); if (Battleground* bg = GetBattleground()) - if (!bg->CanActivateGO(go->GetEntry(), GetTeam())) + if (!bg->CanActivateGO(go->GetEntry(), bg->GetPlayerTeam(GetGUID()))) { SendLootRelease(guid); return; @@ -17061,7 +17062,7 @@ void Player::UpdateQuestObjectiveProgress(QuestObjectiveType objectiveType, int3 { if (objectiveType == QUEST_OBJECTIVE_PLAYERKILLS && objective.Flags & QUEST_OBJECTIVE_FLAG_KILL_PLAYERS_SAME_FACTION) if (Player const* victim = ObjectAccessor::GetPlayer(GetMap(), victimGuid)) - if (victim->GetTeam() != GetTeam()) + if (victim->GetEffectiveTeam() != GetEffectiveTeam()) continue; int32 currentProgress = GetQuestSlotObjectiveData(logSlot, objective); @@ -23990,7 +23991,7 @@ void Player::ReportedAfkBy(Player* reporter) reportAfkResult.Offender = GetGUID(); Battleground* bg = GetBattleground(); // Battleground also must be in progress! - if (!bg || bg != reporter->GetBattleground() || GetTeam() != reporter->GetTeam() || bg->GetStatus() != STATUS_IN_PROGRESS) + if (!bg || bg != reporter->GetBattleground() || GetEffectiveTeam() != reporter->GetEffectiveTeam() || bg->GetStatus() != STATUS_IN_PROGRESS) { reporter->SendDirectMessage(reportAfkResult.Write()); return; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index dda98c6ed04..7cdcf65b62f 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2214,6 +2214,9 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> TeamId GetTeamId() const { return m_team == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE; } void SetFactionForRace(uint8 race); + Team GetEffectiveTeam() const { return HasPlayerFlagEx(PLAYER_FLAGS_EX_MERCENARY_MODE) ? (GetTeam() == ALLIANCE ? HORDE : ALLIANCE) : Team(GetTeam()); } + TeamId GetEffectiveTeamId() const { return GetEffectiveTeam() == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE; } + void InitDisplayIds(); bool IsAtGroupRewardDistance(WorldObject const* pRewardSource) const; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 86b7eac84a4..76b49ca415e 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10793,7 +10793,7 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId) if (attacker->GetTypeId() == TYPEID_UNIT) victim->ToPlayer()->UpdateCriteria(CriteriaType::KilledByCreature, attacker->GetEntry()); else if (attacker->GetTypeId() == TYPEID_PLAYER && victim != attacker) - victim->ToPlayer()->UpdateCriteria(CriteriaType::KilledByPlayer, 1, attacker->ToPlayer()->GetTeam()); + victim->ToPlayer()->UpdateCriteria(CriteriaType::KilledByPlayer, 1, attacker->ToPlayer()->GetEffectiveTeam()); } // Hook for OnPVPKill Event diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index acf000fd894..114270bc492 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -148,16 +148,16 @@ namespace Trinity WorldObject const* i_source; PacketSender& i_packetSender; float i_distSq; - uint32 team; + Team team; Player const* skipped_receiver; MessageDistDeliverer(WorldObject const* src, PacketSender& packetSender, float dist, bool own_team_only = false, Player const* skipped = nullptr) : i_source(src), i_packetSender(packetSender), i_distSq(dist * dist) - , team(0) + , team(TEAM_OTHER) , skipped_receiver(skipped) { if (own_team_only) if (Player const* player = src->ToPlayer()) - team = player->GetTeam(); + team = player->GetEffectiveTeam(); } void Visit(PlayerMapType &m) const; @@ -168,7 +168,7 @@ namespace Trinity void SendPacket(Player const* player) const { // never send packet to self - if (player == i_source || (team && player->GetTeam() != team) || skipped_receiver == player) + if (player == i_source || (team && player->GetEffectiveTeam() != team) || skipped_receiver == player) return; if (!player->HaveAtClient(i_source)) diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 8d3cca11b69..db8fa111fe4 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -305,7 +305,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, Language lang, std::string ms return; } - if (GetPlayer()->GetTeam() != receiver->GetTeam() && !HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT)) + if (GetPlayer()->GetEffectiveTeam() != receiver->GetEffectiveTeam() && !HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT)) { SendChatPlayerNotfoundNotice(target); return; diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp index 684fc2c7541..31a0a22e99e 100644 --- a/src/server/game/Handlers/InspectHandler.cpp +++ b/src/server/game/Handlers/InspectHandler.cpp @@ -46,7 +46,7 @@ void WorldSession::HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect) WorldPackets::Inspect::InspectResult inspectResult; inspectResult.DisplayInfo.Initialize(player); - if (GetPlayer()->CanBeGameMaster() || sWorld->getIntConfig(CONFIG_TALENTS_INSPECTING) + (GetPlayer()->GetTeamId() == player->GetTeamId()) > 1) + if (GetPlayer()->CanBeGameMaster() || sWorld->getIntConfig(CONFIG_TALENTS_INSPECTING) + (GetPlayer()->GetEffectiveTeam() == player->GetEffectiveTeam()) > 1) { PlayerTalentMap const* talents = player->GetTalentMap(player->GetActiveTalentGroup()); for (PlayerTalentMap::value_type const& v : *talents) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index c0e88613e1c..0b3028877db 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -6075,13 +6075,13 @@ void AuraEffect::HandleBattlegroundPlayerPosition(AuraApplication const* aurApp, { WorldPackets::Battleground::BattlegroundPlayerPosition playerPosition; playerPosition.Guid = target->GetGUID(); - playerPosition.ArenaSlot = static_cast<uint8>(GetMiscValue()); + playerPosition.ArenaSlot = static_cast<int8>(GetMiscValue()); playerPosition.Pos = target->GetPosition(); if (GetAuraType() == SPELL_AURA_BATTLEGROUND_PLAYER_POSITION_FACTIONAL) - playerPosition.IconID = target->GetTeam() == ALLIANCE ? PLAYER_POSITION_ICON_HORDE_FLAG : PLAYER_POSITION_ICON_ALLIANCE_FLAG; + playerPosition.IconID = target->GetEffectiveTeam() == ALLIANCE ? PLAYER_POSITION_ICON_HORDE_FLAG : PLAYER_POSITION_ICON_ALLIANCE_FLAG; else if (GetAuraType() == SPELL_AURA_BATTLEGROUND_PLAYER_POSITION) - playerPosition.IconID = target->GetTeam() == ALLIANCE ? PLAYER_POSITION_ICON_ALLIANCE_FLAG : PLAYER_POSITION_ICON_HORDE_FLAG; + playerPosition.IconID = target->GetEffectiveTeam() == ALLIANCE ? PLAYER_POSITION_ICON_ALLIANCE_FLAG : PLAYER_POSITION_ICON_HORDE_FLAG; else TC_LOG_WARN("spell.auras", "Unknown aura effect %u handled by HandleBattlegroundPlayerPosition.", GetAuraType()); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index a7e7f24c007..bba8045dd82 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2980,7 +2980,7 @@ void Spell::EffectSummonObjectWild() if (go->GetGoType() == GAMEOBJECT_TYPE_FLAGDROP) if (Player* player = m_caster->ToPlayer()) if (Battleground* bg = player->GetBattleground()) - bg->SetDroppedFlagGUID(go->GetGUID(), player->GetTeam() == ALLIANCE ? TEAM_HORDE: TEAM_ALLIANCE); + bg->SetDroppedFlagGUID(go->GetGUID(), bg->GetPlayerTeam(player->GetGUID()) == ALLIANCE ? TEAM_HORDE: TEAM_ALLIANCE); if (GameObject* linkedTrap = go->GetLinkedTrap()) { diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp index 489cd3c3d92..6a8486484eb 100644 --- a/src/server/game/Texts/CreatureTextMgr.cpp +++ b/src/server/game/Texts/CreatureTextMgr.cpp @@ -328,7 +328,7 @@ void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket const* uint32 areaId = source->GetAreaId(); Map::PlayerList const& players = source->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if (itr->GetSource()->GetAreaId() == areaId && (!team || Team(itr->GetSource()->GetTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) + if (itr->GetSource()->GetAreaId() == areaId && (!team || Team(itr->GetSource()->GetEffectiveTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) itr->GetSource()->SendDirectMessage(data); return; } @@ -337,7 +337,7 @@ void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket const* uint32 zoneId = source->GetZoneId(); Map::PlayerList const& players = source->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if (itr->GetSource()->GetZoneId() == zoneId && (!team || Team(itr->GetSource()->GetTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) + if (itr->GetSource()->GetZoneId() == zoneId && (!team || Team(itr->GetSource()->GetEffectiveTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) itr->GetSource()->SendDirectMessage(data); return; } @@ -345,7 +345,7 @@ void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket const* { Map::PlayerList const& players = source->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if ((!team || Team(itr->GetSource()->GetTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) + if ((!team || Team(itr->GetSource()->GetEffectiveTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) itr->GetSource()->SendDirectMessage(data); return; } diff --git a/src/server/game/Texts/CreatureTextMgrImpl.h b/src/server/game/Texts/CreatureTextMgrImpl.h index 19082aedcc6..3f2c879897b 100644 --- a/src/server/game/Texts/CreatureTextMgrImpl.h +++ b/src/server/game/Texts/CreatureTextMgrImpl.h @@ -115,7 +115,7 @@ void CreatureTextMgr::SendChatPacket(WorldObject* source, Builder const& builder uint32 areaId = source->GetAreaId(); Map::PlayerList const& players = source->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if (itr->GetSource()->GetAreaId() == areaId && (!team || Team(itr->GetSource()->GetTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) + if (itr->GetSource()->GetAreaId() == areaId && (!team || Team(itr->GetSource()->GetEffectiveTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) localizer(itr->GetSource()); return; } @@ -124,7 +124,7 @@ void CreatureTextMgr::SendChatPacket(WorldObject* source, Builder const& builder uint32 zoneId = source->GetZoneId(); Map::PlayerList const& players = source->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if (itr->GetSource()->GetZoneId() == zoneId && (!team || Team(itr->GetSource()->GetTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) + if (itr->GetSource()->GetZoneId() == zoneId && (!team || Team(itr->GetSource()->GetEffectiveTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) localizer(itr->GetSource()); return; } @@ -132,7 +132,7 @@ void CreatureTextMgr::SendChatPacket(WorldObject* source, Builder const& builder { Map::PlayerList const& players = source->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - if ((!team || Team(itr->GetSource()->GetTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) + if ((!team || Team(itr->GetSource()->GetEffectiveTeam()) == team) && (!gmOnly || itr->GetSource()->IsGameMaster())) localizer(itr->GetSource()); return; } diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 4118b0d7608..dcf8476e432 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -2729,7 +2729,7 @@ class spell_gen_pvp_trinket : public SpellScript { Player* caster = GetCaster()->ToPlayer(); - switch (caster->GetTeam()) + switch (caster->GetEffectiveTeam()) { case ALLIANCE: caster->CastSpell(caster, SPELL_PVP_TRINKET_ALLIANCE, TRIGGERED_FULL_MASK); @@ -2737,6 +2737,8 @@ class spell_gen_pvp_trinket : public SpellScript case HORDE: caster->CastSpell(caster, SPELL_PVP_TRINKET_HORDE, TRIGGERED_FULL_MASK); break; + default: + break; } } diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp index 46e221e5753..c17e3826413 100644 --- a/src/server/scripts/World/achievement_scripts.cpp +++ b/src/server/scripts/World/achievement_scripts.cpp @@ -45,7 +45,7 @@ class achievement_bg_control_all_nodes : public AchievementCriteriaScript bool OnCheck(Player* source, Unit* /*target*/) override { if (Battleground* bg = source->GetBattleground()) - return bg->IsAllNodesControlledByTeam(source->GetTeam()); + return bg->IsAllNodesControlledByTeam(bg->GetPlayerTeam(source->GetGUID())); return false; } |