diff --git a/binaries/data/mods/public/simulation/ai/petra/headquarters.js b/binaries/data/mods/public/simulation/ai/petra/headquarters.js index 3cc11c1252..157bacd217 100644 --- a/binaries/data/mods/public/simulation/ai/petra/headquarters.js +++ b/binaries/data/mods/public/simulation/ai/petra/headquarters.js @@ -1479,7 +1479,7 @@ m.HQ.prototype.trainEmergencyUnits = function(gameState, positions) continue; if (!total.canAfford(new API3.Resources(template.cost()))) continue; - templateFound = [trainable, template]; + templateAnchor = [trainable, template]; break; } } @@ -1487,7 +1487,7 @@ m.HQ.prototype.trainEmergencyUnits = function(gameState, positions) // and if not, take some of ther accounted resources // TODO substract only what is needed instead of reset // TODO sort the queues - var cost = new API3.Resources(templateFound[1].cost()); + var cost = new API3.Resources(templateAnchor[1].cost()); if (!available.canAfford(cost)) { for (var p in gameState.ai.queueManager.queues) @@ -1504,7 +1504,7 @@ m.HQ.prototype.trainEmergencyUnits = function(gameState, positions) var metadata = { "role": "worker", "base": nearestAnchor.getMetadata(PlayerID, "base"), "trainer": nearestAnchor.id() }; if (autogarrison) metadata.garrisonType = "protection"; - gameState.ai.queues.emergency.addItem(new m.TrainingPlan(gameState, templateFound[0], metadata, 1, 1)); + gameState.ai.queues.emergency.addItem(new m.TrainingPlan(gameState, templateAnchor[0], metadata, 1, 1)); }; m.HQ.prototype.canBuild = function(gameState, structure) diff --git a/binaries/data/mods/public/simulation/components/Pack.js b/binaries/data/mods/public/simulation/components/Pack.js index 5d59714ae6..99e1bc40fc 100644 --- a/binaries/data/mods/public/simulation/components/Pack.js +++ b/binaries/data/mods/public/simulation/components/Pack.js @@ -158,7 +158,8 @@ Pack.prototype.PackProgress = function(data, lateness) var cmpNewUnitAI = Engine.QueryInterface(newEntity, IID_UnitAI); if (cmpUnitAI && cmpNewUnitAI) { - cmpNewUnitAI.SetHeldPosition(cmpUnitAI.GetHeldPosition()); + var pos = cmpUnitAI.GetHeldPosition(); + cmpNewUnitAI.SetHeldPosition(pos.x, pos.z); if (cmpUnitAI.GetStanceName()) cmpNewUnitAI.SwitchToStance(cmpUnitAI.GetStanceName()); cmpNewUnitAI.AddOrders(cmpUnitAI.GetOrders()); diff --git a/binaries/data/mods/public/simulation/components/Promotion.js b/binaries/data/mods/public/simulation/components/Promotion.js index ae1ee26b2f..c3d57fa6ee 100644 --- a/binaries/data/mods/public/simulation/components/Promotion.js +++ b/binaries/data/mods/public/simulation/components/Promotion.js @@ -72,7 +72,8 @@ Promotion.prototype.Promote = function(promotedTemplateName) var cmpCurrentUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); var cmpPromotedUnitAI = Engine.QueryInterface(promotedUnitEntity, IID_UnitAI); - cmpPromotedUnitAI.SetHeldPosition(cmpCurrentUnitAI.GetHeldPosition()); + var pos = cmpCurrentUnitAI.GetHeldPosition(); + cmpPromotedUnitAI.SetHeldPosition(pos.x, pos.z); if (cmpCurrentUnitAI.GetStanceName()) cmpPromotedUnitAI.SwitchToStance(cmpCurrentUnitAI.GetStanceName());