diff --git a/dGame/dComponents/CharacterComponent.cpp b/dGame/dComponents/CharacterComponent.cpp index 203652ca5..95af8020b 100644 --- a/dGame/dComponents/CharacterComponent.cpp +++ b/dGame/dComponents/CharacterComponent.cpp @@ -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(); diff --git a/dGame/dComponents/CharacterComponent.h b/dGame/dComponents/CharacterComponent.h index b91ba024f..d59439f82 100644 --- a/dGame/dComponents/CharacterComponent.h +++ b/dGame/dComponents/CharacterComponent.h @@ -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; }; diff --git a/dGame/dGameMessages/ZoneMessages.cpp b/dGame/dGameMessages/ZoneMessages.cpp index 08f007d43..5d7b11804 100644 --- a/dGame/dGameMessages/ZoneMessages.cpp +++ b/dGame/dGameMessages/ZoneMessages.cpp @@ -65,6 +65,9 @@ namespace GameMessages { SendPlayerReady(entity->GetObjectID(), zoneControlEntity ? zoneControlEntity->GetObjectID() : LWOOBJID_EMPTY, sysAddr); entity->SetPlayerReadyForUpdates(); + // Venture vision from equipped items was sent before the client's UI existed on a fresh login + if (auto* characterComponent = entity->GetComponent()) characterComponent->ResendVentureVision(); + auto* ghostComponent = entity->GetComponent(); if (ghostComponent != nullptr) { ghostComponent->ConstructLimboEntities(); diff --git a/docs/IssueTracker.md b/docs/IssueTracker.md index a6f8690e1..38ff799f0 100644 --- a/docs/IssueTracker.md +++ b/docs/IssueTracker.md @@ -18,6 +18,7 @@ State: **done** = fixed on this branch, needs an in-game check; **partial** = pa | 546 | BUG: (Most?) spawned Pets don't play their summoning/hibernating Animation/VFX/Audio | done | `d1e0f215` fix(pets): summoned pets play their spawn animation and effect | | 547 | BUG: Pet Taming Mini-Game uses poor/invalid positions | done | `6819c670` fix(pets): place the taming minigame where live did | | 596 | BUG: Crux Prime Computer does not respawn if it is killed by an Area of Effect attack | done | `b3166865` fix: Crux Prime dropship computer respawns and no longer crashes | +| 611 | Venture Vision not shown on the minimap after logging in | done | `7e0ec590` fix(minimap): venture vision shows again after logging in (issue 611) | | 636 | BUG: Reputation system not working correctly on Properties | done | `d95eab12` feat: property reputation from visitors, resistant to farming | | 637 | BUG: Today's Top Properties not showing any properties | done | `d95eab12` feat: property reputation from visitors, resistant to farming | | 639 | ENH: Implement saving checks to prevent overwriting of saves | done | `341ce89a` feat: refuse stale character saves with a save generation |