fix(minimap): venture vision shows again after logging in (issue 611)

Venture vision from an equipped item was sent while the character loaded, before the client's UI existed, so after a
login the minimap stayed empty until the item was equipped again (a world transfer keeps the UI, so it worked
there). The player's active venture vision effects are sent again once the player has loaded. Check: wear the
Venture Vision helmet, log out and back in: the minimap shows the icons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-29 09:12:26 -05:00
parent c75205a0e2
commit 154ff1f16f
4 changed files with 16 additions and 0 deletions

View File

@@ -960,6 +960,12 @@ void CharacterComponent::UpdateClientMinimap(bool showFaction, std::string ventu
uiMessage.SendToClient(m_Parent ? m_Parent->GetSystemAddress() : UNASSIGNED_SYSTEM_ADDRESS);
}
void CharacterComponent::ResendVentureVision() const {
for (const auto& [ventureVisionType, count] : m_ActiveVentureVisionEffects) {
if (count > 0) UpdateClientMinimap(true, ventureVisionType);
}
}
void CharacterComponent::AwardClaimCodes() {
if (!m_Parent || !m_Parent->GetCharacter()) return;
auto* user = m_Parent->GetCharacter()->GetParentUser();

View File

@@ -315,6 +315,12 @@ public:
*/
void UpdateClientMinimap(bool showFaction, std::string ventureVisionType) const;
/**
* Send the client every venture vision effect that is on. Effects from equipped items are added while the
* character loads, before the client's UI exists, so they are sent again once the player has loaded.
*/
void ResendVentureVision() const;
void SetCurrentInteracting(LWOOBJID objectID) { m_CurrentInteracting = objectID; };
LWOOBJID GetCurrentInteracting() { return m_CurrentInteracting; };