1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32: #include <sys/cdefs.h>
33: #ifndef lint
34: #if 0
35: static char sccsid[] = "@(#)init.c 8.4 (Berkeley) 4/30/95";
36: #else
37: __RCSID("$NetBSD: init.c,v 1.14 2004/01/27 20:30:29 jsm Exp $");
38: #endif
39: #endif
40:
41: #include "extern.h"
42:
43: static int checkout(const char *);
44: static const char *getutmp(void);
45: static int wizard(const char *);
46:
47: void
48: initialize(filename)
49: const char *filename;
50: {
51: const struct objs *p;
52: char *savefile;
53:
54: puts("Version 4.2, fall 1984.");
55: puts("First Adventure game written by His Lordship, the honorable");
56: puts("Admiral D.W. Riggle\n");
57: location = dayfile;
58: srand(getpid());
59: username = getutmp();
60: wordinit();
61: if (filename == NULL) {
62: direction = NORTH;
63: ourtime = 0;
64: snooze = CYCLE * 1.5;
65: position = 22;
66: setbit(wear, PAJAMAS);
67: fuel = TANKFULL;
68: torps = TORPEDOES;
69: for (p = dayobjs; p->room != 0; p++)
70: setbit(location[p->room].objects, p->obj);
71: } else {
72: savefile = save_file_name(filename, strlen(filename));
73: restore(savefile);
74: free(savefile);
75: }
76: wiz = wizard(username);
77: signal(SIGINT, diesig);
78: }
79:
80: static const char *
81: getutmp()
82: {
83: struct passwd *ptr;
84:
85: ptr = getpwuid(getuid());
86: if (ptr == NULL)
87: return "";
88: else
89: return strdup(ptr->pw_name);
90: }
91:
92:
93: static const char *const list[] = {
94: "riggle",
95: "chris",
96: "edward",
97: "comay",
98: "yee",
99: "dmr",
100: "ken",
101: 0
102: };
103:
104: static const char *const badguys[] = {
105: "wnj",
106: "root",
107: "ted",
108: 0
109: };
110:
111: static int
112: wizard(uname)
113: const char *uname;
114: {
115: int flag;
116:
117: if ((flag = checkout(uname)) != 0)
118: printf("You are the Great wizard %s.\n", uname);
119: return flag;
120: }
121:
122: static int
123: checkout(uname)
124: const char *uname;
125: {
126: const char *const *ptr;
127:
128: for (ptr = list; *ptr; ptr++)
129: if (strcmp(*ptr, uname) == 0)
130: return 1;
131: for (ptr = badguys; *ptr; ptr++)
132: if (strcmp(*ptr, uname) == 0) {
133: printf("You are the Poor anti-wizard %s. Good Luck!\n",
134: uname);
135: CUMBER = 3;
136: WEIGHT = 9;
137: ourclock = 10;
138: setbit(location[7].objects, WOODSMAN);
139: setbit(location[20].objects, WOODSMAN);
140: setbit(location[13].objects, DARK);
141: setbit(location[8].objects, ELF);
142: return 0;
143: }
144: return 0;
145: }