diff --git a/src/game_config_manager.cpp b/src/game_config_manager.cpp index 88d47639688..58ed561bb50 100644 --- a/src/game_config_manager.cpp +++ b/src/game_config_manager.cpp @@ -282,10 +282,6 @@ void game_config_manager::load_game_config(FORCE_RELOAD_CONFIG force_reload, for (config& scenario : game_config_.child_range("scenario")) { scenario["require_scenario"] = require_campaign; - for (config& side : scenario.child_range("side")) - { - side["no_leader"] = side["no_leader"].to_bool(true); - } } } } diff --git a/src/game_initialization/connect_engine.cpp b/src/game_initialization/connect_engine.cpp index 64d21ea3d32..bd696d02d28 100644 --- a/src/game_initialization/connect_engine.cpp +++ b/src/game_initialization/connect_engine.cpp @@ -1057,10 +1057,6 @@ config side_engine::new_config() const res.add_child_at("ai", config {"ai_algorithm", ai_algorithm_}, 0); } - if(controller_ == CNTR_EMPTY) { - res["no_leader"] = true; - } - // A side's "current_player" is the player which has currently taken that side or the one for which it is reserved. // The "player_id" is the id of the client who controls that side. It's always the host for Local and AI players and // always empty for free/reserved sides or null controlled sides. You can use !res["player_id"].empty() to check diff --git a/src/game_initialization/flg_manager.cpp b/src/game_initialization/flg_manager.cpp index bd03eff2bf0..4f4472a8248 100644 --- a/src/game_initialization/flg_manager.cpp +++ b/src/game_initialization/flg_manager.cpp @@ -278,7 +278,7 @@ void flg_manager::update_available_leaders() { available_leaders_.clear(); - if(!default_leader_type_.empty() || !(side_["no_leader"].to_bool() || leader_lock_)) { + if(!default_leader_type_.empty() || !leader_lock_) { int random_pos = 0; // Add a default leader if there is one. diff --git a/src/saved_game.cpp b/src/saved_game.cpp index a0d79c5f591..c0694bfd7ee 100644 --- a/src/saved_game.cpp +++ b/src/saved_game.cpp @@ -188,6 +188,12 @@ void saved_game::set_defaults() for(config& side : starting_pos_.child_range("side")) { // Set save_id default value directly after loading to its default to prevent different default behaviour in // mp_connect code and sp code. + + if(side["no_leader"].to_bool()) { + side["leader_lock"] = true; + side.remove_attribute("type"); + } + if(side["save_id"].empty()) { side["save_id"] = side["id"]; } diff --git a/src/tests/test_mp_connect.cpp b/src/tests/test_mp_connect.cpp index 8a29c7127e5..6ccdd1978f1 100644 --- a/src/tests/test_mp_connect.cpp +++ b/src/tests/test_mp_connect.cpp @@ -275,7 +275,7 @@ BOOST_AUTO_TEST_CASE( flg_map_settings ) // No leader. side.clear(); - side["no_leader"] = true; + side["leader_lock"] = true; side_engine.reset(create_side_engine(side, connect_engine.get())); BOOST_CHECK_EQUAL( side_engine->flg().choosable_leaders().size(), 1 ); BOOST_CHECK_EQUAL( side_engine->flg().current_leader(), "null" );