| 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 | |