From 62532c6bdd42cfcefc4028c72db002ce25a0864d Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Sun, 26 Nov 2023 00:27:15 -0500 Subject: [PATCH] [Bug Fix] Changing Group Leader Invalidated GetLeaderName() (#3712) # Notes - Utilizes fixes posted in https://github.com/EQEmu/Server/issues/3706 to resolve https://github.com/EQEmu/Server/issues/368. - Changing group leader caused issues because we assumed `member[0]` was always leader. --- zone/groups.cpp | 6 ++++++ zone/groups.h | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/zone/groups.cpp b/zone/groups.cpp index a16e7d487..dc94efb88 100644 --- a/zone/groups.cpp +++ b/zone/groups.cpp @@ -2510,3 +2510,9 @@ bool Group::IsLeader(const char* name) { return false; } + +std::string Group::GetGroupLeaderName(uint32 group_id) { + char leader_name_buffer[64] = { 0 }; + database.GetGroupLeadershipInfo(group_id, leader_name_buffer); + return std::string(leader_name_buffer); +} diff --git a/zone/groups.h b/zone/groups.h index 85a85ccae..c49d4c0a2 100644 --- a/zone/groups.h +++ b/zone/groups.h @@ -76,7 +76,7 @@ public: void SplitMoney(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, Client *splitter = nullptr); inline void SetLeader(Mob* c){ leader = c; }; inline Mob* GetLeader() { return leader; }; - const char* GetLeaderName() { return membername[0]; }; + const char* GetLeaderName() { return GetGroupLeaderName(GetID()).c_str(); }; void SendHPManaEndPacketsTo(Mob* newmember); void SendHPPacketsFrom(Mob* member); void SendManaPacketFrom(Mob* member); @@ -177,6 +177,8 @@ private: int mentor_percent; XTargetAutoHaters m_autohatermgr; + + std::string GetGroupLeaderName(uint32 group_id); }; #endif