public bool CanStartUpgrading(CombatItemData cid) { bool result = false; if (m_vCurrentlyUpgradedUnit == null) { Building b = (Building)GetParent(); ClientAvatar ca = GetParent().GetLevel().GetHomeOwnerAvatar(); ComponentManager cm = GetParent().GetLevel().GetComponentManager(); int maxProductionBuildingLevel; if(cid.GetCombatItemType() == 1) maxProductionBuildingLevel = cm.GetMaxSpellForgeLevel(); else maxProductionBuildingLevel = cm.GetMaxBarrackLevel(); if (ca.GetUnitUpgradeLevel(cid) < cid.GetUpgradeLevelCount() - 1) { if(maxProductionBuildingLevel >= cid.GetRequiredProductionHouseLevel() - 1) { result = (b.GetUpgradeLevel() >= (cid.GetRequiredLaboratoryLevel(ca.GetUnitUpgradeLevel(cid) + 1)) - 1); } } } return result; }