#include "sst.h"
-static int tryexit(int lookx, int looky, int ienm, int loccom, int irun)
+static bool tryexit(int lookx, int looky, int ienm, int loccom, int irun)
+/* a bad guy attempts to bug out */
{
- int l;
+ int n;
coord iq;
iq.x = game.quadrant.x+(lookx+(QUADSIZE-1))/QUADSIZE - 1;
if (!VALID_QUADRANT(iq.x,iq.y) ||
game.state.galaxy[iq.x][iq.y].supernova ||
game.state.galaxy[iq.x][iq.y].klingons > 8)
- return 0; /* no can do -- neg energy, supernovae, or >8 Klingons */
- if (ienm == IHR) return 0; /* Romulans cannot escape! */
+ return false; /* no can do -- neg energy, supernovae, or >8 Klingons */
+ if (ienm == IHR) return false; /* Romulans cannot escape! */
if (irun == 0) {
/* avoid intruding on another commander's territory */
if (ienm == IHC) {
- for_commanders(l)
- if (same(game.state.kcmdr[l],iq)) return 0;
+ for_commanders(n)
+ if (same(game.state.kcmdr[n],iq)) return false;
/* refuse to leave if currently attacking starbase */
- if (same(game.battle, game.quadrant)) return 0;
+ if (same(game.battle, game.quadrant)) return false;
}
/* don't leave if over 1000 units of energy */
- if (game.kpower[loccom] > 1000.) return 0;
+ if (game.kpower[loccom] > 1000.) return false;
}
/* print escape message and move out of quadrant.
We know this if either short or long range sensors are working */
game.state.kscmdr.y=iq.y;
}
else {
- for_commanders(l) {
- if (same(game.state.kcmdr[l], game.quadrant)) {
- game.state.kcmdr[l]=iq;
+ for_commanders(n) {
+ if (same(game.state.kcmdr[n], game.quadrant)) {
+ game.state.kcmdr[n]=iq;
break;
}
}
game.comhere = 0;
}
- return 1; /* success */
+ return true; /* success */
}
-static void movebaddy(coord com, int loccom, int ienm)
+static void movebaddy(coord com, int loccom, int ienm)
+/* tactical movement for the bad guys */
{
int motion, mdist, nsteps, mx, my, lookx, looky, ll;
coord next;
int irun = 0;
int krawlx, krawly;
- int success;
+ bool success;
int attempts;
/* This should probably be just game.comhere + game.ishere */
int nbaddys = game.skill >= SKILL_EXPERT ?
looky = next.y + my;
krawlx = mx < 0 ? 1 : -1;
krawly = my < 0 ? 1 : -1;
- success = 0;
+ success = false;
attempts = 0; /* Settle mysterious hang problem */
while (attempts++ < 20 && !success) {
if (lookx < 1 || lookx > QUADSIZE) {
}
else break; /* we have failed */
}
- else success = 1;
+ else success = true;
}
if (success) {
next.x = lookx;
}
void movcom(void)
+/* move a commander */
{
coord w;
int i;
sortkl();
}
-static bool movescom(coord iq, int flag, int *ipage)
+static bool movescom(coord iq, bool flag, bool *ipage)
+/* commander movement helper */
{
int i;
return false; /* looks good! */
}
-void scom(int *ipage)
+void scom(bool *ipage)
+/* move the Super Commander */
{
int i, i2, j, ideltax, ideltay, ifindit, iwhichb;
coord iq, sc, ibq;
int basetbl[BASEMAX+1];
double bdist[BASEMAX+1];
- int flag;
+ bool flag;
if (idebug) prout("== SCOM");
}
void movetho(void)
+/* move the Tholian */
{
int idx, idy, im, i;
coord dummy;
void events(void)
{
- int ictbeam=0, ipage=0, istract=0, line, i=0, j, k, l, ixhold=0, iyhold=0;
+ int istract=0, evcode, i=0, j, k, l;
double fintim = game.state.date + game.optime, datemin, xtime, repair, yank=0;
- int radio_was_broken;
+ bool radio_was_broken, ictbeam = false, ipage = false;
struct quadrant *pdest, *q;
coord w, hold;
event *ev, *ev2;
radio_was_broken = (game.damage[DRADIO] != 0.0);
for (;;) {
- /* Select earliest extraneous event, line==0 if no events */
- line = FSPY;
+ /* Select earliest extraneous event, evcode==0 if no events */
+ evcode = FSPY;
if (game.alldone) return;
datemin = fintim;
for (l = 1; l < NEVENTS; l++)
if (game.future[l].date < datemin) {
- line = l;
+ evcode = l;
if (idebug)
- prout("== Event %d fires", line);
+ prout("== Event %d fires", evcode);
datemin = game.future[l].date;
}
xtime = datemin-game.state.date;
prout(_(" The star chart is now up to date.\""));
skip(1);
}
- /* Cause extraneous event LINE to occur */
+ /* Cause extraneous event EVCODE to occur */
game.optime -= xtime;
- switch (line) {
+ switch (evcode) {
case FSNOVA: /* Supernova */
- if (ipage==0) pause_game(1);
- ipage=1;
+ if (!ipage) pause_game(1);
+ ipage=true;
snova(0,0);
schedule(FSNOVA, expran(0.5*game.intime));
if (game.state.galaxy[game.quadrant.x][game.quadrant.y].supernova) return;
}
else return;
case FTBEAM: /* Tractor beam */
- if (line==FTBEAM) {
+ if (evcode==FTBEAM) {
if (game.state.remcom == 0) {
unschedule(FTBEAM);
break;
}
/* tractor beaming cases merge here */
yank = sqrt(yank);
- if (ipage==0) pause_game(1);
- ipage=1;
+ if (!ipage) pause_game(1);
+ ipage=true;
game.optime = (10.0/(7.5*7.5))*yank; /* 7.5 is yank rate (warp 7.5) */
ictbeam = 1;
skip(1);
prout(_("Galileo, left on the planet surface, is well hidden."));
}
}
- if (line==0)
+ if (evcode==0)
game.quadrant = game.state.kscmdr;
else
game.quadrant = game.state.kcmdr[i];
if (game.damage[DRADIO] != 0.0 && game.condit != IHDOCKED)
break; /* No warning :-( */
game.iseenit = 1;
- if (ipage==0) pause_game(1);
- ipage = 1;
+ if (!ipage) pause_game(1);
+ ipage = true;
skip(1);
proutn(_("Lt. Uhura- \"Captain, the starbase in "));
prout(cramlc(quadrant, game.battle));
game.isatb = 2;
if (!game.state.galaxy[game.state.kscmdr.x][game.state.kscmdr.y].starbase)
break; /* WAS RETURN! */
- ixhold = game.battle.x;
- iyhold = game.battle.y;
+ hold = game.battle;
game.battle = game.state.kscmdr;
/* FALL THROUGH */
case FCDBAS: /* Commander succeeds in destroying base */
- if (line==FCDBAS) {
+ if (evcode==FCDBAS) {
unschedule(FCDBAS);
/* find the lucky pair */
for_commanders(i)
else if (game.state.rembase != 1 &&
(game.damage[DRADIO] <= 0.0 || game.condit == IHDOCKED)) {
/* Get word via subspace radio */
- if (ipage==0) pause_game(1);
- ipage = 1;
+ if (!ipage) pause_game(1);
+ ipage = true;
skip(1);
prout(_("Lt. Uhura- \"Captain, Starfleet Command reports that"));
proutn(_(" the starbase in "));
game.state.rembase--;
if (game.isatb == 2) {
/* reinstate a commander's base attack */
- game.battle.x = ixhold;
- game.battle.y = iyhold;
+ game.battle = hold;
game.isatb = 0;
}
else {