X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fsynchro_2.c;h=c4b9a678b3e1e9dbf5ebb3302986d70c76736abf;hb=61c3da024802ecc0268bab42d7499fc0346e4fd3;hp=348cd72bf3edb17fa4b974709807e74b49215a69;hpb=0078fa1620abed262370083c0c6aa475a25e1b04;p=rocksndiamonds.git diff --git a/src/game_em/synchro_2.c b/src/game_em/synchro_2.c index 348cd72b..c4b9a678 100644 --- a/src/game_em/synchro_2.c +++ b/src/game_em/synchro_2.c @@ -8,25 +8,48 @@ * 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; - - unsigned int temp = 0; /* initialized to make compilers happy */ - unsigned int dx; /* only needed to find closest player */ - unsigned int dy; + int x = 0; + int y = 1; + unsigned int random = RandomEM; + short *cave_cache = Cave[y]; /* might be a win */ + int score = 0; + + int temp = 0; /* initialized to make compilers happy */ + int dx; /* only needed to find closest player */ + int dy; int element; loop: @@ -348,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: @@ -489,7 +512,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: @@ -536,7 +559,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: @@ -588,7 +611,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xemerald; Boom[y+2][x] = Xemerald; Boom[y+2][x+1] = Xemerald; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif score += lev.bug_score; @@ -614,7 +637,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif score += lev.tank_score; @@ -674,7 +697,7 @@ 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 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif lev.eater_pos = (lev.eater_pos + 1) & 7; @@ -695,7 +718,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif score += lev.alien_score; @@ -776,7 +799,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif goto loop; @@ -794,7 +817,7 @@ void synchro_2(void) } Next[y][x] = Xblank; - play_element_sound(x, y, SAMPLE_wonderfall, Xstone); + play_element_sound(x, y, SAMPLE_wonderfall, Xwonderwall); goto loop; } @@ -824,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: @@ -945,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: @@ -982,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: @@ -1029,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: @@ -1061,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: @@ -1074,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; } @@ -1111,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: @@ -1143,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: @@ -1156,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; } @@ -1193,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: @@ -1225,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: @@ -1238,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; } @@ -1275,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: @@ -1307,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: @@ -1320,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; } @@ -1357,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: @@ -1389,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: @@ -1402,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; } @@ -1439,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: @@ -1471,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: @@ -1484,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; } @@ -1521,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: @@ -1553,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: @@ -1566,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; } @@ -1603,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: @@ -1635,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: @@ -1648,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; } @@ -1769,8 +1792,8 @@ void synchro_2(void) goto android_move; } - Next[y][x] = temp; /* the item we chose to clone */ - play_element_sound(x, y, SAMPLE_android, temp); + Next[y][x] = temp; /* the item we chose to clone */ + play_element_sound(x, y, SAMPLE_android_clone, temp); switch (RANDOM & 7) { @@ -1879,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) + @@ -1911,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) @@ -2042,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: @@ -2050,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: @@ -2058,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: @@ -2066,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: @@ -2074,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: @@ -2082,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: @@ -2090,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: @@ -2098,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; /* --------------------------------------------------------------------- */ @@ -2120,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: @@ -2130,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: @@ -2154,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: @@ -2164,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: @@ -2190,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: @@ -2200,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: @@ -2224,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: @@ -2234,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: @@ -2260,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: @@ -2270,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: @@ -2294,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: @@ -2304,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: @@ -2330,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: @@ -2340,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: @@ -2364,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: @@ -2374,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: @@ -2400,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: @@ -2554,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: @@ -2591,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: @@ -2623,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: @@ -2686,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: @@ -2718,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: @@ -2781,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: @@ -2807,7 +2838,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif goto loop; @@ -2832,7 +2863,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xemerald; Boom[y+2][x] = Xemerald; Boom[y+2][x+1] = Xemerald; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif score += lev.bug_score; @@ -2858,7 +2889,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif score += lev.tank_score; @@ -2880,7 +2911,7 @@ 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 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif lev.eater_pos = (lev.eater_pos + 1) & 7; @@ -2901,7 +2932,7 @@ void synchro_2(void) Boom[y+2][x-1] = Xblank; Boom[y+2][x] = Xblank; Boom[y+2][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif score += lev.alien_score; @@ -2921,7 +2952,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2929,7 +2960,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2937,7 +2968,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2945,7 +2976,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -2965,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: @@ -2982,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; } @@ -2993,7 +3024,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3001,7 +3032,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3009,7 +3040,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3017,7 +3048,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3037,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: @@ -3054,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; } @@ -3065,7 +3096,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3073,7 +3104,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3081,7 +3112,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3089,7 +3120,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3109,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: @@ -3126,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; } @@ -3137,7 +3168,7 @@ void synchro_2(void) { Cave[y-1][x] = Ydiamond_eat; Next[y-1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3145,7 +3176,7 @@ void synchro_2(void) { Cave[y][x+1] = Ydiamond_eat; Next[y][x+1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3153,7 +3184,7 @@ void synchro_2(void) { Cave[y+1][x] = Ydiamond_eat; Next[y+1][x] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3161,7 +3192,7 @@ void synchro_2(void) { Cave[y][x-1] = Ydiamond_eat; Next[y][x-1] = Xblank; - play_element_sound(x, y, SAMPLE_eater, Xdiamond); + play_element_sound(x, y, SAMPLE_eater_eat, element); goto loop; } @@ -3181,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: @@ -3198,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; @@ -3242,6 +3288,8 @@ void synchro_2(void) dy = 0; } +#endif + if (RANDOM & 1) { if (y > dy) @@ -3262,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: @@ -3297,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: @@ -3335,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: @@ -3370,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: @@ -3414,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: @@ -3549,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: @@ -3586,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: @@ -3611,7 +3659,7 @@ void synchro_2(void) } Next[y][x] = Xblank; - play_element_sound(x, y, SAMPLE_wonderfall, Xemerald); + play_element_sound(x, y, SAMPLE_wonderfall, Xwonderwall); goto loop; } @@ -3641,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: @@ -3776,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: @@ -3813,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: @@ -3838,7 +3886,7 @@ void synchro_2(void) } Next[y][x] = Xblank; - play_element_sound(x, y, SAMPLE_wonderfall, Xdiamond); + play_element_sound(x, y, SAMPLE_wonderfall, Xwonderwall); goto loop; } @@ -3868,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: @@ -3960,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: @@ -4080,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: @@ -4117,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: @@ -4141,7 +4189,7 @@ void synchro_2(void) Boom[y+1][x-1] = Xblank; Boom[y+1][x] = Xblank; Boom[y+1][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif goto loop; @@ -4172,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: @@ -4205,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: @@ -4238,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: @@ -4271,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: @@ -4517,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; /* --------------------------------------------------------------------- */ @@ -4590,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: @@ -4662,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; @@ -4723,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; @@ -4824,7 +4907,7 @@ void synchro_2(void) Boom[y+1][x-1] = Xemerald; Boom[y+1][x] = Xemerald; Boom[y+1][x+1] = Xemerald; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif goto loop; @@ -4843,19 +4926,22 @@ void synchro_2(void) Boom[y+1][x-1] = Xblank; Boom[y+1][x] = Xblank; Boom[y+1][x+1] = Xblank; -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, element); #endif goto loop; case Xboom_android: -#if 0 +#if PLAY_ELEMENT_SOUND play_element_sound(x, y, SAMPLE_boom, Xandroid); #endif case Xboom_1: Next[y][x] = Xboom_2; -#if 1 - 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; @@ -4882,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;