From 80febc4de09121047a8b3d3e46fc16729370e228 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 2 Nov 2021 20:13:54 -0300 Subject: [PATCH] fix(Core/Player): clear current title if the player loses it (#8827) --- src/server/game/Entities/Player/Player.cpp | 6 ++++++ src/server/game/Entities/Player/Player.h | 1 + 2 files changed, 7 insertions(+) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6b99e1701..34781bd7e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12486,6 +12486,12 @@ void Player::SetTitle(CharTitlesEntry const* title, bool lost) if (!HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) return; + // Clear the current title if it is the one being removed. + if (title->bit_index == GetUInt32Value(PLAYER_CHOSEN_TITLE)) + { + SetCurrentTitle(nullptr, true); + } + RemoveFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag); } else diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 675ee057f..2cd618b30 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2495,6 +2495,7 @@ public: [[nodiscard]] bool HasTitle(uint32 bitIndex) const; bool HasTitle(CharTitlesEntry const* title) const { return HasTitle(title->bit_index); } void SetTitle(CharTitlesEntry const* title, bool lost = false); + void SetCurrentTitle(CharTitlesEntry const* title, bool clear = false) { SetUInt32Value(PLAYER_CHOSEN_TITLE, clear ? 0 : title->bit_index); }; //bool isActiveObject() const { return true; } bool CanSeeSpellClickOn(Creature const* creature) const;