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
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
IMG_PLAYER_4_SNAPPING_RIGHT
},
{
- EL_EXPLOSION, -1, -1,
- IMG_EXPLOSION
+ EL_DEFAULT, ACTION_EXPLODING, -1,
+ IMG_DEFAULT_EXPLODING
},
{
EL_STEELWALL_TOPLEFT, -1, -1,
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
EL_DRAGON, FALSE, ACTION_ATTACKING,
SND_DRAGON_ATTACKING
},
- {
- EL_PLAYER_OBSOLETE, TRUE, ACTION_DYING,
- SND_CLASS_PLAYER_DYING
- },
{
-1, -1, -1,
-1
/* 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" },
{ "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" },
{ "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" },
{ "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" },
#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
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" },
{ "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! */
#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 */
-#define COMPILE_DATE_STRING "[2003-06-15 03:27]"
+#define COMPILE_DATE_STRING "[2003-06-16 03:06]"
}
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;
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];
}
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)
{
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 */
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;
/* 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++)
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 */
{
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;
}
}
}
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
};
"-"
},
{
- "internal_default_element",
- "DEFAULT",
+ "[default]",
+ "default",
+ "-"
+ },
+ {
+ "[bd_default]",
+ "bd_default",
+ "-"
+ },
+ {
+ "[sp_default]",
+ "sp_default",
+ "-"
+ },
+ {
+ "[sb_default]",
+ "sb_default",
"-"
},
#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 */
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);