diff --git a/src/ai/actions.cpp b/src/ai/actions.cpp index b13fb21d907d..267f020e1205 100644 --- a/src/ai/actions.cpp +++ b/src/ai/actions.cpp @@ -93,10 +93,9 @@ void action_result::execute() init_for_execution(); check_before(); if (is_success()){ - do_execute(); try { - resources::controller->check_victory(); - } catch (...) { + do_execute(); + } catch (end_level_exception&) { is_ok(); //Silences "unchecked result" warning throw; } @@ -285,6 +284,7 @@ void attack_result::do_execute() resources::tod_manager->get_time_of_day())); set_scontext_synced sync; attack_unit_and_advance(attacker_loc_, defender_loc_, attacker_weapon, defender_weapon, true, advancements_); + resources::controller->check_victory(); } else { diff --git a/src/playsingle_controller.cpp b/src/playsingle_controller.cpp index 14b291010818..251662085cfe 100644 --- a/src/playsingle_controller.cpp +++ b/src/playsingle_controller.cpp @@ -943,6 +943,9 @@ void playsingle_controller::play_ai_turn(){ try { ai::manager::play_turn(player_number_); } catch (end_turn_exception&) { + } catch (end_level_exception&) { + turn_data.sync_network(); + throw; } recorder.end_turn(); turn_data.sync_network();