Home | History | Annotate | Line # | Download | only in battlestar
init.c revision 1.1
      1 /*
      2  * Copyright (c) 1983 Regents of the University of California.
      3  * All rights reserved.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions
      7  * are met:
      8  * 1. Redistributions of source code must retain the above copyright
      9  *    notice, this list of conditions and the following disclaimer.
     10  * 2. Redistributions in binary form must reproduce the above copyright
     11  *    notice, this list of conditions and the following disclaimer in the
     12  *    documentation and/or other materials provided with the distribution.
     13  * 3. All advertising materials mentioning features or use of this software
     14  *    must display the following acknowledgement:
     15  *	This product includes software developed by the University of
     16  *	California, Berkeley and its contributors.
     17  * 4. Neither the name of the University nor the names of its contributors
     18  *    may be used to endorse or promote products derived from this software
     19  *    without specific prior written permission.
     20  *
     21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     31  * SUCH DAMAGE.
     32  */
     33 
     34 #ifndef lint
     35 static char sccsid[] = "@(#)init.c	5.5 (Berkeley) 2/27/91";
     36 #endif /* not lint */
     37 
     38 #include <sys/types.h>
     39 #include "externs.h"
     40 #include <pwd.h>
     41 
     42 initialize(startup)
     43 	char startup;
     44 {
     45 	register struct objs *p;
     46 	void die();
     47 
     48 	puts("Version 4.2, fall 1984.");
     49 	puts("First Adventure game written by His Lordship, the honorable");
     50 	puts("Admiral D.W. Riggle\n");
     51 	srand(getpid());
     52 	getutmp(uname);
     53 	wiz = wizard(uname);
     54 	wordinit();
     55 	if (startup) {
     56 		location = dayfile;
     57 		direction = NORTH;
     58 		time = 0;
     59 		snooze = CYCLE * 1.5;
     60 		position = 22;
     61 		setbit(wear, PAJAMAS);
     62 		fuel = TANKFULL;
     63 		torps = TORPEDOES;
     64 		for (p = dayobjs; p->room != 0; p++)
     65 			setbit(location[p->room].objects, p->obj);
     66 	} else
     67 		restore();
     68 	signal(SIGINT, die);
     69 }
     70 
     71 getutmp(uname)
     72 	char *uname;
     73 {
     74 	struct passwd *ptr;
     75 
     76 	ptr = getpwuid(getuid());
     77 	strcpy(uname, ptr ? ptr->pw_name : "");
     78 }
     79 
     80 char *list[] = {	/* hereditary wizards */
     81 	"riggle",
     82 	"chris",
     83 	"edward",
     84 	"comay",
     85 	"yee",
     86 	"dmr",
     87 	"ken",
     88 	0
     89 };
     90 
     91 char *badguys[] = {
     92 	"wnj",
     93 	"root",
     94 	"ted",
     95 	0
     96 };
     97 
     98 wizard(uname)
     99 	char *uname;
    100 {
    101 	char flag;
    102 
    103 	if (flag = checkout(uname))
    104 		printf("You are the Great wizard %s.\n", uname);
    105 	return flag;
    106 }
    107 
    108 checkout(uname)
    109 	register char *uname;
    110 {
    111 	register char **ptr;
    112 
    113 	for (ptr = list; *ptr; ptr++)
    114 		if (strcmp(*ptr, uname) == 0)
    115 			return 1;
    116 	for (ptr = badguys; *ptr; ptr++)
    117 		if (strcmp(*ptr, uname) == 0) {
    118 			printf("You are the Poor anti-wizard %s.  Good Luck!\n",
    119 				uname);
    120 			CUMBER = 3;
    121 			WEIGHT = 9;	/* that'll get him! */
    122 			clock = 10;
    123 			setbit(location[7].objects, WOODSMAN);	/* viper room */
    124 			setbit(location[20].objects, WOODSMAN);	/* laser " */
    125 			setbit(location[13].objects, DARK);	/* amulet " */
    126 			setbit(location[8].objects, ELF);	/* closet */
    127 			return 0;	/* anything else, Chris? */
    128 		}
    129 	return 0;
    130 }
    131