Eliminate globals.
[open-adventure.git] / score.c
diff --git a/score.c b/score.c
index 484a9e7097ddef22996bc15823e5c214893b70b2..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,22 +81,27 @@ 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(NOVICE)SCORE=SCORE-5;
-       if(CLSHNT)SCORE=SCORE-10;
-       SCORE=SCORE-TRNLUZ-SAVED;
+       if(game.novice)SCORE=SCORE-5;
+       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. */
 
-       if(SCORE+TRNLUZ+1 >= MXSCOR && TRNLUZ != 0)RSPEAK(242);
-       if(SCORE+SAVED+1 >= MXSCOR && SAVED != 0)RSPEAK(143);
+       if(SCORE+game.trnluz+1 >= MXSCOR && game.trnluz != 0)RSPEAK(242);
+       if(SCORE+game.saved+1 >= MXSCOR && game.saved != 0)RSPEAK(143);
        SETPRM(1,SCORE,MXSCOR);
-       SETPRM(3,TURNS,TURNS);
+       SETPRM(3,game.turns,game.turns);
        RSPEAK(262);
        for (I=1; I<=CLSSES; I++) {
        if(CVAL[I] >= SCORE) goto L20210;