@@ -349,6 +349,7 @@ public float OdometerM
349349 public float TrainBrakePipeLeakPSIorInHgpS = 0.0f ; // Air leakage from train brake pipe - should normally be no more then 5psi/min - default off
350350 public float CompressorRestartPressurePSI = 110 ;
351351 public float CompressorChargingRateM3pS = 0.075f ;
352+ public bool CompressorIsMUControlled = false ;
352353 public float MainResChargingRatePSIpS = 0.4f ;
353354 public float EngineBrakeReleaseRatePSIpS = 12.5f ;
354355 public float EngineBrakeApplyRatePSIpS = 12.5f ;
@@ -984,6 +985,7 @@ public override void Parse(string lowercasetoken, STFReader stf)
984985 CompressorIsMechanical = true ;
985986 }
986987 break ;
988+ case "engine(ortscompressorismucontrolled" : CompressorIsMUControlled = stf . ReadBoolBlock ( false ) ; break ;
987989 case "engine(trainpipeleakrate" : TrainBrakePipeLeakPSIorInHgpS = stf . ReadFloatBlock ( STFReader . UNITS . PressureRateDefaultPSIpS , null ) ; break ;
988990 case "engine(vacuumbrakesvacuumpumpresistance" : VacuumPumpResistanceN = stf . ReadFloatBlock ( STFReader . UNITS . Force , null ) ; break ;
989991
@@ -1172,6 +1174,7 @@ public override void Copy(MSTSWagon copy)
11721174
11731175 CompressorIsMechanical = locoCopy . CompressorIsMechanical ;
11741176 CompressorRestartPressurePSI = locoCopy . CompressorRestartPressurePSI ;
1177+ CompressorIsMUControlled = locoCopy . CompressorIsMUControlled ;
11751178 TrainBrakePipeLeakPSIorInHgpS = locoCopy . TrainBrakePipeLeakPSIorInHgpS ;
11761179 MaxMainResPressurePSI = locoCopy . MaxMainResPressurePSI ;
11771180 MainResPressurePSI = locoCopy . MaxMainResPressurePSI ;
@@ -2645,9 +2648,20 @@ protected virtual void UpdateCompressor(float elapsedClockSeconds)
26452648
26462649 // Turn compressor on and off
26472650 if ( MainResPressurePSI < CompressorRestartPressurePSI && LocomotivePowerSupply . AuxiliaryPowerSupplyState == PowerSupplyState . PowerOn && ! CompressorIsOn )
2651+ {
26482652 SignalEvent ( Event . CompressorOn ) ;
2653+ foreach ( var car in Train . Cars )
2654+ {
2655+ if ( car is MSTSLocomotive loco && loco . RemoteControlGroup == 0 && loco . LocomotivePowerSupply . AuxiliaryPowerSupplyOn && ! loco . CompressorIsOn && loco . CompressorIsMUControlled )
2656+ {
2657+ loco . SignalEvent ( Event . CompressorOn ) ;
2658+ }
2659+ }
2660+ }
26492661 else if ( ( MainResPressurePSI >= MaxMainResPressurePSI || LocomotivePowerSupply . AuxiliaryPowerSupplyState != PowerSupplyState . PowerOn ) && CompressorIsOn )
2662+ {
26502663 SignalEvent ( Event . CompressorOff ) ;
2664+ }
26512665
26522666 if ( CompressorIsOn )
26532667 MainResPressurePSI += elapsedClockSeconds * reservoirChargingRate ;
0 commit comments