rnd-20030506-1-src
[rocksndiamonds.git] / src / game.c
index 5a63c25ea5fc04c0c8c90389daa48c5023acacb2..7436b1d9ae07ca7823359240c53ea48b72d273a3 100644 (file)
@@ -702,7 +702,7 @@ static void InitGameEngine()
 
     if (HAS_CHANGE_EVENT(element, CE_DELAY_FIXED))
       changing_element[element].change_delay +=
-       change->delay_fixed * FRAMES_PER_SECOND;
+       change->delay_fixed * change->delay_frames;
 
     if (HAS_CHANGE_EVENT(element, CE_DELAY_RANDOM));
     /* random frame delay added at runtime for each element individually */
@@ -1850,7 +1850,7 @@ void Explode(int ex, int ey, int phase, int mode)
     if (phase == delay)
       DrawLevelFieldCrumbledSand(x, y);
 
-    if (IS_WALKABLE_OVER(Back[x][y]))
+    if (IS_WALKABLE_OVER(Back[x][y]) && Back[x][y] != EL_EMPTY)
     {
       DrawLevelElement(x, y, Back[x][y]);
       DrawGraphicThruMask(SCREENX(x), SCREENY(y), graphic, frame);
@@ -4553,7 +4553,7 @@ static void ChangeElement(int x, int y)
 {
   int element = Feld[x][y];
 
-  if (IS_MOVING(x, y))                 /* never change moving elements */
+  if (IS_MOVING(x, y))                 /* never change a running system :-) */
     return;
 
   if (MovDelay[x][y] == 0)             /* initialize element change */
@@ -4565,8 +4565,9 @@ static void ChangeElement(int x, int y)
     {
       int i = element - EL_CUSTOM_START;
       int max_random_delay = level.custom_element[i].change.delay_random;
+      int delay_frames = level.custom_element[i].change.delay_frames;
 
-      MovDelay[x][y] += RND(max_random_delay * FRAMES_PER_SECOND);
+      MovDelay[x][y] += RND(max_random_delay * delay_frames);
     }
 
     ResetGfxAnimation(x, y);