fixed bug with high scores for wrong level when auto-playing next level
[rocksndiamonds.git] / src / game.c
index 18d020bdf802d695ae9d10429b854a4613916456..40efde17d7321a5dcac60e754bea4c0230e16ddf 100644 (file)
@@ -4667,6 +4667,8 @@ void GameWon(void)
 
 void GameEnd(void)
 {
+  /* used instead of "level_nr" (needed for network games) */
+  int last_level_nr = levelset.level_nr;
   int hi_pos;
 
   local_player->LevelSolved_GameEnd = TRUE;
@@ -4723,14 +4725,13 @@ void GameEnd(void)
     }
   }
 
-  /* used instead of last "level_nr" (for network games) */
-  hi_pos = NewHiScore(levelset.level_nr);
+  hi_pos = NewHiScore(last_level_nr);
 
   if (hi_pos >= 0 && !setup.skip_scores_after_game)
   {
     SetGameStatus(GAME_MODE_SCORES);
 
-    DrawHallOfFame(levelset.level_nr, hi_pos);
+    DrawHallOfFame(last_level_nr, hi_pos);
   }
   else if (setup.auto_play_next_level && setup.increment_levels &&
           !network_playing)
@@ -8896,7 +8897,6 @@ static void Life(int ax, int ay)
   int *life_parameter = (element == EL_GAME_OF_LIFE ? level.game_of_life :
                         level.biomaze);
   boolean changed = FALSE;
-  boolean use_life_bugs = FALSE;
 
   if (IS_ANIMATED(graphic))
     DrawLevelGraphicAnimationIfNeeded(ax, ay, graphic);
@@ -8933,7 +8933,7 @@ static void Life(int ax, int ay)
       boolean is_player_cell = (element == EL_GAME_OF_LIFE && IS_PLAYER(x, y));
       boolean is_neighbour = FALSE;
 
-      if (use_life_bugs)
+      if (level.use_life_bugs)
        is_neighbour =
          (((Feld[x][y] == element || is_player_cell) && !Stop[x][y]) ||
           (IS_FREE(x, y)                             &&  Stop[x][y]));
@@ -8947,7 +8947,7 @@ static void Life(int ax, int ay)
 
     boolean is_free = FALSE;
 
-    if (use_life_bugs)
+    if (level.use_life_bugs)
       is_free = (IS_FREE(xx, yy));
     else
       is_free = (IS_FREE(xx, yy) && Last[xx][yy] == EL_EMPTY);