1 /*- 2 * Copyright (c) 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * The game adventure was originally written in Fortran by Will Crowther 6 * and Don Woods. It was later translated to C and enhanced by Jim 7 * Gillogly. This code is derived from software contributed to Berkeley 8 * by Jim Gillogly at The Rand Corporation. 9 * 10 * %sccs.include.redist.c% 11 */ 12 13 #ifndef lint 14 static char sccsid[] = "@(#)init.c 8.1 (Berkeley) 06/02/93"; 15 #endif /* not lint */ 16 17 /* Re-coding of advent in C: data initialization */ 18 19 #include <sys/types.h> 20 #include <stdio.h> 21 #include "hdr.h" 22 23 int blklin = TRUE; 24 25 int setbit[16] = {1,2,4,010,020,040,0100,0200,0400,01000,02000,04000, 26 010000,020000,040000,0100000}; 27 28 29 init(command) /* everything for 1st time run */ 30 char *command; /* command we were called with */ 31 { 32 rdata(); /* read data from orig. file */ 33 linkdata(); 34 poof(); 35 } 36 37 char *decr(a,b,c,d,e) 38 char a,b,c,d,e; 39 { 40 static char buf[6]; 41 42 buf[0] = a-'+'; 43 buf[1] = b-'-'; 44 buf[2] = c-'#'; 45 buf[3] = d-'&'; 46 buf[4] = e-'%'; 47 buf[5] = 0; 48 return buf; 49 } 50 51 linkdata() /* secondary data manipulation */ 52 { register int i,j; 53 54 /* array linkages */ 55 for (i=1; i<=LOCSIZ; i++) 56 if (ltext[i].seekadr!=0 && travel[i] != 0) 57 if ((travel[i]->tverb)==1) cond[i]=2; 58 for (j=100; j>0; j--) 59 if (fixd[j]>0) 60 { drop(j+100,fixd[j]); 61 drop(j,plac[j]); 62 } 63 for (j=100; j>0; j--) 64 { fixed[j]=fixd[j]; 65 if (plac[j]!=0 && fixd[j]<=0) drop(j,plac[j]); 66 } 67 68 maxtrs=79; 69 tally=0; 70 tally2=0; 71 72 for (i=50; i<=maxtrs; i++) 73 { if (ptext[i].seekadr!=0) prop[i] = -1; 74 tally -= prop[i]; 75 } 76 77 /* define mnemonics */ 78 keys = vocab(DECR(k,e,y,s,\0), 1); 79 lamp = vocab(DECR(l,a,m,p,\0), 1); 80 grate = vocab(DECR(g,r,a,t,e), 1); 81 cage = vocab(DECR(c,a,g,e,\0),1); 82 rod = vocab(DECR(r,o,d,\0,\0),1); 83 rod2=rod+1; 84 steps=vocab(DECR(s,t,e,p,s),1); 85 bird = vocab(DECR(b,i,r,d,\0),1); 86 door = vocab(DECR(d,o,o,r,\0),1); 87 pillow= vocab(DECR(p,i,l,l,o), 1); 88 snake = vocab(DECR(s,n,a,k,e), 1); 89 fissur= vocab(DECR(f,i,s,s,u), 1); 90 tablet= vocab(DECR(t,a,b,l,e), 1); 91 clam = vocab(DECR(c,l,a,m,\0),1); 92 oyster= vocab(DECR(o,y,s,t,e), 1); 93 magzin= vocab(DECR(m,a,g,a,z), 1); 94 dwarf = vocab(DECR(d,w,a,r,f), 1); 95 knife = vocab(DECR(k,n,i,f,e), 1); 96 food = vocab(DECR(f,o,o,d,\0),1); 97 bottle= vocab(DECR(b,o,t,t,l), 1); 98 water = vocab(DECR(w,a,t,e,r), 1); 99 oil = vocab(DECR(o,i,l,\0,\0),1); 100 plant = vocab(DECR(p,l,a,n,t), 1); 101 plant2=plant+1; 102 axe = vocab(DECR(a,x,e,\0,\0),1); 103 mirror= vocab(DECR(m,i,r,r,o), 1); 104 dragon= vocab(DECR(d,r,a,g,o), 1); 105 chasm = vocab(DECR(c,h,a,s,m), 1); 106 troll = vocab(DECR(t,r,o,l,l), 1); 107 troll2=troll+1; 108 bear = vocab(DECR(b,e,a,r,\0),1); 109 messag= vocab(DECR(m,e,s,s,a), 1); 110 vend = vocab(DECR(v,e,n,d,i), 1); 111 batter= vocab(DECR(b,a,t,t,e), 1); 112 113 nugget= vocab(DECR(g,o,l,d,\0),1); 114 coins = vocab(DECR(c,o,i,n,s), 1); 115 chest = vocab(DECR(c,h,e,s,t), 1); 116 eggs = vocab(DECR(e,g,g,s,\0),1); 117 tridnt= vocab(DECR(t,r,i,d,e), 1); 118 vase = vocab(DECR(v,a,s,e,\0),1); 119 emrald= vocab(DECR(e,m,e,r,a), 1); 120 pyram = vocab(DECR(p,y,r,a,m), 1); 121 pearl = vocab(DECR(p,e,a,r,l), 1); 122 rug = vocab(DECR(r,u,g,\0,\0),1); 123 chain = vocab(DECR(c,h,a,i,n), 1); 124 125 back = vocab(DECR(b,a,c,k,\0),0); 126 look = vocab(DECR(l,o,o,k,\0),0); 127 cave = vocab(DECR(c,a,v,e,\0),0); 128 null = vocab(DECR(n,u,l,l,\0),0); 129 entrnc= vocab(DECR(e,n,t,r,a), 0); 130 dprssn= vocab(DECR(d,e,p,r,e), 0); 131 enter = vocab(DECR(e,n,t,e,r), 0); 132 133 pour = vocab(DECR(p,o,u,r,\0), 2); 134 say = vocab(DECR(s,a,y,\0,\0),2); 135 lock = vocab(DECR(l,o,c,k,\0),2); 136 throw = vocab(DECR(t,h,r,o,w), 2); 137 find = vocab(DECR(f,i,n,d,\0),2); 138 invent= vocab(DECR(i,n,v,e,n), 2); 139 140 /* initialize dwarves */ 141 chloc=114; 142 chloc2=140; 143 for (i=1; i<=6; i++) 144 dseen[i]=FALSE; 145 dflag=0; 146 dloc[1]=19; 147 dloc[2]=27; 148 dloc[3]=33; 149 dloc[4]=44; 150 dloc[5]=64; 151 dloc[6]=chloc; 152 daltlc=18; 153 154 /* random flags & ctrs */ 155 turns=0; 156 lmwarn=FALSE; 157 iwest=0; 158 knfloc=0; 159 detail=0; 160 abbnum=5; 161 for (i=0; i<=4; i++) 162 if (rtext[2*i+81].seekadr!=0) maxdie=i+1; 163 numdie=holdng=dkill=foobar=bonus=0; 164 clock1=30; 165 clock2=50; 166 saved=0; 167 closng=panic=closed=scorng=FALSE; 168 } 169 170 171 172 trapdel() /* come here if he hits a del */ 173 { delhit++; /* main checks, treats as QUIT */ 174 signal(2,trapdel); /* catch subsequent DELs */ 175 } 176 177 178 startup() 179 { 180 time_t time(); 181 182 demo=Start(0); 183 srand((int)(time((time_t *)NULL))); /* random seed */ 184 /* srand(371); /* non-random seed */ 185 hinted[3]=yes(65,1,0); 186 newloc=1; 187 delhit = 0; 188 limit=330; 189 if (hinted[3]) limit=1000; /* better batteries if instrucs */ 190 } 191