Fix incorrect check preventing ordering road vehicles to incompatible depots
This commit is contained in:
		| @@ -1055,7 +1055,7 @@ CommandCost CmdInsertOrderIntl(DoCommandFlag flags, Vehicle *v, VehicleOrderID s | |||||||
|  |  | ||||||
| 						case VEH_ROAD: | 						case VEH_ROAD: | ||||||
| 							if (!IsRoadDepotTile(dp->xy)) return CMD_ERROR; | 							if (!IsRoadDepotTile(dp->xy)) return CMD_ERROR; | ||||||
| 							if ((GetRoadTypes(dp->xy) & RoadVehicle::From(v)->compatible_roadtypes) == 0) return CMD_ERROR; | 							if ((GetPresentRoadTypes(dp->xy) & RoadVehicle::From(v)->compatible_roadtypes) == 0) return CMD_ERROR; | ||||||
| 							break; | 							break; | ||||||
|  |  | ||||||
| 						case VEH_SHIP: | 						case VEH_SHIP: | ||||||
| @@ -2311,7 +2311,7 @@ CommandCost CmdCloneOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 | |||||||
| 				} | 				} | ||||||
| 				if (OrderGoesToRoadDepot(dst, order)) { | 				if (OrderGoesToRoadDepot(dst, order)) { | ||||||
| 					const Depot *dp = Depot::GetIfValid(order->GetDestination()); | 					const Depot *dp = Depot::GetIfValid(order->GetDestination()); | ||||||
| 					if (!dp || (GetRoadTypes(dp->xy) & RoadVehicle::From(dst)->compatible_roadtypes) == 0) { | 					if (!dp || (GetPresentRoadTypes(dp->xy) & RoadVehicle::From(dst)->compatible_roadtypes) == 0) { | ||||||
| 						return_cmd_error(STR_ERROR_CAN_T_COPY_SHARE_ORDER); | 						return_cmd_error(STR_ERROR_CAN_T_COPY_SHARE_ORDER); | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| @@ -2393,7 +2393,7 @@ CommandCost CmdCloneOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 | |||||||
| 				} | 				} | ||||||
| 				if (OrderGoesToRoadDepot(dst, order)) { | 				if (OrderGoesToRoadDepot(dst, order)) { | ||||||
| 					const Depot *dp = Depot::GetIfValid(order->GetDestination()); | 					const Depot *dp = Depot::GetIfValid(order->GetDestination()); | ||||||
| 					if (!dp || (GetRoadTypes(dp->xy) & RoadVehicle::From(dst)->compatible_roadtypes) == 0) { | 					if (!dp || (GetPresentRoadTypes(dp->xy) & RoadVehicle::From(dst)->compatible_roadtypes) == 0) { | ||||||
| 						return_cmd_error(STR_ERROR_CAN_T_COPY_SHARE_ORDER); | 						return_cmd_error(STR_ERROR_CAN_T_COPY_SHARE_ORDER); | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
|   | |||||||
| @@ -1114,7 +1114,7 @@ static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile) | |||||||
|  |  | ||||||
| 	/* check depot first */ | 	/* check depot first */ | ||||||
| 	if (IsDepotTypeTile(tile, (TransportType)(uint)v->type) && IsInfraTileUsageAllowed(v->type, v->owner, tile)) { | 	if (IsDepotTypeTile(tile, (TransportType)(uint)v->type) && IsInfraTileUsageAllowed(v->type, v->owner, tile)) { | ||||||
| 		if (v->type == VEH_ROAD && ((GetRoadTypes(tile) & RoadVehicle::From(v)->compatible_roadtypes) == 0)) { | 		if (v->type == VEH_ROAD && ((GetPresentRoadTypes(tile) & RoadVehicle::From(v)->compatible_roadtypes) == 0)) { | ||||||
| 			order.Free(); | 			order.Free(); | ||||||
| 			return order; | 			return order; | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -2460,7 +2460,7 @@ public: | |||||||
| 		if (IsDepotTile(tile) && GetDepotVehicleType(tile) == this->vli.vtype) { | 		if (IsDepotTile(tile) && GetDepotVehicleType(tile) == this->vli.vtype) { | ||||||
| 			if (this->vli.type != VL_DEPOT_LIST) return; | 			if (this->vli.type != VL_DEPOT_LIST) return; | ||||||
| 			if (!IsInfraTileUsageAllowed(this->vli.vtype, this->vli.company, tile)) return; | 			if (!IsInfraTileUsageAllowed(this->vli.vtype, this->vli.company, tile)) return; | ||||||
| 			if (this->vli.vtype == VEH_ROAD && GetRoadTypes(Depot::Get(this->vli.index)->xy) != GetRoadTypes(tile)) return; | 			if (this->vli.vtype == VEH_ROAD && GetPresentRoadTypes(Depot::Get(this->vli.index)->xy) != GetRoadTypes(tile)) return; | ||||||
|  |  | ||||||
| 			DestinationID dest = (this->vli.vtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile); | 			DestinationID dest = (this->vli.vtype == VEH_AIRCRAFT) ? GetStationIndex(tile) : GetDepotIndex(tile); | ||||||
| 			DoCommandP(0, this->vli.index | (this->vli.vtype << 16) | (OT_GOTO_DEPOT << 20), dest, CMD_MASS_CHANGE_ORDER); | 			DoCommandP(0, this->vli.index | (this->vli.vtype << 16) | (OT_GOTO_DEPOT << 20), dest, CMD_MASS_CHANGE_ORDER); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jonathan G Rennison
					Jonathan G Rennison