diff options
-rw-r--r-- | lang/english.txt | 2 | ||||
-rw-r--r-- | station_cmd.c | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/lang/english.txt b/lang/english.txt index 04271e675..9d9f8916b 100644 --- a/lang/english.txt +++ b/lang/english.txt @@ -1140,6 +1140,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Can't build locks here... STR_BUILD_LOCKS_TIP :{BLACK}Build locks STR_LANDINFO_LOCK :Lock +STR_BUOY_IS_IN_USE :{WHITE}... buoy is in use! + STR_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUMU16}x{NUMU16} ({STRING}) STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station... diff --git a/station_cmd.c b/station_cmd.c index fe990857a..091205e0e 100644 --- a/station_cmd.c +++ b/station_cmd.c @@ -1751,6 +1751,23 @@ int32 CmdBuildBuoy(int x, int y, uint32 flags, uint32 p1, uint32 p2) return _price.build_dock; } +/* Checks if any ship is servicing the buoy specified. Returns yes or no */ +static bool CheckShipsOnBuoy(Station *st) +{ + const Vehicle *v; + FOR_ALL_VEHICLES(v) { + if (v->type == VEH_Ship) { + const Order *order; + FOR_VEHICLE_ORDERS(v, order) { + if (order->type == OT_GOTO_STATION && order->station == st->index) { + return true; + } + } + } + } + return false; +} + static int32 RemoveBuoy(Station *st, uint32 flags) { uint tile; @@ -1762,6 +1779,9 @@ static int32 RemoveBuoy(Station *st, uint32 flags) tile = st->dock_tile; + if (CheckShipsOnBuoy(st)) + return_cmd_error(STR_BUOY_IS_IN_USE); + if (!EnsureNoVehicle(tile)) return CMD_ERROR; |