public int Refill(Troop troop, float rate) { if (this.InefficiencyDays > 0) { rate *= 2f; } if (rate < 1f) { rate = 1f - rate; int increment = troop.FoodMax - troop.Food; if (increment > 0) { int num2 = (int) (this.StartArchitecture.Food * rate); if ((num2 + troop.Food) >= troop.FoodCostPerDay) { if (num2 >= increment) { troop.IncreaseFood(increment); this.StartArchitecture.DecreaseFood((int) (((float) increment) / rate)); this.BelongedFaction.IncreaseTechniquePoint(increment / 200); this.BelongedFaction.IncreaseReputation(increment / 0x2710); return (int) (increment * rate); } int num3 = (((num2 + troop.Food) / troop.FoodCostPerDay) * troop.FoodCostPerDay) - troop.Food; troop.IncreaseFood(num3); this.StartArchitecture.DecreaseFood((int) (((float) num3) / rate)); this.BelongedFaction.IncreaseTechniquePoint(num3 / 200); this.BelongedFaction.IncreaseReputation(num3 / 0x2710); return (int) (num3 * rate); } } } return 0; }