"Merkwürdiges Supermegamonster frisst Region leer"
fixed error in mistletoe-zombie creation
This commit is contained in:
Enno Rehling 2008-08-28 19:01:36 +00:00
parent 3c0d17e568
commit 17bcb2d7a7
1 changed files with 31 additions and 36 deletions

View File

@ -225,7 +225,7 @@ void
destroyfaction(faction * f) destroyfaction(faction * f)
{ {
region *rc; region *rc;
unit *u; unit *u = f->units;
faction *ff; faction *ff;
if (!f->alive) return; if (!f->alive) return;
@ -237,48 +237,43 @@ destroyfaction(faction * f)
free(bm); free(bm);
} }
for (u=f->units;u;u=u->nextF) { while (u) {
region * r = u->region;
/* give away your stuff, make zombies if you cannot (quest items) */ /* give away your stuff, make zombies if you cannot (quest items) */
while (u) { int result = gift_items(u, GIFT_FRIENDS|GIFT_PEASANTS);
int result = gift_items(u, GIFT_FRIENDS|GIFT_PEASANTS); if (result!=0) {
if (result!=0) { unit * zombie = u;
unit * zombie = u; u = u->nextF;
u = u->nextF; make_zombie(zombie);
make_zombie(zombie); } else {
} else { region * r = u->region;
break;
}
}
if (u==NULL) continue;
if (!fval(r->terrain, SEA_REGION) && !!playerrace(u->race)) { if (!fval(r->terrain, SEA_REGION) && !!playerrace(u->race)) {
const race * rc = u->race; const race * rc = u->race;
int m = rmoney(u->region); int m = rmoney(r);
if ((rc->ec_flags & ECF_REC_ETHEREAL)==0) { if ((rc->ec_flags & ECF_REC_ETHEREAL)==0) {
int p = rpeasants(u->region); int p = rpeasants(u->region);
int h = rhorses(u->region); int h = rhorses(u->region);
/* Personen gehen nur an die Bauern, wenn sie auch von dort /* Personen gehen nur an die Bauern, wenn sie auch von dort
* stammen */ * stammen */
if (rc->ec_flags & ECF_REC_HORSES) { /* Zentauren an die Pferde */ if (rc->ec_flags & ECF_REC_HORSES) { /* Zentauren an die Pferde */
h += u->number; h += u->number;
} else if (rc == new_race[RC_URUK]){ /* Orks zählen nur zur Hälfte */ } else if (rc == new_race[RC_URUK]){ /* Orks zählen nur zur Hälfte */
p += u->number/2; p += u->number/2;
} else { } else {
p += u->number; p += u->number;
}
h += get_item(u, I_HORSE);
rsetpeasants(r, p);
rsethorses(r, h);
} }
h += get_item(u, I_HORSE); m += get_money(u);
rsetpeasants(r, p); rsetmoney(r, m);
rsethorses(r, h);
} }
m += get_money(u); set_number(u, 0);
rsetmoney(r, m); u=u->nextF;
} }
set_number(u, 0);
} }
f->alive = 0; f->alive = 0;
/* no way! f->units = NULL; */ /* no way! f->units = NULL; */