Index: src/saveload/afterload.cpp =================================================================== --- src/saveload/afterload.cpp (revision 21532) +++ src/saveload/afterload.cpp (working copy) @@ -2410,7 +2410,7 @@ if (v->type != VEH_TRAIN && v->type != VEH_ROAD) continue; /* Continue if not actualy on tunnel/bridge */ - if (!(IsTileType(v->tile, MP_TUNNELBRIDGE))) continue; + if (!(IsTileType(v->tile, MP_TUNNELBRIDGE))) continue; /* Is the vehicle actually on a tunnel/bridge entrance/exit? */ TileIndex vtile = TileVirtXY(v->x_pos, v->y_pos); @@ -2441,7 +2441,8 @@ Train *t = Train::From(v); if (t->track != TRACK_BIT_WORMHOLE) continue; t->track = (DiagDirToAxis(dir) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y); - } break; + } + break; case VEH_ROAD: { RoadVehicle *rv = RoadVehicle::From(v); @@ -2455,7 +2456,8 @@ /* Number of units moved since entering the tile */ rv->frame = (vdir == DIAGDIR_NE || vdir == DIAGDIR_NW) ? TILE_SIZE - pos - 1: pos; - } break; + } + break; default: NOT_REACHED(); } Index: src/train_cmd.cpp =================================================================== --- src/train_cmd.cpp (revision 21532) +++ src/train_cmd.cpp (working copy) @@ -2955,7 +2955,7 @@ ) { /* If next tile is exit of tunnel-bridge do not enter wormhole. * On tunnels and bridges with length 2 we don't enter wormhole. */ - if (!(IsTileType(gp.new_tile, MP_TUNNELBRIDGE)) || GetSlopeZ(gp.x, gp.y) != v->z_pos) { + if (!(IsTileType(gp.new_tile, MP_TUNNELBRIDGE) && GetSlopeZ(gp.x, gp.y) == v->z_pos)) { /* The new tile is not an exit so we enter wormhole. */ v->track = TRACK_BIT_WORMHOLE; v->direction = DiagDirToDir(enterdir); @@ -2965,7 +2965,7 @@ goto enter_wormhole; } } - /* Point where vehicles returns comming out of wormhole + /* Point where vehicles returns coming out of wormhole * v->track is still TRACK_BIT_WORMHOLE. * v->tile and gp.new_tile can be equal in case of train reversing. */ leaving_wormhole: