diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp index f1ec13163f4..3595649c6f3 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp @@ -995,7 +995,10 @@ class GenericObjectCreationNugget : public ObjectCreationNugget DEBUG_LOG(("Object %s inherits veterancy level %d from %s", obj->getTemplate()->getName().str(), sourceObj->getVeterancyLevel(), sourceObj->getTemplate()->getName().str())); VeterancyLevel v = sourceObj->getVeterancyLevel(); - obj->getExperienceTracker()->setVeterancyLevel(v); + + // TheSuperHackers @bugfix Caball009 22/04/2026 Disable audiovisual cues for a veterancy level change because this object was just created. + // Otherwise the cues would be at an incorrect position, because the object's matrix is not set yet. + obj->getExperienceTracker()->setVeterancyLevel(v, FALSE); //In order to make things easier for the designers, we are going to transfer the unit name //to the ejected thing... so the designer can control the pilot with the scripts. diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp index b23d6c603ae..1c359715f0e 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp @@ -1010,7 +1010,10 @@ class GenericObjectCreationNugget : public ObjectCreationNugget DEBUG_LOG(("Object %s inherits veterancy level %d from %s", obj->getTemplate()->getName().str(), sourceObj->getVeterancyLevel(), sourceObj->getTemplate()->getName().str())); VeterancyLevel v = sourceObj->getVeterancyLevel(); - obj->getExperienceTracker()->setVeterancyLevel(v); + + // TheSuperHackers @bugfix Caball009 22/04/2026 Disable audiovisual cues for a veterancy level change because this object was just created. + // Otherwise the cues would be at an incorrect position, because the object's matrix is not set yet. + obj->getExperienceTracker()->setVeterancyLevel(v, FALSE); //In order to make things easier for the designers, we are going to transfer the unit name //to the ejected thing... so the designer can control the pilot with the scripts.