diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6d6a27316dd..10d29ceb629 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2128,7 +2128,7 @@ void Player::SetGameMaster(bool on) PhasingHandler::SetAlwaysVisible(this, HasAuraType(SPELL_AURA_PHASE_ALWAYS_VISIBLE), false); m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON; - SetFactionForRace(GetRace()); + RestoreFaction(); RemovePlayerFlag(PLAYER_FLAGS_GM); RemoveUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 76b49ca415e..1b780a027be 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11325,6 +11325,12 @@ void Unit::RemoveCharmedBy(Unit* charmer) void Unit::RestoreFaction() { + if (HasAuraType(SPELL_AURA_MOD_FACTION)) + { + SetFaction(GetAuraEffectsByType(SPELL_AURA_MOD_FACTION).back()->GetMiscValue()); + return; + } + if (GetTypeId() == TYPEID_PLAYER) ToPlayer()->SetFactionForRace(GetRace()); else |