@@ -3215,6 +3215,16 @@ public virtual void UpdateFollowingState(float elapsedClockSeconds, int presentT
3215
3215
AdjustControlsAccelMore ( 0.5f * MaxAccelMpSS , elapsedClockSeconds , 10 ) ;
3216
3216
}
3217
3217
}
3218
+ if ( OtherTrain . UncoupledFrom == this )
3219
+ {
3220
+ if ( distanceToTrain > 5.0f )
3221
+ {
3222
+ UncoupledFrom = null ;
3223
+ OtherTrain . UncoupledFrom = null ;
3224
+ }
3225
+ else
3226
+ attachToTrain = false ;
3227
+ }
3218
3228
// if (distanceToTrain < keepDistanceStatTrainM_P - 4.0f || (distanceToTrain - brakingDistance) <= keepDistanceTrainM) // Other possibility
3219
3229
if ( ( distanceToTrain - brakingDistance ) <= keepDistanceTrainM )
3220
3230
{
@@ -4600,6 +4610,7 @@ public void LeaveCarsToLivingTrain(Train attachTrain, bool thisTrainFront, bool
4600
4610
attachTrain . Cars . Insert ( 0 , car ) ;
4601
4611
car . Train = attachTrain ;
4602
4612
car . Flipped = ! car . Flipped ;
4613
+ if ( attachTrain . IsActualPlayerTrain && attachTrain . LeadLocomotiveIndex != - 1 ) attachTrain . LeadLocomotiveIndex ++ ;
4603
4614
}
4604
4615
else
4605
4616
{
@@ -4635,6 +4646,7 @@ public void LeaveCarsToLivingTrain(Train attachTrain, bool thisTrainFront, bool
4635
4646
{
4636
4647
attachTrain . Cars . Insert ( 0 , car ) ;
4637
4648
car . Train = attachTrain ;
4649
+ if ( attachTrain . IsActualPlayerTrain && attachTrain . LeadLocomotiveIndex != - 1 ) attachTrain . LeadLocomotiveIndex ++ ;
4638
4650
}
4639
4651
passedLength += car . CarLengthM ;
4640
4652
attachTrain . Length += car . CarLengthM ;
@@ -4683,6 +4695,7 @@ public void StealCarsToLivingTrain(Train attachTrain, bool thisTrainFront, bool
4683
4695
Length += car . CarLengthM ;
4684
4696
attachTrain . Length -= car . CarLengthM ;
4685
4697
attachTrain . Cars . Remove ( car ) ;
4698
+ if ( attachTrain . IsActualPlayerTrain && attachTrain . LeadLocomotiveIndex != - 1 ) attachTrain . LeadLocomotiveIndex -- ;
4686
4699
}
4687
4700
}
4688
4701
attachTrain . Cars [ 0 ] . SignalEvent ( Event . Couple ) ;
0 commit comments