summaryrefslogtreecommitdiff
path: root/src/order_cmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/order_cmd.cpp')
-rw-r--r--src/order_cmd.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp
index 5f69fcd14..11a968a8f 100644
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -144,10 +144,10 @@ void Order::MakeImplicit(StationID destination)
}
/**
- * Make this depot order also a refit order.
+ * Make this depot/station order also a refit order.
* @param cargo the cargo type to change to.
* @param subtype the subtype to change to.
- * @pre IsType(OT_GOTO_DEPOT).
+ * @pre IsType(OT_GOTO_DEPOT) || IsType(OT_GOTO_STATION).
*/
void Order::SetRefit(CargoID cargo, byte subtype)
{
@@ -1256,6 +1256,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
switch (mof) {
case MOF_NON_STOP:
order->SetNonStopType((OrderNonStopFlags)data);
+ if (data & ONSF_NO_STOP_AT_DESTINATION_STATION) order->SetRefit(CT_NO_REFIT);
break;
case MOF_STOP_LOCATION:
@@ -1268,6 +1269,7 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
case MOF_LOAD:
order->SetLoadType((OrderLoadFlags)data);
+ if (data & OLFB_NO_LOAD) order->SetRefit(CT_NO_REFIT);
break;
case MOF_DEPOT_ACTION: {
@@ -1517,7 +1519,7 @@ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
CargoID cargo = GB(p2, 0, 8);
byte subtype = GB(p2, 8, 8);
- if (cargo >= NUM_CARGO && cargo != CT_NO_REFIT) return CMD_ERROR;
+ if (cargo >= NUM_CARGO && cargo != CT_NO_REFIT && cargo != CT_AUTO_REFIT) return CMD_ERROR;
const Vehicle *v = Vehicle::GetIfValid(veh);
if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR;
@@ -1528,6 +1530,9 @@ CommandCost CmdOrderRefit(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
Order *order = v->GetOrder(order_number);
if (order == NULL) return CMD_ERROR;
+ /* Automatic refit cargo is only supported for goto station orders. */
+ if (cargo == CT_AUTO_REFIT && !order->IsType(OT_GOTO_STATION)) return CMD_ERROR;
+
if (flags & DC_EXEC) {
order->SetRefit(cargo, subtype);