Bug in einem der fixes, wurde vom tutorial gefunden.

This commit is contained in:
Enno Rehling 2003-03-26 09:30:32 +00:00
parent 1fc1ee5158
commit ffdb2d8e48
1 changed files with 38 additions and 40 deletions

View File

@ -147,6 +147,9 @@ static void
get_food(region *r) get_food(region *r)
{ {
unit *u; unit *u;
int peasantfood = rpeasants(r)*10;
int bauernblut = 0;
boolean bfind = false;
/* 1. Versorgung von eigenen Einheiten. Das vorhandene Silber /* 1. Versorgung von eigenen Einheiten. Das vorhandene Silber
* wird zunächst so auf die Einheiten aufgeteilt, dass idealerweise * wird zunächst so auf die Einheiten aufgeteilt, dass idealerweise
@ -213,51 +216,46 @@ get_food(region *r)
} }
} }
for (r = regions; r; r = r->next) { for (u = r->units; u; u = u->next) {
int peasantfood = rpeasants(r)*10; if (u->race == new_race[RC_DAEMON]) {
int bauernblut = 0; /* Alles Bauernblut der Region zählen.
boolean bfind = false; * warnung: bauernblut einer partei hilft im moment der anderen
for (u = r->units; u; u = u->next) { * so selten wie das benutzt wird, ist das erstmal wursht,
if (u->race == new_race[RC_DAEMON]) { * aber ein TODO fürs BUGS File.
/* Alles Bauernblut der Region zählen. * Es ist auch deshalb fast egal, weil es ja im Grunde nicht dem Dämon,
* warnung: bauernblut einer partei hilft im moment der anderen * sondern der Region zu gute kommt - und da ist der anwender schnuppe
* so selten wie das benutzt wird, ist das erstmal wursht, */
* aber ein TODO fürs BUGS File. if (!bfind) {
* Es ist auch deshalb fast egal, weil es ja im Grunde nicht dem Dämon, unit * ud = u;
* sondern der Region zu gute kommt - und da ist der anwender schnuppe while (ud) {
*/ attrib * a = a_find(ud->attribs, &at_bauernblut);
if (!bfind) { if (a) bauernblut += a->data.i;
unit * ud = u; do { ud=ud->next; } while (ud && ud->race!=new_race[RC_DAEMON]);
while (ud) {
attrib * a = a_find(ud->attribs, &at_bauernblut);
if (a) bauernblut += a->data.i;
do { ud=ud->next; } while (ud && ud->race!=new_race[RC_DAEMON]);
}
bfind = true;
} }
if (r->planep == NULL || !fval(r->planep, PFL_NOFEED)) { bfind = true;
int demons = u->number; }
if (bauernblut>=demons) { if (r->planep == NULL || !fval(r->planep, PFL_NOFEED)) {
bauernblut -= demons; int demons = u->number;
demons = 0; if (bauernblut>=demons) {
} else if (bauernblut) { bauernblut -= demons;
demons-=bauernblut; demons = 0;
} } else if (bauernblut) {
if (peasantfood>=demons) { demons-=bauernblut;
peasantfood -= demons; }
demons = 0; if (peasantfood>=demons) {
} else { peasantfood -= demons;
demons -= peasantfood; demons = 0;
peasantfood = 0; } else {
} demons -= peasantfood;
if (demons > 0) { peasantfood = 0;
hunger(demons, u); /* nicht gefütterte dämonen hungern */ }
} if (demons > 0) {
hunger(demons, u); /* nicht gefütterte dämonen hungern */
} }
} }
} }
rsetpeasants(r, peasantfood/10);
} }
rsetpeasants(r, peasantfood/10);
/* 3. Von den überlebenden das Geld abziehen: */ /* 3. Von den überlebenden das Geld abziehen: */
for (u = r->units; u; u = u->next) { for (u = r->units; u; u = u->next) {