Eliminate globals.
[open-adventure.git] / score.c
diff --git a/score.c b/score.c
index 1b3736efc52eac3773db1c8d1c95b0207e9be734..d0915b28887aedf3e832785daf86b7513fdb68bf 100644 (file)
--- a/score.c
+++ b/score.c
@@ -1,14 +1,14 @@
 #include <stdlib.h>
-#include "misc.h"
-#include "main.h"
-#include "share.h"
+#include "advent.h"
+#include "database.h"
 
 /*
  * scoring and wrap-up
  */
 
 void score(long MODE) {
-       /* <0 if scoring, >0 if quitting, =0 if died or won */
+/* arg is <0 if scoring, >0 if quitting, =0 if died or won */
+       long MXSCOR = 0;
 
 /*  The present scoring algorithm is as follows:
  *     Objective:          Points:        Present total possible:
@@ -40,8 +40,8 @@ void score(long MODE) {
        K=12;
        if(I == CHEST)K=14;
        if(I > CHEST)K=16;
-       if(PROP[I] >= 0)SCORE=SCORE+2;
-       if(PLACE[I] == 3 && PROP[I] == 0)SCORE=SCORE+K-2;
+       if(game.prop[I] >= 0)SCORE=SCORE+2;
+       if(game.place[I] == 3 && game.prop[I] == 0)SCORE=SCORE+K-2;
        MXSCOR=MXSCOR+K;
 L20010: /*etc*/ ;
        } /* end loop */
@@ -50,7 +50,7 @@ L20010: /*etc*/ ;
  *  how well he survived.  game.dflag will
  *  tell us if he ever got suitably deep into the cave.  game.closng still indicates
  *  whether he reached the endgame.  And if he got as far as "cave closed"
- *  (indicated by "game.closed"), then game.bonus is zero for mundane exits or 133, 134,
+ *  (indicated by "game.closed"), then bonus is zero for mundane exits or 133, 134,
  *  135 if he blew it (so to speak). */
 
        SCORE=SCORE+(MAXDIE-game.numdie)*10;
@@ -70,7 +70,7 @@ L20020: MXSCOR=MXSCOR+45;
 
 /*  Did he come to Witt's End as he should? */
 
-       if(PLACE[MAGZIN] == 108)SCORE=SCORE+1;
+       if(game.place[MAGZIN] == 108)SCORE=SCORE+1;
        MXSCOR=MXSCOR+1;
 
 /*  Round it off. */
@@ -81,15 +81,20 @@ L20020: MXSCOR=MXSCOR+45;
 /*  Deduct for hints/turns/saves.  Hints < 4 are special; see database desc. */
 
        for (I=1; I<=HNTMAX; I++) {
-       if(HINTED[I])SCORE=SCORE-HINTS[I][2];
+       if(game.hinted[I])SCORE=SCORE-HINTS[I][2];
        } /* end loop */
        if(game.novice)SCORE=SCORE-5;
-       if(CLSHNT)SCORE=SCORE-10;
+       if(game.clshnt)SCORE=SCORE-10;
        SCORE=SCORE-game.trnluz-game.saved;
 
 /*  Return to score command if that's where we came from. */
 
-       if(MODE < 0) return;
+       if(MODE < 0) {
+               SETPRM(1,SCORE,MXSCOR);
+               SETPRM(3,game.turns,game.turns);
+               RSPEAK(259);
+               return;
+       }
 
 /*  that should be good enough.  Let's tell him all about it. */
 
@@ -102,16 +107,16 @@ L20020: MXSCOR=MXSCOR+45;
        if(CVAL[I] >= SCORE) goto L20210;
        /*etc*/ ;
        } /* end loop */
-       game.spk=265;
+       SPK=265;
         goto L25000;
 
 L20210: SPEAK(CTEXT[I]);
-       game.spk=264;
+       SPK=264;
        if(I >= CLSSES) goto L25000;
        I=CVAL[I]+1-SCORE;
        SETPRM(1,I,I);
-       game.spk=263;
-L25000: RSPEAK(game.spk);
+       SPK=263;
+L25000: RSPEAK(SPK);
        exit(0);
 
 }