X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=628f577e34ab29bca43fdba3ea10c7ba0ebb2d77;hb=5254dd7ea452634c19fb443566a413aa411d792e;hp=9fcc9e4054a82127d028973d69a42f78cf145a1e;hpb=45befdabd623ea1d67a3db27de22f63cb7156f72;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 9fcc9e40..628f577e 100644 --- a/src/files.c +++ b/src/files.c @@ -655,6 +655,41 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), &li.bd_magic_wall_stops_amoeba, TRUE }, + { + 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, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(2), + &li.bd_magic_wall_rock_to, EL_BD_DIAMOND_FALLING + }, + { + EL_BD_MAGIC_WALL, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(3), + &li.bd_magic_wall_mega_rock_to, EL_BD_NITRO_PACK_FALLING + }, + { + EL_BD_MAGIC_WALL, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(4), + &li.bd_magic_wall_nut_to, EL_BD_NUT_FALLING + }, + { + EL_BD_MAGIC_WALL, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(5), + &li.bd_magic_wall_nitro_pack_to, EL_BD_MEGA_ROCK_FALLING + }, + { + EL_BD_MAGIC_WALL, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(6), + &li.bd_magic_wall_flying_diamond_to, EL_BD_FLYING_ROCK_FLYING + }, + { + EL_BD_MAGIC_WALL, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(7), + &li.bd_magic_wall_flying_rock_to, EL_BD_FLYING_DIAMOND_FLYING + }, { EL_BD_CLOCK, -1, @@ -708,6 +743,36 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = TYPE_INTEGER, CONF_VALUE_32_BIT(1), &li.bd_slime_random_seed_c64, -1 }, + { + EL_BD_SLIME, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_slime_eats_element_1, EL_BD_DIAMOND + }, + { + EL_BD_SLIME, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(2), + &li.bd_slime_converts_to_element_1, EL_BD_DIAMOND_FALLING + }, + { + EL_BD_SLIME, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(3), + &li.bd_slime_eats_element_2, EL_BD_ROCK + }, + { + EL_BD_SLIME, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(4), + &li.bd_slime_converts_to_element_2, EL_BD_ROCK_FALLING + }, + { + EL_BD_SLIME, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(5), + &li.bd_slime_eats_element_3, EL_BD_NUT + }, + { + EL_BD_SLIME, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(6), + &li.bd_slime_converts_to_element_3, EL_BD_NUT_FALLING + }, { EL_BD_ACID, -1, @@ -722,7 +787,7 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = { EL_BD_ACID, -1, TYPE_ELEMENT, CONF_VALUE_16_BIT(2), - &li.bd_acid_turns_to_element, EL_EMPTY + &li.bd_acid_turns_to_element, EL_BD_EXPLODING_3 }, { @@ -776,6 +841,39 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] = &li.bd_water_cannot_flow_down, FALSE }, + { + EL_BD_NUT, -1, + TYPE_ELEMENT, CONF_VALUE_16_BIT(1), + &li.bd_nut_content, EL_BD_NUT_BREAKING_1 + }, + + { + EL_BD_PNEUMATIC_HAMMER, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(1), + &li.bd_hammer_walls_break_delay, 5 + }, + { + EL_BD_PNEUMATIC_HAMMER, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(2), + &li.bd_hammer_walls_reappear, FALSE + }, + { + EL_BD_PNEUMATIC_HAMMER, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(3), + &li.bd_hammer_walls_reappear_delay, 100 + }, + + { + EL_BD_SKELETON, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(1), + &li.bd_num_skeletons_needed_for_pot, 5 + }, + { + EL_BD_SKELETON, -1, + TYPE_INTEGER, CONF_VALUE_8_BIT(2), + &li.bd_skeleton_worth_num_diamonds, 0 + }, + // (the following values are related to various game elements) { @@ -4036,6 +4134,15 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->level_magic_wall_time[0] = level->time_magic_wall; cave->magic_timer_wait_for_hatching = level->bd_magic_wall_wait_hatching; cave->magic_wall_stops_amoeba = level->bd_magic_wall_stops_amoeba; + + cave->magic_diamond_to = map_element_RND_to_BD_cave(level->bd_magic_wall_diamond_to); + cave->magic_stone_to = map_element_RND_to_BD_cave(level->bd_magic_wall_rock_to); + cave->magic_mega_stone_to = map_element_RND_to_BD_cave(level->bd_magic_wall_mega_rock_to); + cave->magic_nut_to = map_element_RND_to_BD_cave(level->bd_magic_wall_nut_to); + cave->magic_nitro_pack_to = map_element_RND_to_BD_cave(level->bd_magic_wall_nitro_pack_to); + cave->magic_flying_diamond_to = map_element_RND_to_BD_cave(level->bd_magic_wall_flying_diamond_to); + cave->magic_flying_stone_to = map_element_RND_to_BD_cave(level->bd_magic_wall_flying_rock_to); + 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; @@ -4061,6 +4168,12 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->level_slime_permeability_c64[0] = level->bd_slime_permeability_bits_c64; cave->level_slime_seed_c64[0] = level->bd_slime_random_seed_c64; cave->level_rand[0] = level->bd_cave_random_seed_c64; + cave->slime_eats_1 = map_element_RND_to_BD_cave(level->bd_slime_eats_element_1); + cave->slime_converts_1 = map_element_RND_to_BD_cave(level->bd_slime_converts_to_element_1); + cave->slime_eats_2 = map_element_RND_to_BD_cave(level->bd_slime_eats_element_2); + cave->slime_converts_2 = map_element_RND_to_BD_cave(level->bd_slime_converts_to_element_2); + cave->slime_eats_3 = map_element_RND_to_BD_cave(level->bd_slime_eats_element_3); + cave->slime_converts_3 = map_element_RND_to_BD_cave(level->bd_slime_converts_to_element_3); cave->acid_eats_this = map_element_RND_to_BD_cave(level->bd_acid_eats_element); cave->acid_spread_ratio = level->bd_acid_spread_rate * 10000; @@ -4081,6 +4194,15 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level) cave->water_does_not_flow_down = level->bd_water_cannot_flow_down; + cave->nut_turns_to_when_crushed = map_element_RND_to_BD_cave(level->bd_nut_content); + + cave->pneumatic_hammer_frame = level->bd_hammer_walls_break_delay; + cave->hammered_walls_reappear = level->bd_hammer_walls_reappear; + cave->hammered_wall_reappear_frame = level->bd_hammer_walls_reappear_delay; + + cave->skeletons_needed_for_pot = level->bd_num_skeletons_needed_for_pot; + cave->skeletons_worth_diamonds = level->bd_skeleton_worth_num_diamonds; + // level name strncpy(cave->name, level->name, sizeof(GdString)); cave->name[sizeof(GdString) - 1] = '\0'; @@ -4145,6 +4267,15 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->time_magic_wall = cave->level_magic_wall_time[bd_level_nr]; level->bd_magic_wall_wait_hatching = cave->magic_timer_wait_for_hatching; level->bd_magic_wall_stops_amoeba = cave->magic_wall_stops_amoeba; + + level->bd_magic_wall_diamond_to = map_element_BD_to_RND_cave(cave->magic_diamond_to); + level->bd_magic_wall_rock_to = map_element_BD_to_RND_cave(cave->magic_stone_to); + level->bd_magic_wall_mega_rock_to = map_element_BD_to_RND_cave(cave->magic_mega_stone_to); + level->bd_magic_wall_nut_to = map_element_BD_to_RND_cave(cave->magic_nut_to); + level->bd_magic_wall_nitro_pack_to = map_element_BD_to_RND_cave(cave->magic_nitro_pack_to); + level->bd_magic_wall_flying_diamond_to= map_element_BD_to_RND_cave(cave->magic_flying_diamond_to); + level->bd_magic_wall_flying_rock_to = map_element_BD_to_RND_cave(cave->magic_flying_stone_to); + 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; @@ -4170,6 +4301,12 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->bd_slime_permeability_bits_c64 = cave->level_slime_permeability_c64[bd_level_nr]; level->bd_slime_random_seed_c64 = cave->level_slime_seed_c64[bd_level_nr]; level->bd_cave_random_seed_c64 = cave->level_rand[bd_level_nr]; + level->bd_slime_eats_element_1 = map_element_BD_to_RND_cave(cave->slime_eats_1); + level->bd_slime_converts_to_element_1 = map_element_BD_to_RND_cave(cave->slime_converts_1); + level->bd_slime_eats_element_2 = map_element_BD_to_RND_cave(cave->slime_eats_2); + level->bd_slime_converts_to_element_2 = map_element_BD_to_RND_cave(cave->slime_converts_2); + level->bd_slime_eats_element_3 = map_element_BD_to_RND_cave(cave->slime_eats_3); + level->bd_slime_converts_to_element_3 = map_element_BD_to_RND_cave(cave->slime_converts_3); level->bd_acid_eats_element = map_element_BD_to_RND_cave(cave->acid_eats_this); level->bd_acid_spread_rate = cave->acid_spread_ratio / 10000; @@ -4190,6 +4327,15 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level) level->bd_water_cannot_flow_down = cave->water_does_not_flow_down; + level->bd_nut_content = map_element_BD_to_RND_cave(cave->nut_turns_to_when_crushed); + + level->bd_hammer_walls_break_delay = cave->pneumatic_hammer_frame; + level->bd_hammer_walls_reappear = cave->hammered_walls_reappear; + level->bd_hammer_walls_reappear_delay = cave->hammered_wall_reappear_frame; + + level->bd_num_skeletons_needed_for_pot= cave->skeletons_needed_for_pot; + level->bd_skeleton_worth_num_diamonds = cave->skeletons_worth_diamonds; + // level name char *cave_name = getStringPrint("%s / %d", cave->name, bd_level_nr + 1);