- Код: Выделить всё
--- src_clean/economy.cpp 2008-05-23 22:55:32.000000000 +0700
+++ src/economy.cpp 2008-06-05 21:04:13.000000000 +0700
@@ -1169,27 +1170,28 @@
while (s->cargo_type != CT_INVALID) {
if (++s == endof(_subsidies))
goto no_add;
}
uint max_subsidy_route;
max_subsidy_route = sqrt((MapSize() * .15) / 2);
- max_subsidy_route = (max_subsidy_route > 70) ? max_subsidy_route : 70;
+ uint d = max(MapSizeX(), MapSizeY()) / min(MapSizeX(), MapSizeY());
+ max_subsidy_route = max_subsidy_route * sqrt(d);
n = 1000;
do {
FindSubsidyPassengerRoute(&fr);
- if (fr.distance <= max_subsidy_route) {
+ if (fr.distance <= max(max_subsidy_route, _patches.town_minimum_distance*3)) {
s->cargo_type = CT_PASSENGERS;
s->from = ((Town*)fr.from)->index;
s->to = ((Town*)fr.to)->index;
goto add_subsidy;
}
FindSubsidyCargoRoute(&fr);
- if (fr.distance <= max_subsidy_route) {
+ if (fr.distance <= max(max_subsidy_route, _patches.industry_minimum_distance*3)) {
s->cargo_type = fr.cargo;
s->from = ((Industry*)fr.from)->index;
{
const CargoSpec *cs = GetCargo(fr.cargo);
s->to = (cs->town_effect == TE_GOODS || cs->town_effect == TE_FOOD) ? ((Town*)fr.to)->index : ((Industry*)fr.to)->index;
}
add_subsidy:
Ещё хочу изменить алгоритм субсидий с учетом длины дня, но ещё не додумал - как.
PS: диффил версию 13097.