From 0baafb537598303fea4cb992e7966cd651c24317 Mon Sep 17 00:00:00 2001 From: Ralph Sennhauser Date: Thu, 28 Aug 2025 09:36:19 +0200 Subject: [PATCH] Don't set animation for production with UnitAi Entities with a production queue when queueing or unqueueing items for will set an appropriate animation which is desired for structures, like the forge producing smoke, but not so for units as it interferes with UnitAi animation state. Units don't have animations for training or researching so the idle animation will be set in that case instead. If such a unit is in motion this results in the unit gliding. To avoid this just skip setting an animation for entities having a UnitAI. Reported-by: wowgetoffyourcellphone Signed-off-by: Ralph Sennhauser --- .../mods/public/simulation/components/ProductionQueue.js | 5 +++++ .../simulation/components/tests/test_ProductionQueue.js | 1 + 2 files changed, 6 insertions(+) diff --git a/binaries/data/mods/public/simulation/components/ProductionQueue.js b/binaries/data/mods/public/simulation/components/ProductionQueue.js index 7800d59cf2..6b775d1fac 100644 --- a/binaries/data/mods/public/simulation/components/ProductionQueue.js +++ b/binaries/data/mods/public/simulation/components/ProductionQueue.js @@ -369,6 +369,11 @@ ProductionQueue.prototype.RemoveItem = function(id) ProductionQueue.prototype.SetAnimation = function(name) { + // In case the entity has a UnitAI discard the attempted change of + // animation as it would interfere with animation logic in UnitAI. + if (Engine.QueryInterface(this.entity, IID_UnitAI)) + return; + const cmpVisual = Engine.QueryInterface(this.entity, IID_Visual); if (cmpVisual) cmpVisual.SelectAnimation(name, false, 1); diff --git a/binaries/data/mods/public/simulation/components/tests/test_ProductionQueue.js b/binaries/data/mods/public/simulation/components/tests/test_ProductionQueue.js index cdb1ba449f..d7f1dc0b6a 100644 --- a/binaries/data/mods/public/simulation/components/tests/test_ProductionQueue.js +++ b/binaries/data/mods/public/simulation/components/tests/test_ProductionQueue.js @@ -3,6 +3,7 @@ Engine.LoadComponentScript("interfaces/ProductionQueue.js"); Engine.LoadComponentScript("interfaces/Researcher.js"); Engine.LoadComponentScript("interfaces/Timer.js"); Engine.LoadComponentScript("interfaces/Trainer.js"); +Engine.LoadComponentScript("interfaces/UnitAI.js"); Engine.LoadComponentScript("interfaces/Upgrade.js"); Engine.LoadComponentScript("Timer.js");