-/* $NetBSD: com6.c,v 1.6 1997/01/07 11:56:38 tls Exp $ */
+/* $NetBSD: com6.c,v 1.15 1999/09/14 18:08:46 jsm Exp $ */
/*
* Copyright (c) 1983, 1993
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)com6.c 8.2 (Berkeley) 4/28/95";
#else
-static char rcsid[] = "$NetBSD: com6.c,v 1.6 1997/01/07 11:56:38 tls Exp $";
+__RCSID("$NetBSD: com6.c,v 1.15 1999/09/14 18:08:46 jsm Exp $");
#endif
-#endif /* not lint */
+#endif /* not lint */
#include "extern.h"
#include "pathnames.h"
+int
launch()
{
- if (testbit(location[position].objects,VIPER) && !notes[CANTLAUNCH]){
- if (fuel > 4){
- clearbit(location[position].objects,VIPER);
+ if (testbit(location[position].objects, VIPER) && !notes[CANTLAUNCH]) {
+ if (fuel > 4) {
+ clearbit(location[position].objects, VIPER);
position = location[position].up;
notes[LAUNCHED] = 1;
- time++;
+ ourtime++;
fuel -= 4;
puts("You climb into the viper and prepare for launch.");
puts("With a touch of your thumb the turbo engines ignite, thrusting you back into\nyour seat.");
- return(1);
- }
- else
+ return (1);
+ } else
puts("Not enough fuel to launch.");
- }
- else
+ } else
puts("Can't launch.");
- return(0);
+ return (0);
}
+int
land()
{
- if (notes[LAUNCHED] && testbit(location[position].objects,LAND) && location[position].down){
+ if (notes[LAUNCHED] && testbit(location[position].objects, LAND) &&
+ location[position].down) {
notes[LAUNCHED] = 0;
position = location[position].down;
- setbit(location[position].objects,VIPER);
+ setbit(location[position].objects, VIPER);
fuel -= 2;
- time++;
+ ourtime++;
puts("You are down.");
- return(1);
- }
- else
+ return (1);
+ } else
puts("You can't land here.");
- return(0);
+ return (0);
}
-die() /* endgame */
-{
+void
+die()
+{ /* endgame */
printf("bye.\nYour rating was %s.\n", rate());
post(' ');
exit(0);
}
+void
+diesig(dummy)
+ int dummy __attribute__((__unused__));
+{
+ die();
+}
+
+void
live()
{
puts("\nYou win!");
exit(0);
}
-/*
- * sigh -- this program thinks "time" is an int. It's easier to not load
- * <time.h> than try and fix it.
- */
-#define _KERNEL
-#include <sys/time.h>
-#undef _KERNEL
+static FILE *score_fp;
+void
+open_score_file()
+{
+ score_fp = fopen(_PATH_SCORE, "a");
+ if (score_fp == NULL)
+ warn("open %s for append", _PATH_SCORE);
+ if (score_fp != NULL && fileno(score_fp) < 3)
+ exit(1);
+}
+
+void
post(ch)
-char ch;
+ char ch;
{
- FILE *fp;
- struct timeval tv;
- char *date, *ctime();
+ time_t tv;
+ char *date;
sigset_t sigset, osigset;
sigemptyset(&sigset);
sigaddset(&sigset, SIGINT);
sigprocmask(SIG_BLOCK, &sigset, &osigset);
- gettimeofday(&tv, (struct timezone *)0); /* can't call time */
- date = ctime(&tv.tv_sec);
+ tv = time(NULL);
+ date = ctime(&tv);
date[24] = '\0';
- if (fp = fopen(_PATH_SCORE,"a")) {
- fprintf(fp, "%s %8s %c%20s", date, uname, ch, rate());
+ if (score_fp != NULL) {
+ fprintf(score_fp, "%s %8s %c%20s", date, username, ch, rate());
if (wiz)
- fprintf(fp, " wizard\n");
- else if (tempwiz)
- fprintf(fp, " WIZARD!\n");
+ fprintf(score_fp, " wizard\n");
else
- fprintf(fp, "\n");
- } else
- perror(_PATH_SCORE);
- sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0);
+ if (tempwiz)
+ fprintf(score_fp, " WIZARD!\n");
+ else
+ fprintf(score_fp, "\n");
+ }
+ sigprocmask(SIG_SETMASK, &osigset, (sigset_t *) 0);
}
-char *
+const char *
rate()
{
- int score;
+ int score;
- score = max(max(pleasure,power),ego);
- if (score == pleasure){
- if (score < 5)
- return("novice");
- else if (score < 20)
- return("junior voyeur");
- else if (score < 35)
- return("Don Juan");
- else return("Marquis De Sade");
- }
- else if (score == power){
- if (score < 5)
- return("serf");
- else if (score < 8)
- return("Samurai");
- else if (score < 13)
- return("Klingon");
- else if (score < 22)
- return("Darth Vader");
- else return("Sauron the Great");
- }
- else{
+ score = max(max(pleasure, power), ego);
+ if (score == pleasure) {
if (score < 5)
- return("Polyanna");
- else if (score < 10)
- return("philanthropist");
- else if (score < 20)
- return("Tattoo");
- else return("Mr. Roarke");
- }
+ return ("novice");
+ else
+ if (score < 20)
+ return ("junior voyeur");
+ else
+ if (score < 35)
+ return ("Don Juan");
+ else
+ return ("Marquis De Sade");
+ } else
+ if (score == power) {
+ if (score < 5)
+ return ("serf");
+ else
+ if (score < 8)
+ return ("Samurai");
+ else
+ if (score < 13)
+ return ("Klingon");
+ else
+ if (score < 22)
+ return ("Darth Vader");
+ else
+ return ("Sauron the Great");
+ } else {
+ if (score < 5)
+ return ("Polyanna");
+ else
+ if (score < 10)
+ return ("philanthropist");
+ else
+ if (score < 20)
+ return ("Tattoo");
+ else
+ return ("Mr. Roarke");
+ }
}
+int
drive()
{
- if (testbit(location[position].objects,CAR)){
+ if (testbit(location[position].objects, CAR)) {
puts("You hop in the car and turn the key. There is a perceptible grating noise,");
puts("and an explosion knocks you unconscious...");
- clearbit(location[position].objects,CAR);
- setbit(location[position].objects,CRASH);
+ clearbit(location[position].objects, CAR);
+ setbit(location[position].objects, CRASH);
injuries[5] = injuries[6] = injuries[7] = injuries[8] = 1;
- time += 15;
+ ourtime += 15;
zzz();
- return(0);
- }
- else
+ return (0);
+ } else
puts("There is nothing to drive here.");
- return(-1);
+ return (-1);
}
+int
ride()
{
- if (testbit(location[position].objects,HORSE)){
+ if (testbit(location[position].objects, HORSE)) {
puts("You climb onto the stallion and kick it in the guts. The stupid steed launches");
puts("forward through bush and fern. You are thrown and the horse gallups off.");
- clearbit(location[position].objects,HORSE);
- while (!(position = rnd(NUMOFROOMS+1)) || !OUTSIDE || !beenthere[position] || location[position].flyhere);
- setbit(location[position].objects,HORSE);
+ clearbit(location[position].objects, HORSE);
+ while (!(position = rnd(NUMOFROOMS + 1)) || !OUTSIDE || !beenthere[position] || location[position].flyhere);
+ setbit(location[position].objects, HORSE);
if (location[position].north)
position = location[position].north;
- else if (location[position].south)
- position = location[position].south;
- else if (location[position].east)
- position = location[position].east;
else
- position = location[position].west;
- return(0);
- }
- else puts("There is no horse here.");
- return(-1);
+ if (location[position].south)
+ position = location[position].south;
+ else
+ if (location[position].east)
+ position = location[position].east;
+ else
+ position = location[position].west;
+ return (0);
+ } else
+ puts("There is no horse here.");
+ return (-1);
}
-light() /* synonyms = {strike, smoke} */
-{ /* for matches, cigars */
- if (testbit(inven,MATCHES) && matchcount){
+void
+light()
+{ /* synonyms = {strike, smoke} *//* for
+ * matches, cigars */
+ if (testbit(inven, MATCHES) && matchcount) {
puts("Your match splutters to life.");
- time++;
+ ourtime++;
matchlight = 1;
matchcount--;
- if (position == 217){
+ if (position == 217) {
puts("The whole bungalow explodes with an intense blast.");
die();
}
- }
- else puts("You're out of matches.");
+ } else
+ puts("You're out of matches.");
}