X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fsynchro_2.c;h=c4b9a678b3e1e9dbf5ebb3302986d70c76736abf;hb=61c3da024802ecc0268bab42d7499fc0346e4fd3;hp=c8a50916fac0e25fa3848bab0a02397d4478d503;hpb=9583e9c55b889974e0df9a8ca1930efdf29bda29;p=rocksndiamonds.git diff --git a/src/game_em/synchro_2.c b/src/game_em/synchro_2.c index c8a50916..c4b9a678 100644 --- a/src/game_em/synchro_2.c +++ b/src/game_em/synchro_2.c @@ -8,29 +8,55 @@ * compilers suck. */ -#include "display.h" -#include "tile.h" -#include "level.h" -#include "sample.h" +#include "main_em.h" #define RANDOM (random = random << 31 | random >> 1) +static void set_nearest_player_xy(int x, int y, int *dx, int *dy) +{ + int distance, distance_shortest = EM_MAX_CAVE_WIDTH + EM_MAX_CAVE_HEIGHT; + int i; + + /* default values if no players are alive anymore */ + *dx = 0; + *dy = 0; + + for (i = 0; i < MAX_PLAYERS; i++) + { + if (!ply[i].alive) + continue; + + distance = ABS(ply[i].x - x) + ABS(ply[i].y - y); + + if (distance < distance_shortest) + { + *dx = ply[i].x; + *dy = ply[i].y; + + distance_shortest = distance; + } + } +} + void synchro_2(void) { - register unsigned int x = 0; - register unsigned int y = 1; - register unsigned long random = Random; - register unsigned short *cave_cache = Cave[y]; /* might be a win */ - unsigned long score = 0; + int x = 0; + int y = 1; + unsigned int random = RandomEM; + short *cave_cache = Cave[y]; /* might be a win */ + int score = 0; - unsigned int temp = 0; /* initialized to make compilers happy */ - unsigned int dx; /* only needed to find closest player */ - unsigned int dy; + int temp = 0; /* initialized to make compilers happy */ + int dx; /* only needed to find closest player */ + int dy; + int element; loop: - switch (cave_cache[++x]) + element = cave_cache[++x]; + + switch (element) { default: goto loop; @@ -345,7 +371,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -353,6 +379,16 @@ void synchro_2(void) case Yacid_splash_wB: case Xplant: case Yplant: +#if 1 + case Xfake_acid_1: + case Xfake_acid_2: + case Xfake_acid_3: + case Xfake_acid_4: + case Xfake_acid_5: + case Xfake_acid_6: + case Xfake_acid_7: + case Xfake_acid_8: +#endif Cave[y][x] = Ystone_sB; Cave[y+1][x] = Ystone_s; Next[y][x] = Xblank; @@ -476,12 +512,22 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: case Yacid_splash_eB: case Yacid_splash_wB: +#if 1 + case Xfake_acid_1: + case Xfake_acid_2: + case Xfake_acid_3: + case Xfake_acid_4: + case Xfake_acid_5: + case Xfake_acid_6: + case Xfake_acid_7: + case Xfake_acid_8: +#endif Cave[y][x] = Ystone_sB; Cave[y+1][x] = Ystone_s; Next[y][x] = Xblank; @@ -513,13 +559,23 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: case Yacid_splash_eB: case Yacid_splash_wB: case Zplayer: +#if 1 + case Xfake_acid_1: + case Xfake_acid_2: + case Xfake_acid_3: + case Xfake_acid_4: + case Xfake_acid_5: + case Xfake_acid_6: + case Xfake_acid_7: + case Xfake_acid_8: +#endif Cave[y][x] = Ystone_sB; Cave[y+1][x] = Ystone_s; Next[y][x] = Xblank; @@ -531,7 +587,7 @@ void synchro_2(void) Cave[y+1][x] = Yemerald_stone; Next[y][x] = Xstone; Next[y+1][x] = Xemerald; - play_sound(x, y, SAMPLE_crack); + play_element_sound(x, y, SAMPLE_crack, Xnut); score += lev.nut_score; goto loop; @@ -555,6 +611,9 @@ void synchro_2(void) Boom[y+2][x-1] = Xemerald; Boom[y+2][x] = Xemerald; Boom[y+2][x+1] = Xemerald; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif score += lev.bug_score; goto loop; @@ -578,6 +637,9 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif score += lev.tank_score; goto loop; @@ -635,6 +697,9 @@ void synchro_2(void) Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6]; Boom[y+2][x] = lev.eater_array[lev.eater_pos][7]; Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8]; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif lev.eater_pos = (lev.eater_pos + 1) & 7; score += lev.eater_score; goto loop; @@ -653,6 +718,9 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif score += lev.alien_score; goto loop; @@ -707,7 +775,7 @@ void synchro_2(void) case Xplant: case Yplant: Next[y][x] = Xstone; - play_sound(x, y, SAMPLE_stone); + play_element_sound(x, y, SAMPLE_stone, Xstone); goto loop; } @@ -715,7 +783,7 @@ void synchro_2(void) Cave[y+1][x] = Ydiamond_stone; Next[y][x] = Xblank; Next[y+1][x] = Xstone_pause; - play_sound(x, y, SAMPLE_squash); + play_element_sound(x, y, SAMPLE_squash, Xdiamond); goto loop; case Xbomb: @@ -731,6 +799,9 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif goto loop; case Xwonderwall: @@ -746,14 +817,14 @@ void synchro_2(void) } Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_squash); + play_element_sound(x, y, SAMPLE_wonderfall, Xwonderwall); goto loop; } default: Cave[y][x] = Xstone; Next[y][x] = Xstone; - play_sound(x, y, SAMPLE_stone); + play_element_sound(x, y, SAMPLE_stone, Xstone); goto loop; } @@ -776,7 +847,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -897,7 +968,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -934,7 +1005,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -950,7 +1021,7 @@ void synchro_2(void) default: Cave[y][x] = Xnut; Next[y][x] = Xnut; - play_sound(x, y, SAMPLE_nut); + play_element_sound(x, y, SAMPLE_nut, Xnut); goto loop; } @@ -981,7 +1052,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ybug_n_e; Next[y][x] = Xbug_goe; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: @@ -1013,7 +1084,7 @@ void synchro_2(void) if (Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1026,13 +1097,13 @@ void synchro_2(void) Cave[y-1][x] = Ybug_n; Next[y][x] = Xblank; Next[y-1][x] = Xbug_n; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: Cave[y][x] = Ybug_n_w; Next[y][x] = Xbug_gow; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; } @@ -1063,7 +1134,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ybug_e_s; Next[y][x] = Xbug_gos; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: @@ -1095,7 +1166,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1108,13 +1179,13 @@ void synchro_2(void) Cave[y][x+1] = Ybug_e; Next[y][x] = Xblank; Next[y][x+1] = Xbug_e; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: Cave[y][x] = Ybug_e_n; Next[y][x] = Xbug_gon; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; } @@ -1145,7 +1216,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ybug_s_w; Next[y][x] = Xbug_gow; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: @@ -1177,7 +1248,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1190,13 +1261,13 @@ void synchro_2(void) Cave[y+1][x] = Ybug_s; Next[y][x] = Xblank; Next[y+1][x] = Xbug_s; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: Cave[y][x] = Ybug_s_e; Next[y][x] = Xbug_goe; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; } @@ -1227,7 +1298,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ybug_w_n; Next[y][x] = Xbug_gon; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: @@ -1259,7 +1330,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1272,13 +1343,13 @@ void synchro_2(void) Cave[y][x-1] = Ybug_w; Next[y][x] = Xblank; Next[y][x-1] = Xbug_w; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; default: Cave[y][x] = Ybug_w_s; Next[y][x] = Xbug_gos; - play_sound(x, y, SAMPLE_bug); + play_element_sound(x, y, SAMPLE_bug, element); goto loop; } @@ -1309,7 +1380,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ytank_n_w; Next[y][x] = Xtank_gow; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: @@ -1341,7 +1412,7 @@ void synchro_2(void) if (Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1354,13 +1425,13 @@ void synchro_2(void) Cave[y-1][x] = Ytank_n; Next[y][x] = Xblank; Next[y-1][x] = Xtank_n; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: Cave[y][x] = Ytank_n_e; Next[y][x] = Xtank_goe; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; } @@ -1391,7 +1462,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ytank_e_n; Next[y][x] = Xtank_gon; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: @@ -1423,7 +1494,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1436,13 +1507,13 @@ void synchro_2(void) Cave[y][x+1] = Ytank_e; Next[y][x] = Xblank; Next[y][x+1] = Xtank_e; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: Cave[y][x] = Ytank_e_s; Next[y][x] = Xtank_gos; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; } @@ -1473,7 +1544,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ytank_s_e; Next[y][x] = Xtank_goe; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: @@ -1505,7 +1576,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1518,13 +1589,13 @@ void synchro_2(void) Cave[y+1][x] = Ytank_s; Next[y][x] = Xblank; Next[y+1][x] = Xtank_s; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: Cave[y][x] = Ytank_s_w; Next[y][x] = Xtank_gow; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; } @@ -1555,7 +1626,7 @@ void synchro_2(void) case Zplayer: Cave[y][x] = Ytank_w_s; Next[y][x] = Xtank_gos; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: @@ -1587,7 +1658,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -1600,13 +1671,13 @@ void synchro_2(void) Cave[y][x-1] = Ytank_w; Next[y][x] = Xblank; Next[y][x-1] = Xtank_w; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; default: Cave[y][x] = Ytank_w_n; Next[y][x] = Xtank_gon; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_tank, element); goto loop; } @@ -1721,8 +1792,8 @@ void synchro_2(void) goto android_move; } - Next[y][x] = temp; /* the item we chose to clone */ - play_sound(x, y, SAMPLE_android); + Next[y][x] = temp; /* the item we chose to clone */ + play_element_sound(x, y, SAMPLE_android_clone, temp); switch (RANDOM & 7) { @@ -1831,6 +1902,12 @@ void synchro_2(void) Cave[y+1][x+1] == Zplayer) goto android_still; +#if 1 + + set_nearest_player_xy(x, y, &dx, &dy); + +#else + if (ply1.alive && ply2.alive) { if ((ply1.x > x ? ply1.x - x : x - ply1.x) + @@ -1863,7 +1940,9 @@ void synchro_2(void) dy = 0; } - Next[y][x] = Xblank; /* assume we will move */ +#endif + + Next[y][x] = Xblank; /* assume we will move */ temp = ((x < dx) + 1 - (x > dx)) + ((y < dy) + 1 - (y > dy)) * 3; if (RANDOM & 1) @@ -1994,7 +2073,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_nB; Cave[y-1][x] = Yandroid_n; Next[y-1][x] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; android_ne: @@ -2002,7 +2081,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_neB; Cave[y-1][x+1] = Yandroid_ne; Next[y-1][x+1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; android_e: @@ -2010,7 +2089,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_eB; Cave[y][x+1] = Yandroid_e; Next[y][x+1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; android_se: @@ -2018,7 +2097,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_seB; Cave[y+1][x+1] = Yandroid_se; Next[y+1][x+1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; android_s: @@ -2026,7 +2105,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_sB; Cave[y+1][x] = Yandroid_s; Next[y+1][x] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; android_sw: @@ -2034,7 +2113,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_swB; Cave[y+1][x-1] = Yandroid_sw; Next[y+1][x-1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; android_w: @@ -2042,7 +2121,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_wB; Cave[y][x-1] = Yandroid_w; Next[y][x-1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; android_nw: @@ -2050,7 +2129,7 @@ void synchro_2(void) Cave[y][x] = Yandroid_nwB; Cave[y-1][x-1] = Yandroid_nw; Next[y-1][x-1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; /* --------------------------------------------------------------------- */ @@ -2072,7 +2151,7 @@ void synchro_2(void) if (Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2082,7 +2161,7 @@ void synchro_2(void) Cave[y-1][x] = Yandroid_n; Next[y][x] = Xblank; Next[y-1][x] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2106,7 +2185,7 @@ void synchro_2(void) if (Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2116,7 +2195,7 @@ void synchro_2(void) Cave[y-1][x] = Yandroid_n; Next[y][x] = Xblank; Next[y-1][x] = Xandroid_1_n; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2142,7 +2221,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2152,7 +2231,7 @@ void synchro_2(void) Cave[y][x+1] = Yandroid_e; Next[y][x] = Xblank; Next[y][x+1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2176,7 +2255,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2186,7 +2265,7 @@ void synchro_2(void) Cave[y][x+1] = Yandroid_e; Next[y][x] = Xblank; Next[y][x+1] = Xandroid_1_e; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2212,7 +2291,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2222,7 +2301,7 @@ void synchro_2(void) Cave[y+1][x] = Yandroid_s; Next[y][x] = Xblank; Next[y+1][x] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2246,7 +2325,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2256,7 +2335,7 @@ void synchro_2(void) Cave[y+1][x] = Yandroid_s; Next[y][x] = Xblank; Next[y+1][x] = Xandroid_1_s; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2282,7 +2361,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2292,7 +2371,7 @@ void synchro_2(void) Cave[y][x-1] = Yandroid_w; Next[y][x] = Xblank; Next[y][x-1] = Xandroid; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2316,7 +2395,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2326,7 +2405,7 @@ void synchro_2(void) Cave[y][x-1] = Yandroid_w; Next[y][x] = Xblank; Next[y][x-1] = Xandroid_1_w; - play_sound(x, y, SAMPLE_tank); + play_element_sound(x, y, SAMPLE_android_move, element); goto loop; default: @@ -2352,7 +2431,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2506,7 +2585,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2543,7 +2622,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2575,7 +2654,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2601,7 +2680,7 @@ void synchro_2(void) Cave[y][x+1] = Yspring_kill_e; Next[y][x] = Xblank; Next[y][x+1] = Xspring_e; - play_sound(x, y, SAMPLE_slurp); + play_element_sound(x, y, SAMPLE_slurp, Xalien); score += lev.slurp_score; goto loop; @@ -2609,13 +2688,13 @@ void synchro_2(void) case XbumperB: Cave[y][x+1] = XbumperB; Next[y][x] = Xspring_w; - play_sound(x, y, SAMPLE_spring); + play_element_sound(x, y, SAMPLE_spring, Xspring); goto loop; default: Cave[y][x] = Xspring; Next[y][x] = Xspring; - play_sound(x, y, SAMPLE_spring); + play_element_sound(x, y, SAMPLE_spring, Xspring); goto loop; } @@ -2638,7 +2717,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2670,7 +2749,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2696,7 +2775,7 @@ void synchro_2(void) Cave[y][x-1] = Yspring_kill_w; Next[y][x] = Xblank; Next[y][x-1] = Xspring_w; - play_sound(x, y, SAMPLE_slurp); + play_element_sound(x, y, SAMPLE_slurp, Xalien); score += lev.slurp_score; goto loop; @@ -2704,13 +2783,13 @@ void synchro_2(void) case XbumperB: Cave[y][x-1] = XbumperB; Next[y][x] = Xspring_e; - play_sound(x, y, SAMPLE_spring); + play_element_sound(x, y, SAMPLE_spring, Xspring); goto loop; default: Cave[y][x] = Xspring; Next[y][x] = Xspring; - play_sound(x, y, SAMPLE_spring); + play_element_sound(x, y, SAMPLE_spring, Xspring); goto loop; } @@ -2733,7 +2812,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2759,6 +2838,9 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif goto loop; case Xbug_n: @@ -2781,6 +2863,9 @@ void synchro_2(void) Boom[y+2][x-1] = Xemerald; Boom[y+2][x] = Xemerald; Boom[y+2][x+1] = Xemerald; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif score += lev.bug_score; goto loop; @@ -2804,6 +2889,9 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif score += lev.tank_score; goto loop; @@ -2823,6 +2911,9 @@ void synchro_2(void) Boom[y+2][x-1] = lev.eater_array[lev.eater_pos][6]; Boom[y+2][x] = lev.eater_array[lev.eater_pos][7]; Boom[y+2][x+1] = lev.eater_array[lev.eater_pos][8]; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif lev.eater_pos = (lev.eater_pos + 1) & 7; score += lev.eater_score; goto loop; @@ -2841,13 +2932,16 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif score += lev.alien_score; goto loop; default: Cave[y][x] = Xspring; Next[y][x] = Xspring; - play_sound(x, y, SAMPLE_spring); + play_element_sound(x, y, SAMPLE_spring, Xspring); goto loop; } @@ -2858,7 +2952,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2866,7 +2960,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2874,7 +2968,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2882,7 +2976,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2902,7 +2996,7 @@ void synchro_2(void) if (Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2919,7 +3013,7 @@ void synchro_2(void) default: Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater, element); goto loop; } @@ -2930,7 +3024,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2938,7 +3032,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2946,7 +3040,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2954,7 +3048,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2974,7 +3068,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -2991,7 +3085,7 @@ void synchro_2(void) default: Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater, element); goto loop; } @@ -3002,7 +3096,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3010,7 +3104,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3018,7 +3112,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3026,7 +3120,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3046,7 +3140,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3063,7 +3157,7 @@ void synchro_2(void) default: Next[y][x] = RANDOM & 1 ? Xeater_e : Xeater_w; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater, element); goto loop; } @@ -3074,7 +3168,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3082,7 +3176,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3090,7 +3184,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3098,7 +3192,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3118,7 +3212,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3135,13 +3229,28 @@ void synchro_2(void) default: Next[y][x] = RANDOM & 1 ? Xeater_n : Xeater_s; - play_sound(x, y, SAMPLE_eater); + play_element_sound(x, y, SAMPLE_eater, element); goto loop; } /* --------------------------------------------------------------------- */ case Xalien: + +#if 1 + + if (lev.wheel_cnt) + { + dx = lev.wheel_x; + dy = lev.wheel_y; + } + else + { + set_nearest_player_xy(x, y, &dx, &dy); + } + +#else + if (lev.wheel_cnt) { dx = lev.wheel_x; @@ -3179,6 +3288,8 @@ void synchro_2(void) dy = 0; } +#endif + if (RANDOM & 1) { if (y > dy) @@ -3199,7 +3310,7 @@ void synchro_2(void) if (Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3212,7 +3323,7 @@ void synchro_2(void) Cave[y-1][x] = Yalien_n; Next[y][x] = Xblank; Next[y-1][x] = Xalien_pause; - play_sound(x, y, SAMPLE_alien); + play_element_sound(x, y, SAMPLE_alien, Xalien); goto loop; } } @@ -3234,7 +3345,7 @@ void synchro_2(void) Cave[y][x+1] = Yacid_splash_eB; if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3247,7 +3358,7 @@ void synchro_2(void) Cave[y+1][x] = Yalien_s; Next[y][x] = Xblank; Next[y+1][x] = Xalien_pause; - play_sound(x, y, SAMPLE_alien); + play_element_sound(x, y, SAMPLE_alien, Xalien); goto loop; } } @@ -3272,7 +3383,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3285,7 +3396,7 @@ void synchro_2(void) Cave[y][x+1] = Yalien_e; Next[y][x] = Xblank; Next[y][x+1] = Xalien_pause; - play_sound(x, y, SAMPLE_alien); + play_element_sound(x, y, SAMPLE_alien, Xalien); goto loop; } } @@ -3307,7 +3418,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3320,7 +3431,7 @@ void synchro_2(void) Cave[y][x-1] = Yalien_w; Next[y][x] = Xblank; Next[y][x-1] = Xalien_pause; - play_sound(x, y, SAMPLE_alien); + play_element_sound(x, y, SAMPLE_alien, Xalien); goto loop; } } @@ -3351,7 +3462,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3486,7 +3597,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3523,7 +3634,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3548,14 +3659,14 @@ void synchro_2(void) } Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_squash); + play_element_sound(x, y, SAMPLE_wonderfall, Xwonderwall); goto loop; } default: Cave[y][x] = Xemerald; Next[y][x] = Xemerald; - play_sound(x, y, SAMPLE_diamond); + play_element_sound(x, y, SAMPLE_diamond, Xemerald); goto loop; } @@ -3578,7 +3689,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3713,7 +3824,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3750,7 +3861,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3775,14 +3886,14 @@ void synchro_2(void) } Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_squash); + play_element_sound(x, y, SAMPLE_wonderfall, Xwonderwall); goto loop; } default: Cave[y][x] = Xdiamond; Next[y][x] = Xdiamond; - play_sound(x, y, SAMPLE_diamond); + play_element_sound(x, y, SAMPLE_diamond, Xdiamond); goto loop; } @@ -3805,7 +3916,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xdrip_stretchB; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -3858,7 +3969,7 @@ void synchro_2(void) Cave[y][x] = temp; Next[y][x] = temp; - play_sound(x, y, SAMPLE_drip); + play_element_sound(x, y, SAMPLE_drip, Xdrip_fall); goto loop; } @@ -3897,7 +4008,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -4017,7 +4128,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -4054,7 +4165,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -4078,6 +4189,9 @@ void synchro_2(void) Boom[y+1][x-1] = Xblank; Boom[y+1][x] = Xblank; Boom[y+1][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif goto loop; } @@ -4106,7 +4220,7 @@ void synchro_2(void) if (Cave[y-2][x-1] == Xblank) Cave[y-2][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -4139,7 +4253,7 @@ void synchro_2(void) if (Cave[y-1][x] == Xblank) Cave[y-1][x] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -4172,7 +4286,7 @@ void synchro_2(void) if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -4205,7 +4319,7 @@ void synchro_2(void) if (Cave[y-1][x-2] == Xblank) Cave[y-1][x-2] = Yacid_splash_wB; Next[y][x] = Xblank; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; case Xblank: @@ -4256,6 +4370,38 @@ void synchro_2(void) Next[y][x] = Xacid_1; goto loop; + case Xfake_acid_1: + Next[y][x] = Xfake_acid_2; + goto loop; + + case Xfake_acid_2: + Next[y][x] = Xfake_acid_3; + goto loop; + + case Xfake_acid_3: + Next[y][x] = Xfake_acid_4; + goto loop; + + case Xfake_acid_4: + Next[y][x] = Xfake_acid_5; + goto loop; + + case Xfake_acid_5: + Next[y][x] = Xfake_acid_6; + goto loop; + + case Xfake_acid_6: + Next[y][x] = Xfake_acid_7; + goto loop; + + case Xfake_acid_7: + Next[y][x] = Xfake_acid_8; + goto loop; + + case Xfake_acid_8: + Next[y][x] = Xfake_acid_1; + goto loop; + /* --------------------------------------------------------------------- */ case Xball_1: @@ -4282,7 +4428,7 @@ void synchro_2(void) ball_common: - play_sound(x, y, SAMPLE_ball); + play_element_sound(x, y, SAMPLE_ball, element); if (lev.ball_random) { switch (RANDOM & 7) @@ -4419,7 +4565,11 @@ void synchro_2(void) } } +#if 1 + lev.ball_pos = (lev.ball_pos + 1) % lev.num_ball_arrays; +#else lev.ball_pos = (lev.ball_pos + 1) & 7; +#endif goto loop; /* --------------------------------------------------------------------- */ @@ -4429,14 +4579,14 @@ void synchro_2(void) { Cave[y-1][x] = Ygrow_ns_eat; Next[y-1][x] = Xgrow_ns; - play_sound(x, y, SAMPLE_grow); + play_element_sound(x, y, SAMPLE_grow, Xgrow_ns); } if (tab_blank[Cave[y+1][x]]) { Cave[y+1][x] = Ygrow_ns_eat; Next[y+1][x] = Xgrow_ns; - play_sound(x, y, SAMPLE_grow); + play_element_sound(x, y, SAMPLE_grow, Xgrow_ns); } goto loop; @@ -4446,14 +4596,14 @@ void synchro_2(void) { Cave[y][x+1] = Ygrow_ew_eat; Next[y][x+1] = Xgrow_ew; - play_sound(x, y, SAMPLE_grow); + play_element_sound(x, y, SAMPLE_grow, Xgrow_ew); } if (tab_blank[Cave[y][x-1]]) { Cave[y][x-1] = Ygrow_ew_eat; Next[y][x-1] = Xgrow_ew; - play_sound(x, y, SAMPLE_grow); + play_element_sound(x, y, SAMPLE_grow, Xgrow_ew); } goto loop; @@ -4464,7 +4614,7 @@ void synchro_2(void) if (lev.wonderwall_time && lev.wonderwall_state) { Cave[y][x] = XwonderwallB; - play_sound(x, y, SAMPLE_wonder); + play_element_sound(x, y, SAMPLE_wonder, Xwonderwall); } goto loop; @@ -4492,6 +4642,8 @@ void synchro_2(void) Next[y][x] = Xexit_1; } + play_element_sound(x, y, SAMPLE_exit_open, Xexit); + goto loop; case Xexit_1: @@ -4509,22 +4661,22 @@ void synchro_2(void) /* --------------------------------------------------------------------- */ case Xdynamite_1: - play_sound(x, y, SAMPLE_tick); + play_element_sound(x, y, SAMPLE_tick, Xdynamite_1); Next[y][x] = Xdynamite_2; goto loop; case Xdynamite_2: - play_sound(x, y, SAMPLE_tick); + play_element_sound(x, y, SAMPLE_tick, Xdynamite_2); Next[y][x] = Xdynamite_3; goto loop; case Xdynamite_3: - play_sound(x, y, SAMPLE_tick); + play_element_sound(x, y, SAMPLE_tick, Xdynamite_3); Next[y][x] = Xdynamite_4; goto loop; case Xdynamite_4: - play_sound(x, y, SAMPLE_tick); + play_element_sound(x, y, SAMPLE_tick, Xdynamite_4); Next[y][x] = Zdynamite; Boom[y-1][x-1] = Xblank; Boom[y-1][x] = Xblank; @@ -4564,23 +4716,42 @@ void synchro_2(void) case Xacid_6: case Xacid_7: case Xacid_8: +#if 1 + Cave[y][x] = Xsand_stonesand_quickout_1; + if (Cave[y][x+1] == Xblank) + Cave[y][x+1] = Yacid_splash_eB; + if (Cave[y][x-1] == Xblank) + Cave[y][x-1] = Yacid_splash_wB; + Next[y][x] = Xsand_stonesand_quickout_2; + play_element_sound(x, y, SAMPLE_acid, Xacid_1); + goto loop; +#else Cave[y][x] = Xsand_stonesand_3; if (Cave[y][x+1] == Xblank) Cave[y][x+1] = Yacid_splash_eB; if (Cave[y][x-1] == Xblank) Cave[y][x-1] = Yacid_splash_wB; Next[y][x] = Xsand_stonesand_4; - play_sound(x, y, SAMPLE_acid); + play_element_sound(x, y, SAMPLE_acid, Xacid_1); goto loop; +#endif case Xblank: case Yacid_splash_eB: case Yacid_splash_wB: +#if 1 + Cave[y][x] = Xsand_stonesand_quickout_1; + Cave[y+1][x] = Xsand_stoneout_1; + Next[y][x] = Xsand_stonesand_quickout_2; + Next[y+1][x] = Xsand_stoneout_2; + goto loop; +#else Cave[y][x] = Xsand_stonesand_3; Cave[y+1][x] = Xsand_stoneout_1; Next[y][x] = Xsand_stonesand_4; Next[y+1][x] = Xsand_stoneout_2; goto loop; +#endif case Xsand: Cave[y][x] = Xsand_stonesand_1; @@ -4625,6 +4796,16 @@ void synchro_2(void) Next[y][x] = Xsand; goto loop; +#if 1 + case Xsand_stonesand_quickout_1: + Next[y][x] = Xsand_stonesand_quickout_2; + goto loop; + + case Xsand_stonesand_quickout_2: + Next[y][x] = Xsand; + goto loop; +#endif + case Xsand_stoneout_1: Next[y][x] = Xsand_stoneout_2; goto loop; @@ -4726,6 +4907,9 @@ void synchro_2(void) Boom[y+1][x-1] = Xemerald; Boom[y+1][x] = Xemerald; Boom[y+1][x+1] = Xemerald; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif goto loop; case Xboom_bomb: @@ -4742,12 +4926,23 @@ void synchro_2(void) Boom[y+1][x-1] = Xblank; Boom[y+1][x] = Xblank; Boom[y+1][x+1] = Xblank; +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, element); +#endif goto loop; case Xboom_android: +#if PLAY_ELEMENT_SOUND + play_element_sound(x, y, SAMPLE_boom, Xandroid); +#endif case Xboom_1: Next[y][x] = Xboom_2; - play_sound(x, y, SAMPLE_boom); +#if !PLAY_ELEMENT_SOUND + if (x != lev.exit_x && y != lev.exit_y) + play_sound(x, y, SAMPLE_boom); + else + lev.exit_x = lev.exit_y = -1; +#endif goto loop; case Xboom_2: @@ -4773,10 +4968,10 @@ void synchro_2(void) done: - if (ply1.alive || ply2.alive) - lev.score += score; /* only get a score if someone is alive */ + if (ply[0].alive || ply[1].alive || ply[2].alive || ply[3].alive) + lev.score += score; /* only add a score if someone is alive */ - Random = random; + RandomEM = random; { void *temp = Cave;