X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fevents.c;h=3281291ed6a96c80b1cdb03f300740ddd4b90c89;hp=7fdf27157544123fc86abd57e31ab597d2e4f206;hb=a0afd227763655ee0ecd7ef5faea92d63d5c5ba6;hpb=b57643c72bc33f1e2b1de642280d3060c5423d10 diff --git a/src/events.c b/src/events.c index 7fdf271..3281291 100644 --- a/src/events.c +++ b/src/events.c @@ -89,7 +89,7 @@ void events(void) } } - radio_was_broken = (game.damage[DRADIO] != 0.0); + radio_was_broken = damaged(DRADIO); for (;;) { /* Select earliest extraneous event, evcode==0 if no events */ @@ -112,8 +112,13 @@ void events(void) finish(FDEPLETE); return; } + /* Any crew left alive? */ + if (game.state.crew <=0) { + finish(FCREW); + return; + } /* Is life support adequate? */ - if (game.damage[DLIFSUP] && game.condit != IHDOCKED) { + if (damaged(DLIFSUP) && game.condit != IHDOCKED) { if (game.lsupres < xtime && game.damage[DLIFSUP] > game.lsupres) { finish(FLIFESUP); return; @@ -129,12 +134,12 @@ void events(void) if (game.damage[l] > 0.0 && l != DDRAY) game.damage[l] -= (game.damage[l]-repair > 0.0 ? repair : game.damage[l]); /* If radio repaired, update star chart and attack reports */ - if (radio_was_broken && game.damage[DRADIO] == 0.0) { + if (radio_was_broken && !damaged(DRADIO)) { prout(_("Lt. Uhura- \"Captain, the sub-space radio is working and")); prout(_(" surveillance reports are coming in.")); skip(1); if (game.iseenit==0) { - attakreport(0); + attakreport(false); game.iseenit = 1; } rechart(); @@ -157,10 +162,10 @@ void events(void) game.condit==IHDOCKED || game.isatb==1 || game.iscate==1) return; if (game.ientesc || (game.energy < 2000 && game.torps < 4 && game.shield < 1250) || - (game.damage[DPHASER]>0 && (game.damage[DPHOTON]>0 || game.torps < 4)) || - (game.damage[DSHIELD] > 0 && - (game.energy < 2500 || game.damage[DPHASER] > 0) && - (game.torps < 5 || game.damage[DPHOTON] > 0))) { + (damaged(DPHASER) && (damaged(DPHOTON) || game.torps < 4)) || + (damaged(DSHIELD) && + (game.energy < 2500 || damaged(DPHASER)) && + (game.torps < 5 || damaged(DPHOTON)))) { /* Tractor-beam her! */ istract=1; yank = square(game.state.kscmdr.x-game.quadrant.x) + square(game.state.kscmdr.y-game.quadrant.y); @@ -193,7 +198,7 @@ void events(void) crmshp(); prout(_(" caught in long range tractor beam--")); /* If Kirk & Co. screwing around on planet, handle */ - atover(1); /* atover(1) is Grab */ + atover(true); /* atover(true) is Grab */ if (game.alldone) return; if (game.icraft == 1) { /* Caught in Galileo? */ finish(FSTRACTOR); @@ -227,13 +232,13 @@ void events(void) game.resting = false; } if (!game.shldup) { - if (game.damage[DSHIELD]==0 && game.shield > 0) { + if (!damaged(DSHIELD) && game.shield > 0) { doshield(2); /* Shldsup */ game.shldchg=0; } else prout(_("(Shields not currently useable.)")); } - newqad(0); + newqad(false); /* Adjust finish time to time of tractor beaming */ fintim = game.state.date+game.optime; attack(0); @@ -276,7 +281,7 @@ void events(void) postpone(FCDBAS, scheduled(FSCDBAS)-game.state.date); game.future[FBATTAK].date = game.future[FCDBAS].date + expran(0.3*game.intime); game.iseenit = 0; - if (game.damage[DRADIO] != 0.0 && game.condit != IHDOCKED) + if (!damaged(DRADIO) && game.condit != IHDOCKED) break; /* No warning :-( */ game.iseenit = 1; if (!ipage) pause_game(1); @@ -325,7 +330,7 @@ void events(void) prout(_("Spock- \"Captain, I believe the starbase has been destroyed.\"")); } else if (game.state.rembase != 1 && - (game.damage[DRADIO] <= 0.0 || game.condit == IHDOCKED)) { + (!damaged(DRADIO) || game.condit == IHDOCKED)) { /* Get word via subspace radio */ if (!ipage) pause_game(1); ipage = true; @@ -372,7 +377,7 @@ void events(void) if (!VALID_QUADRANT(i, j) || game.state.galaxy[game.probec.x][game.probec.y].supernova) { // Left galaxy or ran into supernova - if (game.damage[DRADIO]==0.0 || game.condit == IHDOCKED) { + if (!damaged(DRADIO) || game.condit == IHDOCKED) { if (ipage==0) pause_game(1); ipage = 1; skip(1); @@ -386,7 +391,7 @@ void events(void) unschedule(FDSPROB); break; } - if (game.damage[DRADIO]==0.0 || game.condit == IHDOCKED) { + if (!damaged(DRADIO) || game.condit == IHDOCKED) { if (ipage==0) pause_game(1); ipage = 1; skip(1); @@ -398,7 +403,7 @@ void events(void) pdest = &game.state.galaxy[game.probec.x][game.probec.y]; /* Update star chart if Radio is working or have access to radio. */ - if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) { + if (!damaged(DRADIO) || game.condit == IHDOCKED) { struct page *chp = &game.state.chart[game.probec.x][game.probec.y]; chp->klingons = pdest->klingons; @@ -442,7 +447,7 @@ void events(void) q->status = distressed; /* tell the captain about it if we can */ - if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) + if (!damaged(DRADIO) || game.condit == IHDOCKED) { prout("Uhura- Captain, %s in %s reports it is under attack", systemname(q->planet), cramlc(quadrant, w)); @@ -466,7 +471,7 @@ void events(void) ev2->quadrant = ev->quadrant; /* report the disaster if we can */ - if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) + if (!damaged(DRADIO) || game.condit == IHDOCKED) { prout("Uhura- We've lost contact with starsystem %s", systemname(q->planet)); @@ -519,7 +524,7 @@ void events(void) /* recompute time left */ game.state.remtime = game.state.remres/(game.state.remkl+4*game.state.remcom); /* report the disaster if we can */ - if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) + if (!damaged(DRADIO) || game.condit == IHDOCKED) { if (same(game.quadrant, w)) { prout("Spock- sensors indicate the Klingons have"); @@ -821,7 +826,7 @@ void snova(int insx, int insy) if (nq.x != game.quadrant.y || nq.y != game.quadrant.y || game.justin != 0) { /* it isn't here, or we just entered (treat as inroute) */ - if (game.damage[DRADIO] == 0.0 || game.condit == IHDOCKED) { + if (!damaged(DRADIO) || game.condit == IHDOCKED) { skip(1); prout(_("Message from Starfleet Command Stardate %.2f"), game.state.date); prout(_(" Supernova in %s; caution advised."), @@ -919,7 +924,7 @@ void snova(int insx, int insy) game.state.nplankl += npdead; } /* mark supernova in galaxy and in star chart */ - if (same(game.quadrant, nq) || game.damage[DRADIO] == 0 || game.condit == IHDOCKED) + if (same(game.quadrant, nq) || !damaged(DRADIO) || game.condit == IHDOCKED) game.state.galaxy[nq.x][nq.y].supernova = true; /* If supernova destroys last Klingons give special message */ if (KLINGREM==0 && (nq.x != game.quadrant.x || nq.y != game.quadrant.y)) {