rnd-20071018-2-src
authorHolger Schemel <info@artsoft.org>
Thu, 18 Oct 2007 00:40:02 +0000 (02:40 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:56:36 +0000 (10:56 +0200)
ChangeLog
src/conftime.h
src/game.c

index 7896d422e11d13d49d7c84b4bb3e11460dcc31e7..72d8cd60481d1c65391e7d03f876bb5a8fe20620 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2007-10-18
-       * fixed growing steel wall to leave steel wall instead of normal wall
+       * fixed growing steel wall to also leave behind steel wall instead of
+         normal, destructible wall
+       * fixed handling of rocks falling through stacks of quicksand with
+         different speed (before, the rocks just got stuck in the quicksand)
 
 2007-10-09
        * fixed nasty bug with auto-override and normal override not working on
index 2116659d77b99b1dd17ec4a5102c759cc2d03e7e..8a9e33451a6fc83210438009db055af4ba6ecdc0 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2007-10-18 02:09"
+#define COMPILE_DATE_STRING "2007-10-18 02:23"
index 3992e53333fc029fb257897c3ecc5587152c1ab3..55020d92101c7516dc769647a76890dfed752940 100644 (file)
@@ -7587,6 +7587,33 @@ void StartMoving(int x, int y)
        Store[x][y + 1] = Store[x][y];
        Store[x][y] = 0;
 
+       PlayLevelSoundAction(x, y, ACTION_FILLING);
+      }
+      else if (Feld[x][y + 1] == EL_QUICKSAND_FAST_EMPTY)
+      {
+       if (!MovDelay[x][y])
+       {
+         MovDelay[x][y] = TILEY + 1;
+
+         ResetGfxAnimation(x, y);
+         ResetGfxAnimation(x, y + 1);
+       }
+
+       if (MovDelay[x][y])
+       {
+         DrawLevelElement(x, y, EL_QUICKSAND_EMPTYING);
+         DrawLevelElement(x, y + 1, EL_QUICKSAND_FAST_FILLING);
+
+         MovDelay[x][y]--;
+         if (MovDelay[x][y])
+           return;
+       }
+
+       Feld[x][y] = EL_QUICKSAND_EMPTY;
+       Feld[x][y + 1] = EL_QUICKSAND_FAST_FULL;
+       Store[x][y + 1] = Store[x][y];
+       Store[x][y] = 0;
+
        PlayLevelSoundAction(x, y, ACTION_FILLING);
       }
     }
@@ -7632,6 +7659,33 @@ void StartMoving(int x, int y)
        Store[x][y + 1] = Store[x][y];
        Store[x][y] = 0;
 
+       PlayLevelSoundAction(x, y, ACTION_FILLING);
+      }
+      else if (Feld[x][y + 1] == EL_QUICKSAND_EMPTY)
+      {
+       if (!MovDelay[x][y])
+       {
+         MovDelay[x][y] = TILEY + 1;
+
+         ResetGfxAnimation(x, y);
+         ResetGfxAnimation(x, y + 1);
+       }
+
+       if (MovDelay[x][y])
+       {
+         DrawLevelElement(x, y, EL_QUICKSAND_FAST_EMPTYING);
+         DrawLevelElement(x, y + 1, EL_QUICKSAND_FILLING);
+
+         MovDelay[x][y]--;
+         if (MovDelay[x][y])
+           return;
+       }
+
+       Feld[x][y] = EL_QUICKSAND_FAST_EMPTY;
+       Feld[x][y + 1] = EL_QUICKSAND_FULL;
+       Store[x][y + 1] = Store[x][y];
+       Store[x][y] = 0;
+
        PlayLevelSoundAction(x, y, ACTION_FILLING);
       }
     }