diff options
author | peter1138 <peter1138@openttd.org> | 2008-05-13 20:39:57 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2008-05-13 20:39:57 +0000 |
commit | eb112946a707a0457cecd4cc0b5e2a8c8c5cc33e (patch) | |
tree | eeff2b9982348b174c4e5e2216cb0de7bb5d2b42 /src/train_cmd.cpp | |
parent | 153acec334a3ad4eacc76699f16c30feb7558132 (diff) | |
download | openttd-eb112946a707a0457cecd4cc0b5e2a8c8c5cc33e.tar.xz |
(svn r13074) -Fix: For multiheaded engines, halve power and running cost when used instead of when loading, to allow callback values to work properly.
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r-- | src/train_cmd.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 0ac6f657c..4f7fef012 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -118,6 +118,9 @@ void TrainPowerChanged(Vehicle *v) if (engine_has_power) { uint16 power = GetVehicleProperty(u, 0x0B, rvi_u->power); if (power != 0) { + /* Halve power for multiheaded parts */ + if (IsMultiheaded(u)) power /= 2; + total_power += power; /* Tractive effort in (tonnes * 1000 * 10 =) N */ max_te += (u->u.rail.cached_veh_weight * 10000 * GetVehicleProperty(u, 0x1F, rvi_u->tractive_effort)) / 256; @@ -3499,6 +3502,9 @@ Money Train::GetRunningCost() const byte cost_factor = GetVehicleProperty(v, 0x0D, rvi->running_cost); if (cost_factor == 0) continue; + /* Halve running cost for multiheaded parts */ + if (IsMultiheaded(v)) cost_factor /= 2; + cost += cost_factor * GetPriceByIndex(rvi->running_cost_class); } while ((v = GetNextVehicle(v)) != NULL); |