From 52fb46703172a0803a122d54aaed6506eb25d3e3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 16 Apr 2022 10:45:25 +0200 Subject: [PATCH] Core/Units: Include SPELL_AURA_MOD_FACTION auras when restoring faction (either on aura removal or .gm off) --- src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) 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