public AirCorpsFighterPower CalcFighterPower() { var reconPlaneBonus = Planes.Aggregate(new AirCorpsFighterPower.Pair(), (max, plane) => { var bonus = plane.Slot.Spec.ReconPlaneAirBaseBonus; return(AirCorpsFighterPower.Pair.Max(max, bonus)); }); var range = (Planes.Aggregate(new AirCorpsFighterPower.Range(), (previous, plane) => { if (plane.State != 1) { return(previous); } var current = plane.Slot.CalcFighterPowerInBase(plane.Count); return(previous + current); }) * reconPlaneBonus).Floor(); return(new AirCorpsFighterPower(range)); }