]> git.pond.sub.org Git - empserver/commitdiff
(LND_SPY_DETECT_CHANCE): New.
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 9 Nov 2003 12:52:16 +0000 (12:52 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 9 Nov 2003 12:52:16 +0000 (12:52 +0000)
(look_land, sabo, prunits, unitsatxy, lnd_mar_one_sector,
count_sect_units, takeover): Use it.  Closes bug#786369.

include/land.h
src/lib/commands/look.c
src/lib/commands/sabo.c
src/lib/commands/spy.c
src/lib/subs/list.c
src/lib/subs/lndsub.c
src/lib/subs/takeover.c

index 9fe638b6af492fd93f69272b3978c1e2b548eb92..0dbff08315268de76b5ae0175275f5e8f47ff474 100644 (file)
@@ -172,6 +172,9 @@ struct lchrstr {
 #define LND_MXL(b, t) (b)
 #define LND_COST(b, t) ((b) * (1.0 + (sqrt((double)(t)) / 100.0)))
 
+/* Chance to detect L_SPY unit (percent) */
+#define LND_SPY_DETECT_CHANCE(eff) ((110-(eff))/100.0)
+
 #define getland(n, p) \
        ef_read(EF_LAND, n, (caddr_t)p)
 #define putland(n, p) \
index d8e31061ba0fc97c0dfe69c8343a937420fec895..28e08710d7f8cc090b5dfbdd5732c2c791db6ecc 100644 (file)
@@ -258,7 +258,6 @@ look_land(register struct lndstr *lookland)
     int i;
     int dist;
     double techfact(int, double);
-    double odds;
 
     drange = techfact(lookland->lnd_tech, (double)lookland->lnd_spy);
     drange = (drange * ((double)lookland->lnd_effic / 100.0));
@@ -278,8 +277,7 @@ look_land(register struct lndstr *lookland)
               enough not to be seen */
            if (lp->lnd_ship >= 0 || lp->lnd_land >= 0)
                continue;
-           odds = (double)(100 - lp->lnd_effic) + 0.10;
-           if (!(chance(odds)))
+           if (!(chance(LND_SPY_DETECT_CHANCE(lp->lnd_effic))))
                continue;
        }
        vrange = ldround((double)((lp->lnd_vis * range) / 20.0), 1);
index b66eb31c48c2b236bf42b954d1813ea03e681e10..e12faee1d56aa833201d3bbcd29a72fadf69f9e5 100644 (file)
@@ -87,7 +87,7 @@ sabo(void)
        }
        putvar(V_SHELL, vec[I_SHELL] - 1, (s_char *)&land, EF_LAND);
 
-       odds = (100 - land.lnd_effic) / 100.0 + .10;
+       odds = LND_SPY_DETECT_CHANCE(land.lnd_effic);
        if (chance(odds)) {
            wu(0, sect.sct_own,
               "%s spy shot in %s during sabotage attempt.\n",
index 94d9e6df23e3ee1848dda886c6349cbe32a118cc..a8ae160c9083a1304562fdd8a93c5e78fce1d797 100644 (file)
@@ -281,7 +281,6 @@ prunits(int x, int y)
     struct lndstr land;
     struct nstr_item ni;
     s_char report[128];
-    double odds;
 
     snxtitem_xy(&ni, EF_LAND, x, y);
     while (nxtitem(&ni, (s_char *)&land)) {
@@ -291,8 +290,7 @@ prunits(int x, int y)
            continue;
        /* Don't always see spies */
        if (lchr[(int)land.lnd_type].l_flags & L_SPY) {
-           odds = (double)(100 - land.lnd_effic) + 0.10;
-           if (!(chance(odds)))
+           if (!(chance(LND_SPY_DETECT_CHANCE(land.lnd_effic))))
                continue;
        }
        if ((land.lnd_own != player->cnum) && land.lnd_own) {
index f562084aa3b2adc0207da3483884b5d65929c050..ded08d291123316d44207ef022bee1b291b05f0f 100644 (file)
@@ -135,7 +135,6 @@ unitsatxy(coord x, coord y, int wantflags, int nowantflags)
     struct nstr_item ni;
     struct lchrstr *lp;
     struct lndstr land;
-    double odds;
 
     first = 1;
     units = 0;
@@ -158,8 +157,7 @@ unitsatxy(coord x, coord y, int wantflags, int nowantflags)
        }
 
        if (lp->l_flags & L_SPY) {
-           odds = (double)(100 - land.lnd_effic) + 0.10;
-           if (!(chance(odds)))
+           if (!(chance(LND_SPY_DETECT_CHANCE(land.lnd_effic))))
                continue;
        }
 
index 0dfa8af8da49e856ebae58889dba701c5af46547..23fb4844dc95d30d2bbbf4226f75ba1a9b09dd49 100644 (file)
@@ -444,7 +444,6 @@ int
 count_sect_units(struct sctstr *sp)
 {
     int count = 0;
-    double odds;
     struct nstr_item ni;
     struct lndstr land;
 
@@ -456,8 +455,7 @@ count_sect_units(struct sctstr *sp)
            continue;
        /* Don't always see spies */
        if (lchr[(int)land.lnd_type].l_flags & L_SPY) {
-           odds = (double)(100 - land.lnd_effic) + 0.10;
-           if (!(chance(odds)))
+           if (!(chance(LND_SPY_DETECT_CHANCE(land.lnd_effic))))
                continue;
        }
        /* Got here, report it */
@@ -1108,7 +1106,6 @@ lnd_mar_one_sector(struct emp_qelem *list, int dir, natid actor,
     int stop;
     s_char dp[80];
     int rel;
-    double odds;
     int oldown;
 
     if (dir <= DIR_STOP || dir >= DIR_VIEW) {
@@ -1198,8 +1195,7 @@ lnd_mar_one_sector(struct emp_qelem *list, int dir, natid actor,
        }
        if (rel != ALLIED && sect.sct_own != actor && sect.sct_own) {   /* must be a spy */
            /* Always a 10% chance of getting caught. */
-           odds = (100 - llp->land.lnd_effic) + .10;
-           if (chance(odds)) {
+           if (chance(LND_SPY_DETECT_CHANCE(llp->land.lnd_effic))) {
                if (rel == NEUTRAL || rel == FRIENDLY) {
                    wu(0, sect.sct_own,
                       "%s unit spotted in %s\n", cname(player->cnum),
index 000d6b0611b222d543b31704bcbb20b8c487ebb1..3a75716d338974424fc0a52bfe2c77e29e5abe4e 100644 (file)
@@ -61,7 +61,6 @@ takeover(register struct sctstr *sp, natid newown)
     int che_count;
     int oldche;
     int n, vec[I_MAX + 1];
-    double odds;
     struct nstr_item ni;
     struct plnstr p;
     struct lndstr land;
@@ -101,8 +100,7 @@ takeover(register struct sctstr *sp, natid newown)
            continue;
        /* Spies get a chance to hide */
        if (lchr[(int)lp->lnd_type].l_flags & L_SPY) {
-           odds = (double)(100 - lp->lnd_effic) + 0.10;
-           if (!(chance(odds)))
+           if (!(chance(LND_SPY_DETECT_CHANCE(lp->lnd_effic))))
                continue;
        }
        n = lp->lnd_effic - (30 + (random() % 100));