public bool CanBuild(Architecture a) { if (this.PositionOccupied > 0 && a.FacilityPositionCount == 0) return false; if (!(!this.PopulationRelated || a.Kind.HasPopulation)) { return false; } if (a.BelongedFaction != null && a.BelongedFaction.TechniquePoint + a.BelongedFaction.TechniquePointForFacility + a.BelongedFaction.TechniquePointForTechnique < this.PointCost) { return false; } if (this.TechnologyNeeded > a.Technology) { return false; } foreach (Conditions.Condition i in this.GetConditionList()) { if (!i.CheckCondition(a)) { return false; } } if (this.ArchitectureLimit < 9999 && a.GetFacilityKindCount(this.ID) >= this.ArchitectureLimit) { return false; } if (a.BelongedFaction != null && this.FactionLimit < 9999 && a.BelongedFaction.GetFacilityKindCount(this.ID) >= this.FactionLimit) { return false; } return true; }