Index: ps/trunk/binaries/data/mods/public/simulation/components/FormationAttack.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/FormationAttack.js +++ ps/trunk/binaries/data/mods/public/simulation/components/FormationAttack.js @@ -64,7 +64,7 @@ if (result.max >= 0) result.max += extraRange; - result.min += extraRange; + return result; }; Index: ps/trunk/binaries/data/mods/public/simulation/components/UnitAI.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/UnitAI.js +++ ps/trunk/binaries/data/mods/public/simulation/components/UnitAI.js @@ -1255,6 +1255,7 @@ "enter": function(msg) { var cmpFormation = Engine.QueryInterface(this.entity, IID_Formation); cmpFormation.SetRearrange(false); + this.StopMoving(); this.StartTimer(1000, 1000); }, @@ -1277,6 +1278,8 @@ "leave": function(msg) { this.StopTimer(); + let cmpFormation = Engine.QueryInterface(this.entity, IID_Formation); + cmpFormation.MoveToMembersCenter(); }, }, }, Index: ps/trunk/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js +++ ps/trunk/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js @@ -283,6 +283,7 @@ SetSpeed: function(speed) { }, MoveToPointRange: function(x, z, minRange, maxRange) { }, IsInTargetRange: function(target, min, max) { return true; }, + StopMoving: function() { }, GetPassabilityClassName: function() { return "default"; }, });