X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fsynchro_1.c;h=faea7eb5f5b53655b5f8438e2efcaebd77a678a4;hb=2d235297197dd0c325184f7fc401d9c5c41c2616;hp=0ff540e35a87640410ca97d52a0531de0271f5d8;hpb=6f6af05b1d4b9671bc115ab9ab2fa3b9d516a652;p=rocksndiamonds.git diff --git a/src/game_em/synchro_1.c b/src/game_em/synchro_1.c index 0ff540e3..faea7eb5 100644 --- a/src/game_em/synchro_1.c +++ b/src/game_em/synchro_1.c @@ -87,8 +87,8 @@ static int test(struct PLAYER *ply) if (!ply->alive) return 0; - if (lev.time == 0) - return(1); + if (lev.time_initial > 0 && lev.time == 0) + return 1; switch(Cave[y-1][x]) { @@ -108,7 +108,7 @@ static int test(struct PLAYER *ply) case Xtank_goe: case Xtank_gos: case Xtank_gow: - return(1); + return 1; } switch(Cave[y][x+1]) @@ -129,7 +129,7 @@ static int test(struct PLAYER *ply) case Xtank_goe: case Xtank_gos: case Xtank_gow: - return(1); + return 1; } switch(Cave[y+1][x]) @@ -150,7 +150,7 @@ static int test(struct PLAYER *ply) case Xtank_goe: case Xtank_gos: case Xtank_gow: - return(1); + return 1; } switch(Cave[y][x-1]) @@ -171,7 +171,7 @@ static int test(struct PLAYER *ply) case Xtank_goe: case Xtank_gos: case Xtank_gow: - return(1); + return 1; } switch(Cave[y][x]) @@ -184,10 +184,10 @@ static int test(struct PLAYER *ply) case Xdynamite_2: case Xdynamite_3: case Xdynamite_4: - return(0); + return 0; } - return(1); + return 1; } static void die(struct PLAYER *ply) @@ -208,6 +208,9 @@ static void die(struct PLAYER *ply) case Xbug_gos: case Xbug_gow: Cave[y-1][x] = Xboom_bug; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; case Xtank_n: @@ -219,6 +222,9 @@ static void die(struct PLAYER *ply) case Xtank_gos: case Xtank_gow: Cave[y-1][x] = Xboom_bomb; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; } @@ -233,6 +239,9 @@ static void die(struct PLAYER *ply) case Xbug_gos: case Xbug_gow: Cave[y][x+1] = Xboom_bug; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; case Xtank_n: @@ -244,6 +253,9 @@ static void die(struct PLAYER *ply) case Xtank_gos: case Xtank_gow: Cave[y][x+1] = Xboom_bomb; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; } @@ -258,6 +270,9 @@ static void die(struct PLAYER *ply) case Xbug_gos: case Xbug_gow: Cave[y+1][x] = Xboom_bug; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; case Xtank_n: @@ -269,6 +284,9 @@ static void die(struct PLAYER *ply) case Xtank_gos: case Xtank_gow: Cave[y+1][x] = Xboom_bomb; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; } @@ -283,6 +301,9 @@ static void die(struct PLAYER *ply) case Xbug_gos: case Xbug_gow: Cave[y][x-1] = Xboom_bug; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; case Xtank_n: @@ -294,6 +315,9 @@ static void die(struct PLAYER *ply) case Xtank_gos: case Xtank_gow: Cave[y][x-1] = Xboom_bomb; +#if 0 + play_element_sound(x, y, SAMPLE_boom, Zplayer); +#endif break; } @@ -302,11 +326,11 @@ static void die(struct PLAYER *ply) case Xexit_1: case Xexit_2: case Xexit_3: - play_sound(x, y, SAMPLE_exit); + play_element_sound(x, y, SAMPLE_exit, Xexit_1); break; default: - play_sound(x, y, SAMPLE_die); + play_element_sound(x, y, SAMPLE_die, Zplayer); break; } @@ -393,7 +417,7 @@ static void player(struct PLAYER *ply) if (++ply->dynamite_cnt == 5 && ply->dynamite) { Cave[y][x] = Xdynamite_1; - play_sound(x, y, SAMPLE_dynamite); + play_element_sound(x, y, SAMPLE_dynamite, Xdynamite_1); ply->dynamite--; } } @@ -423,7 +447,7 @@ static void player(struct PLAYER *ply) case Yacid_splash_wB: Cave[y][x] = Zplayer; Next[y][x] = Zplayer; - play_sound(x, y, SAMPLE_blank); + play_element_sound(x, y, SAMPLE_blank, Xblank); ply->anim = SPR_walk + anim; ply->x = x; ply->y = y; @@ -517,39 +541,46 @@ static void player(struct PLAYER *ply) case Xkey_1: ply->keys |= 0x01; + Cave[y][x] = Ykey_1_eat; goto key_walk; case Xkey_2: ply->keys |= 0x02; + Cave[y][x] = Ykey_2_eat; goto key_walk; case Xkey_3: ply->keys |= 0x04; + Cave[y][x] = Ykey_3_eat; goto key_walk; case Xkey_4: ply->keys |= 0x08; + Cave[y][x] = Ykey_4_eat; goto key_walk; case Xkey_5: ply->keys |= 0x10; + Cave[y][x] = Ykey_5_eat; goto key_walk; case Xkey_6: ply->keys |= 0x20; + Cave[y][x] = Ykey_6_eat; goto key_walk; case Xkey_7: ply->keys |= 0x40; + Cave[y][x] = Ykey_7_eat; goto key_walk; case Xkey_8: ply->keys |= 0x80; + Cave[y][x] = Ykey_8_eat; goto key_walk; key_walk: - Cave[y][x] = Yball_eat; Next[y][x] = Zplayer; play_element_sound(x, y, SAMPLE_collect, element); lev.score += lev.key_score; @@ -559,7 +590,7 @@ static void player(struct PLAYER *ply) break; case Xlenses: - Cave[y][x] = Yball_eat; + Cave[y][x] = Ylenses_eat; Next[y][x] = Zplayer; play_element_sound(x, y, SAMPLE_collect, element); lev.score += lev.lenses_score; @@ -570,7 +601,7 @@ static void player(struct PLAYER *ply) break; case Xmagnify: - Cave[y][x] = Yball_eat; + Cave[y][x] = Ymagnify_eat; Next[y][x] = Zplayer; play_element_sound(x, y, SAMPLE_collect, element); lev.score += lev.magnify_score; @@ -706,7 +737,7 @@ static void player(struct PLAYER *ply) Cave[y][x+dx] = dx > 0 ? Yspring_kill_e : Yspring_kill_w; Next[y][x] = Zplayer; Next[y][x+dx] = dx > 0 ? Xspring_e : Xspring_w; - play_sound(x, y, SAMPLE_slurp); + play_element_sound(x, y, SAMPLE_slurp, Xalien); lev.score += lev.slurp_score; ply->x = x; break; @@ -962,12 +993,15 @@ static void player(struct PLAYER *ply) case Xexit_1: case Xexit_2: case Xexit_3: - play_sound(x, y, SAMPLE_exit); - if (--lev.home == 0) + play_element_sound(x, y, SAMPLE_exit, Xexit_1); + + if (--lev.home == 0 && lev.time_initial > 0) /* game won */ lev.score += lev.time * lev.exit_score / 100; + ply->anim = SPR_walk + anim; ply->x = x; ply->y = y; + break; } } @@ -980,8 +1014,14 @@ static void player(struct PLAYER *ply) /* fire is pressed */ case Xgrass: + Cave[y][x] = Ygrass_eat; + Next[y][x] = Xblank; + play_element_sound(x, y, SAMPLE_dirt, element); + ply->anim = SPR_spray + anim; + break; + case Xdirt: - Cave[y][x] = Yball_eat; + Cave[y][x] = Ydirt_eat; Next[y][x] = Xblank; play_element_sound(x, y, SAMPLE_dirt, element); ply->anim = SPR_spray + anim; @@ -1018,38 +1058,45 @@ static void player(struct PLAYER *ply) case Xkey_1: ply->keys |= 0x01; + Cave[y][x] = Ykey_1_eat; goto key_shoot; case Xkey_2: ply->keys |= 0x02; + Cave[y][x] = Ykey_2_eat; goto key_shoot; case Xkey_3: ply->keys |= 0x04; + Cave[y][x] = Ykey_3_eat; goto key_shoot; case Xkey_4: ply->keys |= 0x08; + Cave[y][x] = Ykey_4_eat; goto key_shoot; case Xkey_5: ply->keys |= 0x10; + Cave[y][x] = Ykey_5_eat; goto key_shoot; case Xkey_6: ply->keys |= 0x20; + Cave[y][x] = Ykey_6_eat; goto key_shoot; case Xkey_7: ply->keys |= 0x40; + Cave[y][x] = Ykey_7_eat; goto key_shoot; case Xkey_8: ply->keys |= 0x80; + Cave[y][x] = Ykey_8_eat; goto key_shoot; key_shoot: - Cave[y][x] = Yball_eat; Next[y][x] = Xblank; play_element_sound(x, y, SAMPLE_collect, element); lev.score += lev.key_score; @@ -1057,7 +1104,7 @@ static void player(struct PLAYER *ply) break; case Xlenses: - Cave[y][x] = Yball_eat; + Cave[y][x] = Ylenses_eat; Next[y][x] = Xblank; play_element_sound(x, y, SAMPLE_collect, element); lev.score += lev.lenses_score; @@ -1066,7 +1113,7 @@ static void player(struct PLAYER *ply) break; case Xmagnify: - Cave[y][x] = Yball_eat; + Cave[y][x] = Ymagnify_eat; Next[y][x] = Xblank; play_element_sound(x, y, SAMPLE_collect, element); lev.score += lev.magnify_score;