DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T c

⟦f313e6cf3⟧ TextFile

    Length: 9704 (0x25e8)
    Types: TextFile
    Names: »cmds4.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Trek73/src/cmds4.c« 

TextFile

#ident "@(#) TREK73 $Header: cmds4.c,v 1.3 87/10/13 16:00:59 okamoto Exp $"
/*
 * $Source: /ccc/okamoto/src/trek/src/RCS/cmds4.c,v $
 *
 * $Header: cmds4.c,v 1.3 87/10/13 16:00:59 okamoto Exp $
 *
 * $Log:	cmds4.c,v $
 * Revision 1.3  87/10/13  16:00:59  16:00:59  okamoto (Jeff Okamoto)
 * Fixed calls to Gets
 * 
 * Revision 1.2  87/10/09  14:01:55  14:01:55  okamoto (Jeff Okamoto)
 * Fix bug in self-destruct code.
 * 
 * Revision 1.1  87/10/09  11:02:50  11:02:50  okamoto (Jeff Okamoto)
 * Initial revision
 * 
 */
/*
 * TREK73: cmds4.c
 *
 * User Commands
 *
 * alterpntparams, play_dead, corbomite_bluff, surrender_ship,
 * request_surrender, self_destruct, abort_self_destruct
 *
 */

#include "externs.h"


int
alterpntparams(sp)
struct ship *sp;
{
	int temp;
	char buf1[30];

	printf("\n%s:  Reset tubes, %s?\n",nav,title);
	printf("%s:  [yes or no] ",captain);
	(void) Gets(buf1, sizeof(buf1));
	if (buf1[0] == NULL)
		return 0;
	if ((buf1 != NULL) && (buf1[0] != 'n')) {
		printf("   Set launch speed to [0-%d] ", MAX_TUBE_SPEED);
		(void) Gets(buf1, sizeof(buf1));
		if (buf1[0] == NULL)
			return 0;
		if (buf1 != NULL) {
			temp = atoi(buf1);
			if ((temp >= 0) && (temp < MAX_TUBE_SPEED + 1))
				sp->t_lspeed = temp;
		}
		printf("   Set time delay to [0-%d] ", (int) MAX_TUBE_TIME);
		(void) Gets(buf1, sizeof(buf1));
		if (buf1[0] == NULL)
			return 0;
		if (buf1 != NULL) {
			temp = atoi(buf1);
			if ((temp >= 0) && (temp < (int)(MAX_TUBE_TIME + 1)))
				sp->t_delay = temp;
		}
		printf("   Set proximity delay to [0-%d] ", MAX_TUBE_PROX);
		(void) Gets(buf1, sizeof(buf1));
		if (buf1[0] == NULL)
			return 0;
		if (buf1 != NULL) {
			temp = atoi(buf1);
			if ((temp >= 0) && (temp < MAX_TUBE_PROX + 1))
				sp->t_prox = temp;
		}
	}
	printf("%s:  Reset phasers, %s?\n",nav ,title);
	printf("%s:  [yes or no] ",captain);
	(void) Gets(buf1, sizeof(buf1));
	if (buf1[0] == NULL)
		return 0;
	if (buf1[0] == 'y' || buf1[0] == 'Y') {
		printf("   Reset firing percentage to [0-100] ");
		(void) Gets(buf1, sizeof(buf1));
		if (buf1[0] == NULL)
			return 0;
		temp = atoi(buf1);
		if ((temp >= 0) && (temp <= 100))
			sp->p_percent = temp;
	}
	return 0;
}

int
play_dead(sp)
struct ship *sp;
{
	
	char buf1[30];
	int  phaser_charge;
	register int i;

	printf("%s:   %s, drop shields ...\n", captain, nav);
	if (defenseless) {
		printf("%s:   %s, the %ss are not that stupid.\n",
		    science, title, foerace);
		return 0;
	}
	printf("   Transfer power to [engines or phasers]: ");
	(void) Gets(buf1, sizeof(buf1));
	if (buf1[0] == NULL) {
		printf("%s:   I cannot transfer power there, %s.\n",
		    nav, title);
		return 0;
	}
	phaser_charge = -MAX_PHASER_CHARGE;
	if (buf1[0] != 'e' && buf1[0] != 'E') {
		phaser_charge = MAX_PHASER_CHARGE;
		if (buf1[0] != 'p' && buf1[0] != 'P') {
			printf("%s:   I cannot transfer power there, %s.\n",
			    nav, title);
			return 0;
		}
	} else
		sp->energy = min(sp->energy + phaser_charge, sp->pods);
	for (i=0;i<SHIELDS;i++) 
		sp->shields[i].attemp_drain = 0.0;
	for (i=0;i<sp->num_phasers;i++)
		sp->phasers[i].drain = phaser_charge;
	defenseless = 1;
	return 0;
}

int
corbomite_bluff(sp)
struct ship *sp;
{
	
	if (randm(2) == 1) {
		printf("%s:   Open a hailing frequency, ship-to-ship.\n",
		    captain);
		printf("%s:  Hailing frequency open, %s.\n", com, title);
		printf("%s:  This is the Captain of the %s.  Our respect for\n",
		    captain, sp->name);
		puts("   other life forms requires that we give you this warning--");
		puts("   one critical item of information which has never been");
		puts("   incorporated into the memory banks of any Earth ship.");
		puts("   Since the early years of space exploration, Earth vessels");
		puts("   have had incorporated into them a substance know as corbomite.");
		if (!corbomite) {
			puts("      It is a material and a device which prevents attack on");
			puts("   us.  If any destructive energy touchs our vessel, a re-");
			puts("   verse reaction of equal strength is created, destroying");
			puts("   the attacker.  It may interest you to know that, since");
			puts("   the initial use of corbomite for more than two of our");
			puts("   centuries ago, no attacking vessel has survived the attempt.");
			puts("   Death has little meaning to us.  If it has none to you,");
			puts("   then attack us now.  We grow annoyed with your foolishness.");
		}
	} else {
		printf("%s:   Open a special channel to Starfleet Command.\n",
		    captain);
		printf("%s:   Aye, %s.\n", com, title);
		printf("%s:   Use Code 2.\n", captain);
		printf("%s:   but, %s, according to our last Starfleet\n",
		    com, title);
		printf("   Bulletin, the %ss have broken code 2.\n", foerace);
		printf("%s:   That's an order, Lieutenant.  Code 2!\n",
		    captain);
		printf("%s:   Yes, Captain.  Code 2.\n", com);
		printf("%s:   Message from %s to Starfleet Command, this sector.\n",
		    captain, sp->name);
		printf("   have inadvertantly encroached upon %s neutral zone,\n",
		    foerace);
		printf("   surrounded and under heavy %s attack.  Escape\n",
		    foerace);
		puts("   impossible.  Shields failing.  Will implement destruct");
		puts("   order using corbomite device recently installed.");
		if (!corbomite) {
			printf("   This will result in the destruction of the %s and\n",
			    sp->name);
			puts("   all matter within a 200 megameter diameter and");
			puts("   establish corresponding dead zone, all Federation");
			puts("   vessels will aviod this area for the next four solar");
			printf("   years.  Explosion will take place in one minute.  %s,\n",
			    captain);
			printf("   commanding %s, out.\n",sp->name);
		}
	}
	if (!corbomite) {
		printf("      Mr. %s.  Stand by.\n", helmsman);
		printf("%s:  Standing by.\n", helmsman);
		corbomite = 1;
	} else {
		printf("\n%s:  I don't believe that they will fall for that maneuver\n",
		    science);
		printf("   again, %s.\n", title);
	}
	return 0;
}

int
surrender_ship(sp)
struct ship *sp;
{
	printf("%s:   %s, open a channel to the %ss.\n", captain, com, foerace);
	printf("%s:   Aye, %s.\n", com, title);
	printf("%s:   This is Captain %s of the U.S.S. %s.  Will\n",
	    captain, captain, sp->name);
	puts("   you accept my unconditional surrender?");
	if (global & F_SURRENDER) {
		printf("%s:  %s, we have already surrendered.\n",
		    science, title);
		return 0;
	}
	if (surrender) {
		printf("%s:  The %ss have already refused.\n",science, foerace);
	} else {
		if (foerace == "Romulan") {
			printf("%s:  The %ss have not been know to have taken\n",
			    science, foerace);
			puts("   prisoners.");
		}
		surrender = 1;
	}
	return 0;
}

int
request_surrender(sp)
struct ship *sp;
{
	printf("%s:   %s, open a hailing frequency to the %ss.\n",
	    com, captain,foerace);
	printf("%s:  Aye, %s.\n", com, title);
	printf("%s:  This is Captain %s of the U. S. S. %s.  I give you\n",
	    captain, captain, sp->name);
	puts("   one last chance to surrender before we resume our attack.");
	if (global & E_SURRENDER) {
		printf("%s:  %s, we are already complying with your previous request!\n",
		    foename, captain);
		return 0;
	}
	if (surrenderp) {
		printf("%s:   %s, our offer has already been refused.\n",
		    science, title);
	} else {
		surrenderp = 1;
	}
	return 0;
}

int
self_destruct(sp)
struct ship *sp;
{
	printf("%s:   Lieutenant %s, tie in the bridge to the master\n",captain, com);
	printf("   computer.\n");
	if (is_dead(sp, S_COMP)) {
		printf("%s:  Our computer is down.\n", science);
		return 0;
	}
	if (!syswork(sp, S_COMP)) {
		printf("%s:  That program has been lost.  Restoring from backup.",
		    science);
		return 0;
	}
	printf("%s:  Aye, %s.\n",com, title);
	printf("%s:  Computer.  Destruct sequence.  Are you ready to copy?\n",captain);
	puts("Computer:  Working.");
	printf("%s:  Computer, this is Captain %s of the U.S.S. %s.\n",
	    captain, captain, sp->name);
	puts("   Destruct sequence one, code 1-1A.");
	puts("Computer:  Voice and code verified and correct.");
	puts("   Sequence one complete.");
	printf("%s:  This is Commander %s, Science Officer.  Destruct\n",
	    science, science);
	puts("   sequence two, code 1-1A-2B.");
	puts("Computer:  Voice and code verified and correct.  Sequence");
	puts("   two complete.");
	printf("%s:  This is Lieutenant Commander %s, Chief Engineering\n",
	    engineer, engineer);
	printf("   Officer of the U. S. S. %s.  Destruct sequence\n",sp->name);
	puts("   number three, code 1B-2B-3.");
	puts("Computer:  Voice and code verified and correct.");
	puts("   Destruct sequence complete and engaged.  Awaiting final");
	puts("   code for twenty second countdown.");
	printf("%s:  Computer, this is Captain %s of the U. S. S. %s.\n",
	    captain, captain, sp->name);
	puts("   begin countdown, code 0-0-0, destruct 0.");
	sp->delay = 22.;
	return 0;
}

int
abort_self_destruct(sp)
struct ship *sp;
{
	printf("%s:   Computer, this is Captain %s of the U.S.S. %s.\n",
	    captain, captain, sp->name);
	puts("   Code 1-2-3 continuity abort destruct order, repeat:");
	puts("   Code 1-2-3 continuity abort destruct order!");
	if (is_dead(sp, S_COMP)) {
		printf("%s:  Our computer is down.\n", science);
		return 0;
	}
	if (!syswork(sp, S_COMP)) {
		printf("%s:  Temporary memory loss.  Unable to find program.\n",
		    science);
		return 0;
	}
	if (sp->delay > 1000.) {
		puts("Computer:  Self-destruct sequence has not been");
		puts("   initiated.");
		return 0;
	}
	printf("Computer:   Self-destruct order ... ");
	(void) fflush(stdout);
	sleep(4);
	if (sp->delay > 4.) {
		puts("aborted.  Destruct order aborted.");
		sp->delay = 10000.;
		return 0;
	} else {
		puts("cannot be aborted.");
		return 0;
	}
}