From 072f6d67efbe1b535a5e65c75e8992f7c5b7ae50 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 23 Jan 2011 18:31:04 +0000 Subject: (svn r21904) -Fix: Include the capacity of non-refittable vehicles in the refitted-capacity, if their cargo matches. --- src/vehicle_cmd.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index a083a40a0..fca07e86e 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -270,13 +270,19 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles, if (v->type == VEH_TRAIN && !vehicles_to_refit.Contains(v->index) && !only_this) continue; const Engine *e = Engine::Get(v->engine_type); - if (!e->CanCarryCargo() || !HasBit(e->info.refit_mask, new_cid)) continue; + if (!e->CanCarryCargo()) continue; + + /* If the vehicle is not refittable, count its capacity nevertheless if the cargo matches */ + bool refittable = HasBit(e->info.refit_mask, new_cid); + if (!refittable && v->cargo_type != new_cid) continue; /* Back up the vehicle's cargo type */ CargoID temp_cid = v->cargo_type; byte temp_subtype = v->cargo_subtype; - v->cargo_type = new_cid; - v->cargo_subtype = new_subtype; + if (refittable) { + v->cargo_type = new_cid; + v->cargo_subtype = new_subtype; + } uint16 mail_capacity = 0; uint amount = GetVehicleCapacity(v, &mail_capacity); @@ -284,6 +290,8 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles, /* mail_capacity will always be zero if the vehicle is not an aircraft. */ total_mail_capacity += mail_capacity; + if (!refittable) continue; + /* Restore the original cargo type */ v->cargo_type = temp_cid; v->cargo_subtype = temp_subtype; -- cgit v1.2.3-70-g09d2