File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -832,7 +832,7 @@ static short get_global_inputs(void)
832832 return true;
833833 if (player -> victory_state != VicS_Undecided && is_game_key_pressed (Gkey_FinishLevel , true, false))
834834 {
835- if (player -> victory_state == VicS_LostLevel && network_is_active () && player -> id_number == get_host_player_id ())
835+ if (( player -> victory_state == VicS_LostLevel ) && network_is_active () && ( player -> id_number == get_host_player_id ()) && network_human_contenders_remain ())
836836 {
837837 return true;
838838 }
Original file line number Diff line number Diff line change @@ -3453,7 +3453,7 @@ void update_player_objectives(PlayerNumber plyr_idx)
34533453 break ;
34543454 case VicS_LostLevel:
34553455 TextStringId msg_idx = CpgStr_LevelLost;
3456- if (network_is_active () && player->id_number == get_host_player_id ()) {
3456+ if (network_is_active () && ( player->id_number == get_host_player_id ()) && network_human_contenders_remain ()) {
34573457 msg_idx = GUIStr_NetHostLostWaitingForPlayers;
34583458 }
34593459 set_level_objective (player->id_number , get_string (msg_idx));
Original file line number Diff line number Diff line change @@ -324,6 +324,17 @@ static TbBool network_has_remote_enemies_remaining(void)
324324 return false;
325325}
326326
327+ TbBool network_human_contenders_remain (void )
328+ {
329+ for (PlayerNumber player_idx = 0 ; player_idx < PLAYERS_COUNT ; player_idx ++ ) {
330+ struct PlayerInfo * player = get_player (player_idx );
331+ if (player_exists (player ) && (player -> is_active == 1 ) && ((player -> allocflags & PlaF_CompCtrl ) == 0 ) && !player_cannot_win (player_idx )) {
332+ return true;
333+ }
334+ }
335+ return false;
336+ }
337+
327338static TbBool network_has_remote_users_remaining (void )
328339{
329340 for (NetUserId user_id = 0 ; user_id < (NetUserId )netstate .max_players ; user_id += 1 ) {
Original file line number Diff line number Diff line change @@ -50,6 +50,7 @@ long network_session_join(void);
5050
5151TbBool network_player_active (int plyr_idx );
5252const char * network_player_name (int plyr_idx );
53+ TbBool network_human_contenders_remain (void );
5354void process_player_leave_game_packet (struct PlayerInfo * player );
5455void process_disconnected_network_players (void );
5556void sync_initial_network_seed (void );
Original file line number Diff line number Diff line change @@ -653,7 +653,7 @@ TbBool process_players_global_packet_action(PlayerNumber plyr_idx)
653653 quit_game = 1 ;
654654 }
655655 return 0 ;
656- } else if (host_packet && (victory_state == VicS_LostLevel )) {
656+ } else if (host_packet && (victory_state == VicS_LostLevel ) && network_human_contenders_remain () ) {
657657 return 0 ;
658658 } else if (host_packet && (victory_state == VicS_WonLevel )) {
659659 player -> additional_flags &= ~PlaAF_UnlockedLordTorture ;
You can’t perform that action at this time.
0 commit comments