X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fplanets.c;h=e8ead07638782af4eeeb5613ae1d83ccad115144;hp=2a68878e633ed0c8211eeebcf6153175fe7265c3;hb=aaf1baec91818fd274e6f291da6c5d813c5c1cc2;hpb=9ae916e9144e84ef1de4a86ea73a45a2bc4cc1be diff --git a/src/planets.c b/src/planets.c index 2a68878..e8ead07 100644 --- a/src/planets.c +++ b/src/planets.c @@ -12,7 +12,7 @@ static bool consumeTime(void) return false; } -void preport(void) +void survey(void) /* report on (uninhabited) planets in the galaxy */ { bool iknow = false; @@ -22,21 +22,22 @@ void preport(void) prout(_("Spock- \"Planet report follows, Captain.\"")); skip(1); for (i = 0; i < game.inplan; i++) { - if ((game.state.plnets[i].known != unknown - && game.state.plnets[i].inhabited == UNINHABITED) - || (idebug && game.state.plnets[i].w.x !=0) - ) { + if (game.state.planets[i].pclass == destroyed) + continue; + if ((game.state.planets[i].known != unknown + && game.state.planets[i].inhabited == UNINHABITED) + || idebug) { iknow = true; - if (idebug && game.state.plnets[i].known==unknown) + if (idebug && game.state.planets[i].known==unknown) proutn("(Unknown) "); - proutn(cramlc(quadrant, game.state.plnets[i].w)); + proutn(cramlc(quadrant, game.state.planets[i].w)); proutn(_(" class ")); - proutn(classes[game.state.plnets[i].pclass]); + proutn(classes[game.state.planets[i].pclass]); proutn(" "); - if (game.state.plnets[i].crystals != present) + if (game.state.planets[i].crystals != present) proutn(_("no ")); prout(_("dilithium crystals present.")); - if (game.state.plnets[i].known==shuttle_down) + if (game.state.planets[i].known==shuttle_down) prout(_(" Shuttle Craft Galileo on surface.")); } } @@ -77,41 +78,42 @@ void orbit(void) void sensor(void) /* examine planets in this quadrant */ { - skip(1); - chew(); if (damaged(DSRSENS)) { - prout(_("Short range sensors damaged.")); + if (game.options & OPTION_TTY) + prout(_("Short range sensors damaged.")); return; } - if (!game.plnet.x && (game.options & OPTION_TTY)) { - prout(_("Spock- \"No planet in this quadrant, Captain.\"")); + if (!is_valid(game.plnet)) { + if (game.options & OPTION_TTY) + prout(_("Spock- \"No planet in this quadrant, Captain.\"")); return; } - if ((game.plnet.x != 0)&& (game.state.plnets[game.iplnet].known == unknown)) { + if (game.state.planets[game.iplnet].known == unknown) { prout(_("Spock- \"Sensor scan for %s-"), cramlc(quadrant, game.quadrant)); skip(1); prout(_(" Planet at %s is of class %s."), cramlc(sector,game.plnet), - classes[game.state.plnets[game.iplnet].pclass]); - if (game.state.plnets[game.iplnet].known==shuttle_down) + classes[game.state.planets[game.iplnet].pclass]); + if (game.state.planets[game.iplnet].known==shuttle_down) prout(_(" Sensors show Galileo still on surface.")); proutn(_(" Readings indicate")); - if (game.state.plnets[game.iplnet].crystals != present) + if (game.state.planets[game.iplnet].crystals != present) proutn(_(" no")); prout(_(" dilithium crystals present.\"")); - if (game.state.plnets[game.iplnet].known == unknown) - game.state.plnets[game.iplnet].known = known; + if (game.state.planets[game.iplnet].known == unknown) + game.state.planets[game.iplnet].known = known; } } void beam(void) /* use the transporter */ { + double nrgneed = 0; chew(); skip(1); if (damaged(DTRANSP)) { prout(_("Transporter damaged.")); - if (!damaged(DSHUTTL) && (game.state.plnets[game.iplnet].known==shuttle_down || game.iscraft == onship)) { + if (!damaged(DSHUTTL) && (game.state.planets[game.iplnet].known==shuttle_down || game.iscraft == onship)) { skip(1); proutn(_("Spock- \"May I suggest the shuttle craft, Sir?\" ")); if (ja() == true) @@ -128,15 +130,44 @@ void beam(void) prout(_("Impossible to transport through shields.")); return; } - if (game.state.plnets[game.iplnet].known==unknown) { + if (game.state.planets[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 (!game.landed && game.state.planets[game.iplnet].crystals==absent) { + 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?\" ")); + if (ja() == false) { + chew(); + return; + } + } + if (!(game.options & OPTION_PLAIN)) { + nrgneed = 50 * game.skill + game.height / 100.0; + if (nrgneed > game.energy) { + prout(_("Engineering to bridge--")); + prout(_(" Captain, we don't have enough energy for transportation.")); + return; + } + if (!game.landed && nrgneed * 2 > game.energy) { + prout(_("Engineering to bridge--")); + prout(_(" Captain, we have enough energy only to transport you down to")); + prout(_(" the planet, but there wouldn't be an energy for the trip back.")); + if (game.state.planets[game.iplnet].known == shuttle_down) + prout(_(" Although the Galileo shuttle craft may still be on a surface.")); + proutn(_(" Are you sure this is wise?\" ")); + if (ja() == false) { + chew(); + return; + } + } + } if (game.landed) { /* Coming from planet */ - if (game.state.plnets[game.iplnet].known==shuttle_down) { + if (game.state.planets[game.iplnet].known==shuttle_down) { proutn(_("Spock- \"Wouldn't you rather take the Galileo?\" ")); if (ja() == true) { chew(); @@ -153,15 +184,6 @@ void beam(void) } else { /* Going to planet */ - if (game.state.plnets[game.iplnet].crystals==absent) { - 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?\" ")); - if (ja() == false) { - chew(); - return; - } - } prout(_("Scotty- \"Transporter room ready, Sir.\"")); skip(1); prout(_("Kirk and landing party prepare to beam down to planet surface.")); @@ -180,10 +202,11 @@ void beam(void) return; } prouts(". . . . . . .E.E.EEEERRRRRIIIIIOOOHWW"); + game.landed = !game.landed; + game.energy -= nrgneed; skip(2); prout(_("Transport complete.")); - game.landed = !game.landed; - if (game.landed && game.state.plnets[game.iplnet].known==shuttle_down) { + if (game.landed && game.state.planets[game.iplnet].known==shuttle_down) { prout(_("The shuttle craft Galileo is here!")); } if (!game.landed && game.imine) { @@ -203,11 +226,11 @@ void mine(void) prout(_("Mining party not on planet.")); return; } - if (game.state.plnets[game.iplnet].crystals == mined) { + if (game.state.planets[game.iplnet].crystals == mined) { prout(_("This planet has already been strip-mined for dilithium.")); return; } - else if (game.state.plnets[game.iplnet].crystals == absent) { + else if (game.state.planets[game.iplnet].crystals == absent) { prout(_("No dilithium crystals on this planet.")); return; } @@ -222,11 +245,11 @@ void mine(void) prout(_("there's no reason to mine more at this time.")); return; } - game.optime = (0.1+0.2*Rand())*game.state.plnets[game.iplnet].pclass; + game.optime = (0.1+0.2*Rand())*game.state.planets[game.iplnet].pclass; if (consumeTime()) return; prout(_("Mining operation complete.")); - game.state.plnets[game.iplnet].crystals = mined; + game.state.planets[game.iplnet].crystals = mined; game.imine = game.ididit = true; } @@ -289,7 +312,7 @@ void shuttle(void) skip(1); if(damaged(DSHUTTL)) { if (game.damage[DSHUTTL] == -1.0) { - if (game.inorbit && game.state.plnets[game.iplnet].known == shuttle_down) + if (game.inorbit && game.state.planets[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.")); @@ -305,11 +328,11 @@ void shuttle(void) prout(_(" not in standard orbit.")); return; } - if ((game.state.plnets[game.iplnet].known != shuttle_down) && game.iscraft != onship) { + if ((game.state.planets[game.iplnet].known != shuttle_down) && game.iscraft != onship) { prout(_("Shuttle craft not currently available.")); return; } - if (!game.landed && game.state.plnets[game.iplnet].known==shuttle_down) { + if (!game.landed && game.state.planets[game.iplnet].known==shuttle_down) { prout(_("You will have to beam down to retrieve the shuttle craft.")); return; } @@ -317,7 +340,7 @@ void shuttle(void) prout(_("Shuttle craft cannot pass through shields.")); return; } - if (game.state.plnets[game.iplnet].known==unknown) { + if (game.state.planets[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.\"")); @@ -354,7 +377,7 @@ void shuttle(void) skip(1); if (consumeTime()) return; - game.state.plnets[game.iplnet].known=shuttle_down; + game.state.planets[game.iplnet].known=shuttle_down; prout(_("Trip complete.")); return; } @@ -363,8 +386,9 @@ void shuttle(void) prout(_("You and your mining party board the")); prout(_("shuttle craft for the trip back to the Enterprise.")); skip(1); - prout(_("The short hop begins . . .")); - game.state.plnets[game.iplnet].known=known; + prouts(_("The short hop begins . . .")); + skip(1); + game.state.planets[game.iplnet].known=known; game.icraft = true; skip(1); game.landed = false; @@ -393,7 +417,7 @@ void shuttle(void) game.iscraft = offship; if (consumeTime()) return; - game.state.plnets[game.iplnet].known = shuttle_down; + game.state.planets[game.iplnet].known = shuttle_down; game.landed = true; game.icraft = false; prout(_("Trip complete.")); @@ -449,7 +473,7 @@ void deathray(void) while (game.nenhere > 0) deadkl(game.ks[1], game.quad[game.ks[1].x][game.ks[1].y],game.ks[1]); prout(_("Ensign Chekov- \"Congratulations, Captain!\"")); - if (KLINGREM == 0) + if ((game.state.remkl + game.state.remcom + game.state.nscrem) == 0) finish(FWON); if ((game.options & OPTION_PLAIN) == 0) { prout(_("Spock- \"Captain, I believe the `Experimental Death Ray'")); @@ -499,8 +523,8 @@ void deathray(void) proutn(_("Spock- \"I believe the word is")); prouts(_(" *ASTONISHING*")); prout(_(" Mr. Sulu.")); - for_sectors(i) - for_sectors(j) + for (i = 1; i <= QUADSIZE; i++) + for (j = 1; j <= QUADSIZE; j++) if (game.quad[i][j] == IHDOT) game.quad[i][j] = IHQUEST; prout(_(" Captain, our quadrant is now infested with"));