From 33c9ef679bac8a147eb280490891b8dad7b02482 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Wed, 22 Apr 2026 18:46:06 +0200 Subject: [PATCH 1/3] fix(veterancy): Disable audiovisual cues for ejected veteran pilots. --- .../Source/GameLogic/Object/ObjectCreationList.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp index b23d6c603ae..1293981eb77 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 @fix 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. From db3aa82f3aa42a2cc20dfe079378d91fb61b2317 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Sat, 2 May 2026 23:06:20 +0200 Subject: [PATCH 2/3] Tweaked TSH comment. --- .../GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp index 1293981eb77..1c359715f0e 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/ObjectCreationList.cpp @@ -1011,7 +1011,7 @@ class GenericObjectCreationNugget : public ObjectCreationNugget obj->getTemplate()->getName().str(), sourceObj->getVeterancyLevel(), sourceObj->getTemplate()->getName().str())); VeterancyLevel v = sourceObj->getVeterancyLevel(); - // TheSuperHackers @fix Caball009 22/04/2026 Disable audiovisual cues for a veterancy level change because this object was just created. + // 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); From 3435602a2ff6b36eb59ca924ddb7250da3835477 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Sun, 3 May 2026 17:18:00 +0200 Subject: [PATCH 3/3] Replicated in Generals. --- .../Source/GameLogic/Object/ObjectCreationList.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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.