X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_game.c;h=d6ba5374db4d5e50448ab0e7ead370bda84bb6c8;hb=869bcbe4049f6135c202740019f6c2f60bde0425;hp=e822706ff9a00902ee49de8dc9fd5115aef8d05a;hpb=b0f18dbef013a0a3174ffd22cb468896b9db86fd;p=rocksndiamonds.git diff --git a/src/game_mm/mm_game.c b/src/game_mm/mm_game.c index e822706f..d6ba5374 100644 --- a/src/game_mm/mm_game.c +++ b/src/game_mm/mm_game.c @@ -2473,6 +2473,8 @@ static void OpenSurpriseBall(int x, int y) BlitBitmap(bitmap, drawto, gx + dx, gy + dy, 6, 6, cSX + x * TILEX + dx, cSY + y * TILEY + dy); + laser.redraw = TRUE; + MarkTileDirty(x, y); } @@ -2666,15 +2668,14 @@ static void Explode_MM(int x, int y, int phase, int mode) Tile[x][y] = center_element; } - if (center_element == EL_BOMB_ACTIVE || IS_MCDUFFIN(center_element)) - Store[x][y] = center_element; - else - Store[x][y] = EL_EMPTY; - + Store[x][y] = center_element; Store2[x][y] = mode; Tile[x][y] = EL_EXPLODING_OPAQUE; - GfxElement[x][y] = center_element; + + GfxElement[x][y] = (center_element == EL_BOMB_ACTIVE ? EL_BOMB : + IS_MCDUFFIN(center_element) ? EL_MCDUFFIN : + center_element); MovDir[x][y] = MovPos[x][y] = MovDelay[x][y] = 0; @@ -2704,7 +2705,6 @@ static void Explode_MM(int x, int y, int phase, int mode) InitLaser(); Bang_MM(laser.start_edge.x, laser.start_edge.y); - Store[x][y] = EL_EMPTY; GameOver_MM(GAME_OVER_DELAYED); @@ -2712,12 +2712,11 @@ static void Explode_MM(int x, int y, int phase, int mode) } else if (IS_MCDUFFIN(Store[x][y])) { - Store[x][y] = EL_EMPTY; - GameOver_MM(GAME_OVER_BOMB); } - Tile[x][y] = Store[x][y]; + Tile[x][y] = EL_EMPTY; + Store[x][y] = Store2[x][y] = 0; MovDir[x][y] = MovPos[x][y] = MovDelay[x][y] = 0; @@ -3491,7 +3490,11 @@ static void GameActions_MM_Ext(void) int new_element = native_mm_level.ball_content[element_pos]; - Store[ELX][ELY] = get_rotated_element(new_element, RND(16)); + // randomly rotate newly created game element, if needed + if (native_mm_level.rotate_ball_content) + new_element = get_rotated_element(new_element, RND(16)); + + Store[ELX][ELY] = new_element; Store2[ELX][ELY] = TRUE; }