Index: src/rail_cmd.cpp =================================================================== --- src/rail_cmd.cpp (revision 22507) +++ src/rail_cmd.cpp (working copy) @@ -2457,7 +2457,7 @@ TileIndex n = tile + TileDiffXY(0, -1); TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); - if (!IsTileType(n, MP_RAILWAY) || + if ((!IsTileType(n, MP_RAILWAY) && !IsRailWaypointTile(n)) || !IsTileOwner(n, owner) || nrail == TRACK_BIT_UPPER || nrail == TRACK_BIT_LEFT) { @@ -2472,7 +2472,7 @@ TileIndex n = tile + TileDiffXY(0, 1); TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); - if (!IsTileType(n, MP_RAILWAY) || + if ((!IsTileType(n, MP_RAILWAY) && !IsRailWaypointTile(n)) || !IsTileOwner(n, owner) || nrail == TRACK_BIT_LOWER || nrail == TRACK_BIT_RIGHT) { @@ -2488,7 +2488,7 @@ TileIndex n = tile + TileDiffXY(-1, 0); TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); - if (!IsTileType(n, MP_RAILWAY) || + if ((!IsTileType(n, MP_RAILWAY) && !IsRailWaypointTile(n)) || !IsTileOwner(n, owner) || nrail == TRACK_BIT_UPPER || nrail == TRACK_BIT_RIGHT) { @@ -2503,7 +2503,7 @@ TileIndex n = tile + TileDiffXY(1, 0); TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE); - if (!IsTileType(n, MP_RAILWAY) || + if ((!IsTileType(n, MP_RAILWAY) && !IsRailWaypointTile(n)) || !IsTileOwner(n, owner) || nrail == TRACK_BIT_LOWER || nrail == TRACK_BIT_LEFT) { @@ -2886,8 +2886,8 @@ GetTileTrackStatus_Track, // get_tile_track_status_proc ClickTile_Track, // click_tile_proc NULL, // animate_tile_proc - TileLoop_Track, // tile_loop_clear - ChangeTileOwner_Track, // change_tile_owner_clear + TileLoop_Track, // tile_loop_proc + ChangeTileOwner_Track, // change_tile_owner_proc NULL, // add_produced_cargo_proc VehicleEnter_Track, // vehicle_enter_tile_proc GetFoundation_Track, // get_foundation_proc