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;