rnd-20030624-1-src
authorHolger Schemel <info@artsoft.org>
Tue, 24 Jun 2003 06:11:49 +0000 (08:11 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:42:19 +0000 (10:42 +0200)
src/conftime.h
src/game.c
src/tools.c

index dbf559323a4732747ba75d287405ae370032d39a..5fa300177619032a7a816206756a26743ad79815 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-06-20 18:24]"
+#define COMPILE_DATE_STRING "[2003-06-23 23:45]"
index 4ea608c3ac6f45538768a1b56453e62c0a73db78..d0f7751bbbca9183bf1fed4ec03edb5008671678 100644 (file)
@@ -5010,7 +5010,12 @@ static void CheckPlayerElementChange(int x, int y, int element,
   if (!CAN_CHANGE(element) || !HAS_CHANGE_EVENT(element, trigger_event))
     return;
 
+#if 1
+  ChangeDelay[x][y] = 1;
+  ChangeElement(x, y);
+#else
   ChangeElementDoIt(x, y, element_info[element].change.successor);
+#endif
 }
 
 static void PlayerActions(struct PlayerInfo *player, byte player_action)
@@ -6366,6 +6371,7 @@ static boolean checkDiagonalPushing(struct PlayerInfo *player,
 int DigField(struct PlayerInfo *player,
             int x, int y, int real_dx, int real_dy, int mode)
 {
+  boolean use_spring_bug = (game.engine_version < VERSION_IDENT(2,2,0));
   int jx = player->jx, jy = player->jy;
   int dx = x - jx, dy = y - jy;
   int move_direction = (dx == -1 ? MV_LEFT :
@@ -6779,6 +6785,10 @@ int DigField(struct PlayerInfo *player,
       if (dy)
        return MF_NO_ACTION;
 
+      if (CAN_FALL(element) && IN_LEV_FIELD(x, y + 1) && IS_FREE(x, y + 1) &&
+         !(element == EL_SPRING && use_spring_bug))
+       return MF_NO_ACTION;
+
       player->Pushing = TRUE;
 
 #if 0
@@ -7195,6 +7205,9 @@ int DigField(struct PlayerInfo *player,
        if (CAN_FALL(element) && dy)
          return MF_NO_ACTION;
 
+       if (CAN_FALL(element) && IN_LEV_FIELD(x, y + 1) && IS_FREE(x, y + 1))
+         return MF_NO_ACTION;
+
        if (!player->Pushing &&
            game.engine_version >= RELEASE_IDENT(2,2,0,7))
          player->push_delay_value = GET_NEW_PUSH_DELAY(element);
@@ -7235,7 +7248,11 @@ int DigField(struct PlayerInfo *player,
        PlaySoundLevelElementAction(x, y, element, ACTION_PUSHING);
 
        CheckTriggeredElementChange(element, CE_OTHER_PUSHING);
+#if 1
+       CheckPlayerElementChange(x, y, element, CE_PUSHED_BY_PLAYER);
+#else
        CheckPlayerElementChange(x + dx, y + dy, element, CE_PUSHED_BY_PLAYER);
+#endif
 
        break;
       }
index 867ee3c0f394bb2162a9368f474773d615ac1c5a..761aa4a88580bced42c7eb77704e92fe722f5870 100644 (file)
@@ -707,7 +707,7 @@ void DrawPlayer(struct PlayerInfo *player)
                                 NO_CUTTING);
     else
     {
-#if 0
+#if 1
       int element = Feld[jx][jy];
 #else
       int element = Feld[next_jx][next_jy];