diff --git a/src/MeoAssistant/InfrastConfiger.cpp b/src/MeoAssistant/InfrastConfiger.cpp index 17e2f278aa..76f2e761f3 100644 --- a/src/MeoAssistant/InfrastConfiger.cpp +++ b/src/MeoAssistant/InfrastConfiger.cpp @@ -197,6 +197,7 @@ bool asst::InfrastConfiger::parse(const json::value& json) } group.optional.emplace_back(std::move(comb)); } + group.allow_external = group_json.get("allowExternal", false); group_vec.emplace_back(std::move(group)); } m_skills_groups.emplace(facility_name, std::move(group_vec)); diff --git a/src/MeoAssistant/InfrastProductionTask.cpp b/src/MeoAssistant/InfrastProductionTask.cpp index 2ff385bd87..cc351f7ac6 100644 --- a/src/MeoAssistant/InfrastProductionTask.cpp +++ b/src/MeoAssistant/InfrastProductionTask.cpp @@ -408,8 +408,9 @@ bool asst::InfrastProductionTask::optimal_calc() // 允许外部的话,就把单个干员凑进来 if (group.allow_external) { for (size_t i = cur_combs.size(); i != cur_max_num_of_opers; ++i) { - cur_combs.emplace_back(cur_available_opers.at(i)); - cur_efficient += cur_available_opers.at(i).efficient.at(m_product); + size_t index = i - cur_combs.size(); + cur_combs.emplace_back(cur_available_opers.at(index)); + cur_efficient += cur_available_opers.at(index).efficient.at(m_product); } } else { // 否则这个组合人不够,就不可用了