+ {
+ EL_PLAYER_1,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(1),
+ &li.initial_player_stepsize, STEPSIZE_NORMAL
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(2),
+ &li.block_last_field, FALSE /* default case for EM levels */
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(3),
+ &li.sp_block_last_field, TRUE /* default case for SP levels */
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(4),
+ &li.instant_relocation, FALSE
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(5),
+ &li.can_pass_to_walkable, FALSE
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(6),
+ &li.initial_player_gravity[0], FALSE
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(9),
+ &li.block_snap_field, TRUE
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(10),
+ &li.use_start_element[0], FALSE
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(1),
+ &li.start_element[0], EL_PLAYER_1
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(11),
+ &li.use_artwork_element[0], FALSE
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(2),
+ &li.artwork_element[0], EL_PLAYER_1
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(12),
+ &li.use_explosion_element[0], FALSE
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(3),
+ &li.explosion_element[0], EL_PLAYER_1
+ },
+ {
+ EL_PLAYER_1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(13),
+ &li.continuous_snapping, TRUE
+ },
+
+ {
+ EL_PLAYER_2,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(6),
+ &li.initial_player_gravity[1], FALSE
+ },
+ {
+ EL_PLAYER_2,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(10),
+ &li.use_start_element[1], FALSE
+ },
+ {
+ EL_PLAYER_2,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(1),
+ &li.start_element[1], EL_PLAYER_2
+ },
+ {
+ EL_PLAYER_2,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(11),
+ &li.use_artwork_element[1], FALSE
+ },
+ {
+ EL_PLAYER_2,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(2),
+ &li.artwork_element[1], EL_PLAYER_2
+ },
+ {
+ EL_PLAYER_2,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(12),
+ &li.use_explosion_element[1], FALSE
+ },
+ {
+ EL_PLAYER_2,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(3),
+ &li.explosion_element[1], EL_PLAYER_2
+ },
+
+ {
+ EL_PLAYER_3,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(6),
+ &li.initial_player_gravity[2], FALSE
+ },
+ {
+ EL_PLAYER_3,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(10),
+ &li.use_start_element[2], FALSE
+ },
+ {
+ EL_PLAYER_3,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(1),
+ &li.start_element[2], EL_PLAYER_3
+ },
+ {
+ EL_PLAYER_3,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(11),
+ &li.use_artwork_element[2], FALSE
+ },
+ {
+ EL_PLAYER_3,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(2),
+ &li.artwork_element[2], EL_PLAYER_3
+ },
+ {
+ EL_PLAYER_3,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(12),
+ &li.use_explosion_element[2], FALSE
+ },
+ {
+ EL_PLAYER_3,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(3),
+ &li.explosion_element[2], EL_PLAYER_3
+ },
+
+ {
+ EL_PLAYER_4,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(6),
+ &li.initial_player_gravity[3], FALSE
+ },
+ {
+ EL_PLAYER_4,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(10),
+ &li.use_start_element[3], FALSE
+ },
+ {
+ EL_PLAYER_4,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(1),
+ &li.start_element[3], EL_PLAYER_4
+ },
+ {
+ EL_PLAYER_4,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(11),
+ &li.use_artwork_element[3], FALSE
+ },
+ {
+ EL_PLAYER_4,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(2),
+ &li.artwork_element[3], EL_PLAYER_4
+ },
+ {
+ EL_PLAYER_4,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(12),
+ &li.use_explosion_element[3], FALSE
+ },
+ {
+ EL_PLAYER_4,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(3),
+ &li.explosion_element[3], EL_PLAYER_4
+ },
+
+ {
+ EL_EMERALD,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_EMERALD], 10
+ },
+
+ {
+ EL_DIAMOND,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_DIAMOND], 10
+ },
+
+ {
+ EL_BUG,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_BUG], 10
+ },
+
+ {
+ EL_SPACESHIP,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_SPACESHIP], 10
+ },
+
+ {
+ EL_PACMAN,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_PACMAN], 10
+ },
+
+ {
+ EL_NUT,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_NUT], 10
+ },
+
+ {
+ EL_DYNAMITE,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_DYNAMITE], 10
+ },
+
+ {
+ EL_KEY_1,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_KEY], 10
+ },
+
+ {
+ EL_PEARL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_PEARL], 10
+ },
+
+ {
+ EL_CRYSTAL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_CRYSTAL], 10
+ },
+
+ {
+ EL_BD_AMOEBA,
+ TYPE_ELEMENT, CONF_VALUE_16_BIT(1),
+ &li.amoeba_content, EL_DIAMOND
+ },
+ {
+ EL_BD_AMOEBA,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.amoeba_speed, 10
+ },
+ {
+ EL_BD_AMOEBA,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(1),
+ &li.grow_into_diggable, TRUE
+ },
+
+ {
+ EL_YAMYAM,
+ TYPE_CONTENT_LIST, CONF_VALUE_BYTES(1),
+ &li.yamyam_content, EL_ROCK, NULL,
+ &li.num_yamyam_contents, 4, MAX_ELEMENT_CONTENTS
+ },
+ {
+ EL_YAMYAM,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_YAMYAM], 10
+ },
+
+ {
+ EL_ROBOT,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_ROBOT], 10
+ },
+ {
+ EL_ROBOT,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.slurp_score, 10
+ },
+
+ {
+ EL_ROBOT_WHEEL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.time_wheel, 10
+ },
+
+ {
+ EL_MAGIC_WALL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.time_magic_wall, 10
+ },
+
+ {
+ EL_GAME_OF_LIFE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(1),
+ &li.game_of_life[0], 2
+ },
+ {
+ EL_GAME_OF_LIFE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(2),
+ &li.game_of_life[1], 3
+ },
+ {
+ EL_GAME_OF_LIFE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(3),
+ &li.game_of_life[2], 3
+ },
+ {
+ EL_GAME_OF_LIFE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(4),
+ &li.game_of_life[3], 3
+ },
+
+ {
+ EL_BIOMAZE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(1),
+ &li.biomaze[0], 2
+ },
+ {
+ EL_BIOMAZE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(2),
+ &li.biomaze[1], 3
+ },
+ {
+ EL_BIOMAZE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(3),
+ &li.biomaze[2], 3
+ },
+ {
+ EL_BIOMAZE,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(4),
+ &li.biomaze[3], 3
+ },
+
+ {
+ EL_TIMEGATE_SWITCH,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.time_timegate, 10
+ },
+
+ {
+ EL_LIGHT_SWITCH_ACTIVE,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.time_light, 10
+ },
+
+ {
+ EL_SHIELD_NORMAL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.shield_normal_time, 10
+ },
+ {
+ EL_SHIELD_NORMAL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.score[SC_SHIELD], 10
+ },
+
+ {
+ EL_SHIELD_DEADLY,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.shield_deadly_time, 10
+ },
+ {
+ EL_SHIELD_DEADLY,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.score[SC_SHIELD], 10
+ },
+
+ {
+ EL_EXTRA_TIME,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.extra_time, 10
+ },
+ {
+ EL_EXTRA_TIME,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.extra_time_score, 10
+ },
+
+ {
+ EL_TIME_ORB_FULL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.time_orb_time, 10
+ },
+ {
+ EL_TIME_ORB_FULL,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(1),
+ &li.use_time_orb_bug, FALSE
+ },
+
+ {
+ EL_SPRING,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(1),
+ &li.use_spring_bug, FALSE
+ },
+
+ {
+ EL_EMC_ANDROID,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.android_move_time, 10
+ },
+ {
+ EL_EMC_ANDROID,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.android_clone_time, 10
+ },
+ {
+ EL_EMC_ANDROID,
+ TYPE_ELEMENT_LIST, CONF_VALUE_BYTES(1),
+ &li.android_clone_element[0], EL_EMPTY, NULL,
+ &li.num_android_clone_elements, 1, MAX_ANDROID_ELEMENTS
+ },
+
+ {
+ EL_EMC_LENSES,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.lenses_score, 10
+ },
+ {
+ EL_EMC_LENSES,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.lenses_time, 10
+ },
+
+ {
+ EL_EMC_MAGNIFIER,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.magnify_score, 10
+ },
+ {
+ EL_EMC_MAGNIFIER,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.magnify_time, 10
+ },
+
+ {
+ EL_EMC_MAGIC_BALL,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.ball_time, 10
+ },
+ {
+ EL_EMC_MAGIC_BALL,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(1),
+ &li.ball_random, FALSE
+ },
+ {
+ EL_EMC_MAGIC_BALL,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(2),
+ &li.ball_state_initial, FALSE
+ },
+ {
+ EL_EMC_MAGIC_BALL,
+ TYPE_CONTENT_LIST, CONF_VALUE_BYTES(1),
+ &li.ball_content, EL_EMPTY, NULL,
+ &li.num_ball_contents, 4, MAX_ELEMENT_CONTENTS
+ },
+
+ /* ---------- unused values ----------------------------------------------- */
+
+ {
+ EL_UNKNOWN,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.score[SC_UNKNOWN_14], 10
+ },
+ {
+ EL_UNKNOWN,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.score[SC_UNKNOWN_15], 10
+ },
+
+ {
+ -1,
+ -1, -1,
+ NULL, -1,
+ },
+};
+
+static struct LevelFileConfigInfo chunk_config_INFO[] =
+{
+ /* ---------- values not related to single elements ----------------------- */
+
+ {
+ -1,
+ TYPE_INTEGER, CONF_VALUE_8_BIT(1),
+ &li.game_engine_type, GAME_ENGINE_TYPE_RND
+ },
+
+ {
+ -1,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(1),
+ &li.fieldx, STD_LEV_FIELDX
+ },
+ {
+ -1,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(2),
+ &li.fieldy, STD_LEV_FIELDY
+ },
+
+ {
+ -1,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(3),
+ &li.time, 100
+ },
+
+ {
+ -1,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(4),
+ &li.gems_needed, 0
+ },
+
+ {
+ -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(2),
+ &li.use_step_counter, FALSE
+ },
+
+ {
+ -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(3),
+ &li.initial_gravity, FALSE
+ },
+
+ {
+ -1,
+ TYPE_BITFIELD, CONF_VALUE_8_BIT(4),
+ &li.wind_direction_initial, MV_NONE
+ },
+
+ {
+ -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(5),
+ &li.em_slippery_gems, FALSE
+ },
+
+ {
+ -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(6),
+ &li.use_custom_template, FALSE
+ },
+
+ {
+ -1,
+ TYPE_BITFIELD, CONF_VALUE_32_BIT(1),
+ &li.can_move_into_acid_bits, ~0 /* default: everything can */
+ },
+
+ {
+ -1,
+ TYPE_BITFIELD, CONF_VALUE_8_BIT(7),
+ &li.dont_collide_with_bits, ~0 /* default: always deadly */
+ },
+
+ {
+ -1,
+ TYPE_INTEGER, CONF_VALUE_16_BIT(5),
+ &li.score[SC_TIME_BONUS], 1
+ },
+
+ {
+ -1,
+ -1, -1,
+ NULL, -1,
+ },
+};
+
+static struct LevelFileConfigInfo chunk_config_CUSX_base[] =
+{
+ {
+ -1,
+ TYPE_STRING, CONF_VALUE_BYTES(1),
+ &xx_ei.description[0], -1,
+ &yy_ei.description[0],
+ &xx_default_description_length, -1, MAX_ELEMENT_NAME_LEN,
+ &xx_default_description[0]
+ },
+
+ {
+ -1,
+ TYPE_BITFIELD, CONF_VALUE_32_BIT(1),
+ &xx_ei.properties[EP_BITFIELD_BASE_NR], EP_BITMASK_BASE_DEFAULT,
+ &yy_ei.properties[EP_BITFIELD_BASE_NR]
+ },
+#if 0
+ /* (reserved) */
+ {
+ -1,
+ TYPE_BITFIELD, CONF_VALUE_32_BIT(2),
+ &xx_ei.properties[EP_BITFIELD_BASE_NR + 1], EP_BITMASK_DEFAULT,
+ &yy_ei.properties[EP_BITFIELD_BASE_NR + 1]
+ },
+#endif