fix: 部分肉鸽地图无法正确部署

This commit is contained in:
DuKong
2023-04-28 20:32:18 +08:00
parent 12a74c784d
commit 5475bb393f
2 changed files with 20 additions and 67 deletions

View File

@@ -268,51 +268,6 @@
}
]
},
{
"stage_name": "瞭前顾后",
"replacement_home": [
{
"location": [
5,
5
],
"direction": "left"
}
],
"deploy_plan": [
{
"groups": [ "百嘉", "基石", "地面C", "号角", "挡人先锋", "重装", "其他地面", "异德", "刺客" ],
"location": [ 5, 5 ],
"direction": "left"
},
{
"groups": [ "单奶", "群奶" ],
"location": [ 7, 4 ],
"direction": "left"
},
{
"groups": [ "高台C", "控制", "召唤", "术师", "狙击", "辅助" ],
"location": [ 4, 4 ],
"direction": "up"
},
{
"groups": [ "百嘉", "基石", "地面C", "玛恩纳", "号角", "地刺", "刺客", "重装", "挡人先锋" ],
"location": [ 6, 5 ],
"direction": "left"
},
{
"groups": [ "召唤", "高台C", "控制", "术师", "狙击", "辅助", "其他高台" ],
"location": [ 7, 2 ],
"direction": "left"
},
{
"groups": [ "地面C", "异德", "地刺", "刺客", "挡人先锋", "其他地面" ],
"location": [ 4, 5 ],
"direction": "left"
}
]
},
{
"stage_name": "铳与秩序",
"replacement_home": [

View File

@@ -174,31 +174,29 @@ bool asst::RoguelikeBattleTaskPlugin::calc_stage_info()
.ban_medic = opt->force_ban_medic };
m_deploy_plan = opt->deploy_plan;
m_retreat_plan = opt->retreat_plan;
if (opt->replacement_home.empty()) {
for (const auto& [loc, side] : m_normal_tile_info) {
if (side.key == TilePack::TileKey::Home) {
m_homes.emplace_back(ReplacementHome { loc, battle::DeployDirection::None });
}
}
if (m_homes.empty()) {
for (const auto& [loc, side] : m_normal_tile_info) {
if (side.key == TilePack::TileKey::Home) {
m_homes.emplace_back(ReplacementHome { loc, battle::DeployDirection::None });
}
m_allow_to_use_dice = true;
m_role_order = {
battle::Role::Warrior, battle::Role::Pioneer, battle::Role::Medic,
battle::Role::Tank, battle::Role::Sniper, battle::Role::Caster,
battle::Role::Support, battle::Role::Special, battle::Role::Drone,
};
}
else {
auto homes_pos = m_homes | views::transform(&ReplacementHome::location);
auto invalid_homes_pos =
homes_pos |
views::filter([&](const auto& home_pos) { return !m_normal_tile_info.contains(home_pos); }) |
views::transform(&Point::to_string);
if (!invalid_homes_pos.empty()) {
Log.error("No replacement homes point:", invalid_homes_pos);
}
Log.info("replacement home:", homes_pos | views::transform(&Point::to_string));
m_allow_to_use_dice = true;
m_role_order = {
battle::Role::Warrior, battle::Role::Pioneer, battle::Role::Medic,
battle::Role::Tank, battle::Role::Sniper, battle::Role::Caster,
battle::Role::Support, battle::Role::Special, battle::Role::Drone,
};
}
else {
auto homes_pos = m_homes | views::transform(&ReplacementHome::location);
auto invalid_homes_pos =
homes_pos | views::filter([&](const auto& home_pos) { return !m_normal_tile_info.contains(home_pos); }) |
views::transform(&Point::to_string);
if (!invalid_homes_pos.empty()) {
Log.error("No replacement homes point:", invalid_homes_pos);
}
Log.info("replacement home:", homes_pos | views::transform(&Point::to_string));
}
if (m_homes.empty()) {