worlds enabled, they must have one in the quadrant to beam down
to; otherwise they die in space and this counts heavily against
your score. Docking at a starbase replenishes your crew.
+
+ 8. Still more BSD-Trek: we now have a weighted damage table.
+ Also, the nav subsystem (enabling automatic course
+ setting) can be damaged separately from the main computer (which
+ handles weapons targeting, ETA calculation, and self-destruct).
*/
/* the input queue */
bool idebug; // debug mode
FILE *logfp, *replayfp;
-char *device[NDEVICES] = {
- "S. R. Sensors",
- "L. R. Sensors",
- "Phasers",
- "Photon Tubes",
- "Life Support",
- "Warp Engines",
- "Impulse Engines",
- "Shields",
- "Subspace Radio",
- "Shuttle Craft",
- "Computer",
- "Transporter",
- "Shield Control",
- "Death Ray",
- "D. S. Probe"};
+char *systnames[NINHAB + 1];
+char *device[NDEVICES];
static struct
{
{"HELP", HELP, 0},
#define SEED 37
{"SEED", SEED, 0},
+#if BSD_BUG_FOR_BUG
+#define VISUAL 38
+ {"VISUAL", VISUAL, 0},
+#endif
};
#define NUMCOMMANDS sizeof(commands)/sizeof(commands[0])
/* generate a list of legal commands */
{
int i, k = 0;
- proutn("LEGAL COMMANDS ARE:");
+ proutn(_("LEGAL COMMANDS ARE:"));
for (i = 0; i < NUMCOMMANDS; i++) {
if (!ACCEPT(i))
continue;
for(;;) {
if (key == IHEOL) {
setwnd(prompt_window);
- proutn("Help on what command? ");
+ proutn(_("Help on what command? "));
key = scan();
}
setwnd(message_window);
}
if (i != NUMCOMMANDS) break;
skip(1);
- prout("Valid commands:");
listCommands();
key = IHEOL;
chew();
if (fp == NULL)
fp = fopen(DOC_NAME, "r");
if (fp == NULL) {
- prout("Spock- \"Captain, that information is missing from the");
- prout(" computer. You need to find "DOC_NAME" and put it in the");
- prout(" current directory or to "SSTDOC".\"");
+ prout(_("Spock- \"Captain, that information is missing from the"));
+ proutn(_(" computer. You need to find "));
+ proutn(DOC_NAME);
+ prout(_(" and put it in the"));
+ proutn(_(" current directory or to "));
+ proutn(SSTDOC);
+ prout(".\"");
/*
* This used to continue: "You need to find SST.DOC and put
* it in the current directory."
}
for (;;) {
if (fgets(linebuf, sizeof(linebuf), fp) == NULL) {
- prout("Spock- \"Captain, there is no information on that command.\"");
+ prout(_("Spock- \"Captain, there is no information on that command.\""));
fclose(fp);
return;
}
}
skip(1);
- prout("Spock- \"Captain, I've found the following information:\"");
+ prout(_("Spock- \"Captain, I've found the following information:\""));
skip(1);
- while (fgets(linebuf, sizeof(linebuf),fp)) {
+ while (fgets(linebuf, sizeof(linebuf), fp)) {
+ char *eol;
if (strstr(linebuf, "******"))
break;
- proutn(linebuf);
+ if ((eol = strpbrk(linebuf, "\r\n")))
+ *eol = 0;
+ prout(linebuf);
}
fclose(fp);
}
void enqueue(char *s)
/* enqueue input for the command parser */
{
+ chew();
strcpy(line, s);
}
drawmaps(1);
for(;;) { /* get a command */
hitme = false;
- game.justin = 0;
+ game.justin = false;
game.optime = 0.0;
i = -1;
chew();
warp(false);
break;
case SHIELDS: // shields
- doshield(1);
+ doshield(false);
if (game.ididit) {
- hitme=true;
- game.shldchg = 0;
+ hitme = true;
+ game.shldchg = false;
}
break;
case DOCK: // dock
- dock(1);
- if (game.ididit) attack(0);
+ dock(true);
+ if (game.ididit) attack(false);
break;
case DAMAGES: // damages
dreprt();
freeze(false);
clrscr();
if (game.skill > SKILL_GOOD)
- prout("WARNING--Saved games produce no plaques!");
+ prout(_("WARNING--Saved games produce no plaques!"));
break;
case DEATHRAY: // Try a desparation measure
deathray();
if (key == IHREAL)
seed = (int)aaitem;
break;
+#if BSD_BUG_FOR_BUG
+ case VISUAL:
+ visual(); // perform visual scan
+ break;
+#endif
}
commandhook(commands[i].name, false);
for (;;) {
continue;
}
if (hitme && !game.justin) {
- attack(2);
+ attack(true);
if (game.alldone) break;
if (game.state.galaxy[game.quadrant.x][game.quadrant.y].supernova) { // went NOVA!
atover(false);
}
}
/* where to save the input in case of bugs */
- logfp = fopen("sst-input.log", "w");
+ logfp = fopen("/usr/tmp/sst-input.log", "w");
setlinebuf(logfp);
fprintf(logfp, "seed %d\n", seed);
srand(seed);
skip(1);
if (game.tourn && game.alldone) {
- proutn("Do you want your score recorded?");
+ proutn(_("Do you want your score recorded?"));
if (ja() == true) {
chew2();
freeze(false);
}
}
- proutn("Do you want to play again? ");
+ proutn(_("Do you want to play again? "));
if (!ja()) break;
}
skip(1);
- prout("May the Great Bird of the Galaxy roost upon your home planet.");
+ prout(_("May the Great Bird of the Galaxy roost upon your home planet."));
return 0;
}
-void cramen(int i)
+void cramen(feature i)
/* print the name of an enemy */
{
/* return an enemy */
char *s;
switch (i) {
- case IHR: s = "Romulan"; break;
- case IHK: s = "Klingon"; break;
- case IHC: s = "Commander"; break;
- case IHS: s = "Super-commander"; break;
- case IHSTAR: s = "Star"; break;
- case IHP: s = "Planet"; break;
- case IHB: s = "Starbase"; break;
- case IHBLANK: s = "Black hole"; break;
- case IHT: s = "Tholian"; break;
- case IHWEB: s = "Tholian web"; break;
- case IHQUEST: s = "Stranger"; break;
+ case IHR: s = _("Romulan"); break;
+ case IHK: s = _("Klingon"); break;
+ case IHC: s = _("Commander"); break;
+ case IHS: s = _("Super-commander"); break;
+ case IHSTAR: s = _("Star"); break;
+ case IHP: s = _("Planet"); break;
+ case IHB: s = _("Starbase"); break;
+ case IHBLANK: s = _("Black hole"); break;
+ case IHT: s = _("Tholian"); break;
+ case IHWEB: s = _("Tholian web"); break;
+ case IHQUEST: s = _("Stranger"); break;
+ case IHW: s = _("Inhabited World"); break;
default: s = "Unknown??"; break;
}
proutn(s);
{
static char buf[32];
buf[0] = '\0';
- if (key == quadrant) strcpy(buf, "Quadrant ");
- else if (key == sector) strcpy(buf, "Sector ");
+ if (key == quadrant) strcpy(buf, _("Quadrant "));
+ else if (key == sector) strcpy(buf, _("Sector "));
sprintf(buf+strlen(buf), "%d - %d", w.x, w.y);
return buf;
}
-void crmena(bool stars, int enemy, enum loctype key, coord w)
+void crmena(bool stars, feature enemy, enum loctype key, coord w)
/* print an enemy and his location */
{
if (stars) proutn("***");
cramen(enemy);
- proutn(" at ");
+ proutn(_(" at "));
proutn(cramlc(key, w));
}
{
char *s;
switch (game.ship) {
- case IHE: s = "Enterprise"; break;
- case IHF: s = "Faerie Queene"; break;
+ case IHE: s = _("Enterprise"); break;
+ case IHF: s = _("Faerie Queene"); break;
default: s = "Ship???"; break;
}
proutn(s);
return rand()/(1.0 + (double)RAND_MAX);
}
-coord iran(int size)
+coord randplace(int size)
/* choose a random location */
{
coord w;
chew();
if (*citem == 'y') return true;
if (*citem == 'n') return false;
- proutn("Please answer with \"Y\" or \"N\": ");
+ proutn(_("Please answer with \"y\" or \"n\": "));
}
}
{
chew();
skip(1);
- prout("Beg your pardon, Captain?");
+ prout(_("Beg your pardon, Captain?"));
}
-int isit(char *s)
+bool isit(char *s)
/* compares s to citem and returns true if it matches to the length of s */
{
return strncasecmp(s, citem, max(1, strlen(citem))) == 0;