mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 10:10:45 +08:00
feat: 修复了傀影肉鸽的一些错误,更新了肉鸽协议 (#5859)
This commit is contained in:
@@ -1,112 +1,242 @@
|
||||
# 集成战略协议
|
||||
# 将你的肉鸽理解灌注给牛牛--集成战略协议
|
||||
|
||||
## 干员招募
|
||||
|
||||
`resource/recruitment.json` 描述了干员招募的优先级
|
||||
|
||||
## 肉鸽资源存放位置
|
||||
|
||||
- `resource/roguelike/`下按照主题存放各个肉鸽的作业资源
|
||||
- 主题文件夹:`Phantom/` 为傀影肉鸽资源,`Mizuki/` 为水月肉鸽资源,`Sami/` 为萨米肉鸽资源
|
||||
- `autopilot/`内是各个关卡的作战json
|
||||
- `关卡名.json` 关卡的作战逻辑
|
||||
- `encounter.json` 不期而遇类事件逻辑
|
||||
- `recruitment.json` 干员招募逻辑
|
||||
- `shopping.json` 商店购买藏品逻辑
|
||||
|
||||
|
||||
|
||||
## 肉鸽第一步--干员招募
|
||||
|
||||
`resource/roguelike/主题名/recruitment.json` 描述了干员招募的逻辑
|
||||
|
||||
```jsonc
|
||||
"Mizuki": { // 集成战略主题名称,后接若干字段
|
||||
"groups": [ // 对所有干员进行分组,实际作战时会按照干员分组进行顺序部署,非常重要!
|
||||
"百嘉",
|
||||
"基石",
|
||||
"召唤",
|
||||
"玛恩纳",
|
||||
"号角",
|
||||
"异德",
|
||||
"高台C",
|
||||
"地面C",
|
||||
"地刺",
|
||||
"控制",
|
||||
"单奶",
|
||||
"群奶",
|
||||
"投锋",
|
||||
"挡人先锋",
|
||||
"刺客",
|
||||
"重装",
|
||||
"术师",
|
||||
"狙击",
|
||||
"辅助",
|
||||
"骰子",
|
||||
"障碍物",
|
||||
"其他地面",
|
||||
"其他高台"
|
||||
],
|
||||
"team_complete_condition": [ // 阵容完备判断条件,仅当所有groups干员不少于对应threshold时,阵容完备
|
||||
// 在阵容未完备时,仅招募核心干员(key干员)与0希望干员
|
||||
{
|
||||
"theme": "Phantom", //肉鸽主题
|
||||
"priority": [ //群组
|
||||
...
|
||||
],
|
||||
"team_complete_condition": [ //阵容完备度检测
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### 干员分类
|
||||
|
||||
按照你的游戏理解将干员分成不同的 ***groups*** (群组,相关概念参考 [3.3-战斗流程协议](3.3-战斗流程协议.md))
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"theme": "Phantom",
|
||||
"priority": [ // 群组(有序是因为2.1.c)
|
||||
{
|
||||
"groups": [ "百嘉", "号角", "玛恩纳", "地面C" ],
|
||||
"name": "棘刺", // 群组名
|
||||
"opers": [ // 群组包含的干员,有序,代表部署优先度,
|
||||
// 比如需要部署该组干员时,先检测有没有棘刺,有棘刺就部署棘刺,没有棘刺再检测有没有号角
|
||||
{
|
||||
"name": "棘刺", // 干员名
|
||||
...
|
||||
},
|
||||
{
|
||||
"name": "号角",
|
||||
...
|
||||
}
|
||||
]
|
||||
},
|
||||
"team_complete_condition": [
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
1. 已有群组介绍
|
||||
|
||||
以傀影肉鸽的作业为例:主要将干员分为了
|
||||
| 分组 | 主要考量 | 主要包括职业 | 举例干员 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| ***地面阻挡*** | 站场和清杂 | 重装、近卫 | 奶盾、基石、羽毛笔、山、M3、令和稀音的召唤物、斑点、重装预备干员 |
|
||||
| ***地面单切*** | 单独对战精英怪 | 处决者特种 | 史尔特尔、异德、夜刀x、M3、红 |
|
||||
| ***高台C*** | 常态和决战输出 | 狙击、术士 | 假日威龙陈、澄闪、艾雅法拉、肥鸭 |
|
||||
| ***高台输出*** | 对空和常态输出 | 狙击、术士 | 空弦、能天使、克洛丝、史都华德 |
|
||||
| ***奶*** | 站场和清杂能力 | 治疗、辅助 | 凯尔希、浊心斯卡蒂、芙蓉、安赛尔 |
|
||||
| ***回费*** | 回复cost | 先锋 | 桃金娘、伊内丝、芬、香草 |
|
||||
| ***炮灰*** | 吸收炮弹、再部署 | 特种、召唤物 | M3、红、桃金娘、预备干员 |
|
||||
| ***高台预备*** | 有一定输出能力 | | 梓兰、预备干员 |
|
||||
|
||||
2. 需要特殊操作的群组
|
||||
|
||||
除了上面那些比较笼统的分组,我们有时候需要对一些干员或者干员种类进行一些定制的精细化操作,比如
|
||||
| 分组 | 包括干员 | 主要特点 |
|
||||
| :--- | :--- | :--- |
|
||||
| 棘刺 | 棘刺、号角 | 地面远程输出,有些图有非常适配的位置 |
|
||||
| 召唤类 | 凯尔希、令、稀音 | 自带地面阻挡,有的图需要优先部署,召唤物可以当阻挡也可以当炮灰 |
|
||||
| 情报官 | 晓哥、伊内丝 | 既可以回费、又可以侧面输出、还可以单切 |
|
||||
| 浊心斯卡蒂 | 浊心斯卡蒂 | 低压时奶量尚可,但是范围特殊,一些图有比较适配的位置 |
|
||||
| 银灰 | 银灰、玛恩纳 | 地面大范围决战输出,可以针对boss进行部署 |
|
||||
| 史尔特尔 | 史尔特尔 | 由于精二后固定携带3技能,这时站场能力几乎为零,需要阻挡位的部署优先度极低 |
|
||||
| 骰子 | 骰子 | 水月肉鸽中的骰子需要单独操作 |
|
||||
|
||||
3. 需要注意的地方
|
||||
|
||||
**目前固定将未识别到的地面干员归入倒数第二个编组后面,未识别到的高台干员归入倒数第一个编组后面**
|
||||
|
||||
### 预设阵容--阵容完备检测
|
||||
|
||||
在你预计能够通关或者打到高层的队伍中,哪些干员属于基本核心阵容?是比不可少的?又需要几个?
|
||||
|
||||
**注意:目前脚本的招募逻辑是在阵容未满足阵容完备度之前,只招募0希望和key干员,存希望给高星key干员**
|
||||
|
||||
**所以不要将完备度数字设置太高,建议所有需要的干员数量(基本核心阵容)加起来在4-8**
|
||||
```jsonc
|
||||
{
|
||||
"theme": "Phantom", //肉鸽主题
|
||||
"priority": [ //群组
|
||||
...
|
||||
],
|
||||
"team_complete_condition": [ //阵容完备度检测
|
||||
{
|
||||
"groups": [ //需要哪些群组中的干员
|
||||
"高台C"
|
||||
],
|
||||
"threshold": 1 //这些干员需要多少数量
|
||||
},
|
||||
{
|
||||
"groups": [
|
||||
"棘刺", //比如,这里表示棘刺、地面阻挡、地面单切、炮灰分组的干员最少需要2个
|
||||
"地面阻挡",
|
||||
"地面单切",
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
### 调整干员招募参数
|
||||
|
||||
1. 群组内的顺序代表部署检测的优先度
|
||||
|
||||
2. 群组内干员各个字段的意思和脚本相关的逻辑
|
||||
```jsonc
|
||||
{
|
||||
"theme": "Phantom",
|
||||
"priority": [
|
||||
"name": "地面阻挡", // 群组名
|
||||
"doc": "标准线为1档(清杂能力或者站场能力比山强)>山>2档(阻挡>2,可自回)>斑点,站场能力小于斑点放到单切或者炮灰组",
|
||||
// 带“doc”字段均为json内备注文档,对程序运行没有影响
|
||||
"opers": [ // 该包括哪些干员,有序,代表部署优先度
|
||||
{
|
||||
"name": "百炼嘉维尔", // 干员名称
|
||||
"skill": 3, // 使用几技能
|
||||
"skill_usage": 2, // 技能使用模式,参考3-3战斗流程协议,不填或者1为自动放,2为只放1次,3暂时不支持
|
||||
"alternate_skill": 2, // 当没有指定技能时使用的备选技能,一般是6星干员未精二且精二后使用3技能时才需要指定
|
||||
"recruit_priority": 900, // 招募优先级,数字越大优先级越高,900以上属于看到必招,400以下招募优先级比一些关键干员精二优先度还低
|
||||
"promote_priority": 600, // 进阶优先级,数字越大优先级越高,900以上属于有希望就精二,400以下招募优先级低于招募普通三星干员
|
||||
"is_key": true, // 是否为key干员,在阵容完备检测未通过时,仅招募key干员与0希望干员,保存希望
|
||||
"is_start": true, // 是否为开局选择干员,在队伍中没有start干员时,仅招募start干员与0希望干员,用户填写的干员会强制未start干员
|
||||
"promote_priority_when_team_full": 850,
|
||||
"recruit_priority_offsets": [ // 按当前阵容调控招募优先级
|
||||
{
|
||||
"groups": [ // 需要哪些组满足条件
|
||||
"凯尔希",
|
||||
"地面阻挡",
|
||||
"棘刺"
|
||||
],
|
||||
"is_less": false, // 条件是大于还是小于,false或者省略是大于,true是小于
|
||||
"threshold": 2, // 满足条件的数量
|
||||
"offset": -300 // 满足后对招募优先级的调整
|
||||
// 这里代表当 凯尔希、地面阻挡、棘刺 这三个群组中有2名以上干员时,百炼嘉维尔的招募优先级减300
|
||||
}
|
||||
]
|
||||
},
|
||||
...
|
||||
],
|
||||
"team_complete_condition": [
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
3. 按照你的理解新增群组和干员
|
||||
|
||||
新增群组后,你可以从已有的群组中复制干员过来,参考大佬们已有的评分,在此基础上修改
|
||||
|
||||
|
||||
|
||||
## 肉鸽第二步--战斗逻辑
|
||||
|
||||
`resource/roguelike/主题名/autopilot/关卡名.json` 描述了每个关卡的作战策略
|
||||
|
||||
### MAA肉鸽基本战斗逻辑--牛牛高血压之源
|
||||
|
||||
1. 根据地图上格子类型进行基本的战斗操作
|
||||
|
||||
- MAA会根据地图上的格子是蓝满还是红门,是高台还是地面,能不能被部署来进行基本的战斗操作
|
||||
|
||||
- 但是不会判断地图上无法确定的格子的情况,比如`驯兽小屋`的祭坛位置,`从众效应`是从左边还是从右边出怪
|
||||
|
||||
所以你需要尽量设计一套能够应付一张地图不同情况的战斗逻辑,小心被大家挂到issue上说这张图操作高血压哦(笑)
|
||||
|
||||
2. MAA的基本作战策略--堵蓝门
|
||||
|
||||
1. 地面干员会优先部署在蓝门的点上或者周围,方向朝向红门(自动计算),
|
||||
|
||||
2. 优先部署地面,然后部署治疗干员和高台干员,一圈一圈的由蓝门向四周部署,
|
||||
|
||||
3. 会不停的按照上面的逻辑部署可以部署的东西(干员和召唤物)
|
||||
|
||||
### 优化基本战斗策略
|
||||
|
||||
1. 蓝门替代方案
|
||||
|
||||
仅仅把干员堆在蓝门门口显然不太聪明,有些关卡有格子是一夫当关万夫莫开,防守在这里显然效率很高,
|
||||
|
||||
或者有些关卡有多个蓝门,MAA不知道哪个蓝门对应哪个红门,也会胡乱部署,
|
||||
|
||||
这个时候你需要打开[地图wiki](https://map.ark-nights.com/areas)一边对着地图一边在脑海里指挥作战了
|
||||
|
||||
首先在`设置`里将`坐标展示`切换为`MAA`
|
||||
|
||||
然后根据你的经验寻找需要优先防守的点的坐标和朝向,写入到json的`"replacement_home"`里面
|
||||
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"stage_name": "蓄水池", // 关卡名
|
||||
"replacement_home": [ // 重要防守点,至少需要填写1个
|
||||
{
|
||||
"groups": [ "高台C" ],
|
||||
"threshold": 1
|
||||
},
|
||||
{
|
||||
"groups": [ "控制" ],
|
||||
"threshold": 1
|
||||
},
|
||||
{
|
||||
"groups": [ "群奶", "单奶" ],
|
||||
"threshold": 1
|
||||
},
|
||||
{
|
||||
"groups": [ "刺客", "重装" ],
|
||||
"threshold": 1
|
||||
},
|
||||
{
|
||||
"groups": [ "挡人先锋", "投锋" ],
|
||||
"threshold": 1
|
||||
"location": [ //格子坐标,从地图wiki获得
|
||||
6,
|
||||
4
|
||||
],
|
||||
"direction_Doc1": "优先朝向,但并不代表绝对是这个方向(算法自行判断)",
|
||||
"direction_Doc2": "不填默认 none,即没有推荐方向,完全由算法自行判断",
|
||||
"direction_Doc3": "none / left / right / up / down / 无 / 上 / 下 / 左 / 右",
|
||||
"direction": "left"
|
||||
}
|
||||
],
|
||||
"百嘉": {
|
||||
"opers": [
|
||||
{
|
||||
"name": "百炼嘉维尔",
|
||||
"skill": 2, // 使用技能
|
||||
"recruit_priority": 900, // 招募优先级
|
||||
"promote_priority": 600, // 进阶优先级
|
||||
"is_key": true, // 在阵容未完备时,仅招募key干员与0希望干员
|
||||
"is_start": true, // 在队伍中没有start干员时,仅招募start干员与0希望干员
|
||||
"recruit_priority_offsets": [ // 按当前阵容调控招募优先级
|
||||
{
|
||||
"groups": [ "基石", "召唤", "号角", "地面C" ],
|
||||
"threshold": 1,
|
||||
"is_less": true,
|
||||
"offset": 100,
|
||||
"Doc": "地面阻挡输出位≤1时,百炼嘉维尔的招募优先级+100"
|
||||
},
|
||||
{
|
||||
"groups": [ "基石", "召唤", "号角", "地面C" ],
|
||||
"threshold": 3,
|
||||
"offset": -600,
|
||||
"Doc": "地面阻挡输出位≥3时,百炼嘉维尔的招募优先级-600"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
...
|
||||
```
|
||||
## 战斗部署
|
||||
```
|
||||
|
||||
`resource/copilot.json` 描述了每个关卡信息和作战策略
|
||||
2. 部署格子黑名单
|
||||
|
||||
```jsonc
|
||||
[
|
||||
{
|
||||
"stage_name": "蓄水池", // 关卡名
|
||||
"replacement_home": [ // 重要防守点,至少需要填写1个
|
||||
{
|
||||
"location": [
|
||||
6,
|
||||
4
|
||||
],
|
||||
"direction_Doc1": "优先朝向,但并不代表绝对是这个方向(算法自行判断)",
|
||||
"direction_Doc2": "不填默认 none,即没有推荐方向,完全由算法自行判断",
|
||||
"direction_Doc3": "none / left / right / up / down / 无 / 上 / 下 / 左 / 右",
|
||||
"direction": "left"
|
||||
}
|
||||
],
|
||||
有优先防守的点就有优先不部署干员的点,比如大火球经过的位置,boss脚底下,一些不好输出的位置,
|
||||
|
||||
这个时候我们引入了`"blacklist_location"`将不想让他部署干员的格子加到黑名单里
|
||||
|
||||
**注意:**这里加入的格子,就算在后面的部署策略里面写进去的话,也是没法部署的
|
||||
|
||||
```jsonc
|
||||
...
|
||||
"blacklist_location_Doc": "这里是用法举例,不是说蓄水池这个图需要 ban 这两个点",
|
||||
"blacklist_location": [ // 禁止程序进行部署的位置
|
||||
[
|
||||
@@ -118,8 +248,73 @@
|
||||
1
|
||||
]
|
||||
],
|
||||
```
|
||||
4. 其他地图策略
|
||||
|
||||
比如水月肉鸽中如果蓝门进怪了是不是要用骰子,缓解堆怪压力
|
||||
|
||||
```jsonc
|
||||
"not_use_dice_Doc": "蓝门干员撤退时是否需要用骰子,不写默认false",
|
||||
"not_use_dice": false,
|
||||
```
|
||||
|
||||
### 还是高血压?是时候展现你真正的而技术了--定制作战策略!
|
||||
|
||||
使用`"deploy_plan"`和`"retreat_plan"`实现定制化操作
|
||||
|
||||
1. 使用各个群组部署干员
|
||||
```jsonc
|
||||
"deploy_plan": [ // 部署逻辑,按从上到下、从左到右的顺序进行检索,并尝试部署找到的第一个干员,如果没有就跳过
|
||||
{
|
||||
"groups": [ "百嘉", "基石", "地面C", "号角", "挡人先锋" ],//这一步从这些群组中寻找干员
|
||||
"location": [ 6, 4 ], //遍历百嘉群组、基石群组、地面C群组等等群组
|
||||
"direction": "left" //将找到的第一个干员部署到6,4这个坐标上并朝向左边
|
||||
}, //没找到就进行下一个部署操作
|
||||
{
|
||||
"groups": [ "召唤" ],
|
||||
"location": [ 6, 3 ],
|
||||
"direction": "left"
|
||||
},
|
||||
{
|
||||
"groups": [ "单奶", "群奶" ],
|
||||
"location": [ 6, 2 ],
|
||||
"direction": "down"
|
||||
}
|
||||
]
|
||||
},
|
||||
```
|
||||
2. 在某个时间点部署干员
|
||||
```jsonc
|
||||
"deploy_plan": [
|
||||
{
|
||||
"groups": [ "异德", "刺客", "挡人先锋", "其他地面" ],
|
||||
"location": [ 5, 3 ],
|
||||
"direction": "left",
|
||||
"condition": [ 0, 3 ] // 该操作仅在击杀数为0-3时进行
|
||||
},
|
||||
{
|
||||
"groups": [ "异德", "刺客", "挡人先锋", "其他地面" ],
|
||||
"location": [ 5, 3 ],
|
||||
"direction": "left",
|
||||
"condition": [ 6, 10 ]
|
||||
},
|
||||
...
|
||||
```
|
||||
3. 在某个时间点撤退干员
|
||||
```jsonc
|
||||
"retreat_plan": [ // 在特定时间点撤退目标
|
||||
{
|
||||
"location": [ 4, 1 ],
|
||||
"condition": [ 7, 8 ] // 在击杀数为7-8时,撤去位置[4,1]的干员,没有就跳过
|
||||
}
|
||||
]
|
||||
```
|
||||
4. 在某个时间点释放技能(to do)
|
||||
|
||||
|
||||
5. 一些其他的字段(不推荐使用)
|
||||
|
||||
```jsonc
|
||||
"role_order_Doc": "干员类型部署顺序,未写出部分以近卫,先锋,医疗,重装,狙击,术士,辅助,特种,召唤物的顺序补全,输入英文",
|
||||
"role_order": [ // 不推荐使用,请配置deploy_plan字段
|
||||
"warrior",
|
||||
@@ -163,117 +358,144 @@
|
||||
"direction": "left"
|
||||
}
|
||||
],
|
||||
"deploy_plan": [ // 部署逻辑,按从上到下、从左到右的顺序进行检索,并尝试完成第一个合法操作
|
||||
{
|
||||
"groups": [ "百嘉", "基石", "地面C", "号角", "挡人先锋", "重装", "其他地面", "异德", "刺客" ],
|
||||
"location": [ 6, 4 ],
|
||||
"direction": "left"
|
||||
},
|
||||
{
|
||||
"groups": [ "召唤" ],
|
||||
"location": [ 6, 3 ],
|
||||
"direction": "left"
|
||||
},
|
||||
{
|
||||
"groups": [ "百嘉", "基石", "地面C", "号角", "玛恩纳", "地刺", "重装", "投锋", "挡人先锋", "其他地面" ],
|
||||
"location": [ 7, 4 ],
|
||||
"direction": "left"
|
||||
},
|
||||
{
|
||||
"groups": [ "单奶", "群奶" ],
|
||||
"location": [ 6, 2 ],
|
||||
"direction": "down"
|
||||
},
|
||||
{
|
||||
"groups": [ "高台C", "控制", "术师", "狙击", "辅助" ],
|
||||
"location": [ 6, 3 ],
|
||||
"direction": "left"
|
||||
},
|
||||
{
|
||||
"groups": [ "召唤", "高台C", "控制", "术师", "狙击", "辅助", "其他高台" ],
|
||||
"location": [ 6, 2 ],
|
||||
"direction": "up"
|
||||
},
|
||||
{
|
||||
"groups": [ "地面C", "异德", "地刺", "刺客", "挡人先锋", "其他地面" ],
|
||||
"location": [ 6, 1 ],
|
||||
"direction": "right"
|
||||
},
|
||||
{
|
||||
"groups": [ "召唤", "高台C", "控制", "术师", "狙击", "辅助", "其他高台" ],
|
||||
"location": [ 2, 3 ],
|
||||
"direction": "right"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"stage_name": "饥渴",
|
||||
"replacement_home": [
|
||||
{
|
||||
"location": [
|
||||
3,
|
||||
3
|
||||
],
|
||||
"direction": "down"
|
||||
}
|
||||
],
|
||||
"deploy_plan": [
|
||||
{
|
||||
"groups": [ "异德", "刺客", "挡人先锋", "其他地面" ],
|
||||
"location": [ 5, 3 ],
|
||||
"direction": "left",
|
||||
"condition": [ 0, 3 ] // 该操作仅在击杀数为0-3时进行
|
||||
},
|
||||
{
|
||||
"groups": [ "异德", "刺客", "挡人先锋", "其他地面" ],
|
||||
"location": [ 5, 3 ],
|
||||
"direction": "left",
|
||||
"condition": [ 6, 10 ]
|
||||
},
|
||||
{
|
||||
"groups": [ "异德", "刺客", "挡人先锋", "其他地面" ],
|
||||
"location": [ 5, 3 ],
|
||||
"direction": "left",
|
||||
"condition": [ 15, 20 ]
|
||||
},
|
||||
{
|
||||
"groups": [ "百嘉", "基石", "地面C", "号角", "挡人先锋", "重装", "其他地面", "异德", "刺客" ],
|
||||
"location": [ 3, 3 ],
|
||||
"direction": "down"
|
||||
},
|
||||
{
|
||||
"groups": [ "高台C", "召唤", "控制", "术师", "狙击", "辅助" ],
|
||||
"location": [ 2, 4 ],
|
||||
"direction": "down"
|
||||
},
|
||||
{
|
||||
"groups": [ "单奶", "群奶", "高台C", "召唤", "控制", "术师", "狙击", "辅助" ],
|
||||
"location": [ 2, 3 ],
|
||||
"direction": "right"
|
||||
},
|
||||
{
|
||||
"groups": [ "重装", "百嘉", "基石", "地面C", "玛恩纳", "号角", "地刺", "刺客", "挡人先锋" ],
|
||||
"location": [ 4, 3 ],
|
||||
"direction": "right"
|
||||
},
|
||||
{
|
||||
"groups": [ "高台C", "召唤", "控制", "术师", "狙击", "辅助" ],
|
||||
"location": [ 3, 6 ],
|
||||
"direction": "left"
|
||||
},
|
||||
{
|
||||
"groups": [ "地面C", "玛恩纳", "号角", "异德", "地刺", "刺客", "挡人先锋", "其他地面" ],
|
||||
"location": [ 3, 2 ],
|
||||
"direction": "down"
|
||||
}
|
||||
],
|
||||
"retreat_plan": [ // 在特定时间点撤退目标
|
||||
{
|
||||
"location": [ 4, 1 ],
|
||||
"condition": [ 7, 8 ] // 在击杀数为7-8时,撤去位置[4,1]的干员
|
||||
}
|
||||
]
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
### 对某个干员打法有特殊理解?--精细化操作特定干员
|
||||
|
||||
请将这位干员单独分组
|
||||
|
||||
编写作业时请考虑这位干员与现有作业的顺序优先度
|
||||
|
||||
你也可以不考虑那么多,单独为这个干员写一份作战逻辑
|
||||
|
||||
仅使用一位干员也是可行的!使用MAA来凹单人通关吧(由于其他逻辑的不完善,可能性很低)
|
||||
|
||||
参考例子:1.傀影肉鸽的棘刺 2.水月肉鸽的异德 3.萨米肉鸽的焰苇
|
||||
|
||||
|
||||
|
||||
|
||||
## 肉鸽第三步--不期而遇类节点逻辑
|
||||
|
||||
`resource/roguelike/主题名/encounter.json` 描述了不期而遇事件选择的策略
|
||||
|
||||
### MAA现有对不期而遇的判断方法
|
||||
|
||||
OCR识别不期而遇事件,但是选项是操作固定的位置
|
||||
|
||||
没有识别到时间的话会点最下面的选项
|
||||
|
||||
一般只需要微调或者不调整(大佬都写好了嘛)
|
||||
|
||||
### 优化不期而遇选项的优先度
|
||||
|
||||
请结合prts查看各个事件的选项效果,注意选项不一定固定
|
||||
|
||||
可以自己修改不期而遇事件选项以指引MAA走向某些图的特殊结局
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"theme": "Sami", //肉鸽主题
|
||||
"stage": [ //不期而遇类事件
|
||||
{
|
||||
"name": "低地市集", //不期而遇事件名称
|
||||
"option_num": 3, //总共有几个选项
|
||||
"choose": 3, //优先选择第几个选项
|
||||
"choice_require": [ //选择选项的要求
|
||||
{
|
||||
"name": "选择碎草药", //选项的名字
|
||||
"ChaosLevel": { //压力等级
|
||||
"value": "3", //要求的数字
|
||||
"type": ">" //是大于还是小于
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "选择好看的织物",
|
||||
"ChaosLevel": {
|
||||
"value": "3",
|
||||
"type": ">"
|
||||
}
|
||||
},
|
||||
...
|
||||
```
|
||||
|
||||
### 根据队伍情况动态调整某些选项的优先度(TODO)
|
||||
|
||||
|
||||
|
||||
## 肉鸽第四步--商店藏品的优先度
|
||||
|
||||
`resource/roguelike/主题名/shopping.json` 描述了商店购买藏品(和战斗后选择藏品?)的策略
|
||||
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"theme": "Phantom", //肉鸽主题名
|
||||
"priority": [ //优先度,有序,顺序即为优先级,越在前面越优先购买
|
||||
{
|
||||
"name": "金酒之杯", //藏品名字
|
||||
"no_longer_buy": true, //获得该藏品后不在花钱买藏品
|
||||
"ignore_no_longer_buy": true, //商店有该藏品时忽略"no_longer_buy",就是还会买它
|
||||
"effect": "每有5源石锭,所有我方单位的攻击速度+7", //藏品效果
|
||||
"no": 167 //藏品编号,wiki可查
|
||||
},
|
||||
{
|
||||
"name": "骑士戒律·新编",
|
||||
"no_longer_buy": true,
|
||||
"ignore_no_longer_buy": true,
|
||||
"effect": "每有5源石锭,所有我方单位的攻击速度+5",
|
||||
"no": 166
|
||||
},
|
||||
{
|
||||
"name": "《旧高卢地名源流考》",
|
||||
"effect": "每场战斗获得2点临时目标生命值",
|
||||
"no": 148
|
||||
},
|
||||
...
|
||||
{
|
||||
"name": "扩散之手",
|
||||
"chars": [ //队伍中有这些干员的时候买这件藏品
|
||||
"异客"
|
||||
],
|
||||
"effect": "【扩散术师】、【链术师】和【轰击术师】每对一个单位造成伤害就回复2点技力值",
|
||||
"no": 136
|
||||
},
|
||||
...
|
||||
{
|
||||
"name": "折戟-破釜沉舟",
|
||||
"roles": [ //队伍中有这些职业的时候买这件藏品
|
||||
"WARRIOR"
|
||||
],
|
||||
"effect": "所有【近卫】干员的防御力-40%,但攻击力+40%,攻击速度+30",
|
||||
"no": 16
|
||||
},
|
||||
...
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 希望实现的逻辑(todo)
|
||||
|
||||
### 自动编队逻辑
|
||||
|
||||
1. 可以根据不同地图设置不同的地图阵容完备性检测和技能优先度
|
||||
|
||||
2. 可以根据现有阵容避开一些难度高的作战
|
||||
|
||||
### 优化寻路算法
|
||||
|
||||
比如可以实现前三层多战,后面的少战,这样发育会更好
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,19 @@
|
||||
"is_key": true,
|
||||
"recruit_priority": 710,
|
||||
"promote_priority": 1000,
|
||||
"promote_priority_when_team_full": 1200
|
||||
"promote_priority_when_team_full": 1200,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"地面阻挡",
|
||||
"地面单切",
|
||||
"棘刺"
|
||||
],
|
||||
"threshold": 0,
|
||||
"is_less": true,
|
||||
"offset": 300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "号角",
|
||||
@@ -124,7 +136,7 @@
|
||||
"opers": [
|
||||
{
|
||||
"name": "百炼嘉维尔",
|
||||
"skill": 1,
|
||||
"skill": 2,
|
||||
"is_start": true,
|
||||
"is_key": true,
|
||||
"recruit_priority": 790,
|
||||
@@ -144,7 +156,8 @@
|
||||
},
|
||||
{
|
||||
"name": "圣约送葬人",
|
||||
"skill": 1,
|
||||
"skill": 3,
|
||||
"alternate_skill": 2,
|
||||
"is_start": true,
|
||||
"recruit_priority": 730,
|
||||
"promote_priority": 410,
|
||||
@@ -1385,191 +1398,7 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "炮灰",
|
||||
"opers": [
|
||||
{
|
||||
"name": "夜刀",
|
||||
"skill": 1,
|
||||
"is_key": true,
|
||||
"recruit_priority": 310,
|
||||
"promote_priority": 0,
|
||||
"promote_priority_when_team_full": 0
|
||||
},
|
||||
{
|
||||
"name": "预备干员-近战",
|
||||
"skill": 0,
|
||||
"recruit_priority": 100,
|
||||
"promote_priority": 0,
|
||||
"is_alternate": true
|
||||
},
|
||||
{
|
||||
"name": "拉普兰德",
|
||||
"skill": 2,
|
||||
"recruit_priority": 440
|
||||
},
|
||||
{
|
||||
"name": "芳汀",
|
||||
"skill": 2,
|
||||
"recruit_priority": 402,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "断崖",
|
||||
"skill": 2,
|
||||
"recruit_priority": 370,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "刻刀",
|
||||
"skill": 1,
|
||||
"recruit_priority": 405
|
||||
},
|
||||
{
|
||||
"name": "柏喙",
|
||||
"skill": 2,
|
||||
"recruit_priority": 405
|
||||
},
|
||||
{
|
||||
"name": "铸铁",
|
||||
"skill": 2,
|
||||
"recruit_priority": 305,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "布洛卡",
|
||||
"skill": 2,
|
||||
"recruit_priority": 412,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "星极",
|
||||
"skill": 2,
|
||||
"recruit_priority": 411,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "泡普卡",
|
||||
"skill": 1,
|
||||
"recruit_priority": 460,
|
||||
"is_key": true
|
||||
},
|
||||
{
|
||||
"name": "歌蕾蒂娅",
|
||||
"skill": 1,
|
||||
"is_start": true,
|
||||
"recruit_priority": 298,
|
||||
"promote_priority": 0
|
||||
},
|
||||
{
|
||||
"name": "掠风",
|
||||
"skill": 1,
|
||||
"recruit_priority": 5,
|
||||
"promote_priority": 0,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "白铁",
|
||||
"skill": 1,
|
||||
"recruit_priority": 6,
|
||||
"promote_priority": 0,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "艾斯黛尔",
|
||||
"skill": 1,
|
||||
"recruit_priority": 320,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "霜叶",
|
||||
"skill": 1,
|
||||
"recruit_priority": 318,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "月见夜",
|
||||
"skill": 1,
|
||||
"is_key": true,
|
||||
"recruit_priority": 500,
|
||||
"promote_priority": 0,
|
||||
"promote_priority_when_team_full": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
},
|
||||
{
|
||||
"name": "回费",
|
||||
"opers": [
|
||||
@@ -1901,6 +1730,210 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "浊心斯卡蒂",
|
||||
"opers": [
|
||||
{
|
||||
"name": "浊心斯卡蒂",
|
||||
"skill": 2,
|
||||
"recruit_priority": 910,
|
||||
"promote_priority": 700,
|
||||
"is_key": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "斯卡蒂的海嗣",
|
||||
"opers": [
|
||||
{
|
||||
"name": "斯卡蒂的海嗣"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "炮灰",
|
||||
"opers": [
|
||||
{
|
||||
"name": "夜刀",
|
||||
"skill": 1,
|
||||
"is_key": true,
|
||||
"recruit_priority": 310,
|
||||
"promote_priority": 0,
|
||||
"promote_priority_when_team_full": 0
|
||||
},
|
||||
{
|
||||
"name": "预备干员-近战",
|
||||
"skill": 0,
|
||||
"recruit_priority": 100,
|
||||
"promote_priority": 0,
|
||||
"is_alternate": true
|
||||
},
|
||||
{
|
||||
"name": "拉普兰德",
|
||||
"skill": 2,
|
||||
"recruit_priority": 440
|
||||
},
|
||||
{
|
||||
"name": "芳汀",
|
||||
"skill": 2,
|
||||
"recruit_priority": 402,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "断崖",
|
||||
"skill": 2,
|
||||
"recruit_priority": 370,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "刻刀",
|
||||
"skill": 1,
|
||||
"recruit_priority": 405
|
||||
},
|
||||
{
|
||||
"name": "柏喙",
|
||||
"skill": 2,
|
||||
"recruit_priority": 405
|
||||
},
|
||||
{
|
||||
"name": "铸铁",
|
||||
"skill": 2,
|
||||
"recruit_priority": 305,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "布洛卡",
|
||||
"skill": 2,
|
||||
"recruit_priority": 412,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "星极",
|
||||
"skill": 2,
|
||||
"recruit_priority": 411,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "泡普卡",
|
||||
"skill": 1,
|
||||
"recruit_priority": 460,
|
||||
"is_key": true
|
||||
},
|
||||
{
|
||||
"name": "歌蕾蒂娅",
|
||||
"skill": 1,
|
||||
"is_start": true,
|
||||
"recruit_priority": 298,
|
||||
"promote_priority": 0
|
||||
},
|
||||
{
|
||||
"name": "掠风",
|
||||
"skill": 1,
|
||||
"recruit_priority": 5,
|
||||
"promote_priority": 0,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "白铁",
|
||||
"skill": 1,
|
||||
"recruit_priority": 6,
|
||||
"promote_priority": 0,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "艾斯黛尔",
|
||||
"skill": 1,
|
||||
"recruit_priority": 320,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "霜叶",
|
||||
"skill": 1,
|
||||
"recruit_priority": 318,
|
||||
"recruit_priority_offsets": [
|
||||
{
|
||||
"groups": [
|
||||
"炮灰"
|
||||
],
|
||||
"threshold": 2,
|
||||
"offset": -300
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "月见夜",
|
||||
"skill": 1,
|
||||
"is_key": true,
|
||||
"recruit_priority": 500,
|
||||
"promote_priority": 0,
|
||||
"promote_priority_when_team_full": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "高台预备",
|
||||
@@ -1998,26 +2031,6 @@
|
||||
"is_alternate": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "浊心斯卡蒂",
|
||||
"opers": [
|
||||
{
|
||||
"name": "浊心斯卡蒂",
|
||||
"skill": 2,
|
||||
"recruit_priority": 910,
|
||||
"promote_priority": 700,
|
||||
"is_key": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "斯卡蒂的海嗣",
|
||||
"opers": [
|
||||
{
|
||||
"name": "斯卡蒂的海嗣"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"team_complete_condition": [
|
||||
@@ -2052,4 +2065,4 @@
|
||||
"threshold": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user