rnd-20040309-1-src
[rocksndiamonds.git] / src / editor.c
index 8f921bc60137ace0fedb008facc034830120926b..b20ff4544959574c17f1e10cdf177c90a1205931 100644 (file)
 /* selectbox identifiers */
 #define GADGET_ID_SELECTBOX_FIRST      (GADGET_ID_TEXT_AREA_FIRST + 1)
 
-#define GADGET_ID_CUSTOM_WALK_TO_ACTION        (GADGET_ID_SELECTBOX_FIRST + 0)
-#define GADGET_ID_CUSTOM_CONSISTENCY   (GADGET_ID_SELECTBOX_FIRST + 1)
-#define GADGET_ID_CUSTOM_DEADLINESS    (GADGET_ID_SELECTBOX_FIRST + 2)
-#define GADGET_ID_CUSTOM_MOVE_PATTERN  (GADGET_ID_SELECTBOX_FIRST + 3)
-#define GADGET_ID_CUSTOM_MOVE_DIRECTION        (GADGET_ID_SELECTBOX_FIRST + 4)
-#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 5)
-#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 6)
-#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 7)
-#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 8)
-#define GADGET_ID_CUSTOM_ACCESS_TYPE   (GADGET_ID_SELECTBOX_FIRST + 9)
-#define GADGET_ID_CUSTOM_ACCESS_LAYER  (GADGET_ID_SELECTBOX_FIRST + 10)
-#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 11)
-#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 12)
-#define GADGET_ID_CHANGE_TIME_UNITS    (GADGET_ID_SELECTBOX_FIRST + 13)
-#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 14)
-#define GADGET_ID_CHANGE_OTHER_ACTION  (GADGET_ID_SELECTBOX_FIRST + 15)
-#define GADGET_ID_CHANGE_SIDE          (GADGET_ID_SELECTBOX_FIRST + 16)
-#define GADGET_ID_CHANGE_PLAYER                (GADGET_ID_SELECTBOX_FIRST + 17)
-#define GADGET_ID_CHANGE_PAGE          (GADGET_ID_SELECTBOX_FIRST + 18)
-#define GADGET_ID_CHANGE_POWER         (GADGET_ID_SELECTBOX_FIRST + 19)
-#define GADGET_ID_SELECT_CHANGE_PAGE   (GADGET_ID_SELECTBOX_FIRST + 20)
-#define GADGET_ID_GROUP_CHOICE_MODE    (GADGET_ID_SELECTBOX_FIRST + 21)
+#define GADGET_ID_TIME_OR_STEPS                (GADGET_ID_SELECTBOX_FIRST + 0)
+#define GADGET_ID_CUSTOM_WALK_TO_ACTION        (GADGET_ID_SELECTBOX_FIRST + 1)
+#define GADGET_ID_CUSTOM_CONSISTENCY   (GADGET_ID_SELECTBOX_FIRST + 2)
+#define GADGET_ID_CUSTOM_DEADLINESS    (GADGET_ID_SELECTBOX_FIRST + 3)
+#define GADGET_ID_CUSTOM_MOVE_PATTERN  (GADGET_ID_SELECTBOX_FIRST + 4)
+#define GADGET_ID_CUSTOM_MOVE_DIRECTION        (GADGET_ID_SELECTBOX_FIRST + 5)
+#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 6)
+#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 7)
+#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 8)
+#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 9)
+#define GADGET_ID_CUSTOM_ACCESS_TYPE   (GADGET_ID_SELECTBOX_FIRST + 10)
+#define GADGET_ID_CUSTOM_ACCESS_LAYER  (GADGET_ID_SELECTBOX_FIRST + 11)
+#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 12)
+#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 13)
+#define GADGET_ID_CHANGE_TIME_UNITS    (GADGET_ID_SELECTBOX_FIRST + 14)
+#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 15)
+#define GADGET_ID_CHANGE_OTHER_ACTION  (GADGET_ID_SELECTBOX_FIRST + 16)
+#define GADGET_ID_CHANGE_SIDE          (GADGET_ID_SELECTBOX_FIRST + 17)
+#define GADGET_ID_CHANGE_PLAYER                (GADGET_ID_SELECTBOX_FIRST + 18)
+#define GADGET_ID_CHANGE_PAGE          (GADGET_ID_SELECTBOX_FIRST + 19)
+#define GADGET_ID_CHANGE_POWER         (GADGET_ID_SELECTBOX_FIRST + 20)
+#define GADGET_ID_SELECT_CHANGE_PAGE   (GADGET_ID_SELECTBOX_FIRST + 21)
+#define GADGET_ID_GROUP_CHOICE_MODE    (GADGET_ID_SELECTBOX_FIRST + 22)
 
 /* textbutton identifiers */
-#define GADGET_ID_TEXTBUTTON_FIRST     (GADGET_ID_SELECTBOX_FIRST + 22)
+#define GADGET_ID_TEXTBUTTON_FIRST     (GADGET_ID_SELECTBOX_FIRST + 23)
 
 #define GADGET_ID_PROPERTIES_INFO      (GADGET_ID_TEXTBUTTON_FIRST + 0)
 #define GADGET_ID_PROPERTIES_CONFIG    (GADGET_ID_TEXTBUTTON_FIRST + 1)
 #define GADGET_ID_USE_SPRING_BUG       (GADGET_ID_CHECKBUTTON_FIRST + 7)
 #define GADGET_ID_BLOCK_LAST_FIELD     (GADGET_ID_CHECKBUTTON_FIRST + 8)
 #define GADGET_ID_SP_BLOCK_LAST_FIELD  (GADGET_ID_CHECKBUTTON_FIRST + 9)
-#define GADGET_ID_CAN_MOVE_INTO_ACID   (GADGET_ID_CHECKBUTTON_FIRST + 10)
-#define GADGET_ID_CUSTOM_EXPLODE_RESULT        (GADGET_ID_CHECKBUTTON_FIRST + 11)
-#define GADGET_ID_CUSTOM_EXPLODE_FIRE  (GADGET_ID_CHECKBUTTON_FIRST + 12)
-#define GADGET_ID_CUSTOM_EXPLODE_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 13)
-#define GADGET_ID_CUSTOM_EXPLODE_IMPACT        (GADGET_ID_CHECKBUTTON_FIRST + 14)
-#define GADGET_ID_CUSTOM_WALK_TO_OBJECT        (GADGET_ID_CHECKBUTTON_FIRST + 15)
-#define GADGET_ID_CUSTOM_DEADLY                (GADGET_ID_CHECKBUTTON_FIRST + 16)
-#define GADGET_ID_CUSTOM_CAN_MOVE      (GADGET_ID_CHECKBUTTON_FIRST + 17)
-#define GADGET_ID_CUSTOM_CAN_FALL      (GADGET_ID_CHECKBUTTON_FIRST + 18)
-#define GADGET_ID_CUSTOM_CAN_SMASH     (GADGET_ID_CHECKBUTTON_FIRST + 19)
-#define GADGET_ID_CUSTOM_SLIPPERY      (GADGET_ID_CHECKBUTTON_FIRST + 20)
-#define GADGET_ID_CUSTOM_ACCESSIBLE    (GADGET_ID_CHECKBUTTON_FIRST + 21)
-#define GADGET_ID_CUSTOM_USE_GRAPHIC   (GADGET_ID_CHECKBUTTON_FIRST + 22)
-#define GADGET_ID_CUSTOM_USE_TEMPLATE  (GADGET_ID_CHECKBUTTON_FIRST + 23)
-#define GADGET_ID_CUSTOM_CAN_CHANGE    (GADGET_ID_CHECKBUTTON_FIRST + 24)
-#define GADGET_ID_CHANGE_USE_CONTENT   (GADGET_ID_CHECKBUTTON_FIRST + 25)
-#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 26)
-#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 27)
-#define GADGET_ID_CHANGE_USE_RANDOM    (GADGET_ID_CHECKBUTTON_FIRST + 28)
-#define GADGET_ID_CHANGE_DELAY         (GADGET_ID_CHECKBUTTON_FIRST + 29)
-#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 30)
-#define GADGET_ID_CHANGE_BY_OTHER_ACT  (GADGET_ID_CHECKBUTTON_FIRST + 31)
+#define GADGET_ID_CAN_FALL_INTO_ACID   (GADGET_ID_CHECKBUTTON_FIRST + 10)
+#define GADGET_ID_CAN_MOVE_INTO_ACID   (GADGET_ID_CHECKBUTTON_FIRST + 11)
+#define GADGET_ID_CUSTOM_EXPLODE_RESULT        (GADGET_ID_CHECKBUTTON_FIRST + 12)
+#define GADGET_ID_CUSTOM_EXPLODE_FIRE  (GADGET_ID_CHECKBUTTON_FIRST + 13)
+#define GADGET_ID_CUSTOM_EXPLODE_SMASH (GADGET_ID_CHECKBUTTON_FIRST + 14)
+#define GADGET_ID_CUSTOM_EXPLODE_IMPACT        (GADGET_ID_CHECKBUTTON_FIRST + 15)
+#define GADGET_ID_CUSTOM_WALK_TO_OBJECT        (GADGET_ID_CHECKBUTTON_FIRST + 16)
+#define GADGET_ID_CUSTOM_DEADLY                (GADGET_ID_CHECKBUTTON_FIRST + 17)
+#define GADGET_ID_CUSTOM_CAN_MOVE      (GADGET_ID_CHECKBUTTON_FIRST + 18)
+#define GADGET_ID_CUSTOM_CAN_FALL      (GADGET_ID_CHECKBUTTON_FIRST + 19)
+#define GADGET_ID_CUSTOM_CAN_SMASH     (GADGET_ID_CHECKBUTTON_FIRST + 20)
+#define GADGET_ID_CUSTOM_SLIPPERY      (GADGET_ID_CHECKBUTTON_FIRST + 21)
+#define GADGET_ID_CUSTOM_ACCESSIBLE    (GADGET_ID_CHECKBUTTON_FIRST + 22)
+#define GADGET_ID_CUSTOM_USE_GRAPHIC   (GADGET_ID_CHECKBUTTON_FIRST + 23)
+#define GADGET_ID_CUSTOM_USE_TEMPLATE  (GADGET_ID_CHECKBUTTON_FIRST + 24)
+#define GADGET_ID_CUSTOM_CAN_CHANGE    (GADGET_ID_CHECKBUTTON_FIRST + 25)
+#define GADGET_ID_CHANGE_USE_CONTENT   (GADGET_ID_CHECKBUTTON_FIRST + 26)
+#define GADGET_ID_CHANGE_USE_EXPLOSION (GADGET_ID_CHECKBUTTON_FIRST + 27)
+#define GADGET_ID_CHANGE_ONLY_COMPLETE (GADGET_ID_CHECKBUTTON_FIRST + 28)
+#define GADGET_ID_CHANGE_USE_RANDOM    (GADGET_ID_CHECKBUTTON_FIRST + 29)
+#define GADGET_ID_CHANGE_DELAY         (GADGET_ID_CHECKBUTTON_FIRST + 30)
+#define GADGET_ID_CHANGE_BY_DIRECT_ACT (GADGET_ID_CHECKBUTTON_FIRST + 31)
+#define GADGET_ID_CHANGE_BY_OTHER_ACT  (GADGET_ID_CHECKBUTTON_FIRST + 32)
 
 /* gadgets for buttons in element list */
-#define GADGET_ID_ELEMENTLIST_FIRST    (GADGET_ID_CHECKBUTTON_FIRST + 32)
+#define GADGET_ID_ELEMENTLIST_FIRST    (GADGET_ID_CHECKBUTTON_FIRST + 33)
 #define GADGET_ID_ELEMENTLIST_LAST     (GADGET_ID_ELEMENTLIST_FIRST +  \
                                        ED_NUM_ELEMENTLIST_BUTTONS - 1)
 
 #define ED_TEXTAREA_ID_LEVEL_LAST      ED_TEXTAREA_ID_ENVELOPE
 
 /* values for selectbox gadgets */
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE     0
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER    1
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED        2
-#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION        3
-#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION  4
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN    5
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION  6
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE   7
-#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 8
-#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS   9
-#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE   10
-#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS      11
-#define ED_SELECTBOX_ID_CUSTOM_CONSISTENCY     12
-#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS      13
-#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION   14
-#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION    15
-#define ED_SELECTBOX_ID_CHANGE_SIDE            16
-#define ED_SELECTBOX_ID_CHANGE_PLAYER          17
-#define ED_SELECTBOX_ID_CHANGE_PAGE            18
-#define ED_SELECTBOX_ID_CHANGE_POWER           19
-#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE     20
-#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE      21
-
-#define ED_NUM_SELECTBOX                       22
+#define ED_SELECTBOX_ID_TIME_OR_STEPS          0
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE     1
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER    2
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED        3
+#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION        4
+#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION  5
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN    6
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION  7
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE   8
+#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 9
+#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS   10
+#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE   11
+#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS      12
+#define ED_SELECTBOX_ID_CUSTOM_CONSISTENCY     13
+#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS      14
+#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION   15
+#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION    16
+#define ED_SELECTBOX_ID_CHANGE_SIDE            17
+#define ED_SELECTBOX_ID_CHANGE_PLAYER          18
+#define ED_SELECTBOX_ID_CHANGE_PAGE            19
+#define ED_SELECTBOX_ID_CHANGE_POWER           20
+#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE     21
+#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE      22
+
+#define ED_NUM_SELECTBOX                       23
+
+#define ED_SELECTBOX_ID_LEVEL_FIRST    ED_SELECTBOX_ID_TIME_OR_STEPS
+#define ED_SELECTBOX_ID_LEVEL_LAST     ED_SELECTBOX_ID_TIME_OR_STEPS
 
 #define ED_SELECTBOX_ID_CUSTOM1_FIRST  ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE
 #define ED_SELECTBOX_ID_CUSTOM1_LAST   ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE
 #define ED_CHECKBUTTON_ID_USE_SPRING_BUG       5
 #define ED_CHECKBUTTON_ID_BLOCK_LAST_FIELD     6
 #define ED_CHECKBUTTON_ID_SP_BLOCK_LAST_FIELD  7
-#define ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID   8
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC   9
-#define ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE  10
-#define ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE    11
-#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT        12
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE      13
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL      14
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH     15
-#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY      16
-#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY                17
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_RESULT        18
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE  19
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 20
-#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT        21
-#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE    22
-#define ED_CHECKBUTTON_ID_CHANGE_DELAY         23
-#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 24
-#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT  25
-#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 26
-#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT   27
-#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 28
-#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM    29
-
-#define ED_NUM_CHECKBUTTONS                    30
+#define ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID   8
+#define ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID   9
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC   10
+#define ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE  11
+#define ED_CHECKBUTTON_ID_CUSTOM_ACCESSIBLE    12
+#define ED_CHECKBUTTON_ID_CUSTOM_WALK_TO_OBJECT        13
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_MOVE      14
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_FALL      15
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_SMASH     16
+#define ED_CHECKBUTTON_ID_CUSTOM_SLIPPERY      17
+#define ED_CHECKBUTTON_ID_CUSTOM_DEADLY                18
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_RESULT        19
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_FIRE  20
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_SMASH 21
+#define ED_CHECKBUTTON_ID_CUSTOM_EXPLODE_IMPACT        22
+#define ED_CHECKBUTTON_ID_CUSTOM_CAN_CHANGE    23
+#define ED_CHECKBUTTON_ID_CHANGE_DELAY         24
+#define ED_CHECKBUTTON_ID_CHANGE_BY_DIRECT_ACT 25
+#define ED_CHECKBUTTON_ID_CHANGE_BY_OTHER_ACT  26
+#define ED_CHECKBUTTON_ID_CHANGE_USE_EXPLOSION 27
+#define ED_CHECKBUTTON_ID_CHANGE_USE_CONTENT   28
+#define ED_CHECKBUTTON_ID_CHANGE_ONLY_COMPLETE 29
+#define ED_CHECKBUTTON_ID_CHANGE_USE_RANDOM    30
+
+#define ED_NUM_CHECKBUTTONS                    31
 
 #define ED_CHECKBUTTON_ID_LEVEL_FIRST  ED_CHECKBUTTON_ID_DOUBLE_SPEED
 #define ED_CHECKBUTTON_ID_LEVEL_LAST   ED_CHECKBUTTON_ID_RANDOM_RESTRICTED
@@ -913,7 +920,7 @@ static struct
     GADGET_ID_LEVEL_GEMSLIMIT_DOWN,    GADGET_ID_LEVEL_GEMSLIMIT_UP,
     GADGET_ID_LEVEL_GEMSLIMIT_TEXT,    GADGET_ID_NONE,
     &level.gems_needed,
-    "number of emeralds to collect:",  NULL, NULL
+    "number of gems to collect:",      NULL, NULL
   },
   {
     ED_SETTINGS_XPOS(0),               ED_COUNTER_YPOS(4),
@@ -921,7 +928,7 @@ static struct
     GADGET_ID_LEVEL_TIMELIMIT_DOWN,    GADGET_ID_LEVEL_TIMELIMIT_UP,
     GADGET_ID_LEVEL_TIMELIMIT_TEXT,    GADGET_ID_NONE,
     &level.time,
-    "time available to solve level:",  NULL, "(0 => no time limit)"
+    "time or step limit to solve level:", NULL, NULL
   },
   {
     ED_SETTINGS_XPOS(0),               ED_COUNTER_YPOS(5),
@@ -929,7 +936,7 @@ static struct
     GADGET_ID_LEVEL_TIMESCORE_DOWN,    GADGET_ID_LEVEL_TIMESCORE_UP,
     GADGET_ID_LEVEL_TIMESCORE_TEXT,    GADGET_ID_NONE,
     &level.score[SC_TIME_BONUS],
-    "score for each 10 seconds left:", NULL, NULL
+    "score for each 10 sec/steps left:", NULL, NULL
   },
   {
     ED_SETTINGS_XPOS(0),               ED_COUNTER2_YPOS(8),
@@ -1134,6 +1141,14 @@ static struct
   }
 };
 
+static struct ValueTextInfo options_time_or_steps[] =
+{
+  { 0,                         "seconds"                       },
+  { 1,                         "steps"                         },
+
+  { -1,                                NULL                            }
+};
+
 static struct ValueTextInfo options_access_type[] =
 {
   { EP_WALKABLE,               "walkable"                      },
@@ -1440,6 +1455,17 @@ static struct
   char *text_left, *text_right, *infotext;
 } selectbox_info[ED_NUM_SELECTBOX] =
 {
+  /* ---------- level and editor settings ---------------------------------- */
+
+  {
+    -1,                                        ED_COUNTER_YPOS(4),
+    GADGET_ID_TIME_OR_STEPS,           GADGET_ID_LEVEL_TIMELIMIT_UP,
+    -1,
+    options_time_or_steps,
+    &level.use_step_counter,
+    NULL, "(0 => no limit)",           "time or step limit"
+  },
+
   /* ---------- element settings: configure 1 (custom elements) ----------- */
 
   {
@@ -1900,19 +1926,26 @@ static struct
     "use spring pushing bug",          "use odd spring pushing behaviour"
   },
   {
-    ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(0),
+    ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(1),
     GADGET_ID_BLOCK_LAST_FIELD,                GADGET_ID_NONE,
     &level.block_last_field,
     NULL,
     "block last field when moving",    "player blocks last field when moving"
   },
   {
-    ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(0),
+    ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(1),
     GADGET_ID_SP_BLOCK_LAST_FIELD,     GADGET_ID_NONE,
     &level.sp_block_last_field,
     NULL,
     "block last field when moving",    "player blocks last field when moving"
   },
+  {
+    ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(0),
+    GADGET_ID_CAN_FALL_INTO_ACID,      GADGET_ID_NONE,
+    &level.player_can_fall_into_acid,
+    NULL,
+    "can fall into acid (with gravity)","player can fall into acid pool"
+  },
   {
     ED_SETTINGS_XPOS(0),               ED_SETTINGS_YPOS(0),
     GADGET_ID_CAN_MOVE_INTO_ACID,      GADGET_ID_NONE,
@@ -5769,7 +5802,7 @@ static void CopyClassicElementPropertiesToEditor(int element)
 
     if (bit_nr > -1)
       custom_element_properties[EP_CAN_MOVE_INTO_ACID] =
-       ((level.can_move_into_acid & (1 << bit_nr)) != 0);
+       ((level.can_move_into_acid_bits & (1 << bit_nr)) != 0);
   }
 #endif
 }
@@ -5945,10 +5978,10 @@ static void CopyClassicElementPropertiesToGame(int element)
 
     if (bit_nr > -1)
     {
-      level.can_move_into_acid &= ~(1 << bit_nr);
+      level.can_move_into_acid_bits &= ~(1 << bit_nr);
 
       if (custom_element_properties[EP_CAN_MOVE_INTO_ACID])
-       level.can_move_into_acid |= (1 << bit_nr);
+       level.can_move_into_acid_bits |= (1 << bit_nr);
     }
   }
 #endif
@@ -6258,6 +6291,10 @@ static void DrawLevelInfoWindow()
   for (i = ED_COUNTER_ID_LEVEL_FIRST; i <= ED_COUNTER_ID_LEVEL_LAST; i++)
     MapCounterButtons(i);
 
+  /* draw selectbox gadgets */
+  for (i = ED_SELECTBOX_ID_LEVEL_FIRST; i <= ED_SELECTBOX_ID_LEVEL_LAST; i++)
+    MapSelectboxGadget(i);
+
   /* draw checkbutton gadgets */
   for (i=ED_CHECKBUTTON_ID_LEVEL_FIRST; i <= ED_CHECKBUTTON_ID_LEVEL_LAST; i++)
     MapCheckbuttonGadget(i);
@@ -6852,9 +6889,12 @@ static void DrawPropertiesConfig()
   }
 
   if (ELEM_IS_PLAYER(properties_element))
+  {
+    MapCheckbuttonGadget(ED_CHECKBUTTON_ID_CAN_FALL_INTO_ACID);
     MapCheckbuttonGadget(properties_element == EL_SP_MURPHY ?
                         ED_CHECKBUTTON_ID_SP_BLOCK_LAST_FIELD :
                         ED_CHECKBUTTON_ID_BLOCK_LAST_FIELD);
+  }
 
   if (IS_GEM(properties_element))
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS);
@@ -6863,6 +6903,7 @@ static void DrawPropertiesConfig()
       (!IS_CUSTOM_ELEMENT(properties_element) ||
        edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2))
   {
+    /* set position for special checkbutton for "can move into acid" */
     checkbutton_info[ED_CHECKBUTTON_ID_CAN_MOVE_INTO_ACID].y =
       ED_SETTINGS_YPOS(IS_CUSTOM_ELEMENT(properties_element) ? 6 :
                       HAS_CONTENT(properties_element) ? 1 : 0);
@@ -6924,8 +6965,6 @@ static void DrawPropertiesConfig()
     }
     else if (edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2)
     {
-      /* set position for special checkbutton for "can move into acid" */
-
       /* draw checkbutton gadgets */
       for (i =  ED_CHECKBUTTON_ID_CUSTOM2_FIRST;
           i <= ED_CHECKBUTTON_ID_CUSTOM2_LAST; i++)