diff --git a/MechJeb2/MechJebModuleStagingController.cs b/MechJeb2/MechJebModuleStagingController.cs index 458de9ca..0e04ad9f 100644 --- a/MechJeb2/MechJebModuleStagingController.cs +++ b/MechJeb2/MechJebModuleStagingController.cs @@ -305,7 +305,7 @@ public override void OnUpdate() } // always stage if we have no active engines - if (!InverseStageHasActiveEngines(Vessel.currentStage)) + if (!InverseStageHasActiveEngines(Vessel.currentStage) && !WaitingForFairing()) { Stage(); } @@ -321,7 +321,7 @@ public override void OnUpdate() return; // Always drop deactivated engines or tanks - if (InverseStageDecouplesDeactivatedEngineOrTank(Vessel.currentStage - 1)) + if (InverseStageDecouplesDeactivatedEngineOrTank(Vessel.currentStage - 1) && !WaitingForFairing()) { Stage(); } @@ -671,6 +671,9 @@ private bool HasFairingUncached(int inverseStage) // decoupler check below return _partsInStage.Slinq().All(p => p.IsProceduralFairingPayloadFairing()); + if (_partsInStage.Slinq().Any(p => p.Modules.Contains("ModuleProceduralFairing"))) + return true; + // this is simple, but subtle: // 1. we do not identify fairings as separate from decouplers here because of part mods like RSB // which only put a stock decoupler in the staging.