@@ -405,6 +405,8 @@ public float OdometerM
405405 public float DynamicBrakeDelayS ;
406406 public bool DynamicBrakeAutoBailOff ;
407407 public bool DynamicBrakePartialBailOff ;
408+ public bool DynamicBrakeEngineBrakeReplacement ;
409+ public float DynamicBrakeEngineBrakeReplacementSpeed ;
408410 public bool UsingRearCab ;
409411 public bool BrakeOverchargeSoundOn = false ;
410412 protected bool DynamicBrakeBlendingEnabled ; // dynamic brake blending is configured
@@ -1074,6 +1076,8 @@ public override void Parse(string lowercasetoken, STFReader stf)
10741076 case "engine(dynamicbrakehasautobailoff" :
10751077 case "engine(ortsdynamicbrakeshasautobailoff" : DynamicBrakeAutoBailOff = stf . ReadBoolBlock ( true ) ; break ;
10761078 case "engine(ortsdynamicbrakeshaspartialbailoff" : DynamicBrakePartialBailOff = stf . ReadBoolBlock ( false ) ; break ;
1079+ case "engine(ortsdynamicbrakereplacementwithenginebrake" : DynamicBrakeEngineBrakeReplacement = stf . ReadBoolBlock ( false ) ; break ;
1080+ case "engine(ortsdynamicbrakereplacementwithenginebrakeatspeed" : DynamicBrakeEngineBrakeReplacementSpeed = stf . ReadFloatBlock ( STFReader . UNITS . SpeedDefaultMPH , null ) ; break ;
10771081 case "engine(dynamicbrakesdelaytimebeforeengaging" : DynamicBrakeDelayS = stf . ReadFloatBlock ( STFReader . UNITS . Time , null ) ; break ;
10781082 case "engine(dynamicbrakesresistorcurrentlimit" : DynamicBrakeMaxCurrentA = stf . ReadFloatBlock ( STFReader . UNITS . Current , null ) ; break ;
10791083 case "engine(numwheels" : MSTSLocoNumDrvWheels = stf . ReadFloatBlock ( STFReader . UNITS . None , 4.0f ) ; if ( MSTSLocoNumDrvWheels < 1 ) STFException . TraceWarning ( stf , "Engine:NumWheels is less than 1, parts of the simulation may not function correctly" ) ; break ;
@@ -1226,6 +1230,8 @@ public override void Copy(MSTSWagon copy)
12261230 DynamicBrakeForceCurves = locoCopy . DynamicBrakeForceCurves ;
12271231 DynamicBrakeAutoBailOff = locoCopy . DynamicBrakeAutoBailOff ;
12281232 DynamicBrakePartialBailOff = locoCopy . DynamicBrakePartialBailOff ;
1233+ DynamicBrakeEngineBrakeReplacement = locoCopy . DynamicBrakeEngineBrakeReplacement ;
1234+ DynamicBrakeEngineBrakeReplacementSpeed = locoCopy . DynamicBrakeEngineBrakeReplacementSpeed ;
12291235 DynamicBrakeMaxCurrentA = locoCopy . DynamicBrakeMaxCurrentA ;
12301236 DynamicBrakeSpeed1MpS = locoCopy . DynamicBrakeSpeed1MpS ;
12311237 DynamicBrakeSpeed2MpS = locoCopy . DynamicBrakeSpeed2MpS ;
@@ -1840,6 +1846,11 @@ public override void Initialize()
18401846 }
18411847 }
18421848
1849+ if ( DynamicBrakeEngineBrakeReplacement && DynamicBrakeEngineBrakeReplacementSpeed == 0 )
1850+ {
1851+ DynamicBrakeEngineBrakeReplacementSpeed = DynamicBrakeSpeed2MpS ;
1852+ }
1853+
18431854 // Initialise track sanding parameters
18441855 if ( MaxTrackSandBoxCapacityM3 == 0 )
18451856 {
0 commit comments