private object OnStructureRepair(BaseCombatEntity entity, BasePlayer player) { if (!entity.repair.enabled) { return(false); } if (entity.SecondsSinceAttacked <= 30) { return(null); } var healthMissing = entity.MaxHealth() - entity.Health(); var healthMissingFraction = 1 - entity.healthFraction; if (healthMissingFraction <= 0) { return(null); } if (entity.BuildCost() == null) { return(null); } var repairAmount = Math.Max(entity.MaxHealth() * RepairFraction, MinRepairAmount); repairAmount = Math.Min(repairAmount, healthMissing); entity.health += repairAmount; entity.SendNetworkUpdate(); if (entity.Health() >= entity.MaxHealth()) { entity.OnRepairFinished(); } else { entity.OnRepair(); } return(false); }