summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-06-13 09:12:10 +0000
committerrubidium <rubidium@openttd.org>2007-06-13 09:12:10 +0000
commit5eda486f9336b520e0374a200651b05599030b89 (patch)
treee855c9d11b9ad195b591c66487cf1a9eb1fd7d33
parentbfecf0268dd59561ea1698db7d293ec4f1f5e7a0 (diff)
downloadopenttd-5eda486f9336b520e0374a200651b05599030b89.tar.xz
(svn r10131) -Fix [FS#810]: when removing a dock, a ship will always try to reach the old location of the dock even when it cannot anymore because it the old location of the dock is now land instead of water.
-rw-r--r--src/ship_cmd.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp
index 7c08b467a..dd5675800 100644
--- a/src/ship_cmd.cpp
+++ b/src/ship_cmd.cpp
@@ -280,7 +280,8 @@ static void ProcessShipOrder(Vehicle *v)
if (order->type == v->current_order.type &&
order->flags == v->current_order.flags &&
- order->dest == v->current_order.dest)
+ order->dest == v->current_order.dest &&
+ (order->type != OT_GOTO_STATION || GetStation(order->dest)->dock_tile != 0))
return;
v->current_order = *order;
@@ -294,6 +295,8 @@ static void ProcessShipOrder(Vehicle *v)
st = GetStation(order->dest);
if (st->dock_tile != 0) {
v->dest_tile = TILE_ADD(st->dock_tile, ToTileIndexDiff(GetDockOffset(st->dock_tile)));
+ } else {
+ v->cur_order_index++;
}
} else if (order->type == OT_GOTO_DEPOT) {
v->dest_tile = GetDepot(order->dest)->xy;