From 1c67f59e7d1aa1dceec5482c04ede90dd1ba9ce4 Mon Sep 17 00:00:00 2001 From: Alex Mooney Date: Mon, 23 Dec 2019 15:03:03 -0800 Subject: [PATCH] Add warning if attempting to keep world (#36107) --- src/game.cpp | 45 +++++++++++++++++++++++++++++---------------- src/options.cpp | 6 +++--- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/game.cpp b/src/game.cpp index 9974bb5fb9d1f..4809d51b6b19b 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1173,22 +1173,35 @@ bool game::cleanup_at_end() bool queryReset = false; if( get_option( "WORLD_END" ) == "query" ) { - uilist smenu; - smenu.allow_cancel = false; - smenu.addentry( 0, true, 'k', "%s", _( "Keep world" ) ); - smenu.addentry( 1, true, 'r', "%s", _( "Reset world" ) ); - smenu.addentry( 2, true, 'd', "%s", _( "Delete world" ) ); - smenu.query(); - - switch( smenu.ret ) { - case 0: - break; - case 1: - queryReset = true; - break; - case 2: - queryDelete = true; - break; + bool decided = false; + std::string buffer = _( "Warning: NPC interactions and some other global flags " + "will not all reset when starting a new character in an " + "already-played world. This can lead to some strange " + "behavior.\n\n" + "Are you sure you wish to keep this world?" + ); + + while( !decided ) { + uilist smenu; + smenu.allow_cancel = false; + smenu.addentry( 0, true, 'r', "%s", _( "Reset world" ) ); + smenu.addentry( 1, true, 'd', "%s", _( "Delete world" ) ); + smenu.addentry( 2, true, 'k', "%s", _( "Keep world" ) ); + smenu.query(); + + switch( smenu.ret ) { + case 0: + queryReset = true; + decided = true; + break; + case 1: + queryDelete = true; + decided = true; + break; + case 2: + decided = query_yn( buffer ); + break; + } } } diff --git a/src/options.cpp b/src/options.cpp index f135859075b16..7131ef7e88121 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -1940,9 +1940,9 @@ void options_manager::add_options_world_default() add( "WORLD_END", "world_default", translate_marker( "World end handling" ), translate_marker( "Handling of game world when last character dies." ), { - { "keep", translate_marker( "Keep" ) }, { "reset", translate_marker( "Reset" ) }, - { "delete", translate_marker( "Delete" ) }, { "query", translate_marker( "Query" ) } - }, "keep" + { "reset", translate_marker( "Reset" ) }, { "delete", translate_marker( "Delete" ) }, + { "query", translate_marker( "Query" ) }, { "keep", translate_marker( "Keep" ) } + }, "reset" ); mOptionsSort["world_default"]++;