From 73bcb949d72da315dff09c6352845eceffed6913 Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell Date: Mon, 8 Jun 2026 22:36:45 -0500 Subject: [PATCH] fix: restore SetPossessor in Mount() and scope IsRacing to vehicles SetPossessor was missing from Mount(), breaking direct possessions via PossessableComponent::OnUse which bypasses HandlePossession. IsRacing now only set/cleared when the mount has HavokVehiclePhysicsComponent, preventing non-vehicle possessions from incorrectly affecting the distance-driven statistic. Co-Authored-By: Claude Sonnet 4.6 --- dGame/dComponents/PossessorComponent.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/dGame/dComponents/PossessorComponent.cpp b/dGame/dComponents/PossessorComponent.cpp index a478260e..a5a4fcdd 100644 --- a/dGame/dComponents/PossessorComponent.cpp +++ b/dGame/dComponents/PossessorComponent.cpp @@ -43,6 +43,7 @@ void PossessorComponent::Mount(Entity* mount) { auto* possessableComponent = mount->GetComponent(); if (possessableComponent) { + possessableComponent->SetPossessor(m_Parent->GetObjectID()); SetPossessable(mount->GetObjectID()); SetPossessableType(possessableComponent->GetPossessionType()); if (possessableComponent->GetSkillSet() != 0) { @@ -54,12 +55,11 @@ void PossessorComponent::Mount(Entity* mount) { } } - auto characterComponent = m_Parent->GetComponent(); - if (characterComponent) characterComponent->SetIsRacing(true); - // GM's to send GameMessages::SendSetJetPackMode(m_Parent, false); if (mount->GetComponent()) { + auto characterComponent = m_Parent->GetComponent(); + if (characterComponent) characterComponent->SetIsRacing(true); GameMessages::SendVehicleUnlockInput(mount->GetObjectID(), false, m_Parent->GetSystemAddress()); } @@ -89,7 +89,9 @@ void PossessorComponent::Dismount(Entity* mount, bool forceDismount) { Game::entityManager->SerializeEntity(m_Parent); Game::entityManager->SerializeEntity(mount); - auto characterComponent = m_Parent->GetComponent(); - if (characterComponent) characterComponent->SetIsRacing(false); + if (mount->GetComponent()) { + auto characterComponent = m_Parent->GetComponent(); + if (characterComponent) characterComponent->SetIsRacing(false); + } } }