1 1.16 lukem /* $NetBSD: battlestar.c,v 1.16 2008/07/20 01:03:21 lukem Exp $ */ 2 1.3 cgd 3 1.1 cgd /* 4 1.3 cgd * Copyright (c) 1983, 1993 5 1.3 cgd * The Regents of the University of California. All rights reserved. 6 1.1 cgd * 7 1.1 cgd * Redistribution and use in source and binary forms, with or without 8 1.1 cgd * modification, are permitted provided that the following conditions 9 1.1 cgd * are met: 10 1.1 cgd * 1. Redistributions of source code must retain the above copyright 11 1.1 cgd * notice, this list of conditions and the following disclaimer. 12 1.1 cgd * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 cgd * notice, this list of conditions and the following disclaimer in the 14 1.1 cgd * documentation and/or other materials provided with the distribution. 15 1.13 agc * 3. Neither the name of the University nor the names of its contributors 16 1.1 cgd * may be used to endorse or promote products derived from this software 17 1.1 cgd * without specific prior written permission. 18 1.1 cgd * 19 1.1 cgd * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20 1.1 cgd * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 1.1 cgd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 1.1 cgd * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23 1.1 cgd * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 1.1 cgd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 1.1 cgd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 1.1 cgd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 1.1 cgd * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 1.1 cgd * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 1.1 cgd * SUCH DAMAGE. 30 1.1 cgd */ 31 1.1 cgd 32 1.5 lukem #include <sys/cdefs.h> 33 1.1 cgd #ifndef lint 34 1.16 lukem __COPYRIGHT("@(#) Copyright (c) 1983, 1993\ 35 1.16 lukem The Regents of the University of California. All rights reserved."); 36 1.6 lukem #endif /* not lint */ 37 1.1 cgd 38 1.1 cgd #ifndef lint 39 1.3 cgd #if 0 40 1.4 tls static char sccsid[] = "@(#)battlestar.c 8.2 (Berkeley) 4/28/95"; 41 1.3 cgd #else 42 1.16 lukem __RCSID("$NetBSD: battlestar.c,v 1.16 2008/07/20 01:03:21 lukem Exp $"); 43 1.3 cgd #endif 44 1.6 lukem #endif /* not lint */ 45 1.1 cgd 46 1.1 cgd /* 47 1.1 cgd * Battlestar - a stellar-tropical adventure game 48 1.1 cgd * 49 1.1 cgd * Originally written by His Lordship, Admiral David W. Horatio Riggle, 50 1.1 cgd * on the Cory PDP-11/70, University of California, Berkeley. 51 1.1 cgd */ 52 1.1 cgd 53 1.4 tls #include "extern.h" 54 1.1 cgd 55 1.5 lukem int 56 1.15 jmc main(int argc, char **argv) 57 1.1 cgd { 58 1.6 lukem char mainbuf[LINELENGTH]; 59 1.6 lukem char *next; 60 1.1 cgd 61 1.7 hubertf /* Open the score file then revoke setgid privileges */ 62 1.7 hubertf open_score_file(); 63 1.10 mycroft setgid(getgid()); 64 1.8 hubertf 65 1.11 jsm if (argc < 2) 66 1.11 jsm initialize(NULL); 67 1.11 jsm else if (strcmp(argv[1], "-r") == 0) 68 1.11 jsm initialize((argc > 2) ? argv[2] : DEFAULT_SAVE_FILE); 69 1.11 jsm else 70 1.11 jsm initialize(argv[1]); 71 1.1 cgd start: 72 1.1 cgd news(); 73 1.11 jsm if (beenthere[position] <= ROOMDESC) 74 1.11 jsm beenthere[position]++; 75 1.1 cgd if (notes[LAUNCHED]) 76 1.6 lukem crash(); /* decrements fuel & crash */ 77 1.1 cgd if (matchlight) { 78 1.1 cgd puts("Your match splutters out."); 79 1.1 cgd matchlight = 0; 80 1.1 cgd } 81 1.6 lukem if (!notes[CANTSEE] || testbit(inven, LAMPON) || 82 1.1 cgd testbit(location[position].objects, LAMPON)) { 83 1.1 cgd writedes(); 84 1.1 cgd printobjs(); 85 1.1 cgd } else 86 1.1 cgd puts("It's too dark to see anything in here!"); 87 1.1 cgd whichway(location[position]); 88 1.1 cgd run: 89 1.1 cgd next = getcom(mainbuf, sizeof mainbuf, ">-: ", 90 1.6 lukem "Please type in something."); 91 1.12 jsm for (wordcount = 0; next && wordcount < NWORD - 1; wordcount++) 92 1.1 cgd next = getword(next, words[wordcount], -1); 93 1.1 cgd parse(); 94 1.1 cgd switch (cypher()) { 95 1.6 lukem case -1: 96 1.6 lukem goto run; 97 1.6 lukem case 0: 98 1.6 lukem goto start; 99 1.6 lukem default: 100 1.9 jsm errx(1, "bad return from cypher(): please submit a bug report"); 101 1.1 cgd } 102 1.1 cgd } 103