Annotation of 43BSDReno/games/adventure/done.c, revision 1.1.1.1

1.1       root        1: #
                      2: /*      Re-coding of advent in C: termination routines                  */
                      3: 
                      4: static char sccsid[] = "       done.c  4.1     82/05/11        ";
                      5: 
                      6: 
                      7: # include "hdr.h"
                      8: 
                      9: score()                                         /* sort of like 20000   */
                     10: {       register int scor,i;
                     11:        mxscor=scor=0;
                     12:        for (i=50; i<=maxtrs; i++)
                     13:        {       if (ptext[i].txtlen==0) continue;
                     14:                k=12;
                     15:                if (i==chest) k=14;
                     16:                if (i>chest) k=16;
                     17:                if (prop[i]>=0) scor += 2;
                     18:                if (place[i]==3&&prop[i]==0) scor += k-2;
                     19:                mxscor += k;
                     20:        }
                     21:        scor += (maxdie-numdie)*10;
                     22:        mxscor += maxdie*10;
                     23:        if (!(scorng||gaveup)) scor += 4;
                     24:        mxscor += 4;
                     25:        if (dflag!=0) scor += 25;
                     26:        mxscor += 25;
                     27:        if (closng) scor += 25;
                     28:        mxscor += 25;
                     29:        if (closed)
                     30:        {       if (bonus==0) scor += 10;
                     31:                if (bonus==135) scor += 25;
                     32:                if (bonus==134) scor += 30;
                     33:                if (bonus==133) scor += 45;
                     34:        }
                     35:        mxscor += 45;
                     36:        if (place[magzin]==108) scor++;
                     37:        mxscor++;
                     38:        scor += 2;
                     39:        mxscor += 2;
                     40:        for (i=1; i<=hntmax; i++)
                     41:                if (hinted[i]) scor -= hints[i][2];
                     42:        return(scor);
                     43: }
                     44: 
                     45: done(entry)     /* entry=1 means goto 13000 */  /* game is over         */
                     46: int entry;      /* entry=2 means goto 20000 */ /* 3=19000 */
                     47: {       register int i,sc;
                     48:        if (entry==1) mspeak(1);
                     49:        if (entry==3) rspeak(136);
                     50:        printf("\n\n\nYou scored %d out of a ",(sc=score()));
                     51:        printf("possible %d using %d turns.\n",mxscor,turns);
                     52:        for (i=1; i<=clsses; i++)
                     53:                if (cval[i]>=sc)
                     54:                {       speak(&ctext[i]);
                     55:                        if (i==clsses-1)
                     56:                        {       printf("To achieve the next higher rating");
                     57:                                printf(" would be a neat trick!\n\n");
                     58:                                printf("Congratulations!!\n");
                     59:                                exit(0);
                     60:                        }
                     61:                        k=cval[i]+1-sc;
                     62:                        printf("To achieve the next higher rating, you need");
                     63:                        printf(" %d more point",k);
                     64:                        if (k==1) printf(".\n");
                     65:                        else printf("s.\n");
                     66:                        exit(0);
                     67:                }
                     68:        printf("You just went off my scale!!!\n");
                     69:        exit(0);
                     70: }
                     71: 
                     72: 
                     73: die(entry)                                      /* label 90             */
                     74: int entry;
                     75: {       register int i;
                     76:        if (entry != 99)
                     77:        {       rspeak(23);
                     78:                oldlc2=loc;
                     79:        }
                     80:        if (closng)                             /* 99                   */
                     81:        {       rspeak(131);
                     82:                numdie++;
                     83:                done(2);
                     84:        }
                     85:        yea=yes(81+numdie*2,82+numdie*2,54);
                     86:        numdie++;
                     87:        if (numdie==maxdie || !yea) done(2);
                     88:        place[water]=0;
                     89:        place[oil]=0;
                     90:        if (toting(lamp)) prop[lamp]=0;
                     91:        for (i=100; i>=1; i--)
                     92:        {       if (!toting(i)) continue;
                     93:                k=oldlc2;
                     94:                if (i==lamp) k=1;
                     95:                drop(i,k);
                     96:        }
                     97:        loc=3;
                     98:        oldloc=loc;
                     99:        return(2000);
                    100: }
                    101: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.