X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=5a859675c607b680a25fdb11b29cedea4ede51ac;hb=4386c0ac1665619412148f1eb907f6d366a70d7d;hp=54d678499801233dd497952ba799c00004722253;hpb=684f9040af5b97bc73676f8f8198688d87c3ea25;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 54d67849..5a859675 100644 --- a/src/game.c +++ b/src/game.c @@ -1893,7 +1893,7 @@ void Explode(int ex, int ey, int phase, int mode) PlaySoundLevelAction(ex, ey, ACTION_EXPLODING); /* remove things displayed in background while burning dynamite */ - if (!IS_INDESTRUCTIBLE(Back[ex][ey])) + if (Back[ex][ey] != EL_EMPTY && !IS_INDESTRUCTIBLE(Back[ex][ey])) Back[ex][ey] = 0; if (IS_MOVING(ex, ey) || IS_BLOCKED(ex, ey)) @@ -1927,7 +1927,7 @@ void Explode(int ex, int ey, int phase, int mode) #if 1 -#if 1 +#if 0 if (IS_EXPLOSION_PROOF(element)) continue; #else @@ -1958,11 +1958,11 @@ void Explode(int ex, int ey, int phase, int mode) } /* save walkable background elements while explosion on same tile */ -#if 1 +#if 0 if (IS_INDESTRUCTIBLE(element)) Back[x][y] = element; #else - if (IS_INDESTRUCTIBLE(element) && IS_WALKABLE(element)) + if (IS_WALKABLE(element) && IS_INDESTRUCTIBLE(element)) Back[x][y] = element; #endif @@ -2136,6 +2136,9 @@ void Explode(int ex, int ey, int phase, int mode) InitMovDir(x, y); DrawLevelField(x, y); + if (CAN_BE_CRUMBLED(element)) + DrawLevelFieldCrumbledSandNeighbours(x, y); + if (IS_PLAYER(x, y) && !PLAYERINFO(x,y)->present) StorePlayer[x][y] = 0; } @@ -4055,7 +4058,8 @@ void StartMoving(int x, int y) TurnRound(x, y); #if 1 - DrawLevelElementAnimation(x, y, element); + if (GFX_ELEMENT(element) != EL_SAND) + DrawLevelElementAnimation(x, y, element); #else if (element == EL_BUG || element == EL_SPACESHIP || @@ -7198,8 +7202,12 @@ int DigField(struct PlayerInfo *player, if (mode != DF_SNAP) { +#if 1 + GfxElement[x][y] = GFX_ELEMENT(element); +#else GfxElement[x][y] = (CAN_BE_CRUMBLED(element) ? EL_SAND : GFX_ELEMENT(element)); +#endif player->is_digging = TRUE; }