summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-09-06 22:05:53 +0000
committersmatz <smatz@openttd.org>2009-09-06 22:05:53 +0000
commite292112319ab55d5dfae43bf73858ca8814b47d4 (patch)
tree2edc958808664dab4918b4a86b426e2b06a61c17
parent25817f1fe7b5cddd2742c59f8f47a0bcf44f8ba7 (diff)
downloadopenttd-e292112319ab55d5dfae43bf73858ca8814b47d4.tar.xz
(svn r17437) -Change: don't accept cargo produced in the same industry (generalise and improve the check used only for valuables)
-rw-r--r--src/economy.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index 6b1ca77ba..0b1fd030e 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -823,10 +823,6 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, C
}
}
- /* zero the distance (thus income) if it's the bank and very short transport. */
- if (_settings_game.game_creation.landscape == LT_TEMPERATE && cs->label == 'VALU' && dist < 10) return 0;
-
-
static const int MIN_TIME_FACTOR = 31;
static const int MAX_TIME_FACTOR = 255;
@@ -861,7 +857,7 @@ static SmallIndustryList _cargo_delivery_destinations;
* @param nun_pieces Amount of cargo delivered
* @return actually accepted pieces of cargo
*/
-static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint num_pieces)
+static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint num_pieces, IndustryID source)
{
/* Find the nearest industrytile to the station sign inside the catchment area, whose industry accepts the cargo.
* This fails in three cases:
@@ -874,6 +870,8 @@ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint n
for (uint i = 0; i < st->industries_near.Length() && num_pieces != 0; i++) {
Industry *ind = st->industries_near[i];
+ if (ind->index == source) continue;
+
const IndustrySpec *indspec = GetIndustrySpec(ind->type);
uint cargo_index;
@@ -929,7 +927,7 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, Ti
if (cs->town_effect == TE_WATER) st->town->new_act_water += num_pieces;
/* Give the goods to the industry. */
- uint accepted = DeliverGoodsToIndustry(st, cargo_type, num_pieces);
+ uint accepted = DeliverGoodsToIndustry(st, cargo_type, num_pieces, src_type == ST_INDUSTRY ? src : INVALID_INDUSTRY);
/* Determine profit */
Money profit = GetTransportedGoodsIncome(accepted, DistanceManhattan(source_tile, st->xy), days_in_transit, cargo_type);