X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame.c;h=fdb77eb3e9e2a139200e2d6d4741f9455b4603e6;hp=70b9b811d2db47fc18b9944db43215e9b61ff74a;hb=172a34e8d64ad71e6eee7871803e9faee7669ca3;hpb=30eb586d06bc4d1ee7388dced1c20e530292aa93 diff --git a/src/game.c b/src/game.c index 70b9b811..fdb77eb3 100644 --- a/src/game.c +++ b/src/game.c @@ -4556,8 +4556,8 @@ void GameWon(void) Feld[ExitX][ExitY] = (element == EL_EXIT_OPEN ? EL_EXIT_CLOSING : - element == EL_EM_EXIT_OPEN ? EL_EM_EXIT_CLOSING : - element == EL_SP_EXIT_OPEN ? EL_SP_EXIT_CLOSING: + element == EL_EM_EXIT_OPEN ? EL_EM_EXIT_CLOSING : + element == EL_SP_EXIT_OPEN ? EL_SP_EXIT_CLOSING: element == EL_STEEL_EXIT_OPEN ? EL_STEEL_EXIT_CLOSING: EL_EM_STEEL_EXIT_CLOSING); @@ -8916,6 +8916,7 @@ static void Life(int ax, int ay) for (y1 = -1; y1 < 2; y1++) for (x1 = -1; x1 < 2; x1++) { int xx = ax+x1, yy = ay+y1; + int old_element = Feld[xx][yy]; int nachbarn = 0; if (!IN_LEV_FIELD(xx, yy)) @@ -8941,7 +8942,7 @@ static void Life(int ax, int ay) nachbarn > life_parameter[1]) { Feld[xx][yy] = EL_EMPTY; - if (!Stop[xx][yy]) + if (Feld[xx][yy] != old_element) TEST_DrawLevelField(xx, yy); Stop[xx][yy] = TRUE; changed = TRUE; @@ -8954,7 +8955,7 @@ static void Life(int ax, int ay) { Feld[xx][yy] = element; MovDelay[xx][yy] = (element == EL_GAME_OF_LIFE ? 0 : life_time-1); - if (!Stop[xx][yy]) + if (Feld[xx][yy] != old_element) TEST_DrawLevelField(xx, yy); Stop[xx][yy] = TRUE; changed = TRUE; @@ -13433,6 +13434,10 @@ void ExitPlayer(struct PlayerInfo *player) if (local_player->players_still_needed > 0) local_player->players_still_needed--; + + /* also set if some players not yet gone, but not needed to solve level */ + if (local_player->players_still_needed == 0) + AllPlayersGone = TRUE; } static void setFieldForSnapping(int x, int y, int element, int direction)