X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fsynchro_1.c;h=faea7eb5f5b53655b5f8438e2efcaebd77a678a4;hb=2d235297197dd0c325184f7fc401d9c5c41c2616;hp=a8ff691a2d65828392b9d1d53dc77861bba46bd7;hpb=f47cd4b09952aaf95d16542f6b53f2d8bf9e1d7d;p=rocksndiamonds.git diff --git a/src/game_em/synchro_1.c b/src/game_em/synchro_1.c index a8ff691a..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) @@ -541,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; @@ -583,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; @@ -594,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; @@ -987,11 +994,14 @@ static void player(struct PLAYER *ply) case Xexit_2: case Xexit_3: play_element_sound(x, y, SAMPLE_exit, Xexit_1); - if (--lev.home == 0) + + 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; } } @@ -1004,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; @@ -1042,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; @@ -1081,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; @@ -1090,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;