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