rnd-20040301-1-src
[rocksndiamonds.git] / src / init.c
index 40b6417a04d32f6218f0c8efb5862833196ddeb6..a78ee6118bb5241ef391f7eb193ee46af187798c 100644 (file)
@@ -1577,48 +1577,50 @@ static int get_special_property_bit(int element, int base_property_bit)
     int bit_nr;
   } pb_can_move_into_acid[] =
   {
-    { EL_BUG,                  0 },
-    { EL_BUG_LEFT,             0 },
-    { EL_BUG_RIGHT,            0 },
-    { EL_BUG_UP,               0 },
-    { EL_BUG_DOWN,             0 },
-    { EL_SPACESHIP,            0 },
-    { EL_SPACESHIP_LEFT,       0 },
-    { EL_SPACESHIP_RIGHT,      0 },
-    { EL_SPACESHIP_UP,         0 },
-    { EL_SPACESHIP_DOWN,       0 },
-    { EL_BD_BUTTERFLY,         1 },
-    { EL_BD_BUTTERFLY_LEFT,    1 },
-    { EL_BD_BUTTERFLY_RIGHT,   1 },
-    { EL_BD_BUTTERFLY_UP,      1 },
-    { EL_BD_BUTTERFLY_DOWN,    1 },
-    { EL_BD_FIREFLY,           1 },
-    { EL_BD_FIREFLY_LEFT,      1 },
-    { EL_BD_FIREFLY_RIGHT,     1 },
-    { EL_BD_FIREFLY_UP,                1 },
-    { EL_BD_FIREFLY_DOWN,      1 },
-    { EL_YAMYAM,               2 },
-    { EL_DARK_YAMYAM,          2 },
-    { EL_ROBOT,                        3 },
-    { EL_PACMAN,               4 },
-    { EL_PACMAN_LEFT,          4 },
-    { EL_PACMAN_RIGHT,         4 },
-    { EL_PACMAN_UP,            4 },
-    { EL_PACMAN_DOWN,          4 },
-    { EL_MOLE,                 4 },
-    { EL_MOLE_LEFT,            4 },
-    { EL_MOLE_RIGHT,           4 },
-    { EL_MOLE_UP,              4 },
-    { EL_MOLE_DOWN,            4 },
-    { EL_PENGUIN,              5 },
-    { EL_PIG,                  6 },
-    { EL_DRAGON,               6 },
-    { EL_SATELLITE,            7 },
-    { EL_SP_SNIKSNAK,          8 },
-    { EL_SP_ELECTRON,          8 },
-    { EL_BALLOON,              9 },
-
-    { -1,                      0 },
+    /* all element that can move */
+    { EL_BUG,                  0       },
+    { EL_BUG_LEFT,             0       },
+    { EL_BUG_RIGHT,            0       },
+    { EL_BUG_UP,               0       },
+    { EL_BUG_DOWN,             0       },
+    { EL_SPACESHIP,            0       },
+    { EL_SPACESHIP_LEFT,       0       },
+    { EL_SPACESHIP_RIGHT,      0       },
+    { EL_SPACESHIP_UP,         0       },
+    { EL_SPACESHIP_DOWN,       0       },
+    { EL_BD_BUTTERFLY,         1       },
+    { EL_BD_BUTTERFLY_LEFT,    1       },
+    { EL_BD_BUTTERFLY_RIGHT,   1       },
+    { EL_BD_BUTTERFLY_UP,      1       },
+    { EL_BD_BUTTERFLY_DOWN,    1       },
+    { EL_BD_FIREFLY,           1       },
+    { EL_BD_FIREFLY_LEFT,      1       },
+    { EL_BD_FIREFLY_RIGHT,     1       },
+    { EL_BD_FIREFLY_UP,                1       },
+    { EL_BD_FIREFLY_DOWN,      1       },
+    { EL_YAMYAM,               2       },
+    { EL_DARK_YAMYAM,          2       },
+    { EL_ROBOT,                        3       },
+    { EL_PACMAN,               4       },
+    { EL_PACMAN_LEFT,          4       },
+    { EL_PACMAN_RIGHT,         4       },
+    { EL_PACMAN_UP,            4       },
+    { EL_PACMAN_DOWN,          4       },
+    { EL_MOLE,                 4       },
+    { EL_MOLE_LEFT,            4       },
+    { EL_MOLE_RIGHT,           4       },
+    { EL_MOLE_UP,              4       },
+    { EL_MOLE_DOWN,            4       },
+    { EL_PENGUIN,              5       },
+    { EL_PIG,                  6       },
+    { EL_DRAGON,               6       },
+    { EL_SATELLITE,            7       },
+    { EL_SP_SNIKSNAK,          8       },
+    { EL_SP_ELECTRON,          8       },
+    { EL_BALLOON,              9       },
+    { EL_SPRING,               10      },
+
+    { -1,                      -1      },
   };
   int i;
 
@@ -1638,10 +1640,10 @@ void setMoveIntoAcidProperty(struct LevelInfo *level, int element, boolean set)
 
   if (bit_nr > -1)
   {
-    level->can_move_into_acid &= ~(1 << bit_nr);
+    level->can_move_into_acid_bits &= ~(1 << bit_nr);
 
     if (set)
-      level->can_move_into_acid |= (1 << bit_nr);
+      level->can_move_into_acid_bits |= (1 << bit_nr);
   }
 }
 
@@ -1650,7 +1652,7 @@ boolean getMoveIntoAcidProperty(struct LevelInfo *level, int element)
   int bit_nr = get_special_property_bit(element, EP_CAN_MOVE_INTO_ACID);
 
   if (bit_nr > -1)
-    return ((level->can_move_into_acid & (1 << bit_nr)) != 0);
+    return ((level->can_move_into_acid_bits & (1 << bit_nr)) != 0);
 
   return FALSE;
 }
@@ -1912,6 +1914,7 @@ void InitElementPropertiesStatic()
 
   static int ep_can_move[] =
   {
+    /* same elements as in 'pb_can_move_into_acid' */
     EL_BUG,
     EL_SPACESHIP,
     EL_BD_BUTTERFLY,
@@ -3264,7 +3267,7 @@ void InitElementPropertiesEngine(int engine_version)
                                                  i == EL_BLACK_ORB));
 
     /* ---------- COULD_MOVE_INTO_ACID ------------------------------------- */
-    SET_PROPERTY(i, EP_COULD_MOVE_INTO_ACID, ((CAN_MOVE(i) && i != EL_SPRING)||
+    SET_PROPERTY(i, EP_COULD_MOVE_INTO_ACID, (CAN_MOVE(i) ||
                                              IS_CUSTOM_ELEMENT(i)));
 
     /* ---------- CAN_MOVE_INTO_ACID --------------------------------------- */