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