X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=a91aba1d93ac3ea7e1dfe1429723b27b024cbdf9;hb=b6b5d3fe94b178e8e48e9c51b61f3b1b8383a42f;hp=e4c9d8a66de5c1022e37ab1344b15a53db090153;hpb=f77a818405126aac5510ed0dc09b2cb6bc3deaca;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index e4c9d8a6..a91aba1d 100644 --- a/src/editor.c +++ b/src/editor.c @@ -583,6 +583,20 @@ enum GADGET_ID_BD_NUT_CONTENT, GADGET_ID_BD_EXPANDING_WALL_LOOKS_LIKE, GADGET_ID_BD_SAND_LOOKS_LIKE, + GADGET_ID_BD_ROCK_TURNS_TO_ON_FALLING, + 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_2_EXPLODES_TO, + GADGET_ID_BD_BUTTERFLY_EXPLODES_TO, + GADGET_ID_BD_BUTTERFLY_2_EXPLODES_TO, + GADGET_ID_BD_STONEFLY_EXPLODES_TO, + GADGET_ID_BD_DRAGONFLY_EXPLODES_TO, + GADGET_ID_BD_DIAMOND_BIRTH_TURNS_TO, + GADGET_ID_BD_BOMB_EXPLOSION_TURNS_TO, + GADGET_ID_BD_NITRO_EXPLOSION_TURNS_TO, + GADGET_ID_BD_EXPLOSION_TURNS_TO, GADGET_ID_START_ELEMENT, GADGET_ID_ARTWORK_ELEMENT, GADGET_ID_EXPLOSION_ELEMENT, @@ -701,7 +715,6 @@ enum GADGET_ID_BD_LINE_SHIFTING_BORDERS, GADGET_ID_BD_SCAN_FIRST_AND_LAST_ROW, GADGET_ID_BD_SHORT_EXPLOSIONS, - GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_STICK_ELEMENT, GADGET_ID_EM_SLIPPERY_GEMS, GADGET_ID_EM_EXPLODES_BY_FIRE, @@ -736,6 +749,7 @@ enum GADGET_ID_BD_DIAGONAL_MOVEMENTS, GADGET_ID_BD_TOPMOST_PLAYER_ACTIVE, GADGET_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET, + GADGET_ID_BD_MAGIC_WALL_ZERO_INFINITE, GADGET_ID_BD_MAGIC_WALL_WAIT_HATCHING, GADGET_ID_BD_MAGIC_WALL_STOPS_AMOEBA, GADGET_ID_BD_AMOEBA_WAIT_FOR_HATCHING, @@ -752,9 +766,11 @@ enum GADGET_ID_BD_CONVEYOR_BELTS_CHANGED, GADGET_ID_BD_WATER_CANNOT_FLOW_DOWN, GADGET_ID_BD_HAMMER_WALLS_REAPPEAR, + GADGET_ID_BD_INFINITE_ROCKETS, GADGET_ID_BD_CREATURES_START_BACKWARDS, GADGET_ID_BD_CREATURES_TURN_ON_HATCHING, GADGET_ID_BD_GRAVITY_SWITCH_ACTIVE, + GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_ENVELOPE_AUTOWRAP, GADGET_ID_ENVELOPE_CENTERED, GADGET_ID_MM_LASER_RED, @@ -1056,7 +1072,6 @@ enum ED_CHECKBUTTON_ID_BD_LINE_SHIFTING_BORDERS, ED_CHECKBUTTON_ID_BD_SCAN_FIRST_AND_LAST_ROW, ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS, - ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, ED_CHECKBUTTON_ID_STICK_ELEMENT, ED_CHECKBUTTON_ID_EM_SLIPPERY_GEMS, ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE, @@ -1091,6 +1106,7 @@ enum ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS, ED_CHECKBUTTON_ID_BD_TOPMOST_PLAYER_ACTIVE, ED_CHECKBUTTON_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET, + ED_CHECKBUTTON_ID_BD_MAGIC_WALL_ZERO_INFINITE, ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING, ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA, ED_CHECKBUTTON_ID_BD_AMOEBA_WAIT_FOR_HATCHING, @@ -1107,9 +1123,11 @@ enum ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_CHANGED, ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN, ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR, + ED_CHECKBUTTON_ID_BD_INFINITE_ROCKETS, ED_CHECKBUTTON_ID_BD_CREATURES_START_BACKWARDS, ED_CHECKBUTTON_ID_BD_CREATURES_TURN_ON_HATCHING, ED_CHECKBUTTON_ID_BD_GRAVITY_SWITCH_ACTIVE, + ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP, ED_CHECKBUTTON_ID_ENVELOPE_CENTERED, ED_CHECKBUTTON_ID_MM_LASER_RED, @@ -1159,7 +1177,7 @@ enum #define ED_CHECKBUTTON_ID_EDITOR_LAST ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE_2 #define ED_CHECKBUTTON_ID_ENGINE_FIRST ED_CHECKBUTTON_ID_BD_INTERMISSION -#define ED_CHECKBUTTON_ID_ENGINE_LAST ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL +#define ED_CHECKBUTTON_ID_ENGINE_LAST ED_CHECKBUTTON_ID_BD_SHORT_EXPLOSIONS #define ED_CHECKBUTTON_ID_CUSTOM1_FIRST ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC #define ED_CHECKBUTTON_ID_CUSTOM1_LAST ED_CHECKBUTTON_ID_CUSTOM_INDESTRUCTIBLE @@ -1232,6 +1250,20 @@ enum ED_DRAWING_ID_BD_NUT_CONTENT, ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE, ED_DRAWING_ID_BD_SAND_LOOKS_LIKE, + ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_FALLING, + 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_2_EXPLODES_TO, + ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO, + ED_DRAWING_ID_BD_BUTTERFLY_2_EXPLODES_TO, + ED_DRAWING_ID_BD_STONEFLY_EXPLODES_TO, + ED_DRAWING_ID_BD_DRAGONFLY_EXPLODES_TO, + ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO, + ED_DRAWING_ID_BD_BOMB_EXPLOSION_TURNS_TO, + ED_DRAWING_ID_BD_NITRO_EXPLOSION_TURNS_TO, + ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO, ED_DRAWING_ID_START_ELEMENT, ED_DRAWING_ID_ARTWORK_ELEMENT, ED_DRAWING_ID_EXPLOSION_ELEMENT, @@ -3518,14 +3550,6 @@ static struct NULL, NULL, "Short explosions", "Use four game cycles for explosions" }, - { - ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, - ED_LEVEL_SETTINGS_XPOS(0), ED_LEVEL_SETTINGS_YPOS(9), - GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_NONE, - &level.bd_gravity_affects_all, - NULL, NULL, - "Gravity change affects everything", "Gravity affects all falling objects" - }, // ---------- element settings: configure (various elements) ---------------- @@ -3802,8 +3826,16 @@ static struct "Mega rocks pushable with sweet", "Push mega rocks after eating sweet" }, { - ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING, + ED_CHECKBUTTON_ID_BD_MAGIC_WALL_ZERO_INFINITE, ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2), + GADGET_ID_BD_MAGIC_WALL_ZERO_INFINITE, GADGET_ID_NONE, + &level.bd_magic_wall_zero_infinite, + NULL, NULL, + "Run forever if duration is zero", "Run infinitely if timer is zero" + }, + { + ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3), GADGET_ID_BD_MAGIC_WALL_WAIT_HATCHING, GADGET_ID_NONE, &level.bd_magic_wall_wait_hatching, NULL, NULL, @@ -3811,11 +3843,11 @@ static struct }, { ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA, - ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3), + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4), GADGET_ID_BD_MAGIC_WALL_STOPS_AMOEBA, GADGET_ID_NONE, &level.bd_magic_wall_stops_amoeba, NULL, NULL, - "Turn amoeba to diamonds", "Activation changes amoeba to diamonds" + "Stop amoeba and turn to diamonds", "Activation changes amoeba to diamonds" }, { ED_CHECKBUTTON_ID_BD_AMOEBA_WAIT_FOR_HATCHING, @@ -3929,6 +3961,14 @@ static struct NULL, NULL, "Hammered walls reappear", "Hammered walls reappear after delay" }, + { + ED_CHECKBUTTON_ID_BD_INFINITE_ROCKETS, + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), + GADGET_ID_BD_INFINITE_ROCKETS, GADGET_ID_NONE, + &level.bd_infinite_rockets, + NULL, NULL, + "Infinite rockets", "Rocket launcher has infinite rockets" + }, { ED_CHECKBUTTON_ID_BD_CREATURES_START_BACKWARDS, ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0), @@ -3939,11 +3979,11 @@ static struct }, { ED_CHECKBUTTON_ID_BD_CREATURES_TURN_ON_HATCHING, - ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), + ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2), GADGET_ID_BD_CREATURES_TURN_ON_HATCHING, GADGET_ID_NONE, &level.bd_creatures_turn_on_hatching, NULL, NULL, - "Creatures turn on hatching", "Creatures change direction on hatching" + "Creatures auto turn on hatching", "Creatures change direction on hatching" }, { ED_CHECKBUTTON_ID_BD_GRAVITY_SWITCH_ACTIVE, @@ -3953,6 +3993,14 @@ static struct NULL, NULL, "Gravity switch active at start", "Gravity switch starts in active state" }, + { + ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL, + ED_LEVEL_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3), + GADGET_ID_BD_GRAVITY_AFFECTS_ALL, GADGET_ID_NONE, + &level.bd_gravity_affects_all, + NULL, NULL, + "Gravity change affects everything", "Gravity affects all falling objects" + }, { ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP, ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1), @@ -4439,7 +4487,7 @@ static struct { ED_DRAWING_ID_BD_MAGIC_WALL_DIAMOND_TO, - ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(4), + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(5), ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, GADGET_ID_BD_MAGIC_WALL_DIAMOND_TO, GADGET_ID_NONE, &level.bd_magic_wall_diamond_to, 1, 1, @@ -4447,7 +4495,7 @@ static struct }, { ED_DRAWING_ID_BD_MAGIC_WALL_ROCK_TO, - ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(5), + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6), ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, GADGET_ID_BD_MAGIC_WALL_ROCK_TO, GADGET_ID_NONE, &level.bd_magic_wall_rock_to, 1, 1, @@ -4455,7 +4503,7 @@ static struct }, { ED_DRAWING_ID_BD_MAGIC_WALL_MEGA_ROCK_TO, - ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(6), + 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_MAGIC_WALL_MEGA_ROCK_TO, GADGET_ID_NONE, &level.bd_magic_wall_mega_rock_to, 1, 1, @@ -4463,7 +4511,7 @@ static struct }, { ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO, - ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(7), + 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_MAGIC_WALL_NUT_TO, GADGET_ID_NONE, &level.bd_magic_wall_nut_to, 1, 1, @@ -4471,7 +4519,7 @@ static struct }, { ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO, - ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(8), + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(9), ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, GADGET_ID_BD_MAGIC_WALL_NITRO_PACK_TO, GADGET_ID_NONE, &level.bd_magic_wall_nitro_pack_to, 1, 1, @@ -4479,7 +4527,7 @@ static struct }, { ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO, - ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(9), + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(10), ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, GADGET_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO, GADGET_ID_NONE, &level.bd_magic_wall_flying_diamond_to, 1, 1, @@ -4487,7 +4535,7 @@ static struct }, { ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_ROCK_TO, - ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(10), + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(11), ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, GADGET_ID_BD_MAGIC_WALL_FLYING_ROCK_TO, GADGET_ID_NONE, &level.bd_magic_wall_flying_rock_to, 1, 1, @@ -4651,6 +4699,118 @@ static struct &level.bd_sand_looks_like, 1, 1, "Use graphic of element:", NULL, NULL, NULL, "Sand looks like this element" }, + { + ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_FALLING, + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2), + ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, + GADGET_ID_BD_ROCK_TURNS_TO_ON_FALLING, GADGET_ID_NONE, + &level.bd_rock_turns_to_on_falling, 1, 1, + "Turns to when falling:", NULL, NULL, NULL, "Changes to this when falling starts" + }, + { + ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT, + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3), + ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, + GADGET_ID_BD_ROCK_TURNS_TO_ON_IMPACT, GADGET_ID_NONE, + &level.bd_rock_turns_to_on_impact, 1, 1, + "Turns to on impact:", NULL, NULL, NULL, "Changes to this when falling stops" + }, + { + ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING, + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(2), + ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, + GADGET_ID_BD_DIAMOND_TURNS_TO_ON_FALLING, GADGET_ID_NONE, + &level.bd_diamond_turns_to_on_falling, 1, 1, + "Turns to when falling:", NULL, NULL, NULL, "Changes to this when falling starts" + }, + { + ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT, + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(3), + ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, + GADGET_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT, GADGET_ID_NONE, + &level.bd_diamond_turns_to_on_impact, 1, 1, + "Turns to on impact:", NULL, NULL, NULL, "Changes to this when falling stops" + }, + { + ED_DRAWING_ID_BD_FIREFLY_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, + "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding" + }, + { + ED_DRAWING_ID_BD_FIREFLY_2_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_2_EXPLODES_TO, GADGET_ID_NONE, + &level.bd_firefly_2_explodes_to, 1, 1, + "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding" + }, + { + ED_DRAWING_ID_BD_BUTTERFLY_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, + "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding" + }, + { + ED_DRAWING_ID_BD_BUTTERFLY_2_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_2_EXPLODES_TO, GADGET_ID_NONE, + &level.bd_butterfly_2_explodes_to, 1, 1, + "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding" + }, + { + ED_DRAWING_ID_BD_STONEFLY_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_STONEFLY_EXPLODES_TO, GADGET_ID_NONE, + &level.bd_stonefly_explodes_to, 1, 1, + "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding" + }, + { + ED_DRAWING_ID_BD_DRAGONFLY_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_DRAGONFLY_EXPLODES_TO, GADGET_ID_NONE, + &level.bd_dragonfly_explodes_to, 1, 1, + "Explodes to:", NULL, NULL, NULL, "Changes to this when exploding" + }, + { + ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO, + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1), + ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, + GADGET_ID_BD_DIAMOND_BIRTH_TURNS_TO, GADGET_ID_NONE, + &level.bd_diamond_birth_turns_to, 1, 1, + "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion" + }, + { + ED_DRAWING_ID_BD_BOMB_EXPLOSION_TURNS_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_BOMB_EXPLOSION_TURNS_TO, GADGET_ID_NONE, + &level.bd_bomb_explosion_turns_to, 1, 1, + "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion" + }, + { + ED_DRAWING_ID_BD_NITRO_EXPLOSION_TURNS_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_NITRO_EXPLOSION_TURNS_TO, GADGET_ID_NONE, + &level.bd_nitro_explosion_turns_to, 1, 1, + "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion" + }, + { + ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO, + ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1), + ED_AREA_1X1_SETTINGS_XOFF, ED_AREA_1X1_SETTINGS_YOFF, + GADGET_ID_BD_EXPLOSION_TURNS_TO, GADGET_ID_NONE, + &level.bd_explosion_turns_to, 1, 1, + "Explosion ends in:", NULL, NULL, NULL, "Changes to this after explosion" + }, // ---------- level start element ------------------------------------------- @@ -4989,9 +5149,9 @@ static int editor_el_boulderdash_native[] = EL_BD_ROCK, EL_BD_DIAMOND, + EL_BD_INBOX, EL_BD_STEELWALL, EL_BD_WALL, - EL_BD_SAND_2, EL_BD_MAGIC_WALL, EL_BD_AMOEBA, @@ -5004,7 +5164,7 @@ static int editor_el_boulderdash_native[] = EL_BD_BUTTERFLY_RIGHT, EL_BD_FIREFLY_RIGHT, - EL_BD_INBOX, + EL_BD_SAND_2, EL_BD_BUTTERFLY_DOWN, EL_BD_FIREFLY_DOWN, EL_BD_EXIT_OPEN, @@ -5141,8 +5301,13 @@ static int editor_el_boulderdash_native[] = EL_BD_PLAYER, EL_BD_PLAYER_WITH_BOMB, + EL_BD_PLAYER_WITH_ROCKET_LAUNCHER, + EL_BD_ROCKET_LAUNCHER, + EL_BD_PLAYER_GLUED, EL_BD_PLAYER_STIRRING, + EL_EMPTY, + EL_EMPTY, }; static int *editor_hl_boulderdash_native_ptr = editor_hl_boulderdash_native; static int *editor_el_boulderdash_native_ptr = editor_el_boulderdash_native; @@ -11575,6 +11740,12 @@ static boolean checkPropertiesConfig(int element) IS_DF_LASER(element) || IS_PLAYER_ELEMENT(element) || IS_BD_PLAYER_ELEMENT(element) || + IS_BD_FIREFLY(properties_element) || + IS_BD_FIREFLY_2(properties_element) || + IS_BD_BUTTERFLY(properties_element) || + IS_BD_BUTTERFLY_2(properties_element) || + IS_BD_STONEFLY(properties_element) || + IS_BD_DRAGONFLY(properties_element) || IS_BD_EXPANDABLE_WALL(properties_element) || IS_BD_EXPANDABLE_STEELWALL(properties_element) || IS_BD_CONVEYOR_BELT(properties_element) || @@ -11587,6 +11758,9 @@ static boolean checkPropertiesConfig(int element) element == EL_BD_SAND || element == EL_BD_ROCK || element == EL_BD_MEGA_ROCK || + element == EL_BD_BOMB || + element == EL_BD_ROCKET_LAUNCHER || + element == EL_BD_NITRO_PACK || element == EL_BD_SWEET || element == EL_BD_VOODOO_DOLL || element == EL_BD_WATER || @@ -11697,6 +11871,14 @@ static void DrawPropertiesConfig(void) 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 && @@ -11714,7 +11896,7 @@ static void DrawPropertiesConfig(void) (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 ? 2 : 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); @@ -11753,6 +11935,7 @@ static void DrawPropertiesConfig(void) // draw stickybutton gadget MapCheckbuttonGadget(ED_CHECKBUTTON_ID_STICK_ELEMENT); + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_ZERO_INFINITE); MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_WAIT_HATCHING); MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_MAGIC_WALL_STOPS_AMOEBA); @@ -11790,7 +11973,9 @@ static void DrawPropertiesConfig(void) MapDrawingArea(ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE); } else if (IS_AMOEBOID(properties_element)) + { MapDrawingArea(ED_DRAWING_ID_AMOEBA_CONTENT); + } else if (properties_element == EL_BD_ACID) { MapDrawingArea(ED_DRAWING_ID_BD_ACID_EATS_ELEMENT); @@ -11809,7 +11994,9 @@ static void DrawPropertiesConfig(void) properties_element == EL_YAMYAM_RIGHT || properties_element == EL_YAMYAM_UP || properties_element == EL_YAMYAM_DOWN) + { DrawYamYamContentAreas(); + } else if (properties_element == EL_EMC_MAGIC_BALL) { DrawMagicBallContentAreas(); @@ -11818,7 +12005,9 @@ static void DrawPropertiesConfig(void) MapCheckbuttonGadget(ED_CHECKBUTTON_ID_INITIAL_BALL_ACTIVE); } else if (properties_element == EL_EMC_ANDROID) + { DrawAndroidElementArea(); + } else if (properties_element == EL_MM_GRAY_BALL) { MapCounterButtons(ED_COUNTER_ID_MM_BALL_CONTENT); @@ -11939,6 +12128,56 @@ static void DrawPropertiesConfig(void) MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB); MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB_WITH_SWEET); + + MapDrawingArea(ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_FALLING); + MapDrawingArea(ED_DRAWING_ID_BD_ROCK_TURNS_TO_ON_IMPACT); + } + + if (properties_element == EL_BD_DIAMOND && level.game_engine_type == GAME_ENGINE_TYPE_BD) + { + MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_FALLING); + MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_TURNS_TO_ON_IMPACT); + } + + if (level.game_engine_type == GAME_ENGINE_TYPE_BD) + { + if (IS_BD_FIREFLY(properties_element)) + { + MapDrawingArea(ED_DRAWING_ID_BD_FIREFLY_EXPLODES_TO); + MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO); + } + else if (IS_BD_FIREFLY_2(properties_element)) + { + MapDrawingArea(ED_DRAWING_ID_BD_FIREFLY_2_EXPLODES_TO); + MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO); + } + else if (IS_BD_BUTTERFLY(properties_element)) + { + MapDrawingArea(ED_DRAWING_ID_BD_BUTTERFLY_EXPLODES_TO); + MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO); + } + else if (IS_BD_BUTTERFLY_2(properties_element)) + { + MapDrawingArea(ED_DRAWING_ID_BD_BUTTERFLY_2_EXPLODES_TO); + MapDrawingArea(ED_DRAWING_ID_BD_DIAMOND_BIRTH_TURNS_TO); + } + else if (IS_BD_STONEFLY(properties_element)) + { + MapDrawingArea(ED_DRAWING_ID_BD_STONEFLY_EXPLODES_TO); + } + else if (IS_BD_DRAGONFLY(properties_element)) + { + MapDrawingArea(ED_DRAWING_ID_BD_DRAGONFLY_EXPLODES_TO); + MapDrawingArea(ED_DRAWING_ID_BD_EXPLOSION_TURNS_TO); + } + else if (properties_element == EL_BD_BOMB) + { + MapDrawingArea(ED_DRAWING_ID_BD_BOMB_EXPLOSION_TURNS_TO); + } + else if (properties_element == EL_BD_NITRO_PACK) + { + MapDrawingArea(ED_DRAWING_ID_BD_NITRO_EXPLOSION_TURNS_TO); + } } if (properties_element == EL_BD_MEGA_ROCK || @@ -12004,6 +12243,11 @@ static void DrawPropertiesConfig(void) MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR); } + if (properties_element == EL_BD_ROCKET_LAUNCHER) + { + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_INFINITE_ROCKETS); + } + if (properties_element == EL_BD_CREATURE_SWITCH) { MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CREATURES_START_BACKWARDS); @@ -12015,6 +12259,7 @@ static void DrawPropertiesConfig(void) MapSelectboxGadget(ED_SELECTBOX_ID_BD_GRAVITY_DIRECTION); MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_GRAVITY_SWITCH_ACTIVE); + MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_GRAVITY_AFFECTS_ALL); } if (properties_element == EL_BD_NUT) @@ -12029,7 +12274,8 @@ static void DrawPropertiesConfig(void) if (properties_element == EL_EM_DYNAMITE) MapCheckbuttonGadget(ED_CHECKBUTTON_ID_EM_EXPLODES_BY_FIRE); - if (COULD_MOVE_INTO_ACID(properties_element) && + if (level.game_engine_type == GAME_ENGINE_TYPE_RND && + COULD_MOVE_INTO_ACID(properties_element) && !IS_PLAYER_ELEMENT(properties_element) && (!IS_CUSTOM_ELEMENT(properties_element) || edit_mode_properties == ED_MODE_PROPERTIES_CONFIG_2))