Fix send vehicle to specific depot allowing incompatible rail types
This commit is contained in:
@@ -3574,7 +3574,8 @@ CommandCost Vehicle::SendToDepot(DoCommandFlag flags, DepotCommand command, Tile
|
|||||||
IsInfraTileUsageAllowed(this->type, this->owner, specific_depot))) {
|
IsInfraTileUsageAllowed(this->type, this->owner, specific_depot))) {
|
||||||
return_cmd_error(no_depot[this->type]);
|
return_cmd_error(no_depot[this->type]);
|
||||||
}
|
}
|
||||||
if (this->type == VEH_ROAD && (GetPresentRoadTypes(tile) & RoadVehicle::From(this)->compatible_roadtypes) == 0) {
|
if ((this->type == VEH_ROAD && (GetPresentRoadTypes(tile) & RoadVehicle::From(this)->compatible_roadtypes) == 0) ||
|
||||||
|
(this->type == VEH_TRAIN && !HasBit(Train::From(this)->compatible_railtypes, GetRailType(tile)))) {
|
||||||
return_cmd_error(no_depot[this->type]);
|
return_cmd_error(no_depot[this->type]);
|
||||||
}
|
}
|
||||||
location = specific_depot;
|
location = specific_depot;
|
||||||
|
@@ -3864,6 +3864,7 @@ public:
|
|||||||
const Vehicle *v = Vehicle::Get(this->window_number);
|
const Vehicle *v = Vehicle::Get(this->window_number);
|
||||||
if (IsDepotTile(tile) && GetDepotVehicleType(tile) == v->type && IsInfraTileUsageAllowed(v->type, v->owner, tile)) {
|
if (IsDepotTile(tile) && GetDepotVehicleType(tile) == v->type && IsInfraTileUsageAllowed(v->type, v->owner, tile)) {
|
||||||
if (v->type == VEH_ROAD && (GetPresentRoadTypes(tile) & RoadVehicle::From(v)->compatible_roadtypes) == 0) return;
|
if (v->type == VEH_ROAD && (GetPresentRoadTypes(tile) & RoadVehicle::From(v)->compatible_roadtypes) == 0) return;
|
||||||
|
if (v->type == VEH_TRAIN && !HasBit(Train::From(v)->compatible_railtypes, GetRailType(tile))) return;
|
||||||
DoCommandP(v->tile, v->index | (this->depot_select_ctrl_pressed ? DEPOT_SERVICE : 0U) | DEPOT_SPECIFIC, tile, GetCmdSendToDepot(v));
|
DoCommandP(v->tile, v->index | (this->depot_select_ctrl_pressed ? DEPOT_SERVICE : 0U) | DEPOT_SPECIFIC, tile, GetCmdSendToDepot(v));
|
||||||
ResetObjectToPlace();
|
ResetObjectToPlace();
|
||||||
this->RaiseButtons();
|
this->RaiseButtons();
|
||||||
|
Reference in New Issue
Block a user