Fix taxes with non-taxing buildings.

This commit is contained in:
Enno Rehling 2009-07-22 17:55:32 +00:00
parent d5d7797b78
commit 3a74778bba
1 changed files with 29 additions and 2 deletions

View File

@ -3210,6 +3210,33 @@ auto_work(region * r)
}
}
static building *
taxbuilding(const region * r)
{
building *b, *best = NULL;
double maxmoney = 0;
/* durch die verw. von '>' statt '>=' werden die aelteren burgen
* bevorzugt. */
if (r->land && r->land->ownership) {
for (b = rbuildings(r); b; b = b->next) {
if (b->type->taxes && r->land->ownership) {
const attrib * a = a_find(b->attribs, &at_icastle);
if (!a) {
int maxsize = buildingeffsize(b, false);
double money = b->type->taxes(b, maxsize);
if (money>0 && (best==NULL || money > maxmoney)) {
maxmoney = money;
best = b;
}
}
}
}
}
return best;
}
static void
peasant_taxes(region * r)
{
@ -3219,14 +3246,14 @@ peasant_taxes(region * r)
int money;
int maxsize;
int morale;
f = region_get_owner(r);
if (f==NULL) return;
money = rmoney(r);
if (money<=0) return;
b = largestbuilding(r, &is_owner_building, false);
b = taxbuilding(r);
if (b==NULL) return;
u = buildingowner(r, b);