diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-04-16 10:45:25 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-04-16 12:15:37 +0200 |
commit | 52fb46703172a0803a122d54aaed6506eb25d3e3 (patch) | |
tree | 405d64d25dd43db585bf2290751e05e3fffe089b /src | |
parent | 1215321c8bc2676fefc0b4627044f2f78202704c (diff) |
Core/Units: Include SPELL_AURA_MOD_FACTION auras when restoring faction (either on aura removal or .gm off)
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 |