{
double angle, deltax, deltay, bigger, x, y,
finald, stopegy, probf;
- int n, m, kink, kinks, iquad;
+ int n, m, kink, kinks;
+ feature iquad;
coord w, final;
bool trbeam = false;
/* If tractor beam is to occur, don't move full distance */
if (game.state.date+game.optime >= scheduled(FTBEAM)) {
trbeam = true;
- game.condit = IHRED;
+ game.condition = red;
game.dist = game.dist*(scheduled(FTBEAM)-game.state.date)/game.optime + 0.1;
game.optime = scheduled(FTBEAM) - game.state.date + 1e-5;
}
game.kavgd[m] = 0.5 * (finald + game.kdist[m]);
}
/*
- * Stas Sergeev added the game.condition
+ * Stas Sergeev added the condition
* that attacks only happen if Klingons
* are present and your skill is good.
*/
/* dock our ship at a starbase */
{
chew();
- if (game.condit == IHDOCKED && verbose) {
+ if (game.condition == docked && verbose) {
prout(_("Already docked."));
return;
}
prout(_(" not adjacent to base."));
return;
}
- game.condit = IHDOCKED;
+ game.condition = docked;
if (verbose) prout(_("Docked."));
game.ididit = true;
if (game.energy < game.inenrg) game.energy = game.inenrg;
return;
}
while (navmode == unspecified) {
- if (damaged(DCOMPTR)) {
+ if (damaged(DNAVSYS)) {
if (isprobe)
prout(_("Computer damaged; manual navigation only"));
else
if (is_scheduled(FDSPROB)) {
chew();
skip(1);
- if (damaged(DRADIO) && game.condit != IHDOCKED) {
+ if (damaged(DRADIO) && game.condition != docked) {
prout(_("Spock- \"Records show the previous probe has not yet"));
prout(_(" reached its destination.\""));
}
return;
}
+/*
+ * Here's how the mayday code works:
+ *
+ * First, the closest starbase is selected. If there is a
+ * a starbase in your own quadrant, you are in good shape.
+ * This distance takes quadrant distances into account only.
+ *
+ * A magic number is computed based on the distance which acts
+ * as the probability that you will be rematerialized. You
+ * get three tries.
+ *
+ * When it is determined that you should be able to be remater-
+ * ialized (i.e., when the probability thing mentioned above
+ * comes up positive), you are put into that quadrant (anywhere).
+ * Then, we try to see if there is a spot adjacent to the star-
+ * base. If not, you can't be rematerialized!!! Otherwise,
+ * it drops you there. It only tries five times to find a spot
+ * to drop you. After that, it's your problem.
+ */
+
void mayday(void)
/* yell for help from nearest starbase */
{
int line = 0, m, ix, iy;
chew();
- /* Test for game.conditions which prevent calling for help */
- if (game.condit == IHDOCKED) {
+ /* Test for conditions which prevent calling for help */
+ if (game.condition == docked) {
prout(_("Lt. Uhura- \"But Captain, we're already docked.\""));
return;
}