diff --git a/src/pbs.cpp b/src/pbs.cpp index f0511a73b3..2ba7bbf9d1 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -275,6 +275,14 @@ static Vehicle *FindTrainOnTrackEnum(Vehicle *v, void *data) if (v->type != VEH_TRAIN || (v->vehstatus & VS_CRASHED)) return NULL; Train *t = Train::From(v); + if (t->track == TRACK_BIT_WORMHOLE) { + /* Do not find trains inside signalled bridge/tunnels. + * Trains on the ramp/entrance itself are found though. + */ + if (IsTileType(info->res.tile, MP_TUNNELBRIDGE) && HasWormholeSignals(info->res.tile) && info->res.tile != TileVirtXY(t->x_pos, t->y_pos)) { + return NULL; + } + } if (t->track == TRACK_BIT_WORMHOLE || HasBit((TrackBits)t->track, TrackdirToTrack(info->res.trackdir))) { t = t->First();