Index: ps/trunk/binaries/data/mods/public/simulation/components/Upgrade.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/Upgrade.js +++ ps/trunk/binaries/data/mods/public/simulation/components/Upgrade.js @@ -104,7 +104,7 @@ categoryFrom = cmpTrainingRestrictions.GetCategory(); else if (cmpBuildRestrictions) categoryFrom = cmpBuildRestrictions.GetCategory(); - + if (categoryTo == categoryFrom) return; @@ -126,7 +126,7 @@ for (let option in this.template) { let choice = this.template[option]; - let templateName = cmpIdentity ? choice.Entity.replace(/\{civ\}/g, cmpIdentity.GetCiv()) : choice.Entity + let templateName = cmpIdentity ? choice.Entity.replace(/\{civ\}/g, cmpIdentity.GetCiv()) : choice.Entity; let cost = {}; if (choice.Cost) Index: ps/trunk/binaries/data/mods/public/simulation/helpers/Transform.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/helpers/Transform.js +++ ps/trunk/binaries/data/mods/public/simulation/helpers/Transform.js @@ -218,16 +218,20 @@ function TransferGarrisonedUnits(oldEnt, newEnt) { // Transfer garrisoned units if possible, or unload them - var cmpOldGarrison = Engine.QueryInterface(oldEnt, IID_GarrisonHolder); - var cmpNewGarrison = Engine.QueryInterface(newEnt, IID_GarrisonHolder); - if (!cmpNewGarrison || !cmpOldGarrison || !cmpOldGarrison.GetEntities().length) - return; // nothing to do as the code will by default unload all. - - var garrisonedEntities = cmpOldGarrison.GetEntities().slice(); - for (let ent of garrisonedEntities) + let cmpOldGarrison = Engine.QueryInterface(oldEnt, IID_GarrisonHolder); + if (!cmpOldGarrison || !cmpOldGarrison.GetEntities().length) + return; + + let cmpNewGarrison = Engine.QueryInterface(newEnt, IID_GarrisonHolder); + let entities = cmpOldGarrison.GetEntities().slice(); + for (let ent of entities) { - let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI); cmpOldGarrison.Eject(ent); + if (!cmpNewGarrison) + continue; + let cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI); + if (!cmpUnitAI) + continue; cmpUnitAI.Autogarrison(newEnt); cmpNewGarrison.Garrison(ent); }