diff --git a/MechJeb2/MechJebModuleRoverController.cs b/MechJeb2/MechJebModuleRoverController.cs index 49ab59177..136656ce5 100644 --- a/MechJeb2/MechJebModuleRoverController.cs +++ b/MechJeb2/MechJebModuleRoverController.cs @@ -74,7 +74,7 @@ public class MechJebModuleRoverController : ComputerModule [EditableInfoItem("#MechJeb_TractionBrakeLimit", InfoItem.Category.Rover), Persistent(pass = (int)Pass.Type)] // Traction Brake Limit public EditableDouble tractionLimit = 75; - public List wheelbases = new List(); + public List<(PartModule, BaseField)> wheelbases = new List<(PartModule, BaseField)>(); public override void OnStart(PartModule.StartState state) { @@ -105,7 +105,17 @@ public void OnVesselModified(Vessel v) wheelbases.AddRange(vessel.Parts.Where( p => p.HasModule() && p.GetModule().wheelType != WheelType.LEG - ).Select(p => p.GetModule())); + ).Select(p => { + var pm = p.Modules.GetModule("ModuleWheelBase"); + return (pm, pm.Fields["isGrounded"]); + })); + wheelbases.AddRange(vessel.Parts.Where( + p => p.Modules.Contains("KSPWheelBase") && + p.Modules.Contains("KSPWheelRotation") + ).Select(p => { + var pm = p.Modules.GetModule("KSPWheelBase"); + return (pm, pm.Fields["grounded"]); + })); } catch (Exception) {} } @@ -146,9 +156,9 @@ public void CalculateTraction() if (wheelbases.Count == 0) { OnVesselModified(vessel); } traction = 0; - for (int i = 0; i < wheelbases.Count; i++) + foreach ((PartModule pm, BaseField grounded) in wheelbases) { - if (wheelbases[i].isGrounded) + if (grounded.GetValue(pm)) { traction += 100; }