rnd-20030716-1-src
authorHolger Schemel <info@artsoft.org>
Wed, 16 Jul 2003 19:42:40 +0000 (21:42 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:42:41 +0000 (10:42 +0200)
src/conftime.h
src/editor.c
src/game.c

index 63d5a4356335130e47a75ef1ee3fde4405fa61ca..392061d471893f926e242f983a0e6c664cd5c1eb 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-07-09 23:16]"
+#define COMPILE_DATE_STRING "[2003-07-16 20:28]"
index c3cf7a1236b5b12866d8fadb8f33f52435a75cd4..d780a053e1453e4d44e34935756d610fd4d41822 100644 (file)
@@ -959,7 +959,9 @@ static struct ValueTextInfo options_move_stepsize[] =
 static struct ValueTextInfo options_smash_targets[] =
 {
   { EP_CAN_SMASH_PLAYER,       "player"                        },
+#if 0
   { EP_CAN_SMASH_ENEMIES,      "enemies"                       },
+#endif
   { EP_CAN_SMASH_EVERYTHING,   "everything"                    },
   { -1,                                NULL                            }
 };
index 150182acf867b13d662dc4dd023d61ec5600ec87..2a63d3cea336b8d82d9a92d23525ad97cf5055a1 100644 (file)
@@ -1918,7 +1918,9 @@ void Explode(int ex, int ey, int phase, int mode)
       if (IS_MOVING(x, y) || IS_BLOCKED(x, y))
       {
        element = MovingOrBlocked2Element(x, y);
-       RemoveMovingField(x, y);
+
+       if (!IS_EXPLOSION_PROOF(element))
+         RemoveMovingField(x, y);
       }
 
 #if 1
@@ -2768,6 +2770,13 @@ void Impact(int x, int y)
       Bang(x, y + 1);
       return;
     }
+#if 0
+    else if (CAN_SMASH_ENEMIES(element) && IS_CLASSIC_ENEMY(smashed))
+    {
+      Bang(x, y + 1);
+      return;
+    }
+#endif
     else if (CAN_SMASH_EVERYTHING(element))
     {
       if (IS_CLASSIC_ENEMY(smashed) ||
@@ -5119,6 +5128,10 @@ static void ChangeElementNowExt(int x, int y, int target_element)
 
   if (CAN_BE_CRUMBLED(Feld[x][y]))
     DrawLevelFieldCrumbledSandNeighbours(x, y);
+
+  TestIfBadThingTouchesHero(x, y);
+  TestIfPlayerTouchesCustomElement(x, y);
+  TestIfElementTouchesCustomElement(x, y);
 }
 
 static void ChangeElementNow(int x, int y, int element)
@@ -5173,6 +5186,9 @@ static void ChangeElementNow(int x, int y, int element)
 
       e = Feld[ex][ey];
 
+      if (IS_MOVING(ex, ey) || IS_BLOCKED(ex, ey))
+       e = MovingOrBlocked2Element(ex, ey);
+
       half_destructible = (IS_FREE(ex, ey) || IS_DIGGABLE(e));
 
       if ((change->power <= CP_NON_DESTRUCTIVE  && !IS_FREE(ex, ey)) ||
@@ -5198,6 +5214,9 @@ static void ChangeElementNow(int x, int y, int element)
        if (can_change[xx][yy] && (!change->use_random_change ||
                                   RND(change->random) == 0))
        {
+         if (IS_MOVING(ex, ey) || IS_BLOCKED(ex, ey))
+           RemoveMovingField(ex, ey);
+
          ChangeElementNowExt(ex, ey, change->content[xx][yy]);
 
          /* for symmetry reasons, stop newly created border elements */