rnd-20030616-1-src
authorHolger Schemel <info@artsoft.org>
Mon, 16 Jun 2003 01:16:01 +0000 (03:16 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:42:10 +0000 (10:42 +0200)
12 files changed:
src/conf_e2g.c
src/conf_e2s.c
src/conf_gfx.c
src/conf_gfx.h
src/conf_snd.c
src/conf_snd.h
src/conftime.h
src/game.c
src/init.c
src/main.c
src/main.h
src/tools.c

index f53dac2ee648194d4f401e123f0714ff15cd3911..ed2a9abf841404c22a7f1b8e7936813df08c9293 100644 (file)
@@ -180,6 +180,10 @@ element_to_graphic[] =
     EL_BD_FIREFLY,                             ACTION_MOVING, -1,
     IMG_BD_FIREFLY_MOVING
   },
+  {
+    EL_SP_DEFAULT,                             ACTION_EXPLODING, -1,
+    IMG_SP_DEFAULT_EXPLODING
+  },
   {
     EL_SP_EMPTY_SPACE,                         -1, -1,
     IMG_SP_EMPTY_SPACE
@@ -420,6 +424,10 @@ element_to_graphic[] =
     EL_SP_ELECTRON,                            -1, -1,
     IMG_SP_ELECTRON
   },
+  {
+    EL_SP_ELECTRON,                            ACTION_EXPLODING, -1,
+    IMG_SP_ELECTRON_EXPLODING
+  },
   {
     EL_SP_TERMINAL,                            -1, -1,
     IMG_SP_TERMINAL
@@ -2349,8 +2357,8 @@ element_to_graphic[] =
     IMG_PLAYER_4_SNAPPING_RIGHT
   },
   {
-    EL_EXPLOSION,                              -1, -1,
-    IMG_EXPLOSION
+    EL_DEFAULT,                                        ACTION_EXPLODING, -1,
+    IMG_DEFAULT_EXPLODING
   },
   {
     EL_STEELWALL_TOPLEFT,                      -1, -1,
index 76b0dab529650e497764d06734a709992f5ba361..6eb4590233328c519aff73d569b383a110a00e61 100644 (file)
@@ -29,33 +29,41 @@ static struct
 element_to_sound[] =
 {
   {
-    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_DIGGING,
+    EL_DEFAULT, TRUE,                          ACTION_DIGGING,
     SND_CLASS_DEFAULT_DIGGING
   },
   {
-    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_COLLECTING,
+    EL_DEFAULT, TRUE,                          ACTION_COLLECTING,
     SND_CLASS_DEFAULT_COLLECTING
   },
   {
-    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_SNAPPING,
+    EL_DEFAULT, TRUE,                          ACTION_SNAPPING,
     SND_CLASS_DEFAULT_SNAPPING
   },
   {
-    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_PUSHING,
+    EL_DEFAULT, TRUE,                          ACTION_PUSHING,
     SND_CLASS_DEFAULT_PUSHING
   },
   {
-    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_IMPACT,
+    EL_DEFAULT, TRUE,                          ACTION_IMPACT,
     SND_CLASS_DEFAULT_IMPACT
   },
   {
-    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_PASSING,
+    EL_DEFAULT, TRUE,                          ACTION_PASSING,
     SND_CLASS_DEFAULT_PASSING
   },
   {
-    EL_INTERNAL_DEFAULT_ELEMENT, TRUE,         ACTION_EXPLODING,
+    EL_DEFAULT, TRUE,                          ACTION_DYING,
+    SND_CLASS_DEFAULT_DYING
+  },
+  {
+    EL_DEFAULT, TRUE,                          ACTION_EXPLODING,
     SND_CLASS_DEFAULT_EXPLODING
   },
+  {
+    EL_SP_DEFAULT, TRUE,                       ACTION_EXPLODING,
+    SND_CLASS_SP_DEFAULT_EXPLODING
+  },
   {
     EL_BD_DIAMOND, FALSE,                      ACTION_COLLECTING,
     SND_BD_DIAMOND_COLLECTING
@@ -708,10 +716,6 @@ element_to_sound[] =
     EL_DRAGON, FALSE,                          ACTION_ATTACKING,
     SND_DRAGON_ATTACKING
   },
-  {
-    EL_PLAYER_OBSOLETE, TRUE,                  ACTION_DYING,
-    SND_CLASS_PLAYER_DYING
-  },
   {
     -1, -1,                                    -1,
     -1
index 9fa20b787f5b844e015311bd468436632ead9597..721bf8e424c7ce14c7b3a7fd31b7e0d5977bb921 100644 (file)
@@ -208,6 +208,13 @@ struct ConfigInfo image_config[] =
 
   /* images for Supaplex style elements and actions */
 
+  { "[sp_default].exploding",                  "RocksSP.pcx"           },
+  { "[sp_default].exploding.xpos",             "8"                     },
+  { "[sp_default].exploding.ypos",             "3"                     },
+  { "[sp_default].exploding.frames",           "8"                     },
+  { "[sp_default].exploding.delay",            "3"                     },
+  { "[sp_default].exploding.anim_mode",                "linear"                },
+
   { "sp_empty_space",                          "RocksSP.pcx"           },
   { "sp_empty_space.xpos",                     "0"                     },
   { "sp_empty_space.ypos",                     "0"                     },
@@ -485,6 +492,12 @@ struct ConfigInfo image_config[] =
   { "sp_electron.EDITOR",                      "RocksSP.pcx"           },
   { "sp_electron.EDITOR.xpos",                 "10"                    },
   { "sp_electron.EDITOR.ypos",                 "11"                    },
+  { "sp_electron.exploding",                   "RocksSP.pcx"           },
+  { "sp_electron.exploding.xpos",              "8"                     },
+  { "sp_electron.exploding.ypos",              "4"                     },
+  { "sp_electron.exploding.frames",            "8"                     },
+  { "sp_electron.exploding.delay",             "3"                     },
+  { "sp_electron.exploding.anim_mode",         "linear"                },
 
   { "sp_terminal",                             "RocksSP.pcx"           },
   { "sp_terminal.xpos",                                "0"                     },
@@ -542,19 +555,6 @@ struct ConfigInfo image_config[] =
   { "sp_hardware_base_6.ypos",                 "4"                     },
   { "sp_hardware_base_6.frames",               "1"                     },
 
-  { "sp_explosion",                            "RocksSP.pcx"           },
-  { "sp_explosion.xpos",                       "8"                     },
-  { "sp_explosion.ypos",                       "3"                     },
-  { "sp_explosion.frames",                     "8"                     },
-  { "sp_explosion.delay",                      "3"                     },
-  { "sp_explosion.anim_mode",                  "linear"                },
-  { "sp_explosion_infotron",                   "RocksSP.pcx"           },
-  { "sp_explosion_infotron.xpos",              "8"                     },
-  { "sp_explosion_infotron.ypos",              "4"                     },
-  { "sp_explosion_infotron.frames",            "8"                     },
-  { "sp_explosion.delay",                      "3"                     },
-  { "sp_explosion.anim_mode",                  "linear"                },
-
   /* images for Sokoban style elements and actions */
 
   { "sokoban_object",                          "RocksElements.pcx"     },
@@ -2798,12 +2798,12 @@ struct ConfigInfo image_config[] =
   { "player_4.snapping.right.ypos",            "10"                    },
   { "player_4.snapping.right.frames",          "1"                     },
 
-  { "explosion",                               "RocksElements.pcx"     },
-  { "explosion.xpos",                          "0"                     },
-  { "explosion.ypos",                          "4"                     },
-  { "explosion.frames",                                "8"                     },
-  { "explosion.delay",                         "2"                     },
-  { "explosion.anim_mode",                     "linear"                },
+  { "[default].exploding",                     "RocksElements.pcx"     },
+  { "[default].exploding.xpos",                        "0"                     },
+  { "[default].exploding.ypos",                        "4"                     },
+  { "[default].exploding.frames",              "8"                     },
+  { "[default].exploding.delay",               "2"                     },
+  { "[default].exploding.anim_mode",           "linear"                },
 
   { "twinkle_blue",                            "RocksHeroes.pcx"       },
   { "twinkle_blue.xpos",                       "9"                     },
index 92b6b767214d5a835a1eb0e4b96f7ead5062799a..62fd13074774852953ad2b228a6ee2b46a387bd3 100644 (file)
 #define IMG_BD_FIREFLY_LEFT                            27
 #define IMG_BD_FIREFLY_DOWN                            28
 #define IMG_BD_FIREFLY_MOVING                          29
-#define IMG_SP_EMPTY_SPACE                             30
-#define IMG_SP_ZONK                                    31
-#define IMG_SP_ZONK_FALLING                            32
-#define IMG_SP_ZONK_MOVING_LEFT                                33
-#define IMG_SP_ZONK_MOVING_RIGHT                       34
-#define IMG_SP_BASE                                    35
-#define IMG_SP_MURPHY                                  36
-#define IMG_SP_MURPHY_MOVING_LEFT                      37
-#define IMG_SP_MURPHY_MOVING_RIGHT                     38
-#define IMG_SP_MURPHY_DIGGING_LEFT                     39
-#define IMG_SP_MURPHY_DIGGING_RIGHT                    40
-#define IMG_SP_MURPHY_COLLECTING_LEFT                  41
-#define IMG_SP_MURPHY_COLLECTING_RIGHT                 42
-#define IMG_SP_MURPHY_PUSHING_LEFT                     43
-#define IMG_SP_MURPHY_PUSHING_RIGHT                    44
-#define IMG_SP_MURPHY_SNAPPING_LEFT                    45
-#define IMG_SP_MURPHY_SNAPPING_RIGHT                   46
-#define IMG_SP_MURPHY_SNAPPING_UP                      47
-#define IMG_SP_MURPHY_SNAPPING_DOWN                    48
-#define IMG_SP_MURPHY_CLONE                            49
-#define IMG_SP_INFOTRON                                        50
-#define IMG_SP_INFOTRON_EDITOR                         51
-#define IMG_SP_INFOTRON_FALLING                                52
-#define IMG_SP_CHIP_SINGLE                             53
-#define IMG_SP_CHIP_LEFT                               54
-#define IMG_SP_CHIP_RIGHT                              55
-#define IMG_SP_CHIP_TOP                                        56
-#define IMG_SP_CHIP_BOTTOM                             57
-#define IMG_SP_HARDWARE_GRAY                           58
-#define IMG_SP_HARDWARE_GREEN                          59
-#define IMG_SP_HARDWARE_BLUE                           60
-#define IMG_SP_HARDWARE_RED                            61
-#define IMG_SP_HARDWARE_YELLOW                         62
-#define IMG_SP_EXIT_CLOSED                             63
-#define IMG_SP_EXIT_OPEN                               64
-#define IMG_SP_DISK_ORANGE                             65
-#define IMG_SP_DISK_ORANGE_FALLING                     66
-#define IMG_SP_DISK_ORANGE_PUSHING                     67
-#define IMG_SP_DISK_YELLOW                             68
-#define IMG_SP_DISK_YELLOW_PUSHING                     69
-#define IMG_SP_DISK_RED                                        70
-#define IMG_SP_DISK_RED_COLLECTING                     71
-#define IMG_SP_DISK_RED_ACTIVE                         72
-#define IMG_SP_PORT_RIGHT                              73
-#define IMG_SP_PORT_DOWN                               74
-#define IMG_SP_PORT_LEFT                               75
-#define IMG_SP_PORT_UP                                 76
-#define IMG_SP_PORT_HORIZONTAL                         77
-#define IMG_SP_PORT_VERTICAL                           78
-#define IMG_SP_PORT_ANY                                        79
-#define IMG_SP_GRAVITY_PORT_RIGHT                      80
-#define IMG_SP_GRAVITY_PORT_DOWN                       81
-#define IMG_SP_GRAVITY_PORT_LEFT                       82
-#define IMG_SP_GRAVITY_PORT_UP                         83
-#define IMG_SP_SNIKSNAK                                        84
-#define IMG_SP_SNIKSNAK_LEFT                           85
-#define IMG_SP_SNIKSNAK_RIGHT                          86
-#define IMG_SP_SNIKSNAK_UP                             87
-#define IMG_SP_SNIKSNAK_DOWN                           88
-#define IMG_SP_ELECTRON                                        89
-#define IMG_SP_ELECTRON_EDITOR                         90
-#define IMG_SP_TERMINAL                                        91
-#define IMG_SP_TERMINAL_EDITOR                         92
-#define IMG_SP_TERMINAL_ACTIVE                         93
-#define IMG_SP_BUGGY_BASE                              94
-#define IMG_SP_BUGGY_BASE_EDITOR                       95
-#define IMG_SP_BUGGY_BASE_ACTIVATING                   96
-#define IMG_SP_BUGGY_BASE_ACTIVE                       97
-#define IMG_SP_HARDWARE_BASE_1                         98
-#define IMG_SP_HARDWARE_BASE_2                         99
-#define IMG_SP_HARDWARE_BASE_3                         100
-#define IMG_SP_HARDWARE_BASE_4                         101
-#define IMG_SP_HARDWARE_BASE_5                         102
-#define IMG_SP_HARDWARE_BASE_6                         103
-#define IMG_SP_EXPLOSION                               104
-#define IMG_SP_EXPLOSION_INFOTRON                      105
+#define IMG_SP_DEFAULT_EXPLODING                       30
+#define IMG_SP_EMPTY_SPACE                             31
+#define IMG_SP_ZONK                                    32
+#define IMG_SP_ZONK_FALLING                            33
+#define IMG_SP_ZONK_MOVING_LEFT                                34
+#define IMG_SP_ZONK_MOVING_RIGHT                       35
+#define IMG_SP_BASE                                    36
+#define IMG_SP_MURPHY                                  37
+#define IMG_SP_MURPHY_MOVING_LEFT                      38
+#define IMG_SP_MURPHY_MOVING_RIGHT                     39
+#define IMG_SP_MURPHY_DIGGING_LEFT                     40
+#define IMG_SP_MURPHY_DIGGING_RIGHT                    41
+#define IMG_SP_MURPHY_COLLECTING_LEFT                  42
+#define IMG_SP_MURPHY_COLLECTING_RIGHT                 43
+#define IMG_SP_MURPHY_PUSHING_LEFT                     44
+#define IMG_SP_MURPHY_PUSHING_RIGHT                    45
+#define IMG_SP_MURPHY_SNAPPING_LEFT                    46
+#define IMG_SP_MURPHY_SNAPPING_RIGHT                   47
+#define IMG_SP_MURPHY_SNAPPING_UP                      48
+#define IMG_SP_MURPHY_SNAPPING_DOWN                    49
+#define IMG_SP_MURPHY_CLONE                            50
+#define IMG_SP_INFOTRON                                        51
+#define IMG_SP_INFOTRON_EDITOR                         52
+#define IMG_SP_INFOTRON_FALLING                                53
+#define IMG_SP_CHIP_SINGLE                             54
+#define IMG_SP_CHIP_LEFT                               55
+#define IMG_SP_CHIP_RIGHT                              56
+#define IMG_SP_CHIP_TOP                                        57
+#define IMG_SP_CHIP_BOTTOM                             58
+#define IMG_SP_HARDWARE_GRAY                           59
+#define IMG_SP_HARDWARE_GREEN                          60
+#define IMG_SP_HARDWARE_BLUE                           61
+#define IMG_SP_HARDWARE_RED                            62
+#define IMG_SP_HARDWARE_YELLOW                         63
+#define IMG_SP_EXIT_CLOSED                             64
+#define IMG_SP_EXIT_OPEN                               65
+#define IMG_SP_DISK_ORANGE                             66
+#define IMG_SP_DISK_ORANGE_FALLING                     67
+#define IMG_SP_DISK_ORANGE_PUSHING                     68
+#define IMG_SP_DISK_YELLOW                             69
+#define IMG_SP_DISK_YELLOW_PUSHING                     70
+#define IMG_SP_DISK_RED                                        71
+#define IMG_SP_DISK_RED_COLLECTING                     72
+#define IMG_SP_DISK_RED_ACTIVE                         73
+#define IMG_SP_PORT_RIGHT                              74
+#define IMG_SP_PORT_DOWN                               75
+#define IMG_SP_PORT_LEFT                               76
+#define IMG_SP_PORT_UP                                 77
+#define IMG_SP_PORT_HORIZONTAL                         78
+#define IMG_SP_PORT_VERTICAL                           79
+#define IMG_SP_PORT_ANY                                        80
+#define IMG_SP_GRAVITY_PORT_RIGHT                      81
+#define IMG_SP_GRAVITY_PORT_DOWN                       82
+#define IMG_SP_GRAVITY_PORT_LEFT                       83
+#define IMG_SP_GRAVITY_PORT_UP                         84
+#define IMG_SP_SNIKSNAK                                        85
+#define IMG_SP_SNIKSNAK_LEFT                           86
+#define IMG_SP_SNIKSNAK_RIGHT                          87
+#define IMG_SP_SNIKSNAK_UP                             88
+#define IMG_SP_SNIKSNAK_DOWN                           89
+#define IMG_SP_ELECTRON                                        90
+#define IMG_SP_ELECTRON_EDITOR                         91
+#define IMG_SP_ELECTRON_EXPLODING                      92
+#define IMG_SP_TERMINAL                                        93
+#define IMG_SP_TERMINAL_EDITOR                         94
+#define IMG_SP_TERMINAL_ACTIVE                         95
+#define IMG_SP_BUGGY_BASE                              96
+#define IMG_SP_BUGGY_BASE_EDITOR                       97
+#define IMG_SP_BUGGY_BASE_ACTIVATING                   98
+#define IMG_SP_BUGGY_BASE_ACTIVE                       99
+#define IMG_SP_HARDWARE_BASE_1                         100
+#define IMG_SP_HARDWARE_BASE_2                         101
+#define IMG_SP_HARDWARE_BASE_3                         102
+#define IMG_SP_HARDWARE_BASE_4                         103
+#define IMG_SP_HARDWARE_BASE_5                         104
+#define IMG_SP_HARDWARE_BASE_6                         105
 #define IMG_SOKOBAN_OBJECT                             106
 #define IMG_SOKOBAN_OBJECT_EDITOR                      107
 #define IMG_SOKOBAN_FIELD_EMPTY                                108
 #define IMG_PLAYER_4_SNAPPING_UP                       566
 #define IMG_PLAYER_4_SNAPPING_LEFT                     567
 #define IMG_PLAYER_4_SNAPPING_RIGHT                    568
-#define IMG_EXPLOSION                                  569
+#define IMG_DEFAULT_EXPLODING                          569
 #define IMG_TWINKLE_BLUE                               570
 #define IMG_TWINKLE_WHITE                              571
 #define IMG_STEELWALL_TOPLEFT                          572
index 2471514f8d0f41597e3ac379a758c8328fa25c6c..39270885c651b82ed226711b36e19d7ec20a4fee 100644 (file)
@@ -29,13 +29,15 @@ struct ConfigInfo sound_config_suffix[] =
 struct ConfigInfo sound_config[] =
 {
   /* some default sounds */
-  { "[DEFAULT].digging",               "schlurf.wav"           },
-  { "[DEFAULT].collecting",            "pong.wav"              },
-  { "[DEFAULT].snapping",              "pong.wav"              },
-  { "[DEFAULT].pushing",               "pusch.wav"             },
-  { "[DEFAULT].impact",                        "klopf.wav"             },
-  { "[DEFAULT].passing",               "gate.wav"              },
-  { "[DEFAULT].exploding",             "roaaar.wav"            },
+  { "[default].digging",               "schlurf.wav"           },
+  { "[default].collecting",            "pong.wav"              },
+  { "[default].snapping",              "pong.wav"              },
+  { "[default].pushing",               "pusch.wav"             },
+  { "[default].impact",                        "klopf.wav"             },
+  { "[default].passing",               "gate.wav"              },
+  { "[default].dying",                 "autsch.wav"            },
+  { "[default].exploding",             "roaaar.wav"            },
+  { "[sp_default].exploding",          "booom.wav"             },
 
   /* sounds for Boulder Dash style elements and actions */
   { "bd_diamond.collecting",           "pong.wav"              },
@@ -209,11 +211,6 @@ struct ConfigInfo sound_config[] =
   { "dragon.waiting",                  UNDEFINED_FILENAME      },
   { "dragon.attacking",                        UNDEFINED_FILENAME      },
 
-  /* sounds for generic elements and actions */
-  { "[player].dying",                  "autsch.wav"            },
-  { "element.exploding",               "roaaar.wav"            },
-  { "sp_element.exploding",            "booom.wav"             },
-
   /* sounds not associated to game elements (used for menu screens etc.) */
   /* keyword to stop parser: "NO_MORE_ELEMENT_SOUNDS" <-- do not change! */
 
index b6d426c0e768779ab0ebd41cf41d9d8f95a61e12..76486b633f8cccfb65d8a0757af24ea38f8f2437 100644 (file)
 #define SND_CLASS_DEFAULT_PUSHING                              3
 #define SND_CLASS_DEFAULT_IMPACT                               4
 #define SND_CLASS_DEFAULT_PASSING                              5
-#define SND_CLASS_DEFAULT_EXPLODING                            6
-#define SND_BD_DIAMOND_COLLECTING                              7
-#define SND_BD_DIAMOND_IMPACT                          8
-#define SND_BD_ROCK_PUSHING                                    9
-#define SND_BD_ROCK_IMPACT                                     10
-#define SND_BD_MAGIC_WALL_ACTIVATING                   11
-#define SND_BD_MAGIC_WALL_ACTIVE                               12
-#define SND_BD_MAGIC_WALL_FILLING                              13
-#define SND_BD_AMOEBA_WAITING                          14
-#define SND_BD_AMOEBA_GROWING                          15
-#define SND_BD_AMOEBA_TURNING_TO_GEM                   16
-#define SND_BD_AMOEBA_TURNING_TO_ROCK                  17
-#define SND_BD_BUTTERFLY_MOVING                                18
-#define SND_BD_BUTTERFLY_WAITING                               19
-#define SND_BD_FIREFLY_MOVING                          20
-#define SND_BD_FIREFLY_WAITING                         21
-#define SND_SP_BASE_DIGGING                                    22
-#define SND_SP_BUGGY_BASE_DIGGING                              23
-#define SND_SP_BUGGY_BASE_ACTIVE                               24
-#define SND_SP_INFOTRON_COLLECTING                             25
-#define SND_SP_INFOTRON_IMPACT                         26
-#define SND_SP_ZONK_PUSHING                                    27
-#define SND_SP_ZONK_IMPACT                                     28
-#define SND_SP_DISK_RED_COLLECTING                             29
-#define SND_SP_DISK_ORANGE_PUSHING                             30
-#define SND_SP_DISK_YELLOW_PUSHING                             31
-#define SND_CLASS_SP_PORT_PASSING                              32
-#define SND_CLASS_SP_EXIT_PASSING                              33
-#define SND_CLASS_SP_EXIT_OPENING                              34
-#define SND_SP_SNIKSNAK_MOVING                         35
-#define SND_SP_SNIKSNAK_WAITING                                36
-#define SND_SP_ELECTRON_MOVING                         37
-#define SND_SP_ELECTRON_WAITING                                38
-#define SND_SP_TERMINAL_ACTIVATING                             39
-#define SND_SP_TERMINAL_ACTIVE                         40
-#define SND_CLASS_SOKOBAN_PUSHING                              41
-#define SND_CLASS_SOKOBAN_FILLING                              42
-#define SND_CLASS_SOKOBAN_EMPTYING                             43
-#define SND_EMPTY_SPACE_DIGGING                                44
-#define SND_SAND_DIGGING                                       45
-#define SND_EMERALD_COLLECTING                         46
-#define SND_EMERALD_IMPACT                                     47
-#define SND_DIAMOND_COLLECTING                         48
-#define SND_DIAMOND_IMPACT                                     49
-#define SND_DIAMOND_BREAKING                           50
-#define SND_ROCK_PUSHING                                       51
-#define SND_ROCK_IMPACT                                        52
-#define SND_BOMB_PUSHING                                       53
-#define SND_NUT_PUSHING                                        54
-#define SND_NUT_BREAKING                                       55
-#define SND_NUT_IMPACT                                 56
-#define SND_CLASS_DYNAMITE_COLLECTING                          57
-#define SND_CLASS_DYNAMITE_DROPPING                            58
-#define SND_CLASS_DYNAMITE_ACTIVE                              59
-#define SND_CLASS_KEY_COLLECTING                               60
-#define SND_CLASS_GATE_PASSING                                 61
-#define SND_BUG_MOVING                                 62
-#define SND_BUG_WAITING                                        63
-#define SND_SPACESHIP_MOVING                           64
-#define SND_SPACESHIP_WAITING                          65
-#define SND_YAMYAM_MOVING                                      66
-#define SND_YAMYAM_WAITING                                     67
-#define SND_YAMYAM_DIGGING                                     68
-#define SND_ROBOT_MOVING                                       69
-#define SND_ROBOT_WAITING                                      70
-#define SND_ROBOT_WHEEL_ACTIVATING                             71
-#define SND_ROBOT_WHEEL_ACTIVE                         72
-#define SND_MAGIC_WALL_ACTIVATING                              73
-#define SND_MAGIC_WALL_ACTIVE                          74
-#define SND_MAGIC_WALL_FILLING                         75
-#define SND_CLASS_AMOEBA_WAITING                               76
-#define SND_CLASS_AMOEBA_GROWING                               77
-#define SND_CLASS_AMOEBA_DROPPING                              78
-#define SND_ACID_SPLASHING                                     79
-#define SND_CLASS_QUICKSAND_FILLING                            80
-#define SND_CLASS_QUICKSAND_EMPTYING                           81
-#define SND_CLASS_EXIT_OPENING                                 82
-#define SND_CLASS_EXIT_PASSING                                 83
-#define SND_PENGUIN_PASSING                                    84
-#define SND_BALLOON_MOVING                                     85
-#define SND_BALLOON_WAITING                                    86
-#define SND_BALLOON_PUSHING                                    87
-#define SND_CLASS_BALLOON_SWITCH_ACTIVATING                    88
-#define SND_SPRING_MOVING                                      89
-#define SND_SPRING_PUSHING                                     90
-#define SND_SPRING_IMPACT                                      91
-#define SND_CLASS_WALL_GROWING                                 92
-#define SND_PEARL_COLLECTING                           93
-#define SND_PEARL_BREAKING                                     94
-#define SND_PEARL_IMPACT                                       95
-#define SND_CRYSTAL_COLLECTING                         96
-#define SND_CRYSTAL_IMPACT                                     97
-#define SND_ENVELOPE_COLLECTING                                98
-#define SND_INVISIBLE_SAND_DIGGING                             99
-#define SND_SHIELD_NORMAL_COLLECTING                   100
-#define SND_SHIELD_NORMAL_ACTIVE                               101
-#define SND_SHIELD_DEADLY_COLLECTING                   102
-#define SND_SHIELD_DEADLY_ACTIVE                               103
-#define SND_EXTRA_TIME_COLLECTING                              104
-#define SND_MOLE_MOVING                                        105
-#define SND_MOLE_WAITING                                       106
-#define SND_MOLE_DIGGING                                       107
-#define SND_CLASS_SWITCHGATE_SWITCH_ACTIVATING                 108
-#define SND_CLASS_SWITCHGATE_OPENING                           109
-#define SND_CLASS_SWITCHGATE_CLOSING                           110
-#define SND_CLASS_SWITCHGATE_PASSING                           111
-#define SND_TIMEGATE_SWITCH_ACTIVATING                 112
-#define SND_TIMEGATE_SWITCH_ACTIVE                             113
-#define SND_TIMEGATE_SWITCH_DEACTIVATING                       114
-#define SND_TIMEGATE_OPENING                           115
-#define SND_CLASS_TIMEGATE_CLOSING                             116
-#define SND_CLASS_TIMEGATE_PASSING                             117
-#define SND_CLASS_CONVEYOR_BELT_SWITCH_ACTIVATING              118
-#define SND_CLASS_CONVEYOR_BELT_ACTIVE                         119
-#define SND_CLASS_CONVEYOR_BELT_SWITCH_DEACTIVATING            120
-#define SND_LIGHT_SWITCH_ACTIVATING                            121
-#define SND_LIGHT_SWITCH_DEACTIVATING                  122
-#define SND_DX_SUPABOMB_PUSHING                                123
-#define SND_TRAP_DIGGING                                       124
-#define SND_TRAP_ACTIVATING                                    125
-#define SND_CLASS_TUBE_PASSING                                 126
-#define SND_AMOEBA_TURNING_TO_GEM                              127
-#define SND_AMOEBA_TURNING_TO_ROCK                             128
-#define SND_SPEED_PILL_COLLECTING                              129
-#define SND_DYNABOMB_INCREASE_NUMBER_COLLECTING                130
-#define SND_DYNABOMB_INCREASE_SIZE_COLLECTING          131
-#define SND_DYNABOMB_INCREASE_POWER_COLLECTING         132
-#define SND_CLASS_DYNABOMB_DROPPING                            133
-#define SND_CLASS_DYNABOMB_ACTIVE                              134
-#define SND_SATELLITE_MOVING                           135
-#define SND_SATELLITE_WAITING                          136
-#define SND_SATELLITE_PUSHING                          137
-#define SND_LAMP_ACTIVATING                                    138
-#define SND_LAMP_DEACTIVATING                          139
-#define SND_TIME_ORB_FULL_COLLECTING                   140
-#define SND_TIME_ORB_FULL_IMPACT                               141
-#define SND_TIME_ORB_EMPTY_PUSHING                             142
-#define SND_TIME_ORB_EMPTY_IMPACT                              143
-#define SND_GAME_OF_LIFE_WAITING                               144
-#define SND_GAME_OF_LIFE_GROWING                               145
-#define SND_BIOMAZE_WAITING                                    146
-#define SND_BIOMAZE_GROWING                                    147
-#define SND_PACMAN_MOVING                                      148
-#define SND_PACMAN_WAITING                                     149
-#define SND_PACMAN_DIGGING                                     150
-#define SND_DARK_YAMYAM_MOVING                         151
-#define SND_DARK_YAMYAM_WAITING                                152
-#define SND_DARK_YAMYAM_DIGGING                                153
-#define SND_PENGUIN_MOVING                                     154
-#define SND_PENGUIN_WAITING                                    155
-#define SND_PIG_MOVING                                 156
-#define SND_PIG_WAITING                                        157
-#define SND_PIG_DIGGING                                        158
-#define SND_DRAGON_MOVING                                      159
-#define SND_DRAGON_WAITING                                     160
-#define SND_DRAGON_ATTACKING                           161
-#define SND_CLASS_PLAYER_DYING                                 162
-#define SND_ELEMENT_EXPLODING                          163
-#define SND_SP_ELEMENT_EXPLODING                               164
-#define SND_GAME_STARTING                                      165
-#define SND_GAME_RUNNING_OUT_OF_TIME                   166
-#define SND_GAME_LEVELTIME_BONUS                               167
-#define SND_GAME_LOSING                                        168
-#define SND_GAME_WINNING                                       169
-#define SND_GAME_SOKOBAN_SOLVING                               170
-#define SND_DOOR_OPENING                                       171
-#define SND_DOOR_CLOSING                                       172
-#define SND_BACKGROUND_SCORES                          173
-#define SND_BACKGROUND_INFO                                    174
+#define SND_CLASS_DEFAULT_DYING                                        6
+#define SND_CLASS_DEFAULT_EXPLODING                            7
+#define SND_CLASS_SP_DEFAULT_EXPLODING                         8
+#define SND_BD_DIAMOND_COLLECTING                              9
+#define SND_BD_DIAMOND_IMPACT                          10
+#define SND_BD_ROCK_PUSHING                                    11
+#define SND_BD_ROCK_IMPACT                                     12
+#define SND_BD_MAGIC_WALL_ACTIVATING                   13
+#define SND_BD_MAGIC_WALL_ACTIVE                               14
+#define SND_BD_MAGIC_WALL_FILLING                              15
+#define SND_BD_AMOEBA_WAITING                          16
+#define SND_BD_AMOEBA_GROWING                          17
+#define SND_BD_AMOEBA_TURNING_TO_GEM                   18
+#define SND_BD_AMOEBA_TURNING_TO_ROCK                  19
+#define SND_BD_BUTTERFLY_MOVING                                20
+#define SND_BD_BUTTERFLY_WAITING                               21
+#define SND_BD_FIREFLY_MOVING                          22
+#define SND_BD_FIREFLY_WAITING                         23
+#define SND_SP_BASE_DIGGING                                    24
+#define SND_SP_BUGGY_BASE_DIGGING                              25
+#define SND_SP_BUGGY_BASE_ACTIVE                               26
+#define SND_SP_INFOTRON_COLLECTING                             27
+#define SND_SP_INFOTRON_IMPACT                         28
+#define SND_SP_ZONK_PUSHING                                    29
+#define SND_SP_ZONK_IMPACT                                     30
+#define SND_SP_DISK_RED_COLLECTING                             31
+#define SND_SP_DISK_ORANGE_PUSHING                             32
+#define SND_SP_DISK_YELLOW_PUSHING                             33
+#define SND_CLASS_SP_PORT_PASSING                              34
+#define SND_CLASS_SP_EXIT_PASSING                              35
+#define SND_CLASS_SP_EXIT_OPENING                              36
+#define SND_SP_SNIKSNAK_MOVING                         37
+#define SND_SP_SNIKSNAK_WAITING                                38
+#define SND_SP_ELECTRON_MOVING                         39
+#define SND_SP_ELECTRON_WAITING                                40
+#define SND_SP_TERMINAL_ACTIVATING                             41
+#define SND_SP_TERMINAL_ACTIVE                         42
+#define SND_CLASS_SOKOBAN_PUSHING                              43
+#define SND_CLASS_SOKOBAN_FILLING                              44
+#define SND_CLASS_SOKOBAN_EMPTYING                             45
+#define SND_EMPTY_SPACE_DIGGING                                46
+#define SND_SAND_DIGGING                                       47
+#define SND_EMERALD_COLLECTING                         48
+#define SND_EMERALD_IMPACT                                     49
+#define SND_DIAMOND_COLLECTING                         50
+#define SND_DIAMOND_IMPACT                                     51
+#define SND_DIAMOND_BREAKING                           52
+#define SND_ROCK_PUSHING                                       53
+#define SND_ROCK_IMPACT                                        54
+#define SND_BOMB_PUSHING                                       55
+#define SND_NUT_PUSHING                                        56
+#define SND_NUT_BREAKING                                       57
+#define SND_NUT_IMPACT                                 58
+#define SND_CLASS_DYNAMITE_COLLECTING                          59
+#define SND_CLASS_DYNAMITE_DROPPING                            60
+#define SND_CLASS_DYNAMITE_ACTIVE                              61
+#define SND_CLASS_KEY_COLLECTING                               62
+#define SND_CLASS_GATE_PASSING                                 63
+#define SND_BUG_MOVING                                 64
+#define SND_BUG_WAITING                                        65
+#define SND_SPACESHIP_MOVING                           66
+#define SND_SPACESHIP_WAITING                          67
+#define SND_YAMYAM_MOVING                                      68
+#define SND_YAMYAM_WAITING                                     69
+#define SND_YAMYAM_DIGGING                                     70
+#define SND_ROBOT_MOVING                                       71
+#define SND_ROBOT_WAITING                                      72
+#define SND_ROBOT_WHEEL_ACTIVATING                             73
+#define SND_ROBOT_WHEEL_ACTIVE                         74
+#define SND_MAGIC_WALL_ACTIVATING                              75
+#define SND_MAGIC_WALL_ACTIVE                          76
+#define SND_MAGIC_WALL_FILLING                         77
+#define SND_CLASS_AMOEBA_WAITING                               78
+#define SND_CLASS_AMOEBA_GROWING                               79
+#define SND_CLASS_AMOEBA_DROPPING                              80
+#define SND_ACID_SPLASHING                                     81
+#define SND_CLASS_QUICKSAND_FILLING                            82
+#define SND_CLASS_QUICKSAND_EMPTYING                           83
+#define SND_CLASS_EXIT_OPENING                                 84
+#define SND_CLASS_EXIT_PASSING                                 85
+#define SND_PENGUIN_PASSING                                    86
+#define SND_BALLOON_MOVING                                     87
+#define SND_BALLOON_WAITING                                    88
+#define SND_BALLOON_PUSHING                                    89
+#define SND_CLASS_BALLOON_SWITCH_ACTIVATING                    90
+#define SND_SPRING_MOVING                                      91
+#define SND_SPRING_PUSHING                                     92
+#define SND_SPRING_IMPACT                                      93
+#define SND_CLASS_WALL_GROWING                                 94
+#define SND_PEARL_COLLECTING                           95
+#define SND_PEARL_BREAKING                                     96
+#define SND_PEARL_IMPACT                                       97
+#define SND_CRYSTAL_COLLECTING                         98
+#define SND_CRYSTAL_IMPACT                                     99
+#define SND_ENVELOPE_COLLECTING                                100
+#define SND_INVISIBLE_SAND_DIGGING                             101
+#define SND_SHIELD_NORMAL_COLLECTING                   102
+#define SND_SHIELD_NORMAL_ACTIVE                               103
+#define SND_SHIELD_DEADLY_COLLECTING                   104
+#define SND_SHIELD_DEADLY_ACTIVE                               105
+#define SND_EXTRA_TIME_COLLECTING                              106
+#define SND_MOLE_MOVING                                        107
+#define SND_MOLE_WAITING                                       108
+#define SND_MOLE_DIGGING                                       109
+#define SND_CLASS_SWITCHGATE_SWITCH_ACTIVATING                 110
+#define SND_CLASS_SWITCHGATE_OPENING                           111
+#define SND_CLASS_SWITCHGATE_CLOSING                           112
+#define SND_CLASS_SWITCHGATE_PASSING                           113
+#define SND_TIMEGATE_SWITCH_ACTIVATING                 114
+#define SND_TIMEGATE_SWITCH_ACTIVE                             115
+#define SND_TIMEGATE_SWITCH_DEACTIVATING                       116
+#define SND_TIMEGATE_OPENING                           117
+#define SND_CLASS_TIMEGATE_CLOSING                             118
+#define SND_CLASS_TIMEGATE_PASSING                             119
+#define SND_CLASS_CONVEYOR_BELT_SWITCH_ACTIVATING              120
+#define SND_CLASS_CONVEYOR_BELT_ACTIVE                         121
+#define SND_CLASS_CONVEYOR_BELT_SWITCH_DEACTIVATING            122
+#define SND_LIGHT_SWITCH_ACTIVATING                            123
+#define SND_LIGHT_SWITCH_DEACTIVATING                  124
+#define SND_DX_SUPABOMB_PUSHING                                125
+#define SND_TRAP_DIGGING                                       126
+#define SND_TRAP_ACTIVATING                                    127
+#define SND_CLASS_TUBE_PASSING                                 128
+#define SND_AMOEBA_TURNING_TO_GEM                              129
+#define SND_AMOEBA_TURNING_TO_ROCK                             130
+#define SND_SPEED_PILL_COLLECTING                              131
+#define SND_DYNABOMB_INCREASE_NUMBER_COLLECTING                132
+#define SND_DYNABOMB_INCREASE_SIZE_COLLECTING          133
+#define SND_DYNABOMB_INCREASE_POWER_COLLECTING         134
+#define SND_CLASS_DYNABOMB_DROPPING                            135
+#define SND_CLASS_DYNABOMB_ACTIVE                              136
+#define SND_SATELLITE_MOVING                           137
+#define SND_SATELLITE_WAITING                          138
+#define SND_SATELLITE_PUSHING                          139
+#define SND_LAMP_ACTIVATING                                    140
+#define SND_LAMP_DEACTIVATING                          141
+#define SND_TIME_ORB_FULL_COLLECTING                   142
+#define SND_TIME_ORB_FULL_IMPACT                               143
+#define SND_TIME_ORB_EMPTY_PUSHING                             144
+#define SND_TIME_ORB_EMPTY_IMPACT                              145
+#define SND_GAME_OF_LIFE_WAITING                               146
+#define SND_GAME_OF_LIFE_GROWING                               147
+#define SND_BIOMAZE_WAITING                                    148
+#define SND_BIOMAZE_GROWING                                    149
+#define SND_PACMAN_MOVING                                      150
+#define SND_PACMAN_WAITING                                     151
+#define SND_PACMAN_DIGGING                                     152
+#define SND_DARK_YAMYAM_MOVING                         153
+#define SND_DARK_YAMYAM_WAITING                                154
+#define SND_DARK_YAMYAM_DIGGING                                155
+#define SND_PENGUIN_MOVING                                     156
+#define SND_PENGUIN_WAITING                                    157
+#define SND_PIG_MOVING                                 158
+#define SND_PIG_WAITING                                        159
+#define SND_PIG_DIGGING                                        160
+#define SND_DRAGON_MOVING                                      161
+#define SND_DRAGON_WAITING                                     162
+#define SND_DRAGON_ATTACKING                           163
+#define SND_GAME_STARTING                                      164
+#define SND_GAME_RUNNING_OUT_OF_TIME                   165
+#define SND_GAME_LEVELTIME_BONUS                               166
+#define SND_GAME_LOSING                                        167
+#define SND_GAME_WINNING                                       168
+#define SND_GAME_SOKOBAN_SOLVING                               169
+#define SND_DOOR_OPENING                                       170
+#define SND_DOOR_CLOSING                                       171
+#define SND_BACKGROUND_SCORES                          172
+#define SND_BACKGROUND_INFO                                    173
 
-#define NUM_SOUND_FILES                                175
+#define NUM_SOUND_FILES                                174
 
 #endif /* CONF_SND_H */
index b80e0109adba89238c92ba61b63a23ebdc06aa5a..06b76cab5c886fa2d2cf040c65f6460a03e549e6 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-06-15 03:27]"
+#define COMPILE_DATE_STRING "[2003-06-16 03:06]"
index 2f6eb82fa5fca0e17ac4bcc28076501e3fb8a99c..99cbfbbdfdf76adb0848ece543ecf5eda3ddf29c 100644 (file)
@@ -1791,7 +1791,11 @@ void Explode(int ex, int ey, int phase, int mode)
       }
 
       Feld[x][y] = EL_EXPLOSION;
+#if 1
+      GfxElement[x][y] = center_element;
+#else
       GfxElement[x][y] = EL_UNDEFINED;
+#endif
       MovDir[x][y] = MovPos[x][y] = 0;
       AmoebaNr[x][y] = 0;
       ExplodePhase[x][y] = 1;
@@ -1846,6 +1850,7 @@ void Explode(int ex, int ey, int phase, int mode)
 
     element = Feld[x][y] = Store[x][y];
     Store[x][y] = Store2[x][y] = 0;
+    GfxElement[x][y] = EL_UNDEFINED;
 
     if (Back[x][y] && IS_INDESTRUCTIBLE(Back[x][y]))
       element = Feld[x][y] = Back[x][y];
@@ -1862,10 +1867,14 @@ void Explode(int ex, int ey, int phase, int mode)
   }
   else if (phase >= delay && IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
   {
+#if 1
+    int graphic = el_act2img(GfxElement[x][y], ACTION_EXPLODING);
+#else
     int stored = Store[x][y];
     int graphic = (game.emulation != EMU_SUPAPLEX ? IMG_EXPLOSION :
                   stored == EL_SP_INFOTRON ? IMG_SP_EXPLOSION_INFOTRON :
                   IMG_SP_EXPLOSION);
+#endif
     int frame = getGraphicAnimationFrame(graphic, phase - delay);
 
     if (phase == delay)
@@ -1942,10 +1951,22 @@ void Bang(int x, int y)
 {
   int element = Feld[x][y];
 
+  if (IS_PLAYER(x, y))
+  {
+    struct PlayerInfo *player = PLAYERINFO(x, y);
+
+    element = Feld[x][y] = (player->use_murphy_graphic ? EL_SP_MURPHY :
+                           player->element_nr);
+  }
+
+#if 1
+  PlaySoundLevelAction(x, y, ACTION_EXPLODING);
+#else
   if (game.emulation == EMU_SUPAPLEX)
     PlaySoundLevel(x, y, SND_SP_ELEMENT_EXPLODING);
   else
     PlaySoundLevel(x, y, SND_ELEMENT_EXPLODING);
+#endif
 
 #if 0
   if (IS_PLAYER(x, y)) /* remove objects that might cause smaller explosion */
@@ -6210,7 +6231,11 @@ void BuryHero(struct PlayerInfo *player)
   if (!player->active)
     return;
 
+#if 1
+  PlaySoundLevelElementAction(jx, jy, player->element_nr, ACTION_DYING);
+#else
   PlaySoundLevel(jx, jy, SND_CLASS_PLAYER_DYING);
+#endif
   PlaySoundLevel(jx, jy, SND_GAME_LOSING);
 
   player->GameOver = TRUE;
index 57b1bd112e2c4b36ad891217f9cf24cd7b7a00df..c614643e8d2bd8adf1e10c6bdd181f61d423f076 100644 (file)
@@ -481,19 +481,19 @@ void InitElementGraphicInfo()
   /* now set all '-1' values to element specific default values */
   for (i=0; i<MAX_NUM_ELEMENTS; i++)
   {
-    int default_action_graphic = element_info[i].graphic[ACTION_DEFAULT];
-    int default_action_direction_graphic[NUM_DIRECTIONS];
+    int default_graphic = element_info[i].graphic[ACTION_DEFAULT];
+    int default_direction_graphic[NUM_DIRECTIONS];
 
-    if (default_action_graphic == -1)
-      default_action_graphic = IMG_CHAR_QUESTION;
+    if (default_graphic == -1)
+      default_graphic = IMG_CHAR_QUESTION;
 
     for (dir=0; dir<NUM_DIRECTIONS; dir++)
     {
-      default_action_direction_graphic[dir] =
+      default_direction_graphic[dir] =
        element_info[i].direction_graphic[ACTION_DEFAULT][dir];
 
-      if (default_action_direction_graphic[dir] == -1)
-       default_action_direction_graphic[dir] = default_action_graphic;
+      if (default_direction_graphic[dir] == -1)
+       default_direction_graphic[dir] = default_graphic;
     }
 
     for (act=0; act<NUM_ACTIONS; act++)
@@ -502,18 +502,32 @@ void InitElementGraphicInfo()
                            act == ACTION_SNAPPING ||
                            act == ACTION_COLLECTING);
 
+      /* generic default action graphic (defined by "[default]" directive) */
+      int default_action_graphic = element_info[EL_DEFAULT].graphic[act];
+
+      /* look for special default action graphic (classic game specific) */
+      if (IS_BD_ELEMENT(i) && element_info[EL_BD_DEFAULT].graphic[act] != -1)
+       default_action_graphic = element_info[EL_BD_DEFAULT].graphic[act];
+      if (IS_SP_ELEMENT(i) && element_info[EL_SP_DEFAULT].graphic[act] != -1)
+       default_action_graphic = element_info[EL_SP_DEFAULT].graphic[act];
+      if (IS_SB_ELEMENT(i) && element_info[EL_SB_DEFAULT].graphic[act] != -1)
+       default_action_graphic = element_info[EL_SB_DEFAULT].graphic[act];
+
+      if (default_action_graphic == -1)
+       default_action_graphic = default_graphic;
+
       for (dir=0; dir<NUM_DIRECTIONS; dir++)
       {
-       int default_direction_graphic = element_info[i].graphic[act];
+       int default_action_direction_graphic = element_info[i].graphic[act];
 
        /* no graphic for current action -- use default direction graphic */
-       if (default_direction_graphic == -1)
-         default_direction_graphic =
-           (act_remove ? IMG_EMPTY : default_action_direction_graphic[dir]);
+       if (default_action_direction_graphic == -1)
+         default_action_direction_graphic =
+           (act_remove ? IMG_EMPTY : default_direction_graphic[dir]);
 
        if (element_info[i].direction_graphic[act][dir] == -1)
          element_info[i].direction_graphic[act][dir] =
-           default_direction_graphic;
+           default_action_direction_graphic;
       }
 
       /* no graphic for this specific action -- use default action graphic */
@@ -912,12 +926,24 @@ static void InitElementSoundInfo()
   {
     for (act=0; act < NUM_ACTIONS; act++)
     {
+      /* generic default action sound (defined by "[default]" directive) */
+      int default_action_sound = element_info[EL_DEFAULT].sound[act];
+
+      /* look for special default action sound (classic game specific) */
+      if (IS_BD_ELEMENT(i) && element_info[EL_BD_DEFAULT].sound[act] != -1)
+       default_action_sound = element_info[EL_BD_DEFAULT].sound[act];
+      if (IS_SP_ELEMENT(i) && element_info[EL_SP_DEFAULT].sound[act] != -1)
+       default_action_sound = element_info[EL_SP_DEFAULT].sound[act];
+      if (IS_SB_ELEMENT(i) && element_info[EL_SB_DEFAULT].sound[act] != -1)
+       default_action_sound = element_info[EL_SB_DEFAULT].sound[act];
+
+      /* look for element specific default sound (independent from action) */
+      if (element_info[i].sound[ACTION_DEFAULT] != -1)
+       default_action_sound = element_info[i].sound[ACTION_DEFAULT];
+
       /* no sound for this specific action -- use default action sound */
       if (element_info[i].sound[act] == -1)
-       element_info[i].sound[act] =
-         (element_info[i].sound[ACTION_DEFAULT] != -1 ?
-          element_info[i].sound[ACTION_DEFAULT] :
-          element_info[EL_INTERNAL_DEFAULT_ELEMENT].sound[act]);
+       element_info[i].sound[act] = default_action_sound;
     }
   }
 }
@@ -1717,6 +1743,11 @@ void InitElementPropertiesStatic()
     EL_INVISIBLE_WALL,
     /* more than one murphy in a level results in an inactive clone */
     EL_SP_MURPHY_CLONE,
+    /* runtime elements*/
+    EL_SP_DISK_RED_ACTIVE,
+    EL_SP_TERMINAL_ACTIVE,
+    EL_SP_BUGGY_BASE_ACTIVATING,
+    EL_SP_BUGGY_BASE_ACTIVE,
     -1
   };
 
index f4d613400278ae033a15944fac3f8025ef23a0ed..c721a4cd734808cc3cdf4b6fbb8f1a8269fc26a8 100644 (file)
@@ -2938,8 +2938,23 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
     "-"
   },
   {
-    "internal_default_element",
-    "DEFAULT",
+    "[default]",
+    "default",
+    "-"
+  },
+  {
+    "[bd_default]",
+    "bd_default",
+    "-"
+  },
+  {
+    "[sp_default]",
+    "sp_default",
+    "-"
+  },
+  {
+    "[sb_default]",
+    "sb_default",
     "-"
   },
 
index 3a6cabc43534df29187974d171247ed1141eeeb7..4385aa55db7d6f3f858355c8473ebb05697eae74 100644 (file)
@@ -33,6 +33,7 @@
 #define IMG_UNDEFINED          (-1)
 #define IMG_EMPTY              IMG_EMPTY_SPACE
 #define IMG_SP_EMPTY           IMG_SP_EMPTY_SPACE
+#define IMG_EXPLOSION          IMG_DEFAULT_EXPLODING
 #define IMG_CHAR_START         IMG_CHAR_SPACE
 #define IMG_CUSTOM_START       IMG_CUSTOM_1
 
 #define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 13)
 #define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 14)
 #define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 15)
-#define EL_INTERNAL_DEFAULT_ELEMENT            (EL_FIRST_DUMMY + 16)
+#define EL_DEFAULT                             (EL_FIRST_DUMMY + 16)
+#define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 17)
+#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 18)
+#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 19)
 
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 17)
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 20)
 
 
 /* values for graphics/sounds action types */
index 369e0488f9c81eebd52549ea9b348267d1f036bb..3595839db2e82a9aa898a4ca67e10d5e16bcc966 100644 (file)
@@ -739,10 +739,14 @@ void DrawPlayer(struct PlayerInfo *player)
 
   if (player_is_moving && last_element == EL_EXPLOSION)
   {
+#if 1
+    int graphic = el_act2img(GfxElement[last_jx][last_jy], ACTION_EXPLODING);
+#else
     int stored = Store[last_jx][last_jy];
     int graphic = (game.emulation != EMU_SUPAPLEX ? IMG_EXPLOSION :
                   stored == EL_SP_INFOTRON ? IMG_SP_EXPLOSION_INFOTRON :
                   IMG_SP_EXPLOSION);
+#endif
     int delay = (game.emulation == EMU_SUPAPLEX ? 3 : 2);
     int phase = ExplodePhase[last_jx][last_jy] - 1;
     int frame = getGraphicAnimationFrame(graphic, phase - delay);