diff --git a/src/common/kernel/faction.c b/src/common/kernel/faction.c index 083c911b4..849e706ce 100644 --- a/src/common/kernel/faction.c +++ b/src/common/kernel/faction.c @@ -39,36 +39,36 @@ const unit * random_unit_in_faction(const faction *f) { - unit *u; - int c = 0, u_nr; + unit *u; + int c = 0, u_nr; - for(u = f->units; u; u=u->next) c++; + for(u = f->units; u; u=u->next) c++; - u_nr = rand()%c; - c = 0; + u_nr = rand()%c; + c = 0; - for(u = f->units; u; u=u->next) - if(u_nr == c) return u; + for(u = f->units; u; u=u->next) + if(u_nr == c) return u; - /* Hier sollte er nie ankommen */ - return NULL; + /* Hier sollte er nie ankommen */ + return NULL; } const char * factionname(const faction * f) { - typedef char name[OBJECTIDSIZE + 1]; - static name idbuf[8]; - static int nextbuf = 0; + typedef char name[OBJECTIDSIZE + 1]; + static name idbuf[8]; + static int nextbuf = 0; - char *buf = idbuf[(++nextbuf) % 8]; + char *buf = idbuf[(++nextbuf) % 8]; - if (f && f->name) { - sprintf(buf, "%s (%s)", strcheck(f->name, NAMESIZE), itoa36(f->no)); - } else { - sprintf(buf, "Unbekannte Partei (?)"); - } - return buf; + if (f && f->name) { + sprintf(buf, "%s (%s)", strcheck(f->name, NAMESIZE), itoa36(f->no)); + } else { + sprintf(buf, "Unbekannte Partei (?)"); + } + return buf; } void * @@ -81,17 +81,17 @@ resolve_faction(variant id) { static int unused_faction_id(void) { - int id = rand()%MAX_FACTION_ID; + int id = rand()%MAX_FACTION_ID; - while(!faction_id_is_unused(id)) { - id++; if(id == MAX_FACTION_ID) id = 0; - } + while(!faction_id_is_unused(id)) { + id++; if(id == MAX_FACTION_ID) id = 0; + } - return id; + return id; } faction * -addfaction(const char *email, const char * password, +addfaction(const char *email, const char * password, const struct race * frace, const struct locale *loc, int subscription) { @@ -168,153 +168,153 @@ checkpasswd(const faction * f, const char * passwd, boolean shortp) slist = slist->next; } #endif - if (strcasecmp(f->passw, passwd)==0) return true; - if (strcasecmp(f->override, passwd)==0) return true; - return false; + if (strcasecmp(f->passw, passwd)==0) return true; + if (strcasecmp(f->override, passwd)==0) return true; + return false; } void destroyfaction(faction * f) { - region *rc; - unit *u; - faction *ff; + region *rc; + unit *u; + faction *ff; - if (!f->alive) return; + if (!f->alive) return; while (f->battles) { struct bmsg * bm = f->battles; f->battles = bm->next; - free_messagelist(bm->msgs); + if (bm->msgs) free_messagelist(bm->msgs); free(bm); } - for (u=f->units;u;u=u->nextF) { - region * r = u->region; - unit * au; - int number = 0; - struct friend { - struct friend * next; - int number; - faction * faction; - unit * unit; - } * friends = NULL; - for (au=r->units;au;au=au->next) if (au->faction!=f) { - if (alliedunit(u, au->faction, HELP_ALL)) { - struct friend * nf, ** fr = &friends; + for (u=f->units;u;u=u->nextF) { + region * r = u->region; + unit * au; + int number = 0; + struct friend { + struct friend * next; + int number; + faction * faction; + unit * unit; + } * friends = NULL; + for (au=r->units;au;au=au->next) if (au->faction!=f) { + if (alliedunit(u, au->faction, HELP_ALL)) { + struct friend * nf, ** fr = &friends; - while (*fr && (*fr)->faction->nofaction->no) fr = &(*fr)->next; - nf = *fr; - if (nf==NULL || nf->faction!=au->faction) { - nf = calloc(sizeof(struct friend), 1); - nf->next = *fr; - nf->faction = au->faction; - nf->unit = au; - *fr = nf; - } - nf->number += au->number; - number += au->number; - } - } - if (friends && number) { - struct friend * nf = friends; - while (nf) { - unit * u2 = nf->unit; + while (*fr && (*fr)->faction->nofaction->no) fr = &(*fr)->next; + nf = *fr; + if (nf==NULL || nf->faction!=au->faction) { + nf = calloc(sizeof(struct friend), 1); + nf->next = *fr; + nf->faction = au->faction; + nf->unit = au; + *fr = nf; + } + nf->number += au->number; + number += au->number; + } + } + if (friends && number) { + struct friend * nf = friends; + while (nf) { + unit * u2 = nf->unit; #ifdef NEW_ITEMS - item * itm = u->items; - while(itm){ - const item_type * itype = itm->type; - item * itn = itm->next; - int n = itm->number; - n = n * nf->number / number; - if (n>0) { - i_change(&u->items, itype, -n); - i_change(&u2->items, itype, n); - } - itm = itn; - } + item * itm = u->items; + while(itm){ + const item_type * itype = itm->type; + item * itn = itm->next; + int n = itm->number; + n = n * nf->number / number; + if (n>0) { + i_change(&u->items, itype, -n); + i_change(&u2->items, itype, n); + } + itm = itn; + } #else - resource_t res; - for (res = 0; res <= R_SILVER; ++res) { - int n = get_resource(u, res); - if (n<=0) continue; - n = n * nf->number / number; - if (n<=0) continue; - change_resource(u, res, -n); - change_resource(u2, res, n); - } + resource_t res; + for (res = 0; res <= R_SILVER; ++res) { + int n = get_resource(u, res); + if (n<=0) continue; + n = n * nf->number / number; + if (n<=0) continue; + change_resource(u, res, -n); + change_resource(u2, res, n); + } #endif - number -= nf->number; - nf = nf->next; - free(friends); - friends = nf; - } - friends = NULL; - } - if (rterrain(r) != T_OCEAN && !!playerrace(u->race)) { - const race * rc = u->race; - int p = rpeasants(u->region); - int m = rmoney(u->region); - int h = rhorses(u->region); + number -= nf->number; + nf = nf->next; + free(friends); + friends = nf; + } + friends = NULL; + } + if (rterrain(r) != T_OCEAN && !!playerrace(u->race)) { + const race * rc = u->race; + int p = rpeasants(u->region); + int m = rmoney(u->region); + int h = rhorses(u->region); - /* Personen gehen nur an die Bauern, wenn sie auch von dort - * stammen */ - if ((rc->ec_flags & ECF_REC_UNLIMITED)==0) { - if (rc->ec_flags & ECF_REC_HORSES) { /* Zentauren an die Pferde */ - h += u->number; - } else if (rc == new_race[RC_URUK]){ /* Orks zählen nur zur Hälfte */ - p += u->number/2; - } else { - p += u->number; - } - } - m += get_money(u); - h += get_item(u, I_HORSE); - rsetpeasants(r, p); - rsethorses(r, h); - rsetmoney(r, m); + /* Personen gehen nur an die Bauern, wenn sie auch von dort + * stammen */ + if ((rc->ec_flags & ECF_REC_UNLIMITED)==0) { + if (rc->ec_flags & ECF_REC_HORSES) { /* Zentauren an die Pferde */ + h += u->number; + } else if (rc == new_race[RC_URUK]){ /* Orks zählen nur zur Hälfte */ + p += u->number/2; + } else { + p += u->number; + } + } + m += get_money(u); + h += get_item(u, I_HORSE); + rsetpeasants(r, p); + rsethorses(r, h); + rsetmoney(r, m); - } - set_number(u, 0); - } - f->alive = 0; -/* no way! f->units = NULL; */ - handle_event(&f->attribs, "destroy", f); - for (ff = factions; ff; ff = ff->next) { - group *g; - ally *sf, *sfn; + } + set_number(u, 0); + } + f->alive = 0; +/* no way! f->units = NULL; */ + handle_event(&f->attribs, "destroy", f); + for (ff = factions; ff; ff = ff->next) { + group *g; + ally *sf, *sfn; - /* Alle HELFE für die Partei löschen */ - for (sf = ff->allies; sf; sf = sf->next) { - if (sf->faction == f) { - removelist(&ff->allies, sf); - break; - } - } - for(g=ff->groups; g; g=g->next) { - for (sf = g->allies; sf;) { - sfn = sf->next; - if (sf->faction == f) { - removelist(&g->allies, sf); - break; - } - sf = sfn; - } - } - } + /* Alle HELFE für die Partei löschen */ + for (sf = ff->allies; sf; sf = sf->next) { + if (sf->faction == f) { + removelist(&ff->allies, sf); + break; + } + } + for(g=ff->groups; g; g=g->next) { + for (sf = g->allies; sf;) { + sfn = sf->next; + if (sf->faction == f) { + removelist(&g->allies, sf); + break; + } + sf = sfn; + } + } + } - /* units of other factions that were disguised as this faction - * have their disguise replaced by ordinary faction hiding. */ - for (rc=regions; rc; rc=rc->next) { - for(u=rc->units; u; u=u->next) { - attrib *a = a_find(u->attribs, &at_otherfaction); - if(!a) continue; - if (get_otherfaction(a) == f) { - a_removeall(&u->attribs, &at_otherfaction); - fset(u, UFL_PARTEITARNUNG); - } - } - } + /* units of other factions that were disguised as this faction + * have their disguise replaced by ordinary faction hiding. */ + for (rc=regions; rc; rc=rc->next) { + for(u=rc->units; u; u=u->next) { + attrib *a = a_find(u->attribs, &at_otherfaction); + if(!a) continue; + if (get_otherfaction(a) == f) { + a_removeall(&u->attribs, &at_otherfaction); + fset(u, UFL_PARTEITARNUNG); + } + } + } } int @@ -350,7 +350,7 @@ set_alliance(faction * a, faction * b, int status) } #ifdef SMART_INTERVALS -void +void update_interval(struct faction * f, struct region * r) { if (r==NULL || f==NULL) return;