(LND_SPY_DETECT_CHANCE): New.

(look_land, sabo, prunits, unitsatxy, lnd_mar_one_sector,
count_sect_units, takeover): Use it.  Closes bug#786369.
This commit is contained in:
Markus Armbruster 2003-11-09 12:52:16 +00:00
parent fc9ec1323a
commit c2c16e1a04
7 changed files with 10 additions and 19 deletions

View 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) \

View 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);

View 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",

View 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) {

View 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;
}

View 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),

View 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));