From 9e4358919afd28bdb4481eaf8daf4dcd4eca3e02 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Fri, 17 Aug 2018 11:08:37 +0200 Subject: [PATCH] fixed solving level when playing multi-player games Before, solving a level was broken in both local and network multi-player games: In local multi-player games, the level was only solved if the player marked as "local player" (which is only one of all players in a level) entered the exit (but not if any other player entered the exit). As an additional bug, the level was *always* solved as soon as the "local player" entered the exit, regardless if any other player was still on the playfield. In network multi-player games, the level was always solved for the first player entering the exit (as this player is always the "local player" in one of the participating network clients), while the game was frozen on all other network clients (and had to be manually ended by using the Escape key or stop button). With this fix, multi-player games will always be solved (locally or on all network clients) if the last player on the playfield has entered the exit. --- src/game.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/game.c b/src/game.c index 7076d52c..4edcf7e8 100644 --- a/src/game.c +++ b/src/game.c @@ -12644,9 +12644,10 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) { RemovePlayerWithCleanup(player); - if (local_player->friends_still_needed == 0 || - IS_SP_ELEMENT(Feld[jx][jy])) - PlayerWins(player); + if ((local_player->friends_still_needed == 0 || + IS_SP_ELEMENT(Feld[jx][jy])) && + AllPlayersGone) + PlayerWins(local_player); } /* this breaks one level: "machine", level 000 */ -- 2.34.1