From e3730bb826efe601fe51626aab064d395733d4c3 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Thu, 14 Sep 2006 20:42:27 +0000 Subject: [PATCH] Eliminate nasty macro holdovers. All game structure members are now referred to by full name. Also, one more minor step in making xio work. --- src/Makefile.am | 4 + src/Makefile.in | 4 + src/ai.c | 216 +++++++++++++------------- src/battle.c | 310 ++++++++++++++++++------------------- src/events.c | 328 +++++++++++++++++++-------------------- src/finish.c | 80 +++++----- src/io.c | 6 +- src/moving.c | 396 ++++++++++++++++++++++++------------------------ src/planets.c | 162 ++++++++++---------- src/reports.c | 146 +++++++++--------- src/setup.c | 374 ++++++++++++++++++++++----------------------- src/sst.c | 80 +++++----- src/sst.h | 273 +++++++++++---------------------- src/xio.c | 2 - 14 files changed, 1149 insertions(+), 1232 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 2249438..2959ff1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,3 +19,7 @@ sst_SOURCES = \ EXTRA_DIST = \ sst.h \ sstlinux.h + +# Experimental XaW code, not yet integrated with the game +xio: xio.o + gcc xio.c -lXaw3d -o xio diff --git a/src/Makefile.in b/src/Makefile.in index 95a9820..2d5b8ae 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -467,6 +467,10 @@ uninstall-am: uninstall-binPROGRAMS uninstall-info-am tags uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-info-am + +# Experimental XaW code, not yet integrated with the game +xio: xio.o + gcc xio.c -lXaw3d -o xio # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/src/ai.c b/src/ai.c index a1b4bbf..25d5827 100644 --- a/src/ai.c +++ b/src/ai.c @@ -4,8 +4,8 @@ static int tryexit(int lookx, int looky, int ienm, int loccom, int irun) { int iqx, iqy, l; - iqx = quadx+(lookx+(QUADSIZE-1))/QUADSIZE - 1; - iqy = quady+(looky+(QUADSIZE-1))/QUADSIZE - 1; + iqx = game.quadx+(lookx+(QUADSIZE-1))/QUADSIZE - 1; + iqy = game.quady+(looky+(QUADSIZE-1))/QUADSIZE - 1; if (!VALID_QUADRANT(iqx,iqy) || game.state.galaxy[iqx][iqy].supernova || game.state.galaxy[iqx][iqy].klingons > 8) @@ -17,7 +17,7 @@ static int tryexit(int lookx, int looky, int ienm, int loccom, int irun) for_commanders(l) if (game.state.cx[l]==iqx && game.state.cy[l]==iqy) return 0; /* refuse to leave if currently attacking starbase */ - if (batx==quadx && baty==quady) return 0; + if (game.batx==game.quadx && game.baty==game.quady) return 0; } /* don't leave if over 1000 units of energy */ if (game.kpower[loccom] > 1000.) return 0; @@ -25,29 +25,29 @@ static int tryexit(int lookx, int looky, int ienm, int loccom, int irun) /* print escape message and move out of quadrant. We know this if either short or long range sensors are working */ if (game.damage[DSRSENS] == 0.0 || game.damage[DLRSENS] == 0.0 || - condit == IHDOCKED) { + game.condit == IHDOCKED) { crmena(1, ienm, 2, game.kx[loccom], game.ky[loccom]); prout(" escapes to %s (and regains strength).", cramlc(quadrant, iqx, iqy)); } /* handle local matters related to escape */ game.quad[game.kx[loccom]][game.ky[loccom]] = IHDOT; - game.kx[loccom] = game.kx[nenhere]; - game.ky[loccom] = game.ky[nenhere]; - game.kavgd[loccom] = game.kavgd[nenhere]; - game.kpower[loccom] = game.kpower[nenhere]; - game.kdist[loccom] = game.kdist[nenhere]; - klhere--; - nenhere--; - if (condit != IHDOCKED) newcnd(); + game.kx[loccom] = game.kx[game.nenhere]; + game.ky[loccom] = game.ky[game.nenhere]; + game.kavgd[loccom] = game.kavgd[game.nenhere]; + game.kpower[loccom] = game.kpower[game.nenhere]; + game.kdist[loccom] = game.kdist[game.nenhere]; + game.klhere--; + game.nenhere--; + if (game.condit != IHDOCKED) newcnd(); /* Handle global matters related to escape */ - game.state.galaxy[quadx][quady].klingons--; + game.state.galaxy[game.quadx][game.quady].klingons--; game.state.galaxy[iqx][iqy].klingons++; if (ienm==IHS) { - ishere=0; - iscate=0; - ientesc=0; - isatb=0; + game.ishere=0; + game.iscate=0; + game.ientesc=0; + game.isatb=0; game.future[FSCMOVE]=0.2777+game.state.date; game.future[FSCDBAS]=FOREVER; game.state.isx=iqx; @@ -55,13 +55,13 @@ static int tryexit(int lookx, int looky, int ienm, int loccom, int irun) } else { for_commanders(l) { - if (game.state.cx[l]==quadx && game.state.cy[l]==quady) { + if (game.state.cx[l]==game.quadx && game.state.cy[l]==game.quady) { game.state.cx[l]=iqx; game.state.cy[l]=iqy; break; } } - comhere = 0; + game.comhere = 0; } return 1; /* success */ } @@ -74,10 +74,10 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) int krawlx, krawly; int success; int attempts; - /* This should probably be just comhere + ishere */ - int nbaddys = skill >= SKILL_EXPERT ? - (int)((comhere*2 + ishere*2+klhere*1.23+irhere*1.5)/2.0): - (comhere + ishere); + /* This should probably be just game.comhere + game.ishere */ + int nbaddys = game.skill >= SKILL_EXPERT ? + (int)((game.comhere*2 + game.ishere*2+game.klhere*1.23+game.irhere*1.5)/2.0): + (game.comhere + game.ishere); double dist1, forces; dist1 = game.kdist[loccom]; @@ -85,7 +85,7 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) /* If SC, check with spy to see if should hi-tail it */ if (ienm==IHS && - (game.kpower[loccom] <= 500.0 || (condit==IHDOCKED && game.damage[DPHOTON]==0))) { + (game.kpower[loccom] <= 500.0 || (game.condit==IHDOCKED && game.damage[DPHOTON]==0))) { irun = 1; motion = -QUADSIZE; } @@ -123,39 +123,39 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) advantage with a 650 advantage being to hold ground, 800 to move forward 1, 950 for two, 150 for back 4, etc. Variance of 100. - If docked, is reduced by roughly 1.75*skill, generally forcing a + If docked, is reduced by roughly 1.75*game.skill, generally forcing a retreat, especially at high skill levels. * Motion is limited to skill level, except for SC hi-tailing it out. */ - forces = game.kpower[loccom]+100.0*nenhere+400*(nbaddys-1); - if (shldup==0) forces += 1000; /* Good for enemy if shield is down! */ + forces = game.kpower[loccom]+100.0*game.nenhere+400*(nbaddys-1); + if (game.shldup==0) forces += 1000; /* Good for enemy if shield is down! */ if (game.damage[DPHASER] == 0.0 || game.damage[DPHOTON] == 0.0) { if (game.damage[DPHASER] != 0) /* phasers damaged */ forces += 300.0; else - forces -= 0.2*(energy - 2500.0); + forces -= 0.2*(game.energy - 2500.0); if (game.damage[DPHOTON] != 0) /* photon torpedoes damaged */ forces += 300.0; else - forces -= 50.0*torps; + forces -= 50.0*game.torps; } else { /* phasers and photon tubes both out! */ forces += 1000.0; } motion = 0; - if (forces <= 1000.0 && condit != IHDOCKED) /* Typical situation */ + if (forces <= 1000.0 && game.condit != IHDOCKED) /* Typical situation */ motion = ((forces+200.0*Rand())/150.0) - 5.0; else { if (forces > 1000.0) /* Very strong -- move in for kill */ motion = (1.0-square(Rand()))*dist1 + 1.0; - if (condit==IHDOCKED && (game.options & OPTION_BASE)) /* protected by base -- back off ! */ - motion -= skill*(2.0-square(Rand())); + if (game.condit==IHDOCKED && (game.options & OPTION_BASE)) /* protected by base -- back off ! */ + motion -= game.skill*(2.0-square(Rand())); } #ifdef DEBUG - if (idebug) { + if (game.idebug) { proutn("MOTION = %1.2f", motion); proutn(" FORCES = %1,2f", forces); } @@ -163,7 +163,7 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) /* don't move if no motion */ if (motion==0) return; /* Limit motion according to skill */ - if (abs(motion) > skill) motion = (motion < 0) ? -skill : skill; + if (abs(motion) > game.skill) motion = (motion < 0) ? -game.skill : game.skill; } /* calculate preferred number of steps */ nsteps = motion < 0 ? -motion : motion; @@ -171,15 +171,15 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) if (nsteps > QUADSIZE) nsteps = QUADSIZE; /* This shouldn't be necessary */ if (nsteps < 1) nsteps = 1; /* This shouldn't be necessary */ #ifdef DEBUG - if (idebug) { + if (game.idebug) { prout("NSTEPS = %d", nsteps); } #endif /* Compute preferred values of delta X and Y */ - mx = sectx - comx; - my = secty - comy; + mx = game.sectx - comx; + my = game.secty - comy; if (2.0 * abs(mx) < abs(my)) mx = 0; - if (2.0 * abs(my) < abs(sectx-comx)) my = 0; + if (2.0 * abs(my) < abs(game.sectx-comx)) my = 0; if (mx != 0) mx = mx*motion < 0 ? -1 : 1; if (my != 0) my = my*motion < 0 ? -1 : 1; nextx = comx; @@ -187,7 +187,7 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) /* main move loop */ for (ll = 0; ll < nsteps; ll++) { #ifdef DEBUG - if (idebug) { + if (game.idebug) { prout("%d", ll+1); } #endif @@ -215,7 +215,7 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) } else if ((game.options & OPTION_RAMMING) && game.quad[lookx][looky] != IHDOT) { /* See if we should ram ship */ - if (game.quad[lookx][looky] == ship && + if (game.quad[lookx][looky] == game.ship && (ienm == IHC || ienm == IHS)) { ram(1, ienm, comx, comy); return; @@ -236,7 +236,7 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) nextx = lookx; nexty = looky; #ifdef DEBUG - if (idebug) { + if (game.idebug) { prout(cramlc(neither, nextx, nexty)); } #endif @@ -251,8 +251,8 @@ static void movebaddy(int comx, int comy, int loccom, int ienm) game.kx[loccom] = nextx; game.ky[loccom] = nexty; game.kdist[loccom] = game.kavgd[loccom] = - sqrt(square(sectx-nextx)+square(secty-nexty)); - if (game.damage[DSRSENS] == 0 || condit == IHDOCKED) { + sqrt(square(game.sectx-nextx)+square(game.secty-nexty)); + if (game.damage[DSRSENS] == 0 || game.condit == IHDOCKED) { proutn("***"); cramen(ienm); proutn(" from %s", cramlc(2, comx, comy)); @@ -268,12 +268,12 @@ void movcom(void) int ix, iy, i; #ifdef DEBUG - if (idebug) prout("MOVCOM"); + if (game.idebug) prout("MOVCOM"); #endif /* Figure out which Klingon is the commander (or Supercommander) and do move */ - if (comhere) + if (game.comhere) for_local_enemies(i) { ix = game.kx[i]; iy = game.ky[i]; @@ -282,7 +282,7 @@ void movcom(void) break; } } - if (ishere) + if (game.ishere) for_local_enemies(i) { ix = game.kx[i]; iy = game.ky[i]; @@ -294,7 +294,7 @@ void movcom(void) /* if skill level is high, move other Klingons and Romulans too! Move these last so they can base their actions on what the commander(s) do. */ - if (skill >= SKILL_EXPERT && (game.options & OPTION_MVBADDY)) + if (game.skill >= SKILL_EXPERT && (game.options & OPTION_MVBADDY)) for_local_enemies(i) { ix = game.kx[i]; iy = game.ky[i]; @@ -309,7 +309,7 @@ static int movescom(int iqx, int iqy, int flag, int *ipage) { int i; - if ((iqx==quadx && iqy==quady) || + if ((iqx==game.quadx && iqy==game.quady) || !VALID_QUADRANT(iqx, iqy) || game.state.galaxy[iqx][iqy].supernova || game.state.galaxy[iqx][iqy].klingons > 8) @@ -319,40 +319,40 @@ static int movescom(int iqx, int iqy, int flag, int *ipage) for_starbases(i) if (game.state.baseqx[i]==iqx && game.state.baseqy[i]==iqy) return 1; } - if (justin && !iscate) return 1; + if (game.justin && !game.iscate) return 1; /* do the move */ game.state.galaxy[game.state.isx][game.state.isy].klingons--; game.state.isx = iqx; game.state.isy = iqy; game.state.galaxy[game.state.isx][game.state.isy].klingons++; - if (ishere) { + if (game.ishere) { /* SC has scooted, Remove him from current quadrant */ - iscate=0; - isatb=0; - ishere=0; - ientesc=0; + game.iscate=0; + game.isatb=0; + game.ishere=0; + game.ientesc=0; game.future[FSCDBAS]=FOREVER; for_local_enemies(i) if (game.quad[game.kx[i]][game.ky[i]] == IHS) break; game.quad[game.kx[i]][game.ky[i]] = IHDOT; - game.kx[i] = game.kx[nenhere]; - game.ky[i] = game.ky[nenhere]; - game.kdist[i] = game.kdist[nenhere]; - game.kavgd[i] = game.kavgd[nenhere]; - game.kpower[i] = game.kpower[nenhere]; - klhere--; - nenhere--; - if (condit!=IHDOCKED) newcnd(); + game.kx[i] = game.kx[game.nenhere]; + game.ky[i] = game.ky[game.nenhere]; + game.kdist[i] = game.kdist[game.nenhere]; + game.kavgd[i] = game.kavgd[game.nenhere]; + game.kpower[i] = game.kpower[game.nenhere]; + game.klhere--; + game.nenhere--; + if (game.condit!=IHDOCKED) newcnd(); sortkl(); } /* check for a helpful planet */ - for (i = 0; i < inplan; i++) { + for (i = 0; i < game.inplan; i++) { if (game.state.plnets[i].x==game.state.isx && game.state.plnets[i].y==game.state.isy && game.state.plnets[i].crystals == 1) { /* destroy the planet */ DESTROY(&game.state.plnets[i]); game.state.galaxy[game.state.isx][game.state.isy].planets -= 1; - if (game.damage[DRADIO] == 0.0 || condit == IHDOCKED) { + if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) { if (*ipage==0) pause_game(1); *ipage = 1; prout("Lt. Uhura- \"Captain, Starfleet Intelligence reports"); @@ -375,20 +375,20 @@ void scom(int *ipage) double bdist[BASEMAX+1]; int flag; #ifdef DEBUG - if (idebug) prout("SCOM"); + if (game.idebug) prout("SCOM"); #endif /* Decide on being active or passive */ - flag = ((NKILLC+NKILLK)/(game.state.date+0.01-indate) < 0.1*skill*(skill+1.0) || - (game.state.date-indate) < 3.0); - if (iscate==0 && flag) { + flag = ((NKILLC+NKILLK)/(game.state.date+0.01-game.indate) < 0.1*game.skill*(game.skill+1.0) || + (game.state.date-game.indate) < 3.0); + if (game.iscate==0 && flag) { /* compute move away from Enterprise */ - ideltax = game.state.isx-quadx; - ideltay = game.state.isy-quady; + ideltax = game.state.isx-game.quadx; + ideltay = game.state.isy-game.quady; if (sqrt(ideltax*(double)ideltax+ideltay*(double)ideltay) > 2.0) { /* circulate in space */ - ideltax = game.state.isy-quady; - ideltay = quadx-game.state.isx; + ideltax = game.state.isy-game.quady; + ideltay = game.quadx-game.state.isx; } } else { @@ -432,8 +432,8 @@ void scom(int *ipage) i = basetbl[i2]; /* bug in original had it not finding nearest*/ ibqx = game.state.baseqx[i]; ibqy = game.state.baseqy[i]; - if ((ibqx == quadx && ibqy == quady) || - (ibqx == batx && ibqy == baty) || + if ((ibqx == game.quadx && ibqy == game.quady) || + (ibqx == game.batx && ibqy == game.baty) || game.state.galaxy[ibqx][ibqy].supernova || game.state.galaxy[ibqx][ibqy].klingons > 8) continue; @@ -504,17 +504,17 @@ void scom(int *ipage) else for_starbases(i) { ibqx = game.state.baseqx[i]; ibqy = game.state.baseqy[i]; - if (ibqx==game.state.isx && ibqy == game.state.isy && game.state.isx != batx && game.state.isy != baty) { + if (ibqx==game.state.isx && ibqy == game.state.isy && game.state.isx != game.batx && game.state.isy != game.baty) { /* attack the base */ if (flag) return; /* no, don't attack base! */ - iseenit = 0; - isatb=1; + game.iseenit = 0; + game.isatb=1; game.future[FSCDBAS] = game.state.date + 1.0 +2.0*Rand(); if (game.future[FCDBAS] < FOREVER) game.future[FSCDBAS] += game.future[FCDBAS]-game.state.date; - if (game.damage[DRADIO] > 0 && condit != IHDOCKED) + if (game.damage[DRADIO] > 0 && game.condit != IHDOCKED) return; /* no warning */ - iseenit = 1; + game.iseenit = 1; if (*ipage == 0) pause_game(1); *ipage=1; proutn("Lt. Uhura- \"Captain, the starbase in "); @@ -523,21 +523,21 @@ void scom(int *ipage) prout(" reports that it is under attack from the Klingon Super-commander."); proutn(" It can survive until stardate %d.\"", (int)game.future[FSCDBAS]); - if (resting==0) return; + if (game.resting==0) return; prout("Mr. Spock- \"Captain, shall we cancel the rest period?\""); if (ja()==0) return; - resting = 0; - Time = 0.0; /* actually finished */ + game.resting = 0; + game.optime = 0.0; /* actually finished */ return; } } /* Check for intelligence report */ if ( #ifdef DEBUG - idebug==0 && + game.idebug==0 && #endif (Rand() > 0.2 || - (game.damage[DRADIO] > 0.0 && condit != IHDOCKED) || + (game.damage[DRADIO] > 0.0 && game.condit != IHDOCKED) || !game.state.galaxy[game.state.isx][game.state.isy].charted)) return; if (*ipage==0) pause_game(1); @@ -553,49 +553,49 @@ void movetho(void) { int idx, idy, im, i, dum, my; /* Move the Tholian */ - if (ithere==0 || justin == 1) return; + if (game.ithere==0 || game.justin == 1) return; - if (ithx == 1 && ithy == 1) { + if (game.ithx == 1 && game.ithy == 1) { idx = 1; idy = QUADSIZE; } - else if (ithx == 1 && ithy == QUADSIZE) { + else if (game.ithx == 1 && game.ithy == QUADSIZE) { idx = QUADSIZE; idy = QUADSIZE; } - else if (ithx == QUADSIZE && ithy == QUADSIZE) { + else if (game.ithx == QUADSIZE && game.ithy == QUADSIZE) { idx = QUADSIZE; idy = 1; } - else if (ithx == QUADSIZE && ithy == 1) { + else if (game.ithx == QUADSIZE && game.ithy == 1) { idx = 1; idy = 1; } else { /* something is wrong! */ - ithere = 0; + game.ithere = 0; return; } /* Do nothing if we are blocked */ if (game.quad[idx][idy]!= IHDOT && game.quad[idx][idy]!= IHWEB) return; - game.quad[ithx][ithy] = IHWEB; + game.quad[game.ithx][game.ithy] = IHWEB; - if (ithx != idx) { + if (game.ithx != idx) { /* move in x axis */ - im = fabs((double)idx - ithx)/((double)idx - ithx); - while (ithx != idx) { - ithx += im; - if (game.quad[ithx][ithy]==IHDOT) game.quad[ithx][ithy] = IHWEB; + im = fabs((double)idx - game.ithx)/((double)idx - game.ithx); + while (game.ithx != idx) { + game.ithx += im; + if (game.quad[game.ithx][game.ithy]==IHDOT) game.quad[game.ithx][game.ithy] = IHWEB; } } - else if (ithy != idy) { + else if (game.ithy != idy) { /* move in y axis */ - im = fabs((double)idy - ithy)/((double)idy - ithy); - while (ithy != idy) { - ithy += im; - if (game.quad[ithx][ithy]==IHDOT) game.quad[ithx][ithy] = IHWEB; + im = fabs((double)idy - game.ithy)/((double)idy - game.ithy); + while (game.ithy != idy) { + game.ithy += im; + if (game.quad[game.ithx][game.ithy]==IHDOT) game.quad[game.ithx][game.ithy] = IHWEB; } } - game.quad[ithx][ithy] = IHT; - game.kx[nenhere]=ithx; - game.ky[nenhere]=ithy; + game.quad[game.ithx][game.ithy] = IHT; + game.kx[game.nenhere]=game.ithx; + game.ky[game.nenhere]=game.ithy; /* check to see if all holes plugged */ for_sectors(i) { @@ -605,11 +605,11 @@ void movetho(void) if (game.quad[i][QUADSIZE]!=IHWEB && game.quad[i][QUADSIZE]!=IHT) return; } /* All plugged up -- Tholian splits */ - game.quad[ithx][ithy]=IHWEB; + game.quad[game.ithx][game.ithy]=IHWEB; dropin(IHBLANK, &dum, &my); - crmena(1,IHT, 2, ithx, ithy); + crmena(1,IHT, 2, game.ithx, game.ithy); prout(" completes web."); - ithere = ithx = ithy = 0; - nenhere--; + game.ithere = game.ithx = game.ithy = 0; + game.nenhere--; return; } diff --git a/src/battle.c b/src/battle.c index 374b382..b8ffbcb 100644 --- a/src/battle.c +++ b/src/battle.c @@ -5,7 +5,7 @@ void doshield(int i) int key; enum {NONE, SHUP, SHDN, NRG} action = NONE; - ididit = 0; + game.ididit = 0; if (i == 2) action = SHUP; else { @@ -35,7 +35,7 @@ void doshield(int i) prout("Shields damaged and down."); return; } - else if (shldup) { + else if (game.shldup) { proutn("Shields are up. Do you want them down? "); if (ja()) action = SHDN; else { @@ -55,31 +55,31 @@ void doshield(int i) } switch (action) { case SHUP: /* raise shields */ - if (shldup) { + if (game.shldup) { prout("Shields already up."); return; } - shldup = 1; - shldchg = 1; - if (condit != IHDOCKED) energy -= 50.0; + game.shldup = 1; + game.shldchg = 1; + if (game.condit != IHDOCKED) game.energy -= 50.0; prout("Shields raised."); - if (energy <= 0) { + if (game.energy <= 0) { skip(1); prout("Shields raising uses up last of energy."); finish(FNRG); return; } - ididit=1; + game.ididit=1; return; case SHDN: - if (shldup==0) { + if (game.shldup==0) { prout("Shields already down."); return; } - shldup=0; - shldchg=1; + game.shldup=0; + game.shldchg=1; prout("Shields lowered."); - ididit=1; + game.ididit=1; return; case NRG: while (scan() != IHREAL) { @@ -88,33 +88,33 @@ void doshield(int i) } chew(); if (aaitem==0) return; - if (aaitem > energy) { + if (aaitem > game.energy) { prout("Insufficient ship energy."); return; } - ididit = 1; - if (shield+aaitem >= inshld) { + game.ididit = 1; + if (game.shield+aaitem >= game.inshld) { prout("Shield energy maximized."); - if (shield+aaitem > inshld) { + if (game.shield+aaitem > game.inshld) { prout("Excess energy requested returned to ship energy"); } - energy -= inshld-shield; - shield = inshld; + game.energy -= game.inshld-game.shield; + game.shield = game.inshld; return; } - if (aaitem < 0.0 && energy-aaitem > inenrg) { + if (aaitem < 0.0 && game.energy-aaitem > game.inenrg) { /* Prevent shield drain loophole */ skip(1); prout("Engineering to bridge--"); prout(" Scott here. Power circuit problem, Captain."); prout(" I can't drain the shields."); - ididit = 0; + game.ididit = 0; return; } - if (shield+aaitem < 0) { + if (game.shield+aaitem < 0) { prout("All shield energy transferred to ship."); - energy += shield; - shield = 0.0; + game.energy += game.shield; + game.shield = 0.0; return; } proutn("Scotty- \""); @@ -122,8 +122,8 @@ void doshield(int i) prout("Transferring energy to shields.\""); else prout("Draining energy from shields.\""); - shield += aaitem; - energy -= aaitem; + game.shield += aaitem; + game.energy -= aaitem; return; case NONE:; /* avoid gcc warning */ } @@ -151,22 +151,22 @@ void ram(int ibumpd, int ienm, int ix, int iy) crmena(0, ienm, 2, ix, iy); if (ibumpd) proutn(" (original position)"); skip(1); - deadkl(ix, iy, ienm, sectx, secty); + deadkl(ix, iy, ienm, game.sectx, game.secty); proutn("***"); crmshp(); prout(" heavily damaged."); icas = 10.0+20.0*Rand(); prout("***Sickbay reports %d casualties", icas); - casual += icas; + game.casual += icas; for (l=0; l < NDEVICES; l++) { if (l == DDRAY) continue; // Don't damage deathray if (game.damage[l] < 0) continue; - extradm = (10.0*type*Rand()+1.0)*damfac; - game.damage[l] += Time + extradm; /* Damage for at least time of travel! */ + extradm = (10.0*type*Rand()+1.0)*game.damfac; + game.damage[l] += game.optime + extradm; /* Damage for at least time of travel! */ } - shldup = 0; + game.shldup = 0; if (KLINGREM) { pause_game(2); dreprt(); @@ -189,7 +189,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int if (fabs(deltay) > bigger) bigger = fabs(deltay); deltax /= bigger; deltay /= bigger; - if (game.damage[DSRSENS]==0 || condit==IHDOCKED) + if (game.damage[DSRSENS]==0 || game.condit==IHDOCKED) setwnd(srscan_window); else setwnd(message_window); @@ -219,7 +219,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int *hit = fabs(*hit); newcnd(); /* we're blown out of dock */ /* We may be displaced. */ - if (landed==1 || condit==IHDOCKED) return; /* Cheat if on a planet */ + if (game.landed==1 || game.condit==IHDOCKED) return; /* Cheat if on a planet */ ang = angle + 2.5*(Rand()-0.5); temp = fabs(sin(ang)); if (fabs(cos(ang)) > temp) temp = fabs(cos(ang)); @@ -236,8 +236,8 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int /* can't move into object */ return; } - sectx = jx; - secty = jy; + game.sectx = jx; + game.secty = jy; crmshp(); shoved = 1; break; @@ -298,7 +298,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int skip(1); prout("***STARBASE DESTROYED.."); for_starbases(ll) { - if (game.state.baseqx[ll]==quadx && game.state.baseqy[ll]==quady) { + if (game.state.baseqx[ll]==game.quadx && game.state.baseqy[ll]==game.quady) { game.state.baseqx[ll]=game.state.baseqx[game.state.rembase]; game.state.baseqy[ll]=game.state.baseqy[game.state.rembase]; break; @@ -306,9 +306,9 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int } game.quad[ix][iy]=IHDOT; game.state.rembase--; - basex=basey=0; - game.state.galaxy[quadx][quady].starbase--; - game.state.chart[quadx][quady].starbase--; + game.basex=game.basey=0; + game.state.galaxy[game.quadx][game.quady].starbase--; + game.state.chart[game.quadx][game.quady].starbase--; game.state.basekl++; newcnd(); return; @@ -316,12 +316,12 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int crmena(1, iquad, 2, ix, iy); prout(" destroyed."); game.state.nplankl++; - game.state.galaxy[quadx][quady].planets--; - DESTROY(&game.state.plnets[iplnet]); - iplnet = 0; - plnetx = plnety = 0; + game.state.galaxy[game.quadx][game.quady].planets--; + DESTROY(&game.state.plnets[game.iplnet]); + game.iplnet = 0; + game.plnetx = game.plnety = 0; game.quad[ix][iy] = IHDOT; - if (landed==1) { + if (game.landed==1) { /* captain perishes on planet */ finish(FDPLANET); } @@ -371,8 +371,8 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int h1 = fabs(h1); if (h1 >= 600) { game.quad[ix][iy] = IHDOT; - ithere = 0; - ithx = ithy = 0; + game.ithere = 0; + game.ithx = game.ithy = 0; deadkl(ix, iy, iquad, ix, iy); return; } @@ -384,8 +384,8 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int } prout(" disappears."); game.quad[ix][iy] = IHWEB; - ithere = ithx = ithy = 0; - nenhere--; + game.ithere = game.ithx = game.ithy = 0; + game.nenhere--; { int dum, my; dropin(IHBLANK, &dum, &my); @@ -409,7 +409,7 @@ void torpedo(double course, double r, int inx, int iny, double *hit, int i, int game.quad[ix][iy]=IHDOT; prout(" displaced by blast to %s ", cramlc(sector, jx, jy)); for_local_enemies(ll) - game.kdist[ll] = game.kavgd[ll] = sqrt(square(sectx-game.kx[ll])+square(secty-game.ky[ll])); + game.kdist[ll] = game.kavgd[ll] = sqrt(square(game.sectx-game.kx[ll])+square(game.secty-game.ky[ll])); sortkl(); return; } @@ -424,7 +424,7 @@ static void fry(double hit) int ktr=1, l, ll, j, cdam[NDEVICES]; /* a critical hit occured */ - if (hit < (275.0-25.0*skill)*(1.0+0.5*Rand())) return; + if (hit < (275.0-25.0*game.skill)*(1.0+0.5*Rand())) return; ncrit = 1.0 + hit/(500.0+100.0*Rand()); proutn("***CRITICAL HIT--"); @@ -434,9 +434,9 @@ static void fry(double hit) j = NDEVICES*Rand(); /* Cheat to prevent shuttle damage unless on ship */ } while - (game.damage[j]<0.0 || (j==DSHUTTL && iscraft!=1) || j==DDRAY); + (game.damage[j]<0.0 || (j==DSHUTTL && game.iscraft!=1) || j==DDRAY); cdam[l] = j; - extradm = (hit*damfac)/(ncrit*(75.0+25.0*Rand())); + extradm = (hit*game.damfac)/(ncrit*(75.0+25.0*Rand())); game.damage[j] += extradm; if (l > 0) { for (ll=2; ll<=l && j != cdam[ll-1]; ll++) ; @@ -448,9 +448,9 @@ static void fry(double hit) proutn(device[j]); } prout(" damaged."); - if (game.damage[DSHIELD] && shldup) { + if (game.damage[DSHIELD] && game.shldup) { prout("***Shields knocked down."); - shldup=0; + game.shldup=0; } } @@ -462,30 +462,30 @@ void attack(int torps_ok) double hit; double pfac, dustfac, hitmax=0.0, hittot=0.0, chgfac=1.0, r; - iattak = 1; - if (alldone) return; + game.iattak = 1; + if (game.alldone) return; #ifdef DEBUG - if (idebug) prout("ATTACK!"); + if (game.idebug) prout("ATTACK!"); #endif - if (ithere) movetho(); + if (game.ithere) movetho(); - if (neutz) { /* The one chance not to be attacked */ - neutz = 0; + if (game.neutz) { /* The one chance not to be attacked */ + game.neutz = 0; return; } - if ((((comhere || ishere) && (justin == 0)) || skill == SKILL_EMERITUS)&&(torps_ok!=0)) movcom(); - if (nenhere==0 || (nenhere==1 && iqhere && iqengry==0)) return; - pfac = 1.0/inshld; - if (shldchg == 1) chgfac = 0.25+0.5*Rand(); + if ((((game.comhere || game.ishere) && (game.justin == 0)) || game.skill == SKILL_EMERITUS)&&(torps_ok!=0)) movcom(); + if (game.nenhere==0 || (game.nenhere==1 && iqhere && iqengry==0)) return; + pfac = 1.0/game.inshld; + if (game.shldchg == 1) chgfac = 0.25+0.5*Rand(); skip(1); - if (skill <= SKILL_FAIR) i = 2; + if (game.skill <= SKILL_FAIR) i = 2; for_local_enemies(l) { if (game.kpower[l] < 0) continue; /* too weak to attack */ /* compute hit strength and diminsh shield power */ r = Rand(); /* Increase chance of photon torpedos if docked or enemy energy low */ - if (condit == IHDOCKED) r *= 0.25; + if (game.condit == IHDOCKED) r *= 0.25; if (game.kpower[l] < 500) r *= 0.25; jx = game.kx[l]; jy = game.ky[l]; @@ -498,14 +498,14 @@ void attack(int torps_ok) (iquad==IHQUEST && r > 0.05); if (itflag) { /* Enemy uses phasers */ - if (condit == IHDOCKED) continue; /* Don't waste the effort! */ + if (game.condit == IHDOCKED) continue; /* Don't waste the effort! */ attempt = 1; /* Attempt to attack */ dustfac = 0.8+0.05*Rand(); hit = game.kpower[l]*pow(dustfac,game.kavgd[l]); game.kpower[l] *= 0.75; } else { /* Enemy used photon torpedo */ - double course = 1.90985*atan2((double)secty-jy, (double)jx-sectx); + double course = 1.90985*atan2((double)game.secty-jy, (double)jx-game.sectx); hit = 0; proutn("***TORPEDO INCOMING"); if (game.damage[DSRSENS] <= 0.0) { @@ -519,22 +519,22 @@ void attack(int torps_ok) torpedo(course, r, jx, jy, &hit, 1, 1); if (KLINGREM==0) finish(FWON); /* Klingons did themselves in! */ - if (game.state.galaxy[quadx][quady].supernova || alldone) + if (game.state.galaxy[game.quadx][game.quady].supernova || game.alldone) return; /* Supernova or finished */ if (hit == 0) continue; } - if (shldup != 0 || shldchg != 0 || condit==IHDOCKED) { + if (game.shldup != 0 || game.shldchg != 0 || game.condit==IHDOCKED) { /* shields will take hits */ - double absorb, hitsh, propor = pfac*shield*(condit==IHDOCKED ? 2.1 : 1.0); + double absorb, hitsh, propor = pfac*game.shield*(game.condit==IHDOCKED ? 2.1 : 1.0); if(propor < 0.1) propor = 0.1; hitsh = propor*chgfac*hit+1.0; atackd=1; absorb = 0.8*hitsh; - if (absorb > shield) absorb = shield; - shield -= absorb; + if (absorb > game.shield) absorb = game.shield; + game.shield -= absorb; hit -= hitsh; - if (condit==IHDOCKED) dock(0); - if (propor > 0.1 && hit < 0.005*energy) continue; + if (game.condit==IHDOCKED) dock(0); + if (propor > 0.1 && hit < 0.005*game.energy) continue; } /* It's a hit -- print out hit size */ atackd = 1; /* We weren't going to check casualties, etc. if @@ -542,7 +542,7 @@ void attack(int torps_ok) doesn't make any sense, so I've fixed it */ ihurt = 1; proutn("%d unit hit", (int)hit); - if ((game.damage[DSRSENS] > 0 && itflag) || skill<=SKILL_FAIR) { + if ((game.damage[DSRSENS] > 0 && itflag) || game.skill<=SKILL_FAIR) { proutn(" on the "); crmshp(); } @@ -555,20 +555,20 @@ void attack(int torps_ok) if (hit > hitmax) hitmax = hit; hittot += hit; fry(hit); - prout("Hit %g energy %g", hit, energy); - energy -= hit; - if (condit==IHDOCKED) + prout("Hit %g energy %g", hit, game.energy); + game.energy -= hit; + if (game.condit==IHDOCKED) dock(0); } - if (energy <= 0) { + if (game.energy <= 0) { /* Returning home upon your shield, not with it... */ finish(FBATTLE); return; } - if (attempt == 0 && condit == IHDOCKED) + if (attempt == 0 && game.condit == IHDOCKED) prout("***Enemies decide against attacking your ship."); if (atackd == 0) return; - percent = 100.0*pfac*shield+0.5; + percent = 100.0*pfac*game.shield+0.5; if (ihurt==0) { /* Shields fully protect ship */ proutn("Enemy attack reduces shield strength to "); @@ -576,12 +576,12 @@ void attack(int torps_ok) else { /* Print message if starship suffered hit(s) */ skip(1); - proutn("Energy left %2d shields ", (int)energy); - if (shldup) proutn("up "); + proutn("Energy left %2d shields ", (int)game.energy); + if (game.shldup) proutn("up "); else if (game.damage[DSHIELD] == 0) proutn("down "); else proutn("damaged, "); } - prout("%d%%, torpedoes left %d", percent, torps); + prout("%d%%, torpedoes left %d", percent, game.torps); /* Check if anyone was hurt */ if (hitmax >= 200 || hittot >= 500) { int icas= hittot*Rand()*0.015; @@ -589,7 +589,7 @@ void attack(int torps_ok) skip(1); prout("Mc Coy- \"Sickbay to bridge. We suffered %d casualties", icas); prout(" in that last attack.\""); - casual += icas; + game.casual += icas; } } /* After attack, reset average distance to enemies */ @@ -610,13 +610,13 @@ void deadkl(int ix, int iy, int type, int ixx, int iyy) /* Decide what kind of enemy it is and update approriately */ if (type == IHR) { /* chalk up a Romulan */ - game.state.galaxy[quadx][quady].romulans--; - irhere--; + game.state.galaxy[game.quadx][game.quady].romulans--; + game.irhere--; game.state.nromrem--; } else if (type == IHT) { /* Killed a Tholian */ - ithere = 0; + game.ithere = 0; } else if (type == IHQUEST) { /* Killed a Thingy */ @@ -624,13 +624,13 @@ void deadkl(int ix, int iy, int type, int ixx, int iyy) } else { /* Some type of a Klingon */ - game.state.galaxy[quadx][quady].klingons--; - klhere--; + game.state.galaxy[game.quadx][game.quady].klingons--; + game.klhere--; switch (type) { case IHC: - comhere = 0; + game.comhere = 0; for_commanders (i) - if (game.state.cx[i]==quadx && game.state.cy[i]==quady) break; + if (game.state.cx[i]==game.quadx && game.state.cy[i]==game.quady) break; game.state.cx[i] = game.state.cx[game.state.remcom]; game.state.cy[i] = game.state.cy[game.state.remcom]; game.state.cx[game.state.remcom] = 0; @@ -638,14 +638,14 @@ void deadkl(int ix, int iy, int type, int ixx, int iyy) game.state.remcom--; game.future[FTBEAM] = FOREVER; if (game.state.remcom != 0) - game.future[FTBEAM] = game.state.date + expran(1.0*incom/game.state.remcom); + game.future[FTBEAM] = game.state.date + expran(1.0*game.incom/game.state.remcom); break; case IHK: game.state.remkl--; break; case IHS: game.state.nscrem--; - ishere = game.state.isx = game.state.isy = isatb = iscate = 0; + game.ishere = game.state.isx = game.state.isy = game.isatb = game.iscate = 0; game.future[FSCMOVE] = game.future[FSCDBAS] = FOREVER; break; } @@ -658,25 +658,25 @@ void deadkl(int ix, int iy, int type, int ixx, int iyy) game.state.remtime = game.state.remres/(game.state.remkl + 4*game.state.remcom); - /* Remove enemy ship from arrays describing local conditions */ - if (game.future[FCDBAS] < FOREVER && batx==quadx && baty==quady && type==IHC) + /* Remove enemy ship from arrays describing local game.conditions */ + if (game.future[FCDBAS] < FOREVER && game.batx==game.quadx && game.baty==game.quady && type==IHC) game.future[FCDBAS] = FOREVER; for_local_enemies(i) if (game.kx[i]==ix && game.ky[i]==iy) break; - nenhere--; - if (i <= nenhere) { - for (j=i; j<=nenhere; j++) { + game.nenhere--; + if (i <= game.nenhere) { + for (j=i; j<=game.nenhere; j++) { game.kx[j] = game.kx[j+1]; game.ky[j] = game.ky[j+1]; game.kpower[j] = game.kpower[j+1]; game.kavgd[j] = game.kdist[j] = game.kdist[j+1]; } } - game.kx[nenhere+1] = 0; - game.ky[nenhere+1] = 0; - game.kdist[nenhere+1] = 0; - game.kavgd[nenhere+1] = 0; - game.kpower[nenhere+1] = 0; + game.kx[game.nenhere+1] = 0; + game.ky[game.nenhere+1] = 0; + game.kdist[game.nenhere+1] = 0; + game.kavgd[game.nenhere+1] = 0; + game.kpower[game.nenhere+1] = 0; return; } @@ -688,8 +688,8 @@ static int targetcheck(double x, double y, double *course) huh(); return 1; } - deltx = 0.1*(y - secty); - delty = 0.1*(sectx - x); + deltx = 0.1*(y - game.secty); + delty = 0.1*(game.sectx - x); if (deltx==0 && delty== 0) { skip(1); prout("Spock- \"Bridge to sickbay. Dr. McCoy,"); @@ -708,14 +708,14 @@ void photon(void) double r, dummy; int key, n, i, osuabor; - ididit = 0; + game.ididit = 0; if (game.damage[DPHOTON]) { prout("Photon tubes damaged."); chew(); return; } - if (torps == 0) { + if (game.torps == 0) { prout("No torpedoes left."); chew(); return; @@ -727,7 +727,7 @@ void photon(void) return; } else if (key == IHEOL) { - prout("%d torpedoes left.", torps); + prout("%d torpedoes left.", game.torps); proutn("Number of torpedoes to fire- "); key = scan(); } @@ -743,7 +743,7 @@ void photon(void) key = IHEOL; return; } - if (n <= torps) break; + if (n <= game.torps) break; chew(); key = IHEOL; } @@ -797,11 +797,11 @@ void photon(void) if (targetcheck(targ[i][1], targ[i][2], &course[i])) return; } } - ididit = 1; + game.ididit = 1; /* Loop for moving torpedoes */ osuabor = 0; for (i = 1; i <= n && !osuabor; i++) { - if (condit != IHDOCKED) torps--; + if (game.condit != IHDOCKED) game.torps--; r = (Rand()+Rand())*0.5 -0.5; if (fabs(r) >= 0.47) { /* misfire! */ @@ -816,14 +816,14 @@ void photon(void) osuabor=1; if (Rand() <= 0.2) { prout("***Photon tubes damaged by misfire."); - game.damage[DPHOTON] = damfac*(1.0+2.0*Rand()); + game.damage[DPHOTON] = game.damfac*(1.0+2.0*Rand()); break; } } - if (shldup || condit == IHDOCKED) - r *= 1.0 + 0.0001*shield; - torpedo(course[i], r, sectx, secty, &dummy, i, n); - if (alldone || game.state.galaxy[quadx][quady].supernova) + if (game.shldup || game.condit == IHDOCKED) + r *= 1.0 + 0.0001*game.shield; + torpedo(course[i], r, game.sectx, game.secty, &dummy, i, n); + if (game.alldone || game.state.galaxy[game.quadx][game.quady].supernova) return; } if (KLINGREM==0) finish(FWON); @@ -837,7 +837,7 @@ static void overheat(double rpow) double chekbrn = (rpow-1500.)*0.00038; if (Rand() <= chekbrn) { prout("Weapons officer Sulu- \"Phasers overheated, sir.\""); - game.damage[DPHASER] = damfac*(1.0 + Rand()) * (1.0+chekbrn); + game.damage[DPHASER] = game.damfac*(1.0 + Rand()) * (1.0+chekbrn); } } } @@ -855,10 +855,10 @@ static int checkshctrl(double rpow) /* Something bad has happened */ prouts("***RED ALERT! RED ALERT!"); skip(2); - hit = rpow*shield/inshld; - energy -= rpow+hit*0.8; - shield -= hit*0.2; - if (energy <= 0.0) { + hit = rpow*game.shield/game.inshld; + game.energy -= rpow+hit*0.8; + game.shield -= hit*0.2; + if (game.energy <= 0.0) { prouts("Sulu- \"Captain! Shield malf***********************\""); skip(1); stars(); @@ -875,7 +875,7 @@ static int checkshctrl(double rpow) skip(1); prout("McCoy to bridge- \"Severe radiation burns, Jim."); prout(" %d casualties so far.\"", icas); - casual -= icas; + game.casual -= icas; } skip(1); prout("Phaser energy dispersed by shields."); @@ -896,7 +896,7 @@ void phasers(void) skip(1); /* SR sensors and Computer */ if (game.damage[DSRSENS]+game.damage[DCOMPTR] > 0) ipoop = 0; - if (condit == IHDOCKED) { + if (game.condit == IHDOCKED) { prout("Phasers can't be fired through base shields."); chew(); return; @@ -906,13 +906,13 @@ void phasers(void) chew(); return; } - if (shldup) { + if (game.shldup) { if (game.damage[DSHCTRL]) { prout("High speed shield control damaged."); chew(); return; } - if (energy <= 200.0) { + if (game.energy <= 200.0) { prout("Insufficient energy to activate high-speed shield control."); chew(); return; @@ -926,7 +926,7 @@ void phasers(void) key=scan(); if (key == IHALPHA) { if (isit("manual")) { - if (nenhere==0) { + if (game.nenhere==0) { prout("There is no enemy present to select."); chew(); key = IHEOL; @@ -938,11 +938,11 @@ void phasers(void) } } else if (isit("automatic")) { - if ((!ipoop) && nenhere != 0) { + if ((!ipoop) && game.nenhere != 0) { automode = FORCEMAN; } else { - if (nenhere==0) + if (game.nenhere==0) prout("Energy will be expended into space."); automode = AUTOMATIC; key = scan(); @@ -957,7 +957,7 @@ void phasers(void) } } else if (key == IHREAL) { - if (nenhere==0) { + if (game.nenhere==0) { prout("Energy will be expended into space."); automode = AUTOMATIC; } @@ -968,7 +968,7 @@ void phasers(void) } else { /* IHEOL */ - if (nenhere==0) { + if (game.nenhere==0) { prout("Energy will be expended into space."); automode = AUTOMATIC; } @@ -985,9 +985,9 @@ void phasers(void) no = 1; key = scan(); } - if (key != IHREAL && nenhere != 0) { + if (key != IHREAL && game.nenhere != 0) { prout("Phasers locked on target. Energy available: %.2f", - ifast?energy-200.0:energy,1,2); + ifast?game.energy-200.0:game.energy,1,2); } irec=0; do { @@ -1002,13 +1002,13 @@ void phasers(void) key = scan(); if (key!=IHREAL) return; rpow = aaitem; - if (rpow > (ifast?energy-200:energy)) { + if (rpow > (ifast?game.energy-200:game.energy)) { proutn("Energy available= %.2f", - ifast?energy-200:energy); + ifast?game.energy-200:game.energy); skip(1); key = IHEOL; } - } while (rpow > (ifast?energy-200:energy)); + } while (rpow > (ifast?game.energy-200:game.energy)); if (rpow<=0) { /* chicken out */ chew(); @@ -1018,13 +1018,13 @@ void phasers(void) no = 1; } if (ifast) { - energy -= 200; /* Go and do it! */ + game.energy -= 200; /* Go and do it! */ if (checkshctrl(rpow)) return; } chew(); - energy -= rpow; + game.energy -= rpow; extra = rpow; - if (nenhere) { + if (game.nenhere) { extra = 0.0; powrem = rpow; for_local_enemies(i) { @@ -1040,12 +1040,12 @@ void phasers(void) } if (powrem > 0.0) extra += powrem; hittem(hits); - ididit=1; + game.ididit=1; } - if (extra > 0 && alldone == 0) { - if (ithere) { + if (extra > 0 && game.alldone == 0) { + if (game.ithere) { proutn("*** Tholian web absorbs "); - if (nenhere>0) proutn("excess "); + if (game.nenhere>0) proutn("excess "); prout("phaser energy."); } else { @@ -1070,17 +1070,17 @@ void phasers(void) } case MANUAL: rpow = 0.0; - for (k = 1; k <= nenhere;) { + for (k = 1; k <= game.nenhere;) { int ii = game.kx[k], jj = game.ky[k]; int ienm = game.quad[ii][jj]; if (msgflag) { proutn("Energy available= %.2f", - energy-.006-(ifast?200:0)); + game.energy-.006-(ifast?200:0)); skip(1); msgflag = 0; rpow = 0.0; } - if (game.damage[DSRSENS] && !(abs(sectx-ii) < 2 && abs(secty-jj) < 2) && + if (game.damage[DSRSENS] && !(abs(game.sectx-ii) < 2 && abs(game.secty-jj) < 2) && (ienm == IHC || ienm == IHS)) { cramen(ienm); prout(" can't be located without short range scan."); @@ -1129,7 +1129,7 @@ void phasers(void) rpow += aaitem; /* If total requested is too much, inform and start over */ - if (rpow > (ifast?energy-200:energy)) { + if (rpow > (ifast?game.energy-200:game.energy)) { prout("Available energy exceeded -- try again."); chew(); return; @@ -1145,18 +1145,18 @@ void phasers(void) if (key == IHALPHA && isit("no")) { no = 1; } - energy -= rpow; + game.energy -= rpow; chew(); if (ifast) { - energy -= 200.0; + game.energy -= 200.0; if (checkshctrl(rpow)) return; } hittem(hits); - ididit=1; + game.ididit=1; case NOTSET:; /* avoid gcc warning */ } /* Say shield raised or malfunction, if necessary */ - if (alldone) + if (game.alldone) return; if (ifast) { skip(1); @@ -1165,13 +1165,13 @@ void phasers(void) prout("Sulu- \"Sir, the high-speed shield control has malfunctioned . . ."); prouts(" CLICK CLICK POP . . ."); prout(" No response, sir!"); - shldup = 0; + game.shldup = 0; } else prout("Shields raised."); } else - shldup = 0; + game.shldup = 0; } overheat(rpow); } @@ -1179,7 +1179,7 @@ void phasers(void) void hittem(double *hits) { double kp, kpow, wham, hit, dustfac, kpini; - int nenhr2=nenhere, k=1, kk=1, ii, jj, ienm; + int nenhr2=game.nenhere, k=1, kk=1, ii, jj, ienm; skip(1); @@ -1208,7 +1208,7 @@ void hittem(double *hits) if (kpow == 0) { deadkl(ii, jj, ienm, ii, jj); if (KLINGREM==0) finish(FWON); - if (alldone) return; + if (game.alldone) return; kk--; /* don't do the increment */ } else /* decide whether or not to emasculate klingon */ diff --git a/src/events.c b/src/events.c index 589a838..ac674a2 100644 --- a/src/events.c +++ b/src/events.c @@ -4,11 +4,11 @@ void events(void) { int ictbeam=0, ipage=0, istract=0, line, i=0, j, k, l, ixhold=0, iyhold=0; - double fintim = game.state.date + Time, datemin, xtime, repair, yank=0; + double fintim = game.state.date + game.optime, datemin, xtime, repair, yank=0; int radio_was_broken; #ifdef DEBUG - if (idebug) prout("EVENTS"); + if (game.idebug) prout("EVENTS"); #endif radio_was_broken = (game.damage[DRADIO] != 0.0); @@ -16,7 +16,7 @@ void events(void) for (;;) { /* Select earliest extraneous event, line==0 if no events */ line = FSPY; - if (alldone) return; + if (game.alldone) return; datemin = fintim; for (l = 1; l < NEVENTS; l++) if (game.future[l] < datemin) { @@ -33,17 +33,17 @@ void events(void) return; } /* Is life support adequate? */ - if (game.damage[DLIFSUP] && condit != IHDOCKED) { - if (lsupres < xtime && game.damage[DLIFSUP] > lsupres) { + if (game.damage[DLIFSUP] && game.condit != IHDOCKED) { + if (game.lsupres < xtime && game.damage[DLIFSUP] > game.lsupres) { finish(FLIFESUP); return; } - lsupres -= xtime; - if (game.damage[DLIFSUP] <= xtime) lsupres = inlsr; + game.lsupres -= xtime; + if (game.damage[DLIFSUP] <= xtime) game.lsupres = game.inlsr; } /* Fix devices */ repair = xtime; - if (condit == IHDOCKED) repair /= docfac; + if (game.condit == IHDOCKED) repair /= game.docfac; /* Don't fix Deathray here */ for (l=0; l 0.0 && l != DDRAY) @@ -53,37 +53,37 @@ void events(void) prout("Lt. Uhura- \"Captain, the sub-space radio is working and"); prout(" surveillance reports are coming in."); skip(1); - if (iseenit==0) { + if (game.iseenit==0) { attakreport(0); - iseenit = 1; + game.iseenit = 1; } rechart(); prout(" The star chart is now up to date.\""); skip(1); } /* Cause extraneous event LINE to occur */ - Time -= xtime; + game.optime -= xtime; switch (line) { case FSNOVA: /* Supernova */ if (ipage==0) pause_game(1); ipage=1; snova(0,0); - game.future[FSNOVA] = game.state.date + expran(0.5*intime); - if (game.state.galaxy[quadx][quady].supernova) return; + game.future[FSNOVA] = game.state.date + expran(0.5*game.intime); + if (game.state.galaxy[game.quadx][game.quady].supernova) return; break; case FSPY: /* Check with spy to see if S.C. should tractor beam */ if (game.state.nscrem == 0 || ictbeam+istract > 0 || - condit==IHDOCKED || isatb==1 || iscate==1) return; - if (ientesc || - (energy < 2000 && torps < 4 && shield < 1250) || - (game.damage[DPHASER]>0 && (game.damage[DPHOTON]>0 || torps < 4)) || + game.condit==IHDOCKED || game.isatb==1 || game.iscate==1) return; + if (game.ientesc || + (game.energy < 2000 && game.torps < 4 && game.shield < 1250) || + (game.damage[DPHASER]>0 && (game.damage[DPHOTON]>0 || game.torps < 4)) || (game.damage[DSHIELD] > 0 && - (energy < 2500 || game.damage[DPHASER] > 0) && - (torps < 5 || game.damage[DPHOTON] > 0))) { + (game.energy < 2500 || game.damage[DPHASER] > 0) && + (game.torps < 5 || game.damage[DPHOTON] > 0))) { /* Tractor-beam her! */ istract=1; - yank = square(game.state.isx-quadx) + square(game.state.isy-quady); + yank = square(game.state.isx-game.quadx) + square(game.state.isy-game.quady); /********* fall through to FTBEAM code ***********/ } else return; @@ -94,11 +94,11 @@ void events(void) break; } i = Rand()*game.state.remcom+1.0; - yank = square(game.state.cx[i]-quadx) + square(game.state.cy[i]-quady); - if (istract || condit == IHDOCKED || yank == 0) { + yank = square(game.state.cx[i]-game.quadx) + square(game.state.cy[i]-game.quady); + if (istract || game.condit == IHDOCKED || yank == 0) { /* Drats! Have to reschedule */ - game.future[FTBEAM] = game.state.date + Time + - expran(1.5*intime/game.state.remcom); + game.future[FTBEAM] = game.state.date + game.optime + + expran(1.5*game.intime/game.state.remcom); break; } } @@ -106,7 +106,7 @@ void events(void) yank = sqrt(yank); if (ipage==0) pause_game(1); ipage=1; - Time = (10.0/(7.5*7.5))*yank; /* 7.5 is yank rate (warp 7.5) */ + game.optime = (10.0/(7.5*7.5))*yank; /* 7.5 is yank rate (warp 7.5) */ ictbeam = 1; skip(1); proutn("***"); @@ -114,60 +114,60 @@ void events(void) prout(" caught in long range tractor beam--"); /* If Kirk & Co. screwing around on planet, handle */ atover(1); /* atover(1) is Grab */ - if (alldone) return; - if (icraft == 1) { /* Caught in Galileo? */ + if (game.alldone) return; + if (game.icraft == 1) { /* Caught in Galileo? */ finish(FSTRACTOR); return; } /* Check to see if shuttle is aboard */ - if (iscraft==0) { + if (game.iscraft==0) { skip(1); if (Rand() > 0.5) { prout("Galileo, left on the planet surface, is captured"); prout("by aliens and made into a flying McDonald's."); game.damage[DSHUTTL] = -10; - iscraft = -1; + game.iscraft = -1; } else { prout("Galileo, left on the planet surface, is well hidden."); } } if (line==0) { - quadx = game.state.isx; - quady = game.state.isy; + game.quadx = game.state.isx; + game.quady = game.state.isy; } else { - quadx = game.state.cx[i]; - quady = game.state.cy[i]; + game.quadx = game.state.cx[i]; + game.quady = game.state.cy[i]; } - iran(QUADSIZE, §x, §y); + iran(QUADSIZE, &game.sectx, &game.secty); crmshp(); proutn(" is pulled to "); - proutn(cramlc(quadrant, quadx, quady)); + proutn(cramlc(quadrant, game.quadx, game.quady)); proutn(", "); - prout(cramlc(sector, sectx, secty)); - if (resting) { + prout(cramlc(sector, game.sectx, game.secty)); + if (game.resting) { prout("(Remainder of rest/repair period cancelled.)"); - resting = 0; + game.resting = 0; } - if (shldup==0) { - if (game.damage[DSHIELD]==0 && shield > 0) { + if (game.shldup==0) { + if (game.damage[DSHIELD]==0 && game.shield > 0) { doshield(2); /* Shldsup */ - shldchg=0; + game.shldchg=0; } else prout("(Shields not currently useable.)"); } newqad(0); /* Adjust finish time to time of tractor beaming */ - fintim = game.state.date+Time; + fintim = game.state.date+game.optime; attack(0); if (game.state.remcom <= 0) game.future[FTBEAM] = FOREVER; - else game.future[FTBEAM] = game.state.date+Time+expran(1.5*intime/game.state.remcom); + else game.future[FTBEAM] = game.state.date+game.optime+expran(1.5*game.intime/game.state.remcom); break; case FSNAP: /* Snapshot of the universe (for time warp) */ game.snapsht = game.state; game.state.snap = 1; - game.future[FSNAP] = game.state.date + expran(0.5 * intime); + game.future[FSNAP] = game.state.date + expran(0.5 * game.intime); break; case FBATTAK: /* Commander attacks starbase */ if (game.state.remcom==0 || game.state.rembase==0) { @@ -179,7 +179,7 @@ void events(void) for_starbases(j) { for_commanders(k) if (game.state.baseqx[j]==game.state.cx[k] && game.state.baseqy[j]==game.state.cy[k] && - (game.state.baseqx[j]!=quadx || game.state.baseqy[j]!=quady) && + (game.state.baseqx[j]!=game.quadx || game.state.baseqy[j]!=game.quady) && (game.state.baseqx[j]!=game.state.isx || game.state.baseqy[j]!=game.state.isy)) { i = 1; break; @@ -188,125 +188,125 @@ void events(void) } if (j>game.state.rembase) { /* no match found -- try later */ - game.future[FBATTAK] = game.state.date + expran(0.3*intime); + game.future[FBATTAK] = game.state.date + expran(0.3*game.intime); game.future[FCDBAS] = FOREVER; break; } /* commander + starbase combination found -- launch attack */ - batx = game.state.baseqx[j]; - baty = game.state.baseqy[j]; + game.batx = game.state.baseqx[j]; + game.baty = game.state.baseqy[j]; game.future[FCDBAS] = game.state.date+1.0+3.0*Rand(); - if (isatb) /* extra time if SC already attacking */ + if (game.isatb) /* extra time if SC already attacking */ game.future[FCDBAS] += game.future[FSCDBAS]-game.state.date; - game.future[FBATTAK] = game.future[FCDBAS] +expran(0.3*intime); - iseenit = 0; + game.future[FBATTAK] = game.future[FCDBAS] +expran(0.3*game.intime); + game.iseenit = 0; if (game.damage[DRADIO] != 0.0 && - condit != IHDOCKED) break; /* No warning :-( */ - iseenit = 1; + game.condit != IHDOCKED) break; /* No warning :-( */ + game.iseenit = 1; if (ipage==0) pause_game(1); ipage = 1; skip(1); proutn("Lt. Uhura- \"Captain, the starbase in "); - prout(cramlc(quadrant, batx, baty)); + prout(cramlc(quadrant, game.batx, game.baty)); prout(" reports that it is under attack and that it can"); proutn(" hold out only until stardate %d", (int)game.future[FCDBAS]); prout(".\""); - if (resting) { + if (game.resting) { skip(1); proutn("Mr. Spock- \"Captain, shall we cancel the rest period?\" "); if (ja()) { - resting = 0; - Time = 0.0; + game.resting = 0; + game.optime = 0.0; return; } } break; case FSCDBAS: /* Supercommander destroys base */ game.future[FSCDBAS] = FOREVER; - isatb = 2; + game.isatb = 2; if (!game.state.galaxy[game.state.isx][game.state.isy].starbase) break; /* WAS RETURN! */ - ixhold = batx; - iyhold = baty; - batx = game.state.isx; - baty = game.state.isy; + ixhold = game.batx; + iyhold = game.baty; + game.batx = game.state.isx; + game.baty = game.state.isy; case FCDBAS: /* Commander succeeds in destroying base */ if (line==FCDBAS) { game.future[FCDBAS] = FOREVER; /* find the lucky pair */ for_commanders(i) - if (game.state.cx[i]==batx && game.state.cy[i]==baty) + if (game.state.cx[i]==game.batx && game.state.cy[i]==game.baty) break; if (i > game.state.remcom || game.state.rembase == 0 || - !game.state.galaxy[batx][baty].starbase) { + !game.state.galaxy[game.batx][game.baty].starbase) { /* No action to take after all */ - batx = baty = 0; + game.batx = game.baty = 0; break; } } /* Code merges here for any commander destroying base */ /* Not perfect, but will have to do */ /* Handle case where base is in same quadrant as starship */ - if (batx==quadx && baty==quady) { - game.state.chart[batx][baty].starbase = FALSE; - game.quad[basex][basey]= IHDOT; - basex=basey=0; + if (game.batx==game.quadx && game.baty==game.quady) { + game.state.chart[game.batx][game.baty].starbase = FALSE; + game.quad[game.basex][game.basey]= IHDOT; + game.basex=game.basey=0; newcnd(); skip(1); prout("Spock- \"Captain, I believe the starbase has been destroyegame.state.\""); } else if (game.state.rembase != 1 && - (game.damage[DRADIO] <= 0.0 || condit == IHDOCKED)) { + (game.damage[DRADIO] <= 0.0 || game.condit == IHDOCKED)) { /* Get word via subspace radio */ if (ipage==0) pause_game(1); ipage = 1; skip(1); prout("Lt. Uhura- \"Captain, Starfleet Command reports that"); proutn(" the starbase in "); - proutn(cramlc(quadrant, batx, baty)); + proutn(cramlc(quadrant, game.batx, game.baty)); prout(" has been destroyed by"); - if (isatb==2) prout("the Klingon Super-Commander"); + if (game.isatb==2) prout("the Klingon Super-Commander"); else prout("a Klingon Commander"); - game.state.chart[batx][baty].starbase = FALSE; + game.state.chart[game.batx][game.baty].starbase = FALSE; } /* Remove Starbase from galaxy */ - game.state.galaxy[batx][baty].starbase = FALSE; + game.state.galaxy[game.batx][game.baty].starbase = FALSE; for_starbases(i) - if (game.state.baseqx[i]==batx && game.state.baseqy[i]==baty) { + if (game.state.baseqx[i]==game.batx && game.state.baseqy[i]==game.baty) { game.state.baseqx[i]=game.state.baseqx[game.state.rembase]; game.state.baseqy[i]=game.state.baseqy[game.state.rembase]; } game.state.rembase--; - if (isatb == 2) { + if (game.isatb == 2) { /* reinstate a commander's base attack */ - batx = ixhold; - baty = iyhold; - isatb = 0; + game.batx = ixhold; + game.baty = iyhold; + game.isatb = 0; } else { - batx = baty = 0; + game.batx = game.baty = 0; } break; case FSCMOVE: /* Supercommander moves */ game.future[FSCMOVE] = game.state.date+0.2777; - if (ientesc+istract==0 && - isatb!=1 && - (iscate!=1 || justin==1)) scom(&ipage); + if (game.ientesc+istract==0 && + game.isatb!=1 && + (game.iscate!=1 || game.justin==1)) scom(&ipage); break; case FDSPROB: /* Move deep space probe */ game.future[FDSPROB] = game.state.date + 0.01; - probex += probeinx; - probey += probeiny; - i = (int)(probex/QUADSIZE +0.05); - j = (int)(probey/QUADSIZE + 0.05); - if (probecx != i || probecy != j) { - probecx = i; - probecy = j; + game.probex += game.probeinx; + game.probey += game.probeiny; + i = (int)(game.probex/QUADSIZE +0.05); + j = (int)(game.probey/QUADSIZE + 0.05); + if (game.probecx != i || game.probecy != j) { + game.probecx = i; + game.probecy = j; if (!VALID_QUADRANT(i, j) || - game.state.galaxy[probecx][probecy].supernova) { + game.state.galaxy[game.probecx][game.probecy].supernova) { // Left galaxy or ran into supernova - if (game.damage[DRADIO]==0.0 || condit == IHDOCKED) { + if (game.damage[DRADIO]==0.0 || game.condit == IHDOCKED) { if (ipage==0) pause_game(1); ipage = 1; skip(1); @@ -320,30 +320,30 @@ void events(void) game.future[FDSPROB] = FOREVER; break; } - if (game.damage[DRADIO]==0.0 || condit == IHDOCKED) { + if (game.damage[DRADIO]==0.0 || game.condit == IHDOCKED) { if (ipage==0) pause_game(1); ipage = 1; skip(1); proutn("Lt. Uhura- \"The deep space probe is now in "); - proutn(cramlc(quadrant, probecx, probecy)); + proutn(cramlc(quadrant, game.probecx, game.probecy)); prout(".\""); } } /* Update star chart if Radio is working or have access to radio. */ - if (game.damage[DRADIO] == 0.0 || condit == IHDOCKED) { - game.state.chart[probecx][probecy].klingons = game.state.galaxy[probecx][probecy].klingons; - game.state.chart[probecx][probecy].starbase = game.state.galaxy[probecx][probecy].starbase; - game.state.chart[probecx][probecy].stars = game.state.galaxy[probecx][probecy].stars; - game.state.galaxy[probecx][probecy].charted = TRUE; + if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) { + game.state.chart[game.probecx][game.probecy].klingons = game.state.galaxy[game.probecx][game.probecy].klingons; + game.state.chart[game.probecx][game.probecy].starbase = game.state.galaxy[game.probecx][game.probecy].starbase; + game.state.chart[game.probecx][game.probecy].stars = game.state.galaxy[game.probecx][game.probecy].stars; + game.state.galaxy[game.probecx][game.probecy].charted = TRUE; } - proben--; // One less to travel - if (proben == 0 && isarmed && - game.state.galaxy[probecx][probecy].stars) { + game.proben--; // One less to travel + if (game.proben == 0 && game.isarmed && + game.state.galaxy[game.probecx][game.probecy].stars) { /* lets blow the sucker! */ snova(1,0); game.future[FDSPROB] = FOREVER; - if (game.state.galaxy[quadx][quady].supernova) + if (game.state.galaxy[game.quadx][game.quady].supernova) return; } break; @@ -357,7 +357,7 @@ void wait(void) int key; double temp, delay, origTime; - ididit = 0; + game.ididit = 0; for (;;) { key = scan(); if (key != IHEOL) break; @@ -370,42 +370,42 @@ void wait(void) } origTime = delay = aaitem; if (delay <= 0.0) return; - if (delay >= game.state.remtime || nenhere != 0) { + if (delay >= game.state.remtime || game.nenhere != 0) { proutn("Are you sure? "); if (ja() == 0) return; } /* Alternate resting periods (events) with attacks */ - resting = 1; + game.resting = 1; do { - if (delay <= 0) resting = 0; - if (resting == 0) { + if (delay <= 0) game.resting = 0; + if (game.resting == 0) { prout("%d stardates left.", (int)game.state.remtime); return; } - temp = Time = delay; + temp = game.optime = delay; - if (nenhere) { + if (game.nenhere) { double rtime = 1.0 + Rand(); if (rtime < temp) temp = rtime; - Time = temp; + game.optime = temp; } - if (Time < delay) attack(0); - if (alldone) return; + if (game.optime < delay) attack(0); + if (game.alldone) return; events(); - ididit = 1; - if (alldone) return; + game.ididit = 1; + if (game.alldone) return; delay -= temp; /* Repair Deathray if long rest at starbase */ - if (origTime-delay >= 9.99 && condit == IHDOCKED) + if (origTime-delay >= 9.99 && game.condit == IHDOCKED) game.damage[DDRAY] = 0.0; } while // leave if quadrant supernovas - (!game.state.galaxy[quadx][quady].supernova); + (!game.state.galaxy[game.quadx][game.quady].supernova); - resting = 0; - Time = 0; + game.resting = 0; + game.optime = 0; } void nova(int ix, int iy) @@ -424,7 +424,7 @@ void nova(int ix, int iy) game.quad[ix][iy] = IHDOT; crmena(1, IHSTAR, 2, ix, iy); prout(" novas."); - game.state.galaxy[quadx][quady].stars--; + game.state.galaxy[game.quadx][game.quady].stars--; game.state.starkl++; /* Set up stack to recursively trigger adjacent stars */ @@ -459,34 +459,34 @@ void nova(int ix, int iy) top2++; hits[top2][1]=ii; hits[top2][2]=jj; - game.state.galaxy[quadx][quady].stars -= 1; + game.state.galaxy[game.quadx][game.quady].stars -= 1; game.state.starkl++; crmena(1, IHSTAR, 2, ii, jj); prout(" novas."); game.quad[ii][jj] = IHDOT; break; case IHP: /* Destroy planet */ - game.state.galaxy[quadx][quady].planets -= 1; + game.state.galaxy[game.quadx][game.quady].planets -= 1; game.state.nplankl++; crmena(1, IHP, 2, ii, jj); prout(" destroyed."); - DESTROY(&game.state.plnets[iplnet]); - iplnet = plnetx = plnety = 0; - if (landed == 1) { + DESTROY(&game.state.plnets[game.iplnet]); + game.iplnet = game.plnetx = game.plnety = 0; + if (game.landed == 1) { finish(FPNOVA); return; } game.quad[ii][jj] = IHDOT; break; case IHB: /* Destroy base */ - game.state.galaxy[quadx][quady].starbase = FALSE; + game.state.galaxy[game.quadx][game.quady].starbase = FALSE; for_starbases(i) - if (game.state.baseqx[i]==quadx && game.state.baseqy[i]==quady) + if (game.state.baseqx[i]==game.quadx && game.state.baseqy[i]==game.quady) break; game.state.baseqx[i] = game.state.baseqx[game.state.rembase]; game.state.baseqy[i] = game.state.baseqy[game.state.rembase]; game.state.rembase--; - basex = basey = 0; + game.basex = game.basey = 0; game.state.basekl++; newcnd(); crmena(1, IHB, 2, ii, jj); @@ -496,25 +496,25 @@ void nova(int ix, int iy) case IHE: /* Buffet ship */ case IHF: prout("***Starship buffeted by nova."); - if (shldup) { - if (shield >= 2000.0) shield -= 2000.0; + if (game.shldup) { + if (game.shield >= 2000.0) game.shield -= 2000.0; else { - double diff = 2000.0 - shield; - energy -= diff; - shield = 0.0; - shldup = 0; + double diff = 2000.0 - game.shield; + game.energy -= diff; + game.shield = 0.0; + game.shldup = 0; prout("***Shields knocked out."); - game.damage[DSHIELD] += 0.005*damfac*Rand()*diff; + game.damage[DSHIELD] += 0.005*game.damfac*Rand()*diff; } } - else energy -= 2000.0; - if (energy <= 0) { + else game.energy -= 2000.0; + if (game.energy <= 0) { finish(FNOVA); return; } /* add in course nova contributes to kicking starship*/ - icx += sectx-hits[mm][1]; - icy += secty-hits[mm][2]; + icx += game.sectx-hits[mm][1]; + icy += game.secty-hits[mm][2]; kount++; break; case IHK: /* kill klingon */ @@ -558,7 +558,7 @@ void nova(int ix, int iy) game.quad[newcx][newcy] = iquad; game.kx[ll] = newcx; game.ky[ll] = newcy; - game.kavgd[ll] = sqrt(square(sectx-newcx)+square(secty-newcy)); + game.kavgd[ll] = sqrt(square(game.sectx-newcx)+square(game.secty-newcy)); game.kdist[ll] = game.kavgd[ll]; skip(1); break; @@ -573,18 +573,18 @@ void nova(int ix, int iy) return; /* Starship affected by nova -- kick it away. */ - dist = kount*0.1; + game.dist = kount*0.1; if (icx) icx = (icx < 0 ? -1 : 1); if (icy) icy = (icy < 0 ? -1 : 1); - direc = course[3*(icx+1)+icy+2]; - if (direc == 0.0) dist = 0.0; - if (dist == 0.0) return; - Time = 10.0*dist/16.0; + game.direc = course[3*(icx+1)+icy+2]; + if (game.direc == 0.0) game.dist = 0.0; + if (game.dist == 0.0) return; + game.optime = 10.0*game.dist/16.0; skip(1); prout("Force of nova displaces starship."); - iattak=2; /* Eliminates recursion problem */ + game.iattak=2; /* Eliminates recursion problem */ imove(); - Time = 10.0*dist/16.0; + game.optime = 10.0*game.dist/16.0; return; } @@ -601,8 +601,8 @@ void snova(int insx, int insy) if (insy== 0) { if (insx == 1) { /* NOVAMAX being used */ - nqx = probecx; - nqy = probecy; + nqx = game.probecx; + nqy = game.probecy; } else { int stars = 0; @@ -624,19 +624,19 @@ void snova(int insx, int insy) if (num <=0) break; } #ifdef DEBUG - if (idebug) { + if (game.idebug) { proutn("Super nova here?"); if (ja()==1) { - nqx = quadx; - nqy = quady; + nqx = game.quadx; + nqy = game.quady; } } #endif } - if (nqx != quady || nqy != quady || justin != 0) { + if (nqx != game.quady || nqy != game.quady || game.justin != 0) { /* it isn't here, or we just entered (treat as inroute) */ - if (game.damage[DRADIO] == 0.0 || condit == IHDOCKED) { + if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) { skip(1); prout("Message from Starfleet Command Stardate %.2f", game.state.date); prout(" Supernova in %s; caution advised.", @@ -667,14 +667,14 @@ void snova(int insx, int insy) prouts("***RED ALERT! RED ALERT!"); skip(1); prout("***Incipient supernova detected at ", cramlc(sector, nsx, nsy)); - nqx = quadx; - nqy = quady; - if (square(nsx-sectx) + square(nsy-secty) <= 2.1) { + nqx = game.quadx; + nqy = game.quady; + if (square(nsx-game.sectx) + square(nsy-game.secty) <= 2.1) { proutn("Emergency override attempts t"); prouts("***************"); skip(1); stars(); - alldone=1; + game.alldone=1; } } /* destroy any Klingons in supernovaed quadrant */ @@ -683,7 +683,7 @@ void snova(int insx, int insy) comdead = iscdead = 0; if (nqx==game.state.isx && nqy == game.state.isy) { /* did in the Supercommander! */ - game.state.nscrem = game.state.isx = game.state.isy = isatb = iscate = 0; + game.state.nscrem = game.state.isx = game.state.isy = game.isatb = game.iscate = 0; iscdead = 1; game.future[FSCMOVE] = game.future[FSCDBAS] = FOREVER; } @@ -710,7 +710,7 @@ void snova(int insx, int insy) npdead = num - nrmdead*10; if (npdead) { int l; - for (l = 0; l < inplan; l++) + for (l = 0; l < game.inplan; l++) if (game.state.plnets[l].x == nqx && game.state.plnets[l].y == nqy) { DESTROY(&game.state.plnets[l]); } @@ -734,12 +734,12 @@ void snova(int insx, int insy) game.state.nplankl += npdead; } /* mark supernova in galaxy and in star chart */ - if ((quadx == nqx && quady == nqy) || + if ((game.quadx == nqx && game.quady == nqy) || game.damage[DRADIO] == 0 || - condit == IHDOCKED) + game.condit == IHDOCKED) game.state.galaxy[nqx][nqy].supernova = TRUE; /* If supernova destroys last klingons give special message */ - if (KLINGREM==0 && (nqx != quadx || nqy != quady)) { + if (KLINGREM==0 && (nqx != game.quadx || nqy != game.quady)) { skip(2); if (insx == 0) prout("Lucky you!"); proutn("A supernova in %s has just destroyed the last Klingons.", @@ -748,7 +748,7 @@ void snova(int insx, int insy) return; } /* if some Klingons remain, continue or die in supernova */ - if (alldone) finish(FSNOVAED); + if (game.alldone) finish(FSNOVAED); return; } diff --git a/src/finish.c b/src/finish.c index c0d3569..bcb168e 100644 --- a/src/finish.c +++ b/src/finish.c @@ -48,17 +48,17 @@ void dstrct() void kaboom(void) { stars(); - if (ship==IHE) prouts("***"); + if (game.ship==IHE) prouts("***"); prouts("********* Entropy of "); crmshp(); prouts(" maximized *********"); skip(1); stars(); skip(1); - if (nenhere != 0) { - double whammo = 25.0 * energy; + if (game.nenhere != 0) { + double whammo = 25.0 * game.energy; int l=1; - while (l <= nenhere) { + while (l <= game.nenhere) { if (game.kpower[l]*game.kdist[l] <= whammo) deadkl(game.kx[l],game.ky[l], game.quad[game.kx[l]][game.ky[l]], game.kx[l], game.ky[l]); l++; @@ -71,7 +71,7 @@ void kaboom(void) void finish(FINTYPE ifin) { int igotit = 0; - alldone = 1; + game.alldone = 1; skip(3); prout("It is stardate %.1f.", game.state.date); skip(1); @@ -83,21 +83,21 @@ void finish(FINTYPE ifin) prout("You have smashed the Klingon invasion fleet and saved"); prout("the Federation."); - gamewon=1; - if (alive) { + game.gamewon=1; + if (game.alive) { double badpt; - badpt = 5.0*game.state.starkl + casual + 10.0*game.state.nplankl + - 45.*nhelp+100.*game.state.basekl; - if (ship == IHF) badpt += 100.0; - else if (ship == 0) badpt += 200.0; + badpt = 5.0*game.state.starkl + game.casual + 10.0*game.state.nplankl + + 45.*game.nhelp+100.*game.state.basekl; + if (game.ship == IHF) badpt += 100.0; + else if (game.ship == 0) badpt += 200.0; if (badpt < 100.0) badpt = 0.0; // Close enough! - if (game.state.date-indate < 5.0 || + if (game.state.date-game.indate < 5.0 || // killsPerDate >= RateMax - KLINGKILLED/(game.state.date-indate) >= - 0.1*skill*(skill+1.0) + 0.1 + 0.008*badpt) { + KLINGKILLED/(game.state.date-game.indate) >= + 0.1*game.skill*(game.skill+1.0) + 0.1 + 0.008*badpt) { skip(1); prout("In fact, you have done so well that Starfleet Command"); - switch (skill) { + switch (game.skill) { case SKILL_NOVICE: prout("promotes you one step in rank from \"Novice\" to \"Fair\"."); break; @@ -132,10 +132,10 @@ void finish(FINTYPE ifin) skip(1); break; } - if (skill >= SKILL_EXPERT) { - if (thawed + if (game.skill >= SKILL_EXPERT) { + if (game.thawed #ifdef DEBUG - && !idebug + && !game.idebug #endif ) prout("You cannot get a citation, so..."); @@ -168,7 +168,7 @@ void finish(FINTYPE ifin) else { prout("found guilty and"); prout("sentenced to death by slow torture."); - alive = 0; + game.alive = 0; } score(); return; @@ -282,12 +282,12 @@ void finish(FINTYPE ifin) prout("You are crushed into extremely dense matter."); break; } - if (ship==IHF) ship= 0; - else if (ship == IHE) ship = IHF; - alive = 0; + if (game.ship==IHF) game.ship= 0; + else if (game.ship == IHE) game.ship = IHF; + game.alive = 0; if (KLINGREM != 0) { - double goodies = game.state.remres/inresor; - double baddies = (game.state.remkl + 2.0*game.state.remcom)/(inkling+2.0*incom); + double goodies = game.state.remres/game.inresor; + double baddies = (game.state.remkl + 2.0*game.state.remcom)/(game.inkling+2.0*game.incom); if (goodies/baddies >= 1.0+0.5*Rand()) { prout("As a result of your actions, a treaty with the Klingon"); prout("Empire has been signed. The terms of the treaty are"); @@ -307,30 +307,30 @@ void finish(FINTYPE ifin) prout("martyr and a hero. Someday maybe they'll erect a"); prout("statue in your memory. Rest in peace, and try not"); prout("to think about pigeons."); - gamewon = 1; + game.gamewon = 1; } score(); } void score(void) { - double timused = game.state.date - indate; + double timused = game.state.date - game.indate; int ithperd, iwon, klship; - iskill = skill; + iskill = game.skill; if ((timused == 0 || KLINGREM != 0) && timused < 5.0) timused = 5.0; perdate = KLINGKILLED/timused; ithperd = 500*perdate + 0.5; iwon = 0; - if (gamewon) iwon = 100*skill; - if (ship == IHE) klship = 0; - else if (ship == IHF) klship = 1; + if (game.gamewon) iwon = 100*game.skill; + if (game.ship == IHE) klship = 0; + else if (game.ship == IHF) klship = 1; else klship = 2; - if (gamewon == 0) game.state.nromrem = 0; // None captured if no win + if (game.gamewon == 0) game.state.nromrem = 0; // None captured if no win iscore = 10*NKILLK + 50*NKILLC + ithperd + iwon - - 100*game.state.basekl - 100*klship - 45*nhelp -5*game.state.starkl - casual + - 100*game.state.basekl - 100*klship - 45*game.nhelp -5*game.state.starkl - game.casual + 20*NKILLROM + 200*NKILLSC - 10*game.state.nplankl + game.state.nromrem; - if (alive == 0) iscore -= 200; + if (game.alive == 0) iscore -= 200; skip(2); prout("Your score --"); if (NKILLROM) @@ -360,20 +360,20 @@ void score(void) if (game.state.basekl) prout("%6d bases destroyed by your action %5d", game.state.basekl, -100*game.state.basekl); - if (nhelp) + if (game.nhelp) prout("%6d calls for help from starbase %5d", - nhelp, -45*nhelp); - if (casual) + game.nhelp, -45*game.nhelp); + if (game.casual) prout("%6d casualties incurred %5d", - casual, -casual); + game.casual, -game.casual); if (klship) prout("%6d ship(s) lost or destroyed %5d", klship, -100*klship); - if (alive==0) + if (game.alive==0) prout("Penalty for getting yourself killed -200"); - if (gamewon) { + if (game.gamewon) { proutn("Bonus for winning "); - switch (skill) { + switch (game.skill) { case SKILL_NOVICE: proutn("Novice game "); break; case SKILL_FAIR: proutn("Fair game "); break; case SKILL_GOOD: proutn("Good game "); break; diff --git a/src/io.c b/src/io.c index adbbca0..30908e6 100644 --- a/src/io.c +++ b/src/io.c @@ -81,13 +81,13 @@ void pause_game(int i) char *prompt; char buf[BUFSIZ]; if (i==1) { - if (skill > SKILL_FAIR) + if (game.skill > SKILL_FAIR) prompt = "[ANOUNCEMENT ARRIVING...]"; else prompt = "[IMPORTANT ANNOUNCEMENT ARRIVING -- PRESS ENTER TO CONTINUE]"; } else { - if (skill > SKILL_FAIR) + if (game.skill > SKILL_FAIR) prompt = "[CONTINUE?]"; else prompt = "[PRESS ENTER TO CONTINUE]"; @@ -383,7 +383,7 @@ void tracktorpedo(int ix, int iy, int l, int i, int n, int iquad) skip(1); proutn("%d - %d ", ix, iy); } else { - if (game.damage[DSRSENS]==0 || condit==IHDOCKED) { + if (game.damage[DSRSENS]==0 || game.condit==IHDOCKED) { if (i != 1 && l == 1) { drawmaps(2); delay(400); diff --git a/src/moving.c b/src/moving.c index a5d11b3..24b6bb0 100644 --- a/src/moving.c +++ b/src/moving.c @@ -10,12 +10,12 @@ void imove(void) finald, finalx, finaly, stopegy, probf; int trbeam = 0, n, l, ix=0, iy=0, kink, kinks, iquad; - if (inorbit) { + if (game.inorbit) { prout("Helmsman Sulu- \"Leaving standard orbit.\""); - inorbit = FALSE; + game.inorbit = FALSE; } - angle = ((15.0 - direc) * 0.5235988); + angle = ((15.0 - game.direc) * 0.5235988); deltax = -sin(angle); deltay = cos(angle); if (fabs(deltax) > fabs(deltay)) @@ -27,17 +27,17 @@ void imove(void) deltax /= bigger; /* If tractor beam is to occur, don't move full distance */ - if (game.state.date+Time >= game.future[FTBEAM]) { + if (game.state.date+game.optime >= game.future[FTBEAM]) { trbeam = 1; - condit = IHRED; - dist = dist*(game.future[FTBEAM]-game.state.date)/Time + 0.1; - Time = game.future[FTBEAM] - game.state.date + 1e-5; + game.condit = IHRED; + game.dist = game.dist*(game.future[FTBEAM]-game.state.date)/game.optime + 0.1; + game.optime = game.future[FTBEAM] - game.state.date + 1e-5; } /* Move within the quadrant */ - game.quad[sectx][secty] = IHDOT; - x = sectx; - y = secty; - n = 10.0*dist*bigger+0.5; + game.quad[game.sectx][game.secty] = IHDOT; + x = game.sectx; + y = game.secty; + n = 10.0*game.dist*bigger+0.5; if (n > 0) { for (l = 1; l <= n; l++) { @@ -46,7 +46,7 @@ void imove(void) if (!VALID_SECTOR(ix, iy)) { /* Leaving quadrant -- allow final enemy attack */ /* Don't do it if being pushed by Nova */ - if (nenhere != 0 && iattak != 2) { + if (game.nenhere != 0 && game.iattak != 2) { newcnd(); for_local_enemies(l) { finald = sqrt((ix-game.kx[l])*(double)(ix-game.kx[l]) + @@ -54,19 +54,19 @@ void imove(void) game.kavgd[l] = 0.5 * (finald+game.kdist[l]); } /* - * Stas Sergeev added the condition + * Stas Sergeev added the game.condition * that attacks only happen if Klingons * are present and your skill is good. */ - if (skill > SKILL_GOOD && klhere > 0 && !game.state.galaxy[quadx][quady].supernova) + if (game.skill > SKILL_GOOD && game.klhere > 0 && !game.state.galaxy[game.quadx][game.quady].supernova) attack(0); - if (alldone) return; + if (game.alldone) return; } /* compute final position -- new quadrant and sector */ - x = QUADSIZE*(quadx-1)+sectx; - y = QUADSIZE*(quady-1)+secty; - ix = x+10.0*dist*bigger*deltax+0.5; - iy = y+10.0*dist*bigger*deltay+0.5; + x = QUADSIZE*(game.quadx-1)+game.sectx; + y = QUADSIZE*(game.quady-1)+game.secty; + ix = x+10.0*game.dist*bigger*deltax+0.5; + iy = y+10.0*game.dist*bigger*deltay+0.5; /* check for edge of galaxy */ kinks = 0; do { @@ -91,8 +91,8 @@ void imove(void) } while (kink); if (kinks) { - nkinks += 1; - if (nkinks == 3) { + game.nkinks += 1; + if (game.nkinks == 3) { /* Three strikes -- you're out! */ finish(FNEG3); return; @@ -104,24 +104,24 @@ void imove(void) } /* Compute final position in new quadrant */ if (trbeam) return; /* Don't bother if we are to be beamed */ - quadx = (ix+(QUADSIZE-1))/QUADSIZE; - quady = (iy+(QUADSIZE-1))/QUADSIZE; - sectx = ix - QUADSIZE*(quadx-1); - secty = iy - QUADSIZE*(quady-1); + game.quadx = (ix+(QUADSIZE-1))/QUADSIZE; + game.quady = (iy+(QUADSIZE-1))/QUADSIZE; + game.sectx = ix - QUADSIZE*(game.quadx-1); + game.secty = iy - QUADSIZE*(game.quady-1); skip(1); prout("Entering %s.", - cramlc(quadrant, quadx, quady)); - game.quad[sectx][secty] = ship; + cramlc(quadrant, game.quadx, game.quady)); + game.quad[game.sectx][game.secty] = game.ship; newqad(0); - if (skill>SKILL_NOVICE) attack(0); + if (game.skill>SKILL_NOVICE) attack(0); return; } iquad = game.quad[ix][iy]; if (iquad != IHDOT) { /* object encountered in flight path */ - stopegy = 50.0*dist/Time; - dist=0.1*sqrt((sectx-ix)*(double)(sectx-ix) + - (secty-iy)*(double)(secty-iy)); + stopegy = 50.0*game.dist/game.optime; + game.dist=0.1*sqrt((game.sectx-ix)*(double)(game.sectx-ix) + + (game.secty-iy)*(double)(game.secty-iy)); switch (iquad) { case IHT: /* Ram a Tholian */ case IHK: /* Ram enemy ship */ @@ -129,11 +129,11 @@ void imove(void) case IHS: case IHR: case IHQUEST: - sectx = ix; - secty = iy; - ram(0, iquad, sectx, secty); - finalx = sectx; - finaly = secty; + game.sectx = ix; + game.secty = iy; + ram(0, iquad, game.sectx, game.secty); + finalx = game.sectx; + finaly = game.secty; break; case IHBLANK: skip(1); @@ -152,7 +152,7 @@ void imove(void) for (l=0;l0) n++; - probf=pow(1.4,(energy+shield)/5000.0-1.0)*pow(1.3,1.0/(n+1)-1.0); + probf=pow(1.4,(game.energy+game.shield)/5000.0-1.0)*pow(1.3,1.0/(n+1)-1.0); if ((game.options & OPTION_BLKHOLE) && Rand()>probf) timwrp(); else @@ -170,12 +170,12 @@ void imove(void) prout(";"); proutn("Emergency stop required "); prout("%2d units of energy.", (int)stopegy); - energy -= stopegy; + game.energy -= stopegy; finalx = x-deltax+0.5; - sectx = finalx; + game.sectx = finalx; finaly = y-deltay+0.5; - secty = finaly; - if (energy <= 0) { + game.secty = finaly; + if (game.energy <= 0) { finish(FNRG); return; } @@ -184,17 +184,17 @@ void imove(void) goto no_quad_change; /* sorry! */ } } - dist = 0.1*sqrt((sectx-ix)*(double)(sectx-ix) + - (secty-iy)*(double)(secty-iy)); - sectx = ix; - secty = iy; + game.dist = 0.1*sqrt((game.sectx-ix)*(double)(game.sectx-ix) + + (game.secty-iy)*(double)(game.secty-iy)); + game.sectx = ix; + game.secty = iy; } - finalx = sectx; - finaly = secty; + finalx = game.sectx; + finaly = game.secty; no_quad_change: /* No quadrant change -- compute new avg enemy distances */ - game.quad[sectx][secty] = ship; - if (nenhere) { + game.quad[game.sectx][game.secty] = game.ship; + if (game.nenhere) { for_local_enemies(l) { finald = sqrt((ix-game.kx[l])*(double)(ix-game.kx[l]) + (iy-game.ky[l])*(double)(iy-game.ky[l])); @@ -202,12 +202,12 @@ no_quad_change: game.kdist[l] = finald; } sortkl(); - if (!game.state.galaxy[quadx][quady].supernova && iattak == 0) + if (!game.state.galaxy[game.quadx][game.quady].supernova && game.iattak == 0) attack(0); for_local_enemies(l) game.kavgd[l] = game.kdist[l]; } newcnd(); - iattak = 0; + game.iattak = 0; drawmaps(0); setwnd(message_window); return; @@ -216,32 +216,32 @@ no_quad_change: void dock(int l) { chew(); - if (condit == IHDOCKED && l) { + if (game.condit == IHDOCKED && l) { prout("Already docked."); return; } - if (inorbit) { + if (game.inorbit) { prout("You must first leave standard orbit."); return; } - if (basex==0 || abs(sectx-basex) > 1 || abs(secty-basey) > 1) { + if (game.basex==0 || abs(game.sectx-game.basex) > 1 || abs(game.secty-game.basey) > 1) { crmshp(); prout(" not adjacent to base."); return; } - condit = IHDOCKED; + game.condit = IHDOCKED; if (l) prout("Docked."); - ididit=1; - if (energy < inenrg) energy = inenrg; - shield = inshld; - torps = intorps; - lsupres = inlsr; + game.ididit=1; + if (game.energy < game.inenrg) game.energy = game.inenrg; + game.shield = game.inshld; + game.torps = game.intorps; + game.lsupres = game.inlsr; if (game.damage[DRADIO] == 0.0 && - (game.future[FCDBAS] < FOREVER || isatb == 1) && iseenit == 0) { + (game.future[FCDBAS] < FOREVER || game.isatb == 1) && game.iseenit == 0) { /* get attack report from base */ prout("Lt. Uhura- \"Captain, an important message from the starbase:\""); attakreport(0); - iseenit = 1; + game.iseenit = 1; } } @@ -255,7 +255,7 @@ static void getcd(int isprobe, int akey) { are always displayed y - x, where +y is downward! */ - int irowq=quadx, icolq=quady, irows, icols, itemp=0, iprompt=0, key=0; + int irowq=game.quadx, icolq=game.quady, irows, icols, itemp=0, iprompt=0, key=0; double xi, xj, xk, xl; double deltax, deltay; int automatic = -1; @@ -263,9 +263,9 @@ static void getcd(int isprobe, int akey) { /* Get course direction and distance. If user types bad values, return with DIREC = -1.0. */ - direc = -1.0; + game.direc = -1.0; - if (landed == 1 && !isprobe) { + if (game.landed == 1 && !isprobe) { prout("Dummy! You can't leave standard orbit until you"); proutn("are back aboard the "); crmshp(); @@ -389,8 +389,8 @@ static void getcd(int isprobe, int akey) { } else prout("Ensign Chekov- \"Course laid in, Captain.\""); } - deltax = icolq - quady + 0.1*(icols-secty); - deltay = quadx - irowq + 0.1*(sectx-irows); + deltax = icolq - game.quady + 0.1*(icols-game.secty); + deltay = game.quadx - irowq + 0.1*(game.sectx-irows); } else { /* manual */ while (key == IHEOL) { @@ -421,9 +421,9 @@ static void getcd(int isprobe, int akey) { skip(1); prout("Helmsman Sulu- \"Aye, Sir.\""); } - dist = sqrt(deltax*deltax + deltay*deltay); - direc = atan2(deltax, deltay)*1.90985932; - if (direc < 0.0) direc += 12.0; + game.dist = sqrt(deltax*deltax + deltay*deltay); + game.direc = atan2(deltax, deltay)*1.90985932; + if (game.direc < 0.0) game.direc += 12.0; chew(); return; @@ -435,7 +435,7 @@ void impuls(void) { double power; - ididit = 0; + game.ididit = 0; if (game.damage[DIMPULS]) { chew(); skip(1); @@ -443,22 +443,22 @@ void impuls(void) return; } - if (energy > 30.0) { + if (game.energy > 30.0) { getcd(FALSE, 0); - if (direc == -1.0) return; - power = 20.0 + 100.0*dist; + if (game.direc == -1.0) return; + power = 20.0 + 100.0*game.dist; } else power = 30.0; - if (power >= energy) { + if (power >= game.energy) { /* Insufficient power for trip */ skip(1); prout("First Officer Spock- \"Captain, the impulse engines"); prout("require 20.0 units to engage, plus 100.0 units per"); - if (energy > 30) { + if (game.energy > 30) { proutn("quadrant. We can go, therefore, a maximum of %d", - (int)(0.01 * (energy-20.0)-0.05)); + (int)(0.01 * (game.energy-20.0)-0.05)); prout(" quadrants.\""); } else { @@ -468,8 +468,8 @@ void impuls(void) return; } /* Make sure enough time is left for the trip */ - Time = dist/0.095; - if (Time >= game.state.remtime) { + game.optime = game.dist/0.095; + if (game.optime >= game.state.remtime) { prout("First Officer Spock- \"Captain, our speed under impulse"); prout("power is only 0.95 sectors per stardate. Are you sure"); proutn("we dare spend the time?\" "); @@ -477,12 +477,12 @@ void impuls(void) } /* Activate impulse engines and pay the cost */ imove(); - ididit = 1; - if (alldone) return; - power = 20.0 + 100.0*dist; - energy -= power; - Time = dist/0.095; - if (energy <= 0) finish(FNRG); + game.ididit = 1; + if (game.alldone) return; + power = 20.0 + 100.0*game.dist; + game.energy -= power; + game.optime = game.dist/0.095; + if (game.energy <= 0) finish(FNRG); return; } @@ -493,14 +493,14 @@ void warp(int i) double power; if (i!=2) { /* Not WARPX entry */ - ididit = 0; + game.ididit = 0; if (game.damage[DWARPEN] > 10.0) { chew(); skip(1); prout("Engineer Scott- \"The impulse engines are damaged, Sir.\""); return; } - if (game.damage[DWARPEN] > 0.0 && warpfac > 4.0) { + if (game.damage[DWARPEN] > 0.0 && game.warpfac > 4.0) { chew(); skip(1); prout("Engineer Scott- \"Sorry, Captain. Until this damage"); @@ -510,25 +510,25 @@ void warp(int i) /* Read in course and distance */ getcd(FALSE, 0); - if (direc == -1.0) return; + if (game.direc == -1.0) return; /* Make sure starship has enough energy for the trip */ - power = (dist+0.05)*warpfac*warpfac*warpfac*(shldup+1); + power = (game.dist+0.05)*game.warpfac*game.warpfac*game.warpfac*(game.shldup+1); - if (power >= energy) { + if (power >= game.energy) { /* Insufficient power for trip */ - ididit = 0; + game.ididit = 0; skip(1); prout("Engineering to bridge--"); - if (shldup==0 || 0.5*power > energy) { - iwarp = pow((energy/(dist+0.05)), 0.333333333); + if (game.shldup==0 || 0.5*power > game.energy) { + iwarp = pow((game.energy/(game.dist+0.05)), 0.333333333); if (iwarp <= 0) { prout("We can't do it, Captain. We haven't the energy."); } else { proutn("We haven't the energy, but we could do it at warp %d", iwarp); - if (shldup) { + if (game.shldup) { prout(","); prout("if you'll lower the shields."); } @@ -542,29 +542,29 @@ void warp(int i) } /* Make sure enough time is left for the trip */ - Time = 10.0*dist/wfacsq; - if (Time >= 0.8*game.state.remtime) { + game.optime = 10.0*game.dist/game.wfacsq; + if (game.optime >= 0.8*game.state.remtime) { skip(1); prout("First Officer Spock- \"Captain, I compute that such"); proutn(" a trip would require approximately %2.0f", - 100.0*Time/game.state.remtime); + 100.0*game.optime/game.state.remtime); prout(" percent of our"); proutn(" remaining time. Are you sure this is wise?\" "); - if (ja() == 0) { ididit = 0; Time=0; return;} + if (ja() == 0) { game.ididit = 0; game.optime=0; return;} } } /* Entry WARPX */ - if (warpfac > 6.0) { + if (game.warpfac > 6.0) { /* Decide if engine damage will occur */ - double prob = dist*(6.0-warpfac)*(6.0-warpfac)/66.666666666; + double prob = game.dist*(6.0-game.warpfac)*(6.0-game.warpfac)/66.666666666; if (prob > Rand()) { blooey = 1; - dist = Rand()*dist; + game.dist = Rand()*game.dist; } /* Decide if time warp will occur */ - if (0.5*dist*pow(7.0,warpfac-10.0) > Rand()) twarp=1; + if (0.5*game.dist*pow(7.0,game.warpfac-10.0) > Rand()) twarp=1; #ifdef DEBUG - if (idebug &&warpfac==10 && twarp==0) { + if (game.idebug &&game.warpfac==10 && twarp==0) { blooey=0; proutn("Force time warp? "); if (ja()==1) twarp=1; @@ -573,7 +573,7 @@ void warp(int i) if (blooey || twarp) { /* If time warp or engine damage, check path */ /* If it is obstructed, don't do warp or damage */ - double angle = ((15.0-direc)*0.5235998); + double angle = ((15.0-game.direc)*0.5235998); double deltax = -sin(angle); double deltay = cos(angle); double bigger, x, y; @@ -585,9 +585,9 @@ void warp(int i) deltax /= bigger; deltay /= bigger; - n = 10.0 * dist * bigger +0.5; - x = sectx; - y = secty; + n = 10.0 * game.dist * bigger +0.5; + x = game.sectx; + y = game.secty; for (l = 1; l <= n; l++) { x += deltax; ix = x + 0.5; @@ -605,19 +605,19 @@ void warp(int i) /* Activate Warp Engines and pay the cost */ imove(); - if (alldone) return; - energy -= dist*warpfac*warpfac*warpfac*(shldup+1); - if (energy <= 0) finish(FNRG); - Time = 10.0*dist/wfacsq; + if (game.alldone) return; + game.energy -= game.dist*game.warpfac*game.warpfac*game.warpfac*(game.shldup+1); + if (game.energy <= 0) finish(FNRG); + game.optime = 10.0*game.dist/game.wfacsq; if (twarp) timwrp(); if (blooey) { - game.damage[DWARPEN] = damfac*(3.0*Rand()+1.0); + game.damage[DWARPEN] = game.damfac*(3.0*Rand()+1.0); skip(1); prout("Engineering to bridge--"); prout(" Scott here. The warp engines are damaged."); prout(" We'll have to reduce speed to warp 4."); } - ididit = 1; + game.ididit = 1; return; } @@ -654,19 +654,19 @@ void setwrp(void) prout("Helmsman Sulu- \"We can't go below warp 1, Captain.\""); return; } - oldfac = warpfac; - warpfac = aaitem; - wfacsq=warpfac*warpfac; - if (warpfac <= oldfac || warpfac <= 6.0) { + oldfac = game.warpfac; + game.warpfac = aaitem; + game.wfacsq=game.warpfac*game.warpfac; + if (game.warpfac <= oldfac || game.warpfac <= 6.0) { proutn("Helmsman Sulu- \"Warp factor %d, Captain.\"", - (int)warpfac); + (int)game.warpfac); return; } - if (warpfac < 8.00) { + if (game.warpfac < 8.00) { prout("Engineer Scott- \"Aye, but our maximum safe speed is warp 6.\""); return; } - if (warpfac == 10.0) { + if (game.warpfac == 10.0) { prout("Engineer Scott- \"Aye, Captain, we'll try it.\""); return; } @@ -680,13 +680,13 @@ void atover(int igrab) chew(); /* is captain on planet? */ - if (landed==1) { + if (game.landed==1) { if (game.damage[DTRANSP]) { finish(FPNOVA); return; } prout("Scotty rushes to the transporter controls."); - if (shldup) { + if (game.shldup) { prout("But with the shields up it's hopeless."); finish(FPNOVA); } @@ -697,28 +697,28 @@ void atover(int igrab) return; } prout("SUCCEEDS!"); - if (imine) { - imine = 0; + if (game.imine) { + game.imine = 0; proutn("The crystals mined were "); if (Rand() <= 0.25) { prout("lost."); } else { prout("saved."); - icrystl = 1; + game.icrystl = 1; } } } if (igrab) return; /* Check to see if captain in shuttle craft */ - if (icraft) finish(FSTRACTOR); - if (alldone) return; + if (game.icraft) finish(FSTRACTOR); + if (game.alldone) return; /* Inform captain of attempt to reach safety */ skip(1); do { - if (justin) { + if (game.justin) { prouts("***RED ALERT! READ ALERT!"); skip(1); proutn("The "); @@ -732,7 +732,7 @@ void atover(int igrab) skip(1); prout("safely out of quadrant."); if (game.damage[DRADIO] == 0.0) - game.state.galaxy[quadx][quady].charted = TRUE; + game.state.galaxy[game.quadx][game.quady].charted = TRUE; /* Try to use warp engines */ if (game.damage[DWARPEN]) { skip(1); @@ -740,21 +740,21 @@ void atover(int igrab) finish(FSNOVAED); return; } - warpfac = 6.0+2.0*Rand(); - wfacsq = warpfac * warpfac; - prout("Warp factor set to %d", (int)warpfac); - power = 0.75*energy; - dist = power/(warpfac*warpfac*warpfac*(shldup+1)); + game.warpfac = 6.0+2.0*Rand(); + game.wfacsq = game.warpfac * game.warpfac; + prout("Warp factor set to %d", (int)game.warpfac); + power = 0.75*game.energy; + game.dist = power/(game.warpfac*game.warpfac*game.warpfac*(game.shldup+1)); distreq = 1.4142+Rand(); - if (distreq < dist) dist = distreq; - Time = 10.0*dist/wfacsq; - direc = 12.0*Rand(); /* How dumb! */ - justin = 0; - inorbit = 0; + if (distreq < game.dist) game.dist = distreq; + game.optime = 10.0*game.dist/game.wfacsq; + game.direc = 12.0*Rand(); /* How dumb! */ + game.justin = 0; + game.inorbit = 0; warp(2); - if (justin == 0) { + if (game.justin == 0) { /* This is bad news, we didn't leave quadrant. */ - if (alldone) return; + if (game.alldone) return; skip(1); prout("Insufficient energy to leave quadrant."); finish(FSNOVAED); @@ -762,7 +762,7 @@ void atover(int igrab) } } while /* Repeat if another snova */ - (game.state.galaxy[quadx][quady].supernova); + (game.state.galaxy[game.quadx][game.quady].supernova); if (KLINGREM==0) finish(FWON); /* Snova killed remaining enemy. */ } @@ -778,34 +778,34 @@ void timwrp() game.state = game.snapsht; game.state.snap = 0; if (game.state.remcom) { - game.future[FTBEAM] = game.state.date + expran(intime/game.state.remcom); - game.future[FBATTAK] = game.state.date + expran(0.3*intime); + game.future[FTBEAM] = game.state.date + expran(game.intime/game.state.remcom); + game.future[FBATTAK] = game.state.date + expran(0.3*game.intime); } - game.future[FSNOVA] = game.state.date + expran(0.5*intime); + game.future[FSNOVA] = game.state.date + expran(0.5*game.intime); game.future[FSNAP] = game.state.date +expran(0.25*game.state.remtime); /* next snapshot will be sooner */ if (game.state.nscrem) game.future[FSCMOVE] = 0.2777; - isatb = 0; + game.isatb = 0; game.future[FCDBAS] = game.future[FSCDBAS] = FOREVER; - batx = baty = 0; + game.batx = game.baty = 0; /* Make sure Galileo is consistant -- Snapshot may have been taken when on planet, which would give us two Galileos! */ gotit = 0; - for (l = 0; l < inplan; l++) { + for (l = 0; l < game.inplan; l++) { if (game.state.plnets[l].known == shuttle_down) { gotit = 1; - if (iscraft==1 && ship==IHE) { + if (game.iscraft==1 && game.ship==IHE) { prout("Checkov- \"Security reports the Galileo has disappeared, Sir!"); - iscraft = 0; + game.iscraft = 0; } } } /* Likewise, if in the original time the Galileo was abandoned, but was on ship earlier, it would have vanished -- lets restore it */ - if (iscraft==0 && gotit==0 && game.damage[DSHUTTL] >= 0.0) { + if (game.iscraft==0 && gotit==0 && game.damage[DSHUTTL] >= 0.0) { prout("Checkov- \"Security reports the Galileo has reappeared in the dock!\""); - iscraft = 1; + game.iscraft = 1; } /* * There used to be code to do the actual reconstrction here, @@ -815,11 +815,11 @@ void timwrp() } else { /* Go forward in time */ - Time = -0.5*intime*log(Rand()); - prout("You are traveling forward in time %d stardates.", (int)Time); + game.optime = -0.5*game.intime*log(Rand()); + prout("You are traveling forward in time %d stardates.", (int)game.optime); /* cheat to make sure no tractor beams occur during time warp */ - game.future[FTBEAM] += Time; - game.damage[DRADIO] += Time; + game.future[FTBEAM] += game.optime; + game.damage[DRADIO] += game.optime; } newqad(0); events(); /* Stas Sergeev added this -- do pending events */ @@ -830,10 +830,10 @@ void probe(void) double angle, bigger; int key; /* New code to launch a deep space probe */ - if (nprobes == 0) { + if (game.nprobes == 0) { chew(); skip(1); - if (ship == IHE) + if (game.ship == IHE) prout("Engineer Scott- \"We have no more deep space probes, Sir.\""); else prout("Ye Faerie Queene has no deep space probes."); @@ -848,7 +848,7 @@ void probe(void) if (game.future[FDSPROB] != FOREVER) { chew(); skip(1); - if (game.damage[DRADIO] != 0 && condit != IHDOCKED) { + if (game.damage[DRADIO] != 0 && game.condit != IHDOCKED) { prout("Spock- \"Records show the previous probe has not yet"); prout(" reached its destination.\""); } @@ -860,41 +860,41 @@ void probe(void) if (key == IHEOL) { /* slow mode, so let Kirk know how many probes there are left */ - prout(nprobes==1 ? "%d probe left." : "%d probes left.", nprobes); + prout(game.nprobes==1 ? "%d probe left." : "%d probes left.", game.nprobes); proutn("Are you sure you want to fire a probe? "); if (ja()==0) return; } - isarmed = FALSE; + game.isarmed = FALSE; if (key == IHALPHA && strcmp(citem,"armed") == 0) { - isarmed = TRUE; + game.isarmed = TRUE; key = scan(); } else if (key == IHEOL) { proutn("Arm NOVAMAX warhead? "); - isarmed = ja(); + game.isarmed = ja(); } getcd(TRUE, key); - if (direc == -1.0) return; - nprobes--; - angle = ((15.0 - direc) * 0.5235988); - probeinx = -sin(angle); - probeiny = cos(angle); - if (fabs(probeinx) > fabs(probeiny)) - bigger = fabs(probeinx); + if (game.direc == -1.0) return; + game.nprobes--; + angle = ((15.0 - game.direc) * 0.5235988); + game.probeinx = -sin(angle); + game.probeiny = cos(angle); + if (fabs(game.probeinx) > fabs(game.probeiny)) + bigger = fabs(game.probeinx); else - bigger = fabs(probeiny); + bigger = fabs(game.probeiny); - probeiny /= bigger; - probeinx /= bigger; - proben = 10.0*dist*bigger +0.5; - probex = quadx*QUADSIZE + sectx - 1; // We will use better packing than original - probey = quady*QUADSIZE + secty - 1; - probecx = quadx; - probecy = quady; + game.probeiny /= bigger; + game.probeinx /= bigger; + game.proben = 10.0*game.dist*bigger +0.5; + game.probex = game.quadx*QUADSIZE + game.sectx - 1; // We will use better packing than original + game.probey = game.quady*QUADSIZE + game.secty - 1; + game.probecx = game.quadx; + game.probecy = game.quady; game.future[FDSPROB] = game.state.date + 0.01; // Time to move one sector prout("Ensign Chekov- \"The deep space probe is launched, Captain.\""); - ididit = 1; + game.ididit = 1; return; } @@ -905,8 +905,8 @@ void help(void) int line = 0, l, ix, iy; chew(); - /* Test for conditions which prevent calling for help */ - if (condit == IHDOCKED) { + /* Test for game.conditions which prevent calling for help */ + if (game.condit == IHDOCKED) { prout("Lt. Uhura- \"But Captain, we're already docked.\""); return; } @@ -918,50 +918,50 @@ void help(void) prout("Lt. Uhura- \"Captain, I'm not getting any response from Starbase.\""); return; } - if (landed == 1) { + if (game.landed == 1) { proutn("You must be aboard the "); crmshp(); prout("."); return; } /* OK -- call for help from nearest starbase */ - nhelp++; - if (basex!=0) { + game.nhelp++; + if (game.basex!=0) { /* There's one in this quadrant */ - ddist = sqrt(square(basex-sectx)+square(basey-secty)); + ddist = sqrt(square(game.basex-game.sectx)+square(game.basey-game.secty)); } else { ddist = FOREVER; for_starbases(l) { - xdist=10.0*sqrt(square(game.state.baseqx[l]-quadx)+square(game.state.baseqy[l]-quady)); + xdist=10.0*sqrt(square(game.state.baseqx[l]-game.quadx)+square(game.state.baseqy[l]-game.quady)); if (xdist < ddist) { ddist = xdist; line = l; } } /* Since starbase not in quadrant, set up new quadrant */ - quadx = game.state.baseqx[line]; - quady = game.state.baseqy[line]; + game.quadx = game.state.baseqx[line]; + game.quady = game.state.baseqy[line]; newqad(1); } /* dematerialize starship */ - game.quad[sectx][secty]=IHDOT; - proutn("Starbase in %s responds--", cramlc(quadrant, quadx, quady)); + game.quad[game.sectx][game.secty]=IHDOT; + proutn("Starbase in %s responds--", cramlc(quadrant, game.quadx, game.quady)); proutn(""); crmshp(); prout(" dematerializes."); - sectx=0; + game.sectx=0; for (l = 1; l <= 5; l++) { - ix = basex+3.0*Rand()-1; - iy = basey+3.0*Rand()-1; + ix = game.basex+3.0*Rand()-1; + iy = game.basey+3.0*Rand()-1; if (VALID_SECTOR(ix,iy) && game.quad[ix][iy]==IHDOT) { /* found one -- finish up */ - sectx=ix; - secty=iy; + game.sectx=ix; + game.secty=iy; break; } } - if (sectx==0){ + if (game.sectx==0){ prout("You have been lost in space..."); finish(FMATERIALIZE); return; @@ -993,13 +993,13 @@ void help(void) } if (l > 3) { game.quad[ix][iy]=IHQUEST; - alive = 0; + game.alive = 0; drawmaps(1); setwnd(message_window); finish(FMATERIALIZE); return; } - game.quad[ix][iy]=ship; + game.quad[ix][iy]=game.ship; textcolor(GREEN); prout("succeeds."); textcolor(DEFAULT); diff --git a/src/planets.c b/src/planets.c index 217ce14..6c5f365 100644 --- a/src/planets.c +++ b/src/planets.c @@ -8,10 +8,10 @@ static int consumeTime(void) Let's see what happens if all events can occur here */ // double asave; - ididit = 1; + game.ididit = 1; #if 0 /* Don't worry about this */ - if (future[FTBEAM] <= game.state.date+Time && game.state.remcom != 0 && condit != IHDOCKED) { + if (future[FTBEAM] <= game.state.date+game.optime && game.state.remcom != 0 && game.condit != IHDOCKED) { /* We are about to be tractor beamed -- operation fails */ return 1; } @@ -21,7 +21,7 @@ static int consumeTime(void) events(); /* Used to avoid if future[FSCMOVE] within time */ // future[FSNOVA] = asave; /*fails if game over, quadrant super-novas or we've moved to new quadrant*/ - if (alldone || game.state.galaxy[quadx][quady].supernova || justin != 0) return 1; + if (game.alldone || game.state.galaxy[game.quadx][game.quady].supernova || game.justin != 0) return 1; return 0; } @@ -32,15 +32,15 @@ void preport(void) chew(); prout("Spock- \"Planet report follows, Captain.\""); skip(1); - for (i = 0; i < inplan; i++) { + for (i = 0; i < game.inplan; i++) { if (game.state.plnets[i].known != unknown #ifdef DEBUG - || ( idebug && game.state.plnets[i].x !=0) + || ( game.idebug && game.state.plnets[i].x !=0) #endif ) { iknow = 1; #ifdef DEBUG - if (idebug && game.state.plnets[i].known==unknown) proutn("(Unknown) "); + if (game.idebug && game.state.plnets[i].known==unknown) proutn("(Unknown) "); #endif proutn(cramlc(quadrant, game.state.plnets[i].x, game.state.plnets[i].y)); proutn(" class "); @@ -59,7 +59,7 @@ void orbit(void) { skip(1); chew(); - if (inorbit!=0) { + if (game.inorbit!=0) { prout("Already in standard orbit."); return; } @@ -67,20 +67,20 @@ void orbit(void) prout("Both warp and impulse engines damaged."); return; } - if (plnetx == 0 || abs(sectx-plnetx) > 1 || abs(secty-plnety) > 1) { + if (game.plnetx == 0 || abs(game.sectx-game.plnetx) > 1 || abs(game.secty-game.plnety) > 1) { crmshp(); prout(" not adjacent to planet."); skip(1); return; } - Time = 0.02+0.03*Rand(); + game.optime = 0.02+0.03*Rand(); prout("Helmsman Sulu- \"Entering standard orbit, Sir.\""); newcnd(); if (consumeTime()) return; game.height = (1400.0+7200.0*Rand()); prout("Sulu- \"Entered orbit at altitude %.2f kilometers.\"", game.height); - inorbit = 1; - ididit=1; + game.inorbit = 1; + game.ididit=1; } void sensor(void) @@ -91,22 +91,22 @@ void sensor(void) prout("Short range sensors damaged."); return; } - if (!plnetx && (game.options & OPTION_TTY)) { + if (!game.plnetx && (game.options & OPTION_TTY)) { prout("Spock- \"No planet in this quadrant, Captain.\""); return; } - if ((plnetx != 0)&& (game.state.plnets[iplnet].known == unknown)) { - prout("Spock- \"Sensor scan for %s-", cramlc(quadrant, quadx, quady)); + if ((game.plnetx != 0)&& (game.state.plnets[game.iplnet].known == unknown)) { + prout("Spock- \"Sensor scan for %s-", cramlc(quadrant, game.quadx, game.quady)); skip(1); prout(" Planet at %s is of class %s.", - cramlc(sector, plnetx, plnety), - classes[game.state.plnets[iplnet].pclass]); - if (game.state.plnets[iplnet].known==shuttle_down) + cramlc(sector, game.plnetx, game.plnety), + classes[game.state.plnets[game.iplnet].pclass]); + if (game.state.plnets[game.iplnet].known==shuttle_down) prout(" Sensors show Galileo still on surface."); proutn(" Readings indicate"); - if (game.state.plnets[iplnet].crystals == 0) proutn(" no"); + if (game.state.plnets[game.iplnet].crystals == 0) proutn(" no"); prout(" dilithium crystals present.\""); - if (game.state.plnets[iplnet].known == unknown) game.state.plnets[iplnet].known = known; + if (game.state.plnets[game.iplnet].known == unknown) game.state.plnets[game.iplnet].known = known; } } @@ -116,31 +116,31 @@ void beam(void) skip(1); if (game.damage[DTRANSP] != 0) { prout("Transporter damaged."); - if (game.damage[DSHUTTL]==0 && (game.state.plnets[iplnet].known==shuttle_down || iscraft == 1)) { + if (game.damage[DSHUTTL]==0 && (game.state.plnets[game.iplnet].known==shuttle_down || game.iscraft == 1)) { skip(1); proutn("Spock- \"May I suggest the shuttle craft, Sir?\" "); if (ja() != 0) shuttle(); } return; } - if (inorbit==0) { + if (game.inorbit==0) { crmshp(); prout(" not in standard orbit."); return; } - if (shldup!=0) { + if (game.shldup!=0) { prout("Impossible to transport through shields."); return; } - if (game.state.plnets[iplnet].known==unknown) { + if (game.state.plnets[game.iplnet].known==unknown) { prout("Spock- \"Captain, we have no information on this planet"); prout(" and Starfleet Regulations clearly state that in this situation"); prout(" you may not go down.\""); return; } - if (landed==1) { + if (game.landed==1) { /* Coming from planet */ - if (game.state.plnets[iplnet].known==shuttle_down) { + if (game.state.plnets[game.iplnet].known==shuttle_down) { proutn("Spock- \"Wouldn't you rather take the Galileo?\" "); if (ja() != 0) { chew(); @@ -157,7 +157,7 @@ void beam(void) } else { /* Going to planet */ - if (game.state.plnets[iplnet].crystals==0) { + if (game.state.plnets[game.iplnet].crystals==0) { prout("Spock- \"Captain, I fail to see the logic in"); prout(" exploring a planet with no dilithium crystals."); proutn(" Are you sure this is wise?\" "); @@ -172,7 +172,7 @@ void beam(void) skip(1); prout("Kirk- \"Energize.\""); } - ididit=1; + game.ididit=1; skip(1); prouts("WWHOOOIIIIIRRRRREEEE.E.E. . . . . . ."); skip(2); @@ -186,15 +186,15 @@ void beam(void) prouts(". . . . . . .E.E.EEEERRRRRIIIIIOOOHWW"); skip(2); prout("Transport complete."); - landed = -landed; - if (landed==1 && game.state.plnets[iplnet].known==shuttle_down) { + game.landed = -game.landed; + if (game.landed==1 && game.state.plnets[game.iplnet].known==shuttle_down) { prout("The shuttle craft Galileo is here!"); } - if (landed!=1 && imine==1) { - icrystl = 1; - cryprob = 0.05; + if (game.landed!=1 && game.imine==1) { + game.icrystl = 1; + game.cryprob = 0.05; } - imine = 0; + game.imine = 0; return; } @@ -202,44 +202,44 @@ void mine(void) { skip(1); chew(); - if (landed!= 1) { + if (game.landed!= 1) { prout("Mining party not on planet."); return; } - if (game.state.plnets[iplnet].crystals == 0) { + if (game.state.plnets[game.iplnet].crystals == 0) { prout("No dilithium crystals on this planet."); return; } - if (imine == 1) { + if (game.imine == 1) { prout("You've already mined enough crystals for this trip."); return; } - if (icrystl == 1 && cryprob == 0.05) { + if (game.icrystl == 1 && game.cryprob == 0.05) { proutn("With all those fresh crystals aboard the "); crmshp(); skip(1); prout("there's no reason to mine more at this time."); return; } - Time = (0.1+0.2*Rand())*game.state.plnets[iplnet].pclass; + game.optime = (0.1+0.2*Rand())*game.state.plnets[game.iplnet].pclass; if (consumeTime()) return; prout("Mining operation complete."); - imine = 1; - ididit=1; + game.imine = 1; + game.ididit=1; } void usecrystals(void) { - ididit=0; + game.ididit=0; skip(1); chew(); - if (icrystl!=1) { + if (game.icrystl!=1) { prout("No dilithium crystals available."); return; } - if (energy >= 1000) { + if (game.energy >= 1000) { prout("Spock- \"Captain, Starfleet Regulations prohibit such an operation"); - prout(" except when condition Yellow exists."); + prout(" except when game.condition Yellow exists."); return; } prout("Spock- \"Captain, I must warn you that loading"); @@ -259,7 +259,7 @@ void usecrystals(void) skip(1); prouts("Scotty- \"Keep your fingers crossed, Sir!\""); skip(1); - if (Rand() <= cryprob) { + if (Rand() <= game.cryprob) { prouts(" \"Activating now! - - No good! It's***"); skip(2); prouts("***RED ALERT! RED A*L********************************"); @@ -270,13 +270,13 @@ void usecrystals(void) kaboom(); return; } - energy += 5000.0*(1.0 + 0.9*Rand()); + game.energy += 5000.0*(1.0 + 0.9*Rand()); prouts(" \"Activating now! - - "); prout("The instruments"); prout(" are going crazy, but I think it's"); prout(" going to work!! Congratulations, Sir!\""); - cryprob *= 2.0; - ididit=1; + game.cryprob *= 2.0; + game.ididit=1; } void shuttle(void) @@ -285,7 +285,7 @@ void shuttle(void) skip(1); if(game.damage[DSHUTTL] != 0.0) { if (game.damage[DSHUTTL] == -1.0) { - if (inorbit && game.state.plnets[iplnet].known == shuttle_down) + if (game.inorbit && game.state.plnets[game.iplnet].known == shuttle_down) prout("Ye Faerie Queene has no shuttle craft bay to dock it at."); else prout("Ye Faerie Queene had no shuttle craft."); @@ -295,44 +295,44 @@ void shuttle(void) else prout("Shuttle craft is now serving Big Macs."); return; } - if (inorbit==0) { + if (game.inorbit==0) { crmshp(); prout(" not in standard orbit."); return; } - if ((game.state.plnets[iplnet].known != shuttle_down) && iscraft != 1) { + if ((game.state.plnets[game.iplnet].known != shuttle_down) && game.iscraft != 1) { prout("Shuttle craft not currently available."); return; } - if (landed==-1 && game.state.plnets[iplnet].known==shuttle_down) { + if (game.landed==-1 && game.state.plnets[game.iplnet].known==shuttle_down) { prout("You will have to beam down to retrieve the shuttle craft."); return; } - if (shldup!=0 || condit == IHDOCKED) { + if (game.shldup!=0 || game.condit == IHDOCKED) { prout("Shuttle craft cannot pass through shields."); return; } - if (game.state.plnets[iplnet].known==unknown) { + if (game.state.plnets[game.iplnet].known==unknown) { prout("Spock- \"Captain, we have no information on this planet"); prout(" and Starfleet Regulations clearly state that in this situation"); prout(" you may not fly down.\""); return; } - Time = 3.0e-5*game.height; - if (Time >= 0.8*game.state.remtime) { + game.optime = 3.0e-5*game.height; + if (game.optime >= 0.8*game.state.remtime) { prout("First Officer Spock- \"Captain, I compute that such"); proutn(" a maneuver would require approximately 2d%% of our", - (int)(100*Time/game.state.remtime)); + (int)(100*game.optime/game.state.remtime)); prout("remaining time."); proutn("Are you sure this is wise?\" "); if (ja()==0) { - Time = 0.0; + game.optime = 0.0; return; } } - if (landed == 1) { + if (game.landed == 1) { /* Kirk on planet */ - if (iscraft==1) { + if (game.iscraft==1) { /* Galileo on ship! */ if (game.damage[DTRANSP]==0) { proutn("Spock- \"Would you rather use the transporter?\" "); @@ -345,10 +345,10 @@ void shuttle(void) else proutn("Rescue party"); prout(" boards Galileo and swoops toward planet surface."); - iscraft = 0; + game.iscraft = 0; skip(1); if (consumeTime()) return; - game.state.plnets[iplnet].known=shuttle_down; + game.state.plnets[game.iplnet].known=shuttle_down; prout("Trip complete."); return; } @@ -358,18 +358,18 @@ void shuttle(void) prout("shuttle craft for the trip back to the Enterprise."); skip(1); prout("The short hop begins . . ."); - game.state.plnets[iplnet].known=known; - icraft = 1; + game.state.plnets[game.iplnet].known=known; + game.icraft = 1; skip(1); - landed = -1; + game.landed = -1; if (consumeTime()) return; - iscraft = 1; - icraft = 0; - if (imine!=0) { - icrystl = 1; - cryprob = 0.05; + game.iscraft = 1; + game.icraft = 0; + if (game.imine!=0) { + game.icrystl = 1; + game.cryprob = 0.05; } - imine = 0; + game.imine = 0; prout("Trip complete."); return; } @@ -382,12 +382,12 @@ void shuttle(void) skip(1); prouts("The hangar doors open; the trip begins."); skip(1); - icraft = 1; - iscraft = 0; + game.icraft = 1; + game.iscraft = 0; if (consumeTime()) return; - game.state.plnets[iplnet].known = shuttle_down; - landed = 1; - icraft = 0; + game.state.plnets[game.iplnet].known = shuttle_down; + game.landed = 1; + game.icraft = 0; prout("Trip complete"); return; } @@ -397,14 +397,14 @@ void deathray(void) { double dprob, r = Rand(); - ididit = 0; + game.ididit = 0; skip(1); chew(); - if (ship != IHE) { + if (game.ship != IHE) { prout("Ye Faerie Queene has no death ray."); return; } - if (nenhere==0) { + if (game.nenhere==0) { prout("Sulu- \"But Sir, there are no enemies in this quadrant.\""); return; } @@ -418,7 +418,7 @@ void deathray(void) if (ja()==0) return; prout("Spock- \"Acknowledged.\""); skip(1); - ididit=1; + game.ididit=1; prouts("WHOOEE ... WHOOEE ... WHOOEE ... WHOOEE"); skip(1); prout("Crew scrambles in emergency preparation."); @@ -436,7 +436,7 @@ void deathray(void) if (r > dprob) { prouts("Sulu- \"Captain! It's working!\""); skip(2); - while (nenhere > 0) + while (game.nenhere > 0) deadkl(game.kx[1],game.ky[1],game.quad[game.kx[1]][game.ky[1]],game.kx[1],game.ky[1]); prout("Ensign Chekov- \"Congratulations, Captain!\""); if (KLINGREM == 0) finish(FWON); diff --git a/src/reports.c b/src/reports.c index f0dc134..665701e 100644 --- a/src/reports.c +++ b/src/reports.c @@ -8,11 +8,11 @@ void attakreport(int curt) if (!curt) { if (game.future[FCDBAS] < FOREVER) { prout("Starbase in %s is currently under Commander attack.", - cramlc(quadrant, batx, baty)); + cramlc(quadrant, game.batx, game.baty)); prout("It can hold out until Stardate %d.", (int)game.future[FCDBAS]); } - if (isatb == 1) { + if (game.isatb == 1) { prout("Starbase in %s is under Super-commander attack.", cramlc(quadrant, game.state.isx, game.state.isy)); prout("It can hold out until Stardate %d.", @@ -20,8 +20,8 @@ void attakreport(int curt) } } else { if (game.future[FCDBAS] < FOREVER) - proutn("Base in %i - %i attacked by C. Alive until %.1f", batx, baty, game.future[FCDBAS]); - if (isatb == 1) + proutn("Base in %i - %i attacked by C. Alive until %.1f", game.batx, game.baty, game.future[FCDBAS]); + if (game.isatb == 1) proutn("Base in %i - %i attacked by S. Alive until %.1f", game.state.isx, game.state.isy, game.future[FSCDBAS]); } clreol(); @@ -33,14 +33,14 @@ void report(void) char *s1,*s2,*s3; chew(); - s1 = (thawed?"thawed ":""); - switch (length) { + s1 = (game.thawed?"game.thawed ":""); + switch (game.length) { case 1: s2="short"; break; case 2: s2="medium"; break; case 4: s2="long"; break; default: s2="unknown length"; break; } - switch (skill) { + switch (game.skill) { case SKILL_NOVICE: s3="novice"; break; case SKILL_FAIR: s3="fair"; break; case SKILL_GOOD: s3="good"; break; @@ -50,59 +50,59 @@ void report(void) } prout(""); prout("You %s playing a %s%s %s game.", - alldone? "were": "are now", s1, s2, s3); - if (skill>SKILL_GOOD && thawed && !alldone) prout("No plaque is allowed."); - if (tourn) prout("This is tournament game %d.", tourn); + game.alldone? "were": "are now", s1, s2, s3); + if (game.skill>SKILL_GOOD && game.thawed && !game.alldone) prout("No plaque is allowed."); + if (game.tourn) prout("This is tournament game %d.", game.tourn); prout("Your secret password is \"%s\"",game.passwd); proutn("%d of %d Klingons have been killed", KLINGKILLED, INKLINGTOT); if (NKILLC) prout(", including %d Commander%s.", NKILLC, NKILLC==1?"":"s"); else if (NKILLK + NKILLSC > 0) prout(", but no Commanders."); else prout("."); - if (skill > SKILL_FAIR) prout("The Super Commander has %sbeen destroyed.", + if (game.skill > SKILL_FAIR) prout("The Super Commander has %sbeen destroyed.", game.state.nscrem?"not ":""); - if (game.state.rembase != inbase) { + if (game.state.rembase != game.inbase) { proutn("There "); - if (inbase-game.state.rembase==1) proutn("has been 1 base"); + if (game.inbase-game.state.rembase==1) proutn("has been 1 base"); else { - proutn("have been %d bases", inbase-game.state.rembase); + proutn("have been %d bases", game.inbase-game.state.rembase); } prout(" destroyed, %d remaining.", game.state.rembase); } - else prout("There are %d bases.", inbase); - if (game.damage[DRADIO] == 0.0 || condit == IHDOCKED || iseenit) { + else prout("There are %d bases.", game.inbase); + if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED || game.iseenit) { /* Don't report this if not seen and either the radio is dead or not at base! */ attakreport(0); - iseenit = 1; + game.iseenit = 1; } - if (casual) prout("%d casualt%s suffered so far.", - casual, casual==1? "y" : "ies"); - if (nhelp) prout("There were %d call%s for help.", - nhelp, nhelp==1 ? "" : "s"); - if (ship == IHE) { + if (game.casual) prout("%d casualt%s suffered so far.", + game.casual, game.casual==1? "y" : "ies"); + if (game.nhelp) prout("There were %d call%s for help.", + game.nhelp, game.nhelp==1 ? "" : "s"); + if (game.ship == IHE) { proutn("You have "); - if (nprobes) proutn("%d", nprobes); + if (game.nprobes) proutn("%d", game.nprobes); else proutn("no"); proutn(" deep space probe"); - if (nprobes!=1) proutn("s"); + if (game.nprobes!=1) proutn("s"); prout("."); } - if ((game.damage[DRADIO] == 0.0 || condit == IHDOCKED)&& + if ((game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED)&& game.future[FDSPROB] != FOREVER) { - if (isarmed) + if (game.isarmed) proutn("An armed deep space probe is in"); else proutn("A deep space probe is in"); - proutn(cramlc(quadrant, probecx, probecy)); + proutn(cramlc(quadrant, game.probecx, game.probecy)); prout("."); } - if (icrystl) { - if (cryprob <= .05) + if (game.icrystl) { + if (game.cryprob <= .05) prout("Dilithium crystals aboard ship... not yet used."); else { int i=0; double ai = 0.05; - while (cryprob > ai) { + while (game.cryprob > ai) { ai *= 2.0; i++; } @@ -119,7 +119,7 @@ void lrscan(void) chew(); if (game.damage[DLRSENS] != 0.0) { /* Now allow base's sensors if docked */ - if (condit != IHDOCKED) { + if (game.condit != IHDOCKED) { prout("LONG-RANGE SENSORS DAMAGED."); return; } @@ -128,9 +128,9 @@ void lrscan(void) else { prout("Long-range scan"); } - for (x = quadx-1; x <= quadx+1; x++) { + for (x = game.quadx-1; x <= game.quadx+1; x++) { proutn(" "); - for (y = quady-1; y <= quady+1; y++) { + for (y = game.quady-1; y <= game.quady+1; y++) { if (!VALID_QUADRANT(x, y)) proutn(" -1"); else { @@ -164,7 +164,7 @@ void dreprt(void) prout(" %16s %8.2f %8.2f", device[i], game.damage[i]+0.05, - docfac*game.damage[i]+0.005); + game.docfac*game.damage[i]+0.005); } } if (!jdam) prout("All devices functional."); @@ -174,7 +174,7 @@ void rechart(void) /* update the chart in the Enterprise's computer from galaxy data */ { int i, j; - lastchart = game.state.date; + game.lastchart = game.state.date; for_quadrants(i) for_quadrants(j) if (game.state.galaxy[i][j].charted) { @@ -192,21 +192,21 @@ void chart(int nn) if (game.damage[DRADIO] == 0.0) rechart(); - if (lastchart < game.state.date && condit == IHDOCKED) { + if (game.lastchart < game.state.date && game.condit == IHDOCKED) { prout("Spock- \"I revised the Star Chart from the starbase's records.\""); rechart(); } if (nn == 0) prout(" STAR CHART FOR THE KNOWN GALAXY"); - if (game.state.date > lastchart) + if (game.state.date > game.lastchart) prout("(Last surveillance update %d stardates ago).", - (int)(game.state.date-lastchart)); + (int)(game.state.date-game.lastchart)); prout(" 1 2 3 4 5 6 7 8"); for_quadrants(i) { proutn("%d |", i); for_quadrants(j) { char buf[4]; - if ((game.options & OPTION_SHOWME) && i == quadx && j == quady) + if ((game.options & OPTION_SHOWME) && i == game.quadx && j == game.quady) proutn("<"); else proutn(" "); @@ -219,7 +219,7 @@ void chart(int nn) else strcpy(buf, "..."); proutn(buf); - if ((game.options & OPTION_SHOWME) && i == quadx && j == quady) + if ((game.options & OPTION_SHOWME) && i == game.quadx && j == game.quady) proutn(">"); else proutn(" "); @@ -231,16 +231,16 @@ void chart(int nn) static void sectscan(int goodScan, int i, int j) { - if (goodScan || (abs(i-sectx)<= 1 && abs(j-secty) <= 1)){ + if (goodScan || (abs(i-game.sectx)<= 1 && abs(j-game.secty) <= 1)){ if ((game.quad[i][j]==IHMATER0)||(game.quad[i][j]==IHMATER1)||(game.quad[i][j]==IHMATER2)||(game.quad[i][j]==IHE)||(game.quad[i][j]==IHF)){ - switch (condit) { + switch (game.condit) { case IHRED: textcolor(RED); break; case IHGREEN: textcolor(GREEN); break; case IHYELLOW: textcolor(YELLOW); break; case IHDOCKED: textcolor(CYAN); break; case IHDEAD: textcolor(BROWN); } - if (game.quad[i][j] != ship) + if (game.quad[i][j] != game.ship) highvideo(); } proutn("%c ",game.quad[i][j]); @@ -259,8 +259,8 @@ static void status(int req) proutn("Stardate %.1f, Time Left %.2f", game.state.date, game.state.remtime); break; case 2: - if (condit != IHDOCKED) newcnd(); - switch (condit) { + if (game.condit != IHDOCKED) newcnd(); + switch (game.condit) { case IHRED: cp = "RED"; break; case IHGREEN: cp = "GREEN"; break; case IHYELLOW: cp = "YELLOW"; break; @@ -274,40 +274,40 @@ static void status(int req) break; case 3: proutn("Position %d - %d , %d - %d", - quadx, quady, sectx, secty); + game.quadx, game.quady, game.sectx, game.secty); break; case 4: proutn("Life Support "); if (game.damage[DLIFSUP] != 0.0) { - if (condit == IHDOCKED) + if (game.condit == IHDOCKED) proutn("DAMAGED, Base provides"); else - proutn("DAMAGED, reserves=%4.2f", lsupres); + proutn("DAMAGED, reserves=%4.2f", game.lsupres); } else proutn("ACTIVE"); break; case 5: - proutn("Warp Factor %.1f", warpfac); + proutn("Warp Factor %.1f", game.warpfac); break; case 6: - proutn("Energy %.2f", energy); - if (icrystl && (game.options & OPTION_SHOWME)) /* ESR */ + proutn("Energy %.2f", game.energy); + if (game.icrystl && (game.options & OPTION_SHOWME)) /* ESR */ proutn(" (have crystals)"); break; case 7: - proutn("Torpedoes %d", torps); + proutn("Torpedoes %d", game.torps); break; case 8: proutn("Shields "); if (game.damage[DSHIELD] != 0) proutn("DAMAGED,"); - else if (shldup) + else if (game.shldup) proutn("UP,"); else proutn("DOWN,"); proutn(" %d%% %.1f units", - (int)((100.0*shield)/inshld + 0.5), shield); + (int)((100.0*game.shield)/game.inshld + 0.5), game.shield); break; case 9: proutn("Klingons Left %d", KLINGREM); @@ -328,7 +328,7 @@ int srscan(int l) case SCAN_FULL: // SRSCAN if (game.damage[DSRSENS] != 0) { /* Allow base's sensors if docked */ - if (condit != IHDOCKED) { + if (game.condit != IHDOCKED) { prout(" S.R. SENSORS DAMAGED!"); goodScan=FALSE; } @@ -337,10 +337,10 @@ int srscan(int l) } else prout(" Short-range scan"); if (goodScan && !game.damage[DRADIO]) { - game.state.chart[quadx][quady].klingons = game.state.galaxy[quadx][quady].klingons; - game.state.chart[quadx][quady].starbase = game.state.galaxy[quadx][quady].starbase; - game.state.chart[quadx][quady].stars = game.state.galaxy[quadx][quady].stars; - game.state.galaxy[quadx][quady].charted = TRUE; + game.state.chart[game.quadx][game.quady].klingons = game.state.galaxy[game.quadx][game.quady].klingons; + game.state.chart[game.quadx][game.quady].starbase = game.state.galaxy[game.quadx][game.quady].starbase; + game.state.chart[game.quadx][game.quady].stars = game.state.galaxy[game.quadx][game.quady].stars; + game.state.galaxy[game.quadx][game.quady].charted = TRUE; } scan(); if (isit("chart")) nn = TRUE; @@ -357,7 +357,7 @@ int srscan(int l) break; if (req > sizeof(requests)/sizeof(requests[0])) { prout("UNRECOGNIZED REQUEST. Legal requests are:"); - prout(" date, condition, position, lsupport, warpfactor,"); + prout(" date, game.condition, position, lsupport, game.warpfactor,"); prout(" energy, torpedoes, shields, klingons, time, bases."); return FALSE; } @@ -371,7 +371,7 @@ int srscan(int l) leftside=FALSE; break; } - if (condit != IHDOCKED) newcnd(); + if (game.condit != IHDOCKED) newcnd(); for (i = 1; i <= max(QUADSIZE, sizeof(requests)/sizeof(requests[0])); i++) { jj = (req!=0 ? req : i); if (leftside && i <= QUADSIZE) { @@ -425,9 +425,9 @@ void eta(void) ix2 = aaitem + 0.5; } else { - if (quady>ix1) ix2 = 1; + if (game.quady>ix1) ix2 = 1; else ix2=QUADSIZE; - if (quadx>iy1) iy2 = 1; + if (game.quadx>iy1) iy2 = 1; else iy2=QUADSIZE; } @@ -435,8 +435,8 @@ void eta(void) huh(); return; } - dist = sqrt(square(iy1-quadx+0.1*(iy2-sectx))+ - square(ix1-quady+0.1*(ix2-secty))); + game.dist = sqrt(square(iy1-game.quadx+0.1*(iy2-game.sectx))+ + square(ix1-game.quady+0.1*(ix2-game.secty))); wfl = FALSE; if (prompt) prout("Answer \"no\" if you don't know the value:"); @@ -447,7 +447,7 @@ void eta(void) ttime = aaitem; if (ttime > game.state.date) ttime -= game.state.date; // Actually a star date if (ttime <= 1e-10 || - (twarp=(floor(sqrt((10.0*dist)/ttime)*10.0)+1.0)/10.0) > 10) { + (twarp=(floor(sqrt((10.0*game.dist)/ttime)*10.0)+1.0)/10.0) > 10) { prout("We'll never make it, sir."); chew(); return; @@ -470,11 +470,11 @@ void eta(void) } while (TRUE) { chew(); - ttime = (10.0*dist)/square(twarp); - tpower = dist*twarp*twarp*twarp*(shldup+1); - if (tpower >= energy) { + ttime = (10.0*game.dist)/square(twarp); + tpower = game.dist*twarp*twarp*twarp*(game.shldup+1); + if (tpower >= game.energy) { prout("Insufficient energy, sir."); - if (shldup==0 || tpower > energy*2.0) { + if (game.shldup==0 || tpower > game.energy*2.0) { if (!wfl) return; proutn("New warp factor to try? "); if (scan() == IHREAL) { @@ -498,7 +498,7 @@ void eta(void) } else proutn("Remaining"); - prout(" energy will be %.2f.", energy-tpower); + prout(" game.energy will be %.2f.", game.energy-tpower); if (wfl) { prout("And we will arrive at stardate %.2f.", game.state.date+ttime); @@ -514,9 +514,9 @@ void eta(void) prout("Unfortunately, the Federation will be destroyed by then."); if (twarp > 6.0) prout("You'll be taking risks at that speed, Captain"); - if ((isatb==1 && game.state.isy == ix1 && game.state.isx == iy1 && + if ((game.isatb==1 && game.state.isy == ix1 && game.state.isx == iy1 && game.future[FSCDBAS]< ttime+game.state.date)|| - (game.future[FCDBAS] 0; j--) { /* Improved placement algorithm to spread out bases */ double distq = square(ix-game.state.baseqx[j]) + square(iy-game.state.baseqy[j]); - if (distq < 6.0*(BASEMAX+1-inbase) && Rand() < 0.75) { + if (distq < 6.0*(BASEMAX+1-game.inbase) && Rand() < 0.75) { contflag = TRUE; #ifdef DEBUG prout("DEBUG: Abandoning base #%d at %d-%d", i, ix, iy); @@ -272,7 +272,7 @@ void setup(int needprompt) break; } #ifdef DEBUG - else if (distq < 6.0 * (BASEMAX+1-inbase)) { + else if (distq < 6.0 * (BASEMAX+1-game.inbase)) { prout("DEBUG: saving base #%d, close to #%d", i, j); } #endif @@ -285,8 +285,8 @@ void setup(int needprompt) game.state.chart[ix][iy].starbase = 1; } // Position ordinary Klingon Battle Cruisers - krem = inkling; - klumper = 0.25*skill*(9.0-length)+1.0; + krem = game.inkling; + klumper = 0.25*game.skill*(9.0-game.length)+1.0; if (klumper > 9) klumper = 9; // Can't have more than 9 in quadrant do { double r = Rand(); @@ -302,11 +302,11 @@ void setup(int needprompt) #ifdef DEBUG klumper = 1; #endif - for (i = 1; i <= incom; i++) { + for (i = 1; i <= game.incom; i++) { do { do { /* IF debugging, put commanders by bases, always! */ #ifdef DEBUG - if (idebug && klumper <= inbase) { + if (game.idebug && klumper <= game.inbase) { ix = game.state.baseqx[klumper]; iy = game.state.baseqy[klumper]; klumper++; @@ -327,7 +327,7 @@ void setup(int needprompt) game.state.cy[i] = iy; } // Locate planets in galaxy - for (i = 0; i < inplan; i++) { + for (i = 0; i < game.inplan; i++) { do iran(GALSIZE, &ix, &iy); while (game.state.galaxy[ix][iy].planets); game.state.galaxy[ix][iy].planets = 1; game.state.plnets[i].x = ix; @@ -361,17 +361,17 @@ void setup(int needprompt) skip(2); game.state.snap = 0; - if (skill == SKILL_NOVICE) { + if (game.skill == SKILL_NOVICE) { prout("It is stardate %d. The Federation is being attacked by", (int)game.state.date); prout("a deadly Klingon invasion force. As captain of the United"); prout("Starship U.S.S. Enterprise, it is your mission to seek out"); prout("and destroy this invasion force of %d battle cruisers.", INKLINGTOT); - prout("You have an initial allotment of %d stardates to complete", (int)intime); + prout("You have an initial allotment of %d stardates to complete", (int)game.intime); prout("your mission. As you proceed you may be given more time."); prout(""); - prout("You will have %d supporting starbases.", inbase); + prout("You will have %d supporting starbases.", game.inbase); proutn("Starbase locations- "); } else { @@ -380,34 +380,34 @@ void setup(int needprompt) prout("%d Klingons.", INKLINGTOT); prout("An unknown number of Romulans."); if (game.state.nscrem) prout("and one (GULP) Super-Commander."); - prout("%d stardates.",(int)intime); - proutn("%d starbases in ", inbase); + prout("%d stardates.",(int)game.intime); + proutn("%d starbases in ", game.inbase); } - for (i = 1; i <= inbase; i++) { + for (i = 1; i <= game.inbase; i++) { proutn(cramlc(0, game.state.baseqx[i], game.state.baseqy[i])); proutn(" "); } skip(2); proutn("The Enterprise is currently in "); - proutn(cramlc(quadrant, quadx, quady)); + proutn(cramlc(quadrant, game.quadx, game.quady)); proutn(" "); - proutn(cramlc(sector, sectx, secty)); + proutn(cramlc(sector, game.sectx, game.secty)); skip(2); prout("Good Luck!"); if (game.state.nscrem) prout(" YOU'LL NEED IT."); waitfor(); newqad(0); - if (nenhere-iqhere-ithere) shldup=1.0; - if (neutz) attack(0); // bad luck to start in a Romulan Neutral Zone + if (game.nenhere-iqhere-game.ithere) game.shldup=1.0; + if (game.neutz) attack(0); // bad luck to start in a Romulan Neutral Zone } int choose(int needprompt) { while (TRUE) { - tourn = 0; - thawed = 0; - skill = SKILL_NONE; - length = 0; + game.tourn = 0; + game.thawed = 0; + game.skill = SKILL_NONE; + game.length = 0; if (needprompt) /* Can start with command line options */ proutn("Would you like a regular, tournament, or saved game? "); scan(); @@ -420,7 +420,7 @@ int choose(int needprompt) chew(); continue; // We don't want a blank entry } - tourn = (int)aaitem; + game.tourn = (int)aaitem; thingx = -1; srand((unsigned int)(int)aaitem); break; @@ -429,7 +429,7 @@ int choose(int needprompt) if (thaw()) continue; chew(); if (*game.passwd==0) continue; - if (!alldone) thawed = 1; // No plaque if not finished + if (!game.alldone) game.thawed = 1; // No plaque if not finished report(); waitfor(); return TRUE; @@ -440,16 +440,16 @@ int choose(int needprompt) prout("\"?"); chew(); } - while (length==0 || skill==SKILL_NONE) { + while (game.length==0 || game.skill==SKILL_NONE) { if (scan() == IHALPHA) { - if (isit("short")) length = 1; - else if (isit("medium")) length = 2; - else if (isit("long")) length = 4; - else if (isit("novice")) skill = SKILL_NOVICE; - else if (isit("fair")) skill = SKILL_FAIR; - else if (isit("good")) skill = SKILL_GOOD; - else if (isit("expert")) skill = SKILL_EXPERT; - else if (isit("emeritus")) skill = SKILL_EMERITUS; + if (isit("short")) game.length = 1; + else if (isit("medium")) game.length = 2; + else if (isit("long")) game.length = 4; + else if (isit("novice")) game.skill = SKILL_NOVICE; + else if (isit("fair")) game.skill = SKILL_FAIR; + else if (isit("good")) game.skill = SKILL_GOOD; + else if (isit("expert")) game.skill = SKILL_EXPERT; + else if (isit("emeritus")) game.skill = SKILL_EMERITUS; else { proutn("What is \""); proutn(citem); @@ -458,8 +458,8 @@ int choose(int needprompt) } else { chew(); - if (length==0) proutn("Would you like a Short, Medium, or Long game? "); - else if (skill == SKILL_NONE) proutn("Are you a Novice, Fair, Good, Expert, or Emeritus player? "); + if (game.length==0) proutn("Would you like a Short, Medium, or Long game? "); + else if (game.skill == SKILL_NONE) proutn("Are you a Novice, Fair, Good, Expert, or Emeritus player? "); } } // Choose game options -- added by ESR for SST2K @@ -487,27 +487,27 @@ int choose(int needprompt) } setpassword(); #ifdef DEBUG - if (strcmp(game.passwd, "debug")==0) idebug = 1; + if (strcmp(game.passwd, "debug")==0) game.idebug = 1; #endif // Use parameters to generate initial values of things - damfac = 0.5 * skill; + game.damfac = 0.5 * game.skill; game.state.rembase = 2.0 + Rand()*(BASEMAX-2.0); - inbase = game.state.rembase; + game.inbase = game.state.rembase; if (game.options & OPTION_PLANETS) - inplan = (PLNETMAX/2) + (PLNETMAX/2+1)*Rand(); - game.state.nromrem = inrom = (2.0+Rand())*skill; - game.state.nscrem = inscom = (skill > SKILL_FAIR ? 1 : 0); - game.state.remtime = 7.0 * length; - intime = game.state.remtime; - game.state.remkl = inkling = 2.0*intime*((skill+1 - 2*Rand())*skill*0.1+.15); - incom = skill + 0.0625*inkling*Rand(); - game.state.remcom = min(10, incom); - incom = game.state.remcom; - game.state.remres = (inkling+4*incom)*intime; - inresor = game.state.remres; - if (inkling > 50) { - inbase = (game.state.rembase += 1); + game.inplan = (PLNETMAX/2) + (PLNETMAX/2+1)*Rand(); + game.state.nromrem = game.inrom = (2.0+Rand())*game.skill; + game.state.nscrem = game.inscom = (game.skill > SKILL_FAIR ? 1 : 0); + game.state.remtime = 7.0 * game.length; + game.intime = game.state.remtime; + game.state.remkl = game.inkling = 2.0*game.intime*((game.skill+1 - 2*Rand())*game.skill*0.1+.15); + game.incom = game.skill + 0.0625*game.inkling*Rand(); + game.state.remcom = min(10, game.incom); + game.incom = game.state.remcom; + game.state.remres = (game.inkling+4*game.incom)*game.intime; + game.inresor = game.state.remres; + if (game.inkling > 50) { + game.inbase = (game.state.rembase += 1); } return FALSE; } @@ -521,11 +521,11 @@ void dropin(int iquad, int *ix, int *iy) void newcnd(void) { - condit = IHGREEN; - if (energy < 1000.0) condit = IHYELLOW; - if (game.state.galaxy[quadx][quady].klingons || game.state.galaxy[quadx][quady].romulans) - condit = IHRED; - if (!alive) condit=IHDEAD; + game.condit = IHGREEN; + if (game.energy < 1000.0) game.condit = IHYELLOW; + if (game.state.galaxy[game.quadx][game.quady].klingons || game.state.galaxy[game.quadx][game.quady].romulans) + game.condit = IHRED; + if (!game.alive) game.condit=IHDEAD; } @@ -533,101 +533,101 @@ void newqad(int shutup) { int i, j, ix, iy, nplan; - iattak = 1; - justin = 1; - basex = basey = 0; - klhere = 0; - comhere = 0; - plnetx = plnety = 0; - ishere = 0; - irhere = 0; - iplnet = 0; - nenhere = 0; - neutz = 0; - inorbit = 0; - landed = -1; - ientesc = 0; - ithere = 0; + game.iattak = 1; + game.justin = 1; + game.basex = game.basey = 0; + game.klhere = 0; + game.comhere = 0; + game.plnetx = game.plnety = 0; + game.ishere = 0; + game.irhere = 0; + game.iplnet = 0; + game.nenhere = 0; + game.neutz = 0; + game.inorbit = 0; + game.landed = -1; + game.ientesc = 0; + game.ithere = 0; iqhere=0; iqengry=0; - iseenit = 0; - if (iscate) { + game.iseenit = 0; + if (game.iscate) { // Attempt to escape Super-commander, so tbeam back! - iscate = 0; - ientesc = 1; + game.iscate = 0; + game.ientesc = 1; } // Clear quadrant for_sectors(i) for_sectors(j) game.quad[i][j] = IHDOT; // cope with supernova - if (game.state.galaxy[quadx][quady].supernova) + if (game.state.galaxy[game.quadx][game.quady].supernova) return; - klhere = game.state.galaxy[quadx][quady].klingons; - irhere = game.state.galaxy[quadx][quady].romulans; - nplan = game.state.galaxy[quadx][quady].planets; - nenhere = klhere + irhere; + game.klhere = game.state.galaxy[game.quadx][game.quady].klingons; + game.irhere = game.state.galaxy[game.quadx][game.quady].romulans; + nplan = game.state.galaxy[game.quadx][game.quady].planets; + game.nenhere = game.klhere + game.irhere; // Position Starship - game.quad[sectx][secty] = ship; + game.quad[game.sectx][game.secty] = game.ship; - if (game.state.galaxy[quadx][quady].klingons) { + if (game.state.galaxy[game.quadx][game.quady].klingons) { // Position ordinary Klingons - for (i = 1; i <= klhere; i++) { + for (i = 1; i <= game.klhere; i++) { dropin(IHK, &ix, &iy); game.kx[i] = ix; game.ky[i] = iy; - game.kdist[i] = game.kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy)); - game.kpower[i] = Rand()*150.0 +300.0 +25.0*skill; + game.kdist[i] = game.kavgd[i] = sqrt(square(game.sectx-ix) + square(game.secty-iy)); + game.kpower[i] = Rand()*150.0 +300.0 +25.0*game.skill; } // If we need a commander, promote a Klingon for_commanders(i) - if (game.state.cx[i]==quadx && game.state.cy[i]==quady) break; + if (game.state.cx[i]==game.quadx && game.state.cy[i]==game.quady) break; if (i <= game.state.remcom) { game.quad[ix][iy] = IHC; - game.kpower[klhere] = 950.0+400.0*Rand()+50.0*skill; - comhere = 1; + game.kpower[game.klhere] = 950.0+400.0*Rand()+50.0*game.skill; + game.comhere = 1; } // If we need a super-commander, promote a Klingon - if (quadx == game.state.isx && quady == game.state.isy) { + if (game.quadx == game.state.isx && game.quady == game.state.isy) { game.quad[game.kx[1]][game.ky[1]] = IHS; - game.kpower[1] = 1175.0 + 400.0*Rand() + 125.0*skill; - iscate = game.state.remkl>1; - ishere = 1; + game.kpower[1] = 1175.0 + 400.0*Rand() + 125.0*game.skill; + game.iscate = game.state.remkl>1; + game.ishere = 1; } } // Put in Romulans if needed - for (i = klhere+1; i <= nenhere; i++) { + for (i = game.klhere+1; i <= game.nenhere; i++) { dropin(IHR, &ix, &iy); game.kx[i] = ix; game.ky[i] = iy; - game.kdist[i] = game.kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy)); - game.kpower[i] = Rand()*400.0 + 450.0 + 50.0*skill; + game.kdist[i] = game.kavgd[i] = sqrt(square(game.sectx-ix) + square(game.secty-iy)); + game.kpower[i] = Rand()*400.0 + 450.0 + 50.0*game.skill; } // If quadrant needs a starbase, put it in - if (game.state.galaxy[quadx][quady].starbase) - dropin(IHB, &basex, &basey); + if (game.state.galaxy[game.quadx][game.quady].starbase) + dropin(IHB, &game.basex, &game.basey); if (nplan) { // If quadrant needs a planet, put it in - for (i=0; i < inplan; i++) - if (game.state.plnets[i].x == quadx && game.state.plnets[i].y == quady) break; - if (i < inplan) { - iplnet = i; - dropin(IHP, &plnetx, &plnety); + for (i=0; i < game.inplan; i++) + if (game.state.plnets[i].x == game.quadx && game.state.plnets[i].y == game.quady) break; + if (i < game.inplan) { + game.iplnet = i; + dropin(IHP, &game.plnetx, &game.plnety); } } - // Check for condition + // Check for game.condition newcnd(); // And finally the stars - for (i = 1; i <= game.state.galaxy[quadx][quady].stars; i++) + for (i = 1; i <= game.state.galaxy[game.quadx][game.quady].stars; i++) dropin(IHSTAR, &ix, &iy); // Check for RNZ - if (irhere > 0 && klhere == 0) { - neutz = 1; + if (game.irhere > 0 && game.klhere == 0) { + game.neutz = 1; if (game.damage[DRADIO] <= 0.0) { skip(1); prout("LT. Uhura- \"Captain, an urgent message."); @@ -640,16 +640,16 @@ void newqad(int shutup) if (shutup==0) { // Put in THING if needed - if (thingx == quadx && thingy == quady) { + if (thingx == game.quadx && thingy == game.quady) { dropin(IHQUEST, &ix, &iy); iran(GALSIZE, &thingx, &thingy); - nenhere++; + game.nenhere++; iqhere=1; - game.kx[nenhere] = ix; - game.ky[nenhere] = iy; - game.kdist[nenhere] = game.kavgd[nenhere] = - sqrt(square(sectx-ix) + square(secty-iy)); - game.kpower[nenhere] = Rand()*6000.0 +500.0 +250.0*skill; + game.kx[game.nenhere] = ix; + game.ky[game.nenhere] = iy; + game.kdist[game.nenhere] = game.kavgd[game.nenhere] = + sqrt(square(game.sectx-ix) + square(game.secty-iy)); + game.kpower[game.nenhere] = Rand()*6000.0 +500.0 +250.0*game.skill; if (game.damage[DSRSENS] == 0.0) { skip(1); prout("MR. SPOCK- \"Captain, this is most unusual."); @@ -660,25 +660,25 @@ void newqad(int shutup) // Decide if quadrant needs a Tholian if (game.options & OPTION_THOLIAN) { - if ((skill < SKILL_GOOD && Rand() <= 0.02) || /* Lighten up if skill is low */ - (skill == SKILL_GOOD && Rand() <= 0.05) || - (skill > SKILL_GOOD && Rand() <= 0.08) + if ((game.skill < SKILL_GOOD && Rand() <= 0.02) || /* Lighten up if skill is low */ + (game.skill == SKILL_GOOD && Rand() <= 0.05) || + (game.skill > SKILL_GOOD && Rand() <= 0.08) #ifdef DEBUG || strcmp(game.passwd, "tholianx")==0 #endif ) { do { - ithx = Rand() > 0.5 ? QUADSIZE : 1; - ithy = Rand() > 0.5 ? QUADSIZE : 1; - } while (game.quad[ithx][ithy] != IHDOT); - game.quad[ithx][ithy] = IHT; - ithere = 1; - nenhere++; - game.kx[nenhere] = ithx; - game.ky[nenhere] = ithy; - game.kdist[nenhere] = game.kavgd[nenhere] = - sqrt(square(sectx-ithx) + square(secty-ithy)); - game.kpower[nenhere] = Rand()*400.0 +100.0 +25.0*skill; + game.ithx = Rand() > 0.5 ? QUADSIZE : 1; + game.ithy = Rand() > 0.5 ? QUADSIZE : 1; + } while (game.quad[game.ithx][game.ithy] != IHDOT); + game.quad[game.ithx][game.ithy] = IHT; + game.ithere = 1; + game.nenhere++; + game.kx[game.nenhere] = game.ithx; + game.ky[game.nenhere] = game.ithy; + game.kdist[game.nenhere] = game.kavgd[game.nenhere] = + sqrt(square(game.sectx-game.ithx) + square(game.secty-game.ithy)); + game.kpower[game.nenhere] = Rand()*400.0 +100.0 +25.0*game.skill; /* Reserve unocupied corners */ if (game.quad[1][1]==IHDOT) game.quad[1][1] = 'X'; if (game.quad[1][QUADSIZE]==IHDOT) game.quad[1][QUADSIZE] = 'X'; @@ -695,7 +695,7 @@ void newqad(int shutup) dropin(IHBLANK, &ix, &iy); // Take out X's in corners if Tholian present - if (ithere) { + if (game.ithere) { if (game.quad[1][1]=='X') game.quad[1][1] = IHDOT; if (game.quad[1][QUADSIZE]=='X') game.quad[1][QUADSIZE] = IHDOT; if (game.quad[QUADSIZE][1]=='X') game.quad[QUADSIZE][1] = IHDOT; @@ -710,11 +710,11 @@ void sortkl(void) // The author liked bubble sort. So we will use it. :-( - if (nenhere-iqhere-ithere < 2) return; + if (game.nenhere-iqhere-game.ithere < 2) return; do { sw = FALSE; - for (j = 1; j < nenhere; j++) + for (j = 1; j < game.nenhere; j++) if (game.kdist[j] > game.kdist[j+1]) { sw = TRUE; t = game.kdist[j]; diff --git a/src/sst.c b/src/sst.c index 75dca51..3ec832c 100644 --- a/src/sst.c +++ b/src/sst.c @@ -375,8 +375,8 @@ static void makemoves(void) drawmaps(1); while (TRUE) { /* get a command */ hitme = FALSE; - justin = 0; - Time = 0.0; + game.justin = 0; + game.optime = 0.0; i = -1; chew(); setwnd(prompt_window); @@ -386,7 +386,7 @@ static void makemoves(void) makechart(); continue; } - ididit=0; + game.ididit=0; clrscr(); setwnd(message_window); clrscr(); @@ -422,25 +422,25 @@ static void makemoves(void) break; case PHASERS: // phasers phasers(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case TORPEDO: // photons photon(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case MOVE: // move warp(1); break; case SHIELDS: // shields doshield(1); - if (ididit) { + if (game.ididit) { hitme=TRUE; - shldchg = 0; + game.shldchg = 0; } break; case DOCK: // dock dock(1); - if (ididit) attack(0); + if (game.ididit) attack(0); break; case DAMAGES: // damages dreprt(); @@ -453,7 +453,7 @@ static void makemoves(void) break; case REST: // rest wait(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case WARP: // warp setwrp(); @@ -466,22 +466,22 @@ static void makemoves(void) break; case ORBIT: // orbit orbit(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case TRANSPORT: // transport "beam" beam(); break; case MINE: // mine mine(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case CRYSTALS: // crystals usecrystals(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case SHUTTLE: // shuttle shuttle(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case PLANETS: // Planet list preport(); @@ -502,7 +502,7 @@ static void makemoves(void) break; case PROBE: probe(); // Launch probe - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case ABANDON: // Abandon Ship abandn(); @@ -513,12 +513,12 @@ static void makemoves(void) case SAVE: // Save Game freeze(FALSE); clrscr(); - if (skill > SKILL_GOOD) + if (game.skill > SKILL_GOOD) prout("WARNING--Saved games produce no plaques!"); break; case DEATHRAY: // Try a desparation measure deathray(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case DEBUGCMD: // What do we want for debug??? #ifdef DEBUG @@ -527,12 +527,12 @@ static void makemoves(void) break; case MAYDAY: // Call for help help(); - if (ididit) hitme = TRUE; + if (game.ididit) hitme = TRUE; break; case QUIT: - alldone = 1; // quit the game + game.alldone = 1; // quit the game #ifdef DEBUG - if (idebug) score(); + if (game.idebug) score(); #endif break; case HELP: @@ -541,22 +541,22 @@ static void makemoves(void) } commandhook(commands[i].name, FALSE); for (;;) { - if (alldone) break; // Game has ended + if (game.alldone) break; // Game has ended #ifdef DEBUG - if (idebug) prout("2500"); + if (game.idebug) prout("2500"); #endif - if (Time != 0.0) { + if (game.optime != 0.0) { events(); - if (alldone) break; // Events did us in + if (game.alldone) break; // Events did us in } - if (game.state.galaxy[quadx][quady].supernova) { // Galaxy went Nova! + if (game.state.galaxy[game.quadx][game.quady].supernova) { // Galaxy went Nova! atover(0); continue; } - if (hitme && justin==0) { + if (hitme && game.justin==0) { attack(2); - if (alldone) break; - if (game.state.galaxy[quadx][quady].supernova) { // went NOVA! + if (game.alldone) break; + if (game.state.galaxy[game.quadx][game.quady].supernova) { // went NOVA! atover(0); hitme = TRUE; continue; @@ -564,7 +564,7 @@ static void makemoves(void) } break; } - if (alldone) break; + if (game.alldone) break; } } @@ -607,16 +607,16 @@ int main(int argc, char **argv) clrscr(); prelim(); setup(line[0] == '\0'); - if (alldone) { + if (game.alldone) { score(); - alldone = 0; + game.alldone = 0; } else makemoves(); skip(1); stars(); skip(1); - if (tourn && alldone) { + if (game.tourn && game.alldone) { proutn("Do you want your score recorded?"); if (ja()) { chew2(); @@ -675,7 +675,7 @@ void crmena(int i, int enemy, int key, int x, int y) void crmshp(void) { char *s; - switch (ship) { + switch (game.ship) { case IHE: s = "Enterprise"; break; case IHF: s = "Faerie Queene"; break; default: s = "Ship???"; break; @@ -805,10 +805,10 @@ void debugme(void) { proutn("Reset levels? "); if (ja() != 0) { - if (energy < inenrg) energy = inenrg; - shield = inshld; - torps = intorps; - lsupres = inlsr; + if (energy < game.inenrg) energy = game.inenrg; + shield = game.inshld; + torps = game.intorps; + game.lsupres = game.inlsr; } proutn("Reset damage? "); if (ja() != 0) { @@ -817,10 +817,10 @@ void debugme(void) if (game.damage[i] > 0.0) game.damage[i] = 0.0; } - proutn("Toggle idebug? "); + proutn("Toggle game.idebug? "); if (ja() != 0) { - idebug = !idebug; - if (idebug) prout("Debug output ON"); + game.idebug = !game.idebug; + if (game.idebug) prout("Debug output ON"); else prout("Debug output OFF"); } proutn("Cause selective damage? "); @@ -864,7 +864,7 @@ void debugme(void) } proutn("Induce supernova here? "); if (ja() != 0) { - game.state.galaxy[quadx][quady].supernova = TRUE; + game.state.galaxy[game.quadx][game.quady].supernova = TRUE; atover(1); } } diff --git a/src/sst.h b/src/sst.h index 0c0e492..838bc8a 100644 --- a/src/sst.h +++ b/src/sst.h @@ -32,7 +32,7 @@ #define for_quadrants(i) for (i = 1; i <= GALSIZE; i++) #define for_sectors(i) for (i = 1; i <= QUADSIZE; i++) #define for_commanders(i) for (i = 1; i <= game.state.remcom; i++) -#define for_local_enemies(i) for (i = 1; i <= nenhere; i++) +#define for_local_enemies(i) for (i = 1; i <= game.nenhere; i++) #define for_starbases(i) for (i = 1; i <= game.state.rembase; i++) typedef struct { @@ -79,12 +79,12 @@ typedef struct { } chart[GALSIZE+1][GALSIZE+1]; // the starchart (subscript 0 not used) } snapshot; // Data that is snapshot -#define NKILLK (inkling - game.state.remkl) -#define NKILLC (incom - game.state.remcom) -#define NKILLSC (inscom - game.state.nscrem) -#define NKILLROM (inrom - game.state.nromrem) +#define NKILLK (game.inkling - game.state.remkl) +#define NKILLC (game.incom - game.state.remcom) +#define NKILLSC (game.inscom - game.state.nscrem) +#define NKILLROM (game.inrom - game.state.nromrem) #define KLINGREM (game.state.remkl + game.state.remcom + game.state.nscrem) -#define INKLINGTOT (inkling + incom + inscom) +#define INKLINGTOT (game.inkling + game.incom + game.inscom) #define KLINGKILLED (INKLINGTOT - KLINGREM) #define SKILL_NONE 0 @@ -167,186 +167,97 @@ struct game { char passwd[10]; // Self Destruct password int kx[(QUADSIZE+1)*(QUADSIZE+1)]; // enemy sector locations int ky[(QUADSIZE+1)*(QUADSIZE+1)]; - /* members with macro definitions start here */ - int inkling, - inbase, - incom, - inscom, - inrom, - instar, - intorps, - condit, - torps, - ship, - quadx, - quady, - sectx, - secty, - length, - skill, - basex, - basey, - klhere, - comhere, - casual, - nhelp, - nkinks, - ididit, - gamewon, - alive, - justin, - alldone, - shldchg, - plnetx, - plnety, - inorbit, - landed, - iplnet, - imine, - inplan, - nenhere, - ishere, - neutz, - irhere, - icraft, - ientesc, - iscraft, - isatb, - iscate, + int inkling, // Initial number of klingons + inbase, // Initial number of bases + incom, // Initial number of commanders + inscom, // Initial number of commanders + inrom, // Initial number of commanders + instar, // Initial stars + intorps, // Initial/Max torpedoes + condit, // Condition (red/yellow/green/docked) + torps, // number of torpedoes + ship, // Ship type -- 'E' is Enterprise + quadx, // where we are + quady, // + sectx, // where we are + secty, // + length, // length of game + skill, // skill level + basex, // position of base in current quadrant + basey, // + klhere, // klingons here + comhere, // commanders here + casual, // causalties + nhelp, // calls for help + nkinks, // count of energy-barrier crossings + ididit, // Action taken -- allows enemy to attack + gamewon, // Finished! + alive, // We are alive (not killed) + justin, // just entered quadrant + alldone, // game is now finished + shldchg, // shield is changing (affects efficiency) + plnetx, // location of planet in quadrant + plnety, // + inorbit, // orbiting + landed, // party on planet (1), on ship (-1) + iplnet, // planet # in quadrant + imine, // mining + inplan, // initial planets + nenhere, // number of enemies in quadrant + ishere, // super-commander in quandrant + neutz, // Romulan Neutral Zone + irhere, // Romulans in quadrant + icraft, // Kirk in Galileo + ientesc, // attempted escape from supercommander + iscraft, // =1 if craft on ship, -1 if removed from game + isatb, // =1 if super commander is attacking base + iscate, // super commander is here #ifdef DEBUG - idebug, + idebug, // debug mode #endif - iattak, - icrystl, - tourn, - thawed, - batx, - baty, - ithere, - ithx, - ithy, - iseenit, - probecx, - probecy, - proben, - isarmed, - nprobes; - double inresor, - intime, - inenrg, - inshld, - inlsr, - indate, - energy, - shield, - shldup, - warpfac, - wfacsq, - lsupres, - dist, - direc, - Time, - docfac, - resting, - damfac, - lastchart, - cryprob, - probex, - probey, - probeinx, - probeiny, - height; + iattak, // attack recursion elimination (was cracks[4]) + icrystl, // dilithium crystals aboard + tourn, // tournament number + thawed, // thawed game + batx, // base coordinates being attacked + baty, // + ithere, // Tholian is here + ithx, // coordinates of Tholian + ithy, // + iseenit, // seen base attack report + probecx, // current probe quadrant + probecy, // + proben, // number of moves for probe + isarmed, // probe is armed + nprobes; // number of probes available + double inresor, // initial resources + intime, // initial time + inenrg, // initial/max energy + inshld, // initial/max shield + inlsr, // initial life support resources + indate, // initial date + energy, // energy level + shield, // shield level + shldup, // shields are up + warpfac, // warp speed + wfacsq, // squared warp factor + lsupres, // life support reserves + dist, // movement distance + direc, // movement direction + optime, // time taken by current operation + docfac, // repair factor when docking (constant?) + resting, // rest time + damfac, // damage factor + lastchart, // time star chart was last updated + cryprob, // probability that crystal will work + probex, // location of probe + probey, // + probeinx, // probe x,y increment + probeiny, // + height; // height of orbit around planet }; extern struct game game; -#define inkling game.inkling // Initial number of klingons -#define inbase game.inbase // Initial number of bases -#define incom game.incom // Initian number of commanders -#define inscom game.inscom // Initian number of commanders -#define inrom game.inrom // Initian number of commanders -#define instar game.instar // Initial stars -#define intorps game.intorps // Initial/Max torpedoes -#define condit game.condit // Condition (red/yellow/green/docked) -#define torps game.torps // number of torpedoes -#define ship game.ship // Ship type -- 'E' is Enterprise -#define quadx game.quadx // where we are -#define quady game.quady // -#define sectx game.sectx // where we are -#define secty game.secty // -#define length game.length // length of game -#define skill game.skill // skill level -#define basex game.basex // position of base in current quad -#define basey game.basey // -#define klhere game.klhere // klingons here -#define comhere game.comhere // commanders here -#define casual game.casual // causalties -#define nhelp game.nhelp // calls for help -#define nkinks game.nkinks // -#define ididit game.ididit // Action taken -- allows enemy to attack -#define gamewon game.gamewon // Finished! -#define alive game.alive // We are alive (not killed) -#define justin game.justin // just entered quadrant -#define alldone game.alldone // game is now finished -#define shldchg game.shldchg // shield is changing (affects efficiency) -#define plnetx game.plnetx // location of planet in quadrant -#define plnety game.plnety // -#define inorbit game.inorbit // orbiting -#define landed game.landed // party on planet (1), on ship (-1) -#define iplnet game.iplnet // planet # in quadrant -#define imine game.imine // mining -#define inplan game.inplan // initial planets -#define nenhere game.nenhere // Number of enemies in quadrant -#define ishere game.ishere // Super-commander in quandrant -#define neutz game.neutz // Romulan Neutral Zone -#define irhere game.irhere // Romulans in quadrant -#define icraft game.icraft // Kirk in Galileo -#define ientesc game.ientesc // Attempted escape from supercommander -#define iscraft game.iscraft // =1 if craft on ship, -1 if removed from game -#define isatb game.isatb // =1 if SuperCommander is attacking base -#define iscate game.iscate // Super Commander is here -#ifdef DEBUG -#define idebug game.idebug // Debug mode -#endif -#define iattak game.iattak // attack recursion elimination (was cracks[4]) -#define icrystl game.icrystl // dilithium crystals aboard -#define tourn game.tourn // Tournament number -#define thawed game.thawed // Thawed game -#define batx game.batx // Base coordinates being attacked -#define baty game.baty // -#define ithere game.ithere // Tholean is here -#define ithx game.ithx // coordinates of tholean -#define ithy game.ithy -#define iseenit game.iseenit // Seen base attack report -#define inresor game.inresor // initial resources -#define intime game.intime // initial time -#define inenrg game.inenrg // Initial/Max Energy -#define inshld game.inshld // Initial/Max Shield -#define inlsr game.inlsr // initial life support resources -#define indate game.indate // Initial date -#define energy game.energy // Energy level -#define shield game.shield // Shield level -#define shldup game.shldup // Shields are up -#define warpfac game.warpfac // Warp speed -#define wfacsq game.wfacsq // squared warp factor -#define lsupres game.lsupres // life support reserves -#define dist game.dist // movement distance -#define direc game.direc // movement direction -#define Time game.Time // time taken by current operation -#define docfac game.docfac // repair factor when docking (constant?) -#define resting game.resting // rest time -#define damfac game.damfac // damage factor -#define lastchart game.lastchart // time star chart was last updated -#define cryprob game.cryprob // probability that crystal will work -#define probex game.probex // location of probe -#define probey game.probey -#define probecx game.probecx // current probe quadrant -#define probecy game.probecy -#define probeinx game.probeinx // Probe x,y increment -#define probeiny game.probeiny -#define proben game.proben // number of moves for probe -#define isarmed game.isarmed // Probe is armed -#define nprobes game.nprobes // number of probes available - /* the following global state doesn't need to be saved */ extern char *device[NDEVICES]; extern int iscore, iskill; // Common PLAQ diff --git a/src/xio.c b/src/xio.c index 126da02..6d60490 100644 --- a/src/xio.c +++ b/src/xio.c @@ -8,8 +8,6 @@ #include #include "sst.h" -#undef length /* ugh -- must get rid of ugly #defines */ - static XtAppContext app_context; static Widget toplevel, text, form; static Widget navigation, weapons, planets, misc; -- 2.31.1