added all BD engine elements shared with R'n'D engine as native elements
authorHolger Schemel <info@artsoft.org>
Mon, 22 Apr 2024 16:47:32 +0000 (18:47 +0200)
committerHolger Schemel <info@artsoft.org>
Sun, 28 Apr 2024 18:11:36 +0000 (20:11 +0200)
There were a number of game elements covered by the native BD engine
that already existed in the R'n'D engine for a long time. So far,
these BD style game elements were "shared" between both game engines,
which had some implications and unwanted ambiguities (like defining
explosion animations which are played with different duration in both
game engines, resulting in graphical glitches, or differences in
game element properties which also requires different descriptions in
the level editor, which would simply be impossible with "shared" game
elements).

The following game elements had to be duplicated for the BD engine:

- bd_wall         -> bd_wall_native
- bd_rock         -> bd_rock_native
- bd_diamond      -> bd_diamond_native
- bd_magic_wall   -> bd_magic_wall_native
- bd_butterfly    -> bd_butterfly_1
- bd_firefly      -> bd_firefly_1
- bd_amoeba       -> bd_amoeba_1

This change does not make game element token names for artwork config
files nicer, but makes sure that there are no unwanted side effects as
described between both game engines anymore.

src/conf_gfx.c
src/conf_snd.c
src/editor.c
src/files.c
src/game.c
src/init.c
src/main.c
src/main.h
src/tools.c

index 01350173d5cdd19027a675dbf7ee84b6208ad362..da2664304e6af827baa456c6cfcc774e40a55539 100644 (file)
@@ -186,6 +186,11 @@ struct ConfigInfo image_config[] =
   { "bd_wall.EDITOR.xpos",                             "14"                            },
   { "bd_wall.EDITOR.ypos",                             "13"                            },
 
+  { "bd_wall_native",                                  UNDEFINED_FILENAME              },
+  { "bd_wall_native.clone_from",                       "bd_wall"                       },
+  { "bd_wall_native.EDITOR",                           UNDEFINED_FILENAME              },
+  { "bd_wall_native.EDITOR.clone_from",                        "bd_wall.EDITOR"                },
+
   { "bd_rock",                                         "RocksDC.png"                   },
   { "bd_rock.xpos",                                    "12"                            },
   { "bd_rock.ypos",                                    "10"                            },
@@ -193,9 +198,6 @@ struct ConfigInfo image_config[] =
   { "bd_rock.EDITOR",                                  "RocksDC.png"                   },
   { "bd_rock.EDITOR.xpos",                             "14"                            },
   { "bd_rock.EDITOR.ypos",                             "14"                            },
-  { "bd_rock.falling.EDITOR",                          "RocksBD2.png"                  },
-  { "bd_rock.falling.EDITOR.xpos",                     "1"                             },
-  { "bd_rock.falling.EDITOR.ypos",                     "3"                             },
   { "bd_rock.moving.left",                             "RocksDC.png"                   },
   { "bd_rock.moving.left.xpos",                                "12"                            },
   { "bd_rock.moving.left.ypos",                                "10"                            },
@@ -221,6 +223,22 @@ struct ConfigInfo image_config[] =
   { "bd_rock.pushing.right.start_frame",               "1"                             },
   { "bd_rock.pushing.right.delay",                     "2"                             },
 
+  { "bd_rock_native",                                  UNDEFINED_FILENAME              },
+  { "bd_rock_native.clone_from",                       "bd_rock"                       },
+  { "bd_rock_native.EDITOR",                           UNDEFINED_FILENAME              },
+  { "bd_rock_native.EDITOR.clone_from",                        "bd_rock.EDITOR"                },
+  { "bd_rock_native.moving.left",                      UNDEFINED_FILENAME              },
+  { "bd_rock_native.moving.left.clone_from",           "bd_rock.moving.left"           },
+  { "bd_rock_native.moving.right",                     UNDEFINED_FILENAME              },
+  { "bd_rock_native.moving.right.clone_from",          "bd_rock.moving.right"          },
+  { "bd_rock_native.pushing.left",                     UNDEFINED_FILENAME              },
+  { "bd_rock_native.pushing.left.clone_from",          "bd_rock.pushing.left"          },
+  { "bd_rock_native.pushing.right",                    UNDEFINED_FILENAME              },
+  { "bd_rock_native.pushing.right.clone_from",         "bd_rock.pushing.right"         },
+  { "bd_rock_native.falling.EDITOR",                   "RocksBD2.png"                  },
+  { "bd_rock_native.falling.EDITOR.xpos",              "1"                             },
+  { "bd_rock_native.falling.EDITOR.ypos",              "3"                             },
+
   { "bd_diamond",                                      "RocksElements.png"             },
   { "bd_diamond.xpos",                                 "0"                             },
   { "bd_diamond.ypos",                                 "10"                            },
@@ -237,15 +255,24 @@ struct ConfigInfo image_config[] =
   { "bd_diamond.falling.ypos",                         "10"                            },
   { "bd_diamond.falling.frames",                       "2"                             },
   { "bd_diamond.falling.delay",                                "4"                             },
-  { "bd_diamond.falling.EDITOR",                       "RocksBD2.png"                  },
-  { "bd_diamond.falling.EDITOR.xpos",                  "0"                             },
-  { "bd_diamond.falling.EDITOR.ypos",                  "3"                             },
   { "bd_diamond.collecting",                           "RocksCollect.png"              },
   { "bd_diamond.collecting.xpos",                      "0"                             },
   { "bd_diamond.collecting.ypos",                      "8"                             },
   { "bd_diamond.collecting.frames",                    "7"                             },
   { "bd_diamond.collecting.anim_mode",                 "linear"                        },
 
+  { "bd_diamond_native",                               UNDEFINED_FILENAME              },
+  { "bd_diamond_native.clone_from",                    "bd_diamond"                    },
+  { "bd_diamond_native.moving",                                UNDEFINED_FILENAME              },
+  { "bd_diamond_native.moving.clone_from",             "bd_diamond.moving"             },
+  { "bd_diamond_native.falling",                       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.clone_from",            "bd_diamond.falling"            },
+  { "bd_diamond_native.collecting",                    UNDEFINED_FILENAME              },
+  { "bd_diamond_native.collecting.clone_from",         "bd_diamond.collecting"         },
+  { "bd_diamond_native.falling.EDITOR",                        "RocksBD2.png"                  },
+  { "bd_diamond_native.falling.EDITOR.xpos",           "0"                             },
+  { "bd_diamond_native.falling.EDITOR.ypos",           "3"                             },
+
   { "bd_magic_wall",                                   "RocksElements.png"             },
   { "bd_magic_wall.xpos",                              "12"                            },
   { "bd_magic_wall.ypos",                              "10"                            },
@@ -283,6 +310,11 @@ struct ConfigInfo image_config[] =
   { "bd_magic_wall_dead.ypos",                         "10"                            },
   { "bd_magic_wall_dead.frames",                       "1"                             },
 
+  { "bd_magic_wall_native",                            UNDEFINED_FILENAME              },
+  { "bd_magic_wall_native.clone_from",                 "bd_magic_wall"                 },
+  { "bd_magic_wall_native.active",                     UNDEFINED_FILENAME              },
+  { "bd_magic_wall_native.active.clone_from",          "bd_magic_wall.active"          },
+
   { "bd_amoeba",                                       "RocksElements.png"             },
   { "bd_amoeba.xpos",                                  "8"                             },
   { "bd_amoeba.ypos",                                  "6"                             },
@@ -292,6 +324,9 @@ struct ConfigInfo image_config[] =
   { "bd_amoeba.EDITOR.xpos",                           "8"                             },
   { "bd_amoeba.EDITOR.ypos",                           "7"                             },
 
+  { "bd_amoeba_1",                                     UNDEFINED_FILENAME              },
+  { "bd_amoeba_1.clone_from",                          "bd_amoeba"                     },
+
   { "bd_amoeba_2",                                     UNDEFINED_FILENAME              },
   { "bd_amoeba_2.clone_from",                          "bd_amoeba"                     },
 
@@ -343,6 +378,17 @@ struct ConfigInfo image_config[] =
   { "bd_butterfly.down.EDITOR.xpos",                   "11"                            },
   { "bd_butterfly.down.EDITOR.ypos",                   "12"                            },
 
+  { "bd_butterfly_1",                                  UNDEFINED_FILENAME              },
+  { "bd_butterfly_1.clone_from",                       "bd_butterfly"                  },
+  { "bd_butterfly_1.right",                            UNDEFINED_FILENAME              },
+  { "bd_butterfly_1.right.clone_from",                 "bd_butterfly.right"            },
+  { "bd_butterfly_1.up",                               UNDEFINED_FILENAME              },
+  { "bd_butterfly_1.up.clone_from",                    "bd_butterfly.up"               },
+  { "bd_butterfly_1.left",                             UNDEFINED_FILENAME              },
+  { "bd_butterfly_1.left.clone_from",                  "bd_butterfly.left"             },
+  { "bd_butterfly_1.down",                             UNDEFINED_FILENAME              },
+  { "bd_butterfly_1.down.clone_from",                  "bd_butterfly.down"             },
+
   { "bd_butterfly_2",                                  "RocksBD.png"                   },
   { "bd_butterfly_2.xpos",                             "0"                             },
   { "bd_butterfly_2.ypos",                             "0"                             },
@@ -439,6 +485,17 @@ struct ConfigInfo image_config[] =
   { "bd_firefly.down.EDITOR.xpos",                     "15"                            },
   { "bd_firefly.down.EDITOR.ypos",                     "12"                            },
 
+  { "bd_firefly_1",                                    UNDEFINED_FILENAME              },
+  { "bd_firefly_1.clone_from",                         "bd_firefly"                    },
+  { "bd_firefly_1.right",                              UNDEFINED_FILENAME              },
+  { "bd_firefly_1.right.clone_from",                   "bd_firefly.right"              },
+  { "bd_firefly_1.up",                                 UNDEFINED_FILENAME              },
+  { "bd_firefly_1.up.clone_from",                      "bd_firefly.up"                 },
+  { "bd_firefly_1.left",                               UNDEFINED_FILENAME              },
+  { "bd_firefly_1.left.clone_from",                    "bd_firefly.left"               },
+  { "bd_firefly_1.down",                               UNDEFINED_FILENAME              },
+  { "bd_firefly_1.down.clone_from",                    "bd_firefly.down"               },
+
   { "bd_firefly_2",                                    "RocksBD.png"                   },
   { "bd_firefly_2.xpos",                               "2"                             },
   { "bd_firefly_2.ypos",                               "0"                             },
@@ -487,8 +544,8 @@ struct ConfigInfo image_config[] =
   { "bd_firefly_2.down.EDITOR.xpos",                   "11"                            },
   { "bd_firefly_2.down.EDITOR.ypos",                   "0"                             },
 
-  { "bd_sand",                                         UNDEFINED_FILENAME              },
-  { "bd_sand.clone_from",                              "sand"                          },
+  { "bd_sand_1",                                       UNDEFINED_FILENAME              },
+  { "bd_sand_1.clone_from",                            "sand"                          },
 
   { "bd_sand_2",                                       UNDEFINED_FILENAME              },
   { "bd_sand_2.clone_from",                            "emc_grass"                     },
@@ -521,7 +578,7 @@ struct ConfigInfo image_config[] =
   { "bd_sand_sloped_down_right.frames",                        "1"                             },
 
   { "bd_sand_glued",                                   UNDEFINED_FILENAME              },
-  { "bd_sand_glued.clone_from",                                "bd_sand"                       },
+  { "bd_sand_glued.clone_from",                                "bd_sand_1"                     },
   { "bd_sand_glued.EDITOR",                            "RocksBD2.png"                  },
   { "bd_sand_glued.EDITOR.xpos",                       "2"                             },
   { "bd_sand_glued.EDITOR.ypos",                       "4"                             },
@@ -993,13 +1050,13 @@ struct ConfigInfo image_config[] =
   { "bd_slime.anim_mode",                              "pingpong2"                     },
 
   { "bd_waiting_rock",                                 UNDEFINED_FILENAME              },
-  { "bd_waiting_rock.clone_from",                      "bd_rock"                       },
+  { "bd_waiting_rock.clone_from",                      "bd_rock_native"                },
   { "bd_waiting_rock.EDITOR",                          "RocksBD2.png"                  },
   { "bd_waiting_rock.EDITOR.xpos",                     "4"                             },
   { "bd_waiting_rock.EDITOR.ypos",                     "2"                             },
 
   { "bd_chasing_rock",                                 UNDEFINED_FILENAME              },
-  { "bd_chasing_rock.clone_from",                      "bd_rock"                       },
+  { "bd_chasing_rock.clone_from",                      "bd_rock_native"                },
 
   { "bd_ghost",                                                "RocksBD.png"                   },
   { "bd_ghost.xpos",                                   "0"                             },
index 06b3446827246b5d797cb7cdc83f156040436251..8fa99b59168998973bfe532493a485518e7e43a0 100644 (file)
@@ -50,12 +50,18 @@ struct ConfigInfo sound_config[] =
   { "bd_diamond.collecting",                   "pong.wav"                      },
   { "bd_diamond.falling",                      UNDEFINED_FILENAME              },
   { "bd_diamond.impact",                       "pling.wav"                     },
+  { "bd_diamond_native.collecting",            "pong.wav"                      },
+  { "bd_diamond_native.falling",               UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact",                        "pling.wav"                     },
   { "bd_flying_diamond.collecting",            "pong.wav"                      },
   { "bd_flying_diamond.falling",               UNDEFINED_FILENAME              },
   { "bd_flying_diamond.impact",                        "pling.wav"                     },
   { "bd_rock.pushing",                         "pusch.wav"                     },
   { "bd_rock.falling",                         UNDEFINED_FILENAME              },
   { "bd_rock.impact",                          "klopf.wav"                     },
+  { "bd_rock_native.pushing",                  "pusch.wav"                     },
+  { "bd_rock_native.falling",                  UNDEFINED_FILENAME              },
+  { "bd_rock_native.impact",                   "klopf.wav"                     },
   { "bd_flying_rock.pushing",                  "pusch.wav"                     },
   { "bd_flying_rock.falling",                  UNDEFINED_FILENAME              },
   { "bd_flying_rock.impact",                   "klopf.wav"                     },
@@ -75,13 +81,16 @@ struct ConfigInfo sound_config[] =
   { "bd_magic_wall.activating",                        "quirk.wav"                     },
   { "bd_magic_wall.active",                    "miep.wav"                      },
   { "bd_magic_wall.filling",                   "quirk.wav"                     },
+  { "bd_magic_wall_native.active",             "miep.wav"                      },
   { "bd_amoeba.waiting",                       UNDEFINED_FILENAME              },
   { "bd_amoeba.growing",                       "amoebe.wav"                    },
   { "bd_amoeba.turning_to_gem",                        "pling.wav"                     },
   { "bd_amoeba.turning_to_gem.mode_loop",      "false"                         },
   { "bd_amoeba.turning_to_rock",               "klopf.wav"                     },
   { "bd_amoeba.turning_to_rock.mode_loop",     "false"                         },
-  { "bd_amoeba.other",                         UNDEFINED_FILENAME              },
+  { "bd_amoeba_1.active",                      UNDEFINED_FILENAME              },
+  { "bd_amoeba_1.other",                       UNDEFINED_FILENAME              },
+  { "bd_amoeba_2.active",                      UNDEFINED_FILENAME              },
   { "bd_butterfly.moving",                     "klapper.wav"                   },
   { "bd_butterfly.waiting",                    "klapper.wav"                   },
   { "bd_firefly.moving",                       "roehr.wav"                     },
@@ -321,22 +330,22 @@ struct ConfigInfo sound_config[] =
   // keyword to stop parser: "NO_MORE_ELEMENT_SOUNDS" <-- do not change!
 
   // sounds for Boulder Dash style elements and actions
-  { "bd_diamond.falling.RANDOM_1",             UNDEFINED_FILENAME              },
-  { "bd_diamond.falling.RANDOM_2",             UNDEFINED_FILENAME              },
-  { "bd_diamond.falling.RANDOM_3",             UNDEFINED_FILENAME              },
-  { "bd_diamond.falling.RANDOM_4",             UNDEFINED_FILENAME              },
-  { "bd_diamond.falling.RANDOM_5",             UNDEFINED_FILENAME              },
-  { "bd_diamond.falling.RANDOM_6",             UNDEFINED_FILENAME              },
-  { "bd_diamond.falling.RANDOM_7",             UNDEFINED_FILENAME              },
-  { "bd_diamond.falling.RANDOM_8",             UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_1",              UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_2",              UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_3",              UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_4",              UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_5",              UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_6",              UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_7",              UNDEFINED_FILENAME              },
-  { "bd_diamond.impact.RANDOM_8",              UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_1",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_2",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_3",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_4",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_5",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_6",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_7",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.falling.RANDOM_8",      UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_1",       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_2",       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_3",       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_4",       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_5",       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_6",       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_7",       UNDEFINED_FILENAME              },
+  { "bd_diamond_native.impact.RANDOM_8",       UNDEFINED_FILENAME              },
   { "bd_flying_diamond.falling.RANDOM_1",      UNDEFINED_FILENAME              },
   { "bd_flying_diamond.falling.RANDOM_2",      UNDEFINED_FILENAME              },
   { "bd_flying_diamond.falling.RANDOM_3",      UNDEFINED_FILENAME              },
index 60f12d409993f93f18003ca2cd4d8f2694987fec..9fa1c4de5cefc00d59d91caa4e0bfdc55f02b4a5 100644 (file)
@@ -625,8 +625,8 @@ enum
   GADGET_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
   GADGET_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
   GADGET_ID_BD_MAGIC_WALL_FLYING_ROCK_TO,
-  GADGET_ID_BD_AMOEBA_CONTENT_TOO_BIG,
-  GADGET_ID_BD_AMOEBA_CONTENT_ENCLOSED,
+  GADGET_ID_BD_AMOEBA_1_CONTENT_TOO_BIG,
+  GADGET_ID_BD_AMOEBA_1_CONTENT_ENCLOSED,
   GADGET_ID_BD_AMOEBA_2_CONTENT_TOO_BIG,
   GADGET_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
   GADGET_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
@@ -648,9 +648,9 @@ enum
   GADGET_ID_BD_ROCK_TURNS_TO_ON_IMPACT,
   GADGET_ID_BD_DIAMOND_TURNS_TO_ON_FALLING,
   GADGET_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT,
-  GADGET_ID_BD_FIREFLY_EXPLODES_TO,
+  GADGET_ID_BD_FIREFLY_1_EXPLODES_TO,
   GADGET_ID_BD_FIREFLY_2_EXPLODES_TO,
-  GADGET_ID_BD_BUTTERFLY_EXPLODES_TO,
+  GADGET_ID_BD_BUTTERFLY_1_EXPLODES_TO,
   GADGET_ID_BD_BUTTERFLY_2_EXPLODES_TO,
   GADGET_ID_BD_STONEFLY_EXPLODES_TO,
   GADGET_ID_BD_DRAGONFLY_EXPLODES_TO,
@@ -1339,8 +1339,8 @@ enum
   ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
   ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
   ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_ROCK_TO,
-  ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG,
-  ED_DRAWING_ID_BD_AMOEBA_CONTENT_ENCLOSED,
+  ED_DRAWING_ID_BD_AMOEBA_1_CONTENT_TOO_BIG,
+  ED_DRAWING_ID_BD_AMOEBA_1_CONTENT_ENCLOSED,
   ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_TOO_BIG,
   ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
   ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
@@ -1362,9 +1362,9 @@ enum
   ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT,
   ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING,
   ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT,
-  ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO,
+  ED_DRAWING_ID_BD_FIREFLY_1_EXPLODES_TO,
   ED_DRAWING_ID_BD_FIREFLY_2_EXPLODES_TO,
-  ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO,
+  ED_DRAWING_ID_BD_BUTTERFLY_1_EXPLODES_TO,
   ED_DRAWING_ID_BD_BUTTERFLY_2_EXPLODES_TO,
   ED_DRAWING_ID_BD_STONEFLY_EXPLODES_TO,
   ED_DRAWING_ID_BD_DRAGONFLY_EXPLODES_TO,
@@ -4883,23 +4883,23 @@ static struct
     "Changes flying rocks to:", NULL, NULL, NULL, "Element to turn flying rocks to"
   },
 
-  // ---------- BD amoeba content ---------------------------------------------
+  // ---------- BD amoeba 1 content -------------------------------------------
 
   {
-    ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG,
+    ED_DRAWING_ID_BD_AMOEBA_1_CONTENT_TOO_BIG,
     ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(7),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
-    GADGET_ID_BD_AMOEBA_CONTENT_TOO_BIG,       GADGET_ID_NONE,
-    &level.bd_amoeba_content_too_big,          1, 1,
-    "If too big, changes to:", NULL, NULL, NULL, "BD amoeba content if too big"
+    GADGET_ID_BD_AMOEBA_1_CONTENT_TOO_BIG,     GADGET_ID_NONE,
+    &level.bd_amoeba_1_content_too_big,                1, 1,
+    "If too big, changes to:", NULL, NULL, NULL, "Amoeba 1 content if too big"
   },
   {
-    ED_DRAWING_ID_BD_AMOEBA_CONTENT_ENCLOSED,
+    ED_DRAWING_ID_BD_AMOEBA_1_CONTENT_ENCLOSED,
     ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(8),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
-    GADGET_ID_BD_AMOEBA_CONTENT_ENCLOSED,      GADGET_ID_NONE,
-    &level.bd_amoeba_content_enclosed,         1, 1,
-    "If enclosed, changes to:", NULL, NULL, NULL, "BD amoeba content if enclosed"
+    GADGET_ID_BD_AMOEBA_1_CONTENT_ENCLOSED,    GADGET_ID_NONE,
+    &level.bd_amoeba_1_content_enclosed,       1, 1,
+    "If enclosed, changes to:", NULL, NULL, NULL, "Amoeba 1 content if enclosed"
   },
 
   // ---------- BD amoeba 2 content -------------------------------------------
@@ -4910,7 +4910,7 @@ static struct
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_AMOEBA_2_CONTENT_TOO_BIG,     GADGET_ID_NONE,
     &level.bd_amoeba_2_content_too_big,                1, 1,
-    "If too big, changes to:", NULL, NULL, NULL, "BD amoeba 2 content if too big"
+    "If too big, changes to:", NULL, NULL, NULL, "Amoeba 2 content if too big"
   },
   {
     ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
@@ -4918,7 +4918,7 @@ static struct
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,    GADGET_ID_NONE,
     &level.bd_amoeba_2_content_enclosed,       1, 1,
-    "If enclosed, changes to:", NULL, NULL, NULL, "BD amoeba 2 content if enclosed"
+    "If enclosed, changes to:", NULL, NULL, NULL, "Amoeba 2 content if enclosed"
   },
   {
     ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
@@ -4926,7 +4926,7 @@ static struct
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_AMOEBA_2_CONTENT_EXPLODING,   GADGET_ID_NONE,
     &level.bd_amoeba_2_content_exploding,      1, 1,
-    "If exploding, changes to:", NULL, NULL, NULL, "BD amoeba 2 content if exploding"
+    "If exploding, changes to:", NULL, NULL, NULL, "Amoeba 2 content if exploding"
   },
   {
     ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
@@ -4934,7 +4934,7 @@ static struct
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,  GADGET_ID_NONE,
     &level.bd_amoeba_2_content_looks_like,     1, 1,
-    "Use graphic of element:", NULL, NULL, NULL, "BD amoeba 2 looks like this element"
+    "Use graphic of element:", NULL, NULL, NULL, "Amoeba 2 looks like this element"
   },
   {
     ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1,
@@ -5073,11 +5073,11 @@ static struct
     "Turns to on impact:", NULL, NULL, NULL,   "Changes to this when falling stops"
   },
   {
-    ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO,
+    ED_DRAWING_ID_BD_FIREFLY_1_EXPLODES_TO,
     ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(0),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
-    GADGET_ID_BD_FIREFLY_EXPLODES_TO,          GADGET_ID_NONE,
-    &level.bd_firefly_explodes_to,             1, 1,
+    GADGET_ID_BD_FIREFLY_1_EXPLODES_TO,                GADGET_ID_NONE,
+    &level.bd_firefly_1_explodes_to,           1, 1,
     "Explodes to:", NULL, NULL, NULL,          "Changes to this when exploding"
   },
   {
@@ -5089,11 +5089,11 @@ static struct
     "Explodes to:", NULL, NULL, NULL,          "Changes to this when exploding"
   },
   {
-    ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO,
+    ED_DRAWING_ID_BD_BUTTERFLY_1_EXPLODES_TO,
     ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(0),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
-    GADGET_ID_BD_BUTTERFLY_EXPLODES_TO,                GADGET_ID_NONE,
-    &level.bd_butterfly_explodes_to,           1, 1,
+    GADGET_ID_BD_BUTTERFLY_1_EXPLODES_TO,      GADGET_ID_NONE,
+    &level.bd_butterfly_1_explodes_to,         1, 1,
     "Explodes to:", NULL, NULL, NULL,          "Changes to this when exploding"
   },
   {
@@ -5486,28 +5486,28 @@ static int editor_hl_boulderdash_native[] =
 static int editor_el_boulderdash_native[] =
 {
   EL_EMPTY,
-  EL_BD_SAND,
-  EL_BD_ROCK,
-  EL_BD_DIAMOND,
+  EL_BD_SAND_1,
+  EL_BD_ROCK_NATIVE,
+  EL_BD_DIAMOND_NATIVE,
 
   EL_BD_INBOX,
   EL_BD_STEELWALL,
-  EL_BD_WALL,
-  EL_BD_MAGIC_WALL,
+  EL_BD_WALL_NATIVE,
+  EL_BD_MAGIC_WALL_NATIVE,
 
-  EL_BD_AMOEBA,
-  EL_BD_BUTTERFLY_UP,
-  EL_BD_FIREFLY_UP,
+  EL_BD_AMOEBA_1,
+  EL_BD_BUTTERFLY_1_UP,
+  EL_BD_FIREFLY_1_UP,
   EL_BD_EXIT_CLOSED,
 
-  EL_BD_BUTTERFLY_LEFT,
-  EL_BD_FIREFLY_LEFT,
-  EL_BD_BUTTERFLY_RIGHT,
-  EL_BD_FIREFLY_RIGHT,
+  EL_BD_BUTTERFLY_1_LEFT,
+  EL_BD_FIREFLY_1_LEFT,
+  EL_BD_BUTTERFLY_1_RIGHT,
+  EL_BD_FIREFLY_1_RIGHT,
 
   EL_BD_SAND_2,
-  EL_BD_BUTTERFLY_DOWN,
-  EL_BD_FIREFLY_DOWN,
+  EL_BD_BUTTERFLY_1_DOWN,
+  EL_BD_FIREFLY_1_DOWN,
   EL_BD_EXIT_OPEN,
 
   EL_BD_AMOEBA_2,
@@ -5665,8 +5665,8 @@ static int editor_hl_boulderdash_effects[] =
 
 static int editor_el_boulderdash_effects[] =
 {
-  EL_BD_DIAMOND_FALLING,
-  EL_BD_ROCK_FALLING,
+  EL_BD_DIAMOND_NATIVE_FALLING,
+  EL_BD_ROCK_NATIVE_FALLING,
   EL_BD_MEGA_ROCK_FALLING,
   EL_BD_FLYING_DIAMOND_FLYING,
 
@@ -5752,12 +5752,12 @@ static int editor_el_boulderdash_effects[] =
 
   EL_BD_EXPLODING_5,
   EL_BD_TIME_PENALTY,
-  EL_BD_DIAMOND_GROWING_1,
-  EL_BD_DIAMOND_GROWING_2,
+  EL_BD_DIAMOND_NATIVE_GROWING_1,
+  EL_BD_DIAMOND_NATIVE_GROWING_2,
 
-  EL_BD_DIAMOND_GROWING_3,
-  EL_BD_DIAMOND_GROWING_4,
-  EL_BD_DIAMOND_GROWING_5,
+  EL_BD_DIAMOND_NATIVE_GROWING_3,
+  EL_BD_DIAMOND_NATIVE_GROWING_4,
+  EL_BD_DIAMOND_NATIVE_GROWING_5,
   EL_BD_NITRO_PACK_EXPLODING,
 
   EL_BD_NITRO_PACK_EXPLODING_1,
@@ -5765,10 +5765,10 @@ static int editor_el_boulderdash_effects[] =
   EL_BD_NITRO_PACK_EXPLODING_3,
   EL_BD_NITRO_PACK_EXPLODING_4,
 
-  EL_BD_ROCK_GROWING_1,
-  EL_BD_ROCK_GROWING_2,
-  EL_BD_ROCK_GROWING_3,
-  EL_BD_ROCK_GROWING_4,
+  EL_BD_ROCK_NATIVE_GROWING_1,
+  EL_BD_ROCK_NATIVE_GROWING_2,
+  EL_BD_ROCK_NATIVE_GROWING_3,
+  EL_BD_ROCK_NATIVE_GROWING_4,
 
   EL_BD_STEELWALL_GROWING_1,
   EL_BD_STEELWALL_GROWING_2,
@@ -12042,7 +12042,8 @@ static struct
 {
   { EL_EMERALD,                        &level.score[SC_EMERALD],               TEXT_COLLECTING         },
   { EL_BD_DIAMOND,             &level.score[SC_EMERALD],               TEXT_COLLECTING         },
-  { EL_BD_DIAMOND,             &level.score[SC_DIAMOND_EXTRA],         TEXT_COLLECTING_EXTRA   },
+  { EL_BD_DIAMOND_NATIVE,      &level.score[SC_EMERALD],               TEXT_COLLECTING         },
+  { EL_BD_DIAMOND_NATIVE,      &level.score[SC_DIAMOND_EXTRA],         TEXT_COLLECTING_EXTRA   },
   { EL_EMERALD_YELLOW,         &level.score[SC_EMERALD],               TEXT_COLLECTING         },
   { EL_EMERALD_RED,            &level.score[SC_EMERALD],               TEXT_COLLECTING         },
   { EL_EMERALD_PURPLE,         &level.score[SC_EMERALD],               TEXT_COLLECTING         },
@@ -12120,11 +12121,11 @@ static struct
   { EL_AMOEBA_FULL,            &level.amoeba_speed,                    TEXT_AMOEBA_SPEED       },
   { EL_BD_AMOEBA,              &level.amoeba_speed,                    TEXT_AMOEBA_SPEED       },
   { EL_EMC_DRIPPER,            &level.amoeba_speed,                    TEXT_AMOEBA_SPEED       },
-  { EL_BD_AMOEBA,              &level.bd_amoeba_threshold_too_big,     TEXT_AMOEBA_THRESHOED   },
-  { EL_BD_AMOEBA,              &level.bd_amoeba_slow_growth_time,      TEXT_AMOEBA_SLOW_TIME   },
-  { EL_BD_AMOEBA,              &level.bd_amoeba_slow_growth_rate,      TEXT_AMOEBA_SLOW_RATE,
+  { EL_BD_AMOEBA_1,            &level.bd_amoeba_1_threshold_too_big,   TEXT_AMOEBA_THRESHOED   },
+  { EL_BD_AMOEBA_1,            &level.bd_amoeba_1_slow_growth_time,    TEXT_AMOEBA_SLOW_TIME   },
+  { EL_BD_AMOEBA_2,            &level.bd_amoeba_1_slow_growth_rate,    TEXT_AMOEBA_SLOW_RATE,
                                0, 100                                                          },
-  { EL_BD_AMOEBA,              &level.bd_amoeba_fast_growth_rate,      TEXT_AMOEBA_FAST_RATE,
+  { EL_BD_AMOEBA_1,            &level.bd_amoeba_1_fast_growth_rate,    TEXT_AMOEBA_FAST_RATE,
                                0, 100                                                          },
   { EL_BD_AMOEBA_2,            &level.bd_amoeba_2_threshold_too_big,   TEXT_AMOEBA_THRESHOED   },
   { EL_BD_AMOEBA_2,            &level.bd_amoeba_2_slow_growth_time,    TEXT_AMOEBA_SLOW_TIME   },
@@ -12133,8 +12134,9 @@ static struct
   { EL_BD_AMOEBA_2,            &level.bd_amoeba_2_fast_growth_rate,    TEXT_AMOEBA_FAST_RATE,
                                0, 100                                                          },
   { EL_MAGIC_WALL,             &level.time_magic_wall,                 TEXT_DURATION           },
-  { EL_BD_MAGIC_WALL,          &level.time_magic_wall,                 TEXT_DURATION           },
   { EL_DC_MAGIC_WALL,          &level.time_magic_wall,                 TEXT_DURATION           },
+  { EL_BD_MAGIC_WALL,          &level.time_magic_wall,                 TEXT_DURATION           },
+  { EL_BD_MAGIC_WALL_NATIVE,   &level.bd_magic_wall_time,              TEXT_DURATION           },
   { EL_ROBOT_WHEEL,            &level.time_wheel,                      TEXT_DURATION           },
   { EL_TIMEGATE_SWITCH,                &level.time_timegate,                   TEXT_DURATION           },
   { EL_DC_TIMEGATE_SWITCH,     &level.time_timegate,                   TEXT_DURATION           },
@@ -12216,10 +12218,6 @@ static boolean checkPropertiesConfig(int element)
   if (element == EL_EMPTY_SPACE && level.game_engine_type != GAME_ENGINE_TYPE_RND)
     return FALSE;
 
-  // special case: BD style rock customization only available in BD game engine
-  if (element == EL_BD_ROCK && level.game_engine_type != GAME_ENGINE_TYPE_BD)
-    return FALSE;
-
   if (IS_GEM(element) ||
       IS_CUSTOM_ELEMENT(element) ||
       IS_GROUP_ELEMENT(element) ||
@@ -12232,8 +12230,10 @@ static boolean checkPropertiesConfig(int element)
       IS_PLAYER_ELEMENT(element) ||
       IS_BD_PLAYER_ELEMENT(element) ||
       IS_BD_FIREFLY(properties_element) ||
+      IS_BD_FIREFLY_1(properties_element) ||
       IS_BD_FIREFLY_2(properties_element) ||
       IS_BD_BUTTERFLY(properties_element) ||
+      IS_BD_BUTTERFLY_1(properties_element) ||
       IS_BD_BUTTERFLY_2(properties_element) ||
       IS_BD_STONEFLY(properties_element) ||
       IS_BD_DRAGONFLY(properties_element) ||
@@ -12246,8 +12246,8 @@ static boolean checkPropertiesConfig(int element)
       CAN_GROW(element) ||
       COULD_MOVE_INTO_ACID(element) ||
       MAYBE_DONT_COLLIDE_WITH(element) ||
-      element == EL_BD_SAND ||
-      element == EL_BD_ROCK ||
+      element == EL_BD_SAND_1 ||
+      element == EL_BD_ROCK_NATIVE ||
       element == EL_BD_MEGA_ROCK ||
       element == EL_BD_BOMB ||
       element == EL_BD_ROCKET_LAUNCHER ||
@@ -12291,6 +12291,7 @@ static void SetAutomaticNumberOfGemsNeeded(void)
        case EL_EMERALD_RED:
        case EL_EMERALD_PURPLE:
        case EL_BD_DIAMOND:
+       case EL_BD_DIAMOND_NATIVE:
        case EL_WALL_EMERALD:
        case EL_WALL_EMERALD_YELLOW:
        case EL_WALL_EMERALD_RED:
@@ -12350,57 +12351,25 @@ static void DrawPropertiesConfig(void)
     if (elements_with_counter[i].element != properties_element)
       continue;
 
-    // special case: score for extra diamonds only available in BD game engine
-    if (elements_with_counter[i].element == EL_BD_DIAMOND &&
-       elements_with_counter[i].value == &level.score[SC_DIAMOND_EXTRA] &&
-       level.game_engine_type != GAME_ENGINE_TYPE_BD)
-      continue;
-
-    // special case: some amoeba counters only available in BD game engine
-    if (elements_with_counter[i].element == EL_BD_AMOEBA &&
-       elements_with_counter[i].value != &level.amoeba_speed &&
-       level.game_engine_type != GAME_ENGINE_TYPE_BD)
-      continue;
-
-    // special case: score for smashing only available in R'n'D game engine
-    if ((IS_BD_FIREFLY(elements_with_counter[i].element) ||
-        IS_BD_BUTTERFLY(elements_with_counter[i].element)) &&
-       (elements_with_counter[i].value == &level.score[SC_BUG] ||
-        elements_with_counter[i].value == &level.score[SC_SPACESHIP]) &&
-       level.game_engine_type == GAME_ENGINE_TYPE_BD)
-      continue;
-
-    // special case: some amoeba counters only available in R'n'D game engine
-    if (elements_with_counter[i].element == EL_BD_AMOEBA &&
-       elements_with_counter[i].value == &level.amoeba_speed &&
-       level.game_engine_type == GAME_ENGINE_TYPE_BD)
-      continue;
-
     int counter_id = ED_COUNTER_ID_ELEMENT_VALUE1 + num_element_counters;
 
     counterbutton_info[counter_id].y =
-      ED_ELEMENT_SETTINGS_YPOS((HAS_EDITOR_CONTENT(properties_element)      ? 1 : 0) +
-                              (CAN_GROW(properties_element)                ? 1 : 0) +
-                              (COULD_MOVE_INTO_ACID(properties_element)    ? 1 : 0) +
-                              (MAYBE_DONT_COLLIDE_WITH(properties_element) ? 1 : 0) +
-                              (properties_element == EL_BD_VOODOO_DOLL     ? 4 : 0) +
-                              (properties_element == EL_BD_SLIME           ? 1 : 0) +
-                              (properties_element == EL_BD_ACID            ? 1 : 0) +
-                              (properties_element == EL_BD_REPLICATOR      ? 1 : 0) +
-                              (properties_element == EL_BD_CREATURE_SWITCH ? 1 : 0) +
-                              (properties_element == EL_BD_GRAVITY_SWITCH  ? 2 : 0) +
-                              (properties_element == EL_EMC_MAGIC_BALL     ? 2 : 0) +
+      ED_ELEMENT_SETTINGS_YPOS((HAS_EDITOR_CONTENT(properties_element)         ? 1 : 0) +
+                              (CAN_GROW(properties_element)                    ? 1 : 0) +
+                              (COULD_MOVE_INTO_ACID(properties_element)        ? 1 : 0) +
+                              (MAYBE_DONT_COLLIDE_WITH(properties_element)     ? 1 : 0) +
+                              (properties_element == EL_BD_AMOEBA_1            ? 3 : 0) +
+                              (properties_element == EL_BD_AMOEBA_2            ? 3 : 0) +
+                              (properties_element == EL_BD_MAGIC_WALL_NATIVE   ? 1 : 0) +
+                              (properties_element == EL_BD_VOODOO_DOLL         ? 4 : 0) +
+                              (properties_element == EL_BD_SLIME               ? 1 : 0) +
+                              (properties_element == EL_BD_ACID                ? 1 : 0) +
+                              (properties_element == EL_BD_REPLICATOR          ? 1 : 0) +
+                              (properties_element == EL_BD_CREATURE_SWITCH     ? 1 : 0) +
+                              (properties_element == EL_BD_GRAVITY_SWITCH      ? 2 : 0) +
+                              (properties_element == EL_EMC_MAGIC_BALL         ? 2 : 0) +
                               num_element_counters);
 
-    // special case: set magic wall counter for BD game engine separately
-    if (properties_element == EL_BD_MAGIC_WALL && level.game_engine_type == GAME_ENGINE_TYPE_BD)
-      counterbutton_info[counter_id].y = ED_ELEMENT_SETTINGS_YPOS(1);
-
-    // special case: set amoeba counters for BD game engine separately
-    if ((properties_element == EL_BD_AMOEBA && level.game_engine_type == GAME_ENGINE_TYPE_BD) ||
-       (properties_element == EL_BD_AMOEBA_2))
-      counterbutton_info[counter_id].y = ED_ELEMENT_SETTINGS_YPOS(3 + num_element_counters);
-
     // special case: set position for delay counter for reappearing hammered walls
     if (properties_element == EL_BD_PNEUMATIC_HAMMER && num_element_counters > 0)
       counterbutton_info[counter_id].y += 1;
@@ -12421,7 +12390,7 @@ static void DrawPropertiesConfig(void)
       break;
   }
 
-  if (properties_element == EL_BD_MAGIC_WALL && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+  if (properties_element == EL_BD_MAGIC_WALL_NATIVE)
   {
     // draw stickybutton gadget
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_STICK_ELEMENT);
@@ -12445,13 +12414,13 @@ static void DrawPropertiesConfig(void)
     // draw stickybutton gadget
     MapCheckbuttonGadget(ED_CHECKBUTTON_ID_STICK_ELEMENT);
 
-    if (properties_element == EL_BD_AMOEBA && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+    if (properties_element == EL_BD_AMOEBA_1)
     {
       MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_AMOEBA_WAIT_FOR_HATCHING);
       MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_AMOEBA_START_IMMEDIATELY);
 
-      MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_CONTENT_TOO_BIG);
-      MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_CONTENT_ENCLOSED);
+      MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_1_CONTENT_TOO_BIG);
+      MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_1_CONTENT_ENCLOSED);
     }
     else if (properties_element == EL_BD_AMOEBA_2)
     {
@@ -12606,12 +12575,12 @@ static void DrawPropertiesConfig(void)
     MapDrawingArea(ED_DRAWING_ID_BD_SNAP_ELEMENT);
   }
 
-  if (properties_element == EL_BD_SAND)
+  if (properties_element == EL_BD_SAND_1)
   {
     MapDrawingArea(ED_DRAWING_ID_BD_SAND_LOOKS_LIKE);
   }
 
-  if (properties_element == EL_BD_ROCK && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+  if (properties_element == EL_BD_ROCK_NATIVE)
   {
     counterbutton_info[ED_COUNTER_ID_BD_PUSHING_PROB].y =
       ED_ELEMENT_SETTINGS_YPOS(0);
@@ -12625,7 +12594,7 @@ static void DrawPropertiesConfig(void)
     MapDrawingArea(ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT);
   }
 
-  if (properties_element == EL_BD_DIAMOND && level.game_engine_type == GAME_ENGINE_TYPE_BD)
+  if (properties_element == EL_BD_DIAMOND_NATIVE)
   {
     MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING);
     MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT);
@@ -12633,9 +12602,9 @@ static void DrawPropertiesConfig(void)
 
   if (level.game_engine_type == GAME_ENGINE_TYPE_BD)
   {
-    if (IS_BD_FIREFLY(properties_element))
+    if (IS_BD_FIREFLY_1(properties_element))
     {
-      MapDrawingArea(ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO);
+      MapDrawingArea(ED_DRAWING_ID_BD_FIREFLY_1_EXPLODES_TO);
       MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO);
     }
     else if (IS_BD_FIREFLY_2(properties_element))
@@ -12643,9 +12612,9 @@ static void DrawPropertiesConfig(void)
       MapDrawingArea(ED_DRAWING_ID_BD_FIREFLY_2_EXPLODES_TO);
       MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO);
     }
-    else if (IS_BD_BUTTERFLY(properties_element))
+    else if (IS_BD_BUTTERFLY_1(properties_element))
     {
-      MapDrawingArea(ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO);
+      MapDrawingArea(ED_DRAWING_ID_BD_BUTTERFLY_1_EXPLODES_TO);
       MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO);
     }
     else if (IS_BD_BUTTERFLY_2(properties_element))
@@ -13045,7 +13014,7 @@ static void DrawEditorElementAnimation(int x, int y)
   int graphic;
   int frame;
 
-  if (IS_BD_RUNTIME_ELEMENT(properties_element))
+  if (IS_BD_NATIVE_RUNTIME_ELEMENT(properties_element))
   {
     el2edimg_with_frame(properties_element, &graphic, &frame);
 
@@ -13989,6 +13958,7 @@ static void SetElementIntelliDraw(int x, int y, int dx, int dy, int new_element,
       { EL_EMERALD_PURPLE,             EL_WALL_EMERALD_PURPLE          },
       { EL_DIAMOND,                    EL_WALL_DIAMOND                 },
       { EL_BD_DIAMOND,                 EL_WALL_BD_DIAMOND              },
+      { EL_BD_DIAMOND_NATIVE,          EL_BD_WALL_DIAMOND              },
       { EL_GATE_1,                     EL_GATE_1_GRAY                  },
       { EL_GATE_2,                     EL_GATE_2_GRAY                  },
       { EL_GATE_3,                     EL_GATE_3_GRAY                  },
index 60d21c324ce36f4989b7258075512486c10acfc9..cadbc50d62085658bb7e2ae1b502837ace96b457 100644 (file)
@@ -671,42 +671,42 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   },
 
   {
-    EL_BD_SAND,                                -1,
+    EL_BD_SAND_1,                      -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_sand_looks_like,            EL_BD_SAND
+    &li.bd_sand_looks_like,            EL_BD_SAND_1
   },
 
   {
-    EL_BD_ROCK,                                -1,
+    EL_BD_ROCK_NATIVE,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_rock_turns_to_on_falling,   EL_BD_ROCK_FALLING
+    &li.bd_rock_turns_to_on_falling,   EL_BD_ROCK_NATIVE_FALLING
   },
   {
-    EL_BD_ROCK,                                -1,
+    EL_BD_ROCK_NATIVE,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(2),
-    &li.bd_rock_turns_to_on_impact,    EL_BD_ROCK
+    &li.bd_rock_turns_to_on_impact,    EL_BD_ROCK_NATIVE
   },
 
   {
-    EL_BD_DIAMOND,                     -1,
+    EL_BD_DIAMOND_NATIVE,              -1,
     TYPE_INTEGER,                      CONF_VALUE_16_BIT(1),
     &li.score[SC_DIAMOND_EXTRA],       20
   },
   {
-    EL_BD_DIAMOND,                     -1,
+    EL_BD_DIAMOND_NATIVE,              -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(2),
-    &li.bd_diamond_turns_to_on_falling,        EL_BD_DIAMOND_FALLING
+    &li.bd_diamond_turns_to_on_falling,        EL_BD_DIAMOND_NATIVE_FALLING
   },
   {
-    EL_BD_DIAMOND,                     -1,
+    EL_BD_DIAMOND_NATIVE,              -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(3),
-    &li.bd_diamond_turns_to_on_impact, EL_BD_DIAMOND
+    &li.bd_diamond_turns_to_on_impact, EL_BD_DIAMOND_NATIVE
   },
 
   {
-    EL_BD_FIREFLY,                     -1,
+    EL_BD_FIREFLY_1,                   -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_firefly_explodes_to,                EL_BD_EXPLODING_1
+    &li.bd_firefly_1_explodes_to,      EL_BD_EXPLODING_1
   },
 
   {
@@ -716,21 +716,21 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   },
 
   {
-    EL_BD_BUTTERFLY,                   -1,
+    EL_BD_BUTTERFLY_1,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_butterfly_explodes_to,      EL_BD_DIAMOND_GROWING_1
+    &li.bd_butterfly_1_explodes_to,    EL_BD_DIAMOND_NATIVE_GROWING_1
   },
 
   {
     EL_BD_BUTTERFLY_2,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_butterfly_2_explodes_to,    EL_BD_DIAMOND_GROWING_1
+    &li.bd_butterfly_2_explodes_to,    EL_BD_DIAMOND_NATIVE_GROWING_1
   },
 
   {
     EL_BD_STONEFLY,                    -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_stonefly_explodes_to,       EL_BD_ROCK_GROWING_1
+    &li.bd_stonefly_explodes_to,       EL_BD_ROCK_NATIVE_GROWING_1
   },
 
   {
@@ -740,9 +740,9 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   },
 
   {
-    EL_BD_DIAMOND_GROWING_5,           -1,
+    EL_BD_DIAMOND_NATIVE_GROWING_5,    -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_diamond_birth_turns_to,     EL_BD_DIAMOND
+    &li.bd_diamond_birth_turns_to,     EL_BD_DIAMOND_NATIVE
   },
 
   {
@@ -764,58 +764,63 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   },
 
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(1),
     &li.bd_magic_wall_wait_hatching,   FALSE
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(2),
     &li.bd_magic_wall_stops_amoeba,    TRUE
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(3),
     &li.bd_magic_wall_zero_infinite,   TRUE
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(4),
     &li.bd_magic_wall_break_scan,      FALSE
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
-    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_magic_wall_diamond_to,      EL_BD_ROCK_FALLING
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
+    TYPE_INTEGER,                      CONF_VALUE_16_BIT(1),
+    &li.bd_magic_wall_time,            999
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(2),
-    &li.bd_magic_wall_rock_to,         EL_BD_DIAMOND_FALLING
+    &li.bd_magic_wall_diamond_to,      EL_BD_ROCK_NATIVE_FALLING
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(3),
-    &li.bd_magic_wall_mega_rock_to,    EL_BD_NITRO_PACK_FALLING
+    &li.bd_magic_wall_rock_to,         EL_BD_DIAMOND_NATIVE_FALLING
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(4),
-    &li.bd_magic_wall_nut_to,          EL_BD_NUT_FALLING
+    &li.bd_magic_wall_mega_rock_to,    EL_BD_NITRO_PACK_FALLING
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(5),
-    &li.bd_magic_wall_nitro_pack_to,   EL_BD_MEGA_ROCK_FALLING
+    &li.bd_magic_wall_nut_to,          EL_BD_NUT_FALLING
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(6),
-    &li.bd_magic_wall_flying_diamond_to, EL_BD_FLYING_ROCK_FLYING
+    &li.bd_magic_wall_nitro_pack_to,   EL_BD_MEGA_ROCK_FALLING
   },
   {
-    EL_BD_MAGIC_WALL,                  -1,
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(7),
+    &li.bd_magic_wall_flying_diamond_to, EL_BD_FLYING_ROCK_FLYING
+  },
+  {
+    EL_BD_MAGIC_WALL_NATIVE,           -1,
+    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(8),
     &li.bd_magic_wall_flying_rock_to,  EL_BD_FLYING_DIAMOND_FLYING
   },
 
@@ -874,22 +879,22 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   {
     EL_BD_SLIME,                       -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_slime_eats_element_1,       EL_BD_DIAMOND
+    &li.bd_slime_eats_element_1,       EL_BD_DIAMOND_NATIVE
   },
   {
     EL_BD_SLIME,                       -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(2),
-    &li.bd_slime_converts_to_element_1,        EL_BD_DIAMOND_FALLING
+    &li.bd_slime_converts_to_element_1,        EL_BD_DIAMOND_NATIVE_FALLING
   },
   {
     EL_BD_SLIME,                       -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(3),
-    &li.bd_slime_eats_element_2,       EL_BD_ROCK
+    &li.bd_slime_eats_element_2,       EL_BD_ROCK_NATIVE
   },
   {
     EL_BD_SLIME,                       -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(4),
-    &li.bd_slime_converts_to_element_2,        EL_BD_ROCK_FALLING
+    &li.bd_slime_converts_to_element_2,        EL_BD_ROCK_NATIVE_FALLING
   },
   {
     EL_BD_SLIME,                       -1,
@@ -905,7 +910,7 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   {
     EL_BD_ACID,                                -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_acid_eats_element,          EL_BD_SAND
+    &li.bd_acid_eats_element,          EL_BD_SAND_1
   },
   {
     EL_BD_ACID,                                -1,
@@ -926,7 +931,7 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   {
     EL_BD_BITER,                       -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
-    &li.bd_biter_eats_element,         EL_BD_DIAMOND
+    &li.bd_biter_eats_element,         EL_BD_DIAMOND_NATIVE
   },
 
   {
@@ -1112,7 +1117,6 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
     &li.score[SC_CRYSTAL],             10
   },
 
-  // (amoeba values used by R'n'D game engine only)
   {
     EL_BD_AMOEBA,                      -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(1),
@@ -1128,92 +1132,92 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
     TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(1),
     &li.grow_into_diggable,            TRUE
   },
-  // (amoeba values used by BD game engine only)
-  {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(2),
-    &li.bd_amoeba_wait_for_hatching,   FALSE
-  },
+
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(3),
-    &li.bd_amoeba_start_immediately,   TRUE
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_INTEGER,                      CONF_VALUE_16_BIT(1),
+    &li.bd_amoeba_1_threshold_too_big, 200
   },
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(4),
-    &li.bd_amoeba_2_explode_by_amoeba, TRUE
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_INTEGER,                      CONF_VALUE_16_BIT(2),
+    &li.bd_amoeba_1_slow_growth_time,  200
   },
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_INTEGER,                      CONF_VALUE_16_BIT(3),
-    &li.bd_amoeba_threshold_too_big,   200
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(3),
+    &li.bd_amoeba_1_content_too_big,   EL_BD_ROCK_NATIVE
   },
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_INTEGER,                      CONF_VALUE_16_BIT(4),
-    &li.bd_amoeba_slow_growth_time,    200
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(4),
+    &li.bd_amoeba_1_content_enclosed,  EL_BD_DIAMOND_NATIVE
   },
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_INTEGER,                      CONF_VALUE_8_BIT(5),
-    &li.bd_amoeba_slow_growth_rate,    3
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_INTEGER,                      CONF_VALUE_8_BIT(1),
+    &li.bd_amoeba_1_slow_growth_rate,  3
   },
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_INTEGER,                      CONF_VALUE_8_BIT(6),
-    &li.bd_amoeba_fast_growth_rate,    25
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_INTEGER,                      CONF_VALUE_8_BIT(2),
+    &li.bd_amoeba_1_fast_growth_rate,  25
   },
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(5),
-    &li.bd_amoeba_content_too_big,     EL_BD_ROCK
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(3),
+    &li.bd_amoeba_wait_for_hatching,   FALSE
   },
   {
-    EL_BD_AMOEBA,                      -1,
-    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(6),
-    &li.bd_amoeba_content_enclosed,    EL_BD_DIAMOND
+    EL_BD_AMOEBA_1,                    -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(4),
+    &li.bd_amoeba_start_immediately,   TRUE
   },
 
   {
     EL_BD_AMOEBA_2,                    -1,
-    TYPE_INTEGER,                      CONF_VALUE_16_BIT(3),
+    TYPE_INTEGER,                      CONF_VALUE_16_BIT(1),
     &li.bd_amoeba_2_threshold_too_big, 200
   },
   {
     EL_BD_AMOEBA_2,                    -1,
-    TYPE_INTEGER,                      CONF_VALUE_16_BIT(4),
+    TYPE_INTEGER,                      CONF_VALUE_16_BIT(2),
     &li.bd_amoeba_2_slow_growth_time,  200
   },
   {
     EL_BD_AMOEBA_2,                    -1,
-    TYPE_INTEGER,                      CONF_VALUE_8_BIT(5),
-    &li.bd_amoeba_2_slow_growth_rate,  3
+    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(3),
+    &li.bd_amoeba_2_content_too_big,   EL_BD_ROCK_NATIVE
   },
   {
     EL_BD_AMOEBA_2,                    -1,
-    TYPE_INTEGER,                      CONF_VALUE_8_BIT(6),
-    &li.bd_amoeba_2_fast_growth_rate,  25
+    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(4),
+    &li.bd_amoeba_2_content_enclosed,  EL_BD_DIAMOND_NATIVE
   },
   {
     EL_BD_AMOEBA_2,                    -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(5),
-    &li.bd_amoeba_2_content_too_big,   EL_BD_ROCK
+    &li.bd_amoeba_2_content_exploding, EL_EMPTY
   },
   {
     EL_BD_AMOEBA_2,                    -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(6),
-    &li.bd_amoeba_2_content_enclosed,  EL_BD_DIAMOND
+    &li.bd_amoeba_2_content_looks_like,        EL_BD_AMOEBA_2
   },
   {
     EL_BD_AMOEBA_2,                    -1,
-    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(7),
-    &li.bd_amoeba_2_content_exploding, EL_EMPTY
+    TYPE_INTEGER,                      CONF_VALUE_8_BIT(1),
+    &li.bd_amoeba_2_slow_growth_rate,  3
   },
   {
     EL_BD_AMOEBA_2,                    -1,
-    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(8),
-    &li.bd_amoeba_2_content_looks_like,        EL_BD_AMOEBA_2
+    TYPE_INTEGER,                      CONF_VALUE_8_BIT(2),
+    &li.bd_amoeba_2_fast_growth_rate,  25
+  },
+  {
+    EL_BD_AMOEBA_2,                    -1,
+    TYPE_BOOLEAN,                      CONF_VALUE_8_BIT(3),
+    &li.bd_amoeba_2_explode_by_amoeba, TRUE
   },
 
   {
@@ -4344,7 +4348,7 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level)
   cave->voodoo_dies_by_stone           = level->bd_voodoo_dies_by_rock;
   cave->voodoo_disappear_in_explosion  = level->bd_voodoo_vanish_by_explosion;
   cave->level_penalty_time[0]          = level->bd_voodoo_penalty_time;
-  cave->level_magic_wall_time[0]       = level->time_magic_wall;
+  cave->level_magic_wall_time[0]       = level->bd_magic_wall_time;
   cave->magic_timer_zero_is_infinite   = level->bd_magic_wall_zero_infinite;
   cave->magic_timer_wait_for_hatching  = level->bd_magic_wall_wait_hatching;
   cave->magic_wall_stops_amoeba                = level->bd_magic_wall_stops_amoeba;
@@ -4361,17 +4365,17 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level)
   cave->amoeba_timer_wait_for_hatching = level->bd_amoeba_wait_for_hatching;
   cave->amoeba_timer_started_immediately= level->bd_amoeba_start_immediately;
   cave->amoeba_2_explodes_by_amoeba    = level->bd_amoeba_2_explode_by_amoeba;
-  cave->level_amoeba_threshold[0]      = level->bd_amoeba_threshold_too_big;
-  cave->level_amoeba_time[0]           = level->bd_amoeba_slow_growth_time;
-  cave->amoeba_growth_prob             = level->bd_amoeba_slow_growth_rate * 10000;
-  cave->amoeba_fast_growth_prob                = level->bd_amoeba_fast_growth_rate * 10000;
+  cave->level_amoeba_threshold[0]      = level->bd_amoeba_1_threshold_too_big;
+  cave->level_amoeba_time[0]           = level->bd_amoeba_1_slow_growth_time;
+  cave->amoeba_growth_prob             = level->bd_amoeba_1_slow_growth_rate * 10000;
+  cave->amoeba_fast_growth_prob                = level->bd_amoeba_1_fast_growth_rate * 10000;
   cave->level_amoeba_2_threshold[0]    = level->bd_amoeba_2_threshold_too_big;
   cave->level_amoeba_2_time[0]         = level->bd_amoeba_2_slow_growth_time;
   cave->amoeba_2_growth_prob           = level->bd_amoeba_2_slow_growth_rate * 10000;
   cave->amoeba_2_fast_growth_prob      = level->bd_amoeba_2_fast_growth_rate * 10000;
 
-  cave->amoeba_too_big_effect          = LEVEL_TO_CAVE(level->bd_amoeba_content_too_big);
-  cave->amoeba_enclosed_effect         = LEVEL_TO_CAVE(level->bd_amoeba_content_enclosed);
+  cave->amoeba_too_big_effect          = LEVEL_TO_CAVE(level->bd_amoeba_1_content_too_big);
+  cave->amoeba_enclosed_effect         = LEVEL_TO_CAVE(level->bd_amoeba_1_content_enclosed);
   cave->amoeba_2_too_big_effect                = LEVEL_TO_CAVE(level->bd_amoeba_2_content_too_big);
   cave->amoeba_2_enclosed_effect       = LEVEL_TO_CAVE(level->bd_amoeba_2_content_enclosed);
   cave->amoeba_2_explosion_effect      = LEVEL_TO_CAVE(level->bd_amoeba_2_content_exploding);
@@ -4437,9 +4441,9 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level)
   cave->diamond_falling_effect         = LEVEL_TO_CAVE(level->bd_diamond_turns_to_on_falling);
   cave->diamond_bouncing_effect                = LEVEL_TO_CAVE(level->bd_diamond_turns_to_on_impact);
 
-  cave->firefly_explode_to             = LEVEL_TO_CAVE(level->bd_firefly_explodes_to);
+  cave->firefly_explode_to             = LEVEL_TO_CAVE(level->bd_firefly_1_explodes_to);
   cave->alt_firefly_explode_to         = LEVEL_TO_CAVE(level->bd_firefly_2_explodes_to);
-  cave->butterfly_explode_to           = LEVEL_TO_CAVE(level->bd_butterfly_explodes_to);
+  cave->butterfly_explode_to           = LEVEL_TO_CAVE(level->bd_butterfly_1_explodes_to);
   cave->alt_butterfly_explode_to       = LEVEL_TO_CAVE(level->bd_butterfly_2_explodes_to);
   cave->stonefly_explode_to            = LEVEL_TO_CAVE(level->bd_stonefly_explodes_to);
   cave->dragonfly_explode_to           = LEVEL_TO_CAVE(level->bd_dragonfly_explodes_to);
@@ -4517,7 +4521,7 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level)
   level->bd_voodoo_dies_by_rock                = cave->voodoo_dies_by_stone;
   level->bd_voodoo_vanish_by_explosion = cave->voodoo_disappear_in_explosion;
   level->bd_voodoo_penalty_time                = cave->level_penalty_time[bd_level_nr];
-  level->time_magic_wall               = cave->level_magic_wall_time[bd_level_nr];
+  level->bd_magic_wall_time            = cave->level_magic_wall_time[bd_level_nr];
   level->bd_magic_wall_zero_infinite   = cave->magic_timer_zero_is_infinite;
   level->bd_magic_wall_wait_hatching   = cave->magic_timer_wait_for_hatching;
   level->bd_magic_wall_stops_amoeba    = cave->magic_wall_stops_amoeba;
@@ -4534,17 +4538,17 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level)
   level->bd_amoeba_wait_for_hatching   = cave->amoeba_timer_wait_for_hatching;
   level->bd_amoeba_start_immediately   = cave->amoeba_timer_started_immediately;
   level->bd_amoeba_2_explode_by_amoeba = cave->amoeba_2_explodes_by_amoeba;
-  level->bd_amoeba_threshold_too_big   = cave->level_amoeba_threshold[bd_level_nr];
-  level->bd_amoeba_slow_growth_time    = cave->level_amoeba_time[bd_level_nr];
-  level->bd_amoeba_slow_growth_rate    = cave->amoeba_growth_prob      / 10000;
-  level->bd_amoeba_fast_growth_rate    = cave->amoeba_fast_growth_prob / 10000;
+  level->bd_amoeba_1_threshold_too_big = cave->level_amoeba_threshold[bd_level_nr];
+  level->bd_amoeba_1_slow_growth_time  = cave->level_amoeba_time[bd_level_nr];
+  level->bd_amoeba_1_slow_growth_rate  = cave->amoeba_growth_prob      / 10000;
+  level->bd_amoeba_1_fast_growth_rate  = cave->amoeba_fast_growth_prob / 10000;
   level->bd_amoeba_2_threshold_too_big = cave->level_amoeba_2_threshold[bd_level_nr];
   level->bd_amoeba_2_slow_growth_time  = cave->level_amoeba_2_time[bd_level_nr];
   level->bd_amoeba_2_slow_growth_rate  = cave->amoeba_2_growth_prob      / 10000;
   level->bd_amoeba_2_fast_growth_rate  = cave->amoeba_2_fast_growth_prob / 10000;
 
-  level->bd_amoeba_content_too_big     = CAVE_TO_LEVEL(cave->amoeba_too_big_effect);
-  level->bd_amoeba_content_enclosed    = CAVE_TO_LEVEL(cave->amoeba_enclosed_effect);
+  level->bd_amoeba_1_content_too_big   = CAVE_TO_LEVEL(cave->amoeba_too_big_effect);
+  level->bd_amoeba_1_content_enclosed  = CAVE_TO_LEVEL(cave->amoeba_enclosed_effect);
   level->bd_amoeba_2_content_too_big   = CAVE_TO_LEVEL(cave->amoeba_2_too_big_effect);
   level->bd_amoeba_2_content_enclosed  = CAVE_TO_LEVEL(cave->amoeba_2_enclosed_effect);
   level->bd_amoeba_2_content_exploding = CAVE_TO_LEVEL(cave->amoeba_2_explosion_effect);
@@ -4610,9 +4614,9 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level)
   level->bd_diamond_turns_to_on_falling        = CAVE_TO_LEVEL(cave->diamond_falling_effect);
   level->bd_diamond_turns_to_on_impact = CAVE_TO_LEVEL(cave->diamond_bouncing_effect);
 
-  level->bd_firefly_explodes_to                = CAVE_TO_LEVEL(cave->firefly_explode_to);
+  level->bd_firefly_1_explodes_to      = CAVE_TO_LEVEL(cave->firefly_explode_to);
   level->bd_firefly_2_explodes_to      = CAVE_TO_LEVEL(cave->alt_firefly_explode_to);
-  level->bd_butterfly_explodes_to      = CAVE_TO_LEVEL(cave->butterfly_explode_to);
+  level->bd_butterfly_1_explodes_to    = CAVE_TO_LEVEL(cave->butterfly_explode_to);
   level->bd_butterfly_2_explodes_to    = CAVE_TO_LEVEL(cave->alt_butterfly_explode_to);
   level->bd_stonefly_explodes_to       = CAVE_TO_LEVEL(cave->stonefly_explode_to);
   level->bd_dragonfly_explodes_to      = CAVE_TO_LEVEL(cave->dragonfly_explode_to);
index 288ff5f16f9581afeafe387c410866f4a48a49ca..94372a06d23a2ef8afe11f5c0687760f85d4cf11 100644 (file)
@@ -1843,7 +1843,7 @@ static void InitFieldForEngine_RND(int x, int y)
   element = (element == EL_BD_EMPTY            ? EL_EMPTY :
             element == EL_BD_PLAYER            ? EL_PLAYER_1 :
             element == EL_BD_INBOX             ? EL_PLAYER_1 :
-            element == EL_BD_SAND              ? EL_SAND :
+            element == EL_BD_SAND_1            ? EL_SAND :
             element == EL_BD_STEELWALL         ? EL_STEELWALL :
             element == EL_BD_EXIT_CLOSED       ? EL_EXIT_CLOSED :
             element == EL_BD_EXIT_OPEN         ? EL_EXIT_OPEN :
@@ -15778,10 +15778,10 @@ static int getSoundEffect_BD(int element_bd, int sample)
     case GD_S_DIAMOND_FALLING_8:
       nr = (sample == GD_S_DIAMOND_FALLING_RANDOM ? GetSimpleRandom(8) :
            sample - GD_S_DIAMOND_FALLING_1);
-      sound_effect = SND_BD_DIAMOND_FALLING_RANDOM_1 + nr;
+      sound_effect = SND_BD_DIAMOND_NATIVE_FALLING_RANDOM_1 + nr;
 
       if (getSoundInfoEntryFilename(sound_effect) == NULL)
-       sound_effect = SND_BD_DIAMOND_FALLING;
+       sound_effect = SND_BD_DIAMOND_NATIVE_FALLING;
       break;
 
     case GD_S_DIAMOND_IMPACT_RANDOM:
@@ -15795,10 +15795,10 @@ static int getSoundEffect_BD(int element_bd, int sample)
     case GD_S_DIAMOND_IMPACT_8:
       nr = (sample == GD_S_DIAMOND_IMPACT_RANDOM ? GetSimpleRandom(8) :
            sample - GD_S_DIAMOND_IMPACT_1);
-      sound_effect = SND_BD_DIAMOND_IMPACT_RANDOM_1 + nr;
+      sound_effect = SND_BD_DIAMOND_NATIVE_IMPACT_RANDOM_1 + nr;
 
       if (getSoundInfoEntryFilename(sound_effect) == NULL)
-       sound_effect = SND_BD_DIAMOND_IMPACT;
+       sound_effect = SND_BD_DIAMOND_NATIVE_IMPACT;
       break;
 
     case GD_S_FLYING_DIAMOND_FALLING_RANDOM:
@@ -15858,7 +15858,7 @@ static int getSoundEffect_BD(int element_bd, int sample)
       break;
 
     case GD_S_AMOEBA_MAGIC:
-      sound_effect = SND_BD_AMOEBA_OTHER;
+      sound_effect = SND_BD_AMOEBA_1_OTHER;
       break;
 
     case GD_S_FINISHED:
index 15044548cdda0dba2a89ebd73f6d8db93869b5c9..93d77928411fe907bb5ee88b3822c400cb5217e2 100644 (file)
@@ -1155,6 +1155,8 @@ static void InitElementGraphicInfo(void)
       // look for special default action graphic (classic game specific)
       if (IS_BD_ELEMENT(i) && element_info[EL_BD_DEFAULT].graphic[act] != -1)
        default_action_graphic = element_info[EL_BD_DEFAULT].graphic[act];
+      if (IS_BD_NATIVE_ELEMENT(i) && element_info[EL_BD_NATIVE_DEFAULT].graphic[act] != -1)
+       default_action_graphic = element_info[EL_BD_NATIVE_DEFAULT].graphic[act];
       if (IS_SP_ELEMENT(i) && element_info[EL_SP_DEFAULT].graphic[act] != -1)
        default_action_graphic = element_info[EL_SP_DEFAULT].graphic[act];
       if (IS_SB_ELEMENT(i) && element_info[EL_SB_DEFAULT].graphic[act] != -1)
@@ -1164,6 +1166,8 @@ static void InitElementGraphicInfo(void)
 
       if (IS_BD_ELEMENT(i) && element_info[EL_BD_DEFAULT].crumbled[act] != -1)
        default_action_crumbled = element_info[EL_BD_DEFAULT].crumbled[act];
+      if (IS_BD_NATIVE_ELEMENT(i) && element_info[EL_BD_NATIVE_DEFAULT].crumbled[act] != -1)
+       default_action_crumbled = element_info[EL_BD_NATIVE_DEFAULT].crumbled[act];
       if (IS_SP_ELEMENT(i) && element_info[EL_SP_DEFAULT].crumbled[act] != -1)
        default_action_crumbled = element_info[EL_SP_DEFAULT].crumbled[act];
       if (IS_SB_ELEMENT(i) && element_info[EL_SB_DEFAULT].crumbled[act] != -1)
@@ -2166,6 +2170,8 @@ static void InitElementSoundInfo(void)
       // look for special default action sound (classic game specific)
       if (IS_BD_ELEMENT(i) && element_info[EL_BD_DEFAULT].sound[act] != -1)
        default_action_sound = element_info[EL_BD_DEFAULT].sound[act];
+      if (IS_BD_NATIVE_ELEMENT(i) && element_info[EL_BD_NATIVE_DEFAULT].sound[act] != -1)
+       default_action_sound = element_info[EL_BD_NATIVE_DEFAULT].sound[act];
       if (IS_SP_ELEMENT(i) && element_info[EL_SP_DEFAULT].sound[act] != -1)
        default_action_sound = element_info[EL_SP_DEFAULT].sound[act];
       if (IS_SB_ELEMENT(i) && element_info[EL_SB_DEFAULT].sound[act] != -1)
index b278a0df17172e77dd264d7da67bfcd6bb3b4259..dde0382e2c4bee2562a92824f17b8406ae053170 100644 (file)
@@ -6468,7 +6468,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "Empty space"
   },
   {
-    "bd_sand",
+    "bd_sand_1",
     "bd_sand",
     "Sand"
   },
@@ -6705,12 +6705,17 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
   {
     "bd_nut",
     "bd_nut",
-    "Nut (BD style)"
+    "Nut"
+  },
+  {
+    "bd_amoeba_1",
+    "bd_amoeba",
+    "Amoeba 1"
   },
   {
     "bd_amoeba_2",
     "bd_amoeba",
-    "Amoeba 2 (BD style)"
+    "Amoeba 2"
   },
   {
     "bd_bladder",
@@ -6962,6 +6967,31 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "bd_cow",
     "Cow (starts moving down)"
   },
+  {
+    "bd_butterfly_1",
+    "bd_butterfly",
+    "Butterfly 1 (random start direction)"
+  },
+  {
+    "bd_butterfly_1.right",
+    "bd_butterfly",
+    "Butterfly 1 (starts moving right)"
+  },
+  {
+    "bd_butterfly_1.up",
+    "bd_butterfly",
+    "Butterfly 1 (starts moving up)"
+  },
+  {
+    "bd_butterfly_1.left",
+    "bd_butterfly",
+    "Butterfly 1 (starts moving left)"
+  },
+  {
+    "bd_butterfly_1.down",
+    "bd_butterfly",
+    "Butterfly 1 (starts moving down)"
+  },
   {
     "bd_butterfly_2",
     "bd_butterfly",
@@ -6987,6 +7017,31 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "bd_butterfly",
     "Butterfly 2 (starts moving down)"
   },
+  {
+    "bd_firefly_1",
+    "bd_firefly",
+    "Firefly 1 (random start direction)"
+  },
+  {
+    "bd_firefly_1.right",
+    "bd_firefly",
+    "Firefly 1 (starts moving right)"
+  },
+  {
+    "bd_firefly_1.up",
+    "bd_firefly",
+    "Firefly 1 (starts moving up)"
+  },
+  {
+    "bd_firefly_1.left",
+    "bd_firefly",
+    "Firefly 1 (starts moving left)"
+  },
+  {
+    "bd_firefly_1.down",
+    "bd_firefly",
+    "Firefly 1 (starts moving down)"
+  },
   {
     "bd_firefly_2",
     "bd_firefly",
@@ -7162,6 +7217,26 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "bd_covered",
     "Covered"
   },
+  {
+    "bd_wall_native",
+    "wall",
+    "Normal wall"
+  },
+  {
+    "bd_rock_native",
+    "bd_rock",
+    "Rock"
+  },
+  {
+    "bd_diamond_native",
+    "bd_diamond",
+    "Diamond"
+  },
+  {
+    "bd_magic_wall_native",
+    "bd_magic_wall",
+    "Magic wall"
+  },
   {
     "bd_sand_ball.falling",
     "bd_sand_ball",
@@ -7173,7 +7248,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "Loose sand (falling)"
   },
   {
-    "bd_rock.falling",
+    "bd_rock_native.falling",
     "bd_rock",
     "Rock (falling)"
   },
@@ -7188,7 +7263,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "Mega rock (falling)"
   },
   {
-    "bd_diamond.falling",
+    "bd_diamond_native.falling",
     "bd_diamond",
     "Diamond (falling)"
   },
@@ -7438,27 +7513,27 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "Clock birth (4)"
   },
   {
-    "bd_diamond.growing_1",
+    "bd_diamond_native.growing_1",
     "bd_diamond",
     "Diamond birth (1)"
   },
   {
-    "bd_diamond.growing_2",
+    "bd_diamond_native.growing_2",
     "bd_diamond",
     "Diamond birth (2)"
   },
   {
-    "bd_diamond.growing_3",
+    "bd_diamond_native.growing_3",
     "bd_diamond",
     "Diamond birth (3)"
   },
   {
-    "bd_diamond.growing_4",
+    "bd_diamond_native.growing_4",
     "bd_diamond",
     "Diamond birth (4)"
   },
   {
-    "bd_diamond.growing_5",
+    "bd_diamond_native.growing_5",
     "bd_diamond",
     "Diamond birth (5)"
   },
@@ -7488,22 +7563,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "Explosion (5)"
   },
   {
-    "bd_rock.growing_1",
+    "bd_rock_native.growing_1",
     "bd_rock",
     "Rock birth (1)"
   },
   {
-    "bd_rock.growing_2",
+    "bd_rock_native.growing_2",
     "bd_rock",
     "Rock birth (2)"
   },
   {
-    "bd_rock.growing_3",
+    "bd_rock_native.growing_3",
     "bd_rock",
     "Rock birth (3)"
   },
   {
-    "bd_rock.growing_4",
+    "bd_rock_native.growing_4",
     "bd_rock",
     "Rock birth (4)"
   },
@@ -8058,6 +8133,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "df_mine",
     "Active mine"
   },
+  {
+    "bd_magic_wall_native.active",
+    "magic_wall",
+    "-"
+  },
 
   // --------------------------------------------------------------------------
   // "unreal" (and therefore not drawable) runtime elements
@@ -8318,6 +8398,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "bd_default",
     "-"
   },
+  {
+    "[bd_native_default]",
+    "bd_native_default",
+    "-"
+  },
   {
     "[sp_default]",
     "sp_default",
index 063ce800dd5f6bf6cb6c6c9e5dece794218336d0..9a21e95662cc2842f1e95c2d659d576be00bdc77 100644 (file)
                                         (e) == EL_BD_FIREFLY_LEFT ||           \
                                         (e) == EL_BD_FIREFLY_DOWN)
 
+#define IS_BD_FIREFLY_1(e)             ((e) == EL_BD_FIREFLY_1 ||              \
+                                        (e) == EL_BD_FIREFLY_1_RIGHT ||        \
+                                        (e) == EL_BD_FIREFLY_1_UP ||           \
+                                        (e) == EL_BD_FIREFLY_1_LEFT ||         \
+                                        (e) == EL_BD_FIREFLY_1_DOWN)
+
 #define IS_BD_FIREFLY_2(e)             ((e) == EL_BD_FIREFLY_2 ||              \
                                         (e) == EL_BD_FIREFLY_2_RIGHT ||        \
                                         (e) == EL_BD_FIREFLY_2_UP ||           \
                                         (e) == EL_BD_BUTTERFLY_LEFT ||         \
                                         (e) == EL_BD_BUTTERFLY_DOWN)
 
+#define IS_BD_BUTTERFLY_1(e)           ((e) == EL_BD_BUTTERFLY_1 ||            \
+                                        (e) == EL_BD_BUTTERFLY_1_RIGHT ||      \
+                                        (e) == EL_BD_BUTTERFLY_1_UP ||         \
+                                        (e) == EL_BD_BUTTERFLY_1_LEFT ||       \
+                                        (e) == EL_BD_BUTTERFLY_1_DOWN)
+
 #define IS_BD_BUTTERFLY_2(e)           ((e) == EL_BD_BUTTERFLY_2 ||            \
                                         (e) == EL_BD_BUTTERFLY_2_RIGHT ||      \
                                         (e) == EL_BD_BUTTERFLY_2_UP ||         \
                                         (e) == EL_BD_CONVEYOR_DIR_SWITCH ||    \
                                         (e) == EL_BD_CONVEYOR_DIR_SWITCH_ACTIVE)
 
-#define IS_BD_RUNTIME_ELEMENT(e)       ((e) >= EL_BD_RUNTIME_START &&          \
-                                        (e) <= EL_BD_RUNTIME_END)
+#define IS_BD_NATIVE_ELEMENT(e)                ((e) >= EL_BD_NATIVE_START &&           \
+                                        (e) <= EL_BD_NATIVE_END)
+
+#define IS_BD_NATIVE_RUNTIME_ELEMENT(e)        ((e) >= EL_BD_NATIVE_RUNTIME_START &&   \
+                                        (e) <= EL_BD_NATIVE_RUNTIME_END)
 
 #define IS_SOKOBAN_OBJECT_OR_FIELD(e)  ((e) == EL_SOKOBAN_OBJECT ||            \
                                         (e) == EL_SOKOBAN_FIELD_EMPTY ||       \
 #define EL_DF_END_2                            EL_DF_SLOPE_END
 
 // BD style elements (normal)
-#define EL_BD_START                            1253
-#define EL_BD_EMPTY_SPACE                      EL_BD_START
+#define EL_BD_NATIVE_START                     1253
+#define EL_BD_EMPTY_SPACE                      EL_BD_NATIVE_START
 #define EL_BD_EMPTY                            EL_BD_EMPTY_SPACE
-#define EL_BD_SAND                             1254
+#define EL_BD_SAND_1                           1254
 #define EL_BD_SAND_2                           1255
 #define EL_BD_SAND_BALL                                1256
 #define EL_BD_SAND_LOOSE                       1257
 #define EL_BD_DIAMOND_KEY                      1299
 #define EL_BD_TRAPPED_DIAMOND                  1300
 #define EL_BD_NUT                              1301
-#define EL_BD_AMOEBA_2                         1302
-#define EL_BD_BLADDER                          1303
-#define EL_BD_BLADDER_SPENDER                  1304
-#define EL_BD_CREATURE_SWITCH                  1305
-#define EL_BD_CREATURE_SWITCH_ACTIVE           1306
-#define EL_BD_BITER_SWITCH_1                   1307
-#define EL_BD_BITER_SWITCH_2                   1308
-#define EL_BD_BITER_SWITCH_3                   1309
-#define EL_BD_BITER_SWITCH_4                   1310
-#define EL_BD_REPLICATOR                       1311
-#define EL_BD_REPLICATOR_ACTIVE                        1312
-#define EL_BD_REPLICATOR_SWITCH                        1313
-#define EL_BD_REPLICATOR_SWITCH_ACTIVE         1314
-#define EL_BD_CONVEYOR_LEFT                    1315
-#define EL_BD_CONVEYOR_LEFT_ACTIVE             1316
-#define EL_BD_CONVEYOR_RIGHT                   1317
-#define EL_BD_CONVEYOR_RIGHT_ACTIVE            1318
-#define EL_BD_CONVEYOR_SWITCH                  1319
-#define EL_BD_CONVEYOR_SWITCH_ACTIVE           1320
-#define EL_BD_CONVEYOR_DIR_SWITCH              1321
-#define EL_BD_CONVEYOR_DIR_SWITCH_ACTIVE       1322
-#define EL_BD_GRAVITY_SWITCH                   1323
-#define EL_BD_GRAVITY_SWITCH_ACTIVE            1324
-#define EL_BD_ACID                             1325
-#define EL_BD_BOX                              1326
-#define EL_BD_TIME_PENALTY                     1327
-#define EL_BD_GRAVESTONE                       1328
-#define EL_BD_CLOCK                            1329
-#define EL_BD_POT                              1330
-#define EL_BD_PNEUMATIC_HAMMER                 1331
-#define EL_BD_TELEPORTER                       1332
-#define EL_BD_SKELETON                         1333
-#define EL_BD_WATER                            1334
-#define EL_BD_KEY_1                            1335
-#define EL_BD_KEY_2                            1336
-#define EL_BD_KEY_3                            1337
-#define EL_BD_GATE_1                           1338
-#define EL_BD_GATE_2                           1339
-#define EL_BD_GATE_3                           1340
-#define EL_BD_LAVA                             1341
-#define EL_BD_SWEET                            1342
-#define EL_BD_VOODOO_DOLL                      1343
-#define EL_BD_SLIME                            1344
-#define EL_BD_WAITING_ROCK                     1345
-#define EL_BD_CHASING_ROCK                     1346
-#define EL_BD_GHOST                            1347
-#define EL_BD_COW                              1348
-#define EL_BD_COW_LEFT                         1349
-#define EL_BD_COW_UP                           1350
-#define EL_BD_COW_RIGHT                                1351
-#define EL_BD_COW_DOWN                         1352
-#define EL_BD_BUTTERFLY_2                      1353
-#define EL_BD_BUTTERFLY_2_RIGHT                        1354
-#define EL_BD_BUTTERFLY_2_UP                   1355
-#define EL_BD_BUTTERFLY_2_LEFT                 1356
-#define EL_BD_BUTTERFLY_2_DOWN                 1357
-#define EL_BD_FIREFLY_2                                1358
-#define EL_BD_FIREFLY_2_RIGHT                  1359
-#define EL_BD_FIREFLY_2_UP                     1360
-#define EL_BD_FIREFLY_2_LEFT                   1361
-#define EL_BD_FIREFLY_2_DOWN                   1362
-#define EL_BD_STONEFLY                         1363
-#define EL_BD_STONEFLY_RIGHT                   1364
-#define EL_BD_STONEFLY_UP                      1365
-#define EL_BD_STONEFLY_LEFT                    1366
-#define EL_BD_STONEFLY_DOWN                    1367
-#define EL_BD_BITER                            1368
-#define EL_BD_BITER_RIGHT                      1369
-#define EL_BD_BITER_UP                         1370
-#define EL_BD_BITER_LEFT                       1371
-#define EL_BD_BITER_DOWN                       1372
-#define EL_BD_DRAGONFLY                                1373
-#define EL_BD_DRAGONFLY_RIGHT                  1374
-#define EL_BD_DRAGONFLY_UP                     1375
-#define EL_BD_DRAGONFLY_LEFT                   1376
-#define EL_BD_DRAGONFLY_DOWN                   1377
-#define EL_BD_BOMB                             1378
-#define EL_BD_NITRO_PACK                       1379
-#define EL_BD_PLAYER                           1380
-#define EL_BD_PLAYER_WITH_BOMB                 1381
-#define EL_BD_PLAYER_WITH_ROCKET_LAUNCHER      1382
-#define EL_BD_PLAYER_GLUED                     1383
-#define EL_BD_PLAYER_STIRRING                  1384
-#define EL_BD_ROCKET_LAUNCHER                  1385
-#define EL_BD_ROCKET                           1386
-#define EL_BD_ROCKET_RIGHT                     1387
-#define EL_BD_ROCKET_UP                                1388
-#define EL_BD_ROCKET_LEFT                      1389
-#define EL_BD_ROCKET_DOWN                      1390
-#define EL_BD_FAKE_BONUS                       1391
-#define EL_BD_COVERED                          1392
+#define EL_BD_AMOEBA_1                         1302
+#define EL_BD_AMOEBA_2                         1303
+#define EL_BD_BLADDER                          1304
+#define EL_BD_BLADDER_SPENDER                  1305
+#define EL_BD_CREATURE_SWITCH                  1306
+#define EL_BD_CREATURE_SWITCH_ACTIVE           1307
+#define EL_BD_BITER_SWITCH_1                   1308
+#define EL_BD_BITER_SWITCH_2                   1309
+#define EL_BD_BITER_SWITCH_3                   1310
+#define EL_BD_BITER_SWITCH_4                   1311
+#define EL_BD_REPLICATOR                       1312
+#define EL_BD_REPLICATOR_ACTIVE                        1313
+#define EL_BD_REPLICATOR_SWITCH                        1314
+#define EL_BD_REPLICATOR_SWITCH_ACTIVE         1315
+#define EL_BD_CONVEYOR_LEFT                    1316
+#define EL_BD_CONVEYOR_LEFT_ACTIVE             1317
+#define EL_BD_CONVEYOR_RIGHT                   1318
+#define EL_BD_CONVEYOR_RIGHT_ACTIVE            1319
+#define EL_BD_CONVEYOR_SWITCH                  1320
+#define EL_BD_CONVEYOR_SWITCH_ACTIVE           1321
+#define EL_BD_CONVEYOR_DIR_SWITCH              1322
+#define EL_BD_CONVEYOR_DIR_SWITCH_ACTIVE       1323
+#define EL_BD_GRAVITY_SWITCH                   1324
+#define EL_BD_GRAVITY_SWITCH_ACTIVE            1325
+#define EL_BD_ACID                             1326
+#define EL_BD_BOX                              1327
+#define EL_BD_TIME_PENALTY                     1328
+#define EL_BD_GRAVESTONE                       1329
+#define EL_BD_CLOCK                            1330
+#define EL_BD_POT                              1331
+#define EL_BD_PNEUMATIC_HAMMER                 1332
+#define EL_BD_TELEPORTER                       1333
+#define EL_BD_SKELETON                         1334
+#define EL_BD_WATER                            1335
+#define EL_BD_KEY_1                            1336
+#define EL_BD_KEY_2                            1337
+#define EL_BD_KEY_3                            1338
+#define EL_BD_GATE_1                           1339
+#define EL_BD_GATE_2                           1340
+#define EL_BD_GATE_3                           1341
+#define EL_BD_LAVA                             1342
+#define EL_BD_SWEET                            1343
+#define EL_BD_VOODOO_DOLL                      1344
+#define EL_BD_SLIME                            1345
+#define EL_BD_WAITING_ROCK                     1346
+#define EL_BD_CHASING_ROCK                     1347
+#define EL_BD_GHOST                            1348
+#define EL_BD_COW                              1349
+#define EL_BD_COW_LEFT                         1350
+#define EL_BD_COW_UP                           1351
+#define EL_BD_COW_RIGHT                                1352
+#define EL_BD_COW_DOWN                         1353
+#define EL_BD_BUTTERFLY_1                      1354
+#define EL_BD_BUTTERFLY_1_RIGHT                        1355
+#define EL_BD_BUTTERFLY_1_UP                   1356
+#define EL_BD_BUTTERFLY_1_LEFT                 1357
+#define EL_BD_BUTTERFLY_1_DOWN                 1358
+#define EL_BD_BUTTERFLY_2                      1359
+#define EL_BD_BUTTERFLY_2_RIGHT                        1360
+#define EL_BD_BUTTERFLY_2_UP                   1361
+#define EL_BD_BUTTERFLY_2_LEFT                 1362
+#define EL_BD_BUTTERFLY_2_DOWN                 1363
+#define EL_BD_FIREFLY_1                                1364
+#define EL_BD_FIREFLY_1_RIGHT                  1365
+#define EL_BD_FIREFLY_1_UP                     1366
+#define EL_BD_FIREFLY_1_LEFT                   1367
+#define EL_BD_FIREFLY_1_DOWN                   1368
+#define EL_BD_FIREFLY_2                                1369
+#define EL_BD_FIREFLY_2_RIGHT                  1370
+#define EL_BD_FIREFLY_2_UP                     1371
+#define EL_BD_FIREFLY_2_LEFT                   1372
+#define EL_BD_FIREFLY_2_DOWN                   1373
+#define EL_BD_STONEFLY                         1374
+#define EL_BD_STONEFLY_RIGHT                   1375
+#define EL_BD_STONEFLY_UP                      1376
+#define EL_BD_STONEFLY_LEFT                    1377
+#define EL_BD_STONEFLY_DOWN                    1378
+#define EL_BD_BITER                            1379
+#define EL_BD_BITER_RIGHT                      1380
+#define EL_BD_BITER_UP                         1381
+#define EL_BD_BITER_LEFT                       1382
+#define EL_BD_BITER_DOWN                       1383
+#define EL_BD_DRAGONFLY                                1384
+#define EL_BD_DRAGONFLY_RIGHT                  1385
+#define EL_BD_DRAGONFLY_UP                     1386
+#define EL_BD_DRAGONFLY_LEFT                   1387
+#define EL_BD_DRAGONFLY_DOWN                   1388
+#define EL_BD_BOMB                             1389
+#define EL_BD_NITRO_PACK                       1390
+#define EL_BD_PLAYER                           1391
+#define EL_BD_PLAYER_WITH_BOMB                 1392
+#define EL_BD_PLAYER_WITH_ROCKET_LAUNCHER      1393
+#define EL_BD_PLAYER_GLUED                     1394
+#define EL_BD_PLAYER_STIRRING                  1395
+#define EL_BD_ROCKET_LAUNCHER                  1396
+#define EL_BD_ROCKET                           1397
+#define EL_BD_ROCKET_RIGHT                     1398
+#define EL_BD_ROCKET_UP                                1399
+#define EL_BD_ROCKET_LEFT                      1400
+#define EL_BD_ROCKET_DOWN                      1401
+#define EL_BD_FAKE_BONUS                       1402
+#define EL_BD_COVERED                          1403
+#define EL_BD_WALL_NATIVE                      1404
+#define EL_BD_ROCK_NATIVE                      1405
+#define EL_BD_DIAMOND_NATIVE                   1406
+#define EL_BD_MAGIC_WALL_NATIVE                        1407
 
 // BD style elements ("effects"; mostly runtime elements, but can also be stored in level file)
-#define EL_BD_SAND_BALL_FALLING                        1393
-#define EL_BD_SAND_LOOSE_FALLING               1394
-#define EL_BD_ROCK_FALLING                     1395
-#define EL_BD_FLYING_ROCK_FLYING               1396
-#define EL_BD_MEGA_ROCK_FALLING                        1397
-#define EL_BD_DIAMOND_FALLING                  1398
-#define EL_BD_FLYING_DIAMOND_FLYING            1399
-#define EL_BD_NUT_FALLING                      1400
-#define EL_BD_FALLING_WALL_FALLING             1401
-#define EL_BD_NITRO_PACK_FALLING               1402
-#define EL_BD_WATER_1                          1403
-#define EL_BD_WATER_2                          1404
-#define EL_BD_WATER_3                          1405
-#define EL_BD_WATER_4                          1406
-#define EL_BD_WATER_5                          1407
-#define EL_BD_WATER_6                          1408
-#define EL_BD_WATER_7                          1409
-#define EL_BD_WATER_8                          1410
-#define EL_BD_WATER_9                          1411
-#define EL_BD_WATER_10                         1412
-#define EL_BD_WATER_11                         1413
-#define EL_BD_WATER_12                         1414
-#define EL_BD_WATER_13                         1415
-#define EL_BD_WATER_14                         1416
-#define EL_BD_WATER_15                         1417
-#define EL_BD_WATER_16                         1418
-#define EL_BD_COW_ENCLOSED_1                   1419
-#define EL_BD_COW_ENCLOSED_2                   1420
-#define EL_BD_COW_ENCLOSED_3                   1421
-#define EL_BD_COW_ENCLOSED_4                   1422
-#define EL_BD_COW_ENCLOSED_5                   1423
-#define EL_BD_COW_ENCLOSED_6                   1424
-#define EL_BD_COW_ENCLOSED_7                   1425
-#define EL_BD_BLADDER_1                                1426
-#define EL_BD_BLADDER_2                                1427
-#define EL_BD_BLADDER_3                                1428
-#define EL_BD_BLADDER_4                                1429
-#define EL_BD_BLADDER_5                                1430
-#define EL_BD_BLADDER_6                                1431
-#define EL_BD_BLADDER_7                                1432
-#define EL_BD_BLADDER_8                                1433
-#define EL_BD_PLAYER_GROWING_1                 1434
-#define EL_BD_PLAYER_GROWING_2                 1435
-#define EL_BD_PLAYER_GROWING_3                 1436
-#define EL_BD_BOMB_TICKING_1                   1437
-#define EL_BD_BOMB_TICKING_2                   1438
-#define EL_BD_BOMB_TICKING_3                   1439
-#define EL_BD_BOMB_TICKING_4                   1440
-#define EL_BD_BOMB_TICKING_5                   1441
-#define EL_BD_BOMB_TICKING_6                   1442
-#define EL_BD_BOMB_TICKING_7                   1443
-#define EL_BD_CLOCK_GROWING_1                  1444
-#define EL_BD_CLOCK_GROWING_2                  1445
-#define EL_BD_CLOCK_GROWING_3                  1446
-#define EL_BD_CLOCK_GROWING_4                  1447
-#define EL_BD_DIAMOND_GROWING_1                        1448
-#define EL_BD_DIAMOND_GROWING_2                        1449
-#define EL_BD_DIAMOND_GROWING_3                        1450
-#define EL_BD_DIAMOND_GROWING_4                        1451
-#define EL_BD_DIAMOND_GROWING_5                        1452
-#define EL_BD_EXPLODING_1                      1453
-#define EL_BD_EXPLODING_2                      1454
-#define EL_BD_EXPLODING_3                      1455
-#define EL_BD_EXPLODING_4                      1456
-#define EL_BD_EXPLODING_5                      1457
-#define EL_BD_ROCK_GROWING_1                   1458
-#define EL_BD_ROCK_GROWING_2                   1459
-#define EL_BD_ROCK_GROWING_3                   1460
-#define EL_BD_ROCK_GROWING_4                   1461
-#define EL_BD_STEELWALL_GROWING_1              1462
-#define EL_BD_STEELWALL_GROWING_2              1463
-#define EL_BD_STEELWALL_GROWING_3              1464
-#define EL_BD_STEELWALL_GROWING_4              1465
-#define EL_BD_GHOST_EXPLODING_1                        1466
-#define EL_BD_GHOST_EXPLODING_2                        1467
-#define EL_BD_GHOST_EXPLODING_3                        1468
-#define EL_BD_GHOST_EXPLODING_4                        1469
-#define EL_BD_BOMB_EXPLODING_1                 1470
-#define EL_BD_BOMB_EXPLODING_2                 1471
-#define EL_BD_BOMB_EXPLODING_3                 1472
-#define EL_BD_BOMB_EXPLODING_4                 1473
-#define EL_BD_NITRO_PACK_EXPLODING             1474
-#define EL_BD_NITRO_PACK_EXPLODING_1           1475
-#define EL_BD_NITRO_PACK_EXPLODING_2           1476
-#define EL_BD_NITRO_PACK_EXPLODING_3           1477
-#define EL_BD_NITRO_PACK_EXPLODING_4           1478
-#define EL_BD_AMOEBA_2_EXPLODING_1             1479
-#define EL_BD_AMOEBA_2_EXPLODING_2             1480
-#define EL_BD_AMOEBA_2_EXPLODING_3             1481
-#define EL_BD_AMOEBA_2_EXPLODING_4             1482
-#define EL_BD_NUT_BREAKING_1                   1483
-#define EL_BD_NUT_BREAKING_2                   1484
-#define EL_BD_NUT_BREAKING_3                   1485
-#define EL_BD_NUT_BREAKING_4                   1486
-#define EL_BD_END                              EL_BD_NUT_BREAKING_4
-
-#define EL_BD_RUNTIME_START                    EL_BD_SAND_BALL_FALLING
-#define EL_BD_RUNTIME_END                      EL_BD_NUT_BREAKING_4
-
-#define NUM_FILE_ELEMENTS                      1487
+#define EL_BD_NATIVE_RUNTIME_START             1408
+#define EL_BD_SAND_BALL_FALLING                        EL_BD_NATIVE_RUNTIME_START
+#define EL_BD_SAND_LOOSE_FALLING               1409
+#define EL_BD_ROCK_NATIVE_FALLING              1410
+#define EL_BD_FLYING_ROCK_FLYING               1411
+#define EL_BD_MEGA_ROCK_FALLING                        1412
+#define EL_BD_DIAMOND_NATIVE_FALLING           1413
+#define EL_BD_FLYING_DIAMOND_FLYING            1414
+#define EL_BD_NUT_FALLING                      1415
+#define EL_BD_FALLING_WALL_FALLING             1416
+#define EL_BD_NITRO_PACK_FALLING               1417
+#define EL_BD_WATER_1                          1418
+#define EL_BD_WATER_2                          1419
+#define EL_BD_WATER_3                          1420
+#define EL_BD_WATER_4                          1421
+#define EL_BD_WATER_5                          1422
+#define EL_BD_WATER_6                          1423
+#define EL_BD_WATER_7                          1424
+#define EL_BD_WATER_8                          1425
+#define EL_BD_WATER_9                          1426
+#define EL_BD_WATER_10                         1427
+#define EL_BD_WATER_11                         1428
+#define EL_BD_WATER_12                         1429
+#define EL_BD_WATER_13                         1430
+#define EL_BD_WATER_14                         1431
+#define EL_BD_WATER_15                         1432
+#define EL_BD_WATER_16                         1433
+#define EL_BD_COW_ENCLOSED_1                   1434
+#define EL_BD_COW_ENCLOSED_2                   1435
+#define EL_BD_COW_ENCLOSED_3                   1436
+#define EL_BD_COW_ENCLOSED_4                   1437
+#define EL_BD_COW_ENCLOSED_5                   1438
+#define EL_BD_COW_ENCLOSED_6                   1439
+#define EL_BD_COW_ENCLOSED_7                   1440
+#define EL_BD_BLADDER_1                                1441
+#define EL_BD_BLADDER_2                                1442
+#define EL_BD_BLADDER_3                                1443
+#define EL_BD_BLADDER_4                                1444
+#define EL_BD_BLADDER_5                                1445
+#define EL_BD_BLADDER_6                                1446
+#define EL_BD_BLADDER_7                                1447
+#define EL_BD_BLADDER_8                                1448
+#define EL_BD_PLAYER_GROWING_1                 1449
+#define EL_BD_PLAYER_GROWING_2                 1450
+#define EL_BD_PLAYER_GROWING_3                 1451
+#define EL_BD_BOMB_TICKING_1                   1452
+#define EL_BD_BOMB_TICKING_2                   1453
+#define EL_BD_BOMB_TICKING_3                   1454
+#define EL_BD_BOMB_TICKING_4                   1455
+#define EL_BD_BOMB_TICKING_5                   1456
+#define EL_BD_BOMB_TICKING_6                   1457
+#define EL_BD_BOMB_TICKING_7                   1458
+#define EL_BD_CLOCK_GROWING_1                  1459
+#define EL_BD_CLOCK_GROWING_2                  1460
+#define EL_BD_CLOCK_GROWING_3                  1461
+#define EL_BD_CLOCK_GROWING_4                  1462
+#define EL_BD_DIAMOND_NATIVE_GROWING_1         1463
+#define EL_BD_DIAMOND_NATIVE_GROWING_2         1464
+#define EL_BD_DIAMOND_NATIVE_GROWING_3         1465
+#define EL_BD_DIAMOND_NATIVE_GROWING_4         1466
+#define EL_BD_DIAMOND_NATIVE_GROWING_5         1467
+#define EL_BD_EXPLODING_1                      1468
+#define EL_BD_EXPLODING_2                      1469
+#define EL_BD_EXPLODING_3                      1470
+#define EL_BD_EXPLODING_4                      1471
+#define EL_BD_EXPLODING_5                      1472
+#define EL_BD_ROCK_NATIVE_GROWING_1            1473
+#define EL_BD_ROCK_NATIVE_GROWING_2            1474
+#define EL_BD_ROCK_NATIVE_GROWING_3            1475
+#define EL_BD_ROCK_NATIVE_GROWING_4            1476
+#define EL_BD_STEELWALL_GROWING_1              1477
+#define EL_BD_STEELWALL_GROWING_2              1478
+#define EL_BD_STEELWALL_GROWING_3              1479
+#define EL_BD_STEELWALL_GROWING_4              1480
+#define EL_BD_GHOST_EXPLODING_1                        1481
+#define EL_BD_GHOST_EXPLODING_2                        1482
+#define EL_BD_GHOST_EXPLODING_3                        1483
+#define EL_BD_GHOST_EXPLODING_4                        1484
+#define EL_BD_BOMB_EXPLODING_1                 1485
+#define EL_BD_BOMB_EXPLODING_2                 1486
+#define EL_BD_BOMB_EXPLODING_3                 1487
+#define EL_BD_BOMB_EXPLODING_4                 1488
+#define EL_BD_NITRO_PACK_EXPLODING             1489
+#define EL_BD_NITRO_PACK_EXPLODING_1           1490
+#define EL_BD_NITRO_PACK_EXPLODING_2           1491
+#define EL_BD_NITRO_PACK_EXPLODING_3           1492
+#define EL_BD_NITRO_PACK_EXPLODING_4           1493
+#define EL_BD_AMOEBA_2_EXPLODING_1             1494
+#define EL_BD_AMOEBA_2_EXPLODING_2             1495
+#define EL_BD_AMOEBA_2_EXPLODING_3             1496
+#define EL_BD_AMOEBA_2_EXPLODING_4             1497
+#define EL_BD_NUT_BREAKING_1                   1498
+#define EL_BD_NUT_BREAKING_2                   1499
+#define EL_BD_NUT_BREAKING_3                   1500
+#define EL_BD_NUT_BREAKING_4                   1501
+#define EL_BD_NATIVE_RUNTIME_END               EL_BD_NUT_BREAKING_4
+#define EL_BD_NATIVE_END                       EL_BD_NATIVE_RUNTIME_END
+
+#define NUM_FILE_ELEMENTS                      1502
 
 
 // "real" (and therefore drawable) runtime elements
 #define EL_MM_PACMAN_EATING_DOWN               (EL_FIRST_RUNTIME_REAL + 81)
 #define EL_MM_BOMB_ACTIVE                      (EL_FIRST_RUNTIME_REAL + 82)
 #define EL_DF_MINE_ACTIVE                      (EL_FIRST_RUNTIME_REAL + 83)
+#define EL_BD_MAGIC_WALL_NATIVE_ACTIVE         (EL_FIRST_RUNTIME_REAL + 84)
 
-#define NUM_DRAWABLE_ELEMENTS                  (EL_FIRST_RUNTIME_REAL + 84)
+#define NUM_DRAWABLE_ELEMENTS                  (EL_FIRST_RUNTIME_REAL + 85)
 
 #define EL_MM_RUNTIME_START                    EL_MM_EXIT_OPENING
 #define EL_MM_RUNTIME_END                      EL_MM_AMOEBA_WALL_GROWING
 #define EL_MM_LIGHTBALL_YELLOW                 (EL_FIRST_DUMMY + 23)
 #define EL_DEFAULT                             (EL_FIRST_DUMMY + 24)
 #define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 25)
-#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 26)
-#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 27)
-#define EL_MM_DEFAULT                          (EL_FIRST_DUMMY + 28)
-#define EL_GRAPHIC_1                           (EL_FIRST_DUMMY + 29)
-#define EL_GRAPHIC_2                           (EL_FIRST_DUMMY + 30)
-#define EL_GRAPHIC_3                           (EL_FIRST_DUMMY + 31)
-#define EL_GRAPHIC_4                           (EL_FIRST_DUMMY + 32)
-#define EL_GRAPHIC_5                           (EL_FIRST_DUMMY + 33)
-#define EL_GRAPHIC_6                           (EL_FIRST_DUMMY + 34)
-#define EL_GRAPHIC_7                           (EL_FIRST_DUMMY + 35)
-#define EL_GRAPHIC_8                           (EL_FIRST_DUMMY + 36)
-#define EL_BD_GAME_GRAPHICS_COLOR_TEMPLATE     (EL_FIRST_DUMMY + 37)
+#define EL_BD_NATIVE_DEFAULT                   (EL_FIRST_DUMMY + 26)
+#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 27)
+#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 28)
+#define EL_MM_DEFAULT                          (EL_FIRST_DUMMY + 29)
+#define EL_GRAPHIC_1                           (EL_FIRST_DUMMY + 30)
+#define EL_GRAPHIC_2                           (EL_FIRST_DUMMY + 31)
+#define EL_GRAPHIC_3                           (EL_FIRST_DUMMY + 32)
+#define EL_GRAPHIC_4                           (EL_FIRST_DUMMY + 33)
+#define EL_GRAPHIC_5                           (EL_FIRST_DUMMY + 34)
+#define EL_GRAPHIC_6                           (EL_FIRST_DUMMY + 35)
+#define EL_GRAPHIC_7                           (EL_FIRST_DUMMY + 36)
+#define EL_GRAPHIC_8                           (EL_FIRST_DUMMY + 37)
+#define EL_BD_GAME_GRAPHICS_COLOR_TEMPLATE     (EL_FIRST_DUMMY + 38)
 
 // internal elements (only used for internal purposes like copying)
-#define EL_FIRST_INTERNAL                      (EL_FIRST_DUMMY + 38)
+#define EL_FIRST_INTERNAL                      (EL_FIRST_DUMMY + 39)
 
 #define EL_INTERNAL_CLIPBOARD_CUSTOM           (EL_FIRST_INTERNAL + 0)
 #define EL_INTERNAL_CLIPBOARD_CHANGE           (EL_FIRST_INTERNAL + 1)
@@ -3675,6 +3706,7 @@ struct LevelInfo
   boolean bd_magic_wall_wait_hatching; // BD magic wall waits for player's birth
   boolean bd_magic_wall_stops_amoeba;  // BD magic wall can stop amoeba and turn to diamonds
   boolean bd_magic_wall_break_scan;    // BD magic wall setting to implement buggy BD1 behaviour
+  int bd_magic_wall_time;              // BD magic wall time
   int bd_magic_wall_diamond_to;                // BD magic wall turns diamonds to specified element
   int bd_magic_wall_rock_to;           // BD magic wall turns rocks to specified element
   int bd_magic_wall_mega_rock_to;      // BD magic wall turns mega rocks to specified element
@@ -3685,12 +3717,12 @@ struct LevelInfo
   boolean bd_amoeba_wait_for_hatching; // BD amoeba waits for player's birth
   boolean bd_amoeba_start_immediately; // BD amoeba growth starts immediately
   boolean bd_amoeba_2_explode_by_amoeba;// BD amoeba 2 explodes if touched by BD amoeba
-  int bd_amoeba_threshold_too_big;     // BD amoeba turns to stones if threshold reached
-  int bd_amoeba_slow_growth_time;      // BD amoeba slow growth time (in seconds)
-  int bd_amoeba_slow_growth_rate;      // BD amoeba slow growth rate (in percent)
-  int bd_amoeba_fast_growth_rate;      // BD amoeba fast growth rate (in percent)
-  int bd_amoeba_content_too_big;       // BD amoeba changes to this element if too big
-  int bd_amoeba_content_enclosed;      // BD amoeba changes to this element if enclosed
+  int bd_amoeba_1_threshold_too_big;   // BD amoeba 1 turns to stones if threshold reached
+  int bd_amoeba_1_slow_growth_time;    // BD amoeba 1 slow growth time (in seconds)
+  int bd_amoeba_1_slow_growth_rate;    // BD amoeba 1 slow growth rate (in percent)
+  int bd_amoeba_1_fast_growth_rate;    // BD amoeba 1 fast growth rate (in percent)
+  int bd_amoeba_1_content_too_big;     // BD amoeba 1 changes to this element if too big
+  int bd_amoeba_1_content_enclosed;    // BD amoeba 1 changes to this element if enclosed
   int bd_amoeba_2_threshold_too_big;   // BD amoeba 2 turns to stones if threshold reached
   int bd_amoeba_2_slow_growth_time;    // BD amoeba 2 slow growth time (in seconds)
   int bd_amoeba_2_slow_growth_rate;    // BD amoeba 2 slow growth rate (in percent)
@@ -3749,9 +3781,9 @@ struct LevelInfo
   int bd_rock_turns_to_on_impact;      // BD rock changes to specified element on impact
   int bd_diamond_turns_to_on_falling;  // BD diamond changes to specified element when falling
   int bd_diamond_turns_to_on_impact;   // BD diamond changes to specified element on impact
-  int bd_firefly_explodes_to;          // BD firefly explodes to specified element
+  int bd_firefly_1_explodes_to;                // BD firefly 1 explodes to specified element
   int bd_firefly_2_explodes_to;                // BD firefly 2 explodes to specified element
-  int bd_butterfly_explodes_to;                // BD butterfly explodes to specified element
+  int bd_butterfly_1_explodes_to;      // BD butterfly 1 explodes to specified element
   int bd_butterfly_2_explodes_to;      // BD butterfly 2 explodes to specified element
   int bd_stonefly_explodes_to;         // BD stonefly explodes to specified element
   int bd_dragonfly_explodes_to;                // BD dragonfly explodes to specified element
index f672fa86beaea298cf2666efc8f730003cdd3817..10cca3c3cd19c4c182a55926244f706a8dc14c05 100644 (file)
@@ -3858,7 +3858,7 @@ static void PreparePreviewTileBitmap(void)
   int src_x, src_y;
   int element_template = EL_BD_GAME_GRAPHICS_COLOR_TEMPLATE;
   int graphic_template = el2preimg(element_template);
-  int element_default = EL_BD_ROCK;
+  int element_default = EL_BD_ROCK_NATIVE;
   int graphic_default = el2preimg(element_default);
 
   // create special preview bitmap and scale it down to preview tile size
@@ -6030,8 +6030,8 @@ static int getEngineElement_Ext(int element, int game_engine_type, boolean is_dr
   {
     el_empty           = EL_EMPTY;
     el_player          = EL_BD_PLAYER;
-    el_sand            = EL_BD_SAND;
-    el_wall            = EL_BD_WALL;
+    el_sand            = EL_BD_SAND_1;
+    el_wall            = EL_BD_WALL_NATIVE;
     el_steelwall       = EL_BD_STEELWALL;
     el_exit_closed     = EL_BD_EXIT_CLOSED;
   }
@@ -6158,7 +6158,7 @@ bd_object_mapping_list[] =
   },
   {
     O_DIRT,                                    TRUE,
-    EL_BD_SAND,                                        -1, -1
+    EL_BD_SAND_1,                              -1, -1
   },
   {
     O_DIRT_SLOPED_UP_RIGHT,                    TRUE,
@@ -6206,7 +6206,7 @@ bd_object_mapping_list[] =
   },
   {
     O_BRICK,                                   TRUE,
-    EL_BD_WALL,                                        -1, -1
+    EL_BD_WALL_NATIVE,                         -1, -1
   },
   {
     O_BRICK_SLOPED_UP_RIGHT,                   TRUE,
@@ -6230,7 +6230,7 @@ bd_object_mapping_list[] =
   },
   {
     O_MAGIC_WALL,                              TRUE,
-    EL_BD_MAGIC_WALL,                          ACTION_ACTIVE, -1
+    EL_BD_MAGIC_WALL_NATIVE,                   ACTION_ACTIVE, -1
   },
   {
     O_PRE_OUTBOX,                              TRUE,
@@ -6282,15 +6282,15 @@ bd_object_mapping_list[] =
   },
   {
     O_STONE,                                   TRUE,
-    EL_BD_ROCK,                                        -1, -1
+    EL_BD_ROCK_NATIVE,                         -1, -1
   },
   {
     O_STONE_F,                                 TRUE,
-    EL_BD_ROCK_FALLING,                                -1, -1
+    EL_BD_ROCK_NATIVE_FALLING,                 -1, -1
   },
   {
     O_STONE_F,                                 FALSE,
-    EL_BD_ROCK,                                        ACTION_FALLING, -1
+    EL_BD_ROCK_NATIVE,                         ACTION_FALLING, -1
   },
   {
     O_FLYING_STONE,                            TRUE,
@@ -6318,15 +6318,15 @@ bd_object_mapping_list[] =
   },
   {
     O_DIAMOND,                                 TRUE,
-    EL_BD_DIAMOND,                             -1, -1
+    EL_BD_DIAMOND_NATIVE,                      -1, -1
   },
   {
     O_DIAMOND_F,                               TRUE,
-    EL_BD_DIAMOND_FALLING,                     -1, -1
+    EL_BD_DIAMOND_NATIVE_FALLING,              -1, -1
   },
   {
     O_DIAMOND_F,                               FALSE,
-    EL_BD_DIAMOND,                             ACTION_FALLING, -1
+    EL_BD_DIAMOND_NATIVE,                      ACTION_FALLING, -1
   },
   {
     O_FLYING_DIAMOND,                          TRUE,
@@ -6726,7 +6726,7 @@ bd_object_mapping_list[] =
   },
   {
     O_AMOEBA,                                  TRUE,
-    EL_BD_AMOEBA,                              -1, -1
+    EL_BD_AMOEBA_1,                            -1, -1
   },
   {
     O_AMOEBA_2,                                        TRUE,
@@ -6842,19 +6842,19 @@ bd_object_mapping_list[] =
   },
   {
     O_FIREFLY_1,                               TRUE,
-    EL_BD_FIREFLY_LEFT,                                -1, -1
+    EL_BD_FIREFLY_1_LEFT,                      -1, -1
   },
   {
     O_FIREFLY_2,                               TRUE,
-    EL_BD_FIREFLY_UP,                          -1, -1
+    EL_BD_FIREFLY_1_UP,                                -1, -1
   },
   {
     O_FIREFLY_3,                               TRUE,
-    EL_BD_FIREFLY_RIGHT,                       -1, -1
+    EL_BD_FIREFLY_1_RIGHT,                     -1, -1
   },
   {
     O_FIREFLY_4,                               TRUE,
-    EL_BD_FIREFLY_DOWN,                                -1, -1
+    EL_BD_FIREFLY_1_DOWN,                      -1, -1
   },
   {
     O_ALT_FIREFLY_1,                           TRUE,
@@ -6874,19 +6874,19 @@ bd_object_mapping_list[] =
   },
   {
     O_BUTTER_1,                                        TRUE,
-    EL_BD_BUTTERFLY_LEFT,                      -1, -1
+    EL_BD_BUTTERFLY_1_LEFT,                    -1, -1
   },
   {
     O_BUTTER_2,                                        TRUE,
-    EL_BD_BUTTERFLY_UP,                                -1, -1
+    EL_BD_BUTTERFLY_1_UP,                      -1, -1
   },
   {
     O_BUTTER_3,                                        TRUE,
-    EL_BD_BUTTERFLY_RIGHT,                     -1, -1
+    EL_BD_BUTTERFLY_1_RIGHT,                   -1, -1
   },
   {
     O_BUTTER_4,                                        TRUE,
-    EL_BD_BUTTERFLY_DOWN,                      -1, -1
+    EL_BD_BUTTERFLY_1_DOWN,                    -1, -1
   },
   {
     O_ALT_BUTTER_1,                            TRUE,
@@ -7122,43 +7122,43 @@ bd_object_mapping_list[] =
   },
   {
     O_PRE_DIA_1,                               TRUE,
-    EL_BD_DIAMOND_GROWING_1,                   -1, -1
+    EL_BD_DIAMOND_NATIVE_GROWING_1,            -1, -1
   },
   {
     O_PRE_DIA_1,                               FALSE,
-    EL_BD_DIAMOND,                             ACTION_GROWING, -1
+    EL_BD_DIAMOND_NATIVE,                      ACTION_GROWING, -1
   },
   {
     O_PRE_DIA_2,                               TRUE,
-    EL_BD_DIAMOND_GROWING_2,                   -1, -1
+    EL_BD_DIAMOND_NATIVE_GROWING_2,            -1, -1
   },
   {
     O_PRE_DIA_2,                               FALSE,
-    EL_BD_DIAMOND,                             ACTION_GROWING, -1
+    EL_BD_DIAMOND_NATIVE,                      ACTION_GROWING, -1
   },
   {
     O_PRE_DIA_3,                               TRUE,
-    EL_BD_DIAMOND_GROWING_3,                   -1, -1
+    EL_BD_DIAMOND_NATIVE_GROWING_3,            -1, -1
   },
   {
     O_PRE_DIA_3,                               FALSE,
-    EL_BD_DIAMOND,                             ACTION_GROWING, -1
+    EL_BD_DIAMOND_NATIVE,                      ACTION_GROWING, -1
   },
   {
     O_PRE_DIA_4,                               TRUE,
-    EL_BD_DIAMOND_GROWING_4,                   -1, -1
+    EL_BD_DIAMOND_NATIVE_GROWING_4,            -1, -1
   },
   {
     O_PRE_DIA_4,                               FALSE,
-    EL_BD_DIAMOND,                             ACTION_GROWING, -1
+    EL_BD_DIAMOND_NATIVE,                      ACTION_GROWING, -1
   },
   {
     O_PRE_DIA_5,                               TRUE,
-    EL_BD_DIAMOND_GROWING_5,                   -1, -1
+    EL_BD_DIAMOND_NATIVE_GROWING_5,            -1, -1
   },
   {
     O_PRE_DIA_5,                               FALSE,
-    EL_BD_DIAMOND,                             ACTION_GROWING, -1
+    EL_BD_DIAMOND_NATIVE,                      ACTION_GROWING, -1
   },
   {
     O_EXPLODE_1,                               TRUE,
@@ -7202,35 +7202,35 @@ bd_object_mapping_list[] =
   },
   {
     O_PRE_STONE_1,                             TRUE,
-    EL_BD_ROCK_GROWING_1,                      -1, -1
+    EL_BD_ROCK_NATIVE_GROWING_1,               -1, -1
   },
   {
     O_PRE_STONE_1,                             FALSE,
-    EL_BD_ROCK,                                        ACTION_GROWING, -1
+    EL_BD_ROCK_NATIVE,                         ACTION_GROWING, -1
   },
   {
     O_PRE_STONE_2,                             TRUE,
-    EL_BD_ROCK_GROWING_2,                      -1, -1
+    EL_BD_ROCK_NATIVE_GROWING_2,               -1, -1
   },
   {
     O_PRE_STONE_2,                             FALSE,
-    EL_BD_ROCK,                                        ACTION_GROWING, -1
+    EL_BD_ROCK_NATIVE,                         ACTION_GROWING, -1
   },
   {
     O_PRE_STONE_3,                             TRUE,
-    EL_BD_ROCK_GROWING_3,                      -1, -1
+    EL_BD_ROCK_NATIVE_GROWING_3,               -1, -1
   },
   {
     O_PRE_STONE_3,                             FALSE,
-    EL_BD_ROCK,                                        ACTION_GROWING, -1
+    EL_BD_ROCK_NATIVE,                         ACTION_GROWING, -1
   },
   {
     O_PRE_STONE_4,                             TRUE,
-    EL_BD_ROCK_GROWING_4,                      -1, -1
+    EL_BD_ROCK_NATIVE_GROWING_4,               -1, -1
   },
   {
     O_PRE_STONE_4,                             FALSE,
-    EL_BD_ROCK,                                        ACTION_GROWING, -1
+    EL_BD_ROCK_NATIVE,                         ACTION_GROWING, -1
   },
   {
     O_PRE_STEEL_1,                             TRUE,
@@ -7553,7 +7553,7 @@ bd_object_mapping_list[] =
   },
   {
     O_MAGIC_WALL_ACTIVE,                       FALSE,
-    EL_BD_MAGIC_WALL_ACTIVE,                   -1, -1
+    EL_BD_MAGIC_WALL_NATIVE_ACTIVE,            -1, -1
   },
   {
     O_REPLICATOR_ACTIVE,                       FALSE,