}\r
fwrite(&state, sizeof(state), 1, fp);\r
fwrite(&snapsht, sizeof(snapsht), 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(&frozen, sizeof(frozen), 1, fp);\r
- fwrite(passwd, sizeof(passwd), 1, fp);\r
\r
fclose(fp);\r
\r
FILE *fp;\r
int key;\r
\r
- passwd[0] = '\0';\r
+ frozen.passwd[0] = '\0';\r
if ((key = scan()) == IHEOL) {\r
proutn("File name: ");\r
key = scan();\r
}\r
fread(&state, sizeof(state), 1, fp);\r
fread(&snapsht, sizeof(snapsht), 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(&frozen, sizeof(frozen), 1, fp);\r
- fread(passwd, sizeof(passwd), 1, fp);\r
\r
fclose(fp);\r
\r
}\r
else {\r
/* Must take shuttle craft to exit */\r
- if (damage[DSHUTTL]==-1) {\r
+ if (frozen.damage[DSHUTTL]==-1) {\r
prout("Ye Faerie Queene has no shuttle craft.");\r
return;\r
}\r
- if (damage[DSHUTTL]<0) {\r
+ if (frozen.damage[DSHUTTL]<0) {\r
prout("Shuttle craft now serving Big Mac's.");\r
return;\r
}\r
- if (damage[DSHUTTL]>0) {\r
+ if (frozen.damage[DSHUTTL]>0) {\r
prout("Shuttle craft damaged.");\r
return;\r
}\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 <= ndevice; l++) frozen.damage[l] = 0.0;\r
+ frozen.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 <= ndevice; i++) frozen.damage[i] = 0.0;\r
// Set up assorted game parameters\r
batx = baty = 0;\r
state.date = indate = 100.0*(int)(31.0*Rand()+20.0);\r
alive = 1;\r
docfac = 0.25;\r
for (i = 1; i <= 8; i++)\r
- for (j = 1; j <= 8; j++) state.newstuf[i][j] = starch[i][j] = 0;\r
+ for (j = 1; j <= 8; j++) state.newstuf[i][j] = frozen.starch[i][j] = 0;\r
// Initialize times for extraneous events\r
- future[FSNOVA] = state.date + expran(0.5 * intime);\r
- future[FTBEAM] = state.date + expran(1.5 * (intime / state.remcom));\r
- future[FSNAP] = state.date + 1.0 + Rand(); // Force an early snapshot\r
- future[FBATTAK] = state.date + expran(0.3*intime);\r
- future[FCDBAS] = 1e30;\r
- future[FSCMOVE] = state.nscrem ? state.date+0.2777 : 1e30;\r
- future[FSCDBAS] = 1e30;\r
- future[FDSPROB] = 1e30;\r
+ frozen.future[FSNOVA] = state.date + expran(0.5 * intime);\r
+ frozen.future[FTBEAM] = state.date + expran(1.5 * (intime / state.remcom));\r
+ frozen.future[FSNAP] = state.date + 1.0 + Rand(); // Force an early snapshot\r
+ frozen.future[FBATTAK] = state.date + expran(0.3*intime);\r
+ frozen.future[FCDBAS] = 1e30;\r
+ frozen.future[FSCMOVE] = state.nscrem ? state.date+0.2777 : 1e30;\r
+ frozen.future[FSCDBAS] = 1e30;\r
+ frozen.future[FDSPROB] = 1e30;\r
// Starchart is functional\r
stdamtim = 1e30;\r
// Put stars in the galaxy\r
\r
state.baseqx[i] = ix;\r
state.baseqy[i] = iy;\r
- starch[ix][iy] = -1;\r
+ frozen.starch[ix][iy] = -1;\r
state.galaxy[ix][iy] += 10;\r
}\r
// Position ordinary Klingon Battle Cruisers\r
if (isit("frozen")) {\r
thaw();\r
chew();\r
- if (*passwd==0) continue;\r
+ if (*frozen.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(frozen.passwd, citem);\r
chew();\r
- if (*passwd != 0) break;\r
+ if (*frozen.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(frozen.passwd, "debug")==0) idebug = 1;\r
#endif\r
\r
// Use parameters to generate initial values of things\r
(skill == 3 && Rand() <= 0.05) ||\r
(skill > 3 && Rand() <= 0.08)\r
#ifdef DEBUG\r
- || strcmp(passwd, "tholianx")==0\r
+ || strcmp(frozen.passwd, "tholianx")==0\r
#endif\r
) {\r
do {\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
+ frozen.kx[i] = ix;\r
+ frozen.ky[i] = iy;\r
+ frozen.kdist[i] = frozen.kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy));\r
+ frozen.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 <= state.remcom ; i++) \r
\r
if (i <= state.remcom) {\r
frozen.quad[ix][iy] = IHC;\r
- kpower[klhere] = 950.0+400.0*Rand()+50.0*skill;\r
+ frozen.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 == state.isx && quady == state.isy) {\r
- frozen.quad[kx[1]][ky[1]] = IHS;\r
- kpower[1] = 1175.0 + 400.0*Rand() + 125.0*skill;\r
+ frozen.quad[frozen.kx[1]][frozen.ky[1]] = IHS;\r
+ frozen.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
+ frozen.kx[i] = ix;\r
+ frozen.ky[i] = iy;\r
+ frozen.kdist[i] = frozen.kavgd[i] = sqrt(square(sectx-ix) + square(secty-iy));\r
+ frozen.kpower[i] = Rand()*400.0 + 450.0 + 50.0*skill;\r
}\r
sortkl();\r
// If quadrant needs a starbase, put it in\r
// Check for RNZ\r
if (irhere > 0 && klhere == 0 && basex == 0) {\r
neutz = 1;\r
- if (damage[DRADIO] <= 0.0) {\r
+ if (frozen.damage[DRADIO] <= 0.0) {\r
skip(1);\r
prout("LT. Uhura- \"Captain, an urgent message.");\r
prout(" I'll put it on audio.\" CLICK");\r
if (thingx == quadx && thingy == quady) {\r
dropin(IHQUEST, &ix, &iy);\r
thingx = thingy = 0; // Transient\r
- if (damage[DSRSENS] == 0.0) {\r
+ if (frozen.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
do {\r
sw = FALSE;\r
for (j = 1; j < nenhere; j++)\r
- if (kdist[j] > kdist[j+1]) {\r
+ if (frozen.kdist[j] > frozen.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 = frozen.kdist[j];\r
+ frozen.kdist[j] = frozen.kdist[j+1];\r
+ frozen.kdist[j+1] = t;\r
+ t = frozen.kavgd[j];\r
+ frozen.kavgd[j] = frozen.kavgd[j+1];\r
+ frozen.kavgd[j+1] = t;\r
+ k = frozen.kx[j];\r
+ frozen.kx[j] = frozen.kx[j+1];\r
+ frozen.kx[j+1] = k;\r
+ k = frozen.ky[j];\r
+ frozen.ky[j] = frozen.ky[j+1];\r
+ frozen.ky[j+1] = k;\r
+ t = frozen.kpower[j];\r
+ frozen.kpower[j] = frozen.kpower[j+1];\r
+ frozen.kpower[j+1] = t;\r
}\r
} while (sw);\r
}\r