From a713216540f833b6e2a2dbeccb8aa40da1e9d86a Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Tue, 18 Nov 2025 20:04:07 -0800 Subject: [PATCH] fix: saving gm invis for non gms (#1940) --- dGame/User.h | 2 +- dGame/dComponents/GhostComponent.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dGame/User.h b/dGame/User.h index 7fe8d335..2c9f374c 100644 --- a/dGame/User.h +++ b/dGame/User.h @@ -31,7 +31,7 @@ public: std::string& GetSessionKey() { return m_SessionKey; } SystemAddress& GetSystemAddress() { return m_SystemAddress; } - eGameMasterLevel GetMaxGMLevel() { return m_MaxGMLevel; } + eGameMasterLevel GetMaxGMLevel() const { return m_MaxGMLevel; } uint32_t GetLastCharID() { return m_LastCharID; } void SetLastCharID(uint32_t newCharID) { m_LastCharID = newCharID; } diff --git a/dGame/dComponents/GhostComponent.cpp b/dGame/dComponents/GhostComponent.cpp index 96283de3..a354e2c6 100644 --- a/dGame/dComponents/GhostComponent.cpp +++ b/dGame/dComponents/GhostComponent.cpp @@ -12,7 +12,7 @@ GhostComponent::GhostComponent(Entity* parent, const int32_t componentID) : Comp m_GhostReferencePoint = NiPoint3Constant::ZERO; m_GhostOverridePoint = NiPoint3Constant::ZERO; m_GhostOverride = false; - + RegisterMsg(this, &GhostComponent::OnToggleGMInvis); RegisterMsg(this, &GhostComponent::OnGetGMInvis); RegisterMsg(this, &GhostComponent::MsgGetObjectReportInfo); @@ -43,7 +43,8 @@ void GhostComponent::UpdateXml(tinyxml2::XMLDocument& doc) { auto* ghstElement = objElement->FirstChildElement("ghst"); if (ghstElement) objElement->DeleteChild(ghstElement); // Only save if GM invisible - if (!m_IsGMInvisible) return; + const auto* const user = UserManager::Instance()->GetUser(m_Parent->GetSystemAddress()); + if (!m_IsGMInvisible || !user || user->GetMaxGMLevel() < eGameMasterLevel::FORUM_MODERATOR) return; ghstElement = objElement->InsertNewChildElement("ghst"); if (ghstElement) ghstElement->SetAttribute("i", m_IsGMInvisible); }