GADGET_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
GADGET_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
GADGET_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_1,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_2,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2,
+ GADGET_ID_BD_SLIME_EATS_ELEMENT_3,
+ GADGET_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3,
GADGET_ID_BD_ACID_EATS_ELEMENT,
GADGET_ID_BD_ACID_TURNS_TO_ELEMENT,
GADGET_ID_BD_BITER_EATS_ELEMENT,
GADGET_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
GADGET_ID_BD_NUT_CONTENT,
+ GADGET_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+ GADGET_ID_BD_SAND_LOOKS_LIKE,
GADGET_ID_START_ELEMENT,
GADGET_ID_ARTWORK_ELEMENT,
GADGET_ID_EXPLOSION_ELEMENT,
GADGET_ID_BD_CONVEYOR_BELTS_ACTIVE,
GADGET_ID_BD_CONVEYOR_BELTS_CHANGED,
GADGET_ID_BD_WATER_CANNOT_FLOW_DOWN,
+ GADGET_ID_BD_HAMMER_WALLS_REAPPEAR,
GADGET_ID_ENVELOPE_AUTOWRAP,
GADGET_ID_ENVELOPE_CENTERED,
GADGET_ID_MM_LASER_RED,
ED_CHECKBUTTON_ID_BD_CONVEYOR_BELTS_ACTIVE,
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_ENVELOPE_AUTOWRAP,
ED_CHECKBUTTON_ID_ENVELOPE_CENTERED,
ED_CHECKBUTTON_ID_MM_LASER_RED,
ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_ENCLOSED,
ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_EXPLODING,
ED_DRAWING_ID_BD_AMOEBA_2_CONTENT_LOOKS_LIKE,
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1,
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1,
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_2,
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2,
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_3,
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3,
ED_DRAWING_ID_BD_ACID_EATS_ELEMENT,
ED_DRAWING_ID_BD_ACID_TURNS_TO_ELEMENT,
ED_DRAWING_ID_BD_BITER_EATS_ELEMENT,
ED_DRAWING_ID_BD_BLADDER_CONVERTS_BY_ELEMENT,
ED_DRAWING_ID_BD_NUT_CONTENT,
+ ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+ ED_DRAWING_ID_BD_SAND_LOOKS_LIKE,
ED_DRAWING_ID_START_ELEMENT,
ED_DRAWING_ID_ARTWORK_ELEMENT,
ED_DRAWING_ID_EXPLOSION_ELEMENT,
},
{
ED_CHECKBUTTON_ID_BD_SLIME_IS_PREDICTABLE,
- ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
GADGET_ID_BD_SLIME_IS_PREDICTABLE, GADGET_ID_NONE,
&level.bd_slime_is_predictable,
NULL, NULL,
NULL, NULL,
"Does not flow downwards", "Water can only flow up, left and right"
},
+ {
+ ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
+ GADGET_ID_BD_HAMMER_WALLS_REAPPEAR, GADGET_ID_NONE,
+ &level.bd_hammer_walls_reappear,
+ NULL, NULL,
+ "Hammered walls reappear", "Hammered walls reappear after delay"
+ },
{
ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP,
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
&level.bd_amoeba_2_content_looks_like, 1, 1,
"Use graphic of element:", NULL, NULL, NULL, "BD amoeba 2 looks like this element"
},
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1,
+ 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_SLIME_EATS_ELEMENT_1, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_1, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1,
+ 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_SLIME_CONVERTS_TO_ELEMENT_1, GADGET_ID_BD_SLIME_EATS_ELEMENT_1,
+ &level.bd_slime_converts_to_element_1, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_2,
+ 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_SLIME_EATS_ELEMENT_2, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_2, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2,
+ 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_SLIME_CONVERTS_TO_ELEMENT_2, GADGET_ID_BD_SLIME_EATS_ELEMENT_2,
+ &level.bd_slime_converts_to_element_2, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_3,
+ 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_SLIME_EATS_ELEMENT_3, GADGET_ID_NONE,
+ &level.bd_slime_eats_element_3, 1, 1,
+ "Can eat:", NULL, NULL, NULL, "Element that can be eaten"
+ },
+ {
+ ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3,
+ 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_SLIME_CONVERTS_TO_ELEMENT_3, GADGET_ID_BD_SLIME_EATS_ELEMENT_3,
+ &level.bd_slime_converts_to_element_3, 1, 1,
+ " and convert to:", NULL, NULL, NULL, "Eaten element is converted to"
+ },
{
ED_DRAWING_ID_BD_ACID_EATS_ELEMENT,
ED_AREA_1X1_SETTINGS_XPOS(0), ED_AREA_1X1_SETTINGS_YPOS(1),
&level.bd_nut_content, 1, 1,
"When breaking, changes to:", NULL, NULL, NULL, "Element created when breaking nut"
},
+ {
+ ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE,
+ 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_EXPANDING_WALL_LOOKS_LIKE, GADGET_ID_NONE,
+ &level.bd_expanding_wall_looks_like, 1, 1,
+ "Use graphic of element:", NULL, NULL, NULL, "Expanding wall looks like this element"
+ },
+ {
+ ED_DRAWING_ID_BD_SAND_LOOKS_LIKE,
+ 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_SAND_LOOKS_LIKE, GADGET_ID_NONE,
+ &level.bd_sand_looks_like, 1, 1,
+ "Use graphic of element:", NULL, NULL, NULL, "Sand looks like this element"
+ },
// ---------- level start element -------------------------------------------
EL_BD_WALL_KEY_3,
EL_BD_WALL_DIAMOND,
+ EL_BD_POT,
EL_BD_GRAVITY_SWITCH,
EL_BD_PNEUMATIC_HAMMER,
EL_BD_TELEPORTER,
- EL_BD_POT,
EL_BD_PLAYER,
EL_BD_PLAYER_WITH_BOMB,
PrintInfoText(no_description_text, font1_nr, xpos, ypos - line1_height);
}
-#define TEXT_COLLECTING "Score for collecting"
-#define TEXT_COLLECTING_EXTRA "Score for extra diamonds"
-#define TEXT_SMASHING "Score for smashing"
-#define TEXT_SLURPING "Score for slurping robot"
-#define TEXT_CRACKING "Score for cracking"
-#define TEXT_AMOEBA_SPEED "Speed of amoeba growth"
-#define TEXT_AMOEBA_THRESHOED "Size for turning to rocks"
-#define TEXT_AMOEBA_SLOW_TIME "Slow growth time (seconds)"
-#define TEXT_AMOEBA_SLOW_RATE "Slow growth rate (percent)"
-#define TEXT_AMOEBA_FAST_RATE "Fast growth rate (percent)"
-#define TEXT_DURATION "Duration when activated"
-#define TEXT_DELAY_ON "Delay before activating"
-#define TEXT_DELAY_OFF "Delay before deactivating"
-#define TEXT_DELAY_CHANGING "Delay before changing"
-#define TEXT_DELAY_EXPLODING "Delay before exploding"
-#define TEXT_DELAY_MOVING "Delay before moving"
-#define TEXT_BALL_DELAY "Element generation delay"
-#define TEXT_MOVE_SPEED "Speed of android moving"
-#define TEXT_CLONE_SPEED "Speed of android cloning"
-#define TEXT_GAME_OF_LIFE_1 "Min neighbours to survive"
-#define TEXT_GAME_OF_LIFE_2 "Max neighbours to survive"
-#define TEXT_GAME_OF_LIFE_3 "Min neighbours to create"
-#define TEXT_GAME_OF_LIFE_4 "Max neighbours to create"
-#define TEXT_TIME_BONUS "Extra time to solve level"
-#define TEXT_TIME_PENALTY "Time penalty if destroyed"
-#define TEXT_PERMEABILITY_RATE "slime permeability rate"
-#define TEXT_PERMEABILITY_BITS "slime permeability bits"
-#define TEXT_RANDOM_SEED "slime random number seed"
-#define TEXT_ACID_SPREAD_RATE "Spread rate (percent)"
-#define TEXT_BITER_MOVE_DELAY "Move delay (BD frames)"
-#define TEXT_REPLICATION_DELAY "Create delay (BD frames)"
+#define TEXT_COLLECTING "Score for collecting"
+#define TEXT_COLLECTING_EXTRA "Score for extra diamonds"
+#define TEXT_SMASHING "Score for smashing"
+#define TEXT_SLURPING "Score for slurping robot"
+#define TEXT_CRACKING "Score for cracking"
+#define TEXT_AMOEBA_SPEED "Speed of amoeba growth"
+#define TEXT_AMOEBA_THRESHOED "Size for turning to rocks"
+#define TEXT_AMOEBA_SLOW_TIME "Slow growth time (seconds)"
+#define TEXT_AMOEBA_SLOW_RATE "Slow growth rate (percent)"
+#define TEXT_AMOEBA_FAST_RATE "Fast growth rate (percent)"
+#define TEXT_DURATION "Duration when activated"
+#define TEXT_DELAY_ON "Delay before activating"
+#define TEXT_DELAY_OFF "Delay before deactivating"
+#define TEXT_DELAY_CHANGING "Delay before changing"
+#define TEXT_DELAY_EXPLODING "Delay before exploding"
+#define TEXT_DELAY_MOVING "Delay before moving"
+#define TEXT_BALL_DELAY "Element generation delay"
+#define TEXT_MOVE_SPEED "Speed of android moving"
+#define TEXT_CLONE_SPEED "Speed of android cloning"
+#define TEXT_GAME_OF_LIFE_1 "Min neighbours to survive"
+#define TEXT_GAME_OF_LIFE_2 "Max neighbours to survive"
+#define TEXT_GAME_OF_LIFE_3 "Min neighbours to create"
+#define TEXT_GAME_OF_LIFE_4 "Max neighbours to create"
+#define TEXT_TIME_BONUS "Extra time to solve level"
+#define TEXT_TIME_PENALTY "Time penalty if destroyed"
+#define TEXT_PERMEABILITY_RATE "slime permeability rate"
+#define TEXT_PERMEABILITY_BITS "slime permeability bits"
+#define TEXT_RANDOM_SEED "slime random number seed"
+#define TEXT_ACID_SPREAD_RATE "Spread rate (percent)"
+#define TEXT_BITER_MOVE_DELAY "Move delay (BD frames)"
+#define TEXT_REPLICATION_DELAY "Create delay (BD frames)"
+#define TEXT_HAMMER_BREAK_DELAY "Delay for breaking walls"
+#define TEXT_HAMMER_REAPPEAR_DELAY "Delay for reappearing walls"
+#define TEXT_SKELETONS_NEEDED "Skeletons needed to use pot"
+#define TEXT_SKELETONS_WORTH "Counts as this many diamonds"
static struct
{
0, 3 },
{ EL_BD_REPLICATOR, &level.bd_replicator_create_delay, TEXT_REPLICATION_DELAY,
0, 100 },
+ { EL_BD_PNEUMATIC_HAMMER, &level.bd_hammer_walls_break_delay, TEXT_HAMMER_BREAK_DELAY,
+ 1, 100 },
+ { EL_BD_PNEUMATIC_HAMMER, &level.bd_hammer_walls_reappear_delay, TEXT_HAMMER_REAPPEAR_DELAY,
+ 1, 200 },
+ { EL_BD_POT, &level.bd_num_skeletons_needed_for_pot, TEXT_SKELETONS_NEEDED,
+ 0, 50 },
+ { EL_BD_SKELETON, &level.bd_num_skeletons_needed_for_pot, TEXT_SKELETONS_NEEDED,
+ 0, 50 },
+ { EL_BD_SKELETON, &level.bd_skeleton_worth_num_diamonds, TEXT_SKELETONS_WORTH,
+ 0, 10 },
{ EL_EXTRA_TIME, &level.extra_time, TEXT_TIME_BONUS },
{ EL_TIME_ORB_FULL, &level.time_orb_time, TEXT_TIME_BONUS },
{ EL_GAME_OF_LIFE, &level.game_of_life[0], TEXT_GAME_OF_LIFE_1,0,8 },
IS_PLAYER_ELEMENT(element) ||
IS_BD_PLAYER_ELEMENT(element) ||
IS_BD_EXPANDABLE_WALL(properties_element) ||
+ IS_BD_EXPANDABLE_STEELWALL(properties_element) ||
IS_BD_CONVEYOR_BELT(properties_element) ||
IS_BD_CONVEYOR_BELT_SWITCH(properties_element) ||
IS_SOKOBAN_OBJECT_OR_FIELD(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_MEGA_ROCK ||
element == EL_BD_SWEET ||
(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;
+
counterbutton_info[counter_id].value = elements_with_counter[i].value;
counterbutton_info[counter_id].text_right = elements_with_counter[i].text;
counterbutton_info[counter_id].min_value = elements_with_counter[i].min_value;
MapDrawingArea(ED_DRAWING_ID_BD_SNAP_ELEMENT);
}
+ if (properties_element == EL_BD_SAND)
+ {
+ MapDrawingArea(ED_DRAWING_ID_BD_SAND_LOOKS_LIKE);
+ }
+
if (properties_element == EL_BD_ROCK && level.game_engine_type == GAME_ENGINE_TYPE_BD)
{
counterbutton_info[ED_COUNTER_ID_BD_PUSHING_PROB].y =
if (properties_element == EL_BD_SLIME)
{
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_SLIME_IS_PREDICTABLE);
+
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_1);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_1);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_2);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_2);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_EATS_ELEMENT_3);
+ MapDrawingArea(ED_DRAWING_ID_BD_SLIME_CONVERTS_TO_ELEMENT_3);
}
- if (IS_BD_EXPANDABLE_WALL(properties_element))
+ if (IS_BD_EXPANDABLE_WALL(properties_element) ||
+ IS_BD_EXPANDABLE_STEELWALL(properties_element))
{
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_CHANGE_EXPANDING_WALL);
+
+ if (IS_BD_EXPANDABLE_WALL(properties_element))
+ MapDrawingArea(ED_DRAWING_ID_BD_EXPANDING_WALL_LOOKS_LIKE);
}
if (properties_element == EL_BD_REPLICATOR)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_WATER_CANNOT_FLOW_DOWN);
}
+ if (properties_element == EL_BD_PNEUMATIC_HAMMER)
+ {
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_HAMMER_WALLS_REAPPEAR);
+ }
+
if (properties_element == EL_BD_NUT)
{
MapDrawingArea(ED_DRAWING_ID_BD_NUT_CONTENT);