X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fplanets.c;h=ca8996fc360ceb843031638b84ffe855ef56b196;hp=dd04b621b9ee330409cdcc676358e48336b15493;hb=4207ce95e80fe7e2d5114079fa4255e0ad506618;hpb=d87b83a23fb7b5ac0ba610069a3ce7da8026fd80 diff --git a/src/planets.c b/src/planets.c index dd04b62..ca8996f 100644 --- a/src/planets.c +++ b/src/planets.c @@ -2,30 +2,18 @@ static char *classes[] = {"M","N","O"}; -static int consumeTime(void) +static bool consumeTime(void) +/* abort a lengthy operation if an event interrupts it */ { -/* I think most of this avoidance was caused by overlay scheme. - Let's see what happens if all events can occur here */ - -// double asave; - game.ididit = 1; -#if 0 - /* Don't worry about this */ - if (scheduled(FTBEAM) <= game.state.date+game.optime && game.state.remcom != 0 && game.condit != IHDOCKED) { - /* We are about to be tractor beamed -- operation fails */ - return 1; - } -#endif -// asave = scheduled(FSNOVA); -// unschedule(FSNOVA); /* defer supernovas */ - events(); /* Used to avoid if FSCMOVE is scheduled within time */ -// schedule(FSNOVA, asave-game.state.time); - /*fails if game over, quadrant super-novas or we've moved to new quadrant*/ - if (game.alldone || game.state.galaxy[game.quadrant.x][game.quadrant.y].supernova || game.justin != 0) return 1; - return 0; + game.ididit = true; + events(); + if (game.alldone || game.state.galaxy[game.quadrant.x][game.quadrant.y].supernova || game.justin) + return true; + return false; } void preport(void) +/* report on (uninhabited) planets in the galaxy */ { bool iknow = false; int i; @@ -35,7 +23,7 @@ void preport(void) skip(1); for (i = 0; i < game.inplan; i++) { if ((game.state.plnets[i].known != unknown - && game.state.plnets[i].crystals != 0) + && game.state.plnets[i].crystals != absent) || (idebug && game.state.plnets[i].w.x !=0) ) { iknow = true; @@ -45,16 +33,17 @@ void preport(void) proutn(_(" class ")); proutn(classes[game.state.plnets[i].pclass]); proutn(" "); - if (game.state.plnets[i].crystals <= 0) proutn(_("no ")); + if (game.state.plnets[i].crystals != present) proutn(_("no ")); prout(_("dilithium crystals present.")); if (game.state.plnets[i].known==shuttle_down) prout(_(" Shuttle Craft Galileo on surface.")); } } - if (iknow==0) prout(_("No information available.")); + if (!iknow) prout(_("No information available.")); } -void orbit(void) +void orbit(void) +/* enter standard orbit */ { skip(1); chew(); @@ -66,7 +55,7 @@ void orbit(void) prout(_("Both warp and impulse engines damaged.")); return; } - if (game.plnet.x == 0 || abs(game.sector.x-game.plnet.x) > 1 || abs(game.sector.y-game.plnet.y) > 1) { + if (!is_valid(game.plnet) || abs(game.sector.x-game.plnet.x) > 1 || abs(game.sector.y-game.plnet.y) > 1) { crmshp(); prout(_(" not adjacent to planet.")); skip(1); @@ -82,7 +71,8 @@ void orbit(void) game.ididit = true; } -void sensor(void) +void sensor(void) +/* examine planets in this quadrant */ { skip(1); chew(); @@ -103,22 +93,23 @@ void sensor(void) if (game.state.plnets[game.iplnet].known==shuttle_down) prout(_(" Sensors show Galileo still on surface.")); proutn(_(" Readings indicate")); - if (game.state.plnets[game.iplnet].crystals == 0) proutn(_(" no")); + if (game.state.plnets[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; } } void beam(void) +/* use the transporter */ { chew(); skip(1); if (damaged(DTRANSP)) { prout(_("Transporter damaged.")); - if (!damaged(DSHUTTL) && (game.state.plnets[game.iplnet].known==shuttle_down || game.iscraft == 1)) { + if (!damaged(DSHUTTL) && (game.state.plnets[game.iplnet].known==shuttle_down || game.iscraft == onship)) { skip(1); proutn(_("Spock- \"May I suggest the shuttle craft, Sir?\" ")); - if (ja() != 0) shuttle(); + if (ja() == true) shuttle(); } return; } @@ -137,11 +128,11 @@ void beam(void) prout(_(" you may not go down.\"")); return; } - if (game.landed==1) { + if (game.landed) { /* Coming from planet */ if (game.state.plnets[game.iplnet].known==shuttle_down) { proutn(_("Spock- \"Wouldn't you rather take the Galileo?\" ")); - if (ja() != 0) { + if (ja() == true) { chew(); return; } @@ -156,11 +147,11 @@ void beam(void) } else { /* Going to planet */ - if (game.state.plnets[game.iplnet].crystals==0) { + 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()==0) { + if (ja() == false) { chew(); return; } @@ -171,7 +162,7 @@ void beam(void) skip(1); prout(_("Kirk- \"Energize.\"")); } - game.ididit=1; + game.ididit = true; skip(1); prouts("WWHOOOIIIIIRRRRREEEE.E.E. . . . . . ."); skip(2); @@ -185,39 +176,40 @@ void beam(void) prouts(". . . . . . .E.E.EEEERRRRRIIIIIOOOHWW"); skip(2); prout(_("Transport complete.")); - game.landed = -game.landed; - if (game.landed==1 && game.state.plnets[game.iplnet].known==shuttle_down) { + game.landed = !game.landed; + if (game.landed && game.state.plnets[game.iplnet].known==shuttle_down) { prout(_("The shuttle craft Galileo is here!")); } - if (game.landed!=1 && game.imine==1) { - game.icrystl = 1; + if (!game.landed && game.imine) { + game.icrystl = true; game.cryprob = 0.05; } - game.imine = 0; + game.imine = false; return; } void mine(void) +/* strip-mine a world for dilithium */ { skip(1); chew(); - if (game.landed!= 1) { + if (!game.landed) { prout(_("Mining party not on planet.")); return; } - if (game.state.plnets[game.iplnet].crystals == MINED) { + if (game.state.plnets[game.iplnet].crystals == mined) { prout(_("This planet has already been strip-mined for dilithium.")); return; } - else if (game.state.plnets[game.iplnet].crystals == 0) { + else if (game.state.plnets[game.iplnet].crystals == absent) { prout(_("No dilithium crystals on this planet.")); return; } - if (game.imine == 1) { + if (game.imine) { prout(_("You've already mined enough crystals for this trip.")); return; } - if (game.icrystl == 1 && game.cryprob == 0.05) { + if (game.icrystl && game.cryprob == 0.05) { proutn(_("With all those fresh crystals aboard the ")); crmshp(); skip(1); @@ -227,30 +219,30 @@ void mine(void) game.optime = (0.1+0.2*Rand())*game.state.plnets[game.iplnet].pclass; if (consumeTime()) return; prout(_("Mining operation complete.")); - game.state.plnets[game.iplnet].crystals = MINED; - game.imine = 1; - game.ididit=1; + game.state.plnets[game.iplnet].crystals = mined; + game.imine = game.ididit = true; } -void usecrystals(void) +void usecrystals(void) +/* use dilithium crystals */ { - game.ididit=0; + game.ididit = false; skip(1); chew(); - if (game.icrystl!=1) { + if (!game.icrystl) { prout(_("No dilithium crystals available.")); return; } if (game.energy >= 1000) { prout(_("Spock- \"Captain, Starfleet Regulations prohibit such an operation")); - prout(_(" except when condition Yellow exists.")); + prout(_(" except when Condition Yellow exists.")); return; } prout(_("Spock- \"Captain, I must warn you that loading")); prout(_(" raw dilithium crystals into the ship's power")); prout(_(" system may risk a severe explosion.")); proutn(_(" Are you sure this is wise?\" ")); - if (ja()==0) { + if (ja() == false) { chew(); return; } @@ -280,10 +272,11 @@ void usecrystals(void) prout(_(" are going crazy, but I think it's")); prout(_(" going to work!! Congratulations, Sir!\"")); game.cryprob *= 2.0; - game.ididit=1; + game.ididit = true; } void shuttle(void) +/* use shuttlecraft for planetary jaunt */ { chew(); skip(1); @@ -305,15 +298,15 @@ void shuttle(void) prout(_(" not in standard orbit.")); return; } - if ((game.state.plnets[game.iplnet].known != shuttle_down) && game.iscraft != 1) { + if ((game.state.plnets[game.iplnet].known != shuttle_down) && game.iscraft != onship) { prout(_("Shuttle craft not currently available.")); return; } - if (game.landed==-1 && game.state.plnets[game.iplnet].known==shuttle_down) { + if (!game.landed && game.state.plnets[game.iplnet].known==shuttle_down) { prout(_("You will have to beam down to retrieve the shuttle craft.")); return; } - if (game.shldup || game.condit == IHDOCKED) { + if (game.shldup || game.condition == docked) { prout(_("Shuttle craft cannot pass through shields.")); return; } @@ -330,18 +323,18 @@ void shuttle(void) (int)(100*game.optime/game.state.remtime)); prout(_("remaining time.")); proutn(_("Are you sure this is wise?\" ")); - if (ja()==0) { + if (ja() == false) { game.optime = 0.0; return; } } - if (game.landed == 1) { + if (game.landed) { /* Kirk on planet */ - if (game.iscraft==1) { + if (game.iscraft == onship) { /* Galileo on ship! */ if (!damaged(DTRANSP)) { proutn(_("Spock- \"Would you rather use the transporter?\" ")); - if (ja() != 0) { + if (ja() == true) { beam(); return; } @@ -350,7 +343,7 @@ void shuttle(void) else proutn(_("Rescue party")); prout(_(" boards Galileo and swoops toward planet surface.")); - game.iscraft = 0; + game.iscraft = offship; skip(1); if (consumeTime()) return; game.state.plnets[game.iplnet].known=shuttle_down; @@ -364,17 +357,17 @@ void shuttle(void) skip(1); prout(_("The short hop begins . . .")); game.state.plnets[game.iplnet].known=known; - game.icraft = 1; + game.icraft = true; skip(1); - game.landed = -1; + game.landed = false; if (consumeTime()) return; - game.iscraft = 1; - game.icraft = 0; - if (game.imine!=0) { - game.icrystl = 1; + game.iscraft = onship; + game.icraft = false; + if (game.imine) { + game.icrystl = true; game.cryprob = 0.05; } - game.imine = 0; + game.imine = false; prout(_("Trip complete.")); return; } @@ -387,22 +380,23 @@ void shuttle(void) skip(1); prouts(_("The hangar doors open; the trip begins.")); skip(1); - game.icraft = 1; - game.iscraft = 0; + game.icraft = true; + game.iscraft = offship; if (consumeTime()) return; game.state.plnets[game.iplnet].known = shuttle_down; - game.landed = 1; - game.icraft = 0; + game.landed = true; + game.icraft = false; prout(_("Trip complete")); return; } } -void deathray(void) +void deathray(void) +/* use the big zapper */ { double dprob, r = Rand(); - game.ididit = 0; + game.ididit = false; skip(1); chew(); if (game.ship != IHE) { @@ -420,10 +414,10 @@ void deathray(void) prout(_("Spock- \"Captain, the 'Experimental Death Ray'")); prout(_(" is highly unpredictible. Considering the alternatives,")); proutn(_(" are you sure this is wise?\" ")); - if (ja()==0) return; + if (ja() == false) return; prout(_("Spock- \"Acknowledged.\"")); skip(1); - game.ididit=1; + game.ididit = true; prouts(_("WHOOEE ... WHOOEE ... WHOOEE ... WHOOEE")); skip(1); prout(_("Crew scrambles in emergency preparation.")); @@ -442,7 +436,7 @@ void deathray(void) prouts(_("Sulu- \"Captain! It's working!\"")); skip(2); while (game.nenhere > 0) - deadkl(game.ks[1], game.quad[game.ks[1].x][game.ks[1].y],game.ks[1].x,game.ks[1].y); + 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) finish(FWON); if ((game.options & OPTION_PLAIN) == 0) { @@ -509,68 +503,3 @@ void deathray(void) finish(FTRIBBLE); return; } - -char *systemname(int pindx) -{ - /* the below array shoud not be static, or it won't gettextize - * because of the early initialization. */ - char *names[NINHAB] = - { - /* - * I used to find planets - * with references in ST:TOS. Eath and the Alpha Centauri - * Colony have been omitted. - * - * Some planets marked Class G and P here will be displayed as class M - * because of the way planets are generated. This is a known bug. - */ - "ERROR", - // Federation Worlds - _("Andoria (Fesoan)"), /* several episodes */ - _("Tellar Prime (Miracht)"), /* TOS: "Journey to Babel" */ - _("Vulcan (T'Khasi)"), /* many episodes */ - _("Medusa"), /* TOS: "Is There in Truth No Beauty?" */ - _("Argelius II (Nelphia)"),/* TOS: "Wolf in the Fold" ("IV" in BSD) */ - _("Ardana"), /* TOS: "The Cloud Minders" */ - _("Catulla (Cendo-Prae)"), /* TOS: "The Way to Eden" */ - _("Gideon"), /* TOS: "The Mark of Gideon" */ - _("Aldebaran III"), /* TOS: "The Deadly Years" */ - _("Alpha Majoris I"), /* TOS: "Wolf in the Fold" */ - _("Altair IV"), /* TOS: "Amok Time */ - _("Ariannus"), /* TOS: "Let That Be Your Last Battlefield" */ - _("Benecia"), /* TOS: "The Conscience of the King" */ - _("Beta Niobe I (Sarpeidon)"), /* TOS: "All Our Yesterdays" */ - _("Alpha Carinae II"), /* TOS: "The Ultimate Computer" */ - _("Capella IV (Kohath)"), /* TOS: "Friday's Child" (Class G) */ - _("Daran V"), /* TOS: "For the World is Hollow and I Have Touched the Sky" */ - _("Deneb II"), /* TOS: "Wolf in the Fold" ("IV" in BSD) */ - _("Eminiar VII"), /* TOS: "A Taste of Armageddon" */ - _("Gamma Canaris IV"), /* TOS: "Metamorphosis" */ - _("Gamma Tranguli VI (Vaalel)"), /* TOS: "The Apple" */ - _("Ingraham B"), /* TOS: "Operation: Annihilate" */ - _("Janus IV"), /* TOS: "The Devil in the Dark" */ - _("Makus III"), /* TOS: "The Galileo Seven" */ - _("Marcos XII"), /* TOS: "And the Children Shall Lead", */ - _("Omega IV"), /* TOS: "The Omega Glory" */ - _("Regulus V"), /* TOS: "Amok Time */ - _("Deeva"), /* TOS: "Operation -- Annihilate!" */ - /* Worlds from BSD Trek */ - _("Rigel II"), /* TOS: "Shore Leave" ("III" in BSD) */ - _("Beta III"), /* TOS: "The Return of the Archons" */ - _("Triacus"), /* TOS: "And the Children Shall Lead", */ - _("Exo III"), /* TOS: "What Are Little Girls Made Of?" (Class P) */ -#if 0 - // Others - _("Hansen's Planet"), /* TOS: "The Galileo Seven" */ - _("Taurus IV"), /* TOS: "The Galileo Seven" (class G) */ - _("Antos IV (Doraphane)"), /* TOS: "Whom Gods Destroy", "Who Mourns for Adonais?" */ - _("Izar"), /* TOS: "Whom Gods Destroy" */ - _("Tiburon"), /* TOS: "The Way to Eden" */ - _("Merak II"), /* TOS: "The Cloud Minders" */ - _("Coridan (Desotriana)"), /* TOS: "Journey to Babel" */ - _("Iotia"), /* TOS: "A Piece of the Action" */ -#endif - }; - - return names[pindx]; -}