xref: /original-bsd/games/adventure/init.c (revision 7a4e9f34)
1 #
2 /*      Re-coding of advent in C: data initialization                   */
3 
4 static char sccsid[] = "	init.c	4.1	82/05/11	";
5 
6 # include "hdr.h"
7 
8 int blklin = TRUE;
9 int setup  = 0;
10 
11 int setbit[16] = {1,2,4,010,020,040,0100,0200,0400,01000,02000,04000,
12 		  010000,020000,040000,0100000};
13 
14 
15 init(command)                           /* everything for 1st time run  */
16 char *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 
46 linkdata()                              /*  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 
163 trapdel()                               /* come here if he hits a del   */
164 {	delhit++;			/* main checks, treats as QUIT  */
165 	signal(2,trapdel);		/* catch subsequent DELs        */
166 }
167 
168 
169 startup()
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 
182