GADGET_ID_BD_HATCHING_DELAY_SECONDS_DOWN,
GADGET_ID_BD_HATCHING_DELAY_SECONDS_TEXT,
GADGET_ID_BD_HATCHING_DELAY_SECONDS_UP,
+ GADGET_ID_BD_PUSHING_PROB_DOWN,
+ GADGET_ID_BD_PUSHING_PROB_TEXT,
+ GADGET_ID_BD_PUSHING_PROB_UP,
+ GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_DOWN,
+ GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_TEXT,
+ GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_UP,
GADGET_ID_ELEMENT_VALUE1_DOWN,
GADGET_ID_ELEMENT_VALUE1_TEXT,
GADGET_ID_ELEMENT_VALUE1_UP,
GADGET_ID_DONT_COLLIDE_WITH,
GADGET_ID_BD_DIAGONAL_MOVEMENTS,
GADGET_ID_BD_TOPMOST_PLAYER_ACTIVE,
+ GADGET_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET,
GADGET_ID_ENVELOPE_AUTOWRAP,
GADGET_ID_ENVELOPE_CENTERED,
GADGET_ID_MM_LASER_RED,
ED_COUNTER_ID_BD_CYCLE_DELAY_C64,
ED_COUNTER_ID_BD_HATCHING_DELAY_CYCLES,
ED_COUNTER_ID_BD_HATCHING_DELAY_SECONDS,
+ ED_COUNTER_ID_BD_PUSHING_PROB,
+ ED_COUNTER_ID_BD_PUSHING_PROB_WITH_SWEET,
ED_COUNTER_ID_ELEMENT_VALUE1,
ED_COUNTER_ID_ELEMENT_VALUE2,
ED_COUNTER_ID_ELEMENT_VALUE3,
ED_CHECKBUTTON_ID_DONT_COLLIDE_WITH,
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_ENVELOPE_AUTOWRAP,
ED_CHECKBUTTON_ID_ENVELOPE_CENTERED,
ED_CHECKBUTTON_ID_MM_LASER_RED,
// ---------- element settings: configure (various elements) ----------------
+ {
+ ED_COUNTER_ID_BD_PUSHING_PROB,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(2),
+ 0, 100,
+ GADGET_ID_BD_PUSHING_PROB_DOWN, GADGET_ID_BD_PUSHING_PROB_UP,
+ GADGET_ID_BD_PUSHING_PROB_TEXT, GADGET_ID_NONE,
+ &level.bd_pushing_prob,
+ NULL, NULL, "probability to push rocks"
+ },
+ {
+ ED_COUNTER_ID_BD_PUSHING_PROB_WITH_SWEET,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(3),
+ 0, 100,
+ GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_DOWN, GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_UP,
+ GADGET_ID_BD_PUSHING_PROB_WITH_SWEET_TEXT, GADGET_ID_NONE,
+ &level.bd_pushing_prob_with_sweet,
+ NULL, NULL, "as above, after eating sweet"
+ },
{
ED_COUNTER_ID_ELEMENT_VALUE1,
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(0),
NULL, NULL,
"topmost player is active", "use first player found on playfield"
},
+ {
+ ED_CHECKBUTTON_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET,
+ ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(4),
+ GADGET_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET, GADGET_ID_NONE,
+ &level.bd_push_mega_rock_with_sweet,
+ NULL, NULL,
+ "mega rocks pushable with sweet", "push mega rocks after eating sweet"
+ },
{
ED_CHECKBUTTON_ID_ENVELOPE_AUTOWRAP,
ED_ELEMENT_SETTINGS_XPOS(0), ED_ELEMENT_SETTINGS_YPOS(1),
if (IS_BD_PLAYER_ELEMENT(properties_element))
{
+ // draw checkbutton gadgets
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_DIAGONAL_MOVEMENTS);
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_TOPMOST_PLAYER_ACTIVE);
+ MapCheckbuttonGadget(ED_CHECKBUTTON_ID_BD_PUSH_MEGA_ROCK_WITH_SWEET);
+
+ // draw counter gadgets
+ MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB);
+ MapCounterButtons(ED_COUNTER_ID_BD_PUSHING_PROB_WITH_SWEET);
}
// special case: slippery walls option for gems only available in R'n'D game engine
TYPE_BOOLEAN, CONF_VALUE_8_BIT(2),
&li.bd_topmost_player_active, TRUE
},
+ {
+ EL_BD_PLAYER, -1,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(3),
+ &li.bd_pushing_prob, 25
+ },
+ {
+ EL_BD_PLAYER, -1,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(4),
+ &li.bd_pushing_prob_with_sweet, 100
+ },
+ {
+ EL_BD_PLAYER, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(5),
+ &li.bd_push_mega_rock_with_sweet, FALSE
+ },
{
EL_BD_DIAMOND, -1,
// player properties
cave->diagonal_movements = level->bd_diagonal_movements;
cave->active_is_first_found = level->bd_topmost_player_active;
+ cave->pushing_stone_prob = level->bd_pushing_prob * 10000;
+ cave->pushing_stone_prob_sweet = level->bd_pushing_prob_with_sweet * 10000;
+ cave->mega_stones_pushable_with_sweet = level->bd_push_mega_rock_with_sweet;
// level name
strncpy(cave->name, level->name, sizeof(GdString));
// player properties
level->bd_diagonal_movements = cave->diagonal_movements;
level->bd_topmost_player_active = cave->active_is_first_found;
+ level->bd_pushing_prob = cave->pushing_stone_prob / 10000;
+ level->bd_pushing_prob_with_sweet = cave->pushing_stone_prob_sweet / 10000;
+ level->bd_push_mega_rock_with_sweet = cave->mega_stones_pushable_with_sweet;
// level name
char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1);