xref: /original-bsd/games/battlestar/init.c (revision b424313c)
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 are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  */
17 
18 #ifndef lint
19 static char sccsid[] = "@(#)init.c	5.2 (Berkeley) 06/19/88";
20 #endif /* not lint */
21 
22 #include "externs.h"
23 #include <pwd.h>
24 
25 initialize(startup)
26 	char startup;
27 {
28 	register struct objs *p;
29 	int die();
30 
31 	puts("Version 4.2, fall 1984.");
32 	puts("First Adventure game written by His Lordship, the honorable");
33 	puts("Admiral D.W. Riggle\n");
34 	srand(getpid());
35 	getutmp(uname);
36 	wiz = wizard(uname);
37 	wordinit();
38 	if (startup) {
39 		location = dayfile;
40 		direction = NORTH;
41 		time = 0;
42 		snooze = CYCLE * 1.5;
43 		position = 22;
44 		setbit(wear, PAJAMAS);
45 		fuel = TANKFULL;
46 		torps = TORPEDOES;
47 		for (p = dayobjs; p->room != 0; p++)
48 			setbit(location[p->room].objects, p->obj);
49 	} else
50 		restore();
51 	signal(SIGINT, die);
52 }
53 
54 getutmp(uname)
55 	char *uname;
56 {
57 	struct passwd *ptr;
58 
59 	ptr = getpwuid(getuid());
60 	strcpy(uname, ptr ? ptr->pw_name : "");
61 }
62 
63 char *list[] = {	/* hereditary wizards */
64 	"riggle",
65 	"chris",
66 	"edward",
67 	"comay",
68 	"yee",
69 	"dmr",
70 	"ken",
71 	0
72 };
73 
74 char *badguys[] = {
75 	"wnj",
76 	"root",
77 	"ted",
78 	0
79 };
80 
81 wizard(uname)
82 	char *uname;
83 {
84 	char flag;
85 
86 	if (flag = checkout(uname))
87 		printf("You are the Great wizard %s.\n", uname);
88 	return flag;
89 }
90 
91 checkout(uname)
92 	register char *uname;
93 {
94 	register char **ptr;
95 
96 	for (ptr = list; *ptr; ptr++)
97 		if (strcmp(*ptr, uname) == 0)
98 			return 1;
99 	for (ptr = badguys; *ptr; ptr++)
100 		if (strcmp(*ptr, uname) == 0) {
101 			printf("You are the Poor anti-wizard %s.  Good Luck!\n",
102 				uname);
103 			CUMBER = 3;
104 			WEIGHT = 9;	/* that'll get him! */
105 			clock = 10;
106 			setbit(location[7].objects, WOODSMAN);	/* viper room */
107 			setbit(location[20].objects, WOODSMAN);	/* laser " */
108 			setbit(location[13].objects, DARK);	/* amulet " */
109 			setbit(location[8].objects, ELF);	/* closet */
110 			return 0;	/* anything else, Chris? */
111 		}
112 	return 0;
113 }
114