fixed graphical bugs if digging or collecting caused player relocation
[rocksndiamonds.git] / src / game.c
index 8b77ddef674f65d232e0c968c5e4c5ef9529870f..c6a7ef73146a7cf1bd90b59121cbf0856b802189 100644 (file)
@@ -13997,6 +13997,10 @@ static int DigField(struct PlayerInfo *player,
     CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_DIGS_X,
                                        player->index_bit, dig_side);
 
+    // if digging triggered player relocation, finish digging tile
+    if (mode == DF_DIG && (player->jx != jx || player->jy != jy))
+      setFieldForSnapping(x, y, element, move_direction);
+
     if (mode == DF_SNAP)
     {
       if (level.block_snap_field)
@@ -14118,9 +14122,15 @@ static int DigField(struct PlayerInfo *player,
     PlayLevelSoundElementAction(x, y, element, ACTION_COLLECTING);
 
     if (is_player)
+    {
       CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_COLLECTS_X,
                                          player->index_bit, dig_side);
 
+      // if collecting triggered player relocation, finish collecting tile
+      if (mode == DF_DIG && (player->jx != jx || player->jy != jy))
+       setFieldForSnapping(x, y, element, move_direction);
+    }
+
     if (mode == DF_SNAP)
     {
       if (level.block_snap_field)