From c2c16e1a0403f0d5c09ca6d88dfea4d285aa0d6d Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 9 Nov 2003 12:52:16 +0000 Subject: [PATCH] (LND_SPY_DETECT_CHANCE): New. (look_land, sabo, prunits, unitsatxy, lnd_mar_one_sector, count_sect_units, takeover): Use it. Closes bug#786369. --- include/land.h | 3 +++ src/lib/commands/look.c | 4 +--- src/lib/commands/sabo.c | 2 +- src/lib/commands/spy.c | 4 +--- src/lib/subs/list.c | 4 +--- src/lib/subs/lndsub.c | 8 ++------ src/lib/subs/takeover.c | 4 +--- 7 files changed, 10 insertions(+), 19 deletions(-) diff --git a/include/land.h b/include/land.h index 9fe638b6..0dbff083 100644 --- a/include/land.h +++ b/include/land.h @@ -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) \ diff --git a/src/lib/commands/look.c b/src/lib/commands/look.c index d8e31061..28e08710 100644 --- a/src/lib/commands/look.c +++ b/src/lib/commands/look.c @@ -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); diff --git a/src/lib/commands/sabo.c b/src/lib/commands/sabo.c index b66eb31c..e12faee1 100644 --- a/src/lib/commands/sabo.c +++ b/src/lib/commands/sabo.c @@ -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", diff --git a/src/lib/commands/spy.c b/src/lib/commands/spy.c index 94d9e6df..a8ae160c 100644 --- a/src/lib/commands/spy.c +++ b/src/lib/commands/spy.c @@ -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) { diff --git a/src/lib/subs/list.c b/src/lib/subs/list.c index f562084a..ded08d29 100644 --- a/src/lib/subs/list.c +++ b/src/lib/subs/list.c @@ -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; } diff --git a/src/lib/subs/lndsub.c b/src/lib/subs/lndsub.c index 0dfa8af8..23fb4844 100644 --- a/src/lib/subs/lndsub.c +++ b/src/lib/subs/lndsub.c @@ -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), diff --git a/src/lib/subs/takeover.c b/src/lib/subs/takeover.c index 000d6b06..3a75716d 100644 --- a/src/lib/subs/takeover.c +++ b/src/lib/subs/takeover.c @@ -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));