From: Markus Armbruster Date: Mon, 31 Jan 2011 19:53:44 +0000 (+0100) Subject: Use feels_like_helping() in dosupport(), lnd_support() X-Git-Tag: v4.3.27~152 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=89bc9c4d5b2cfda70494539c0af38ebe3bed50e2 Use feels_like_helping() in dosupport(), lnd_support() feels_like_helping() case cn == foe is missing in the code it replaces. No difference in behavior, because: * cn == foe && cn == friend can't happen. Because you can't get into ground combat against yourself (assault, attack and paradrop don't let you), friend != foe for support. * cn == foe && cn != friend behaves the same: no support. feels_like_helping() returns 0 because of the explicit case. The replaced code doesn't support because cn can't be at war with itself. --- diff --git a/src/lib/subs/lndsub.c b/src/lib/subs/lndsub.c index 1845bdeaa..35ecaec35 100644 --- a/src/lib/subs/lndsub.c +++ b/src/lib/subs/lndsub.c @@ -1068,16 +1068,15 @@ lnd_mar_one_sector(struct emp_qelem *list, int dir, natid actor, } /* - * find all artillery units belonging - * to the attacker or defender that can fire. - * Each arty unit adds +1%/damage point + * Fire land unit support against VICTIM for ATTACKER, at X,Y. + * If DEFENDING, this is defensive support, else offensive support. + * Return total damage. */ int lnd_support(natid victim, natid attacker, coord x, coord y, int defending) { struct nstr_item ni; struct lndstr land; - int rel, rel2; int dam, dam2; int dist; int range; @@ -1087,10 +1086,7 @@ lnd_support(natid victim, natid attacker, coord x, coord y, int defending) while (nxtitem(&ni, &land)) { if ((land.lnd_x == x) && (land.lnd_y == y)) continue; - rel = getrel(getnatp(land.lnd_own), attacker); - rel2 = getrel(getnatp(land.lnd_own), victim); - if ((land.lnd_own != attacker) && - ((rel != ALLIED) || (rel2 != AT_WAR))) + if (!feels_like_helping(land.lnd_own, attacker, victim)) continue; /* are we in range? */ diff --git a/src/lib/subs/mission.c b/src/lib/subs/mission.c index 8b475cc66..ab8e58954 100644 --- a/src/lib/subs/mission.c +++ b/src/lib/subs/mission.c @@ -231,6 +231,11 @@ def_support(coord x, coord y, natid victim, natid actee) return dosupport(x, y, victim, actee, MI_DSUPPORT); } +/* + * Perform support missions in X,Y against VICTIM for ACTEE. + * MISSION is either MI_OSUPPORT or MI_DSUPPORT. + * Return total damage. + */ static int dosupport(coord x, coord y, natid victim, natid actee, int mission) { @@ -243,9 +248,7 @@ dosupport(coord x, coord y, natid victim, natid actee, int mission) memset(mi, 0, sizeof(mi)); act[0] = 0; for (cn = 1; cn < MAXNOC; cn++) { - act[cn] = (cn == actee - || (getrel(getnatp(cn), actee) == ALLIED - && getrel(getnatp(cn), victim) == AT_WAR)); + act[cn] = feels_like_helping(cn, actee, victim); emp_initque((struct emp_qelem *)&mi[cn]); }