Index: empserver/include/damage.h --- empserver/include/damage.h 23 Aug 2003 12:19:27 -0000 1.1.1.1 +++ empserver/include/damage.h 20 Jun 2004 15:14:58 -0000 @@ -39,10 +39,10 @@ #define DPERCENT_DAMAGE(x) ((double)(100.0 * (x) / ((x) + 100.0))) #define DMINE_HITCHANCE(x) ((double) ( (x) / ((x)+20.0) ) ) #define DMINE_LHITCHANCE(x) ((double) ( (x) / ((x)+35.0) ) ) -#define MINE_DAMAGE() (22 + random()%21) -#define MINE_LDAMAGE() (10 + random()%11) +#define MINE_DAMAGE() (22 + emp_random()%21) +#define MINE_LDAMAGE() (10 + emp_random()%11) #define DTORP_HITCHANCE(range, vis) ((double)(0.9/((range)+1)+(((vis)<6)?(5-(vis))*0.03:0))) -#define TORP_DAMAGE() (torpedo_damage + (random() % torpedo_damage) + \ - (random() % torpedo_damage)) +#define TORP_DAMAGE() (torpedo_damage + (emp_random() % torpedo_damage) + \ + (emp_random() % torpedo_damage)) #endif /* _DAMAGE_H_ */ Index: empserver/include/prototypes.h --- empserver/include/prototypes.h 16 May 2004 14:19:38 -0000 1.45 +++ empserver/include/prototypes.h 20 Jun 2004 15:14:59 -0000 @@ -219,6 +219,9 @@ #ifdef NOSTRDUP extern char *strdup(char *x); #endif +/* chance.c */ +extern void emp_srandom(unsigned int); +extern long emp_random(void); /* more in misc.h */ /* Index: empserver/src/lib/commands/anti.c --- empserver/src/lib/commands/anti.c 4 Mar 2004 13:49:25 -0000 1.6 +++ empserver/src/lib/commands/anti.c 20 Jun 2004 15:15:00 -0000 @@ -131,7 +131,7 @@ sect.sct_mobil = 0; } sect.sct_loyal = sect.sct_loyal * 0.5; - n_cheleft = (random() % 4); + n_cheleft = (emp_random() % 4); /* 75% chance some che will get left */ if (n_cheleft) { /* Ok, now leave anywhere from 16% to 25% of the che */ Index: empserver/src/lib/commands/laun.c --- empserver/src/lib/commands/laun.c 28 Feb 2004 17:44:02 -0000 1.3 +++ empserver/src/lib/commands/laun.c 20 Jun 2004 15:15:01 -0000 @@ -426,7 +426,7 @@ } i = pp->pln_tech + pp->pln_effic; if (chance(1.0 - (i / (i + 50.0)))) { - dir = (random() % 6) + 1; + dir = (emp_random() % 6) + 1; sx += diroff[dir][0]; sy += diroff[dir][1]; pr("Your trajectory was a little off.\n"); Index: empserver/src/lib/commands/mfir.c --- empserver/src/lib/commands/mfir.c 10 May 2004 19:48:42 -0000 1.13 +++ empserver/src/lib/commands/mfir.c 20 Jun 2004 15:15:02 -0000 @@ -560,18 +560,12 @@ pr("Kaboom!!!\n"); prb = (double)(range2 ? (trange / range2) : 1.0); prb *= prb; -#if !defined(_WIN32) - srandom(random()); -#else - (void)time(&now); - (void)srand(now); -#endif if (chance(prb)) { pr("Wind deflects shell%s.\n", splur(shots)); /* dam = (int)((double)dam / 2.0);*/ dam = (int)((double)dam * - (double)((double)(90 - (random() % 11)) / + (double)((double)(90 - (emp_random() % 11)) / 100.0)); if (dam < 0) dam = 0; Index: empserver/src/lib/commands/new.c --- empserver/src/lib/commands/new.c 5 Mar 2004 12:05:33 -0000 1.13 +++ empserver/src/lib/commands/new.c 20 Jun 2004 15:15:02 -0000 @@ -105,16 +105,10 @@ return RET_SYN; } } else { - (void)time(&now); -#if !defined(_WIN32) - srandom(now); -#else - srand(now); -#endif for (i = 0; i < 300 && !player->aborted; i++) { /* Both x and y should be either odd or even */ - x = (random() % WORLD_X) - (WORLD_X / 2); - y = (((random() % WORLD_Y) - (WORLD_Y / 2)) & ~1) | (x & 1); + x = (emp_random() % WORLD_X) - (WORLD_X / 2); + y = (((emp_random() % WORLD_Y) - (WORLD_Y / 2)) & ~1) | (x & 1); /* * If either of the two potential * sanctuary sectors are already Index: empserver/src/lib/commands/news.c --- empserver/src/lib/commands/news.c 20 Feb 2004 20:34:42 -0000 1.5 +++ empserver/src/lib/commands/news.c 20 Jun 2004 15:15:02 -0000 @@ -187,7 +187,7 @@ /* * vary the order of the printing of "%d times " */ - if ((random() & 3) == 0 && np->nws_ntm > 1) { + if ((emp_random() & 3) == 0 && np->nws_ntm > 1) { sprintf(cp, "%s times ", ptr); cp += strlen(cp); np->nws_ntm = 1; @@ -197,7 +197,7 @@ *cp++ = ' '; if (np->nws_vrb < 1 || np->nws_vrb > N_MAX_VERB) np->nws_vrb = 0; - sprintf(cp, rpt[(int)np->nws_vrb].r_newstory[random() % NUM_RPTS], + sprintf(cp, rpt[(int)np->nws_vrb].r_newstory[emp_random() % NUM_RPTS], cname(np->nws_vno)); cp += strlen(cp); if (np->nws_ntm != 1) { Index: empserver/src/lib/commands/sabo.c --- empserver/src/lib/commands/sabo.c 5 Mar 2004 10:38:58 -0000 1.7 +++ empserver/src/lib/commands/sabo.c 20 Jun 2004 15:15:03 -0000 @@ -86,10 +86,10 @@ dam = landgun(3 * land.lnd_effic, 7); if (sect.sct_item[I_SHELL] > 20) dam += seagun(land.lnd_effic, - random() % (sect.sct_item[I_SHELL] / 10)); + emp_random() % (sect.sct_item[I_SHELL] / 10)); if (sect.sct_item[I_PETROL] > 100) dam += seagun(land.lnd_effic, - random() % (sect.sct_item[I_PETROL] / 50)); + emp_random() % (sect.sct_item[I_PETROL] / 50)); pr("Explosion in %s causes %d damage.\n", xyas(land.lnd_x, land.lnd_y, land.lnd_own), dam); Index: empserver/src/lib/common/damage.c --- empserver/src/lib/common/damage.c 6 Mar 2004 07:16:45 -0000 1.5 +++ empserver/src/lib/common/damage.c 20 Jun 2004 15:15:04 -0000 @@ -179,7 +179,7 @@ return 0; tmp = amt * pct; lost = tmp / 100; - if ((random() % 100) < (tmp % 100)) + if ((emp_random() % 100) < (tmp % 100)) lost++; return amt - lost; } Index: empserver/src/lib/subs/attsub.c --- empserver/src/lib/subs/attsub.c 5 Mar 2004 13:14:28 -0000 1.17 +++ empserver/src/lib/subs/attsub.c 20 Jun 2004 15:15:06 -0000 @@ -1925,12 +1925,12 @@ * recalculate the odds every 8-50 casualties, not every cacsualty, * since a single dead guy normally wouldn't cause a commander to * rethink his strategies, but 50 dead guys might. */ - odds = odds + (double)((double)((random() % 11) - 5) / 100.0); + odds = odds + (double)((double)((emp_random() % 11) - 5) / 100.0); if (odds < 0.0) odds = 0.1; if (odds > 1.0) odds = 1.0; - recalctime = 8 + (random() % 43); + recalctime = 8 + (emp_random() % 43); while (!success && ototal) { if (chance(odds)) { pr("!"); @@ -1946,9 +1946,9 @@ if (((a_cas + d_cas) % 70) == 69) pr("\n"); if (recalctime-- <= 0) { - recalctime = 8 + (random() % 43); + recalctime = 8 + (emp_random() % 43); odds = att_calcodds(ototal, dtotal); - odds = odds + (double)((double)((random() % 11) - 5) / 100.0); + odds = odds + (double)((double)((emp_random() % 11) - 5) / 100.0); if (odds < 0.0) odds = 0.1; if (odds > 1.0) Index: empserver/src/lib/subs/landgun.c --- empserver/src/lib/subs/landgun.c 2 Sep 2003 20:48:48 -0000 1.2 +++ empserver/src/lib/subs/landgun.c 20 Jun 2004 15:15:07 -0000 @@ -43,7 +43,7 @@ double d; double g = (double)min(guns, 7); - d = ((double)(random() % 30) + 20.0) * ((double)g / 7.0); + d = ((double)(emp_random() % 30) + 20.0) * ((double)g / 7.0); d *= ((double)effic); d /= 100.0; return d; @@ -56,7 +56,7 @@ d = 0.0; while (guns--) - d += 10.0 + (double)(random() % 6); + d += 10.0 + (double)(emp_random() % 6); d *= ((double)effic) * 0.01; return d; } @@ -68,7 +68,7 @@ shots = min(shots, guns); while (shots-- > 0) - d += 5.0 + (double)(random() % 6); + d += 5.0 + (double)(emp_random() % 6); d *= ((double)effic) * 0.01; if (shells < ammo && ammo != 0) d *= (double)((double)shells / (double)ammo); Index: empserver/src/lib/subs/shpsub.c --- empserver/src/lib/subs/shpsub.c 16 May 2004 14:19:36 -0000 1.13 +++ empserver/src/lib/subs/shpsub.c 20 Jun 2004 15:15:08 -0000 @@ -766,7 +766,7 @@ nreport(sp->shp_own, N_HIT_MINE, 0, 1); - m = 22.0 + (double)(random() % 21); + m = 22.0 + (double)(emp_random() % 21); if (mcp->m_flags & M_SWEEP) m /= 2.0; Index: empserver/src/lib/subs/takeover.c --- empserver/src/lib/subs/takeover.c 4 Mar 2004 13:49:25 -0000 1.10 +++ empserver/src/lib/subs/takeover.c 20 Jun 2004 15:15:08 -0000 @@ -91,7 +91,7 @@ if (!(chance(LND_SPY_DETECT_CHANCE(lp->lnd_effic)))) continue; } - n = lp->lnd_effic - (30 + (random() % 100)); + n = lp->lnd_effic - (30 + (emp_random() % 100)); if (n < 0) n = 0; lp->lnd_effic = n; @@ -120,7 +120,7 @@ * how spunky are these guys? * n: random number from -25:75 + (50 - loyalty) */ - n = (50 - sp->sct_loyal) + ((random() % 100) - 25); + n = (50 - sp->sct_loyal) + ((emp_random() % 100) - 25); che_count = 0; if (n > 0 && sp->sct_own == sp->sct_oldown) { che_count = (civ * n / 3000) + 5; @@ -178,7 +178,7 @@ * XXX If this was done right, planes could escape, * flying to a nearby friendly airport. */ - n = pp->pln_effic - (30 + (random() % 100)); + n = pp->pln_effic - (30 + (emp_random() % 100)); if (n < 0) n = 0; pp->pln_effic = n; Index: empserver/src/lib/update/human.c --- empserver/src/lib/update/human.c 14 May 2004 20:21:46 -0000 1.11 +++ empserver/src/lib/update/human.c 20 Jun 2004 15:15:09 -0000 @@ -123,7 +123,7 @@ sctwork = 0; } else { if (sp->sct_work < 100) - sctwork = sp->sct_work + 8 + (random() % 15); + sctwork = sp->sct_work + 8 + (emp_random() % 15); if (sctwork > 100) sctwork = 100; if (!player->simulation) @@ -320,5 +320,5 @@ starvation(struct sctstr *sp) { sp->sct_work = 0; - sp->sct_loyal += (random() % 8) + 2; + sp->sct_loyal += (emp_random() % 8) + 2; } Index: empserver/src/lib/update/plague.c --- empserver/src/lib/update/plague.c 11 Mar 2004 18:10:25 -0000 1.8 +++ empserver/src/lib/update/plague.c 20 Jun 2004 15:15:09 -0000 @@ -191,7 +191,7 @@ } if (*ptime <= 0) { *pstage -= 1; - *ptime = (etus / 2) + (random() % etus); + *ptime = (etus / 2) + (emp_random() % etus); } return stage; } Index: empserver/src/lib/update/populace.c --- empserver/src/lib/update/populace.c 10 Mar 2004 17:59:37 -0000 1.3 +++ empserver/src/lib/update/populace.c 20 Jun 2004 15:15:09 -0000 @@ -87,7 +87,7 @@ n = roundavg(etu * 0.125); if (n == 0) n = 1; - n = sp->sct_loyal + (random() % n) + 1; + n = sp->sct_loyal + (emp_random() % n) + 1; if (n > 127) n = 127; sp->sct_loyal = n; @@ -95,7 +95,7 @@ if (sp->sct_loyal > 65 && mil < civ / 20) { int work_red; - work_red = sp->sct_loyal - (50 + (random() % 15)); + work_red = sp->sct_loyal - (50 + (emp_random() % 15)); n = sp->sct_work - work_red; if (n < 0) n = 0; Index: empserver/src/lib/update/revolt.c --- empserver/src/lib/update/revolt.c 5 Mar 2004 10:38:57 -0000 1.10 +++ empserver/src/lib/update/revolt.c 20 Jun 2004 15:15:09 -0000 @@ -70,7 +70,7 @@ che_uw = 0; che_civ = 0; /* che due to civilian unrest */ - n = 10 - (random() % 20); + n = 10 - (emp_random() % 20); che_civ = 3 + (civ * n / 500); if (che_civ < 0) che_civ = 0; @@ -81,7 +81,7 @@ che += che_civ; if (che < CHE_MAX) { /* che due to uw unrest */ - n = 10 + (random() % 30); + n = 10 + (emp_random() % 30); che_uw = 5 + (uw * n / 500); if (che_uw > uw) che_uw = uw; @@ -252,7 +252,7 @@ } if (mil > 0) { /* military won. */ - n = sp->sct_loyal - (random() % 15); + n = sp->sct_loyal - (emp_random() % 15); if (n < 0) n = 0; sp->sct_loyal = n; @@ -271,7 +271,7 @@ * Note this disrupts work in the sector. */ n = 0; - n = (random() % 10) + (random() % che); + n = (emp_random() % 10) + (emp_random() % che); if (n > 100) n = 100; tmp = sp->sct_work - n; @@ -357,14 +357,14 @@ /* loyalty drops during recruitment efforts */ n = sp->sct_loyal; if (n < 30) - n += (random() % 5) + 1; + n += (emp_random() % 5) + 1; else if (n < 70) - n += (random() % 10) + 4; + n += (emp_random() % 10) + 4; if (n > 127) n = 127; sp->sct_loyal = n; if (sp->sct_oldown != sp->sct_own || n > 100) { - n = civ * (random() % 3) / 200; + n = civ * (emp_random() % 3) / 200; n /= hap_fact(tnat, getnatp(sp->sct_oldown)); if (n + che > CHE_MAX) n = CHE_MAX - che; @@ -372,7 +372,7 @@ civ -= n; sp->sct_item[I_CIVIL] = civ; } - n = uw * (random() % 3) / 200; + n = uw * (emp_random() % 3) / 200; if (n + che > CHE_MAX) n = CHE_MAX - che; che += n; @@ -405,7 +405,7 @@ val = roundintby(val, 10); /* inject a modicum of indeterminism; also * avoids che preferring certain directions */ - val += random() % 10 - 5; + val += emp_random() % 10 - 5; if (val >= min_mil) continue; nicest_sp = nsp; Index: empserver/src/util/fairland.c --- empserver/src/util/fairland.c 23 Mar 2004 15:20:17 -0000 1.10 +++ empserver/src/util/fairland.c 20 Jun 2004 15:15:10 -0000 @@ -123,10 +123,10 @@ #define max(a,b) (a>b?a:b) #endif #ifndef SRANDOM -#define SRANDOM srandom +#define SRANDOM srand48 #endif #ifndef RANDOM -#define RANDOM random +#define RANDOM lrand48 #endif #define rnd(x) (RANDOM() % (x)) Index: empserver/src/lib/gen/chance.c --- empserver/src/lib/gen/chance.c 2 Sep 2003 20:48:48 -0000 1.2 +++ empserver/src/lib/gen/chance.c 20 Jun 2004 15:15:05 -0000 @@ -33,30 +33,34 @@ #include "gen.h" -#ifdef hpux +#ifndef RANDOM +#ifdef NOSVIDPRNG +#define RANDOM random +#define SRANDOM srandom +#else /* ! NOSVIDPRNG */ +#define RANDOM lrand48 +#define SRANDOM srand48 +#endif /* ! NOSVIDPRNG */ +#endif /* RANDOM */ + void -srandom(unsigned int n) +emp_srandom(unsigned int n) { - extern void srand48(); - - srand48(n); + SRANDOM(1); } long -random(void) +emp_random(void) { - extern long lrand48(); - - return (lrand48()); /* 5/28/91 by bailey@mcs.kent.edu */ + return (RANDOM()); /* 5/28/91 by bailey@mcs.kent.edu */ } -#endif int chance(double d) { double roll; - roll = (random() & 0x7fff); + roll = (emp_random() & 0x7fff); if (d > roll / 32768.0) return 1; @@ -66,7 +70,7 @@ int roll(int n) { - return (random() % n) + 1; + return (emp_random() % n) + 1; } /* Index: empserver/src/server/main.c --- empserver/src/server/main.c 4 Apr 2004 14:20:30 -0000 1.12 +++ empserver/src/server/main.c 20 Jun 2004 17:38:12 -0000 @@ -205,7 +205,7 @@ #endif /* POSIXSIGNALS */ #endif /* _WIN32 */ empth_init((char **)&player, flags); - srand(time(NULL)); + emp_srandom(time(NULL)); global_init(); shutdown_init(); player_init(); Index: empserver/src/server/update.c --- empserver/src/server/update.c 4 Apr 2004 15:52:24 -0000 1.14 +++ empserver/src/server/update.c 20 Jun 2004 17:38:12 -0000 @@ -64,7 +64,7 @@ time(&now); next_update_time(&now, &update_time, &delta); if (update_window > 0) { - wind = (random() % update_window); + wind = (emp_random() % update_window); update_time += wind; delta += wind; }