1
0
Fork 0

(svn r23518) -Fix (r23124): [NewGRF] The refit cost callback wasn't called if only the subtype differed.

release/1.2
michi_cc 2011-12-14 22:38:15 +00:00
parent 66d1848f5e
commit caebb5ac63
1 changed files with 9 additions and 11 deletions

View File

@ -228,7 +228,7 @@ static int GetRefitCostFactor(const Vehicle *v, EngineID engine_type, CargoID ne
} }
*auto_refit_allowed = e->info.refit_cost == 0; *auto_refit_allowed = e->info.refit_cost == 0;
return e->info.refit_cost; return (v->cargo_type != new_cid) ? e->info.refit_cost : 0;
} }
/** /**
@ -335,17 +335,15 @@ static CommandCost RefitVehicle(Vehicle *v, bool only_this, uint8 num_vehicles,
v->cargo_type = temp_cid; v->cargo_type = temp_cid;
v->cargo_subtype = temp_subtype; v->cargo_subtype = temp_subtype;
if (new_cid != v->cargo_type) { bool auto_refit_allowed;
bool auto_refit_allowed; CommandCost refit_cost = GetRefitCost(v, v->engine_type, new_cid, new_subtype, &auto_refit_allowed);
CommandCost refit_cost = GetRefitCost(v, v->engine_type, new_cid, new_subtype, &auto_refit_allowed); if (auto_refit && !auto_refit_allowed) {
if (auto_refit && !auto_refit_allowed) { /* Sorry, auto-refitting not allowed, subtract the cargo amount again from the total. */
/* Sorry, auto-refitting not allowed, subtract the cargo amount again from the total. */ total_capacity -= amount;
total_capacity -= amount; total_mail_capacity -= mail_capacity;
total_mail_capacity -= mail_capacity; continue;
continue;
}
cost.AddCost(refit_cost);
} }
cost.AddCost(refit_cost);
if (flags & DC_EXEC) { if (flags & DC_EXEC) {
v->cargo.Truncate((v->cargo_type == new_cid) ? amount : 0); v->cargo.Truncate((v->cargo_type == new_cid) ? amount : 0);