mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r3422) - Fix: If an engine reaches the rear of a depot, make the engine turn around before it reaches the tile end (same as a normal end of line.) This fixes a bug whereby the engine could poke into the depot and crash with another engine just leaving it.
This commit is contained in:
parent
70efa805cb
commit
0f28e74e3e
|
@ -3294,7 +3294,7 @@ static bool TrainCheckIfLineEnds(Vehicle *v)
|
|||
TileIndex tile;
|
||||
uint x,y;
|
||||
uint16 break_speed;
|
||||
int t;
|
||||
DiagDirection t;
|
||||
uint32 ts;
|
||||
byte trackdir;
|
||||
|
||||
|
@ -3368,8 +3368,11 @@ static bool TrainCheckIfLineEnds(Vehicle *v)
|
|||
}
|
||||
|
||||
if (GB(ts, 0, 16) != 0) {
|
||||
/* If we approach a rail-piece which we can't enter, don't enter it! */
|
||||
if (x + 4 > 15 && !CheckCompatibleRail(v, tile)) {
|
||||
/* If we approach a rail-piece which we can't enter, or the back of a depot, don't enter it! */
|
||||
if (x + 4 > 15 &&
|
||||
(!CheckCompatibleRail(v, tile) ||
|
||||
(IsTileDepotType(tile, TRANSPORT_RAIL) &&
|
||||
GetDepotDirection(tile, TRANSPORT_RAIL) == t))) {
|
||||
v->cur_speed = 0;
|
||||
ReverseTrainDirection(v);
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue