diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 6668b9caf2..b2ef6d0d78 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -464,12 +464,15 @@ Money Aircraft::GetRunningCost() const const Engine *e = this->GetEngine(); uint cost_factor = GetVehicleProperty(this, PROP_AIRCRAFT_RUNNING_COST_FACTOR, e->u.air.running_cost); - /* running costs if in depot -- I haven't gotten this one working yet, can't figure out how to tell if plane is in the depot */ - if (this->current_order.IsType(OT_GOTO_DEPOT)) cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; - - /* running costs if stopped */ - if ((this->cur_speed == 0) && !(this->current_order.IsType(OT_GOTO_DEPOT))) cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; - + if (this->cur_speed == 0) { + if (this->IsInDepot()) { + /* running costs if in depot */ + cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; + } else { + /* running costs if stopped */ + cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; + } + } return GetPrice(PR_RUNNING_AIRCRAFT, cost_factor, e->GetGRF()); } diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index eb2d746f41..f3e99c7f0b 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -2131,11 +2131,15 @@ Money RoadVehicle::GetRunningCost() const uint cost_factor = GetVehicleProperty(this, PROP_ROADVEH_RUNNING_COST_FACTOR, e->u.road.running_cost); if (cost_factor == 0) return 0; - /* running costs if in depot */ - if (IsRoadDepotTile(this->tile)) cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; - - /* running costs if stopped */ - if ((this->cur_speed == 0) && !(IsRoadDepotTile(this->tile))) cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; + if (this->cur_speed == 0) { + if (this->IsInDepot()) { + /* running costs if in depot */ + cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; + } else { + /* running costs if stopped */ + cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; + } + } return GetPrice(e->u.road.running_cost_class, cost_factor, e->GetGRF()); } diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index 8c1aa7135e..e7de6076ac 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -230,11 +230,15 @@ Money Ship::GetRunningCost() const const Engine *e = this->GetEngine(); uint cost_factor = GetVehicleProperty(this, PROP_SHIP_RUNNING_COST_FACTOR, e->u.ship.running_cost); - /* running costs if in depot */ - if (IsShipDepotTile(this->tile)) cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; - - /* running costs if stopped */ - if ((this->cur_speed == 0) && !(IsShipDepotTile(this->tile))) cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; + if (this->cur_speed == 0) { + if (this->IsInDepot()) { + /* running costs if in depot */ + cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; + } else { + /* running costs if stopped */ + cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; + } + }; return GetPrice(PR_RUNNING_SHIP, cost_factor, e->GetGRF()); } diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 9e8039880a..0a572ab817 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -6456,11 +6456,15 @@ Money Train::GetRunningCost() const /* Halve running cost for multiheaded parts */ if (v->IsMultiheaded()) cost_factor /= 2; - /* running costs if in depot */ - if (v->track == TRACK_BIT_DEPOT) cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; - - /* running costs if stopped */ - if ((v->cur_speed == 0) && !(v->track == TRACK_BIT_DEPOT)) cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; + if (this->cur_speed == 0) { + if (this->IsInDepot()) { + /* running costs if in depot */ + cost_factor /= _settings_game.difficulty.vehicle_costs_in_depot; + } else { + /* running costs if stopped */ + cost_factor /= _settings_game.difficulty.vehicle_costs_when_stopped; + } + } cost += GetPrice(e->u.rail.running_cost_class, cost_factor, e->GetGRF()); } while ((v = v->GetNextVehicle()) != nullptr);