Remove objectioonable uses of global variables.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index b5979e6875f72cb908eccb305752f5d762648757..0dbba5f9c40a7d8547d8d268d1b02e6fd320d092 100644 (file)
--- a/main.c
+++ b/main.c
@@ -346,11 +346,15 @@ static bool dwarfmove(void)
                if(HERE(J))
                    K=1;
            }
+           /* Force chest placement before player finds last treasure */
            if(game.tally == 1 && K == 0 && game.place[CHEST] == 0 && HERE(LAMP) && game.prop[LAMP] == 1) {
                RSPEAK(186);
                MOVE(CHEST,game.chloc);
                MOVE(MESSAG,game.chloc2);
-               goto L6024;
+               game.dloc[PIRATE]=game.chloc;
+               game.odloc[PIRATE]=game.chloc;
+               game.dseen[PIRATE]=false;
+               continue;
            }
            if(game.odloc[PIRATE] != game.dloc[PIRATE] && PCT(20))
                RSPEAK(127);
@@ -372,7 +376,6 @@ static bool dwarfmove(void)
                        DROP(J,game.chloc);
                }
            }
-       L6024:
            game.dloc[PIRATE]=game.chloc;
            game.odloc[PIRATE]=game.chloc;
            game.dseen[PIRATE]=false;
@@ -645,7 +648,7 @@ L3000:      SETPRM(1,WD1,WD1X);
 
 L4000: I=4000; VERB=K; goto Laction;
 L4090: I=4090; goto Laction;
-L5000: I=5000;
+L5000: I=5000; obj = K;
 Laction:
         switch (action(cmdin, I, VERB, obj)) {
           case 2: return true;