added new game element "light rock" to native BD game engine
authorHolger Schemel <holger.schemel@virtion.de>
Sun, 29 Sep 2024 11:36:03 +0000 (13:36 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Sun, 29 Sep 2024 11:39:00 +0000 (13:39 +0200)
17 files changed:
docs/elements/bdx_light_rock.txt [new file with mode: 0644]
graphics/gfx_classic/RocksBD.png
graphics/gfx_classic/RocksBD2.png
src/conf_gfx.c
src/conf_snd.c
src/editor.c
src/files.c
src/game.c
src/game_bd/bd_cave.c
src/game_bd/bd_cave.h
src/game_bd/bd_cavedb.c
src/game_bd/bd_caveengine.c
src/game_bd/bd_elements.h
src/game_bd/bd_sound.c
src/main.c
src/main.h
src/tools.c

diff --git a/docs/elements/bdx_light_rock.txt b/docs/elements/bdx_light_rock.txt
new file mode 100644 (file)
index 0000000..04cfd9c
--- /dev/null
@@ -0,0 +1 @@
+Like an ordinary rock, but this one is so light that you can push it without delay.
index 51dd2b6e2b17be58f058d7985fb74e2b800d8a8e..6d30f4808be599ffda523d8793b18055b728a8c9 100644 (file)
Binary files a/graphics/gfx_classic/RocksBD.png and b/graphics/gfx_classic/RocksBD.png differ
index 434e6848ca67d757932dfce4790ae382da85bda1..733c5ff4b0873e5bb771005b614276a1a1164176 100644 (file)
Binary files a/graphics/gfx_classic/RocksBD2.png and b/graphics/gfx_classic/RocksBD2.png differ
index 4ef103372b3b17e4c202d2f503c21a1ade7848ce..37edabc4c69c97670c305d02b3480a7bc8aa363d 100644 (file)
@@ -812,6 +812,14 @@ struct ConfigInfo image_config[] =
   { "bdx_heavy_rock.falling.EDITOR.xpos",              "2"                             },
   { "bdx_heavy_rock.falling.EDITOR.ypos",              "3"                             },
 
+  { "bdx_light_rock",                                  "RocksBD.png"                   },
+  { "bdx_light_rock.xpos",                             "11"                            },
+  { "bdx_light_rock.ypos",                             "4"                             },
+  { "bdx_light_rock.frames",                           "1"                             },
+  { "bdx_light_rock.falling.EDITOR",                   "RocksBD2.png"                  },
+  { "bdx_light_rock.falling.EDITOR.xpos",              "5"                             },
+  { "bdx_light_rock.falling.EDITOR.ypos",              "3"                             },
+
   { "bdx_rock_glued",                                  UNDEFINED_FILENAME              },
   { "bdx_rock_glued.clone_from",                       "bd_rock"                       },
   { "bdx_rock_glued.EDITOR",                           "RocksBD2.png"                  },
index 1b912f2becc72e9a1766c064f004b1711f098c26..1d7b847b690acbad8cef7cf48b2db5f78df04ded 100644 (file)
@@ -83,6 +83,9 @@ struct ConfigInfo sound_config[] =
   { "bdx_heavy_rock.pushing",                  "pusch.wav"                     },
   { "bdx_heavy_rock.falling",                  "klopf.wav"                     },
   { "bdx_heavy_rock.impact",                   "klopf.wav"                     },
+  { "bdx_light_rock.pushing",                  "pusch.wav"                     },
+  { "bdx_light_rock.falling",                  "klopf.wav"                     },
+  { "bdx_light_rock.impact",                   "klopf.wav"                     },
   { "bdx_waiting_rock.pushing",                        "pusch.wav"                     },
   { "bdx_chasing_rock.pushing",                        "pusch.wav"                     },
   { "bdx_nut.pushing",                         "knurk.wav"                     },
index 9f2037e14b13b064f6dc74a6101b66ca19b4c2df..716cb3d98ffa3db24e03ce297950cca679f5da29 100644 (file)
@@ -632,6 +632,7 @@ enum
   GADGET_ID_BD_MAGIC_WALL_DIAMOND_TO,
   GADGET_ID_BD_MAGIC_WALL_ROCK_TO,
   GADGET_ID_BD_MAGIC_WALL_HEAVY_ROCK_TO,
+  GADGET_ID_BD_MAGIC_WALL_LIGHT_ROCK_TO,
   GADGET_ID_BD_MAGIC_WALL_NUT_TO,
   GADGET_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
   GADGET_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
@@ -1370,6 +1371,7 @@ enum
   ED_DRAWING_ID_BD_MAGIC_WALL_DIAMOND_TO,
   ED_DRAWING_ID_BD_MAGIC_WALL_ROCK_TO,
   ED_DRAWING_ID_BD_MAGIC_WALL_HEAVY_ROCK_TO,
+  ED_DRAWING_ID_BD_MAGIC_WALL_LIGHT_ROCK_TO,
   ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO,
   ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
   ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
@@ -4955,16 +4957,24 @@ static struct
     "Changes heavy rocks to:", NULL, NULL, NULL, "Element to turn heavy rocks to"
   },
   {
-    ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO,
+    ED_DRAWING_ID_BD_MAGIC_WALL_LIGHT_ROCK_TO,
     ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(9),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
+    GADGET_ID_BD_MAGIC_WALL_LIGHT_ROCK_TO,     GADGET_ID_NONE,
+    &level.bd_magic_wall_light_rock_to,                1, 1,
+    "Changes light rocks to:", NULL, NULL, NULL, "Element to turn light rocks to"
+  },
+  {
+    ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO,
+    ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(10),
+    ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_MAGIC_WALL_NUT_TO,            GADGET_ID_NONE,
     &level.bd_magic_wall_nut_to,               1, 1,
     "Changes nuts to:", NULL, NULL, NULL,      "Element to turn nuts to"
   },
   {
     ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO,
-    ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(10),
+    ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(11),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_MAGIC_WALL_NITRO_PACK_TO,     GADGET_ID_NONE,
     &level.bd_magic_wall_nitro_pack_to,                1, 1,
@@ -4972,7 +4982,7 @@ static struct
   },
   {
     ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO,
-    ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(11),
+    ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(12),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO, GADGET_ID_NONE,
     &level.bd_magic_wall_flying_diamond_to,    1, 1,
@@ -4980,7 +4990,7 @@ static struct
   },
   {
     ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_ROCK_TO,
-    ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(12),
+    ED_AREA_1X1_SETTINGS_XPOS(0),              ED_AREA_1X1_SETTINGS_YPOS(13),
     ED_AREA_1X1_SETTINGS_XOFF,                 ED_AREA_1X1_SETTINGS_YOFF,
     GADGET_ID_BD_MAGIC_WALL_FLYING_ROCK_TO,    GADGET_ID_NONE,
     &level.bd_magic_wall_flying_rock_to,       1, 1,
@@ -5713,7 +5723,7 @@ static int editor_el_boulderdash_native[] =
   EL_BDX_STEELWALL_SLOPED_DOWN_RIGHT,
 
   EL_BDX_HEAVY_ROCK,
-  EL_BDX_SWEET,
+  EL_BDX_LIGHT_ROCK,
   EL_BDX_INVISIBLE_EXIT_CLOSED,
   EL_BDX_INVISIBLE_EXIT_OPEN,
 
@@ -5743,7 +5753,7 @@ static int editor_el_boulderdash_native[] =
   EL_BDX_CONVEYOR_DIR_SWITCH,
 
   EL_BDX_CLOCK,
-  EL_EMPTY,
+  EL_BDX_SWEET,
   EL_BDX_GRAVESTONE,
   EL_BDX_SKELETON,
 
@@ -5790,16 +5800,16 @@ static int editor_el_boulderdash_effects[] =
   EL_BDX_DIAMOND_FALLING,
   EL_BDX_ROCK_FALLING,
   EL_BDX_HEAVY_ROCK_FALLING,
-  EL_BDX_FLYING_DIAMOND_FLYING,
+  EL_BDX_LIGHT_ROCK_FALLING,
 
-  EL_BDX_FALLING_WALL_FALLING,
-  EL_BDX_NITRO_PACK_FALLING,
-  EL_BDX_NUT_FALLING,
+  EL_BDX_FLYING_DIAMOND_FLYING,
   EL_BDX_FLYING_ROCK_FLYING,
+  EL_BDX_NUT_FALLING,
+  EL_BDX_NITRO_PACK_FALLING,
 
   EL_BDX_SAND_BALL_FALLING,
   EL_BDX_SAND_LOOSE_FALLING,
-  EL_EMPTY,
+  EL_BDX_FALLING_WALL_FALLING,
   EL_EMPTY,
 
   EL_BDX_PLAYER_GROWING_1,
@@ -5949,13 +5959,18 @@ static int editor_el_boulderdash_scanned[] =
 
   EL_BDX_HEAVY_ROCK_SCANNED,
   EL_BDX_HEAVY_ROCK_FALLING_SCANNED,
+  EL_BDX_LIGHT_ROCK_SCANNED,
+  EL_BDX_LIGHT_ROCK_FALLING_SCANNED,
+
   EL_BDX_DIAMOND_SCANNED,
   EL_BDX_DIAMOND_FALLING_SCANNED,
-
   EL_BDX_FLYING_DIAMOND_SCANNED,
   EL_BDX_FLYING_DIAMOND_FLYING_SCANNED,
+
   EL_BDX_NUT_SCANNED,
   EL_BDX_NUT_FALLING_SCANNED,
+  EL_EMPTY,
+  EL_EMPTY,
 
   EL_BDX_EXPANDABLE_WALL_HORIZONTAL_SCANNED,
   EL_BDX_EXPANDABLE_WALL_VERTICAL_SCANNED,
@@ -12774,6 +12789,7 @@ static void DrawPropertiesConfig(void)
     MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_DIAMOND_TO);
     MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_ROCK_TO);
     MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_HEAVY_ROCK_TO);
+    MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_LIGHT_ROCK_TO);
     MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_NUT_TO);
     MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_NITRO_PACK_TO);
     MapDrawingArea(ED_DRAWING_ID_BD_MAGIC_WALL_FLYING_DIAMOND_TO);
index d2573403d74bc827719ee84891e4dd479b99f8e0..e999cb6c35836a7c320e67eadc111d1f1a91d6b1 100644 (file)
@@ -816,21 +816,26 @@ static struct LevelFileConfigInfo chunk_config_ELEM[] =
   {
     EL_BDX_MAGIC_WALL,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(5),
-    &li.bd_magic_wall_nut_to,          EL_BDX_NUT_FALLING
+    &li.bd_magic_wall_light_rock_to,   EL_BDX_LIGHT_ROCK_FALLING
   },
   {
     EL_BDX_MAGIC_WALL,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(6),
-    &li.bd_magic_wall_nitro_pack_to,   EL_BDX_HEAVY_ROCK_FALLING
+    &li.bd_magic_wall_nut_to,          EL_BDX_NUT_FALLING
   },
   {
     EL_BDX_MAGIC_WALL,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(7),
-    &li.bd_magic_wall_flying_diamond_to, EL_BDX_FLYING_ROCK_FLYING
+    &li.bd_magic_wall_nitro_pack_to,   EL_BDX_HEAVY_ROCK_FALLING
   },
   {
     EL_BDX_MAGIC_WALL,                 -1,
     TYPE_ELEMENT,                      CONF_VALUE_16_BIT(8),
+    &li.bd_magic_wall_flying_diamond_to, EL_BDX_FLYING_ROCK_FLYING
+  },
+  {
+    EL_BDX_MAGIC_WALL,                 -1,
+    TYPE_ELEMENT,                      CONF_VALUE_16_BIT(9),
     &li.bd_magic_wall_flying_rock_to,  EL_BDX_FLYING_DIAMOND_FLYING
   },
 
@@ -4362,6 +4367,7 @@ static void CopyNativeLevel_RND_to_BD(struct LevelInfo *level)
   cave->magic_diamond_to               = LEVEL_TO_CAVE(level->bd_magic_wall_diamond_to);
   cave->magic_stone_to                 = LEVEL_TO_CAVE(level->bd_magic_wall_rock_to);
   cave->magic_mega_stone_to            = LEVEL_TO_CAVE(level->bd_magic_wall_heavy_rock_to);
+  cave->magic_light_stone_to           = LEVEL_TO_CAVE(level->bd_magic_wall_light_rock_to);
   cave->magic_nut_to                   = LEVEL_TO_CAVE(level->bd_magic_wall_nut_to);
   cave->magic_nitro_pack_to            = LEVEL_TO_CAVE(level->bd_magic_wall_nitro_pack_to);
   cave->magic_flying_diamond_to                = LEVEL_TO_CAVE(level->bd_magic_wall_flying_diamond_to);
@@ -4546,6 +4552,7 @@ static void CopyNativeLevel_BD_to_RND(struct LevelInfo *level)
   level->bd_magic_wall_diamond_to      = CAVE_TO_LEVEL(cave->magic_diamond_to);
   level->bd_magic_wall_rock_to         = CAVE_TO_LEVEL(cave->magic_stone_to);
   level->bd_magic_wall_heavy_rock_to   = CAVE_TO_LEVEL(cave->magic_mega_stone_to);
+  level->bd_magic_wall_light_rock_to   = CAVE_TO_LEVEL(cave->magic_light_stone_to);
   level->bd_magic_wall_nut_to          = CAVE_TO_LEVEL(cave->magic_nut_to);
   level->bd_magic_wall_nitro_pack_to   = CAVE_TO_LEVEL(cave->magic_nitro_pack_to);
   level->bd_magic_wall_flying_diamond_to= CAVE_TO_LEVEL(cave->magic_flying_diamond_to);
index a9e5ae96a9439c7d2a92532f08a80df274cc3c13..9866f9005690b44544bad7ccd5a31fc4c100107e 100644 (file)
@@ -15633,6 +15633,7 @@ static int getSoundAction_BD(int sample)
   {
     case GD_S_STONE_PUSHING:
     case GD_S_MEGA_STONE_PUSHING:
+    case GD_S_LIGHT_STONE_PUSHING:
     case GD_S_FLYING_STONE_PUSHING:
     case GD_S_WAITING_STONE_PUSHING:
     case GD_S_CHASING_STONE_PUSHING:
@@ -15644,6 +15645,7 @@ static int getSoundAction_BD(int sample)
 
     case GD_S_STONE_FALLING:
     case GD_S_MEGA_STONE_FALLING:
+    case GD_S_LIGHT_STONE_FALLING:
     case GD_S_FLYING_STONE_FALLING:
     case GD_S_NUT_FALLING:
     case GD_S_DIRT_BALL_FALLING:
@@ -15654,6 +15656,7 @@ static int getSoundAction_BD(int sample)
 
     case GD_S_STONE_IMPACT:
     case GD_S_MEGA_STONE_IMPACT:
+    case GD_S_LIGHT_STONE_IMPACT:
     case GD_S_FLYING_STONE_IMPACT:
     case GD_S_NUT_IMPACT:
     case GD_S_DIRT_BALL_IMPACT:
index 068a588e6e7ee84934a10c83587911c05f2e576b..f85088fda5bdb0f8ec4c904c2e46852e244b81a1 100644 (file)
@@ -1854,6 +1854,7 @@ void gd_unscan_cave(GdCave *cave)
   cave->magic_diamond_to               = non_scanned_pair(cave->magic_diamond_to);
   cave->magic_stone_to                 = non_scanned_pair(cave->magic_stone_to);
   cave->magic_mega_stone_to            = non_scanned_pair(cave->magic_mega_stone_to);
+  cave->magic_light_stone_to           = non_scanned_pair(cave->magic_light_stone_to);
   cave->magic_nut_to                   = non_scanned_pair(cave->magic_nut_to);
   cave->magic_nitro_pack_to            = non_scanned_pair(cave->magic_nitro_pack_to);
   cave->magic_flying_diamond_to                = non_scanned_pair(cave->magic_flying_diamond_to);
index b5ca6391cb692712ae8138905e69b5758e43743b..91d46cb60602b54406f33b61aaba5065714fffa3 100644 (file)
@@ -525,6 +525,7 @@ typedef struct _gd_cave
   GdElement magic_stone_to;             // magic wall converts falling stone to
   GdElement magic_diamond_to;           // magic wall converts falling diamond to
   GdElement magic_mega_stone_to;        // magic wall converts a falling mega stone to
+  GdElement magic_light_stone_to;       // magic wall converts a falling light stone to
   GdElement magic_nitro_pack_to;        // magic wall converts a falling nitro pack to
   GdElement magic_nut_to;               // magic wall converts a falling nut to
   GdElement magic_flying_stone_to;      // flying stones are converted to
index e328b9d7879d3ec1f0d3fb711bd15755ad66d8a5..247ea53e15fa911a4812733d9586618872062cb3 100644 (file)
@@ -46,6 +46,7 @@ enum _generated_cells_indexes
   i_h_expanding_steel_wall,
   i_v_expanding_steel_wall,
   i_mega_stone_falling,
+  i_light_stone_falling,
   i_time_penalty,
   i_biter_1,
   i_biter_2,
@@ -348,6 +349,26 @@ GdElementProperty gd_element_properties[] =
     P_SCANNED,
     "SCANN_MEGABOULDERf", 0, i_mega_stone_falling, i_mega_stone_falling, 272
   },
+  {
+    O_LIGHT_STONE, O_LIGHT_STONE_scanned, N_("Light stone"),
+    P_SLOPED | P_MOVED_BY_CONVEYOR_TOP | P_PUSHABLE | P_CAN_FALL,
+    "LIGHTBOULDER", 0, 359, 359, 359, 156
+  },    // has ckdelay
+  {
+    O_LIGHT_STONE_scanned, O_LIGHT_STONE, N_("Light stone (scanned)"),
+    P_SCANNED,
+    "SCANN_LIGHTBOULDER", 0, 359, 359, 359
+  },
+  {
+    O_LIGHT_STONE_F, O_LIGHT_STONE_F_scanned, N_("Light stone, falling"),
+    P_FALLING,
+    "LIGHTBOULDERf", 0, i_light_stone_falling, i_light_stone_falling, 359, 156
+  },    // has ckdelay
+  {
+    O_LIGHT_STONE_F_scanned, O_LIGHT_STONE_F, N_("Light stone, falling (scanned)"),
+    P_SCANNED,
+    "SCANN_LIGHTBOULDERf", 0, i_light_stone_falling, i_light_stone_falling, 359
+  },
   {
     O_DIAMOND, O_DIAMOND_scanned, N_("Diamond"),
     P_SLOPED | P_MOVED_BY_CONVEYOR_TOP | P_COLLECTIBLE | P_CAN_FALL,
@@ -2480,6 +2501,11 @@ const GdStructDescriptor gd_cave_properties[] =
     N_("Mega stone to"), CAVE_OFFSET(magic_mega_stone_to), 1,
     N_("If a mega stone falls into the magic wall, it will drop this element.")
   },
+  {
+    "MagicWallProperties.lightstoneto", GD_TYPE_ELEMENT, 0,
+    N_("Light stone to"), CAVE_OFFSET(magic_light_stone_to), 1,
+    N_("If a light stone falls into the magic wall, it will drop this element.")
+  },
   {
     "MagicWallProperties.nitropackto", GD_TYPE_ELEMENT, 0,
     N_("Nitro pack to"), CAVE_OFFSET(magic_nitro_pack_to), 1,
@@ -3112,6 +3138,7 @@ GdPropertyDefault gd_cave_defaults_gdash[] =
   { CAVE_OFFSET(magic_diamond_to),                             O_STONE_F                       },
   { CAVE_OFFSET(magic_stone_to),                               O_DIAMOND_F                     },
   { CAVE_OFFSET(magic_mega_stone_to),                          O_NITRO_PACK_F                  },
+  { CAVE_OFFSET(magic_light_stone_to),                         O_LIGHT_STONE_F                 },
   { CAVE_OFFSET(magic_nitro_pack_to),                          O_MEGA_STONE_F                  },
   { CAVE_OFFSET(magic_nut_to),                                 O_NUT_F                         },
   { CAVE_OFFSET(magic_flying_stone_to),                                O_FLYING_DIAMOND_F              },
index 1d88703028b1d068d3543a7817f7c2c437fc344b..99880bbbf9432a2241da05aeda5497ac81d37036 100644 (file)
@@ -170,6 +170,14 @@ static void play_sound_of_element(GdCave *cave, GdElement element, int x, int y)
       gd_sound_play(cave, GD_S_MEGA_STONE_IMPACT, element, x, y);
       break;
 
+    case O_LIGHT_STONE:
+      gd_sound_play(cave, GD_S_LIGHT_STONE_FALLING, element, x, y);
+      break;
+
+    case O_LIGHT_STONE_F:
+      gd_sound_play(cave, GD_S_LIGHT_STONE_IMPACT, element, x, y);
+      break;
+
     case O_NITRO_PACK:
       gd_sound_play(cave, GD_S_NITRO_PACK_FALLING, element, x, y);
       break;
@@ -285,6 +293,10 @@ static void play_sound_of_element_pushing(GdCave *cave, GdElement element, int x
       gd_sound_play(cave, GD_S_MEGA_STONE_PUSHING, element, x, y);
       break;
 
+    case O_LIGHT_STONE:
+      gd_sound_play(cave, GD_S_LIGHT_STONE_PUSHING, element, x, y);
+      break;
+
     case O_WAITING_STONE:
       gd_sound_play(cave, GD_S_WAITING_STONE_PUSHING, element, x, y);
       break;
@@ -1238,6 +1250,7 @@ static boolean do_push(GdCave *cave, int x, int y, GdDirection player_move, bool
     case O_NITRO_PACK:
     case O_CHASING_STONE:
     case O_MEGA_STONE:
+    case O_LIGHT_STONE:
     case O_FLYING_STONE:
     case O_NUT:
       // pushing some kind of stone or nut
@@ -1269,6 +1282,11 @@ static boolean do_push(GdCave *cave, int x, int y, GdDirection player_move, bool
              prob = 1000000; // p = 1, always push
            break;
 
+         case O_LIGHT_STONE:
+           // light stones are light, can always push
+           prob = 1000000;
+           break;
+
          case O_STONE:
          case O_NUT:
          case O_FLYING_STONE:
@@ -2297,6 +2315,10 @@ void gd_cave_iterate(GdCave *cave, GdDirection player_move, boolean player_fire,
          do_start_fall(cave, x, y, cave->gravity, O_MEGA_STONE_F);
          break;
 
+       case O_LIGHT_STONE:     // standing light_stone
+         do_start_fall(cave, x, y, cave->gravity, O_LIGHT_STONE_F);
+         break;
+
        case O_DIAMOND:         // standing diamond
          do_start_fall(cave, x, y, cave->gravity, cave->diamond_falling_effect);
          break;
@@ -2374,6 +2396,25 @@ void gd_cave_iterate(GdCave *cave, GdDirection player_move, boolean player_fire,
          }
          break;
 
+       case O_LIGHT_STONE_F:    // falling light stone
+         if (!cave->gravity_disabled)
+         {
+           if (do_fall_try_crush_voodoo(cave, x, y, cave->gravity))
+             break;
+
+           if (do_fall_try_crack_nut(cave, x, y, cave->gravity, O_LIGHT_STONE))
+             break;
+
+           if (do_fall_try_magic(cave, x, y, cave->gravity, cave->magic_light_stone_to))
+             break;
+
+           if (do_fall_try_crush(cave, x, y, cave->gravity))
+             break;
+
+           do_fall_roll_or_stop(cave, x, y, cave->gravity, O_LIGHT_STONE);
+         }
+         break;
+
        case O_DIAMOND_F:       // falling diamond
          if (!cave->gravity_disabled)
          {
index d318699ebf26b78e61d04a12d2b209d821136668..ad594c46b0797ff2238301eaf8a8a362093ae9be 100644 (file)
@@ -71,6 +71,10 @@ typedef enum _element
   O_MEGA_STONE_scanned,
   O_MEGA_STONE_F,
   O_MEGA_STONE_F_scanned,
+  O_LIGHT_STONE,
+  O_LIGHT_STONE_scanned,
+  O_LIGHT_STONE_F,
+  O_LIGHT_STONE_F_scanned,
   O_DIAMOND,
   O_DIAMOND_scanned,
   O_DIAMOND_F,
@@ -418,6 +422,9 @@ typedef enum _sound
   GD_S_MEGA_STONE_PUSHING,
   GD_S_MEGA_STONE_FALLING,
   GD_S_MEGA_STONE_IMPACT,
+  GD_S_LIGHT_STONE_PUSHING,
+  GD_S_LIGHT_STONE_FALLING,
+  GD_S_LIGHT_STONE_IMPACT,
   GD_S_FLYING_STONE_PUSHING,
   GD_S_FLYING_STONE_FALLING,
   GD_S_FLYING_STONE_IMPACT,
index e1bdfc4de65d48780d8497a9082da70f75f3fe29..5468cb72d9a704b1f5f96ba69a838be65fcb5edc 100644 (file)
@@ -81,6 +81,9 @@ static SoundProperty sound_flags[] =
   { GD_S_MEGA_STONE_PUSHING,           1, 10                                   },
   { GD_S_MEGA_STONE_FALLING,           1, 10                                   },
   { GD_S_MEGA_STONE_IMPACT,            1, 10                                   },
+  { GD_S_LIGHT_STONE_PUSHING,          1, 10                                   },
+  { GD_S_LIGHT_STONE_FALLING,          1, 10                                   },
+  { GD_S_LIGHT_STONE_IMPACT,           1, 10                                   },
   { GD_S_FLYING_STONE_PUSHING,         1, 10                                   },
   { GD_S_FLYING_STONE_FALLING,         1, 10                                   },
   { GD_S_FLYING_STONE_IMPACT,          1, 10                                   },
index bda0cd4fbd752f13c4b3b960b120c2720049aeb2..ea86e5d7a3c25c49cce8fb457fa70ce083edfc39 100644 (file)
@@ -7237,6 +7237,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "bdx_magic_wall",
     "Magic wall"
   },
+  {
+    "bdx_light_rock",
+    "bdx_light_rock",
+    "Light rock"
+  },
   {
     "bdx_sand_ball.falling",
     "bdx_sand_ball",
@@ -7262,6 +7267,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "bdx_heavy_rock",
     "Heavy rock (falling)"
   },
+  {
+    "bdx_light_rock.falling",
+    "bdx_light_rock",
+    "Light rock (falling)"
+  },
   {
     "bdx_diamond.falling",
     "bdx_diamond",
@@ -7757,6 +7767,16 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
     "bdx_heavy_rock",
     "Heavy rock (falling) (scanned)"
   },
+  {
+    "bdx_light_rock.scanned",
+    "bdx_light_rock",
+    "Light rock (scanned)"
+  },
+  {
+    "bdx_light_rock.falling.scanned",
+    "bdx_light_rock",
+    "Light rock (falling) (scanned)"
+  },
   {
     "bdx_diamond.scanned",
     "bdx_diamond",
index c311346fb37cab3f90c9cb2d52f55d3ae0e50961..36096060b661bdef9bf1be9c9a9e6b6ac59e1b92 100644 (file)
 #define EL_BDX_ROCK                            1405
 #define EL_BDX_DIAMOND                         1406
 #define EL_BDX_MAGIC_WALL                      1407
+#define EL_BDX_LIGHT_ROCK                      1408
 
 // BD style elements (effects/scanned; runtime elements, but can also be stored in level file)
-#define EL_BDX_RUNTIME_START                   1408
+#define EL_BDX_RUNTIME_START                   1409
 
 #define EL_BDX_EFFECTS_START                   EL_BDX_RUNTIME_START
 #define EL_BDX_SAND_BALL_FALLING               EL_BDX_EFFECTS_START
-#define EL_BDX_SAND_LOOSE_FALLING              1409
-#define EL_BDX_ROCK_FALLING                    1410
-#define EL_BDX_FLYING_ROCK_FLYING              1411
-#define EL_BDX_HEAVY_ROCK_FALLING              1412
-#define EL_BDX_DIAMOND_FALLING                 1413
-#define EL_BDX_FLYING_DIAMOND_FLYING           1414
-#define EL_BDX_NUT_FALLING                     1415
-#define EL_BDX_FALLING_WALL_FALLING            1416
-#define EL_BDX_NITRO_PACK_FALLING              1417
-#define EL_BDX_WATER_1                         1418
-#define EL_BDX_WATER_2                         1419
-#define EL_BDX_WATER_3                         1420
-#define EL_BDX_WATER_4                         1421
-#define EL_BDX_WATER_5                         1422
-#define EL_BDX_WATER_6                         1423
-#define EL_BDX_WATER_7                         1424
-#define EL_BDX_WATER_8                         1425
-#define EL_BDX_WATER_9                         1426
-#define EL_BDX_WATER_10                                1427
-#define EL_BDX_WATER_11                                1428
-#define EL_BDX_WATER_12                                1429
-#define EL_BDX_WATER_13                                1430
-#define EL_BDX_WATER_14                                1431
-#define EL_BDX_WATER_15                                1432
-#define EL_BDX_WATER_16                                1433
-#define EL_BDX_COW_ENCLOSED_1                  1434
-#define EL_BDX_COW_ENCLOSED_2                  1435
-#define EL_BDX_COW_ENCLOSED_3                  1436
-#define EL_BDX_COW_ENCLOSED_4                  1437
-#define EL_BDX_COW_ENCLOSED_5                  1438
-#define EL_BDX_COW_ENCLOSED_6                  1439
-#define EL_BDX_COW_ENCLOSED_7                  1440
-#define EL_BDX_BUBBLE_1                                1441
-#define EL_BDX_BUBBLE_2                                1442
-#define EL_BDX_BUBBLE_3                                1443
-#define EL_BDX_BUBBLE_4                                1444
-#define EL_BDX_BUBBLE_5                                1445
-#define EL_BDX_BUBBLE_6                                1446
-#define EL_BDX_BUBBLE_7                                1447
-#define EL_BDX_BUBBLE_8                                1448
-#define EL_BDX_PLAYER_GROWING_1                        1449
-#define EL_BDX_PLAYER_GROWING_2                        1450
-#define EL_BDX_PLAYER_GROWING_3                        1451
-#define EL_BDX_BOMB_TICKING_1                  1452
-#define EL_BDX_BOMB_TICKING_2                  1453
-#define EL_BDX_BOMB_TICKING_3                  1454
-#define EL_BDX_BOMB_TICKING_4                  1455
-#define EL_BDX_BOMB_TICKING_5                  1456
-#define EL_BDX_BOMB_TICKING_6                  1457
-#define EL_BDX_BOMB_TICKING_7                  1458
-#define EL_BDX_CLOCK_GROWING_1                 1459
-#define EL_BDX_CLOCK_GROWING_2                 1460
-#define EL_BDX_CLOCK_GROWING_3                 1461
-#define EL_BDX_CLOCK_GROWING_4                 1462
-#define EL_BDX_DIAMOND_GROWING_1               1463
-#define EL_BDX_DIAMOND_GROWING_2               1464
-#define EL_BDX_DIAMOND_GROWING_3               1465
-#define EL_BDX_DIAMOND_GROWING_4               1466
-#define EL_BDX_DIAMOND_GROWING_5               1467
-#define EL_BDX_EXPLODING_1                     1468
-#define EL_BDX_EXPLODING_2                     1469
-#define EL_BDX_EXPLODING_3                     1470
-#define EL_BDX_EXPLODING_4                     1471
-#define EL_BDX_EXPLODING_5                     1472
-#define EL_BDX_ROCK_GROWING_1                  1473
-#define EL_BDX_ROCK_GROWING_2                  1474
-#define EL_BDX_ROCK_GROWING_3                  1475
-#define EL_BDX_ROCK_GROWING_4                  1476
-#define EL_BDX_STEELWALL_GROWING_1             1477
-#define EL_BDX_STEELWALL_GROWING_2             1478
-#define EL_BDX_STEELWALL_GROWING_3             1479
-#define EL_BDX_STEELWALL_GROWING_4             1480
-#define EL_BDX_GHOST_EXPLODING_1               1481
-#define EL_BDX_GHOST_EXPLODING_2               1482
-#define EL_BDX_GHOST_EXPLODING_3               1483
-#define EL_BDX_GHOST_EXPLODING_4               1484
-#define EL_BDX_BOMB_EXPLODING_1                        1485
-#define EL_BDX_BOMB_EXPLODING_2                        1486
-#define EL_BDX_BOMB_EXPLODING_3                        1487
-#define EL_BDX_BOMB_EXPLODING_4                        1488
-#define EL_BDX_NITRO_PACK_EXPLODING            1489
-#define EL_BDX_NITRO_PACK_EXPLODING_1          1490
-#define EL_BDX_NITRO_PACK_EXPLODING_2          1491
-#define EL_BDX_NITRO_PACK_EXPLODING_3          1492
-#define EL_BDX_NITRO_PACK_EXPLODING_4          1493
-#define EL_BDX_AMOEBA_2_EXPLODING_1            1494
-#define EL_BDX_AMOEBA_2_EXPLODING_2            1495
-#define EL_BDX_AMOEBA_2_EXPLODING_3            1496
-#define EL_BDX_AMOEBA_2_EXPLODING_4            1497
-#define EL_BDX_NUT_BREAKING_1                  1498
-#define EL_BDX_NUT_BREAKING_2                  1499
-#define EL_BDX_NUT_BREAKING_3                  1500
-#define EL_BDX_NUT_BREAKING_4                  1501
+#define EL_BDX_SAND_LOOSE_FALLING              1410
+#define EL_BDX_ROCK_FALLING                    1411
+#define EL_BDX_FLYING_ROCK_FLYING              1412
+#define EL_BDX_HEAVY_ROCK_FALLING              1413
+#define EL_BDX_LIGHT_ROCK_FALLING              1414
+#define EL_BDX_DIAMOND_FALLING                 1415
+#define EL_BDX_FLYING_DIAMOND_FLYING           1416
+#define EL_BDX_NUT_FALLING                     1417
+#define EL_BDX_FALLING_WALL_FALLING            1418
+#define EL_BDX_NITRO_PACK_FALLING              1419
+#define EL_BDX_WATER_1                         1420
+#define EL_BDX_WATER_2                         1421
+#define EL_BDX_WATER_3                         1422
+#define EL_BDX_WATER_4                         1423
+#define EL_BDX_WATER_5                         1424
+#define EL_BDX_WATER_6                         1425
+#define EL_BDX_WATER_7                         1426
+#define EL_BDX_WATER_8                         1427
+#define EL_BDX_WATER_9                         1428
+#define EL_BDX_WATER_10                                1429
+#define EL_BDX_WATER_11                                1430
+#define EL_BDX_WATER_12                                1431
+#define EL_BDX_WATER_13                                1432
+#define EL_BDX_WATER_14                                1433
+#define EL_BDX_WATER_15                                1434
+#define EL_BDX_WATER_16                                1435
+#define EL_BDX_COW_ENCLOSED_1                  1436
+#define EL_BDX_COW_ENCLOSED_2                  1437
+#define EL_BDX_COW_ENCLOSED_3                  1438
+#define EL_BDX_COW_ENCLOSED_4                  1439
+#define EL_BDX_COW_ENCLOSED_5                  1440
+#define EL_BDX_COW_ENCLOSED_6                  1441
+#define EL_BDX_COW_ENCLOSED_7                  1442
+#define EL_BDX_BUBBLE_1                                1443
+#define EL_BDX_BUBBLE_2                                1444
+#define EL_BDX_BUBBLE_3                                1445
+#define EL_BDX_BUBBLE_4                                1446
+#define EL_BDX_BUBBLE_5                                1447
+#define EL_BDX_BUBBLE_6                                1448
+#define EL_BDX_BUBBLE_7                                1449
+#define EL_BDX_BUBBLE_8                                1450
+#define EL_BDX_PLAYER_GROWING_1                        1451
+#define EL_BDX_PLAYER_GROWING_2                        1452
+#define EL_BDX_PLAYER_GROWING_3                        1453
+#define EL_BDX_BOMB_TICKING_1                  1454
+#define EL_BDX_BOMB_TICKING_2                  1455
+#define EL_BDX_BOMB_TICKING_3                  1456
+#define EL_BDX_BOMB_TICKING_4                  1457
+#define EL_BDX_BOMB_TICKING_5                  1458
+#define EL_BDX_BOMB_TICKING_6                  1459
+#define EL_BDX_BOMB_TICKING_7                  1460
+#define EL_BDX_CLOCK_GROWING_1                 1461
+#define EL_BDX_CLOCK_GROWING_2                 1462
+#define EL_BDX_CLOCK_GROWING_3                 1463
+#define EL_BDX_CLOCK_GROWING_4                 1464
+#define EL_BDX_DIAMOND_GROWING_1               1465
+#define EL_BDX_DIAMOND_GROWING_2               1466
+#define EL_BDX_DIAMOND_GROWING_3               1467
+#define EL_BDX_DIAMOND_GROWING_4               1468
+#define EL_BDX_DIAMOND_GROWING_5               1469
+#define EL_BDX_EXPLODING_1                     1470
+#define EL_BDX_EXPLODING_2                     1471
+#define EL_BDX_EXPLODING_3                     1472
+#define EL_BDX_EXPLODING_4                     1473
+#define EL_BDX_EXPLODING_5                     1474
+#define EL_BDX_ROCK_GROWING_1                  1475
+#define EL_BDX_ROCK_GROWING_2                  1476
+#define EL_BDX_ROCK_GROWING_3                  1477
+#define EL_BDX_ROCK_GROWING_4                  1478
+#define EL_BDX_STEELWALL_GROWING_1             1479
+#define EL_BDX_STEELWALL_GROWING_2             1480
+#define EL_BDX_STEELWALL_GROWING_3             1481
+#define EL_BDX_STEELWALL_GROWING_4             1482
+#define EL_BDX_GHOST_EXPLODING_1               1483
+#define EL_BDX_GHOST_EXPLODING_2               1484
+#define EL_BDX_GHOST_EXPLODING_3               1485
+#define EL_BDX_GHOST_EXPLODING_4               1486
+#define EL_BDX_BOMB_EXPLODING_1                        1487
+#define EL_BDX_BOMB_EXPLODING_2                        1488
+#define EL_BDX_BOMB_EXPLODING_3                        1489
+#define EL_BDX_BOMB_EXPLODING_4                        1490
+#define EL_BDX_NITRO_PACK_EXPLODING            1491
+#define EL_BDX_NITRO_PACK_EXPLODING_1          1492
+#define EL_BDX_NITRO_PACK_EXPLODING_2          1493
+#define EL_BDX_NITRO_PACK_EXPLODING_3          1494
+#define EL_BDX_NITRO_PACK_EXPLODING_4          1495
+#define EL_BDX_AMOEBA_2_EXPLODING_1            1496
+#define EL_BDX_AMOEBA_2_EXPLODING_2            1497
+#define EL_BDX_AMOEBA_2_EXPLODING_3            1498
+#define EL_BDX_AMOEBA_2_EXPLODING_4            1499
+#define EL_BDX_NUT_BREAKING_1                  1500
+#define EL_BDX_NUT_BREAKING_2                  1501
+#define EL_BDX_NUT_BREAKING_3                  1502
+#define EL_BDX_NUT_BREAKING_4                  1503
 #define EL_BDX_EFFECTS_END                     EL_BDX_NUT_BREAKING_4
 
-#define EL_BDX_SCANNED_START                   1502
+#define EL_BDX_SCANNED_START                   1504
 #define EL_BDX_SAND_BALL_SCANNED               EL_BDX_SCANNED_START
-#define EL_BDX_SAND_BALL_FALLING_SCANNED       1503
-#define EL_BDX_SAND_LOOSE_SCANNED              1504
-#define EL_BDX_SAND_LOOSE_FALLING_SCANNED      1505
-#define EL_BDX_ROCK_SCANNED                    1506
-#define EL_BDX_ROCK_FALLING_SCANNED            1507
-#define EL_BDX_FLYING_ROCK_SCANNED             1508
-#define EL_BDX_FLYING_ROCK_FLYING_SCANNED      1509
-#define EL_BDX_HEAVY_ROCK_SCANNED              1510
-#define EL_BDX_HEAVY_ROCK_FALLING_SCANNED      1511
-#define EL_BDX_DIAMOND_SCANNED                 1512
-#define EL_BDX_DIAMOND_FALLING_SCANNED         1513
-#define EL_BDX_FLYING_DIAMOND_SCANNED          1514
-#define EL_BDX_FLYING_DIAMOND_FLYING_SCANNED   1515
-#define EL_BDX_NUT_SCANNED                     1516
-#define EL_BDX_NUT_FALLING_SCANNED             1517
-#define EL_BDX_EXPANDABLE_WALL_HORIZONTAL_SCANNED      1518
-#define EL_BDX_EXPANDABLE_WALL_VERTICAL_SCANNED                1519
-#define EL_BDX_EXPANDABLE_WALL_ANY_SCANNED             1520
-#define EL_BDX_EXPANDABLE_STEELWALL_HORIZONTAL_SCANNED 1521
-#define EL_BDX_EXPANDABLE_STEELWALL_VERTICAL_SCANNED   1522
-#define EL_BDX_EXPANDABLE_STEELWALL_ANY_SCANNED                1523
-#define EL_BDX_ACID_SCANNED                    1524
-#define EL_BDX_FALLING_WALL_FALLING_SCANNED    1525
-#define EL_BDX_COW_LEFT_SCANNED                        1526
-#define EL_BDX_COW_UP_SCANNED                  1527
-#define EL_BDX_COW_RIGHT_SCANNED               1528
-#define EL_BDX_COW_DOWN_SCANNED                        1529
-#define EL_BDX_AMOEBA_1_SCANNED                        1530
-#define EL_BDX_AMOEBA_2_SCANNED                        1531
-#define EL_BDX_WAITING_ROCK_SCANNED            1532
-#define EL_BDX_CHASING_ROCK_SCANNED            1533
-#define EL_BDX_GHOST_SCANNED                   1534
-#define EL_BDX_FIREFLY_1_RIGHT_SCANNED         1535
-#define EL_BDX_FIREFLY_1_UP_SCANNED            1536
-#define EL_BDX_FIREFLY_1_LEFT_SCANNED          1537
-#define EL_BDX_FIREFLY_1_DOWN_SCANNED          1538
-#define EL_BDX_FIREFLY_2_RIGHT_SCANNED         1539
-#define EL_BDX_FIREFLY_2_UP_SCANNED            1540
-#define EL_BDX_FIREFLY_2_LEFT_SCANNED          1541
-#define EL_BDX_FIREFLY_2_DOWN_SCANNED          1542
-#define EL_BDX_BUTTERFLY_1_RIGHT_SCANNED       1543
-#define EL_BDX_BUTTERFLY_1_UP_SCANNED          1544
-#define EL_BDX_BUTTERFLY_1_LEFT_SCANNED                1545
-#define EL_BDX_BUTTERFLY_1_DOWN_SCANNED                1546
-#define EL_BDX_BUTTERFLY_2_RIGHT_SCANNED       1547
-#define EL_BDX_BUTTERFLY_2_UP_SCANNED          1548
-#define EL_BDX_BUTTERFLY_2_LEFT_SCANNED                1549
-#define EL_BDX_BUTTERFLY_2_DOWN_SCANNED                1550
-#define EL_BDX_STONEFLY_RIGHT_SCANNED          1551
-#define EL_BDX_STONEFLY_UP_SCANNED             1552
-#define EL_BDX_STONEFLY_LEFT_SCANNED           1553
-#define EL_BDX_STONEFLY_DOWN_SCANNED           1554
-#define EL_BDX_BITER_RIGHT_SCANNED             1555
-#define EL_BDX_BITER_UP_SCANNED                        1556
-#define EL_BDX_BITER_LEFT_SCANNED              1557
-#define EL_BDX_BITER_DOWN_SCANNED              1558
-#define EL_BDX_DRAGONFLY_RIGHT_SCANNED         1559
-#define EL_BDX_DRAGONFLY_UP_SCANNED            1560
-#define EL_BDX_DRAGONFLY_LEFT_SCANNED          1561
-#define EL_BDX_DRAGONFLY_DOWN_SCANNED          1562
-#define EL_BDX_PLAYER_SCANNED                  1563
-#define EL_BDX_PLAYER_WITH_BOMB_SCANNED                1564
-#define EL_BDX_PLAYER_WITH_ROCKET_LAUNCHER_SCANNED     1565
-#define EL_BDX_ROCKET_RIGHT_SCANNED            1566
-#define EL_BDX_ROCKET_UP_SCANNED               1567
-#define EL_BDX_ROCKET_LEFT_SCANNED             1568
-#define EL_BDX_ROCKET_DOWN_SCANNED             1569
-#define EL_BDX_NITRO_PACK_SCANNED              1570
-#define EL_BDX_NITRO_PACK_FALLING_SCANNED      1571
-#define EL_BDX_NITRO_PACK_EXPLODING_SCANNED    1572
-#define EL_BDX_CLOCK_GROWING_0                 1573
-#define EL_BDX_DIAMOND_GROWING_0               1574
-#define EL_BDX_EXPLODING_0                     1575
-#define EL_BDX_ROCK_GROWING_0                  1576
-#define EL_BDX_STEELWALL_GROWING_0             1577
-#define EL_BDX_GHOST_EXPLODING_0               1578
-#define EL_BDX_BOMB_EXPLODING_0                        1579
-#define EL_BDX_NITRO_PACK_EXPLODING_0          1580
-#define EL_BDX_AMOEBA_2_EXPLODING_0            1581
-#define EL_BDX_NUT_BREAKING_0                  1582
+#define EL_BDX_SAND_BALL_FALLING_SCANNED       1505
+#define EL_BDX_SAND_LOOSE_SCANNED              1506
+#define EL_BDX_SAND_LOOSE_FALLING_SCANNED      1507
+#define EL_BDX_ROCK_SCANNED                    1508
+#define EL_BDX_ROCK_FALLING_SCANNED            1509
+#define EL_BDX_FLYING_ROCK_SCANNED             1510
+#define EL_BDX_FLYING_ROCK_FLYING_SCANNED      1511
+#define EL_BDX_HEAVY_ROCK_SCANNED              1512
+#define EL_BDX_HEAVY_ROCK_FALLING_SCANNED      1513
+#define EL_BDX_LIGHT_ROCK_SCANNED              1514
+#define EL_BDX_LIGHT_ROCK_FALLING_SCANNED      1515
+#define EL_BDX_DIAMOND_SCANNED                 1516
+#define EL_BDX_DIAMOND_FALLING_SCANNED         1517
+#define EL_BDX_FLYING_DIAMOND_SCANNED          1518
+#define EL_BDX_FLYING_DIAMOND_FLYING_SCANNED   1519
+#define EL_BDX_NUT_SCANNED                     1520
+#define EL_BDX_NUT_FALLING_SCANNED             1521
+#define EL_BDX_EXPANDABLE_WALL_HORIZONTAL_SCANNED      1522
+#define EL_BDX_EXPANDABLE_WALL_VERTICAL_SCANNED                1523
+#define EL_BDX_EXPANDABLE_WALL_ANY_SCANNED             1524
+#define EL_BDX_EXPANDABLE_STEELWALL_HORIZONTAL_SCANNED 1525
+#define EL_BDX_EXPANDABLE_STEELWALL_VERTICAL_SCANNED   1526
+#define EL_BDX_EXPANDABLE_STEELWALL_ANY_SCANNED                1527
+#define EL_BDX_ACID_SCANNED                    1528
+#define EL_BDX_FALLING_WALL_FALLING_SCANNED    1529
+#define EL_BDX_COW_LEFT_SCANNED                        1530
+#define EL_BDX_COW_UP_SCANNED                  1531
+#define EL_BDX_COW_RIGHT_SCANNED               1532
+#define EL_BDX_COW_DOWN_SCANNED                        1533
+#define EL_BDX_AMOEBA_1_SCANNED                        1534
+#define EL_BDX_AMOEBA_2_SCANNED                        1535
+#define EL_BDX_WAITING_ROCK_SCANNED            1536
+#define EL_BDX_CHASING_ROCK_SCANNED            1537
+#define EL_BDX_GHOST_SCANNED                   1538
+#define EL_BDX_FIREFLY_1_RIGHT_SCANNED         1539
+#define EL_BDX_FIREFLY_1_UP_SCANNED            1540
+#define EL_BDX_FIREFLY_1_LEFT_SCANNED          1541
+#define EL_BDX_FIREFLY_1_DOWN_SCANNED          1542
+#define EL_BDX_FIREFLY_2_RIGHT_SCANNED         1543
+#define EL_BDX_FIREFLY_2_UP_SCANNED            1544
+#define EL_BDX_FIREFLY_2_LEFT_SCANNED          1545
+#define EL_BDX_FIREFLY_2_DOWN_SCANNED          1546
+#define EL_BDX_BUTTERFLY_1_RIGHT_SCANNED       1547
+#define EL_BDX_BUTTERFLY_1_UP_SCANNED          1548
+#define EL_BDX_BUTTERFLY_1_LEFT_SCANNED                1549
+#define EL_BDX_BUTTERFLY_1_DOWN_SCANNED                1550
+#define EL_BDX_BUTTERFLY_2_RIGHT_SCANNED       1551
+#define EL_BDX_BUTTERFLY_2_UP_SCANNED          1552
+#define EL_BDX_BUTTERFLY_2_LEFT_SCANNED                1553
+#define EL_BDX_BUTTERFLY_2_DOWN_SCANNED                1554
+#define EL_BDX_STONEFLY_RIGHT_SCANNED          1555
+#define EL_BDX_STONEFLY_UP_SCANNED             1556
+#define EL_BDX_STONEFLY_LEFT_SCANNED           1557
+#define EL_BDX_STONEFLY_DOWN_SCANNED           1558
+#define EL_BDX_BITER_RIGHT_SCANNED             1559
+#define EL_BDX_BITER_UP_SCANNED                        1560
+#define EL_BDX_BITER_LEFT_SCANNED              1561
+#define EL_BDX_BITER_DOWN_SCANNED              1562
+#define EL_BDX_DRAGONFLY_RIGHT_SCANNED         1563
+#define EL_BDX_DRAGONFLY_UP_SCANNED            1564
+#define EL_BDX_DRAGONFLY_LEFT_SCANNED          1565
+#define EL_BDX_DRAGONFLY_DOWN_SCANNED          1566
+#define EL_BDX_PLAYER_SCANNED                  1567
+#define EL_BDX_PLAYER_WITH_BOMB_SCANNED                1568
+#define EL_BDX_PLAYER_WITH_ROCKET_LAUNCHER_SCANNED     1569
+#define EL_BDX_ROCKET_RIGHT_SCANNED            1570
+#define EL_BDX_ROCKET_UP_SCANNED               1571
+#define EL_BDX_ROCKET_LEFT_SCANNED             1572
+#define EL_BDX_ROCKET_DOWN_SCANNED             1573
+#define EL_BDX_NITRO_PACK_SCANNED              1574
+#define EL_BDX_NITRO_PACK_FALLING_SCANNED      1575
+#define EL_BDX_NITRO_PACK_EXPLODING_SCANNED    1576
+#define EL_BDX_CLOCK_GROWING_0                 1577
+#define EL_BDX_DIAMOND_GROWING_0               1578
+#define EL_BDX_EXPLODING_0                     1579
+#define EL_BDX_ROCK_GROWING_0                  1580
+#define EL_BDX_STEELWALL_GROWING_0             1581
+#define EL_BDX_GHOST_EXPLODING_0               1582
+#define EL_BDX_BOMB_EXPLODING_0                        1583
+#define EL_BDX_NITRO_PACK_EXPLODING_0          1584
+#define EL_BDX_AMOEBA_2_EXPLODING_0            1585
+#define EL_BDX_NUT_BREAKING_0                  1586
 #define EL_BDX_SCANNED_END                     EL_BDX_NUT_BREAKING_0
 
 #define EL_BDX_RUNTIME_END                     EL_BDX_SCANNED_END
 #define EL_BDX_END                             EL_BDX_RUNTIME_END
 
-#define NUM_FILE_ELEMENTS                      1583
+#define NUM_FILE_ELEMENTS                      1587
 
 
 // "real" (and therefore drawable) runtime elements
@@ -3807,6 +3811,7 @@ struct LevelInfo
   int bd_magic_wall_diamond_to;                // BD magic wall turns diamonds to specified element
   int bd_magic_wall_rock_to;           // BD magic wall turns rocks to specified element
   int bd_magic_wall_heavy_rock_to;     // BD magic wall turns heavy rocks to specified element
+  int bd_magic_wall_light_rock_to;     // BD magic wall turns light rocks to specified element
   int bd_magic_wall_nut_to;            // BD magic wall turns nuts to specified element
   int bd_magic_wall_nitro_pack_to;     // BD magic wall turns nitro packs to specified element
   int bd_magic_wall_flying_diamond_to; // BD magic wall turns flying diamonds to specified element
index 0322929667410bb8fc79c959aab7a639416f38ac..626f7dc8e49d8a3296634469a39a6b30ebd437db 100644 (file)
@@ -6316,6 +6316,18 @@ bd_object_mapping_list[] =
     O_MEGA_STONE_F,                            FALSE,
     EL_BDX_HEAVY_ROCK,                         ACTION_FALLING, -1
   },
+  {
+    O_LIGHT_STONE,                             TRUE,
+    EL_BDX_LIGHT_ROCK,                         -1, -1
+  },
+  {
+    O_LIGHT_STONE_F,                           TRUE,
+    EL_BDX_LIGHT_ROCK_FALLING,                 -1, -1
+  },
+  {
+    O_LIGHT_STONE_F,                           FALSE,
+    EL_BDX_LIGHT_ROCK,                         ACTION_FALLING, -1
+  },
   {
     O_DIAMOND,                                 TRUE,
     EL_BDX_DIAMOND,                            -1, -1
@@ -7491,6 +7503,14 @@ bd_object_mapping_list[] =
     O_MEGA_STONE_F_scanned,                    TRUE,
     EL_BDX_HEAVY_ROCK_FALLING_SCANNED,         -1, -1
   },
+  {
+    O_LIGHT_STONE_scanned,                     TRUE,
+    EL_BDX_LIGHT_ROCK_SCANNED,                 -1, -1
+  },
+  {
+    O_LIGHT_STONE_F_scanned,                   TRUE,
+    EL_BDX_LIGHT_ROCK_FALLING_SCANNED,         -1, -1
+  },
   {
     O_DIAMOND_scanned,                         TRUE,
     EL_BDX_DIAMOND_SCANNED,                    -1, -1