diff --git a/zone/titles.cpp b/zone/titles.cpp index f91a522f6..0f30bd27b 100644 --- a/zone/titles.cpp +++ b/zone/titles.cpp @@ -19,7 +19,7 @@ #include "../common/eq_packet_structs.h" #include "../common/strings.h" #include "../common/misc_functions.h" -#include "../common/repositories/titles_repository.h" +#include "../common/repositories/player_titlesets_repository.h" #include "client.h" #include "entity.h" @@ -343,7 +343,21 @@ void Client::RemoveTitle(int title_set) return; } - TitlesRepository::DeleteWhere( + for (const auto& title : title_manager.GetTitles()) { + if (title.titleset == title_set) { + if (std::string(m_pp.title) == title.prefix) { + SetAATitle(""); + } + + if (std::string(m_pp.suffix) == title.suffix) { + SetTitleSuffix(""); + } + + break; + } + } + + PlayerTitlesetsRepository::DeleteWhere( database, fmt::format( "`title_set` = {} AND `char_id` = {}", diff --git a/zone/titles.h b/zone/titles.h index b5e12de8f..32909cb3f 100644 --- a/zone/titles.h +++ b/zone/titles.h @@ -57,6 +57,7 @@ public: void CreateNewPlayerTitle(Client *client, std::string title); void CreateNewPlayerSuffix(Client *client, std::string suffix); bool HasTitle(Client* client, uint32 title_id); + inline const std::vector& GetTitles() { return titles; } protected: std::vector titles;