From: Holger Schemel Date: Mon, 22 Apr 2024 16:47:32 +0000 (+0200) Subject: added all BD engine elements shared with R'n'D engine as native elements X-Git-Tag: 4.4.0.0-test-1~25 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=33aea5bc32e267538f3993b27774c636211bca1d;p=rocksndiamonds.git added all BD engine elements shared with R'n'D engine as native elements 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. --- diff --git a/src/conf_gfx.c b/src/conf_gfx.c index 01350173..da266430 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -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" }, diff --git a/src/conf_snd.c b/src/conf_snd.c index 06b34468..8fa99b59 100644 --- a/src/conf_snd.c +++ b/src/conf_snd.c @@ -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 }, diff --git a/src/editor.c b/src/editor.c index 60f12d40..9fa1c4de 100644 --- a/src/editor.c +++ b/src/editor.c @@ -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 }, diff --git a/src/files.c b/src/files.c index 60d21c32..cadbc50d 100644 --- a/src/files.c +++ b/src/files.c @@ -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); diff --git a/src/game.c b/src/game.c index 288ff5f1..94372a06 100644 --- a/src/game.c +++ b/src/game.c @@ -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: diff --git a/src/init.c b/src/init.c index 15044548..93d77928 100644 --- a/src/init.c +++ b/src/init.c @@ -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) diff --git a/src/main.c b/src/main.c index b278a0df..dde0382e 100644 --- a/src/main.c +++ b/src/main.c @@ -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", diff --git a/src/main.h b/src/main.h index 063ce800..9a21e956 100644 --- a/src/main.h +++ b/src/main.h @@ -911,6 +911,12 @@ (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 || \ @@ -923,6 +929,12 @@ (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 || \ @@ -965,8 +977,11 @@ (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 || \ @@ -2067,10 +2082,10 @@ #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 @@ -2118,199 +2133,213 @@ #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 @@ -2400,8 +2429,9 @@ #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 @@ -2465,21 +2495,22 @@ #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 diff --git a/src/tools.c b/src/tools.c index f672fa86..10cca3c3 100644 --- a/src/tools.c +++ b/src/tools.c @@ -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,