add Berkeley specific header
[unix-history] / usr / src / games / adventure / init.c
CommitLineData
c96ddd80
RH
1#
2/* Re-coding of advent in C: data initialization */
3
01eb5674 4static char sccsid[] = " init.c 4.1 82/05/11 ";
c96ddd80
RH
5
6# include "hdr.h"
7
8int blklin = TRUE;
9int setup = 0;
10
11int setbit[16] = {1,2,4,010,020,040,0100,0200,0400,01000,02000,04000,
12 010000,020000,040000,0100000};
13
14
15init(command) /* everything for 1st time run */
16char *command; /* command we were called with */
17{ int stat,adfd;
18 rdata(); /* read data from orig. file */
19 linkdata();
20 poof();
21 setup=1; /* indicate that data is in */
22 if (confirm("got the data. save as \"advent\"? "))
23 { if (save(command,"advent")<0) /* save core image */
24 { printf("Save failed\n");
25 exit(0);
26 }
27 }
28 else exit(0);
29 printf("Save succeeded. Adding messages.\n");
30 adfd=open("advent",1);
31 lseek(adfd,0L,2);
32 close(datfd);
33 if (fork()==0) /* child process */
34 { close(1);
35 dup(adfd); /* output goes to advent file */
36 execl("/bin/cat","cat",TMPFILE,0);
37 printf("unable to find /bin/cat\n");
38 }
39 wait(&stat);
40 unlink(TMPFILE);
41 printf("Advent is ready.\n");
42 exit(0);
43}
44
45
46linkdata() /* secondary data manipulation */
47{ register int i,j;
48 /* array linkages */
49 for (i=1; i<=LOCSIZ; i++)
50 if (ltext[i].seekadr!=0 && travel[i] != 0)
51 if ((travel[i]->tverb)==1) cond[i]=2;
52 for (j=100; j>0; j--)
53 if (fixd[j]>0)
54 { drop(j+100,fixd[j]);
55 drop(j,plac[j]);
56 }
57 for (j=100; j>0; j--)
58 { fixed[j]=fixd[j];
59 if (plac[j]!=0 && fixd[j]<=0) drop(j,plac[j]);
60 }
61
62 maxtrs=79;
63 tally=0;
64 tally2=0;
65
66 for (i=50; i<=maxtrs; i++)
67 { if (ptext[i].seekadr!=0) prop[i] = -1;
68 tally -= prop[i];
69 }
70
71 /* define mnemonics */
72 keys=vocab("keys",1);
73 lamp=vocab("lamp",1);
74 grate=vocab("grate",1);
75 cage=vocab("cage",1);
76 rod=vocab("rod",1);
77 rod2=rod+1;
78 steps=vocab("steps",1);
79 bird=vocab("bird",1);
80 door=vocab("door",1);
81 pillow=vocab("pillow",1);
82 snake=vocab("snake",1);
83 fissur=vocab("fissu",1);
84 tablet=vocab("table",1);
85 clam=vocab("clam",1);
86 oyster=vocab("oyster",1);
87 magzin=vocab("magaz",1);
88 dwarf=vocab("dwarf",1);
89 knife=vocab("knife",1);
90 food=vocab("food",1);
91 bottle=vocab("bottl",1);
92 water=vocab("water",1);
93 oil=vocab("oil",1);
94 plant=vocab("plant",1);
95 plant2=plant+1;
96 axe=vocab("axe",1);
97 mirror=vocab("mirro",1);
98 dragon=vocab("drago",1);
99 chasm=vocab("chasm",1);
100 troll=vocab("troll",1);
101 troll2=troll+1;
102 bear=vocab("bear",1);
103 messag=vocab("messa",1);
104 vend=vocab("vendi",1);
105 batter=vocab("batte",1);
106
107 nugget=vocab("gold",1);
108 coins=vocab("coins",1);
109 chest=vocab("chest",1);
110 eggs=vocab("eggs",1);
111 tridnt=vocab("tride",1);
112 vase=vocab("vase",1);
113 emrald=vocab("emera",1);
114 pyram=vocab("pyram",1);
115 pearl=vocab("pearl",1);
116 rug=vocab("rug",1);
117 chain=vocab("chain",1);
118
119 back=vocab("back",0);
120 look=vocab("look",0);
121 cave=vocab("cave",0);
122 null=vocab("null",0);
123 entrnc=vocab("entra",0);
124 dprssn=vocab("depre",0);
125
126 say=vocab("say",2);
127 lock=vocab("lock",2);
128 throw=vocab("throw",2);
129 find=vocab("find",2);
130 invent=vocab("inven",2);
131 /* initialize dwarves */
132 chloc=114;
133 chloc2=140;
134 for (i=1; i<=6; i++)
135 dseen[i]=FALSE;
136 dflag=0;
137 dloc[1]=19;
138 dloc[2]=27;
139 dloc[3]=33;
140 dloc[4]=44;
141 dloc[5]=64;
142 dloc[6]=chloc;
143 daltlc=18;
144
145 /* random flags & ctrs */
146 turns=0;
147 lmwarn=FALSE;
148 iwest=0;
149 knfloc=0;
150 detail=0;
151 abbnum=5;
152 for (i=0; i<=4; i++)
153 if (rtext[2*i+81].seekadr!=0) maxdie=i+1;
154 numdie=holdng=dkill=foobar=bonus=0;
155 clock1=30;
156 clock2=50;
157 saved=0;
158 closng=panic=closed=scorng=FALSE;
159}
160
161
162
163trapdel() /* come here if he hits a del */
164{ delhit++; /* main checks, treats as QUIT */
165 signal(2,trapdel); /* catch subsequent DELs */
166}
167
168
169startup()
170{ int tvec[2];
171 demo=start(0);
172 time(tvec);
173 srand(tvec[1]|1); /* random odd seed */
174/* srand(371); */ /* non-random seed */
175 hinted[3]=yes(65,1,0);
176 newloc=1;
177 setup=3;
178 limit=330;
179 if (hinted[3]) limit=1000; /* better batteries if instrucs */
180}
181