player->killed = FALSE;
player->reanimated = FALSE;
+ player->buried = FALSE;
player->action = 0;
player->effective_action = 0;
DigField(player, 0, 0, 0, 0, 0, 0, DF_NO_PUSH);
SnapField(player, 0, 0);
- player->GameOver = FALSE;
-
map_player_action[i] = i;
}
AllPlayersGone = FALSE;
game.LevelSolved = FALSE;
+ game.GameOver = FALSE;
game.LevelSolved_GameWon = FALSE;
game.LevelSolved_GameEnd = FALSE;
return;
game.LevelSolved = TRUE;
-
- local_player->GameOver = TRUE;
+ game.GameOver = TRUE;
local_player->score_final = (level.game_engine_type == GAME_ENGINE_TYPE_EM ?
level.native_em_level->lev->score :
int enter_side = enter_side_horiz | enter_side_vert;
int leave_side = leave_side_horiz | leave_side_vert;
- if (player->GameOver) // do not reanimate dead player
+ if (player->buried) // do not reanimate dead player
return;
if (!player_relocated) // no need to relocate the player
game.friends_still_needed--;
if (!game.friends_still_needed &&
- !local_player->GameOver && AllPlayersGone)
+ !game.GameOver && AllPlayersGone)
LevelSolved();
return;
PlayLevelSoundElementAction(jx, jy, player->artwork_element, ACTION_DYING);
PlayLevelSound(jx, jy, SND_GAME_LOSING);
- player->GameOver = TRUE;
RemovePlayer(player);
+
+ player->buried = TRUE;
+ game.GameOver = TRUE;
}
void RemovePlayer(struct PlayerInfo *player)
else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
return (game_mm.game_over && !game_mm.level_solved);
else // GAME_ENGINE_TYPE_RND
- return (local_player->GameOver && !game.LevelSolved);
+ return (game.GameOver && !game.LevelSolved);
}
boolean checkGameEnded(void)