X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=sst.c;h=1d4ca2feb1d55d33a9e89a00d7a43326c0828f26;hp=5dfdabdca07321ce3bfda7d8688840a98c5a97c9;hb=f1af4f83e663d93c704ce0ada75ea4aa9ae3c65b;hpb=64f8a6155517ae8b894617ebd93e5eb48cdf4c0e diff --git a/sst.c b/sst.c index 5dfdabd..1d4ca2f 100644 --- a/sst.c +++ b/sst.c @@ -82,7 +82,7 @@ Here are Stas Sergeev's changes: chasing SCom can take an eternity). 5. Probe target you enter is now the destination quadrant. Before I don't - remember what it was, but it was something I had difficulty using) + remember what it was, but it was something I had difficulty using. 6. Secret password is now autogenerated. @@ -114,9 +114,7 @@ Eric Raymond's changes: 2. Status report now indicates when dilithium crystals are on board. - 3. Can now report starbases left in scrscan. - - 4. Per Dave Matuszek's remarks, Thingy state is not saved across games. + 3. Per Dave Matuszek's remarks, Thingy state is not saved across games. */ /* the input queue */ @@ -197,7 +195,7 @@ commands[] = { {"DEBUG", DEBUGCMD, 0}, #define MAYDAY 32 {"MAYDAY", MAYDAY, 0}, - {"SOS", MAYDAY, 0}, + //{"SOS", MAYDAY, 0}, {"CALL", MAYDAY, 0}, #define QUIT 33 {"QUIT", QUIT, 0}, @@ -206,12 +204,13 @@ commands[] = { }; #define NUMCOMMANDS sizeof(commands)/sizeof(commands[0]) +#define ACCEPT(i) (!commands[i].option || (commands[i].option & game.options)) static void listCommands(void) { int i, k = 0; proutn("LEGAL COMMANDS ARE:"); for (i = 0; i < NUMCOMMANDS; i++) { - if (commands[i].option && !(commands[i].option & game.options)) + if (!ACCEPT(i)) continue; if (k % 5 == 0) skip(1); @@ -239,7 +238,7 @@ static void helpme(void) setwnd(message_window); if (key == IHEOL) return; for (i = 0; i < NUMCOMMANDS; i++) { - if (strcasecmp(commands[i].name, citem)==0) { + if (ACCEPT(i) && strcasecmp(commands[i].name, citem)==0) { i = commands[i].value; break; } @@ -327,14 +326,14 @@ static void makemoves(void) setwnd(message_window); clrscr(); for (i=0; i < ABANDON; i++) - if (isit(commands[i].name)) { + if (ACCEPT(i) && isit(commands[i].name)) { v = commands[i].value; break; } if (i < ABANDON && (!commands[i].option || (commands[i].option & game.options))) break; for (; i < NUMCOMMANDS; i++) - if (strcasecmp(commands[i].name, citem) == 0) { + if (ACCEPT(i) && strcasecmp(commands[i].name, citem) == 0) { v = commands[i].value; break; } @@ -398,7 +397,7 @@ static void makemoves(void) score(); break; case SENSORS: // sensors - sensor(TRUE); + sensor(); break; case ORBIT: // orbit orbit(); @@ -485,14 +484,14 @@ static void makemoves(void) events(); if (alldone) break; // Events did us in } - if (game.state.galaxy[quadx][quady] == SUPERNOVA_PLACE) { // Galaxy went Nova! + if (game.state.galaxy[quadx][quady].supernova) { // Galaxy went Nova! atover(0); continue; } if (hitme && justin==0) { attack(2); if (alldone) break; - if (game.state.galaxy[quadx][quady] == SUPERNOVA_PLACE) { // went NOVA! + if (game.state.galaxy[quadx][quady].supernova) { // went NOVA! atover(0); hitme = TRUE; continue; @@ -509,9 +508,9 @@ int main(int argc, char **argv) { int i, option; - game.options = OPTION_ALL &~ OPTION_IOMODES; + game.options = OPTION_ALL &~ (OPTION_IOMODES | OPTION_SHOWME); if (getenv("TERM")) - game.options |= OPTION_CURSES; + game.options |= OPTION_CURSES | OPTION_SHOWME; else game.options |= OPTION_TTY; @@ -538,7 +537,7 @@ int main(int argc, char **argv) while (TRUE) { /* Play a game */ setwnd(fullscreen_window); #ifdef DEBUG - prout("INITIAL OPTIONS: %0lx\n", game.options); + prout("INITIAL OPTIONS: %0lx", game.options); #endif /* DEBUG */ clrscr(); prelim(); @@ -749,10 +748,9 @@ void debugme(void) proutn("Reset damage? "); if (ja() != 0) { int i; - for (i=0; i <= NDEVICES; i++) + for (i=0; i < NDEVICES; i++) if (game.damage[i] > 0.0) game.damage[i] = 0.0; - stdamtim = 1e30; } proutn("Toggle idebug? "); if (ja() != 0) { @@ -763,7 +761,7 @@ void debugme(void) proutn("Cause selective damage? "); if (ja() != 0) { int i, key; - for (i=1; i <= NDEVICES; i++) { + for (i=0; i < NDEVICES; i++) { proutn("Kill "); proutn(device[i]); proutn("? "); @@ -771,7 +769,6 @@ void debugme(void) key = scan(); if (key == IHALPHA && isit("y")) { game.damage[i] = 10.0; - if (i == DRADIO) stdamtim = game.state.date; } } } @@ -780,7 +777,7 @@ void debugme(void) int i; for (i = 1; i < NEVENTS; i++) { int key; - if (game.future[i] == 1e30) continue; + if (game.future[i] == FOREVER) continue; switch (i) { case FSNOVA: proutn("Supernova "); break; case FTBEAM: proutn("T Beam "); break; @@ -800,5 +797,10 @@ void debugme(void) } chew(); } + proutn("Induce supernova here? "); + if (ja() != 0) { + game.state.galaxy[quadx][quady].supernova = TRUE; + atover(1); + } } #endif