X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=643d36e5840230e1389bb7c911d79151726d70e2;hb=a5f00662e9ad7f9d093a417ca05c473939b99108;hp=a2afc3e3cb157c61f468c2a71132609667895563;hpb=6e342e22254ef0e3a4c0b1ecd218cc9d22566c57;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index a2afc3e3..643d36e5 100644 --- a/src/game.c +++ b/src/game.c @@ -13998,7 +13998,6 @@ void BuryPlayer(struct PlayerInfo *player) return; PlayLevelSoundElementAction(jx, jy, player->artwork_element, ACTION_DYING); - PlayLevelSound(jx, jy, SND_GAME_LOSING); RemovePlayer(player); @@ -14656,7 +14655,7 @@ static int DigField(struct PlayerInfo *player, LevelSolved(); - PlayLevelSound(x, y, SND_GAME_SOKOBAN_SOLVING); + PlaySound(SND_GAME_SOKOBAN_SOLVING); } } else @@ -15640,15 +15639,21 @@ void RequestRestartGame(char *message) boolean has_started_game = hasStartedNetworkGame(); int request_mode = (has_started_game ? REQ_ASK : REQ_CONFIRM); + int door_state = DOOR_CLOSE_1; - if (Request(message, request_mode | REQ_STAY_CLOSED) && has_started_game) + if (Request(message, request_mode | REQ_STAY_OPEN) && has_started_game) { + CloseDoor(door_state); + StartGameActions(network.enabled, setup.autorecord, level.random_seed); } else { - // needed in case of envelope request to close game panel - CloseDoor(DOOR_CLOSE_1); + // if game was invoked from level editor, also close tape recorder door + if (level_editor_test_game) + door_state = DOOR_CLOSE_ALL; + + CloseDoor(door_state); SetGameStatus(GAME_MODE_MAIN); @@ -15681,6 +15686,9 @@ void CheckGameOver(void) if (game_over_delay > 0) { + if (game_over_delay == game_over_delay_value / 2) + PlaySound(SND_GAME_LOSING); + game_over_delay--; return;