# HG changeset patch # User planetmaker # Date 2015-04-11 11:50:02 # Node ID afde426625d7cd11e60a3fcb02d69664fcd43465 # Parent 35d0f5efe64b560e1ec7f5a5405cdb13360bd4af (svn r27225) -Change [FS#6262]: Be more lenient about road stop removal when at least one stop could be removed (afd88) diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2048,8 +2048,10 @@ CommandCost CmdRemoveRoadStop(TileIndex TileArea roadstop_area(tile, width, height); - int quantity = 0; CommandCost cost(EXPENSES_CONSTRUCTION); + CommandCost last_error(STR_ERROR_THERE_IS_NO_STATION); + bool had_success = false; + TILE_AREA_LOOP(cur_tile, roadstop_area) { /* Make sure the specified tile is a road stop of the correct type */ if (!IsTileType(cur_tile, MP_STATION) || !IsRoadStop(cur_tile) || (uint32)GetRoadStopType(cur_tile) != GB(p2, 0, 1)) continue; @@ -2064,10 +2066,13 @@ CommandCost CmdRemoveRoadStop(TileIndex Owner road_owner = GetRoadOwner(cur_tile, ROADTYPE_ROAD); Owner tram_owner = GetRoadOwner(cur_tile, ROADTYPE_TRAM); CommandCost ret = RemoveRoadStop(cur_tile, flags); - if (ret.Failed()) return ret; + if (ret.Failed()) { + last_error = ret; + continue; + } cost.AddCost(ret); - - quantity++; + had_success = true; + /* If the stop was a drive-through stop replace the road */ if ((flags & DC_EXEC) && is_drive_through) { MakeRoadNormal(cur_tile, road_bits, rts, ClosestTownFromTile(cur_tile, UINT_MAX)->index, @@ -2085,9 +2090,7 @@ CommandCost CmdRemoveRoadStop(TileIndex } } - if (quantity == 0) return_cmd_error(STR_ERROR_THERE_IS_NO_STATION); - - return cost; + return had_success ? cost : last_error; } /**