rnd-20030628-2-src
authorHolger Schemel <info@artsoft.org>
Sat, 28 Jun 2003 13:03:13 +0000 (15:03 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:42:23 +0000 (10:42 +0200)
src/conftime.h
src/game.c

index 2eb3b39c23d51a6db4f59313e8df1a3b6f5d059d..6a13fdbba62c72ec74df0ac563ea30e17ec205c8 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-06-28 00:49]"
+#define COMPILE_DATE_STRING "[2003-06-28 12:35]"
index 61baa07ce653f8907193700e2a6b1d1071afb30c..30af0fcbbd7a50affb604b234f7da58d87e9e1bd 100644 (file)
@@ -3361,9 +3361,12 @@ void StartMoving(int x, int y)
             JustStopped[x][y])
 #endif
     {
-      /*
-      printf("::: %d\n", MovDir[x][y]);
-      */
+      /* calling "Impact()" here is not only completely unneccessary
+        (because it already gets called from "ContinueMoving()" in
+        all relevant situations), but also completely bullshit, because
+        "JustStopped" also indicates a finished *horizontal* movement;
+        we must keep this trash for backwards compatibility with older
+        tapes */
 
       Impact(x, y);
     }
@@ -3446,7 +3449,7 @@ void StartMoving(int x, int y)
     }
   }
 
-  /* not "else if" because of EL_SPRING */
+  /* not "else if" because of elements that can fall and move (EL_SPRING) */
   if (CAN_MOVE(element) && !started_moving)
   {
     int newx, newy;
@@ -4004,17 +4007,25 @@ void ContinueMoving(int x, int y)
 
 #if 1
 #if 0
+    /* 2.1.1 (does not work correctly for spring) */
     if (!CAN_MOVE(element))
       MovDir[newx][newy] = 0;
 #else
 
 #if 0
+    /* (does not work for falling objects that slide horizontally) */
     if (CAN_FALL(element) && MovDir[newx][newy] == MV_DOWN)
       MovDir[newx][newy] = 0;
 #else
+    /*
     if (!CAN_MOVE(element) ||
        (element == EL_SPRING && MovDir[newx][newy] == MV_DOWN))
       MovDir[newx][newy] = 0;
+    */
+
+    if (!CAN_MOVE(element) ||
+       (CAN_FALL(element) && MovDir[newx][newy] == MV_DOWN))
+      MovDir[newx][newy] = 0;
 #endif
 
 #endif