skip(1);\r
return;\r
}\r
- fwrite(&d, sizeof(d), 1, fp);\r
- fwrite(&snapsht, sizeof(snapsht), 1, fp);\r
- fwrite(quad, sizeof(quad), 1, fp);\r
- fwrite(kx, sizeof(kx), 1, fp);\r
- fwrite(ky, sizeof(ky), 1, fp);\r
- fwrite(starch, sizeof(starch), 1, fp);\r
- fwrite(kpower, sizeof(kpower), 1, fp);\r
- fwrite(kdist, sizeof(kdist), 1, fp);\r
- fwrite(kavgd, sizeof(kavgd), 1, fp);\r
- fwrite(damage, sizeof(damage), 1, fp);\r
- fwrite(future, sizeof(future), 1, fp);\r
- fwrite(&a, sizeof(a), 1, fp);\r
- fwrite(passwd, sizeof(passwd), 1, fp);\r
+ strcpy(game.magic, SSTMAGIC);\r
+ fwrite(&game, sizeof(game), 1, fp);\r
\r
fclose(fp);\r
\r
FILE *fp;\r
int key;\r
\r
- passwd[0] = '\0';\r
+ game.passwd[0] = '\0';\r
if ((key = scan()) == IHEOL) {\r
proutn("File name: ");\r
key = scan();\r
skip(1);\r
return;\r
}\r
- fread(&d, sizeof(d), 1, fp);\r
- fread(&snapsht, sizeof(snapsht), 1, fp);\r
- fread(quad, sizeof(quad), 1, fp);\r
- fread(kx, sizeof(kx), 1, fp);\r
- fread(ky, sizeof(ky), 1, fp);\r
- fread(starch, sizeof(starch), 1, fp);\r
- fread(kpower, sizeof(kpower), 1, fp);\r
- fread(kdist, sizeof(kdist), 1, fp);\r
- fread(kavgd, sizeof(kavgd), 1, fp);\r
- fread(damage, sizeof(damage), 1, fp);\r
- fread(future, sizeof(future), 1, fp);\r
- fread(&a, sizeof(a), 1, fp);\r
- fread(passwd, sizeof(passwd), 1, fp);\r
+ fread(&game, sizeof(game), 1, fp);\r
+ if (strcmp(game.magic, SSTMAGIC)) {\r
+ prout("Game file format is bad, should begin with " SSTMAGIC);\r
+ skip(1);\r
+ return;\r
+ }\r
\r
fclose(fp);\r
\r
}\r
else {\r
/* Must take shuttle craft to exit */\r
- if (damage[DSHUTTL]==-1) {\r
+ if (game.damage[DSHUTTL]==-1) {\r
prout("Ye Faerie Queene has no shuttle craft.");\r
return;\r
}\r
- if (damage[DSHUTTL]<0) {\r
+ if (game.damage[DSHUTTL]<0) {\r
prout("Shuttle craft now serving Big Mac's.");\r
return;\r
}\r
- if (damage[DSHUTTL]>0) {\r
+ if (game.damage[DSHUTTL]>0) {\r
prout("Shuttle craft damaged.");\r
return;\r
}\r
prout("Captain and crew escape in shuttle craft.");\r
prout("Remainder of ship's complement beam down");\r
prout("to nearest habitable planet.");\r
- if (d.rembase==0) {\r
+ if (game.state.rembase==0) {\r
/* Ops! no place to go... */\r
finish(FABANDN);\r
return;\r
nprobes = 0; /* No probes */\r
prout("You are captured by Klingons and released to");\r
prout("the Federation in a prisoner-of-war exchange.");\r
- nb = Rand()*d.rembase+1;\r
+ nb = Rand()*game.state.rembase+1;\r
/* Set up quadrant and position FQ adjacient to base */\r
- if (quadx!=d.baseqx[nb] || quady!=d.baseqy[nb]) {\r
- quadx = d.baseqx[nb];\r
- quady = d.baseqy[nb];\r
+ if (quadx!=game.state.baseqx[nb] || quady!=game.state.baseqy[nb]) {\r
+ quadx = game.state.baseqx[nb];\r
+ quady = game.state.baseqy[nb];\r
sectx = secty = 5;\r
newqad(1);\r
}\r
for (;;) {\r
/* position next to base by trial and error */\r
- quad[sectx][secty] = IHDOT;\r
+ game.quad[sectx][secty] = IHDOT;\r
for (l = 1; l <= 10; l++) {\r
sectx = 3.0*Rand() - 1.0 + basex;\r
secty = 3.0*Rand() - 1.0 + basey;\r
if (sectx >= 1 && sectx <= 10 &&\r
secty >= 1 && secty <= 10 &&\r
- quad[sectx][secty] == IHDOT) break;\r
+ game.quad[sectx][secty] == IHDOT) break;\r
}\r
if (l < 11) break; /* found a spot */\r
sectx=5;\r
}\r
}\r
/* Get new commission */\r
- quad[sectx][secty] = ship = IHF;\r
+ game.quad[sectx][secty] = ship = IHF;\r
prout("Starfleet puts you in command of another ship,");\r
prout("the Faerie Queene, which is antiquated but,");\r
prout("still useable.");\r
iscraft=0; /* Gallileo disappears */\r
/* Resupply ship */\r
condit=IHDOCKED;\r
- for (l = 1; l <= ndevice; l++) damage[l] = 0.0;\r
- damage[DSHUTTL] = -1;\r
+ for (l = 1; l <= NDEVICES; l++) game.damage[l] = 0.0;\r
+ game.damage[DSHUTTL] = -1;\r
energy = inenrg = 3000.0;\r
shield = inshld = 1250.0;\r
torps = intorps = 6;\r
nprobes = (int)(3.0*Rand() + 2.0); /* Give them 2-4 of these wonders */\r
warpfac = 5.0;\r
wfacsq = warpfac * warpfac;\r
- for (i=0; i <= ndevice; i++) damage[i] = 0.0;\r
+ for (i=0; i <= NDEVICES; i++) game.damage[i] = 0.0;\r
// Set up assorted game parameters\r
batx = baty = 0;\r
- d.date = indate = 100.0*(int)(31.0*Rand()+20.0);\r
- d.killk = d.killc = nkinks = nhelp = resting = casual = d.nromkl = 0;\r
- isatb = iscate = imine = icrystl = icraft = d.nsckill = d.nplankl = 0;\r
+ game.state.date = indate = 100.0*(int)(31.0*Rand()+20.0);\r
+ game.state.killk = game.state.killc = nkinks = nhelp = resting = casual = game.state.nromkl = 0;\r
+ isatb = iscate = imine = icrystl = icraft = game.state.nsckill = game.state.nplankl = 0;\r
iscraft = 1;\r
landed = -1;\r
alive = 1;\r
docfac = 0.25;\r
for (i = 1; i <= 8; i++)\r
- for (j = 1; j <= 8; j++) d.newstuf[i][j] = starch[i][j] = 0;\r
+ for (j = 1; j <= 8; j++) game.state.newstuf[i][j] = game.starch[i][j] = 0;\r
// Initialize times for extraneous events\r
- future[FSNOVA] = d.date + expran(0.5 * intime);\r
- future[FTBEAM] = d.date + expran(1.5 * (intime / d.remcom));\r
- future[FSNAP] = d.date + 1.0 + Rand(); // Force an early snapshot\r
- future[FBATTAK] = d.date + expran(0.3*intime);\r
- future[FCDBAS] = 1e30;\r
- future[FSCMOVE] = d.nscrem ? d.date+0.2777 : 1e30;\r
- future[FSCDBAS] = 1e30;\r
- future[FDSPROB] = 1e30;\r
+ game.future[FSNOVA] = game.state.date + expran(0.5 * intime);\r
+ game.future[FTBEAM] = game.state.date + expran(1.5 * (intime / game.state.remcom));\r
+ game.future[FSNAP] = game.state.date + 1.0 + Rand(); // Force an early snapshot\r
+ game.future[FBATTAK] = game.state.date + expran(0.3*intime);\r
+ game.future[FCDBAS] = 1e30;\r
+ game.future[FSCMOVE] = game.state.nscrem ? game.state.date+0.2777 : 1e30;\r
+ game.future[FSCDBAS] = 1e30;\r
+ game.future[FDSPROB] = 1e30;\r
// Starchart is functional\r
stdamtim = 1e30;\r
// Put stars in the galaxy\r
for (j=1; j<=8; j++) {\r
int k = Rand()*9.0 + 1.0;\r
instar += k;\r
- d.galaxy[i][j] = k;\r
+ game.state.galaxy[i][j] = k;\r
}\r
// Locate star bases in galaxy\r
for (i = 1; i <= inbase; i++) {\r
int contflag;\r
do {\r
do iran8(&ix, &iy);\r
- while (d.galaxy[ix][iy] >= 10);\r
+ while (game.state.galaxy[ix][iy] >= 10);\r
contflag = FALSE;\r
for (j = i-1; j > 0; j--) {\r
/* Improved placement algorithm to spread out bases */\r
- double distq = square(ix-d.baseqx[j]) + square(iy-d.baseqy[j]);\r
+ double distq = square(ix-game.state.baseqx[j]) + square(iy-game.state.baseqy[j]);\r
if (distq < 6.0*(6-inbase) && Rand() < 0.75) {\r
contflag = TRUE;\r
#ifdef DEBUG\r
- printf("DEBUG: Abandoning base #%d at %d-%d\n", i, ix, iy);\r
+ proutn("DEBUG: Abandoning base #%d at %d-%d\n", i, ix, iy);\r
#endif\r
break;\r
}\r
#ifdef DEBUG\r
else if (distq < 6.0 * (6-inbase)) {\r
- printf("DEBUG: saving base #%d, close to #%d\n", i, j);\r
+ proutn("DEBUG: saving base #%d, close to #%d\n", i, j);\r
}\r
#endif\r
}\r
} while (contflag);\r
\r
- d.baseqx[i] = ix;\r
- d.baseqy[i] = iy;\r
- starch[ix][iy] = -1;\r
- d.galaxy[ix][iy] += 10;\r
+ game.state.baseqx[i] = ix;\r
+ game.state.baseqy[i] = iy;\r
+ game.starch[ix][iy] = -1;\r
+ game.state.galaxy[ix][iy] += 10;\r
}\r
// Position ordinary Klingon Battle Cruisers\r
- krem = inkling - incom - d.nscrem;\r
+ krem = inkling - incom - game.state.nscrem;\r
klumper = 0.25*skill*(9.0-length)+1.0;\r
if (klumper > 9) klumper = 9; // Can't have more than 9 in quadrant\r
do {\r
krem -= klump;\r
klump *= 100;\r
do iran8(&ix, &iy);\r
- while (d.galaxy[ix][iy] + klump >= 1000);\r
- d.galaxy[ix][iy] += klump;\r
+ while (game.state.galaxy[ix][iy] + klump >= 1000);\r
+ game.state.galaxy[ix][iy] += klump;\r
} while (krem > 0);\r
// Position Klingon Commander Ships\r
#ifdef DEBUG\r
do { /* IF debugging, put commanders by bases, always! */\r
#ifdef DEBUG\r
if (idebug && klumper <= inbase) {\r
- ix = d.baseqx[klumper];\r
- iy = d.baseqy[klumper];\r
+ ix = game.state.baseqx[klumper];\r
+ iy = game.state.baseqy[klumper];\r
klumper++;\r
}\r
else\r
#endif\r
iran8(&ix, &iy);\r
}\r
- while ((d.galaxy[ix][iy] < 99 && Rand() < 0.75)||\r
- d.galaxy[ix][iy]>899);\r
+ while ((game.state.galaxy[ix][iy] < 99 && Rand() < 0.75)||\r
+ game.state.galaxy[ix][iy]>899);\r
// check for duplicate\r
for (j = 1; j < i; j++)\r
- if (d.cx[j]==ix && d.cy[j]==iy) break;\r
+ if (game.state.cx[j]==ix && game.state.cy[j]==iy) break;\r
} while (j < i);\r
- d.galaxy[ix][iy] += 100;\r
- d.cx[i] = ix;\r
- d.cy[i] = iy;\r
+ game.state.galaxy[ix][iy] += 100;\r
+ game.state.cx[i] = ix;\r
+ game.state.cy[i] = iy;\r
}\r
// Locate planets in galaxy\r
- for (i = 1; i <= inplan; i++) {\r
+ for (i = 0; i < inplan; i++) {\r
do iran8(&ix, &iy);\r
- while (d.newstuf[ix][iy] > 0);\r
- d.newstuf[ix][iy] = 1;\r
- d.plnets[i].x = ix;\r
- d.plnets[i].y = iy;\r
- d.plnets[i].pclass = Rand()*3.0 + 1.0; // Planet class M N or O\r
- d.plnets[i].crystals = 1.5*Rand(); // 1 in 3 chance of crystals\r
- d.plnets[i].known = 0;\r
+ while (game.state.newstuf[ix][iy] > 0);\r
+ game.state.newstuf[ix][iy] = 1;\r
+ game.state.plnets[i].x = ix;\r
+ game.state.plnets[i].y = iy;\r
+ game.state.plnets[i].pclass = Rand()*3.0; // Planet class M N or O\r
+ game.state.plnets[i].crystals = 1.5*Rand(); // 1 in 3 chance of crystals\r
+ game.state.plnets[i].known = unknown;\r
}\r
// Locate Romulans\r
- for (i = 1; i <= d.nromrem; i++) {\r
+ for (i = 1; i <= game.state.nromrem; i++) {\r
iran8(&ix, &iy);\r
- d.newstuf[ix][iy] += 10;\r
+ game.state.newstuf[ix][iy] += 10;\r
}\r
// Locate the Super Commander\r
- if (d.nscrem > 0) {\r
+ if (game.state.nscrem > 0) {\r
do iran8(&ix, &iy);\r
- while (d.galaxy[ix][iy] >= 900);\r
- d.isx = ix;\r
- d.isy = iy;\r
- d.galaxy[ix][iy] += 100;\r
+ while (game.state.galaxy[ix][iy] >= 900);\r
+ game.state.isx = ix;\r
+ game.state.isy = iy;\r
+ game.state.galaxy[ix][iy] += 100;\r
}\r
// Place thing (in tournament game, thingx == -1, don't want one!)\r
if (Rand() < 0.1 && thingx != -1) {\r
\r
// idate = date;\r
skip(3);\r
- d.snap = 0;\r
+ game.state.snap = 0;\r
\r
if (skill == 1) {\r
- printf("It is stardate %d. The Federation is being attacked by\n",\r
- (int)d.date);\r
- printf("a deadly Klingon invasion force. As captain of the United\n"\r
- "Starship U.S.S. Enterprise, it is your mission to seek out\n"\r
- "and destroy this invasion force of %d battle cruisers.\n",\r
+ prout("It is stardate %d. The Federation is being attacked by",\r
+ (int)game.state.date);\r
+ prout("a deadly Klingon invasion force. As captain of the United");\r
+ prout("Starship U.S.S. Enterprise, it is your mission to seek out");\r
+ prout("and destroy this invasion force of %d battle cruisers.",\r
inkling);\r
- printf("You have an initial allotment of %d stardates to complete\n"\r
- "your mission. As you proceed you may be given more time.\n\n"\r
- "You will have %d supporting starbases.\n"\r
- "Starbase locations- ",\r
- (int)intime, inbase);\r
+ prout("You have an initial allotment of %d stardates to complete", (int)intime);\r
+ prout("your mission. As you proceed you may be given more time.");\r
+ prout("");\r
+ prout("You will have %d supporting starbases.", inbase);\r
+ proutn("Starbase locations- ");\r
}\r
else {\r
- printf("Stardate %d.\n\n"\r
- "%d Klingons.\nAn unknown number of Romulans\n",\r
- (int)d.date, inkling);\r
- if (d.nscrem) printf("and one (GULP) Super-Commander.\n");\r
- printf("%d stardates\n%d starbases in ",(int)intime, inbase);\r
+ prout("Stardate %d.", (int)game.state.date);\r
+ prout("");\r
+ prout("%d Klingons.", inkling);\r
+ prout("An unknown number of Romulans.");\r
+ if (game.state.nscrem) prout("and one (GULP) Super-Commander.");\r
+ prout("%d stardates.",(int)intime);\r
+ proutn("%d starbases in ", inbase);\r
}\r
for (i = 1; i <= inbase; i++) {\r
- cramlc(0, d.baseqx[i], d.baseqy[i]);\r
- if (i < inbase) proutn(" ");\r
+ proutn(cramlc(0, game.state.baseqx[i], game.state.baseqy[i]));\r
+ proutn(" ");\r
}\r
skip(2);\r
- proutn("The Enterprise is currently in");\r
- cramlc(1, quadx, quady);\r
+ proutn("The Enterprise is currently in ");\r
+ proutn(cramlc(quadrant, quadx, quady));\r
proutn(" ");\r
- cramlc(2, sectx, secty);\r
+ proutn(cramlc(sector, sectx, secty));\r
skip(2);\r
prout("Good Luck!");\r
- if (d.nscrem) proutn(" YOU'LL NEED IT.");\r
+ if (game.state.nscrem) proutn(" YOU'LL NEED IT.");\r
skip(1);\r
newqad(0);\r
if (nenhere) shldup=1.0;\r
if (isit("frozen")) {\r
thaw();\r
chew();\r
- if (*passwd==0) continue;\r
+ if (*game.passwd==0) continue;\r
randomize();\r
Rand(); Rand(); Rand(); Rand();\r
if (!alldone) thawed = 1; // No plaque if not finished\r
}\r
while (TRUE) {\r
scan();\r
- strcpy(passwd, citem);\r
+ strcpy(game.passwd, citem);\r
chew();\r
- if (*passwd != 0) break;\r
+ if (*game.passwd != 0) break;\r
proutn("Please type in a secret password-");\r
}\r
#ifdef DEBUG\r
- if (strcmp(passwd, "debug")==0) idebug = 1;\r
+ if (strcmp(game.passwd, "debug")==0) idebug = 1;\r
#endif\r
\r
// Use parameters to generate initial values of things\r
damfac = 0.5 * skill;\r
- d.rembase = 3.0*Rand()+2.0;\r
- inbase = d.rembase;\r
+ game.state.rembase = 3.0*Rand()+2.0;\r
+ inbase = game.state.rembase;\r
inplan = (PLNETMAX/2) + (PLNETMAX/2+1)*Rand();\r
- d.nromrem = (2.0+Rand())*skill;\r
- d.nscrem = (skill > 2? 1 : 0);\r
- d.remtime = 7.0 * length;\r
- intime = d.remtime;\r
- d.remkl = 2.0*intime*((skill+1 - 2*Rand())*skill*0.1+.15);\r
- inkling = d.remkl;\r
+ game.state.nromrem = (2.0+Rand())*skill;\r
+ game.state.nscrem = (skill > 2? 1 : 0);\r
+ game.state.remtime = 7.0 * length;\r
+ intime = game.state.remtime;\r
+ game.state.remkl = 2.0*intime*((skill+1 - 2*Rand())*skill*0.1+.15);\r
+ inkling = game.state.remkl;\r
incom = skill + 0.0625*inkling*Rand();\r
- d.remcom= min(10, incom);\r
- incom = d.remcom;\r
- d.remres = (inkling+4*incom)*intime;\r
- inresor = d.remres;\r
+ game.state.remcom= min(10, incom);\r
+ incom = game.state.remcom;\r
+ game.state.remres = (inkling+4*incom)*intime;\r
+ inresor = game.state.remres;\r
if (inkling > 50) {\r
- inbase = (d.rembase += 1);\r
+ inbase = (game.state.rembase += 1);\r
}\r
return FALSE;\r
}\r
\r
void dropin(int iquad, int *ix, int *iy) {\r
do iran10(ix, iy);\r
- while (quad[*ix][*iy] != IHDOT);\r
- quad[*ix][*iy] = iquad;\r
+ while (game.quad[*ix][*iy] != IHDOT);\r
+ game.quad[*ix][*iy] = iquad;\r
}\r
\r
void newcnd(void) {\r
condit = IHGREEN;\r
if (energy < 1000.0) condit = IHYELLOW;\r
- if (d.galaxy[quadx][quady] > 99 || d.newstuf[quadx][quady] > 9)\r
+ if (game.state.galaxy[quadx][quady] > 99 || game.state.newstuf[quadx][quady] > 9)\r
condit = IHRED;\r
}\r
\r
\r
void newqad(int shutup) {\r
- int quadnum = d.galaxy[quadx][quady];\r
- int newnum = d.newstuf[quadx][quady];\r
+ int quadnum = game.state.galaxy[quadx][quady];\r
+ int newnum = game.state.newstuf[quadx][quady];\r
int i, j, ix, iy, nplan;\r
\r
iattak = 1;\r
}\r
// Clear quadrant\r
for (i=1; i <= 10; i++)\r
- for (j=1; j <= 10; j++) quad[i][j] = IHDOT;\r
+ for (j=1; j <= 10; j++) game.quad[i][j] = IHDOT;\r
// cope with supernova\r
if (quadnum > 999) {\r
return;\r
nenhere = klhere + irhere;\r
\r
// Position Starship\r
- quad[sectx][secty] = ship;\r
+ game.quad[sectx][secty] = ship;\r
\r
// Decide if quadrant needs a Tholian\r
if ((skill < 3 && Rand() <= 0.02) || /* Lighten up if skill is low */\r
(skill == 3 && Rand() <= 0.05) ||\r
(skill > 3 && Rand() <= 0.08)\r
#ifdef DEBUG\r
- || strcmp(passwd, "tholianx")==0\r
+ || strcmp(game.passwd, "tholianx")==0\r
#endif\r
) {\r
do {\r
ithx = Rand() > 0.5 ? 10 : 1;\r
ithy = Rand() > 0.5 ? 10 : 1;\r
- } while (quad[ithx][ithy] != IHDOT);\r
- quad[ithx][ithy] = IHT;\r
+ } while (game.quad[ithx][ithy] != IHDOT);\r
+ game.quad[ithx][ithy] = IHT;\r
ithere = 1;\r
/* Reserve unocupied corners */\r
- if (quad[1][1]==IHDOT) quad[1][1] = 'X';\r
- if (quad[1][10]==IHDOT) quad[1][10] = 'X';\r
- if (quad[10][1]==IHDOT) quad[10][1] = 'X';\r
- if (quad[10][10]==IHDOT) quad[10][10] = 'X';\r
+ if (game.quad[1][1]==IHDOT) game.quad[1][1] = 'X';\r
+ if (game.quad[1][10]==IHDOT) game.quad[1][10] = 'X';\r
+ if (game.quad[10][1]==IHDOT) game.quad[10][1] = 'X';\r
+ if (game.quad[10][10]==IHDOT) game.quad[10][10] = 'X';\r
}\r
\r
if (quadnum >= 100) {\r
quadnum -= 100*klhere;\r
for (i = 1; i <= klhere; i++) {\r
dropin(IHK, &ix, &iy);\r
- kx[i] = ix;\r
- ky[i] = iy;\r
- kdist[i] = kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy));\r
- kpower[i] = Rand()*150.0 +300.0 +25.0*skill;\r
+ game.kx[i] = ix;\r
+ game.ky[i] = iy;\r
+ game.kdist[i] = game.kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy));\r
+ game.kpower[i] = Rand()*150.0 +300.0 +25.0*skill;\r
}\r
// If we need a commander, promote a Klingon\r
- for (i = 1; i <= d.remcom ; i++) \r
- if (d.cx[i]==quadx && d.cy[i]==quady) break;\r
+ for (i = 1; i <= game.state.remcom ; i++) \r
+ if (game.state.cx[i]==quadx && game.state.cy[i]==quady) break;\r
\r
- if (i <= d.remcom) {\r
- quad[ix][iy] = IHC;\r
- kpower[klhere] = 950.0+400.0*Rand()+50.0*skill;\r
+ if (i <= game.state.remcom) {\r
+ game.quad[ix][iy] = IHC;\r
+ game.kpower[klhere] = 950.0+400.0*Rand()+50.0*skill;\r
comhere = 1;\r
}\r
\r
// If we need a super-commander, promote a Klingon\r
- if (quadx == d.isx && quady == d.isy) {\r
- quad[kx[1]][ky[1]] = IHS;\r
- kpower[1] = 1175.0 + 400.0*Rand() + 125.0*skill;\r
+ if (quadx == game.state.isx && quady == game.state.isy) {\r
+ game.quad[game.kx[1]][game.ky[1]] = IHS;\r
+ game.kpower[1] = 1175.0 + 400.0*Rand() + 125.0*skill;\r
iscate = 1;\r
ishere = 1;\r
}\r
// Put in Romulans if needed\r
for (i = klhere+1; i <= nenhere; i++) {\r
dropin(IHR, &ix, &iy);\r
- kx[i] = ix;\r
- ky[i] = iy;\r
- kdist[i] = kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy));\r
- kpower[i] = Rand()*400.0 + 450.0 + 50.0*skill;\r
+ game.kx[i] = ix;\r
+ game.ky[i] = iy;\r
+ game.kdist[i] = game.kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy));\r
+ game.kpower[i] = Rand()*400.0 + 450.0 + 50.0*skill;\r
}\r
sortkl();\r
// If quadrant needs a starbase, put it in\r
\r
if (nplan) {\r
// If quadrant needs a planet, put it in\r
- for (i=1; i <= inplan; i++)\r
- if (d.plnets[i].x == quadx && d.plnets[i].y == quady) break;\r
- if (i <= inplan) {\r
+ for (i=0; i < inplan; i++)\r
+ if (game.state.plnets[i].x == quadx && game.state.plnets[i].y == quady) break;\r
+ if (i < inplan) {\r
iplnet = i;\r
dropin(IHP, &plnetx, &plnety);\r
}\r
// Check for RNZ\r
if (irhere > 0 && klhere == 0 && basex == 0) {\r
neutz = 1;\r
- if (damage[DRADIO] <= 0.0) {\r
+ if (game.damage[DRADIO] <= 0.0) {\r
skip(1);\r
- prout("LT. UHURA- \"Captain, an urgent message.");\r
+ prout("LT. Uhura- \"Captain, an urgent message.");\r
prout(" I'll put it on audio.\" CLICK");\r
skip(1);\r
prout("INTRUDER! YOU HAVE VIOLATED THE ROMULAN NEUTRAL ZONE.");\r
if (thingx == quadx && thingy == quady) {\r
dropin(IHQUEST, &ix, &iy);\r
thingx = thingy = 0; // Transient\r
- if (damage[DSRSENS] == 0.0) {\r
+ if (game.damage[DSRSENS] == 0.0) {\r
skip(1);\r
prout("MR. SPOCK- \"Captain, this is most unusual.");\r
prout(" Please examine your short-range scan.\"");\r
\r
// Take out X's in corners if Tholian present\r
if (ithere) {\r
- if (quad[1][1]=='X') quad[1][1] = IHDOT;\r
- if (quad[1][10]=='X') quad[1][10] = IHDOT;\r
- if (quad[10][1]=='X') quad[10][1] = IHDOT;\r
- if (quad[10][10]=='X') quad[10][10] = IHDOT;\r
+ if (game.quad[1][1]=='X') game.quad[1][1] = IHDOT;\r
+ if (game.quad[1][10]=='X') game.quad[1][10] = IHDOT;\r
+ if (game.quad[10][1]=='X') game.quad[10][1] = IHDOT;\r
+ if (game.quad[10][10]=='X') game.quad[10][10] = IHDOT;\r
} \r
}\r
\r
do {\r
sw = FALSE;\r
for (j = 1; j < nenhere; j++)\r
- if (kdist[j] > kdist[j+1]) {\r
+ if (game.kdist[j] > game.kdist[j+1]) {\r
sw = TRUE;\r
- t = kdist[j];\r
- kdist[j] = kdist[j+1];\r
- kdist[j+1] = t;\r
- t = kavgd[j];\r
- kavgd[j] = kavgd[j+1];\r
- kavgd[j+1] = t;\r
- k = kx[j];\r
- kx[j] = kx[j+1];\r
- kx[j+1] = k;\r
- k = ky[j];\r
- ky[j] = ky[j+1];\r
- ky[j+1] = k;\r
- t = kpower[j];\r
- kpower[j] = kpower[j+1];\r
- kpower[j+1] = t;\r
+ t = game.kdist[j];\r
+ game.kdist[j] = game.kdist[j+1];\r
+ game.kdist[j+1] = t;\r
+ t = game.kavgd[j];\r
+ game.kavgd[j] = game.kavgd[j+1];\r
+ game.kavgd[j+1] = t;\r
+ k = game.kx[j];\r
+ game.kx[j] = game.kx[j+1];\r
+ game.kx[j+1] = k;\r
+ k = game.ky[j];\r
+ game.ky[j] = game.ky[j+1];\r
+ game.ky[j+1] = k;\r
+ t = game.kpower[j];\r
+ game.kpower[j] = game.kpower[j+1];\r
+ game.kpower[j+1] = t;\r
}\r
} while (sw);\r
}\r