forked from github/server
- falsches flag gesetzt
- join_allies ordentlich formatiert
This commit is contained in:
parent
a240be83a2
commit
0145b78d88
|
@ -3290,74 +3290,72 @@ battle_report(battle * b)
|
||||||
static void
|
static void
|
||||||
join_allies(battle * b)
|
join_allies(battle * b)
|
||||||
{
|
{
|
||||||
region * r = b->region;
|
region * r = b->region;
|
||||||
unit * u;
|
unit * u;
|
||||||
/* Die Anzahl der Teilnehmer kann sich in dieser Routine ändern.
|
/* Die Anzahl der Teilnehmer kann sich in dieser Routine ändern.
|
||||||
* Deshalb muß das Ende des Vektors vorher gemerkt werden, damit
|
* Deshalb muß das Ende des Vektors vorher gemerkt werden, damit
|
||||||
* neue Parteien nicht mit betrachtet werden:
|
* neue Parteien nicht mit betrachtet werden:
|
||||||
*/
|
*/
|
||||||
int size = cv_size(&b->sides);
|
int size = cv_size(&b->sides);
|
||||||
for (u=r->units;u;u=u->next)
|
for (u=r->units;u;u=u->next)
|
||||||
/* Was ist mit Schiffen? */
|
/* Was ist mit Schiffen? */
|
||||||
if (u->status != ST_FLEE && u->status != ST_AVOID && !fval(u, UFL_LONGACTION) && u->number > 0)
|
if (u->status != ST_FLEE && u->status != ST_AVOID && !fval(u, UFL_LONGACTION) && u->number > 0)
|
||||||
{
|
{
|
||||||
int si;
|
int si;
|
||||||
faction * f = u->faction;
|
faction * f = u->faction;
|
||||||
fighter * c = NULL;
|
fighter * c = NULL;
|
||||||
for (si = 0; si != size; ++si) {
|
for (si = 0; si != size; ++si) {
|
||||||
int se;
|
int se;
|
||||||
side *s = b->sides.begin[si];
|
side *s = b->sides.begin[si];
|
||||||
/* Wenn alle attackierten noch FFL_NOAID haben, dann kämpfe nicht mit. */
|
/* Wenn alle attackierten noch FFL_NOAID haben, dann kämpfe nicht mit. */
|
||||||
if (fval(s->bf->faction, FFL_NOAID)) continue;
|
if (fval(s->bf->faction, FFL_NOAID)) continue;
|
||||||
if (s->bf->faction!=f) {
|
if (s->bf->faction!=f) {
|
||||||
/* Wenn wir attackiert haben, kommt niemand mehr hinzu: */
|
/* Wenn wir attackiert haben, kommt niemand mehr hinzu: */
|
||||||
if (s->bf->attacker) continue;
|
if (s->bf->attacker) continue;
|
||||||
/* Wenn alliierte attackiert haben, helfen wir nicht mit: */
|
/* alliiert müssen wir schon sein, sonst ist's eh egal : */
|
||||||
if (s->bf->faction!=f && s->bf->attacker) continue;
|
if (!alliedunit(u, s->bf->faction, HELP_FIGHT)) continue;
|
||||||
/* alliiert müssen wir schon sein, sonst ist's eh egal : */
|
/* wenn die partei verborgen ist, oder gar eine andere
|
||||||
if (!alliedunit(u, s->bf->faction, HELP_FIGHT)) continue;
|
* vorgespiegelt wird, und er sich uns gegenüber nicht zu
|
||||||
/* wenn die partei verborgen ist, oder gar eine andere
|
* erkennen gibt, helfen wir ihm nicht */
|
||||||
* vorgespiegelt wird, und er sich uns gegenüber nicht zu
|
if (s->stealthfaction){
|
||||||
* erkennen gibt, helfen wir ihm nicht */
|
if(!allysfm(s, u->faction, HELP_FSTEALTH)) {
|
||||||
if (s->stealthfaction){
|
continue;
|
||||||
if(!allysfm(s, u->faction, HELP_FSTEALTH)) {
|
}
|
||||||
continue;
|
}
|
||||||
}
|
}
|
||||||
}
|
/* einen alliierten angreifen dürfen sie nicht, es sei denn, der
|
||||||
}
|
* ist mit einem alliierten verfeindet, der nicht attackiert
|
||||||
/* einen alliierten angreifen dürfen sie nicht, es sei denn, der
|
* hat: */
|
||||||
* ist mit einem alliierten verfeindet, der nicht attackiert
|
for (se = 0; se != size; ++se) {
|
||||||
* hat: */
|
side * evil = b->sides.begin[se];
|
||||||
for (se = 0; se != size; ++se) {
|
if (u->faction==evil->bf->faction) continue;
|
||||||
side * evil = b->sides.begin[se];
|
if (alliedunit(u, evil->bf->faction, HELP_FIGHT) &&
|
||||||
if (u->faction==evil->bf->faction) continue;
|
!evil->bf->attacker) continue;
|
||||||
if (alliedunit(u, evil->bf->faction, HELP_FIGHT) &&
|
if (enemy(s, evil)) break;
|
||||||
!evil->bf->attacker) continue;
|
}
|
||||||
if (enemy(s, evil)) break;
|
if (se==size) continue;
|
||||||
}
|
/* Wenn die Einheit belagert ist, muß auch einer der Alliierten belagert sein: */
|
||||||
if (se==size) continue;
|
if (besieged(u)) {
|
||||||
/* Wenn die Einheit belagert ist, muß auch einer der Alliierten belagert sein: */
|
void ** fi;
|
||||||
if (besieged(u)) {
|
boolean siege = false;
|
||||||
void ** fi;
|
for (fi = s->fighters.begin; !siege && fi != s->fighters.end; ++fi) {
|
||||||
boolean siege = false;
|
fighter *ally = *fi;
|
||||||
for (fi = s->fighters.begin; !siege && fi != s->fighters.end; ++fi) {
|
if (besieged(ally->unit)) siege = true;
|
||||||
fighter *ally = *fi;
|
}
|
||||||
if (besieged(ally->unit)) siege = true;
|
if (!siege) continue;
|
||||||
}
|
}
|
||||||
if (!siege) continue;
|
/* keine Einwände, also soll er mitmachen: */
|
||||||
}
|
if (!c) c = join_battle(b, u, false);
|
||||||
/* keine Einwände, also soll er mitmachen: */
|
if (!c) continue;
|
||||||
if (!c) c = join_battle(b, u, false);
|
/* Die Feinde meiner Freunde sind meine Feinde: */
|
||||||
if (!c) continue;
|
for (se = 0; se != size; ++se) {
|
||||||
/* Die Feinde meiner Freunde sind meine Feinde: */
|
side * evil = b->sides.begin[se];
|
||||||
for (se = 0; se != size; ++se) {
|
if (evil->bf->faction!=u->faction && enemy(s, evil)) {
|
||||||
side * evil = b->sides.begin[se];
|
set_enemy(evil, c->side, false);
|
||||||
if (evil->bf->faction!=u->faction && enemy(s, evil)) {
|
}
|
||||||
set_enemy(evil, c->side, false);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern struct item_type * i_silver;
|
extern struct item_type * i_silver;
|
||||||
|
|
|
@ -117,8 +117,8 @@ faction_setpolicy(faction& a, faction& b, const char * flag, bool value)
|
||||||
|
|
||||||
for (mode=0;helpmodes[mode].name!=NULL;++mode) {
|
for (mode=0;helpmodes[mode].name!=NULL;++mode) {
|
||||||
if (strcmp(flag, helpmodes[mode].name)==0) {
|
if (strcmp(flag, helpmodes[mode].name)==0) {
|
||||||
if (value) set_alliance(&a, &b, get_alliance(&a, &b) | mode);
|
if (value) set_alliance(&a, &b, get_alliance(&a, &b) | helpmodes[mode].status);
|
||||||
else set_alliance(&a, &b, get_alliance(&a, &b) & ~mode);
|
else set_alliance(&a, &b, get_alliance(&a, &b) & ~helpmodes[mode].status);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue