diff options
-rw-r--r-- | src/vehicle_cmd.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index a22c825c6..0754e581c 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -314,13 +314,15 @@ CommandCost CmdRefitVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint Vehicle *v = Vehicle::GetIfValid(p1); if (v == NULL) return CMD_ERROR; + /* Don't allow disasters and sparks and such to be refitted. + * We cannot check for IsPrimaryVehicle as autoreplace also refits in free wagon chains. */ + if (!IsCompanyBuildableVehicleType(v->type)) return CMD_ERROR; + Vehicle *front = v->First(); CommandCost ret = CheckOwnership(front->owner); if (ret.Failed()) return ret; - /* Don't allow disasters and sparks and such to be refitted. */ - if (!front->IsPrimaryVehicle()) return CMD_ERROR; /* Don't allow shadows and such to be refitted. */ if (v != front && (v->type == VEH_SHIP || v->type == VEH_AIRCRAFT)) return CMD_ERROR; if (!front->IsStoppedInDepot()) return_cmd_error(STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT + front->type); |