rnd-20061028-2-src
authorHolger Schemel <info@artsoft.org>
Sat, 28 Oct 2006 12:24:25 +0000 (14:24 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:53:33 +0000 (10:53 +0200)
* fixed bug which caused elements with "change when digging <e>" event
  to change for _every_ digged element, not only those specified in <e>

ChangeLog
src/conftime.h
src/game.c

index bd7464c9e8d32a48cc9c816354426a4a614504cd..ee351ca062a80bcd778725c3e125b08b4e09725a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2006-10-28
        * fixed bug when displaying titlescreen with size less than element tile
+       * fixed bug which caused elements with "change when digging <e>" event
+         to change for _every_ digged element, not only those specified in <e>
 
 2006-10-24
        * fixed bug that allowed making engine snapshots from the level editor
index 15feac7601b8d17eb10c0fbdf5ffcb442304bde3..8deef746ead6f3290be17ff603046c49fc85ba7c 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2006-10-28 13:41]"
+#define COMPILE_DATE_STRING "[2006-10-28 14:24]"
index f078ff7c5ae5915d0279c07a7c5cc92a0475c014..5cf59431589d00d9bb1ca84e0224f17f44dafb0e 100644 (file)
@@ -6667,7 +6667,7 @@ void ContinueMoving(int x, int y)
   if (IS_CUSTOM_ELEMENT(element) && ei->move_enter_element != EL_EMPTY &&
       IS_EQUAL_OR_IN_GROUP(stored_new, ei->move_enter_element))
     CheckElementChangeBySide(newx, newy, element, stored_new, CE_DIGGING_X,
-                                     MV_DIR_OPPOSITE(direction));
+                            MV_DIR_OPPOSITE(direction));
 }
 
 int AmoebeNachbarNr(int ax, int ay)
@@ -8644,10 +8644,18 @@ static boolean CheckElementChangeExt(int x, int y,
   {
     struct ElementChangeInfo *change = &element_info[element].change_page[p];
 
+    /* check trigger element for all events where the element that is checked
+       for changing interacts with a directly adjacent element -- this is
+       different to element changes that affect other elements to change on the
+       whole playfield (which is handeld by CheckTriggeredElementChangeExt()) */
     boolean check_trigger_element =
       (trigger_event == CE_TOUCHING_X ||
        trigger_event == CE_HITTING_X ||
-       trigger_event == CE_HIT_BY_X);
+       trigger_event == CE_HIT_BY_X ||
+#if 1
+       /* this one was forgotten until 3.2.3 */
+       trigger_event == CE_DIGGING_X);
+#endif
 
     if (change->can_change_or_has_action &&
        change->has_event[trigger_event] &&