From 6df81c6816c3521a13f329b28f61bc3e7d0e132e Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 18:33:15 +0000 Subject: [PATCH] Object: Set default veterancy level when no controller is assigned --- .../Code/GameEngine/Source/GameLogic/Object/Object.cpp | 10 +++++++++- .../Code/GameEngine/Source/GameLogic/Object/Object.cpp | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp index 45cfe25d89f..603a0705dca 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp @@ -401,7 +401,15 @@ Object::Object( const ThingTemplate *tt, const ObjectStatusMaskType &objectStatu // If a valid team has been assigned me, then I have a Player I can ask about my starting level const Player* controller = getControllingPlayer(); - m_experienceTracker->setVeterancyLevel( controller->getProductionVeterancyLevel( getTemplate()->getName() ) ); + if (controller) + { + m_experienceTracker->setVeterancyLevel( controller->getProductionVeterancyLevel( getTemplate()->getName() ) ); + } + else + { + // No valid controller, set to default veterancy level + m_experienceTracker->setVeterancyLevel( VETERANCY_REGULAR ); + } /// allow for inter-Module resolution for (BehaviorModule** b = m_behaviors; *b; ++b) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp index f48cd78ec02..65c58fad295 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp @@ -470,7 +470,15 @@ Object::Object( const ThingTemplate *tt, const ObjectStatusMaskType &objectStatu // If a valid team has been assigned me, then I have a Player I can ask about my starting level const Player* controller = getControllingPlayer(); - m_experienceTracker->setVeterancyLevel( controller->getProductionVeterancyLevel( getTemplate()->getName() ) ); + if (controller) + { + m_experienceTracker->setVeterancyLevel( controller->getProductionVeterancyLevel( getTemplate()->getName() ) ); + } + else + { + // No valid controller, set to default veterancy level + m_experienceTracker->setVeterancyLevel( VETERANCY_REGULAR ); + } /// allow for inter-Module resolution for (BehaviorModule** b = m_behaviors; *b; ++b)