diff --git a/src/menu_events.cpp b/src/menu_events.cpp index 6440878f7944..c15a6b6be7d4 100644 --- a/src/menu_events.cpp +++ b/src/menu_events.cpp @@ -2965,7 +2965,7 @@ void console_handler::do_next_level() e.proceed_to_next_level = true; e.is_victory = true; menu_handler_.pc_.set_end_level_data(e); - throw return_to_play_side_exception(); + menu_handler_.pc_.maybe_throw_return_to_play_side(); } void console_handler::do_choose_level() { @@ -3015,7 +3015,7 @@ void console_handler::do_choose_level() { e.proceed_to_next_level = true; e.is_victory = true; menu_handler_.pc_.set_end_level_data(e); - throw return_to_play_side_exception(); + menu_handler_.pc_.maybe_throw_return_to_play_side(); } } diff --git a/src/play_controller.hpp b/src/play_controller.hpp index b326e3decf92..90c96bc2a474 100644 --- a/src/play_controller.hpp +++ b/src/play_controller.hpp @@ -207,7 +207,7 @@ class play_controller : public controller_base, public events::observer, public virtual bool should_return_to_play_side() { return is_regular_game_end(); } void maybe_throw_return_to_play_side() - { if(should_return_to_play_side()) { throw return_to_play_side_exception(); } } + { if(should_return_to_play_side() && !linger_ ) { throw return_to_play_side_exception(); } } protected: void play_slice_catch();