fixed wrong variable type
[rocksndiamonds.git] / src / files.c
index 9fcc9e4054a82127d028973d69a42f78cf145a1e..628f577e34ab29bca43fdba3ea10c7ba0ebb2d77 100644 (file)
@@ -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);