aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-04-14 23:31:17 +0200
committerShauren <shauren.trinity@gmail.com>2022-04-16 12:15:37 +0200
commit798693c0b8c6f4ae43f908c9239e14bcf4c3b76f (patch)
tree82de6b20ada279586ef90d97697cfef8b4aca2b2
parent84486ded67efc4e779412ff865c66ca8b9cee7ea (diff)
Core/Battlegrounds: Set PLAYER_FLAGS_EX_MERCENARY_MODE for mercenary players
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp11
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Player/Player.h3
3 files changed, 9 insertions, 7 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index b82061bdf93..4ff2d4216ef 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -675,7 +675,7 @@ void Battleground::RewardReputationToTeam(uint32 faction_id, uint32 Reputation,
if (!player)
continue;
- if (player->GetNativeTeam() != TeamID)
+ if (player->HasPlayerFlagEx(PLAYER_FLAGS_EX_MERCENARY_MODE))
continue;
uint32 repGain = Reputation;
@@ -901,8 +901,12 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen
player->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
- player->RemoveAurasByType(SPELL_AURA_SWITCH_TEAM);
- player->RemoveAurasByType(SPELL_AURA_MOD_FACTION);
+ player->RemoveAura(SPELL_MERCENARY_HORDE_1);
+ player->RemoveAura(SPELL_MERCENARY_HORDE_REACTIONS);
+ player->RemoveAura(SPELL_MERCENARY_ALLIANCE_1);
+ player->RemoveAura(SPELL_MERCENARY_ALLIANCE_REACTIONS);
+ player->RemoveAura(SPELL_MERCENARY_SHAPESHIFT);
+ player->RemovePlayerFlagEx(PLAYER_FLAGS_EX_MERCENARY_MODE);
if (!player->IsAlive()) // resurrect on exit
{
@@ -1138,6 +1142,7 @@ void Battleground::AddPlayer(Player* player)
player->CastSpell(player, SPELL_MERCENARY_ALLIANCE_REACTIONS);
}
player->CastSpell(player, SPELL_MERCENARY_SHAPESHIFT);
+ player->SetPlayerFlagEx(PLAYER_FLAGS_EX_MERCENARY_MODE);
}
}
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 25013ea35ec..175b8cea529 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -6287,7 +6287,7 @@ TeamId Player::TeamIdForRace(uint8 race)
void Player::SwitchToOppositeTeam(bool apply)
{
- m_team = GetNativeTeam();
+ m_team = TeamForRace(GetRace());
if (apply)
m_team = (m_team == ALLIANCE) ? HORDE : ALLIANCE;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 78c74fcee7d..dda98c6ed04 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2214,9 +2214,6 @@ 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);
- uint32 GetNativeTeam() const { return TeamForRace(GetRace()); }
- TeamId GetNativeTeamId() const { return TeamIdForRace(GetRace()); }
-
void InitDisplayIds();
bool IsAtGroupRewardDistance(WorldObject const* pRewardSource) const;