X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=89ed530fcf9ba4d2cc551348dbe359bda6d7f121;hb=5caf02865ba54b967aa085c4221040113a9e1976;hp=1fbb21a5cef1115e2672f62d0f3dd47f907f9da4;hpb=776100a335243955272732ccba109d366e0ba3fd;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 1fbb21a5..89ed530f 100644 --- a/src/game.c +++ b/src/game.c @@ -897,15 +897,16 @@ int NewHiScore() #ifdef ONE_PER_NAME put_into_list: #endif - strncpy(highscore[k].Name, setup.player_name, MAX_NAMELEN - 1); - highscore[k].Name[MAX_NAMELEN - 1] = '\0'; + strncpy(highscore[k].Name, setup.player_name, MAX_PLAYER_NAME_LEN); + highscore[k].Name[MAX_PLAYER_NAME_LEN] = '\0'; highscore[k].Score = local_player->score; position = k; break; } #ifdef ONE_PER_NAME - else if (!strncmp(setup.player_name, highscore[k].Name, MAX_NAMELEN - 1)) + else if (!strncmp(setup.player_name, highscore[k].Name, + MAX_PLAYER_NAME_LEN)) break; /* player already there with a higher score */ #endif @@ -1313,6 +1314,11 @@ void DynaExplode(int ex, int ey) break; element = Feld[x][y]; + + /* do not restart explosions of fields with active bombs */ + if (element == EL_EXPLODING && IS_ACTIVE_BOMB(Store2[x][y])) + continue; + Explode(x, y, EX_PHASE_START, EX_BORDER); if (element != EL_LEERRAUM && @@ -4579,6 +4585,8 @@ int DigField(struct PlayerInfo *player, player->programmed_action = move_direction; DOUBLE_PLAYER_SPEED(player); + PlaySoundLevel(x, y, SND_GATE); + break; case EL_EM_GATE_1X: @@ -4594,6 +4602,8 @@ int DigField(struct PlayerInfo *player, player->programmed_action = move_direction; DOUBLE_PLAYER_SPEED(player); + PlaySoundLevel(x, y, SND_GATE); + break; case EL_SP_PORT1_LEFT: @@ -4635,6 +4645,8 @@ int DigField(struct PlayerInfo *player, player->programmed_action = move_direction; DOUBLE_PLAYER_SPEED(player); + PlaySoundLevel(x, y, SND_GATE); + break; case EL_AUSGANG_ZU: