diff options
-rw-r--r-- | rail_cmd.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/rail_cmd.c b/rail_cmd.c index 09f61344b..02856ab87 100644 --- a/rail_cmd.c +++ b/rail_cmd.c @@ -403,6 +403,7 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2) uint tileh; TileIndex tile; byte m5; + int32 cost = _price.remove_rail; if (!ValParamTrackOrientation(p2)) return CMD_ERROR; trackbit = TrackToTrackBits(track); @@ -474,12 +475,12 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2) if (!(GetTrackBits(tile) & trackbit)) return CMD_ERROR; - /* don't allow remove if there are signals on the track */ + /* Charge extra to remove signals on the track, if they are there */ if (HasSignalOnTrack(tile, track)) - return CMD_ERROR; + cost += DoCommand(x, y, track, 0, flags, CMD_REMOVE_SIGNALS); if (!(flags & DC_EXEC)) - return _price.remove_rail; + return cost; /* We remove the trackbit here. */ _map5[tile] &= ~trackbit; @@ -502,7 +503,7 @@ skip_mark_dirty:; SetSignalsOnBothDir(tile, track); - return _price.remove_rail; + return cost; } static const struct { |