Compare commits

...

47 Commits

Author SHA1 Message Date
zzyyyl
78c1ff3a5c docs: 公式格式 2025-09-26 15:56:14 +08:00
zzyyyl
53052833f4 docs: 增加 任务流程文档 - 表达式计算 小节中对运算符的描述;将虚任务移至表达式计算小节 2025-09-26 15:41:51 +08:00
zzyyyl
cd17cced22 feat: 不允许虚任务作为 @ 运算的左元 2025-09-26 15:41:35 +08:00
uye
a8ef1420b6 Release v5.26.0-beta.1 (#14231) 2025-09-26 14:13:39 +08:00
github-actions[bot]
1d7a893950 docs: Auto Update Changelogs of v5.26.0-beta.1 (#14232)
* docs: Auto Generate Changelog of Release v5.26.0-beta.1

* docs: Refactor CHANGELOG to remove duplicates and update entries

Removed duplicate entries and updated various documentation items in the CHANGELOG.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-09-26 14:11:43 +08:00
pre-commit-ci[bot]
ef8964e0a7 chore: Auto update by pre-commit hooks [skip changelog] 2025-09-26 06:02:15 +00:00
Wallsman
775c640dba docs: Update JP(#14227)
* Update readme.md

Doc: Text sync chinese.

* Update others.md

Doc: Sync text for Chinese.

* Update copilot.md

Doc: Sync Text for Chinese.

* Update reclamation-algorithm.md

Doc: Text sync for Chinese.

* Update rewards.md

Doc: Sync text for Chinese.

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-26 13:58:54 +08:00
github-actions[bot]
634ebb55db chore: Auto Templates Optimization
Triggered by 5ac171d40c

[skip changelog]
2025-09-26 05:58:00 +00:00
uye
5ac171d40c feat: 次生预案十里坡剑神 2025-09-26 13:57:33 +08:00
Constrat
0ae323c855 fix: Google Play Games Developer shutdown 2025-09-26 01:24:57 +02:00
MistEO
8aaba7d60e fix: manual set resource version time 2025-09-26 00:58:36 +08:00
github-actions[bot]
caed828770 chore: Auto Templates Optimization
Triggered by 3f252eb12e

[skip changelog]
2025-09-25 08:50:39 +00:00
github-actions[bot]
3f252eb12e chore: Auto Update Game Resources - 2025-09-25
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18002097304

[skip changelog]
2025-09-25 08:49:14 +00:00
Manicsteiner
e8051a6a39 chore: YostarJP Sarkaz roguelike StageEncounter (#14223) 2025-09-25 00:17:07 +02:00
Rbqwow
e0860ed779 docs: 补充vsc插件繁中文档
refer to a872081615
2025-09-23 14:32:12 +00:00
Rbqwow
1324165cfe docs: 修复文档站readme盾换行 2025-09-23 13:58:15 +00:00
Lucien Shaw
96aa7ada11 docs: 调整文档站的标题和尾注文本显示 (#14213)
* chore: 更新plume主题版本

* chore: 更新文档站尾注配置

* i18n: 调整多语言的默认网站标题

* docs: 调整首页的网页标题

* docs: 文档站首页MAA标题加阴影
2025-09-23 21:36:58 +08:00
Rbqwow
ca3160bd72 docs: 更新网页开发相关文档 (#14167)
* docs: vuepress-theme-hope --> vuepress-theme-plume

* docs: website --> docs

* chore: 添加 preview 图片

* feat: 添加回图片相关插件

* perf: logo 超级压缩

* perf: preview 也超级压缩

* docs: 找 GPT-5 Thinking 翻译了一下日语的本地部署

* chore: 预览图还是得走一下网页镜像

* i18n: JP

* docs: 修复损坏的超链接

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 这东西是怎么混进来的

---------

Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-23 17:49:19 +08:00
Manicsteiner
c3bac8b504 chore: YostarJP sami roguelike 720p (#14210) 2025-09-23 10:53:52 +02:00
zzyyyl
642c62498c docs: 完善任务流程协议文档 (#13232)
* docs: 完善任务流程协议文档

* docs: English version of task-schema.md

* docs: markdown-lint
2025-09-23 14:21:37 +08:00
zzyyyl
56cf52808d docs: markdown pre-commit 2025-09-23 14:16:39 +08:00
pre-commit-ci[bot]
5d47ede186 chore: Auto update by pre-commit hooks [skip changelog] 2025-09-23 13:52:02 +08:00
萨拉托加
a48fe44663 chore: 水月萨米肉鸽不期而遇避战
fix #14207
2025-09-23 13:32:47 +08:00
nekosu
a872081615 docs: add extension's evaluating feature 2025-09-23 11:43:42 +08:00
Constrat
485ef8fcbf fix: prettier 2025-09-23 00:28:47 +02:00
Manicsteiner
c450e596f7 chore: YostarJP Mizuki StageEncounter (#14206) 2025-09-22 23:27:18 +02:00
SherkeyXD
f9c16319a8 docs: 回调消息协议文档视觉更新 2025-09-23 03:01:56 +08:00
SherkeyXD
5db20fe2c4 docs: 集成文档视觉更新 2025-09-23 02:41:13 +08:00
SherkeyXD
e12c7f948d docs: 文档启用b站视频播放功能 2025-09-23 02:03:57 +08:00
SherkeyXD
cb546b4370 docs: 文档添加字段容器功能 2025-09-23 02:01:29 +08:00
SherkeyXD
c193b26b62 docs: 文档添加功能 2025-09-23 01:56:38 +08:00
SherkeyXD
91c8a22d1c docs: 更新文档编写指南 2025-09-23 01:56:38 +08:00
SherkeyXD
b8205b5593 docs: add telegram icon 2025-09-23 01:56:38 +08:00
MistEO
68248df197 docs: 标题MAA统一采用缩写 2025-09-23 01:41:48 +08:00
MistEO
db98bb370e chore: 再次调整文档站标题( 2025-09-23 01:35:56 +08:00
MistEO
bf2375a44f chore: 调整文档站标题 2025-09-23 01:32:20 +08:00
Rbqwow
d12fb7d565 refactor: devcontainer.json (#14169)
* chore: cleanup devcontainer.json

* chore: 配置devcontainer环境

* build: 更新conda配置

* chore: 更新pnpm包的安装允许列表

---------

Co-authored-by: Lucien Shaw <myxlc55@outlook.com>
2025-09-23 00:53:41 +08:00
Lucien Shaw
9838dec4fd fix: 文档首页语言选择按钮的宽度定义方式 (#14199) 2025-09-22 22:11:54 +08:00
uye
793d03d47b feat: 设置指引添加更新设置 2025-09-22 20:31:35 +08:00
uye
56d796c92e feat: 统一显示效果 2025-09-22 19:36:00 +08:00
uye
aae995aef5 feat: 设置指引添加性能设置 2025-09-22 19:36:00 +08:00
萨拉托加
9159e5d979 fix: 傀影肉鸽无法识别四结局 (#14193)
* fix: 傀影肉鸽无法识别四结局

既然MAA能打就加个模板比较好?

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 四结局必要不期而遇进战斗

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-22 16:27:54 +08:00
萨拉托加
705c5a4c68 fix: GamePassSkip2识别到错误的跳过
看录屏发现的,GamePassSkip1之后可能会出现一个一闪而过的GamePassSkip2被maa识别到,好抽象
2025-09-22 16:14:37 +08:00
Rbqwow
a563b14f47 refactor: 重写完成后动作仅一次的ui字符串 (#14196) 2025-09-22 14:44:49 +08:00
uye
400fd6bf53 chore: 贸易站没其他好用的人再用锏 2025-09-21 19:07:33 +08:00
萨拉托加
2915338cac fix: 萨米肉鸽不期而遇避战
fix #14192
2025-09-21 16:53:48 +08:00
uye
09dc393c98 docs: Update CHANGELOG with recent changes and fixes 2025-09-21 14:06:55 +08:00
114 changed files with 19527 additions and 2222 deletions

29
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
FROM mcr.microsoft.com/devcontainers/base:ubuntu
USER vscode
ENV CONDA_DIR=/home/vscode/miniconda
ENV PATH="$CONDA_DIR/bin:$PATH"
ARG PYTHON_VERSION=3.12
ARG NODEJS_VERSION=24
# Install Miniconda
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh \
&& bash ~/miniconda.sh -b -p $CONDA_DIR \
&& rm ~/miniconda.sh \
&& conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main \
&& conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
# Configure conda environment
RUN eval "$(conda shell.bash hook)" \
&& conda create -n maa python=$PYTHON_VERSION -y \
&& conda activate maa \
&& conda install -y conda-forge::nodejs=$NODEJS_VERSION \
&& pip install pre-commit black \
&& npm install -g pnpm
# Finalize conda setup
RUN conda init \
&& conda config --set auto_activate false \
&& echo "conda activate maa" >> ~/.bashrc

View File

@@ -1,12 +1,50 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/javascript-node
{
"image": "mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04",
"features": {
"ghcr.io/devcontainers/features/python:1": {},
"ghcr.io/devcontainers/features/sshd:1": {}
"name": "MAA",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
// "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"build": {
"dockerfile": "Dockerfile"
},
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [3001],
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "bash .devcontainer/post-create.sh",
// Configure tool-specific properties.
"customizations": {
"vscode": {
"extensions": ["llvm-vs-code-extensions.vscode-clangd", "DavidAnson.vscode-markdownlint"]
"extensions": [
"mkxml.vscode-filesize",
"nekosu.maa-support",
"DavidAnson.vscode-markdownlint",
"esbenp.prettier-vscode",
"vue.volar",
"ms-python.python",
"ms-python.black-formatter"
],
"settings": {
// format
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[markdown]": {
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
},
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
// python
"python.terminal.launchArgs": ["-u"],
"python.defaultInterpreterPath": "/home/vscode/miniconda/envs/maa/bin/python",
"python.terminal.activateEnvironment": false
}
}
}
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

View File

@@ -0,0 +1,21 @@
#!/bin/bash
WORKSPACE=$(pwd)
# conda activate maa
echo "===================="
echo "Setting up git safe.directory for $WORKSPACE and its submodules..."
cd "$WORKSPACE"
git config --global --add safe.directory "$WORKSPACE"
git submodule foreach --recursive 'git config --global --add safe.directory "$toplevel/$path"'
echo "===================="
cd "$WORKSPACE"
echo "Installing dependencies for python..."
# pip install -r tools/.../requirements.txt
# pip install -r tools/.../requirements-dev.txt
echo "===================="
echo "Installing dependencies for nodejs..."
cd "$WORKSPACE"/docs
pnpm install --frozen-lockfile

5
.gitignore vendored
View File

@@ -474,4 +474,7 @@ Thumbs.db
# build & install
build
install
install
# pnpm cache
.pnpm-store

View File

@@ -1,234 +1,49 @@
## v5.25.0
## v5.26.0-beta.1
### 依\~赖\~大\~更\~新\~ | Highlights
在这个版本,我们大幅更新了项目的依赖库,优化了 MAA 的性能,~~所以老电脑可能要更新运行库了。~~
**我们还为官网和 API 节点优化了网络,大幅优化了访问速度**
#### 自动战斗方面
我们对【自动战斗】功能进行了一些改动,主要包括:
* 牛牛现在会自动识别作业集内各个作业的干员编组情况,如果上一份作业的干员编组与当前作业的一致,牛牛就不再重复进行干员编组了,从而节省时间
* 战斗列表部分,对各个作业的设置按键的鼠标按键逻辑进行了调整:点击左键将可以查看该作业的说明和干员配置需求,点击右键将直接提取该作业并关闭战斗列表功能(即只打该作业)
#### 基建换班方面
我们优化了基建换班中与基建技能有关的功能:
* 我们为所有没有设置效率数据的基建技能都设置了效率数据,这样牛牛在【基建换班】任务中就能更好地为干员不全的玩家选择合适的基建技能了(但还是把 U 酱拿掉了,~~U 酱那么可爱为什么要工作~~
* 如果【基建换班】任务处于「自定义基建配置」模式,且牛牛正在工作中,那么班次将不再随时间切换,避免牛牛工作到一半班次被切了而产生的各种问题
* 如果【基建换班】任务处于「队列轮换」模式,那么牛牛将不再进入未勾选的设施
* 我们调整了会客室技能的排序逻辑,现在会优先选择更容易获得尚未拥有的线索的技能
#### 其他方面
我们增加了一些小的改动,值得注意的有:
* 我们在【自动肉鸽】任务中优化了丰川祥子相关招募策略 ~~saki酱、saki酱、saki酱~~
* 牛牛在【生息演算】任务中将会自动识别当前的存档状态与任务的设置是否一致,如果不一致将会提示你检查存档状态
* 当你设置 Mirror酱的 CDK 后MAA 将会显示 CDK 的剩余有效时间,方便你掌握有效期
----
In this version, we have significantly updated the project's dependency libraries and optimized MAA's performance. ~~So you may need to update their runtime libraries if you use old computers.~~
**We have also optimized the network for the official website and API nodes, greatly improving access speed.**
#### *Copilot* Improvements
We have made some adjustments to the *Copilot* feature, which mainly include:
* MAA will now automatically recognize the operator formation in each job within the job set. If the operator formation of the previous job matches that of the current job, MAA will no longer repeat the operator squading process, thereby saving time.
* In the Battle list section, the mouse button logic for each job's settings button has been adjusted: left-clicking will allow you to view the job's description and operator formation requirements, while right-clicking will directly extract that job and disable the combat list function (i.e., only run that specific operation).
#### *Base* Improvements
We have optimized the base skill-related functions in *Base* task:
* We have set efficiency data for all base skills that previously lacked that data, allowing MAA to better select suitable base skills for doctors with incomplete operator rosters during the *Base* task (though we did remove U-Offcial, ~~U-Offcial is so cute, why should she work~~)
* If the *Base* task is in Custom Base Mode and the MAA is currently running, Base Plan will no longer switch over time to avoid various issues caused by interrupting the MAA's work by switching the Base Plan when MAA is running.
* If the *Base* task is in One-click Rotation Mode, the MAA will no longer enter unchecked facilities.
* We adjusted the sorting logic for reception room skills, now prioritizing skills that are more likely to obtain clues not yet owned.
#### Other Aspects
We've made some minor changes worth noting:
* [CN ONLY] In the *Auto I.S.* task, we've optimized the recruitment strategy related to Togawa Sakiko ~~Saki-chan, Saki-chan, Saki-chan~~
* In the *Reclamation Algorithm* task, MAA will automatically detect whether the current save status matches the mission settings. If they don't match, it will prompt you to check your save status.
* After setting MirrorChyan's CDK, MAA will display the remaining validity period of the CDK, making it easier for you to track its expiration
----
以下是详细内容:
### 新增 | New
* CustomTask增加任务存在检测 @status102
* custom clang (#14102) @neko-para
* core 崩溃后下次启动时 ui 输出提示 (#14022) @ABA2396 @momomochi987
* allow single copilot task execution @status102
* 给自定义任务添加 ScreenshotTaskPlugin 插件 @ABA2396
* 战斗列表点击作业时自动关闭列表, 原逻辑迁移至鼠标右键 @status102
* convert ResourceUpdater to ubuntu-latest (#14076) @Constrat
* 添加基建计划 ToolTip 提示 @ABA2396
* support build resource updater @neko-para
* 添加信息获取失败时的提示 @ABA2396
* CDK 倒计时显示 @ABA2396
* 成就设置中的图标颜色可以随着主题色动态更新 @ABA2396
* 添加 CDK 到期时间显示 @ABA2396
* 添加 ResourceReferenceHelper允许绑定 前后景色 key @ABA2396
* 自动战斗多作业支持保存干员组内编入的干员 (#14095) @status102
* cli 支持新版战斗列表以及悖论模拟 (#14154) @wangl-cc
* 为官网首页添加多语言支持 (#13943) @lucienshawls @momomochi987 @Manicsteiner @pre-commit-ci[bot] @Constrat
* RunningState 统一状态变更事件 (#14141) @ABA2396
* 生息盐酸任务添加对错误模式 (有/无存档) 的提示 (#14131) @Alan-Charred
* use coreml OCR for apple (#14108) @MistEO
### 改进 | Improved
* 更新基建技能效率 @ABA2396
* wpf自动战斗列表中作业设置按钮左键单击还原为解析指定作业新增行为修改至右键解析作业并关闭列表 @status102
* 优化更新设置中的徽标显示和逻辑 @ABA2396
* remove resource from smoke testing use the default location, do not duplicate @Constrat
* add --parallel to cmake workflows @Constrat
* 更新 markdownlint 规则 @SherkeyXD
* 依赖大更新 (#13908) @MistEO @status102 @pre-commit-ci[bot]
* 优化干员识别动画显示效果 @ABA2396
* 加个try先 @status102
* 次生预案十里坡剑神 @ABA2396
* 设置指引添加更新设置 @ABA2396
* 设置指引添加性能设置 @ABA2396
### 修复 | Fix
* typo @Constrat
* type number for nightly ota @Constrat
* 修复 cmake copy_and_add_rpath_library 的失败逻辑 (#14097) @litwak913
* 刷开局奖励只选票券时行为异常 @ABA2396
* smoke testing upload logs @Constrat
* move smoke testing working dir @Constrat
* 自动编队缺少干员输出的额外换行 @status102
* Copilot多任务编队时编队设置残留 @status102
* 自定义基建换班的班次不会随时间切换 @ABA2396
* "统一 WpfGui 工作目录"后,配置为外服无法运行 MAA @ABA2396
* 移除 debug_demo (原Sample) 的对应 resource 额外查找逻辑 (#14081) @status102 @MistEO
* 统一 WpfGui 工作目录 (#14072) @MistEO @pre-commit-ci[bot] @ABA2396 @status102
* add component for install libcxx only @neko-para
* 重构依赖后 MaaWpfGui 的 resource 路径丢失 (#14077) @status102
* 停止中或者空闲状态不允许点击停止按钮 @ABA2396
* 鲍勃杂货店拥有四叶草化石且无抗干扰值时卡住 @ABA2396
* prevent caching in non-dev branches @Constrat
* stuck on max trust EN @Constrat
* pthread linking problem @neko-para
* 无法收取太鼓达人联动主题会客室信息板信用 @ABA2396
* cdk 过期时间超过 2038 年会爆炸(但 10000 年还是会爆炸 @ABA2396
* nightly package zip @MistEO
* global resource path @MistEO
* linux cross compiling (#14048) @neko-para @pre-commit-ci[bot]
* maa 变成前文明产物了 @ABA2396
* 糊一下 debug_demo 资源路径读取 @MistEO
* 修复 wpf gui 一些 resource path 读取 @MistEO
* remove opencv highgui again @MistEO
* remove opencv highgui @MistEO
* build error of ASST_DEBUG @MistEO
* 入暂亭特殊选项 @Saratoga-Official
* Sami floor detection 3 Thanks again @lin4289 on discord @Constrat
* 特里蒙旅行社特派团多选项 @Saratoga-Official
* IS5 同心 @Daydreamer114
* EN Roguelike@ChooseOperConfirm (#14033) @Daydreamer114
* 选择技能时可能会点出描述文字 @ABA2396
* Sami floor detection 2 Thanks again @lin4289 on discord @Constrat
* 基建使用队列轮换时如果未勾选对应设施则不进入 @ABA2396
* 重构后无法使用刷开局刷仅精二 @ABA2396
* 部分背景下 mujica 主题无法进入对应功能 @ABA2396
* 萨米肉鸽刷源石锭可能卡在预见的密文板 @ABA2396
* Sami floor detection Thanks @lin4289 on discord @Constrat
* 允许生息演算任务反复点击存档位置直到画面改变 (#14005) @Alan-Charred
* 肉鸽助战无法刷新 @Saratoga-Official
* smoke-testing script @Constrat
* minitouch 触控 wait ms @ABA2396
* 复核自定义干员时等待游戏动画 @ABA2396
* wrong default on type number @Constrat
* 自动战斗无法读取下拉列表中的作业 @ABA2396
* 成就列表解锁时间显示颜色错误 @ABA2396
* GO 导航 @ABA2396
* 勾选启动后直接运行时无法自动切换基建排班表 @ABA2396
* 网络连接错误的情况下读取了本地缓存也提示了获取热更成功 @ABA2396
* 萨米肉鸽未通关结局时探寻前路卡住 @Saratoga-Official
* 文档站首页在窄屏下的响应式设计 (#14166) @lucienshawls
* 暂时修复无法读取过去的评论的问题 (#14163) @lucienshawls
* Eye For an Eye encounter IS2 EN @Constrat
* 为什么 mujikca 的图黑的不够纯粹 @ABA2396
* 肉鸽在结算界面卡死 (#14145) @Saratoga-Official @pre-commit-ci[bot]
* CopilotTask参数可选项存在性检查 @status102
* SettingsViewModel Idle @ABA2396
* 异格推王的基建加成错误 @Saratoga-Official
* 调低 MacOS PlayCover 下对 InfrastControl 识别的阈值 (#14139) @Alan-Charred
* CurrentConfig未刷新 @status102
* CurrentConfig悬空 @status102
* 拥有全干员的情况下重启后进入干员识别界面不会自动选中选项卡 @ABA2396
* 修复 DataGrid 虚拟化下 Tab 导航异常 @ABA2396
* download to v5 with necessary fix (#14122) @Constrat
* 萨卡兹肉鸽未通关结局时原初异途卡住 @Saratoga-Official
* 肉鸽深入探索无法退出结算界面 (#14123) @Saratoga-Official
* 文档首页语言选择按钮的宽度定义方式 (#14199) @lucienshawls
* 傀影肉鸽无法识别四结局 (#14193) @Saratoga-Official
* GamePassSkip2 识别到错误的跳过 @Saratoga-Official
* 萨米肉鸽不期而遇避战 @Saratoga-Official
* Google Play Games Developer shutdown @Constrat
* manual set resource version time @MistEO
* prettier @Constrat
### 文档 | Docs
* Auto Update Changelogs of v5.25.0-beta.1 (#14101) @github-actions[bot] @ABA2396 @status102
* 维护信用作战相关功能及其文档 (#14013) @Alan-Charred
* 修复序号问题 @SherkeyXD
* typo @MistEO
* 更新文档cmake配置 @MistEO
* 微调文档 @MistEO
* reapply eebe0a9 (#14036) @wangl-cc
* remove weblate @MistEO
* Auto Update Changelogs of v5.25.0-beta.2 (#14112) @github-actions[bot] @MistEO
* changelog version @MistEO
* changelog @MistEO
* Update CHANGELOG for v5.25.0-beta.4 @ABA2396
* Auto Update Changelogs of v5.25.0-beta.5 (#14181) @github-actions[bot] @ABA2396
* 完善文档站的代码检查和涉及的文本替换 (#14156) @lucienshawls @pre-commit-ci[bot]
* 完善自动肉鸽和其它文档中的部分内容 (#13924) @lucienshawls @Constrat @Manicsteiner
* 切换文档主题至 vuepress-theme-plume (#13821) @SherkeyXD @lucienshawls @MistEO
* 补充vsc插件繁中文档 @Rbqwow
* 修复文档站 readme 盾换行 @Rbqwow
* 调整文档站的标题和尾注文本显示 (#14213) @lucienshawls
* 更新网页开发相关文档 (#14167) @Rbqwow @Manicsteiner
* 完善任务流程协议文档 (#13232) @zzyyyl
* 回调消息协议文档视觉更新 @SherkeyXD
* 集成文档视觉更新 @SherkeyXD
* 文档启用 b 站视频播放功能 @SherkeyXD
* 文档添加字段容器功能 @SherkeyXD
* 文档添加功能 @SherkeyXD
* 更新文档编写指南 @SherkeyXD
* 标题 MAA 统一采用缩写 @MistEO
* 再次调整文档站标题( @MistEO
* 调整文档站标题 @MistEO
* Update JP(#14227) @wallsman
* markdown pre-commit @zzyyyl
* add extension's evaluating feature @neko-para
* add telegram icon @SherkeyXD
### 其他 | Other
* 调整 锏 基建技能效率 @ABA2396
* 自定义基建配置时间仍在有效期内时不检查其他时间段 @ABA2396
* 界园萨卡兹肉鸽招募休谟斯优先级 @Saratoga-Official
* remove -DINSTALL_RESOURCES @Constrat
* 调整 y 存图时间间隔 @ABA2396
* 调整定时器触发逻辑 @ABA2396
* 调整未检测到模拟器的输出 @ABA2396
* gitignore @status102
* where and how did this come from? @Constrat
* tweak workflow + remove .sln (#14074) @Constrat @neko-para
* 按时间切换基建配置不在任务运行中或任务开始前切换 @ABA2396
* 调整刷新助战日志 @ABA2396
* 调整界面颜色 @ABA2396
* 肉鸽丰川祥子招募策略 (#14035) @Saratoga-Official
* 繁中服「大荒」介面主題 (#14064) @momomochi987 @pre-commit-ci[bot]
* remove ninja from ci.yml @Constrat
* restore older cache utilization for ci.yml (#14068) @Constrat
* update interface.json @neko-para
* update linux tutorial (en) @neko-para
* EN @Constrat
* 删除一些遗留文件 @MistEO
* 再糊点注释 @MistEO
* 糊点注释 @MistEO
* remove MaaDeps @MistEO
* bump maa-cli to 0.5.8 (#14032) @wangl-cc
* BrightPointAnalyzer -> PixelAnalyzer (#13915) @Alan-Charred
* 管理员权限启动额外判断是否开启 UAC @ABA2396
* mujika -> mujica (#14000) @weinibuliu
* remove SyncRes @MistEO
* use std::format instead of sprintf (#14107) @MistEO @pre-commit-ci[bot]
* fix build warning (#14176) @soundofautumn
* rename RecognizerViewModel -> ToolboxViewModel (#14177) @soundofautumn
* YostarJP ocr fix (#14134) @Manicsteiner
* 调整会客室中更容易获得线索板上尚未拥有的线索的技能优先级 @ABA2396
* 基建把 u酱 ban 了 @ABA2396
* file header @status102
* 特征匹配过程函数拆入analyze() @status102
* 繁中服「相見歡」活動導航 (#14137) @momomochi987
* fix build warning (#14120) @soundofautumn
* 统一显示效果 @ABA2396
* 水月萨米肉鸽不期而遇避战 @Saratoga-Official
* 重写完成后动作仅一次的 ui 字符串 (#14196) @Rbqwow
* 贸易站没其他好用的人再用锏 @ABA2396
* YostarJP Sarkaz roguelike StageEncounter (#14223) @Manicsteiner
* YostarJP sami roguelike 720p (#14210) @Manicsteiner
* YostarJP Mizuki StageEncounter (#14206) @Manicsteiner
* devcontainer.json (#14169) @Rbqwow @lucienshawls

View File

@@ -4,7 +4,7 @@
<img alt="LOGO" src="./docs/.vuepress/public/images/maa-logo_512x512.png" width="256" height="256" />
# MaaAssistantArknights
# MAA
<br>
<div>

View File

@@ -10,30 +10,36 @@ const isProd = process.env.NODE_ENV === 'production';
export default defineUserConfig({
base: '/',
lang: 'zh-CN',
title: 'MaaAssistantArknights',
description: 'MAA',
title: 'MAA 文档站',
description: 'MAA —「明日方舟」小助手',
host: '0.0.0.0',
port: 3001,
locales: {
'/zh-cn/': {
lang: 'zh-CN',
title: 'MAA 文档站',
description: '文档',
},
'/zh-tw/': {
lang: 'zh-TW',
title: 'MAA 文件站',
description: '文件',
},
'/en-us/': {
lang: 'en-US',
title: 'MAA Documentation Site',
description: 'Documentation',
},
'/ja-jp/': {
lang: 'ja-JP',
description: 'ドキュメンテーション',
title: 'MAA ドキュメントサイト',
description: 'ドキュメント',
},
'/ko-kr/': {
lang: 'ko-KR',
description: '선적 서류 비치',
title: 'MAA 문서 사이트',
description: '문서',
},
},
@@ -92,7 +98,18 @@ export default defineUserConfig({
themes: { light: 'one-light', dark: 'one-dark-pro' },
},
markdown: {},
markdown: {
image: {
lazyload: true,
mark: true,
size: true,
},
icon: { provider: 'iconify' },
plot: true,
field: true,
bilibili: true,
},
watermark: false,

View File

@@ -10,11 +10,11 @@ export default defineThemeConfig({
social: [
{ icon: 'qq', link: 'https://api.maa.plus/MaaAssistantArknights/api/qqgroup' },
{ icon: 'discord', link: 'https://discord.gg/23DfZ9uA4V' },
//{ icon: 'telegram', link: 'https://t.me/+Mgc2Zngr-hs3ZjU1' },
{ icon: 'telegram', link: 'https://t.me/+Mgc2Zngr-hs3ZjU1' },
{ icon: 'bilibili', link: 'https://space.bilibili.com/3493274731940507/' },
{ icon: 'github', link: 'https://github.com/MaaAssistantArknights/MaaAssistantArknights/' },
],
navbarSocialInclude: ['qq', 'discord', 'bilibili', 'github'],
navbarSocialInclude: ['qq', 'discord', 'telegram', 'bilibili', 'github'],
aside: true,
// outline: [2, 3, 4, 5],
@@ -23,83 +23,34 @@ export default defineThemeConfig({
nextPage: false,
createTime: false,
footer: false,
locales: {
'/zh-cn/': {
navbar: zhcnNavbar,
notes: zhcnNotes,
footer: false,
},
'/zh-tw/': {
navbar: zhtwNavbar,
notes: zhtwNotes,
footer: false,
},
'/en-us/': {
navbar: enusNavbar,
notes: enusNotes,
footer: false,
},
'/ja-jp/': {
navbar: jajpNavbar,
notes: jajpNotes,
footer: false,
},
'/ko-kr/': {
navbar: kokrNavbar,
notes: kokrNotes,
footer: false,
},
},
autoFrontmatter: false,
//markdown: {
// align: true,
// codeTabs: true,
// //echarts: true,
// footnote: true,
// gfm: true,
// hint: true,
// imgLazyload: true,
// imgMark: true,
// imgSize: true,
// //mathjax: true,
// mark: true,
// //mermaid: true,
// tabs: true,
// tasklist: true,
// vPre: true,
// component: true,
//
// highlighter: {
// 'type': 'shiki',
// themes: {
// light: "light-plus",
// dark: "nord",
// }
// },
//},
//plugins: {
// activeHeaderLinks: false,
//
// comment: {
// provider: "Giscus",
// repo: "MaaAssistantArknights/maa-website",
// repoId: "R_kgDOHY7Gyg",
// category: "Comments",
// categoryId: "DIC_kwDOHY7Gys4CgoVH",
// mapping: "pathname",
// strict: true,
// },
//
// icon: {
// assets: "iconify",
// },
//
// sitemap: true,
// seo: true,
//
// notice: [
// {
// path: "/zh-tw/",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -13,5 +13,10 @@
/* 按钮 */
.actions .action .vp-button {
margin: 0.5rem;
min-width: 12ch;
min-width: 7em;
}
/* 首页标题 */
.is-home .name.clip {
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
}

View File

@@ -1,6 +1,6 @@
---
pageLayout: home
title: MAA Docs
title: 首页
config:
- type: doc-hero
hero:

View File

@@ -9,12 +9,12 @@ icon: jam:write-f
The purpose of this document is to guide document writers to better utilize the functionalities provided by the theme, thus achieving a more readable effect.
:::
Our documentation is built on [vuepress](https://github.com/vuejs/vuepress) and utilizes the [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) theme. You can also refer to the [official documentation](https://theme-hope.vuejs.press/) for more detailed explanations. Here, we only introduce some common functionalities.
Our documentation is built on [vuepress](https://github.com/vuejs/vuepress) and utilizes the [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) theme. You can also refer to the [official documentation](https://theme-plume.vuejs.press/) for more detailed explanations. Here, we only introduce some common functionalities.
## Deploy Locally
1. Install [Pnpm](https://pnpm.io/installation), and clone the repository refer to [Introduction to GitHub Pull request Flow](./development.md#introduction-to-github-pull-request-flow).
2. Create a terminal in the `website` directory, then run `pnpm i` to download dependencies.
2. Create a terminal in the `docs` directory, then run `pnpm i` to download dependencies.
3. Run `pnpm run dev` to deploy.
## Containers

View File

@@ -69,6 +69,10 @@ The extension supports scheduled scanning and diagnosing all tasks.
The extension supports resource with multiple paths. The extension will perform logical overlapping according to specified order, thus content loaded later can reference content loaded earlier.
### Evaluate Task / Tsak List Expression (Only Maa)
Evaluating the expanded task object and the sources of each properties, and the result of the task list expression via the control panel.
### MaaPiCli feature (Only MaaFramework projects)
Scanning and selecting controllers, selecting resource, adding and manipulating tasks, and launching tasks can be done via the control panel.

View File

@@ -185,115 +185,207 @@ Please note that JSON files do not support comments. The comments in this docume
}
```
## Expression Calculation
Task list type fields (`sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes`) support expression calculations.
| Symbol | Meaning | Example |
| :---------: | :---------------------------------------------------------: | :---------------------------------------: |
| `@` | `@`-type Task | `Fight@ReturnTo` |
| `#` (unary) | Virtual task | `#self` |
| `#` (binary)| Virtual task | `StartUpThemes#next` |
| `*` | Repeat tasks | `(ClickCornerAfterPRTS+ClickCorner)*5` |
| `+` | Task list merge (in next-type attributes, only first occurrence of same-name tasks kept) | `A+B` |
| `^` | Task list difference (in first but not second, order preserved) | `(A+A+B+C)^(A+B+D)` (result is `C`) |
Operators `@`, `#`, `*`, `+`, `^` have precedence: `#` (unary) > `@` = `#` (binary) > `*` > `+` = `^`.
## Special Task Types
### Template Task (`@` Type Task)
### Template Task
Template task and base task are collectively called **template tasks**.
**Template tasks** include derived tasks and `@`-type tasks. The core of the template task can be understood as **modifying the default values of fields** based on the *base task*.
Allows using task "A" as template, with "B@A" representing a task generated from "A".
#### Derived Task
- If task "B@A" is not explicitly defined in `tasks.json`, then add `B@` prefix to `sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes` fields (or `B` if task name begins with `#`), all other parameters match task "A". For example, if task "A" has:
Tasks with the `baseTask` field are derived tasks, and the task corresponding to the `baseTask` field is referred to as its *base task* of this derived task. For a derived task,
1. If it is an template matching task, the default value for the `template` field remains `"TaskName.png"`;
2. If the `algorithm` field differs from its *base task*, the derived class parameters are not inherited (only parameters defined in `TaskInfo` are inherited);
3. The default values for all other fields are the corresponding fields of its *base task*.
#### Implicit `@`-type Task
If task `"A"` exists and there is not a task directly defined in any task file such as `"B@A"`, it is an implicit `@`-type task, and task `"A"` is called the *base task* of task `"B@A"`. For an implicit `@`-type task,
1. The default values for task list type fields (`sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes`) are set to the base task's corresponding fields with the `B@` prefix directly appended (if the task name starts with `#`, the `B` prefix is appended);
2. The default values for all other fields (including the `template` field) are the corresponding fields of its *base task*.
#### Explicit `@`-type Task
If task `"A"` exists and there is a task directly defined in the task file such as `"B@A"`, it is an explicit `@`-type task, and task `"A"` is called the *base task* of task `"B@A"`. For an explicit `@`-type task,
1. The default values for task list type fields (`sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes`) are set to the base task's corresponding fields with the `B@` prefix directly appended (if the task name starts with `#`, the `B` prefix is appended);
2. If it is an template matching task, the default value for the `template` field remains `"TaskName.png"`;
3. If the `algorithm` field differs from its *base task*, the derived class parameters are not inherited (only parameters defined in `TaskInfo` are inherited);
4. The default values for all other fields are the corresponding fields of its *base task*.
### Virtual Task (`#`-type Task)
Virtual tasks are tasks of the form `"#{sharp_type}"` or `"B#{sharp_type}"`, where `{sharp_type}` can be `none`, `self`, `back`, `next`, `sub`, `on_error_next`, `exceeded_next`, or `reduce_other_times`.
Virtual tasks can be divided into **command virtual tasks** (`#none` / `#self` / `#back`) and **field virtual tasks** (`#next`, etc.).
| Virtual Task Type | Meaning | Simple example |
|:---------:|:---:|:--------:|
| none | Empty Task | Skip directly<sup>1</sup><br>`"A": {"next": ["#none", "T1"]}` is interpreted as `"A": {"next": ["T1"]}`<br>`"A#none + T1"` is interpreted as `"T1"` |
| self | Current Task Name | `"A": {"next": "#self"}` in `"#self"` is interpreted as `"A"`<br>`"B": {"next": "A@B@C#self"}` in `"A@B@C#self"` is interpreted as `"B"`.<sup>2</sup> |
| back | # Preceding task name | `"A@B#back"` is interpreted as `"A@B"`<br>`"#back"` will be skipped if it appears directly<sup>3</sup> |
| next, sub, etc. | # The field corresponding to the previous task name | Take `next` for example:<br>`"A#next"` is interpreted as `Task.get("A")->next`<br>`"#next"` will be skipped if it appears directly |
*Note<sup>1</sup>: `"#none"` generally used in conjunction with the template task to add prefixes, or used in the `baseTask` field to avoid unnecessary fields in multi-file inheritance.*
*Note<sup>2</sup>: `"XXX#self"` has the same meaning as `"#self"`.*
*Note<sup>3</sup>: When several tasks have `"next": [ "#back" ]`, `"T1@T2@T3"` represents executing `T3`, `T2`, and `T1` in sequence.*
### Multi-File Task
If a task defined in a later loaded task file (e.g. `tasks.json` for foreign services; hereinafter called File 2) also has a task of the same name defined in a earlier loaded task file (e.g. `tasks.json` for official services; hereinafter called File 1), then.
- if the task in File 2 does not have a `baseTask` field, then it inherits the fields of the task with the same name in File 1 directly.
- If the task in File 2 has a `baseTask` field, then it does not inherit the fields of the task with the same name in File 1, but overwrites them. In particular, when there is no template task, you can use `"baseTask": "#none"` to avoid inheriting unnecessary fields.
### Simple Example
- Derived task example (field `baseTask`)
Assume the following two tasks are defined:
```json
"Return": {
"action": "ClickSelf",
"next": [ "Stop" ]
},
"Return2": {
"baseTask": "Return"
},
```
The parameters of the `"Return2"` task are directly inherited from the `"Return"` task, and actually include the following parameters:
```json
"Return2": {
"algorithm": "MatchTemplate", // Directly inherited
"template": "Return2.png", // "TaskName.png"
"action": "ClickSelf", // Directly inherited
"next": [ "Stop" ] // Directly inherited, without any prefix compared to the Template Task
}
```
- `@`-type task example
Assume that a task `"A"` with the following parameters is defined:
```json
"A": {
"template": "A.png",
...,
"next": [ "N1", "N2" ]
}
"next": [ "N1", "#back" ]
},
```
This would be equivalent to defining:
If the task `"B@A"` is not directly defined, then the task `"B@A"` actually has the following parameters:
```json
"B@A": {
"template": "A.png",
...,
"next": [ "B@N1", "B@N2" ]
"next": [ "B@N1", "B#back" ]
}
```
- If task "B@A" is defined in `tasks.json`, then:
1. If "B@A" has different `algorithm` from "A", derived class parameters are not inherited (only `TaskInfo` parameters inherited)
2. For image matching tasks, if `template` not explicitly defined, uses `B@A.png` (not inheriting "A" template name); otherwise any derived parameters not explicitly defined inherit directly from "A"
3. For `TaskInfo` base class parameters (common to all task types like `algorithm`, `roi`, `next`, etc.), if not explicitly defined in "B@A", inherit directly from "A" except for the five fields mentioned above which get "B@" prefixed when inherited
If the task `"B@A"` is defined as `"B@A": {}`, then the task `"B@A"` actually has the following parameters:
### Base Task
Base task and template task are collectively called **template tasks**.
Tasks with `baseTask` field are base tasks.
Base task logic takes precedence over template task. This means `"B@A": { "baseTask": "C", ... }` has no relation to task A.
Any parameter not explicitly defined uses the corresponding parameter from `baseTask` without prefix, except `template` which remains `"TaskName.png"` when not explicitly defined.
#### Multi-File Tasks
If a task defined in a later-loaded file (e.g., foreign server `tasks.json`, called File 2) is also defined in an earlier-loaded file (e.g., CN server `tasks.json`, called File 1), then:
- If File 2's task has no `baseTask` field, it directly inherits fields from File 1's same-name task.
- If File 2's task has a `baseTask` field, it doesn't inherit fields from File 1's same-name task, but overwrites them instead.
### Virtual Task (`#` Task)
Virtual tasks are also called sharp tasks (`#` type tasks).
Tasks with `#` in name are virtual tasks. `#` can be followed by `next`, `back`, `self`, `sub`, `on_error_next`, `exceeded_next`, `reduce_other_times`.
| Virtual Task Type | Meaning | Simple Example |
| :----------: | :----------------: | :--------------------------------------------------------------------------------------------------------------------------------------: |
| self | Parent task name | `"A": {"next": "#self"}` where `"#self"` interpreted as `"A"`<br>`"B": {"next": "A@B@C#self"}` where `"A@B@C#self"` interpreted as `"B"`<sup>1</sup> |
| back | Task name before # | `"A@B#back"` interpreted as `"A@B"`<br>`"#back"` directly appears will be skipped |
| next, sub, etc. | Field of task name before # | For example with `next`:<br>`"A#next"` interpreted as `Task.get("A")->next`<br>`"#next"` directly appears will be skipped |
_Note<sup>1</sup>: `"XXX#self"` has same meaning as `"#self"`._
#### Simple Example
```json
{
"A": { "next": ["N1", "N2"] },
"C": { "next": ["B@A#next"] },
"Loading": {
"next": ["#self", "#next", "#back"]
},
"B": {
"next": ["Other", "B@Loading"]
```json
"B@A": {
"template": "B@A.png",
...,
"next": [ "B@N1", "B#back" ]
}
}
```
```
Results in:
- Virtual task example
```cpp
Task.get("C")->next = { "B@N1", "B@N2" };
```json
{
"A": { "next": ["N1", "N2"] },
"C": { "next": ["B@A#next"] },
Task.get("B@Loading")->next = { "B@Loading", "Other", "B" };
Task.get("Loading")->next = { "Loading" };
Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" };
```
"Loading": {
"next": ["#self", "#next", "#back"]
},
"B": {
"next": ["Other", "B@Loading"]
}
}
```
#### Some Use Cases
Results in:
- When several tasks have `"next": [ "#back" ]`, `"Task1@Task2@Task3"` means execute `Task3`, then `Task2`, then `Task1` in sequence.
```cpp
Task.get("C")->next = { "B@N1", "B@N2" };
#### Other Related Cases
Task.get("B@Loading")->next = { "B@Loading", "Other", "B" };
Task.get("Loading")->next = { "Loading" };
Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" };
```
```json
{
"A": { "next": ["N0"] },
"B": { "next": ["A#next"] },
"C@A": { "next": ["N1"] }
}
```
### Precautions
In this case, `"C@B" -> next` (i.e., `C@A#next`) is `[ "N1" ]`, not `[ "C@N0" ]`.
If the tasks defined in the task list type field (`next`, etc.) contain low-priority operations, the actual results may not match expectations, so please be aware of this.
1. Special cases caused by the order of operations between `@` and double `#`
```json
{
"A": { "next": ["N0"] },
"B": { "next": ["A#next"] },
"C@A": { "next": ["N1"] }
}
```
In the above case, `"C@B" -> next` (i.e., `C@A#next`) is `[ "N1" ]` rather than `[ "C@N0" ]`.
2. Special cases caused by the order of operations between `@` and `+`
```json
{
"A": { "next": ["#back + N0"] },
"B@A": {}
}
```
In the above case,
```cpp
Task.get("A")->next = { "N0" };
Task.get_raw("B@A")->next = { "B#back + N0" };
Task.get("B@A")->next = { "B", "N0" }; // Note that it is not [ "B", "B@N0" ]
```
In fact, you can use this feature to avoid adding unnecessary prefixes by simply defining
```json
{
"A": { "next": ["#none + N0"] }
}
```
## Runtime Task Modification
- `Task.lazy_parse()` loads JSON task configuration files at runtime. Lazy_parse rules match [Multi-File Tasks](#multi-file-tasks).
- `Task.lazy_parse()` loads JSON task configuration files at runtime. Lazy_parse rules match [Multi-File Task](#multi-file-task).
- `Task.set_task_base()` modifies a task's `baseTask` field.
### Usage Example
@@ -333,19 +425,6 @@ default:
}
```
## Expression Calculation
| Symbol | Meaning | Example |
| :---------: | :------------------------------------------------------: | :------------------------------------: |
| `@` | Template task | `Fight@ReturnTo` |
| `#` (unary) | Virtual task | `#self` |
| `#` (binary) | Virtual task | `StartUpThemes#next` |
| `*` | Repeat multiple tasks | `(ClickCornerAfterPRTS+ClickCorner)*5` |
| `+` | Task list merge (in next-type attributes, only first occurrence of same-name tasks kept) | `A+B` |
| `^` | Task list difference (in first but not second, order preserved) | `(A+A+B+C)^(A+B+D)` (result is `C`) |
Operators `@`, `#`, `*`, `+`, `^` have precedence: `#` (unary) > `@` = `#` (binary) > `*` > `+` = `^`.
## Schema Validation
This project configures JSON schema validation for `tasks.json`, schema file is `docs/maa_tasks_schema.json`.

View File

@@ -12,11 +12,11 @@ dir:
![MAA Logo =256x256](/images/maa-logo_512x512.png)
<!-- markdownlint-restore -->
# MaaAssistantArknights
# MAA
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social)
MAA stands for MAA Assistant Arknights

View File

@@ -9,7 +9,13 @@ icon: jam:write-f
このドキュメントの目的は、ドキュメント作成者がテーマが提供する機能をより良く活用し、読みやすさを向上させることを指導することです。
:::
私たちのドキュメントは [vuepress](https://github.com/vuejs/vuepress) に基づいて構築されており、[vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) テーマが使用されています。詳細な説明については[公式ドキュメント](https://theme-hope.vuejs.press/)をご覧いただけます。ここでは一部の一般的な機能について紹介します。
私たちのドキュメントは [vuepress](https://github.com/vuejs/vuepress) に基づいて構築されており、[vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) テーマが使用されています。詳細な説明については[公式ドキュメント](https://theme-plume.vuejs.press/)をご覧いただけます。ここでは一部の一般的な機能について紹介します。
## ローカルデプロイ
1. [pnpm](https://pnpm.io/installation) をインストールし、[Pull Request ワークフローの概要](./development.md#github-pull-request-プロセス概要)を参照してリポジトリをローカルにクローンします。
2. `docs` ディレクトリでターミナルを開き、`pnpm i` を実行して依存関係をインストールします。
3. `pnpm run dev` を実行してデプロイします。
## コンテナ

View File

@@ -69,6 +69,10 @@ The extension supports scheduled scanning and diagnosing all tasks.
The extension supports resource with multiple paths. The extension will perform logical overlapping according to specified order, thus content loaded later can reference content loaded earlier.
### Evaluate Task / Tsak List Expression (Only Maa)
Evaluating the expanded task object and the sources of each properties, and the result of the task list expression via the control panel.
### MaaPiCli feature (Only MaaFramework projects)
Scanning and selecting controllers, selecting resource, adding and manipulating tasks, and launching tasks can be done via the control panel.

View File

@@ -2,44 +2,43 @@
order: 9
icon: ph:sword-bold
---
# 自動戦闘
# 自动战斗
作業共有サイト [prts.plus](https://prts.plus) で作業ファイルをご利用・共有ください。
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
::: warning
自動戦闘に関わるすべての機能は、最低60フレームの安定したゲームフレームレートが必要です。これには自動戦闘や自動ローグライクが含まれますが、これに限定されません。
:::
欢迎使用作业分享站 [prts.plus](https://prts.plus) 使用及分享作业文件。
## 自動攻略のコピー
## 抄作业
任意の `編成可能ステージ``保全駐在` モードの自動戦闘をサポートします。
支持任意 `可编队关卡``保全派驻` 模式的自动战斗。
- 本功能需要在有 `开始行动` 按钮的编队选择界面开始运行。
之后在 MAA 左侧上部的框中 `导入本地 JSON 作业文件``填写作业站神秘代码` 即可导入作业
- `自动编队` 功能会**清空当前编队**并根据作业需要的干员自动完成编队
- 自動編成に対応するオペレーターの特別フォーカスを解除する必要があります。
- 可根据任务需要为自动编队 `追加自定干员``补充低信赖干员`
- 可根据个人需要(例如需要使用 `好友助战` 时)取消 `自动编队`,手动编队后开始
- 对于「悖论模拟」关卡,必须关闭 `自动编队`,手动选择技能后,在有**开始模拟**按钮的界面开始自动战斗
- 对于「保全派驻」关卡,`自动编队` 无效,必须手动完成**初始**任务准备,直到在关卡详情有**开始部署**按钮的界面才能开始自动战斗
- 可设置 `循环次数`,例如保全。但 MAA 不会借干员,如需借干员请勿使用。
- 可使用 `战斗列表` 功能进行同一区域关卡的自动连续战斗
- 战斗列表下方三个按钮从左到右依次为 `批量导入``添加关卡``清空关卡`
`添加关卡` 右键为添加突袭关卡,`清空关卡` 右键为清空未勾选关卡,
- 导入作业后,战斗列表下方会出现关卡名,确认正确后再添加该关卡。列表中的关卡可以拖拽调整顺序,勾选是否执行
- 开启本功能后改为在**关卡所在的地图界面**开始自动战斗。在理智不足/战斗失败/非三星结算时将停止自动战斗队列。
- 请确保列表中的关卡在同一区域(只通过左右滑动地图界面就可以导航到)。
- **请务必为优质作业点赞,以提高作业评分并激励作业制作者。**
- 本機能は `作戦開始` ボタンがある編成選択画面で開始する必要があります。
その後、MAA 左側上部の枠内で `ローカル JSON 作業ファイルをインポート` または `ミステリーコードを入力` して作業をインポートできます。
- `自動編成` 機能は**現在の編成をクリア**し、作業に必要なオペレーターに基づいて自動的に編成を完了します。
- 自動編成に対応するオペレーターのためお気に入り表示を解除する必要があります
- タスクの必要に応じて自動編成に `カスタムオペレーターを追加` および `低信頼度オペレーターを補充` できます
- 個人の必要に応じて(例:`戦友サポート` を使用する場合)、`自動編成` をキャンセルし、手動編成後に開始できます。
- 「逆理演算」ステージの場合、`自動編成` を無効にし、手動でスキルを選択した後、**シミュレーション開始**ボタンがある画面で自動戦闘を開始する必要があります
- 「保全駐在」ステージの場合、`自動編成` は無効で、手動で**初期**タスク準備を完了し、ステージ詳細に**配置開始**ボタンがある画面まで進んで自動戦闘を開始できます
- `ループ回数` を設定できます保全。ただし、MAA はオペレーターを借りないため、オペレーターを借りる必要がある場合は使用しないでください
- `バトルリスト` 機能を使用して、同一エリアのステージの自動連続戦闘を行えます
- バトルリスト下部の3つのボタンは左から右へ順に `一括インポート``ステージ追加``ステージクリア` です。
`ステージ追加` を右クリックすると強襲ステージを追加、`ステージクリア` を右クリックするとチェックされていないステージをクリアします
- 作業をインポートすると、戦闘リスト下部にステージ名が表示されます。正しいことを確認してからそのステージを追加してください。リスト内のステージはドラッグで順序を調整でき、実行するかどうかをチェックできます。
- この機能を有効にすると、**ステージが所在するマップ画面**で自動戦闘を開始するように変更されます。理性不足/戦闘失敗/非三星クリア時に自動戦闘キューが停止します。
- リスト内のステージが同一エリア内(マップ画面の左右スライドだけで移動可能)にあることを確認してください
- **優良な自動攻略には必ずいいねをして、作業評価を向上させ作業制作者を激励してください。**
![image](/images/zh-cn/copilot-click-like.png)
## 写作业
## 作業の作成
- 请使用 [作业编辑器](https://prts.plus/create) 制作,可参考 [战斗流程协议](../../protocol/copilot-schema.md)。
- 地图坐标获取
- 在作业编辑器中填写关卡后,左下角会自动加载可拖动缩放的坐标地图,可点选设置当前干员位置
- 填写关卡并导出 JSON 后直接开始行动,会在 MAA 目录下 `debug\map` 中生成覆盖有坐标信息的地图截图
- [PRTS.Map](https://map.ark-nights.com/areas),在设置中将 `坐标展示` 修改为 `MAA` 后使用
- 支持演习模式
- 建议在作业描述里填上你的署名(作者名)、参考攻略视频链接、其他想说的等等
- 欢迎加入企鹅群 [1169188429](https://jq.qq.com/?_wv=1027&k=QZcGcJ9G) 共同讨论作业制作等问题
- [作業エディター](https://prts.plus/create) をご利用ください。[戦闘フロープロトコル](../../protocol/copilot-schema.md) も参考にしてください
- マップ座標の取得
- 作業エディターでステージを入力すると、左下角にドラッグ・ズーム可能な座標マップが自動読み込みされ、クリックして現在のオペレーター位置を設定できます
- ステージを入力して JSON をエクスポートした後、直接作戦を開始すると、MAA ディレクトリ下の `debug\map` に座標情報が重ねられたマップスクリーンショットが生成されます
- [PRTS.Map](https://map.ark-nights.com/areas) で、設定の `座標表示` `MAA` に変更してご利用ください
- 演習モードをサポートします
- 作業説明には署名(作者名)、参考攻略動画リンク、その他伝えたいことなどを記載することをお勧めします
- 作業制作などの問題について討議するために、QQグループ [1169188429](https://jq.qq.com/?_wv=1027&k=QZcGcJ9G) への参加を歓迎します

View File

@@ -2,29 +2,39 @@
order: 11
icon: icon-park-solid:other
---
# その他
# 其他
## GPU 推論加速
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
DirectML を使用して GPU による認識推論を加速<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/9236)</sup>。わずかな GPU 使用量で大幅な CPU 使用量を削減できるため、有効にすることを推奨します。
テストの結果、一部のグラフィックカードは機能が不足しているか性能が低いため、この機能を使用すると認識の問題が発生することがあります。MAA には一部の GPU ブラックリストが内蔵されています<sup>[PR1](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/9990)[PR2](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12134)</sup>。リスト外のグラフィックカードでこの機能を有効にした後に認識の問題が発生した場合は、Issue を報告してください。
## 启动时自动切换配置
## 一回のみ
MAA 支持通过启动参数自动切换配置,在 MAA 进程名后附加 `--config <配置名>` 即可。例子:`./MAA/MAA.exe --config 官服`
メイン画面と設定での設定変更は通常自動保存されますが、以下の項目は MAA 再起動後にリセットされます
部分符号需要转义,参考 Json。例子在配置名为 `"官服"` 时,参数应为 `--config \"官服\"`
- `*` マークが付いたオプション
- `(一回のみ)` マークが付いたオプション
- チェックボックスを右クリックして得られる半選択スイッチ
-
## 开始前/结束后脚本
## 起動時の自動設定切り替え
v4.13.0 后支持设置开始前/结束后脚本,可在任务前后自动执行批处理文件。输入框内需填写批处理文件即 `*.bat` 的绝对或相对路径
MAA は起動パラメータによる自動設定切り替えをサポートしており、MAA プロセス名の後に `--config <設定名>` を付けることで実行できます。例:`./MAA/MAA.exe --config 公式サーバー`
一部の記号はエスケープが必要で、Json を参考にしてください。例:設定名が `"公式サーバー"` の場合、パラメータは `--config \"公式サーバー\"` となります。
## 其他说明
## 開始前/終了後スクリプト
- 首页左侧任务可以拖动改变顺序,基建换班设置中设施顺序同理
- 主界面和设置中的配置更改通常会自动保存,标有 `*` 号或 `(仅一次)` 的选项,以及通过右键单击复选框得到的半选开关都会在 MAA 重启后重置。
- 所有点击操作,都是点击按钮内随机位置,并模拟泊松分布(按钮中心的点击概率最高,距离中心越远,点击概率越低)。
- 底层算法纯 C++ 开发,并设计了多重缓存技术,最大限度降低 CPU 和内存占用。
- 软件支持自动更新 ✿✿ ヽ(°▽°) ✿ ,推荐非杠精的同学使用公测版,一般来说更新快且 bug 少。(什么 MIUI (╯‵□′)╯︵┻━┻
- 如果新版本自动下载失败,可手动下载 OTA 压缩包后直接放到 MAA 目录下,会自动更新的。
- 在 Windows 版本中MAA 目录下 `config` 文件夹中的 `gui.json` 记录了所有设置,如果下载了新的完整包可以将此文件夹复制到新的 MAA 目录下。
v4.13.0 以降、開始前/終了後スクリプトの設定をサポートしており、タスクの前後でバッチファイルを自動実行できます。入力欄にはバッチファイル(`*.bat`)の絶対パスまたは相対パスを入力する必要があります
## 設定移行
Windows 版では、MAA のすべての設定は `config` フォルダ内の `gui.json` に保存されています。このフォルダを移行することで MAA のすべての設定を移行できます。
## その他の説明
- ホーム左側のタスクはドラッグして順序を変更でき、基地シフト設定の施設順序も同様です。
- すべてのクリック操作は、ボタン内のランダムな位置をクリックし、ポアソン分布をシミュレートします(ボタン中心のクリック確率が最も高く、中心から離れるほどクリック確率は低くなります)。
- 底層アルゴリズムは純粋な C++ で開発され、多重キャッシュ技術を設計して CPU とメモリ使用量を最大限に削減しています。
- ソフトウェアは自動更新をサポートしています ✿✿ ヽ(°▽°) ✿ 。揚げ足取りでない方にはベータ版の使用を推奨します。一般的に更新が早く、バグも少ないです。(なんだって MIUI (╯‵□′)╯︵┻━┻
- 新バージョンの自動ダウンロードが失敗した場合、手動で OTA 圧縮パッケージをダウンロードして MAA ディレクトリに直接置くと、自動更新されます。

View File

@@ -2,24 +2,22 @@
order: 8
icon: solar:streets-map-point-linear
---
# 生息演算
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
現在、生息演算のサポートはまだ初期段階にあり、自動攻略は推奨されず、現段階では安定性を保証できません。
目前生息演算的支持仍处于早期阶段,暂不推荐无人值守,现阶段无法保证稳定性。
## デフォルトモード
## 默认模式
1. 生息演算のメイン画面でタスクを開始する必要があります(ナビゲーションはまだ未実装)
2. すでにセーブデータがある状況では使用できません(既存のセーブデータを削除してください)
3. 生息演算の編成にオペレーターがいる状況では使用できません(生息演算の現在の編成をクリアしてください、特にウェーブを完了した後)
1. 需要在生息演算主界面开始任务(导航还没写)
2. 不能在已经有存档的情况下使用(删除现有存档即可)
3. 不能在生息演算的编队中有干员的情况下使用(把生息演算中的当前编队清空即可,特别是打完浪潮之后)
## 製造でポイント稼ぎ
## 制造刷点数
1. 需要在进入生息演算中能看到驻扎地的页面开始
2. 若未填写道具名称,则默认制造荧光棒
3. 前提条件:当前为结算后的第一天,且后续三天没有敌袭进入驻扎地
4. 如果能制造的数量刚好是 99 的倍数会卡住,在存档前可以先用掉一点,这个之后再修
1. 生息演算内で駐屯地が見えるページから開始する必要があります
2. アイテム名が未記入の場合、デフォルトでグローライトを製造します
3. 前提条件現在が決算後の初日で、その後3日間敵襲による駐屯地への侵入がないこと
4. 製造可能数量がちょうど99の倍数の場合、フリーズします。セーブ前に少し使用することができます。これは後で修正予定です

View File

@@ -2,13 +2,7 @@
order: 6
icon: lucide:gift
---
# 報酬受取
# 领取奖励
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
自动领取每日奖励和每周奖励。
同时支持其他奖励类型,具体请查看设置。
毎日の報酬と毎週の報酬を自動受取します。
その他の報酬タイプもサポートしており、詳細は設定をご確認ください。

View File

@@ -13,11 +13,11 @@ dir:
<!-- markdownlint-restore -->
# MaaAssistantArknights
# MAA
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social)
MAAは、MAA Assistant Arknightsです。
@@ -40,11 +40,11 @@ MAAは、MAA Assistant Arknightsです。
- 自動基地シフト、オペレーター効率計算、単一設備内に最適なソリューション;[カスタムシフト](./protocol/base-scheduling-schema.md)にも対応しています。
- 自動公開求人、緊急招集票を使う、使い切るのもサポート。[PenguinStats](https://penguin-stats.io/result/stage/recruit/recruit)と[Yituliu](https://ark.yituliu.cn/survey/maarecruitdata)へ公開求人データのアップロード。
- 高スターの公開求人を選択するのに便利な公開求人のパネルの手動認識をサポートします。~~この上級エリートとCost回復はシージかシージか~~
- 所持オペレーターを認識し、既存および未所有のオペレーターの記録サポート、公開求人を手動で設定するためのヒントを提供することもできます。(日本サーバーではオペレーターの名前部分のフォントサイズが異なるため認識にややブレがあります)
- 所持オペレーターを認識し、既存および未所有のオペレーターの記録サポート、公開求人を手動で設定するためのヒントを提供することもできます。
- 倉庫のアイテム認識機能 [Arkplanner](https://penguin-stats.io/planner)/[ARK-NIGHTS.com](https://ark-nights.com/settings)と[アークナイツ ツールボックス](https://arkntools.app/#/material)へ出力可能!使用方法はツール内文章を参照してください。
- 戦友訪問、FP収集、買い物、デイリーリワード収集、ワンクリックして全自動操作
- 統合戦略自動作戦、オペレーターとレベルの自動認識、源石錐とキャンドルの自動収集、電気ケトルを獲得!
- 作業JSONファイルをインポートし、自動操作も可能 [ビデオデモ](https://www.bilibili.com/video/BV1H841177Fk/)現在JP未対応/中文)
- 作業JSONファイルをインポートし、自動操作も可能 [ビデオデモ](https://www.bilibili.com/video/BV1H841177Fk/)(中文)
- C、Python、Java、Rust、Golang、Java HTTP、Rust HTTPなどの多種多様なインターフェースに対応、統合や呼び出しが簡単で、自分好みにMAAをカスタマイズできます!
UIを見れば使い方もすぐ分かる
@@ -91,18 +91,11 @@ MAA はコマンドラインインタフェースCLI操作をサポート
MAA は中国語(簡体字)を第一言語とし、翻訳見出しはすべて中国語(簡体字)を基準としています。
### Windows
### 開発への参加
1. ビルド済みのサードパーティ ライブラリをダウンロードします。
#### Windows
```cmd
python tools/maadeps-download.py
```
2. Visual Studio 2022 で `MAA.sln` を開き、`MaaWpfGui` を右クリックして、スタートアップ プロジェクトとして設定します。
3. VS 上記の設定で 'RelWithDebInfo' 'x64' を選択します Release パッケージまたは ARM プラットフォームをコンパイルしている場合は、この手順を無視してください)
4. `MaaWpfGui` を右クリックし、[プロパティ] - [デバッグ] - [ローカル デバッグを有効にする] を選択します (これにより、C++ コアにブレークポイントを掛けることができます)。
5. (オプション) PR を送信する場合は、[clang-formatを有効にする](./develop/development.md#visual-studioでclang-formatを有効にする)を有効にすることをお勧めします。
[開発関連](./develop/development.md)を参照してください。
### Linux | macOS

View File

@@ -9,12 +9,12 @@ icon: jam:write-f
이 문서의 목적은 문서 작성자가 주제가 제공하는 기능을 더 잘 활용하여 더 읽기 쉬운 효과를 얻는 데 도움을 주는 것입니다.
:::
우리의 문서는 [vuepress](https://github.com/vuejs/vuepress)로 작성되었으며, [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) 테마를 사용하고 있습니다. 더 자세한 설명은 [공식 문서](https://theme-hope.vuejs.press/zh/)를 참조할 수 있으며, 여기서는 일부 일반적인 기능에 대해서만 소개하겠습니다.
우리의 문서는 [vuepress](https://github.com/vuejs/vuepress)로 작성되었으며, [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) 테마를 사용하고 있습니다. 더 자세한 설명은 [공식 문서](https://theme-plume.vuejs.press/)를 참조할 수 있으며, 여기서는 일부 일반적인 기능에 대해서만 소개하겠습니다.
## 로컬 배포
1. [pnpm](https://pnpm.io/installation)을 설치하고, [Pull Request 가이드](./development.md#github-pull-request-진행-과정)을 참고해, 저장소를 로컬에 클론합니다.
2. `website` 경로에서 새로운 터미널을 열고, `pnpm i` 을 실행하여 의존성 파일을 다운로드합니다.
2. `docs` 경로에서 새로운 터미널을 열고, `pnpm i` 을 실행하여 의존성 파일을 다운로드합니다.
3. `pnpm run dev` 를 실행하여 배포를 시작합니다.
## 컨테이너

View File

@@ -69,6 +69,10 @@ The extension supports scheduled scanning and diagnosing all tasks.
The extension supports resource with multiple paths. The extension will perform logical overlapping according to specified order, thus content loaded later can reference content loaded earlier.
### Evaluate Task / Tsak List Expression (Only Maa)
Evaluating the expanded task object and the sources of each properties, and the result of the task list expression via the control panel.
### MaaPiCli feature (Only MaaFramework projects)
Scanning and selecting controllers, selecting resource, adding and manipulating tasks, and launching tasks can be done via the control panel.

View File

@@ -13,11 +13,11 @@ dir:
<!-- markdownlint-restore -->
# MaaAssistantArknights
# MAA
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social)
MAA는 MAA Assistant Arknights의 약자입니다

View File

@@ -20,11 +20,11 @@
"markdown-it": "^14.1.0",
"markdown-it-anchor": "^9.2.0",
"prettier": "^3.6.2",
"sass-embedded": "^1.92.1",
"sass-embedded": "^1.93.1",
"typescript": "^5.9.2",
"vue": "^3.5.21",
"vuepress": "2.0.0-rc.24",
"vuepress-theme-plume": "1.0.0-rc.163"
"vuepress-theme-plume": "1.0.0-rc.164"
},
"scripts": {
"dev": "vuepress dev .",

752
docs/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,7 @@
packages:
- .
onlyBuiltDependencies:
- "@parcel/watcher"
- esbuild
- vue-demi

View File

@@ -9,17 +9,15 @@ icon: jam:write-f
本文档的目的在于指导文档编写者更好的使用主题提供的功能,以此达到更易读的效果。
:::
我们的文档基于 [vuepress](https://github.com/vuejs/vuepress) 构建,使用了 [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) 主题,你也可以查看[官方文档](https://theme-hope.vuejs.press/zh/)来获取更加详细的说明,这里仅介绍一些常用的功能
我们的文档基于 [vuepress](https://github.com/vuejs/vuepress) 构建,使用了 [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) 主题,你也可以查看[官方文档](https://theme-plume.vuejs.press/)来获取更加详细的说明,这里仅介绍一些常用的功能,或是经过我们自定义的功能
## 本地部署
1. 安装 [pnpm](https://pnpm.io/installation),并参考 [Pull Request 流程简述](./development.md#github-pull-request-流程简述)将仓库克隆到本地。
2.`website` 目录下新建终端,运行 `pnpm i` 部署依赖。
2.`docs` 目录下新建终端,运行 `pnpm i` 部署依赖。
3. 运行 `pnpm run dev` 进行部署。
## 容器
~~不是 docker 那个容器~~
## 容器与卡片
该主题提供了关于提示、注释、信息、注意、警告和详情自定义容器的支持,我们可以利用这一特性来强调部分内容
@@ -31,6 +29,13 @@ icon: jam:write-f
:::
```
或是使用 Github 风格语法
```markdown
> [!容器类型]
> 你想写的内容
```
接受的容器内容与其默认标题如下:
- `tip` 提示
@@ -39,6 +44,7 @@ icon: jam:write-f
- `warning` 注意
- `danger` 警告
- `details` 详情
- `demo-warpper` ==特殊容器==
### 容器示例
@@ -66,6 +72,191 @@ icon: jam:write-f
这是详情容器
:::
::: demo-wrapper
这是一个很特殊的容器
:::
## 马克笔标记
你可以使用标记语法来对想要的内容进行标记,用于强调重点事项
使用方法:用 `==标记内容=={标记颜色(可选)}` 的语法进行标记,请注意两边需要有空格
**输入:**
```md
MaaAssistantArknight 是由 ==很多猪== 开发的
```
**输出:**
MaaAssistantArknight 是由 ==很多猪== 开发的
主题还内置了以下的配色方案:
- **default**: `==Default==` - ==Default==
- **info**: `==Info=={.info}` - ==Info=={.info}
- **note**: `==Note=={.note}` - ==Note=={.note}
- **tip**: `==Tip=={.tip}` - ==Tip=={.tip}
- **warning**: `==Warning=={.warning}` - ==Warning=={.warning}
- **danger**: `==Danger=={.danger}` - ==Danger=={.danger}
- **caution**: `==Caution=={.caution}` - ==Caution=={.caution}
- **important**: `==Important=={.important}` - ==Important=={.important}
## 隐藏文本
出于某种原因,你可能需要将文档的某部分暂时涂黑,在这种情况下你可以使用隐藏文本功能
你可以使用 `!!需要隐秘的内容!!{配置(可选)}` 的语法来使用,默认效果如下
!!总感觉在看萌百(划掉!!
有以下配置可以使用
::: demo-wrapper
输入:
```markdown
+ 遮罩层效果 + 鼠标悬停:!!鼠标悬停看到我了!!{.mask .hover}
+ 遮罩层效果 + 点击:!!点击看到我了!!{.mask .click}
+ 文本模糊效果 + 鼠标悬停:!!鼠标悬停看到我了!!{.blur .hover}
+ 文本模糊效果 + 点击:!!点击看到我了!!{.blur .click}
```
输出:
- 遮罩层效果 + 鼠标悬停:!!鼠标悬停看到我了!!{.mask .hover}
- 遮罩层效果 + 点击:!!点击看到我了!!{.mask .click}
- 文本模糊效果 + 鼠标悬停:!!鼠标悬停看到我了!!{.blur .hover}
- 文本模糊效果 + 点击:!!点击看到我了!!{.blur .click}
:::
## 步骤
当你正在写一个步骤化的教程时,有序列表可能会因为嵌套失去层次感,这种时候 `steps` 容器就是最好的选择
注意该容器用四个冒号来标记开始和结束,与常规的容器不同
输入:
````markdown
:::: steps
1. 步骤 1
```ts
console.log('Hello World!')
```
2. 步骤 2
这里是步骤 2 的相关内容
3. 步骤 3
::: tip
提示容器
:::
4. 结束
::::
````
输出:
:::: steps
1. 步骤 1
```ts
console.log('Hello World!')
```
2. 步骤 2
这里是步骤 2 的相关内容
3. 步骤 3
::: tip
提示容器
:::
4. 结束
::::
## 智能图片容器
我们基于主题提供的功能包装了一个图片容器。该容器能够在亮暗主题下自动显示对应主题的,同时支持自动布局
你可以在 markdown 正文中使用 `<ImageGrid>` 组件来调用该方法,具体的语法和效果如下
::: demo-wrapper
这是语法:
```markdown
<ImageGrid :imageList="[
{
light: 'images/zh-cn/readme/1-light.png',
dark: 'images/zh-cn/readme/1-dark.png'
},
{
light: 'images/zh-cn/readme/2-light.png',
dark: 'images/zh-cn/readme/2-dark.png'
},
{
light: 'images/zh-cn/readme/3-light.png',
dark: 'images/zh-cn/readme/3-dark.png'
},
{
light: 'images/zh-cn/readme/4-light.png',
dark: 'images/zh-cn/readme/4-dark.png'
}
]" />
```
这是渲染效果:
<ImageGrid :imageList="[
{
light: 'images/zh-cn/readme/1-light.png',
dark: 'images/zh-cn/readme/1-dark.png'
},
{
light: 'images/zh-cn/readme/2-light.png',
dark: 'images/zh-cn/readme/2-dark.png'
}
]" />
:::
## 字段容器
该语法较为复杂,请参考 [官方文档](https://theme-plume.vuejs.press/guide/markdown/field/) 进行使用
效果展示如下
:::: field-group
::: field name="theme" type="ThemeConfig" required default="{ base: '/' }"
主题配置
:::
::: field name="enabled" type="boolean" optional default="true"
是否启用
:::
::: field name="callback" type="(...args: any[]) => void" optional default="() => {}"
<Badge type="tip" text="v1.0.0 新增" />
回调函数
:::
::: field name="other" type="string" deprecated
<Badge type="danger" text="v0.9.0 弃用" />
已弃用属性
:::
::::
## 图标
该主题提供了图标支持,你可以在以下地方使用图标:
@@ -94,23 +285,28 @@ icon: jam:write-f
### 在文档中使用图标
你可以使用 `<HopeIcon />` 组件在 markdown 中添加图标。该组件有以下属性:
你可以使用 `<Icon />` 组件在 markdown 中添加图标。该组件有以下属性:
- `icon` 接受图标关键字及 Url如 `jam:write-f``ic:round-home` 等
- `color` 接受 css 风格的颜色值,如 `#fff``red` 等(该选项仅对 svg 图标有效)
- `size` 接受 css 风格的大小,如 `1rem``2em``100px` 等
::: details 案例
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
::: demo-wrapper 案例
输入:
```markdown
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
- home - <Icon name="material-symbols:home" color="currentColor" size="1em" />
- vscode - <Icon name="skill-icons:vscode-dark" size="2em" />
- twitter - <Icon name="skill-icons:twitter" size="2em" />
```
<HopeIcon icon="/images/maa-logo_512x512.png" size="4rem" />
```markdown
<HopeIcon icon="/images/maa-logo_512x512.png" size="4rem" />
```
输出:
- home - <Icon name="material-symbols:home" color="currentColor" size="1em" />
- vscode - <Icon name="skill-icons:vscode-dark" size="2em" />
- twitter - <Icon name="skill-icons:twitter" size="2em" />
:::
### 图标关键字的获取

View File

@@ -69,6 +69,10 @@ icon: iconoir:code-brackets
插件支持资源包含多个路径, 会按照指定顺序进行逻辑覆盖, 即后加载的可以引用到前加载的内容.
### 计算任务 / 任务列表表达式 (仅 Maa)
通过控制面板, 可以计算任务实际展开的内容, 以及每一项的来源; 可以计算任务列表表达式展开的结果
### MaaPiCli 功能 (仅 MaaFramework 项目)
通过控制面板, 可以扫描并选择控制器, 选择资源, 添加并管理任务, 以及执行任务.

View File

@@ -59,32 +59,42 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
### InternalError
Todo
`details` 字段为空。
### InitFailed
```json
{
"what": string, // 错误类型
"why": string, // 错误原因
"details": object // 错误详情
}
```
:::: field-group
::: field name="what" type="string" required
错误类型
:::
::: field name="why" type="string" required
错误原因。
:::
::: field name="details" type="object" required
错误详情。
:::
::::
### ConnectionInfo
```json
{
"what": string, // 信息类型
"why": string, // 信息原因
"uuid": string, // 设备唯一码(连接失败时为空)
"details": {
"adb": string, // AsstConnect 接口 adb_path 参数
"address": string, // AsstConnect 接口 address 参数
"config": string // AsstConnect 接口 config 参数
}
}
```
:::: field-group
::: field name="what" type="string" required
信息类型
:::
::: field name="why" type="string" required
信息原因。
:::
::: field name="uuid" type="string"
设备唯一码(连接失败时为空)。
:::
::: field name="details" type="object" required
连接详情。其结构如下:
- `adb` (string, required): `AsstConnect` 接口 `adb_path` 参数。
- `address` (string, required): `AsstConnect` 接口 `address` 参数。
- `config` (string, required): `AsstConnect` 接口 `config` 参数。
:::
::::
### 常见 `What` 字段
@@ -111,30 +121,37 @@ Todo
### AsyncCallInfo
```json
{
"uuid": string, // 设备唯一码
"what": string, // 回调类型,"Connect" | "Click" | "Screencap" | ...
"async_call_id": int, // 异步请求 id即调用 AsstAsyncXXX 时的返回值
"details": {
"ret": bool, // 实际调用的返回值
"cost": int64, // 耗时,单位毫秒
}
}
```
:::: field-group
::: field name="uuid" type="string" required
设备唯一码
:::
::: field name="what" type="string" required
回调类型,例如 `Connect` | `Click` | `Screencap` 等。
:::
::: field name="async_call_id" type="number" required
异步请求 id即调用 `AsstAsyncXXX` 时的返回值。
:::
::: field name="details" type="object" required
异步调用详情。其结构如下:
- `ret` (boolean, required): 实际调用的返回值。
- `cost` (number, required): 耗时,单位毫秒。
:::
::::
### AllTasksCompleted
```json
{
"taskchain": string, // 最后的任务链
"uuid": string, // 设备唯一码
"finished_tasks": [ // 已经运行过的任务 id
int,
...
]
}
```
:::: field-group
::: field name="taskchain" type="string" required
最后的任务链
:::
::: field name="uuid" type="string" required
设备唯一码。
:::
::: field name="finished_tasks" type="array<number>" required
已经运行过的任务 id 列表。
:::
::::
#### 常见 `taskchain` 字段
@@ -175,45 +192,67 @@ Todo
### TaskChain 相关消息
```json
{
"taskchain": string, // 当前的任务链
"taskid": int, // 当前任务 TaskId
"uuid": string // 设备唯一码
}
```
:::: field-group
::: field name="taskchain" type="string" required
当前的任务链
:::
::: field name="taskid" type="number" required
当前任务 TaskId。
:::
::: field name="uuid" type="string" required
设备唯一码。
:::
::::
### TaskChainExtraInfo
Todo
`details` 字段为空。
### SubTask 相关消息
```json
{
"subtask": string, // 子任务名
"class": string, // 子任务符号名
"taskchain": string, // 当前任务链
"taskid": int, // 当前任务 TaskId
"details": object, // 详情
"uuid": string // 设备唯一码
}
```
:::: field-group
::: field name="subtask" type="string" required
子任务名
:::
::: field name="class" type="string" required
子任务符号名。
:::
::: field name="taskchain" type="string" required
当前任务链。
:::
::: field name="taskid" type="number" required
当前任务 TaskId。
:::
::: field name="details" type="object" required
详情。
:::
::: field name="uuid" type="string" required
设备唯一码。
:::
::::
#### 常见 `subtask` 字段
- `ProcessTask`
`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"task": "StartButton2", // 任务名
"action": 512,
"exec_times": 1, // 已执行次数
"max_times": 999, // 最大执行次数
"algorithm": 0
}
```
:::: field-group
::: field name="task" type="string" required
任务名。
:::
::: field name="action" type="number" required
Action ID。
:::
::: field name="exec_times" type="number" required
已执行次数。
:::
::: field name="max_times" type="number" required
最大执行次数。
:::
::: field name="algorithm" type="number" required
识别算法。
:::
::::
- Todo 其他
@@ -269,359 +308,208 @@ Todo
### SubTaskExtraInfo
```json
{
"taskchain": string, // 当前任务链
"class": string, // 子任务类型
"what": string, // 信息类型
"details": object, // 信息详情
"uuid": string, // 设备唯一码
}
```
:::: field-group
::: field name="taskchain" type="string" required
当前任务链
:::
::: field name="class" type="string" required
子任务类型。
:::
::: field name="what" type="string" required
信息类型。
:::
::: field name="details" type="object" required
信息详情。
:::
::: field name="uuid" type="string" required
设备唯一码。
:::
::::
#### 常见 `what` 及 `details` 字段
- `StageDrops`
关卡材料掉落信息
```json
// 对应的 details 字段举例
{
"drops": [
// 本次识别到的掉落材料
{
"itemId": "3301",
"quantity": 2,
"itemName": "技巧概要·卷1"
},
{
"itemId": "3302",
"quantity": 1,
"itemName": "技巧概要·卷2"
},
{
"itemId": "3303",
"quantity": 2,
"itemName": "技巧概要·卷3"
}
],
"stage": {
// 关卡信息
"stageCode": "CA-5",
"stageId": "wk_fly_5"
},
"stars": 3, // 行动结束星级
"stats": [
// 本次执行期间总的材料掉落
{
"itemId": "3301",
"itemName": "技巧概要·卷1",
"quantity": 4,
"addQuantity": 2 //本次新增的掉落数量
},
{
"itemId": "3302",
"itemName": "技巧概要·卷2",
"quantity": 3,
"addQuantity": 1
},
{
"itemId": "3303",
"itemName": "技巧概要·卷3",
"quantity": 4,
"addQuantity": 2
}
]
}
```
关卡材料掉落信息。`details` 字段结构如下:
- `drops` (array, required): 本次识别到的掉落材料,数组每一项包含:
- `itemId` (string, required): 材料 ID。
- `quantity` (number, required): 掉落数量。
- `itemName` (string, required): 材料名称。
- `stage` (object, required): 关卡信息,包含:
- `stageCode` (string, required): 关卡编号。
- `stageId` (string, required): 关卡 ID。
- `stars` (number, required): 行动结束星级。
- `stats` (array, required): 本次执行期间总的材料掉落,数组每一项包含:
- `itemId` (string, required): 材料 ID。
- `itemName` (string, required): 材料名称。
- `quantity` (number, required): 总计数量。
- `addQuantity` (number, required): 本次新增的掉落数量。
- `RecruitTagsDetected`
公招识别到了 Tags
公招识别到了 Tags。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"tags": ["费用回复", "防护", "先锋干员", "辅助干员", "近战位"]
}
```
:::: field-group
::: field name="tags" type="array<string>" required
识别到的 Tag 列表。
:::
::::
- `RecruitSpecialTag`
公招识别到了特殊 Tag
公招识别到了特殊 Tag。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"tag": "高级资深干员"
}
```
:::: field-group
::: field name="tag" type="string" required
特殊 Tag 名称,例如 `高级资深干员`。
:::
::::
- `RecruitResult`
公招识别结果
```json
// 对应的 details 字段举例
{
"tags": [
// 所有识别到的 tags目前来说一定是 5 个
"削弱",
"减速",
"术师干员",
"辅助干员",
"近战位"
],
"level": 4, // 总的星级
"result": [
{
"tags": ["削弱"],
"level": 4, // 这组 tags 的星级
"opers": [
{
"name": "初雪",
"level": 5 // 干员星级
},
{
"name": "陨星",
"level": 5
},
{
"name": "槐琥",
"level": 5
},
{
"name": "夜烟",
"level": 4
},
{
"name": "流星",
"level": 4
}
]
},
{
"tags": ["减速", "术师干员"],
"level": 4,
"opers": [
{
"name": "夜魔",
"level": 5
},
{
"name": "格雷伊",
"level": 4
}
]
},
{
"tags": ["削弱", "术师干员"],
"level": 4,
"opers": [
{
"name": "夜烟",
"level": 4
}
]
}
]
}
```
公招识别结果。`details` 字段结构如下:
- `tags` (array, required): 所有识别到的 tags目前固定为 5 个。
- `level` (number, required): 组合的最高星级。
- `result` (array, required): 具体的组合结果,数组每一项包含:
- `tags` (array, required): 参与组合的 tags。
- `level` (number, required): 这组 tags 的星级。
- `opers` (array, required): 可能招募到的干员,数组每一项包含:
- `name` (string, required): 干员名称。
- `level` (number, required): 干员星级。
- `RecruitTagsRefreshed`
公招刷新了 Tags
公招刷新了 Tags。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"count": 1, // 当前槽位已刷新次数
"refresh_limit": 3 // 当前槽位刷新次数上限
}
```
:::: field-group
::: field name="count" type="number" required
当前槽位已刷新次数。
:::
::: field name="refresh_limit" type="number" required
当前槽位刷新次数上限。
:::
::::
- `RecruitNoPermit`
公招无招聘许可
公招无招聘许可。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"continue": true // 是否继续刷新
}
```
:::: field-group
::: field name="continue" type="boolean" required
是否继续刷新。
:::
::::
- `RecruitTagsSelected`
公招选择了 Tags
公招选择了 Tags。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"tags": ["减速", "术师干员"]
}
```
:::: field-group
::: field name="tags" type="array<string>" required
选择的 Tag 列表。
:::
::::
- `RecruitSlotCompleted`
当前公招槽位任务完成
当前公招槽位任务完成。`details` 字段为空。
- `RecruitError`
公招识别错误
公招识别错误。`details` 字段为空。
- `EnterFacility`
基建进入了设施
基建进入了设施。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"facility": "Mfg", // 设施名
"index": 0 // 设施序号
}
```
:::: field-group
::: field name="facility" type="string" required
设施名。
:::
::: field name="index" type="number" required
设施序号。
:::
::::
- `NotEnoughStaff`
基建可用干员不足
基建可用干员不足。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"facility": "Mfg", // 设施名
"index": 0 // 设施序号
}
```
:::: field-group
::: field name="facility" type="string" required
设施名。
:::
::: field name="index" type="number" required
设施序号。
:::
::::
- `ProductOfFacility`
基建产物
基建产物。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"product": "Money", // 产物名
"facility": "Mfg", // 设施名
"index": 0 // 设施序号
}
```
:::: field-group
::: field name="product" type="string" required
产物名。
:::
::: field name="facility" type="string" required
设施名。
:::
::: field name="index" type="number" required
设施序号。
:::
::::
- `StageInfo`
自动作战关卡信息
自动作战关卡信息。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"name": string // 关卡名
}
```
:::: field-group
::: field name="name" type="string" required
关卡名。
:::
::::
- `StageInfoError`
自动作战关卡识别错误
自动作战关卡识别错误。`details` 字段为空。
- `PenguinId`
企鹅物流 ID
企鹅物流 ID。`details` 字段内容如下:
```json
// 对应的 details 字段举例
{
"id": string
}
```
:::: field-group
::: field name="id" type="string" required
企鹅物流 ID。
:::
::::
- `Depot`
仓库识别结果
```json
// 对应的 details 字段举例
"done": bool, // 是否已经识别完了,为 false 表示仍在识别中(过程中的数据)
"arkplanner": { // https://penguin-stats.cn/planner
"object": {
"items": [
{
"id": "2004",
"have": 4,
"name": "高级作战记录"
},
{
"id": "mod_unlock_token",
"have": 25,
"name": "模组数据块"
},
{
"id": "2003",
"have": 20,
"name": "中级作战记录"
}
],
"@type": "@penguin-statistics/depot"
},
"data": "{\"@type\":\"@penguin-statistics/depot\",\"items\":[{\"id\":\"2004\",\"have\":4,\"name\":\"高级作战记录\"},{\"id\":\"mod_unlock_token\",\"have\":25,\"name\":\"模组数据块\"},{\"id\":\"2003\",\"have\":20,\"name\":\"中级作战记录\"}]}"
},
"lolicon": { // https://arkntools.app/#/material
"object": {
"2004" : 4,
"mod_unlock_token": 25,
"2003": 20
},
"data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}"
}
// 目前只支持 ArkPlanner 和 Lolicon (Arkntools) 的格式,以后可能会兼容更多网站
```
仓库识别结果。`details` 字段结构如下:
- `done` (boolean, required): 是否已经识别完了,为 `false` 表示仍在识别中(过程中的数据)。
- `arkplanner` (object, required): [ArkPlanner](https://penguin-stats.cn/planner) 格式的数据。
- `lolicon` (object, required): [lolicon](https://arkntools.app/#/material) (Arkntools) 格式的数据。
- `OperBox`
干员识别结果
```json
// 对应的 details 字段举例
"done": bool, // 是否已经识别完了,为 false 表示仍在识别中(过程中的数据)
"all_oper": [
{
"id": "char_002_amiya",
"name": "阿米娅",
"own": true,
"rarity": 5
},
{
"id": "char_003_kalts",
"name": "凯尔希",
"own": true,
"rarity": 6
},
{
"id": "char_1020_reed2",
"name": "焰影苇草",
"own": false,
"rarity": 6
},
]
"own_opers": [
{
"id": "char_002_amiya", // 干员id
"name": "阿米娅", // 干员名称
"own": true, // 是否拥有
"elite": 2, // 精英度 0,1,2
"level": 50, // 干员等级
"potential": 6, // 干员潜能 [1, 6]
"rarity": 5 // 干员稀有度 [1, 6]
},
{
"id": "char_003_kalts",
"name": "凯尔希",
"own": true,
"elite": 2,
"level": 50,
"potential": 1,
"rarity": 6
}
]
```
干员识别结果。`details` 字段结构如下:
- `done` (boolean, required): 是否已经识别完了,为 `false` 表示仍在识别中(过程中的数据)。
- `all_oper` (array, required): 全干员列表,数组每一项包含:
- `id` (string, required): 干员 ID。
- `name` (string, required): 干员名称。
- `own` (boolean, required): 是否拥有。
- `rarity` (number, required): 干员稀有度 [1, 6]。
- `own_opers` (array, required): 已拥有干员的详细信息列表,数组每一项包含:
- `id` (string, required): 干员 ID。
- `name` (string, required): 干员名称。
- `own` (boolean, required): 是否拥有。
- `elite` (number, required): 精英等级 [0, 2]。
- `level` (number, required): 干员等级。
- `potential` (number, required): 干员潜能 [1, 6]。
- `rarity` (number, required): 干员稀有度 [1, 6]。
- `UnsupportedLevel`
自动抄作业,不支持的关卡名
自动抄作业,不支持的关卡名。`details` 字段为空。
### ReportRequest
该字段主要用于核心模块向 UI 层传递网络请求信息UI 负责执行具体的 HTTP 上报操作。
```json
{
"url": "string", // 请求的完整URL比如:https://penguin-stats.io/PenguinStats/api/v2/report
"headers": { // 请求头键值对(不包含 Content-TypeUI 层自行添加)
"authorization": "PenguinID 1234567890",
"User-Agent": "MaaAssistantArknights/1.2.3 cpr/4.5.6"
},
"body": "string", // 请求体内容(通常是 JSON 格式的字符串)
"subtask": "string" // 子任务名称,标识具体上报任务,如 "ReportToPenguinStats"、"ReportToYituliu"
}
```
:::: field-group
::: field name="url" type="string" required
请求的完整 URL例如 `https://penguin-stats.io/PenguinStats/api/v2/report`。
:::
::: field name="headers" type="object" required
请求头键值对(不包含 `Content-Type`UI 层自行添加)。
:::
::: field name="body" type="string" required
请求体内容(通常是 JSON 格式的字符串)。
:::
::: field name="subtask" type="string" required
子任务名称,标识具体上报任务,如 `ReportToPenguinStats`、`ReportToYituliu`。
:::
::::

View File

@@ -27,398 +27,615 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha
#### 参数说明
- `AsstHandle handle`
实例句柄
- `const char* type`
任务类型
- `const char* params`
任务参数json string
:::: field-group
::: field name="handle" type="AsstHandle" required
实例句柄
:::
::: field name="type" type="const char*" required
任务类型
:::
::: field name="params" type="const char*" required
任务参数json string
:::
::::
##### 任务类型一览
- `StartUp`
开始唤醒
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"client_type": string, // 客户端版本,必选
// 选项:"Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
"start_game_enabled": bool, // 是否自动启动客户端,可选,默认不启动
"account_name": string // 切换账号,可选,默认不切换
// 仅支持切换至已登录的账号,使用登录名进行查找,保证输入内容在所有已登录账号唯一即可
// 官服123****4567可输入 123****4567、4567、123、3****4567
// B服张三可输入 张三、张、三
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="client_type" type="string" required
客户端版本。
<br>
选项:`Official` | `Bilibili` | `txwy` | `YoStarEN` | `YoStarJP` | `YoStarKR`
:::
::: field name="start_game_enabled" type="boolean" optional default="false"
是否自动启动客户端。
:::
::: field name="account_name" type="string" optional
切换账号,默认不切换。
<br>
仅支持切换至已登录的账号,使用登录名进行查找,保证输入内容在所有已登录账号唯一即可。
<br>
官服:`123****4567`,可输入 `123****4567``4567``123``3****4567`
<br>
B服`张三`,可输入 `张三``张``三`
:::
::::
- `CloseDown`
关闭游戏
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,预设为 true
"client_type": string, // 客户端版本,必选,填空则不执行
// 选项:"Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="client_type" type="string" required
客户端版本,填空则不执行。
<br>
选项:`Official` | `Bilibili` | `txwy` | `YoStarEN` | `YoStarJP` | `YoStarKR`
:::
::::
- `Fight`
刷理智
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"stage": string, // 关卡名,可选,默认为空,识别当前/上次的关卡。不支持运行中设置
// 支持全部主线关卡,如 "1-7"、"S3-2"等
// 可在关卡结尾输入Normal/Hard表示需要切换标准与磨难难度
// 剿灭作战,必须输入 "Annihilation"
// 当期 SS 活动 后三关,必须输入完整关卡编号
"medicine": int, // 最大使用理智药数量,可选,默认 0
"expiring_medicine": int, // 最大使用 48 小时内过期理智药数量,可选,默认 0
"stone": int, // 最大吃石头数量,可选,默认 0
"times": int, // 战斗次数可选默认int32.max
"series": int, // 连战次数, 可选, -1~6
// -1 为禁用切换
// 0 为自动切换为当前可用的最大次数, 如当前理智不够6次, 则选择最低可用次数
// 1~6 为指定连战次数
"drops": { // 指定掉落数量,可选,默认不指定
"30011": int, // key - item_id, value 数量. key 可参考 resource/item_index.json 文件
"30062": int // 是或的关系
},
/* 以上全部是或的关系,即任一达到即停止任务 */
"report_to_penguin": bool, // 是否汇报企鹅数据,可选,默认 false
"penguin_id": string, // 企鹅数据汇报 id, 可选,默认为空。仅在 report_to_penguin 为 true 时有效
"server": string, // 服务器,可选,默认 "CN", 会影响掉落识别及上传
// 选项:"CN" | "US" | "JP" | "KR"
"client_type": string, // 客户端版本,可选,默认为空。用于游戏崩溃时重启并连回去继续刷,若为空则不启用该功能
// 选项:"Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
"DrGrandet": bool, // 节省理智碎石模式,可选,默认 false仅在可能产生碎石效果时生效。
// 在碎石确认界面等待,直到当前的 1 点理智恢复完成后再立刻碎石
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="stage" type="string" optional
关卡名,默认为空,识别当前/上次的关卡。不支持运行中设置。
<br>
支持全部主线关卡,如 `"1-7"``"S3-2"`等。
<br>
可在关卡结尾输入`Normal`/`Hard`表示需要切换标准与磨难难度。
<br>
剿灭作战,必须输入 `"Annihilation"`
<br>
当期 SS 活动 后三关,必须输入完整关卡编号。
:::
::: field name="medicine" type="number" optional default="0"
最大使用理智药数量。
:::
::: field name="expiring_medicine" type="number" optional default="0"
最大使用 48 小时内过期理智药数量。
:::
::: field name="stone" type="number" optional default="0"
最大吃石头数量。
:::
::: field name="times" type="number" optional default="2147483647"
战斗次数。
:::
::: field name="series" type="number" optional
连战次数, -1~6。
<br>
`-1` 为禁用切换。
<br>
`0` 为自动切换为当前可用的最大次数, 如当前理智不够6次, 则选择最低可用次数。
<br>
`1~6` 为指定连战次数。
:::
::: field name="drops" type="object" optional
指定掉落数量默认不指定。key 为 item_id, value 为数量。key 可参考 `resource/item_index.json` 文件。
<br>
例如: `{ "30011": 10, "30062": 5 }`
<br>
以上全部是或的关系,即任一达到即停止任务。
:::
::: field name="report_to_penguin" type="boolean" optional default="false"
是否汇报企鹅数据。
:::
::: field name="penguin_id" type="string" optional
企鹅数据汇报 id, 默认为空。仅在 `report_to_penguin` 为 true 时有效。
:::
::: field name="server" type="string" optional default="CN"
服务器,会影响掉落识别及上传。
<br>
选项:`CN` | `US` | `JP` | `KR`
:::
::: field name="client_type" type="string" optional
客户端版本,默认为空。用于游戏崩溃时重启并连回去继续刷,若为空则不启用该功能。
<br>
选项:`Official` | `Bilibili` | `txwy` | `YoStarEN` | `YoStarJP` | `YoStarKR`
:::
::: field name="DrGrandet" type="boolean" optional default="false"
节省理智碎石模式,仅在可能产生碎石效果时生效。
<br>
在碎石确认界面等待,直到当前的 1 点理智恢复完成后再立刻碎石。
:::
::::
另支持少部分资源关卡名请参考[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/tools/AutoLocalization/example/zh-cn.xaml#L260)
- `Recruit`
公开招募
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"refresh": bool, // 是否刷新三星 Tags, 可选,默认 false
"select": [ // 会去点击标签的 Tag 等级,必选
int,
...
],
"confirm": [ // 会去点击确认的 Tag 等级,必选。若仅公招计算,可设置为空数组
int,
...
],
"first_tags": [ // 首选 Tags仅在 Tag 等级为 3 时有效。可选,默认为空
string, // 当 Tag 等级为 3 时,会尽可能多地选择这里的 Tags如果有
... // 而且是强制选择,也就是会忽略所有“让 3 星 Tag 不被选择”的设置
],
"extra_tags_mode": int, // 选择更多的 Tags, 可选, 默认为 0
// 0 - 默认行为
// 1 - 选 3 个 Tags, 即使可能冲突
// 2 - 如果可能, 同时选择更多的高星 Tag 组合, 即使可能冲突
"times": int, // 招募多少次,可选,默认 0。若仅公招计算可设置为 0
"set_time": bool, // 是否设置招募时限。仅在 times 为 0 时生效,可选,默认 true
"expedite": bool, // 是否使用加急许可,可选,默认 false
"expedite_times": int, // 加急次数,仅在 expedite 为 true 时有效。
// 可选,默认无限使用(直到 times 达到上限)
"skip_robot": bool, // 是否在识别到小车词条时跳过,可选,默认跳过
"recruitment_time": { // Tag 等级(大于等于 3和对应的希望招募时限单位为分钟默认值都为 540即 09:00:00
"3": int,
"4": int,
...
},
"report_to_penguin": bool, // 是否汇报企鹅数据,可选,默认 false
"penguin_id": string, // 企鹅数据汇报 id, 可选,默认为空。仅在 report_to_penguin 为 true 时有效
"report_to_yituliu": bool, // 是否汇报一图流数据,可选,默认 false
"yituliu_id": string, // 一图流汇报 id, 可选,默认为空。仅在 report_to_yituliu 为 true 时有效
"server": string, // 服务器,可选,默认 "CN", 会影响上传
// 选项:"CN" | "US" | "JP" | "KR"
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="refresh" type="boolean" optional default="false"
是否刷新三星 Tags。
:::
::: field name="select" type="array<number>" required
会去点击标签的 Tag 等级。
:::
::: field name="confirm" type="array<number>" required
会去点击确认的 Tag 等级。若仅公招计算,可设置为空数组。
:::
::: field name="first_tags" type="array<string>" optional
首选 Tags仅在 Tag 等级为 3 时有效。默认为空。
<br>
当 Tag 等级为 3 时,会尽可能多地选择这里的 Tags如果有而且是强制选择也就是会忽略所有“让 3 星 Tag 不被选择”的设置。
:::
::: field name="extra_tags_mode" type="number" optional default="0"
选择更多的 Tags。
<br>
`0` - 默认行为
<br>
`1` - 选 3 个 Tags, 即使可能冲突
<br>
`2` - 如果可能, 同时选择更多的高星 Tag 组合, 即使可能冲突
:::
::: field name="times" type="number" optional default="0"
招募多少次。若仅公招计算,可设置为 0。
:::
::: field name="set_time" type="boolean" optional default="true"
是否设置招募时限。仅在 `times` 为 0 时生效。
:::
::: field name="expedite" type="boolean" optional default="false"
是否使用加急许可。
:::
::: field name="expedite_times" type="number" optional
加急次数,仅在 `expedite` 为 true 时有效。默认无限使用(直到 `times` 达到上限)。
:::
::: field name="skip_robot" type="boolean" optional default="true"
是否在识别到小车词条时跳过。
:::
::: field name="recruitment_time" type="object" optional
Tag 等级(大于等于 3和对应的希望招募时限单位为分钟默认值都为 540即 09:00:00
<br>
例如: `{ "3": 540, "4": 540 }`
:::
::: field name="report_to_penguin" type="boolean" optional default="false"
是否汇报企鹅数据。
:::
::: field name="penguin_id" type="string" optional
企鹅数据汇报 id, 默认为空。仅在 `report_to_penguin` 为 true 时有效。
:::
::: field name="report_to_yituliu" type="boolean" optional default="false"
是否汇报一图流数据。
:::
::: field name="yituliu_id" type="string" optional
一图流汇报 id, 默认为空。仅在 `report_to_yituliu` 为 true 时有效。
:::
::: field name="server" type="string" optional default="CN"
服务器,会影响上传。
<br>
选项:`CN` | `US` | `JP` | `KR`
:::
::::
- `Infrast`
基建换班
```json5
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"mode": int, // 换班工作模式,可选,默认 0 (Default)
// 0 - Default: 默认换班模式,单设施最优解
// 10000 - Custom: 自定义换班模式,读取用户配置,可参考 protocol/base-scheduling-schema.md
// 20000 - Rotation: 一键轮换模式,会跳过控制中枢、发电站、宿舍以及办公室,其余设施不进行换班但保留基本操作(如使用无人机、会客室逻辑)
"facility": [ // 要换班的设施(有序),必选。不支持运行中设置
string, // 设施名,"Mfg" | "Trade" | "Power" | "Control" | "Reception" | "Office" | "Dorm" | "Processing" | "Training"
...
],
"drones": string, // 无人机用途,可选项,默认 _NotUse
// mode = 10000 时该字段无效(会被忽略)
// "_NotUse"、"Money"、"SyntheticJade"、"CombatRecord"、"PureGold"、"OriginStone"、"Chip"
"threshold": float, // 工作心情阈值,可选,取值范围 [0, 1.0],默认 0.3
// mode = 10000 时该字段仅针对 "autofill" 有效
// mode = 20000 时该字段无效(会被忽略)
"replenish": bool, // 贸易站“源石碎片”是否自动补货,可选,默认 false
"dorm_notstationed_enabled": bool, // 是否启用宿舍“未进驻”选项,可选,默认 false
"dorm_trust_enabled": bool, // 是否将宿舍剩余位置填入信赖未满干员,可选,默认 false
"reception_message_board": bool, // 是否领取会客室信息板信用,可选,默认 true
"reception_clue_exchange": bool, // 是否进行线索交流,可选,默认 true
/* 以下参数仅在 mode = 10000 时生效,否则会被忽略 */
"filename": string, // 自定义配置路径,必选。不支持运行中设置
"plan_index": int, // 使用配置中的方案序号,必选。不支持运行中设置
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="mode" type="number" optional default="0"
换班工作模式。
<br>
`0` - `Default`: 默认换班模式,单设施最优解。
<br>
`10000` - `Custom`: 自定义换班模式,读取用户配置,可参考 [基建排班协议](./base-scheduling-schema.md)。
<br>
`20000` - `Rotation`: 一键轮换模式,会跳过控制中枢、发电站、宿舍以及办公室,其余设施不进行换班但保留基本操作(如使用无人机、会客室逻辑)。
:::
::: field name="facility" type="array<string>" required
要换班的设施(有序)。不支持运行中设置。
<br>
设施名:`Mfg` | `Trade` | `Power` | `Control` | `Reception` | `Office` | `Dorm` | `Processing` | `Training`
:::
::: field name="drones" type="string" optional default="_NotUse"
无人机用途。`mode = 10000` 时该字段无效。
<br>
选项:`_NotUse` | `Money` | `SyntheticJade` | `CombatRecord` | `PureGold` | `OriginStone` | `Chip`
:::
::: field name="threshold" type="number" optional default="0.3"
工作心情阈值,取值范围 [0, 1.0]。
<br>
`mode = 10000` 时该字段仅针对 "autofill" 有效。
<br>
`mode = 20000` 时该字段无效。
:::
::: field name="replenish" type="boolean" optional default="false"
贸易站“源石碎片”是否自动补货。
:::
::: field name="dorm_notstationed_enabled" type="boolean" optional default="false"
是否启用宿舍“未进驻”选项。
:::
::: field name="dorm_trust_enabled" type="boolean" optional default="false"
是否将宿舍剩余位置填入信赖未满干员。
:::
::: field name="reception_message_board" type="boolean" optional default="true"
是否领取会客室信息板信用。
:::
::: field name="reception_clue_exchange" type="boolean" optional default="true"
是否进行线索交流。
:::
::: field name="filename" type="string" required
自定义配置路径。不支持运行中设置。
<br>
<Badge type="warning" text="仅在 mode = 10000 时生效" />
:::
::: field name="plan_index" type="number" required
使用配置中的方案序号。不支持运行中设置。
<br>
<Badge type="warning" text="仅在 mode = 10000 时生效" />
:::
::::
- `Mall`
领取信用及商店购物。
会先有序的按 `buy_first` 购买一遍,再从左到右并避开 `blacklist` 购买第二遍,在信用溢出时则会无视黑名单从左到右购买第三遍直到不再溢出
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认值 true
"visit_friends": bool, // 是否访问好友基建以获得信用,可选,默认值 true
"shopping": bool, // 是否购物,可选,默认值 true
"buy_first": [ // 优先购买列表,可选,默认值 []
string, // 商品名,如 "招聘许可"、"龙门币" 等
...
],
"blacklist": [ // 购物黑名单列表,可选,默认值 []
string, // 商品名,如 "加急许可"、"家具零件"
...
],
"force_shopping_if_credit_full": bool, // 是否在信用溢出时无视黑名单,可选,默认值 false
"only_buy_discount": bool, // 是否只购买折扣物品,只作用于第二轮购买,可选,默认值 false
"reserve_max_credit": bool, // 是否在信用点低于 300 时停止购买,只作用于第二轮购买,可选,默认值 false
"credit_fight": bool, // 是否借助战打一局 OF-1 关卡以便在第二天获得更多信用,可选,默认值 false
"formation_index": int // 打 OF-1 时所使用的编队栏位的编号,可选,默认值 0
// 为 04 的整数,其中 0 表示选择当前编队1-4 分别表示第一、二、三、四编队
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="visit_friends" type="boolean" optional default="true"
是否访问好友基建以获得信用。
:::
::: field name="shopping" type="boolean" optional default="true"
是否购物。
:::
::: field name="buy_first" type="array<string>" optional default="[]"
优先购买列表。商品名,如 `"招聘许可"``"龙门币"`
:::
::: field name="blacklist" type="array<string>" optional default="[]"
购物黑名单列表。商品名,如 `"加急许可"``"家具零件"` 等。
:::
::: field name="force_shopping_if_credit_full" type="boolean" optional default="false"
是否在信用溢出时无视黑名单。
:::
::: field name="only_buy_discount" type="boolean" optional default="false"
是否只购买折扣物品,只作用于第二轮购买。
:::
::: field name="reserve_max_credit" type="boolean" optional default="false"
是否在信用点低于 300 时停止购买,只作用于第二轮购买。
:::
::: field name="credit_fight" type="boolean" optional default="false"
是否借助战打一局 OF-1 关卡以便在第二天获得更多信用。
:::
::: field name="formation_index" type="number" optional default="0"
打 OF-1 时所使用的编队栏位的编号。
<br>
为 04 的整数,其中 0 表示选择当前编队1-4 分别表示第一、二、三、四编队。
:::
::::
- `Award`
领取各种奖励
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"award": bool, // 领取每日/每周任务奖励,默认为 true
"mail": bool, // 领取所有邮件奖励,默认为 false
"recruit": bool, // 领取限定池子赠送的每日免费单抽,默认为 false
"orundum": bool, // 领取幸运墙的合成玉奖励,默认为 false
"mining": bool, // 领取限时开采许可的合成玉奖励,默认为 false
"specialaccess": bool // 领取五周年赠送的月卡奖励,默认为 false
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="award" type="boolean" optional default="true"
领取每日/每周任务奖励。
:::
::: field name="mail" type="boolean" optional default="false"
领取所有邮件奖励。
:::
::: field name="recruit" type="boolean" optional default="false"
领取限定池子赠送的每日免费单抽。
:::
::: field name="orundum" type="boolean" optional default="false"
领取幸运墙的合成玉奖励。
:::
::: field name="mining" type="boolean" optional default="false"
领取限时开采许可的合成玉奖励。
:::
::: field name="specialaccess" type="boolean" optional default="false"
领取五周年赠送的月卡奖励。
:::
::::
- `Roguelike`
无限刷肉鸽
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认值 true
"theme": string, // 主题,可选,默认值 "Phantom"
// Phantom - 傀影与猩红血钻
// Mizuki - 水月与深蓝之树
// Sami - 探索者的银凇止境
// Sarkaz - 萨卡兹的无终奇语
// JieGarden - 界园
"mode": int, // 模式,可选,默认值 0
// 0 - 刷分/奖励点数,尽可能稳定地打更多层数
// 1 - 刷源石锭,第一层投资完就退出
// 2 - 【已弃用】兼顾模式 0 与 1投资过后再退出没有投资就继续往后打
// 3 - 开发中...
// 4 - 凹开局,先在 0 难度下到达第三层后重开,再到指定难度下凹开局奖励,若不为热水壶或希望则回到 0 难度下重新来过;
// 若在 Phantom 主题下则不切换难度,仅在当前难度下尝试到达第三层、重开、凹开局
// 5 - 刷坍缩范式;仅适用于 Sami 主题;通过战斗漏怪等方式加快坍缩值积累,
// 若遇到的第一个的坍缩范式在 expected_collapsal_paradigms 列表中则停止任务,否则重开
// 6 - 刷月度小队蚊子腿除了针对模式的适配以外和模式0相同
// 7 - 刷深入调查蚊子腿除了针对模式的适配以外和模式0相同
"squad": string, // 开局分队名,可选,默认值 "指挥分队"
"roles": string, // 开局职业组,可选,默认值 "取长补短"
"core_char": string, // 开局干员名,可选;仅支持单个干员**中文名**,无论区服;若留空或设置为空字符串 "" 则根据练度自动选择
"use_support": bool, // 开局干员是否为助战干员,可选,默认值 false
"use_nonfriend_support": bool, // 是否可以是非好友助战干员,可选,默认值 false仅在 use_support 为 true 时有效
"starts_count": int, // 开始探索的次数,可选,默认值 INT_MAX达到后自动停止任务
"difficulty": int, // 指定难度等级,可选,默认值 0仅适用于**除 Phantom 以外**的主题;
// 若未解锁难度,则会选择当前已解锁的最高难度
"stop_at_final_boss": bool, // 是否在第 5 层险路恶敌节点前停止任务,可选,默认值 false仅适用于**除 Phantom 以外**的主题
"stop_at_max_level": bool, // 是否在肉鸽等级刷满后停止任务,可选,默认值 false
"investment_enabled": bool, // 是否投资源石锭,可选,默认值 true
"investments_count": int, // 投资源石锭的次数,可选,默认值 INT_MAX达到后自动停止任务
"stop_when_investment_full": bool, // 是否在投资到达上限后自动停止任务,可选,默认值 false
"investment_with_more_score": bool, // 是否在投资后尝试购物,可选,默认值 false仅适用于模式 1
"start_with_elite_two": bool, // 是否在凹开局的同时凹干员精二直升,可选,默认值 false仅适用于模式 4
"only_start_with_elite_two": bool, // 是否只凹开局干员精二直升而忽视其他开局条件,可选,默认值 false
// 仅在模式为 4 且 start_with_elite_two 为 true 时有效
"refresh_trader_with_dice": bool, // 是否用骰子刷新商店购买特殊商品,可选,默认值 false仅适用于 Mizuki 主题,用于刷指路鳞
"first_floor_foldartal": string, // 希望在第一层远见阶段得到的密文版,可选;仅适用于 Sami 主题,不限模式;若成功凹到则停止任务
"start_foldartal_list": [ // 凹开局时希望在开局奖励阶段得到的密文板,可选,默认值 [];仅在主题为 Sami 且模式为 4 时有效;
string, // 仅当开局拥有列表中所有的密文板时才算凹开局成功;
... // 注意,此参数须与 “生活至上分队” 同时使用,其他分队在开局奖励阶段不会获得密文板;
],
"collectible_mode_start_list": { // 凹开局时期望的奖励,可选,默认全为 false仅在模式为 4 时有效
"hot_water": bool, // 热水壶奖励,常用于触发烧水机制(通用)
"shield": bool, // 护盾奖励,约等于额外生命值(通用)
"ingot": bool, // 源石锭奖励(通用)
"hope": bool, // 希望奖励通用注意JieGarden 主题下无 hope 奖励)
"random": bool, // 随机奖励选项:游戏中指“消耗所有源石锭换一个随机收藏品”(通用)
"key": bool, // 钥匙奖励,仅在 Mizuki 主题时有效
"dice": bool, // 骰子奖励,仅在 Mizuki 主题时有效
"ideas": bool, // 2 构想奖励,仅在 Sarkaz 主题时有效
},
"use_foldartal": bool, // 是否使用密文板,模式 5 下默认值 false其他模式下默认值 true仅适用于 Sami 主题
"check_collapsal_paradigms": bool, // 是否检测获取的坍缩范式,模式 5 下默认值 true其他模式下默认值 false
"double_check_collapsal_paradigms": bool, // 是否执行坍缩范式检测防漏措施,模式 5 下默认值 true其他模式下默认值 false
// 仅在主题为 Sami 且 check_collapsal_paradigms 为 true 时有效
"expected_collapsal_paradigms": [ // 希望触发的坍缩范式,默认值 ["目空一些, "睁眼瞎", "图像损坏", "一抹黑"]
string, // 仅在主题为 Sami 且模式为 5 时有效
...
],
"monthly_squad_auto_iterate": bool, //是否启动月度小队自动切换
"monthly_squad_check_comms": bool, //是否将月度小队通信也作为切换依据
"deep_exploration_auto_iterate": bool, //是否启动深入调查自动切换
"collectible_mode_shopping": bool, // 烧水是否启用购物, 默认值false
"collectible_mode_squad": string, // 烧水时使用的分队, 默认与squad同步, 当squad为空字符串且未指定collectible_mode_squad值时为指挥分队
"collectible_mode_start_list": { // 烧水期望奖励, 默认全false, 键范围:
"hot_water": bool, // [hot_water: 热水, shield: 盾, ingot: 源石锭, hope: 希望, random: 随机奖励, key: 钥匙, dice: 骰子, ideas: 构想]
...
},
"start_with_seed": bool, // 使用种子刷钱true 时有效
// 仅在 Sarkaz 主题Investment 模式,“点刺成锭分队” or “后勤分队” 时可能为 true
// 使用固定种子
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="theme" type="string" optional default="Phantom"
主题。
<br>
`Phantom` - 傀影与猩红血钻
<br>
`Mizuki` - 水月与深蓝之树
<br>
`Sami` - 探索者的银凇止境
<br>
`Sarkaz` - 萨卡兹的无终奇语
<br>
`JieGarden` - 界园
:::
::: field name="mode" type="number" optional default="0"
模式。
<br>
`0` - 刷分/奖励点数,尽可能稳定地打更多层数。
<br>
`1` - 刷源石锭,第一层投资完就退出。
<br>
`2` - <Badge type="danger" text="已弃用" /> 兼顾模式 0 与 1投资过后再退出没有投资就继续往后打。
<br>
`3` - 开发中...
<br>
`4` - 凹开局,先在 0 难度下到达第三层后重开,再到指定难度下凹开局奖励,若不为热水壶或希望则回到 0 难度下重新来过;若在 Phantom 主题下则不切换难度,仅在当前难度下尝试到达第三层、重开、凹开局。
<br>
`5` - 刷坍缩范式;仅适用于 Sami 主题;通过战斗漏怪等方式加快坍缩值积累,若遇到的第一个的坍缩范式在 `expected_collapsal_paradigms` 列表中则停止任务,否则重开。
<br>
`6` - 刷月度小队蚊子腿除了针对模式的适配以外和模式0相同。
<br>
`7` - 刷深入调查蚊子腿除了针对模式的适配以外和模式0相同。
:::
::: field name="squad" type="string" optional default="指挥分队"
开局分队名。
:::
::: field name="roles" type="string" optional default="取长补短"
开局职业组。
:::
::: field name="core_char" type="string" optional
开局干员名。仅支持单个干员**中文名**,无论区服;若留空或设置为空字符串 `""` 则根据练度自动选择。
:::
::: field name="use_support" type="boolean" optional default="false"
开局干员是否为助战干员。
:::
::: field name="use_nonfriend_support" type="boolean" optional default="false"
是否可以是非好友助战干员。仅在 `use_support` 为 true 时有效。
:::
::: field name="starts_count" type="number" optional default="2147483647"
开始探索的次数。达到后自动停止任务。
:::
::: field name="difficulty" type="number" optional default="0"
指定难度等级。仅适用于**除 Phantom 以外**的主题。若未解锁难度,则会选择当前已解锁的最高难度。
:::
::: field name="stop_at_final_boss" type="boolean" optional default="false"
是否在第 5 层险路恶敌节点前停止任务。仅适用于**除 Phantom 以外**的主题。
:::
::: field name="stop_at_max_level" type="boolean" optional default="false"
是否在肉鸽等级刷满后停止任务。
:::
::: field name="investment_enabled" type="boolean" optional default="true"
是否投资源石锭。
:::
::: field name="investments_count" type="number" optional default="2147483647"
投资源石锭的次数。达到后自动停止任务。
:::
::: field name="stop_when_investment_full" type="boolean" optional default="false"
是否在投资到达上限后自动停止任务。
:::
::: field name="investment_with_more_score" type="boolean" optional default="false"
是否在投资后尝试购物。仅适用于模式 1。
:::
::: field name="start_with_elite_two" type="boolean" optional default="false"
是否在凹开局的同时凹干员精二直升。仅适用于模式 4。
:::
::: field name="only_start_with_elite_two" type="boolean" optional default="false"
是否只凹开局干员精二直升而忽视其他开局条件。仅在模式为 4 且 `start_with_elite_two` 为 true 时有效。
:::
::: field name="refresh_trader_with_dice" type="boolean" optional default="false"
是否用骰子刷新商店购买特殊商品。仅适用于 Mizuki 主题,用于刷指路鳞。
:::
::: field name="first_floor_foldartal" type="string" optional
希望在第一层远见阶段得到的密文版。仅适用于 Sami 主题,不限模式;若成功凹到则停止任务。
:::
::: field name="start_foldartal_list" type="array<string>" optional default="[]"
凹开局时希望在开局奖励阶段得到的密文板。仅在主题为 Sami 且模式为 4 时有效。
<br>
仅当开局拥有列表中所有的密文板时才算凹开局成功。
<br>
注意,此参数须与 “生活至上分队” 同时使用,其他分队在开局奖励阶段不会获得密文板。
:::
::: field name="collectible_mode_start_list" type="object" optional
凹开局时期望的奖励,默认全为 false。仅在模式为 4 时有效。
<br>
`hot_water`: 热水壶奖励,常用于触发烧水机制(通用)。
<br>
`shield`: 护盾奖励,约等于额外生命值(通用)。
<br>
`ingot`: 源石锭奖励(通用)。
<br>
`hope`: 希望奖励通用注意JieGarden 主题下无 hope 奖励)。
<br>
`random`: 随机奖励选项:游戏中指“消耗所有源石锭换一个随机收藏品”(通用)。
<br>
`key`: 钥匙奖励,仅在 Mizuki 主题时有效。
<br>
`dice`: 骰子奖励,仅在 Mizuki 主题时有效。
<br>
`ideas`: 2 构想奖励,仅在 Sarkaz 主题时有效。
:::
::: field name="use_foldartal" type="boolean" optional
是否使用密文板。模式 5 下默认值 `false`,其他模式下默认值 `true`。仅适用于 Sami 主题。
:::
::: field name="check_collapsal_paradigms" type="boolean" optional
是否检测获取的坍缩范式。模式 5 下默认值 `true`,其他模式下默认值 `false`
:::
::: field name="double_check_collapsal_paradigms" type="boolean" optional default="true"
是否执行坍缩范式检测防漏措施。仅在主题为 Sami 且 `check_collapsal_paradigms` 为 true 时有效。模式 5 下默认值 `true`,其他模式下默认值 `false`
:::
::: field name="expected_collapsal_paradigms" type="array<string>" optional default="['目空一些', '睁眼瞎', '图像损坏', '一抹黑']"
希望触发的坍缩范式。仅在主题为 Sami 且模式为 5 时有效。
:::
::: field name="monthly_squad_auto_iterate" type="boolean" optional
是否启动月度小队自动切换。
:::
::: field name="monthly_squad_check_comms" type="boolean" optional
是否将月度小队通信也作为切换依据。
:::
::: field name="deep_exploration_auto_iterate" type="boolean" optional
是否启动深入调查自动切换。
:::
::: field name="collectible_mode_shopping" type="boolean" optional default="false"
烧水是否启用购物。
:::
::: field name="collectible_mode_squad" type="string" optional
烧水时使用的分队, 默认与squad同步, 当squad为空字符串且未指定collectible_mode_squad值时为指挥分队。
:::
::: field name="start_with_seed" type="boolean" optional default="false"
使用种子刷钱。
<br>
仅在 Sarkaz 主题Investment 模式,“点刺成锭分队” or “后勤分队” 时可能为 true。
<br>
使用固定种子。
:::
::::
刷坍缩范式功能具体请参考 [肉鸽辅助协议](./integrated-strategy-schema.md#萨米肉鸽——坍缩范式)
- `Copilot`
自动抄作业
```json5
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"filename": string, // 作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置
"formation": bool // 是否进行 “快捷编队”,可选,默认否。不支持运行期设置
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="filename" type="string" required
作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置。
:::
::: field name="formation" type="boolean" optional default="false"
是否进行 “快捷编队”。不支持运行期设置。
:::
::::
作业 JSON 请参考 [战斗流程协议](./copilot-schema.md)
- `SSSCopilot`
自动抄保全作业
```json5
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"filename": string, // 作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置
"loop_times": int // 循环执行次数
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="filename" type="string" required
作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置。
:::
::: field name="loop_times" type="number" optional
循环执行次数。
:::
::::
保全作业 JSON 请参考 [保全派驻协议](./sss-schema.md)
- `Depot`
仓库识别
```json5
// 对应的任务参数
{
"enable": bool // 是否启用本任务,可选,默认为 true
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::::
- `OperBox`
干员 box 识别
```json5
// 对应的任务参数
{
"enable": bool // 是否启用本任务,可选,默认为 true
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::::
- `Reclamation`
生息演算
```json5
{
"enable": bool,
"theme": string, // 主题,可选项。默认为 1
// Fire - *沙中之火*
// Tales - *沙洲遗闻*
"mode": int, // 模式,可选项。默认为 0
// 0 - 刷分与建造点,进入战斗直接退出
// 1 - 沙中之火:刷赤金,联络员买水后基地锻造;
// 沙洲遗闻:自动制造物品并读档刷货币
"tools_to_craft": [
string, // 自动制造的物品,可选项,默认为荧光棒
...
]
// 建议填写子串
"increment_mode": int, // 点击类型可选项。默认为0
// 0 - 连点
// 1 - 长按
"num_craft_batches": int // 单次最大制造轮数,可选。默认为 16
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="theme" type="string" optional default="Fire"
主题。
<br>
`Fire` - *沙中之火*
<br>
`Tales` - *沙洲遗闻*
:::
::: field name="mode" type="number" optional default="0"
模式。
<br>
`0` - 刷分与建造点,进入战斗直接退出。
<br>
`1` - 沙中之火:刷赤金,联络员买水后基地锻造;沙洲遗闻:自动制造物品并读档刷货币。
:::
::: field name="tools_to_craft" type="array<string>" optional default="['荧光棒']"
自动制造的物品,建议填写子串。
:::
::: field name="increment_mode" type="number" optional default="0"
点击类型。
<br>
`0` - 连点
<br>
`1` - 长按
:::
::: field name="num_craft_batches" type="number" optional default="16"
单次最大制造轮数。
:::
::::
- `Custom`
自定义任务
```json5
{
"enable": bool,
"task_names": [ // 执行数组中第一个匹配上的任务(及后续 next 等)
// 若想执行多个任务,可多次 append Custom task
string,
...
]
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="task_names" type="array<string>" required
执行数组中第一个匹配上的任务(及后续 next 等)。若想执行多个任务,可多次 append Custom task。
:::
::::
- `SingleStep`
单步任务(目前仅支持战斗)
```json5
{
"enable": bool,
"type": string, // 目前仅支持 "copilot"
"subtask": string, // "stage" | "start" | "action"
// "stage" 设置关卡名,需要 "details": { "stage": "xxxx" }
// "start" 开始作战,无 details
// "action": 单步作战操作details 需为作战协议中的单个 action
// 例如:"details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },详情参考 protocol/copilot-schema.md
"details": {
...
}
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="type" type="string" required default="copilot"
目前仅支持 `"copilot"`
:::
::: field name="subtask" type="string" required
子任务类型。
<br>
`stage` - 设置关卡名,需要 `"details": { "stage": "xxxx" }`
<br>
`start` - 开始作战,无 `details`
<br>
`action` - 单步作战操作,`details` 需为作战协议中的单个 action例如`"details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" }`,详情参考 [战斗流程协议](./copilot-schema.md)。
:::
::: field name="details" type="object" optional
子任务的详细参数。
:::
::::
- `VideoRecognition`
视频识别,目前仅支持作业(作战)视频
```json5
{
"enable": bool,
"filename": string, // 视频的文件路径,绝对、相对路径均可。不支持运行期设置
}
```
:::: field-group
::: field name="enable" type="boolean" optional default="true"
是否启用本任务。
:::
::: field name="filename" type="string" required
视频的文件路径,绝对、相对路径均可。不支持运行期设置。
:::
::::
### `AsstSetTaskParams`
@@ -439,13 +656,18 @@ bool ASSTAPI AsstSetTaskParams(AsstHandle handle, AsstTaskId id, const char* par
#### 参数说明
- `AsstHandle handle`
实例句柄
- `AsstTaskId task`
任务 ID, `AsstAppendTask` 接口的返回值
- `const char* params`
任务参数json string `AsstAppendTask` 接口相同。
未标注“不支持运行中设置”的字段都支持实时修改;否则若当前任务正在运行,会忽略对应的字段
:::: field-group
::: field name="handle" type="AsstHandle" required
实例句柄
:::
::: field name="task" type="AsstTaskId" required
任务 ID, `AsstAppendTask` 接口的返回值
:::
::: field name="params" type="const char*" required
任务参数json string`AsstAppendTask` 接口相同。
未标注“不支持运行中设置”的字段都支持实时修改;否则若当前任务正在运行,会忽略对应的字段
:::
::::
### `AsstSetStaticOption`
@@ -466,10 +688,14 @@ bool ASSTAPI AsstSetStaticOption(AsstStaticOptionKey key, const char* value);
#### 参数说明
- `AsstStaticOptionKey key`
- `const char* value`
:::: field-group
::: field name="key" type="AsstStaticOptionKey" required
:::
::: field name="value" type="const char*" required
:::
::::
##### 键值一览
@@ -494,12 +720,17 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
#### 参数说明
- `AsstHandle handle`
实例句柄
- `AsstInstanceOptionKey key`
- `const char* value`
:::: field-group
::: field name="handle" type="AsstHandle" required
实例句柄
:::
::: field name="key" type="AsstInstanceOptionKey" required
:::
::: field name="value" type="const char*" required
:::
::::
##### 键值一览

View File

@@ -186,114 +186,245 @@ JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直
## 特殊任务类型
### Template Task`@` 型任务
### 模板任务
Template task 与 base task 合称**模板任务**
**模板任务**包括派生任务与 `@` 型任务。模板任务的核心可以理解为依据基任务**修改字段的默认值**
允许把某个任务 "A" 当作模板,然后 "B@A" 表示由 "A" 生成的任务。
#### 派生任务
- 如果 `tasks.json` 中未显式定义任务 "B@A",则在 `sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes` 字段中增加 `B@` 前缀(如遇任务名开头为 `#` 则增加 `B` 前缀),其余参数与 "A" 任务相同。就是说如果任务 "A" 有以下参数:
存在字段 `baseTask` 的任务即为派生任务,字段 `baseTask` 对应的任务称为这个派生任务的**基任务**。对于一个派生任务,
1. 若是模板匹配任务,则**字段 `template`** 的默认值仍为 `"任务名.png"`
2. 若字段 `algorithm` 与基任务不同,则派生类参数不继承(只继承 `TaskInfo` 定义的参数);
3. 其余字段的默认值均为**基任务对应字段**。
#### 隐式 `@` 型任务
存在任务 `"A"` 且所有任务文件中均未直接定义的型如 `"B@A"` 的任务即为隐式 `@` 型任务,任务 `"A"` 称为任务 `"B@A"` 的**基任务**。对于一个隐式 `@` 型任务,
1. 其任务列表类型字段(`sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes`)的默认值为基任务对应字段**直接**增加 `B@` 前缀(如遇任务名开头为 `#` 则增加 `B` 前缀);
2. 其余字段的默认值均为**基任务对应字段**(包括字段 `template`)。
#### 显式 `@` 型任务
存在任务 `"A"` 且存在任务文件中直接定义的型如 `"B@A"` 的任务即为显式 `@` 型任务,任务 `"A"` 称为任务 `"B@A"` 的**基任务**。对于一个显式 `@` 型任务,
1. 任务列表类型字段(`sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes`)的默认值为基任务对应字段**直接**增加 `B@` 前缀(如遇任务名开头为 `#` 则增加 `B` 前缀);
2. 若是模板匹配任务,则**字段 `template`** 的默认值仍为 `"任务名.png"`
3. 若字段 `algorithm` 与基任务不同,则派生类参数不继承(只继承 `TaskInfo` 定义的参数);
4. 其余字段的默认值均为**基任务对应字段**。
### 多文件任务
如果后加载的任务文件 (例如外服 `tasks.json`; 下称文件二) 中定义的任务在先加载的任务文件 (例如国服 `tasks.json`; 下称文件一) 中也定义了同名任务,那么:
- 如果文件二中任务没有 `baseTask` 字段,则直接继承文件一中同名任务的字段。
- 如果文件二中任务有 `baseTask` 字段,则不继承文件一中同名任务的字段,而是直接覆盖。特别地,在没有模板任务时你可以使用 `"baseTask": "#none"` 来避免继承不必要的字段。
## 表达式计算
任务列表类型字段(`sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes`)支持表达式计算,我们提供四种二元运算:`@`, `*`, `+`, `^`
运算 `*``+``^` 的**左元**和运算 `@``+``^` 的**右元**为包含任意个以下元素的列表:
1. 任务名字符串(例如:`TaskA`, `Base@TaskB` 等);
2. [虚任务](#虚任务)。
运算 `@` 的左元必须为包含任务名字符串的列表;运算 `*` 的右元必须为一个正整数。
| 符号 | 含义 | 实例 |
| :---------: | :------------------------------------------------------: | :------------------------------------: |
| `@` | `@` 型任务 | `Fight@ReturnTo` |
| `*` | 重复多个任务 | `(ClickCornerAfterPRTS+ClickCorner)*5` |
| `+` | 任务列表合并(在 next 系列字段中同名任务只保留最靠前者) | `A+B` |
| `^` | 任务列表差(在前者但不在后者,顺序不变) | `(A+A+B+C)^(A+B+D)`(结果为 `C` |
运算符 `@`, `*`, `+`, `^` 均是左结合的,有优先级:`@` > `*` > `+` = `^`
### `@` 运算
运算 `@` 在左右元均为普通任务时,会将左元作为前缀,右元作为基任务,运算结果为一个 `@` 型任务:
- `A` `@` `B` = `A@B`
运算 `@` 的元为任务列表时,会按照类似满足右分配律的顺序运算:
- `[A1, A2, ..., An]` `@` `[B1, B2, ..., Bm]`
= `A1` `@` `[B1, B2, ..., Bm]` + `A2` `@` `[B1, B2, ..., Bm]` + ... + `An` `@` `[B1, B2, ..., Bm]`
= `[A1@B1, A1@B2, ..., A1@Bm, A2@B1, ..., An@Bm]`
### 虚任务
为使表达式计算支持更多功能,我们引入了虚任务。虚任务即型如 `"#{sharp_type}"` 的任务,其中 `{sharp_type}` 可以是 `none`, `self`, `back`, `next`, `sub`, `on_error_next`, `exceeded_next`, `reduce_other_times`
从功能上可以将虚任务分为**指令虚任务**`#none` / `#self` / `#back`)和**字段虚任务**`#next` 等)。
虚任务在 `@` 运算中有额外的规则。
当虚任务作为 `@` 运算的右元时,`@` 可以省略。例如,`A@#next` 等价于 `A#next`。(不要将其理解为二元运算 `#`
虚任务不能作为 `@` 运算的左元。例如 `#self@A``#back@B` 均是非法的,但 `A@#back@B` 是合法的。
#### SharpNone
SharpNone 即 `#none`。运行时会被解释为空任务列表。它满足:
- `A` `@` `#none` = `#none`
#### SharpSelf
SharpSelf 即 `#self`。运行时会被解释为当前任务名。例如 `"A": {"next": ["#self"]}` 中的 `#self` 被解释为 `A`。它满足:
- `A` `@` `#self` = `#self`
#### SharpBack
SharpBack 即 `#back`。运行时会被解释为空任务列表。它满足:
- `A` `@` `#back` = `A`
将他作为右元进行 `@` 运算可以解释为“返回”左元所指代的任务。当几个任务有 `"next": [ "#back" ]` 时,`"T1@T2@T3"` 代表依次执行 `T3`, `T2`, `T1`
#### 字段虚任务
字段虚任务在运行时会被解释为空任务列表。以 `#next` 为例,它满足:
- `A` `@` `#next` = Task.get_raw("A")->next<sup>\*</sup>
将他作为右元进行 `@` 运算结果为左元所指代的任务的对应字段。
*Note<sup>\*</sup>: 注意这里是 get_raw 而非 get。*
### 使用示例
- 派生任务示例(字段 `baseTask`
假设定义了如下两个任务:
```json
"Return": {
"action": "ClickSelf",
"next": [ "Stop" ]
},
"Return2": {
"baseTask": "Return"
},
```
则 `"Return2"` 任务的参数会直接从 `"Return"` 任务继承,实际上包含以下参数:
```json
"Return2": {
"algorithm": "MatchTemplate", // 直接继承
"template": "Return2.png", // "任务名.png"
"action": "ClickSelf", // 直接继承
"next": [ "Stop" ] // 直接继承,与 Template Task 相比这里没有前缀
}
```
- `@` 型任务示例
假设定义了包含以下参数的任务 `"A"`
```json
"A": {
"template": "A.png",
...,
"next": [ "N1", "N2" ]
}
"next": [ "N1", "#back" ]
},
```
就相当于同时定义了
如果任务 `"B@A"` 没有被直接定义,那么任务 `"B@A"` 实际上有以下参数:
```json
"B@A": {
"template": "A.png",
...,
"next": [ "B@N1", "B@N2" ]
"next": [ "B@N1", "B#back" ]
}
```
- 如果 `tasks.json` 定义任务 "B@A",则
1. 如果 "B@A" 与 "A" 的 `algorithm` 字段不同,则派生类参数不继承(只继承 `TaskInfo` 定义的参数)
2. 如果是图像匹配任务,`template` 若未显式定义则为 `B@A.png`(而不是继承"A"的 `template` 名),其余情况任何派生类参数若未显式定义,直接继承 "A" 任务的参数
3. 对于 `TaskInfo` 基类中定义的参数(任何类型任务都有的参数,例如 `algorithm`, `roi`, `next` 等),若没有在 "B@A" 内显式定义,则除了上面提到的 `sub` 等五个字段在继承时会增加 "B@" 前缀外,其余参数直接继承 "A" 任务的参数
如果任务 `"B@A"` 定义 `"B@A": {}`,那么任务 `"B@A"` 实际上有以下参数
### Base Task
Base task 与 template task 合称**模板任务**。
有字段 `baseTask` 的任务即为 base task。
Base task 的逻辑优先于 template task。这意味着 `"B@A": { "baseTask": "C", ... }` 与任务 A 没有任何相关。
任何参数若未显式定义则不加前缀地直接使用 `baseTask` 对应任务的参数,除了 `template` 未显式定义时仍为 `"任务名.png"`。
#### 多文件任务
如果后加载的任务文件 (例如外服 `tasks.json`; 下称文件二) 中定义的任务在先加载的任务文件 (例如国服 `tasks.json`; 下称文件一) 中也定义了同名任务,那么:
- 如果文件二中任务没有 `baseTask` 字段,则直接继承文件一中同名任务的字段。
- 如果文件二中任务有 `baseTask` 字段,则不继承文件一中同名任务的字段,而是直接覆盖。
### Virtual Task虚任务
Virtual task 也称 sharp task`#` 型任务)。
任务名带 `#` 的任务即为 virtual task。 `#` 后可接 `next`, `back`, `self`, `sub`, `on_error_next`, `exceeded_next`, `reduce_other_times`。
| 虚任务类型 | 含义 | 简单示例 |
| :----------: | :----------------: | :--------------------------------------------------------------------------------------------------------------------------------------: |
| self | 父任务名 | `"A": {"next": "#self"}` 中的 `"#self"` 被解释为 `"A"`<br>`"B": {"next": "A@B@C#self"}` 中的 `"A@B@C#self"` 被解释为 `"B"`。<sup>1</sup> |
| back | # 前面的任务名 | `"A@B#back"` 被解释为 `"A@B"`<br>`"#back"` 直接出现则会被跳过 |
| next, sub 等 | # 前任务名对应字段 | 以 `next` 为例:<br>`"A#next"` 被解释为 `Task.get("A")->next`<br>`"#next"` 直接出现则会被跳过 |
_Note<sup>1</sup>: `"XXX#self"` 与 `"#self"` 含义相同。_
#### 简单示例
```json
{
"A": { "next": ["N1", "N2"] },
"C": { "next": ["B@A#next"] },
"Loading": {
"next": ["#self", "#next", "#back"]
},
"B": {
"next": ["Other", "B@Loading"]
```json
"B@A": {
"template": "B@A.png",
...,
"next": [ "B@N1", "B#back" ]
}
}
```
```
可以得到:
- 虚任务示例
```cpp
Task.get("C")->next = { "B@N1", "B@N2" };
```json
{
"A": { "next": ["N1", "N2"] },
"C": { "next": ["B@A#next"] },
Task.get("B@Loading")->next = { "B@Loading", "Other", "B" };
Task.get("Loading")->next = { "Loading" };
Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" };
```
"Loading": {
"next": ["#self", "#next", "#back"]
},
"B": {
"next": ["Other", "B@Loading"]
}
}
```
#### 一些用途
可以得到:
- 当几个任务有 `"next": [ "#back" ]` 时,`"Task1@Task2@Task3"` 代表依次执行 `Task3`, `Task2`, `Task1`。
```cpp
Task.get("C")->next = { "B@N1", "B@N2" };
#### 其它相关
Task.get("B@Loading")->next = { "B@Loading", "Other", "B" };
Task.get("Loading")->next = { "Loading" };
Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" };
```
```json
{
"A": { "next": ["N0"] },
"B": { "next": ["A#next"] },
"C@A": { "next": ["N1"] }
}
```
### 注意事项
以上这种情况, `"C@B" -> next`(即 `C@A#next`)为 `[ "N1" ]` 而不是 `[ "C@N0" ]`.
如果任务列表类型字段(`next` 等)中定义的任务包含低优先级运算,则实际结果可能不符预期,需要注意。
1. `@` 与 双目 `#` 的运算顺序导致的特例
```json
{
"A": { "next": ["N0"] },
"B": { "next": ["A#next"] },
"C@A": { "next": ["N1"] }
}
```
以上这种情况, `"C@B" -> next`(即 `C@A#next`)为 `[ "N1" ]` 而不是 `[ "C@N0" ]`.
2. `@` 与 `+` 的运算顺序导致的特例
```json
{
"A": { "next": ["#back + N0"] },
"B@A": {}
}
```
以上这种情况,
```cpp
Task.get("A")->next = { "N0" };
Task.get_raw("B@A")->next = { "B#back + N0" };
Task.get("B@A")->next = { "B", "N0" }; // 注意不是 [ "B", "B@N0" ]
```
事实上,你可以用这个特性来避免添加不必要的前缀,只需要定义
```json
{
"A": { "next": ["#none + N0"] }
}
```
## 运行时修改任务
- `Task.lazy_parse()` 可以在运行时加载 json 任务配置文件。 lazy_parse 规则与[多文件任务](#多文件任务)相同。
- `Task.set_task_base()` 可以修改任务的 `baseTask` 字段。
- `Task.set_task_base()` 可以修改任务的 `baseTask` 字段。*不推荐使用此特性。*
### 使用示例
@@ -332,19 +463,6 @@ default:
}
```
## 表达式计算
| 符号 | 含义 | 实例 |
| :---------: | :------------------------------------------------------: | :------------------------------------: |
| `@` | 模板任务 | `Fight@ReturnTo` |
| `#`(单目) | 虚任务 | `#self` |
| `#`(双目) | 虚任务 | `StartUpThemes#next` |
| `*` | 重复多个任务 | `(ClickCornerAfterPRTS+ClickCorner)*5` |
| `+` | 任务列表合并(在 next 系列属性中同名任务只保留最靠前者) | `A+B` |
| `^` | 任务列表差(在前者但不在后者,顺序不变) | `(A+A+B+C)^(A+B+D)`(结果为 `C` |
运算符 `@`, `#`, `*`, `+`, `^` 有优先级:`#`(单目)> `@` = `#`(双目)> `*` > `+` = `^`。
## Schema 检验
本项目为 `tasks.json` 配置了 json schema 检验schema 文件为`docs/maa_tasks_schema.json`。

View File

@@ -13,11 +13,11 @@ dir:
<!-- markdownlint-restore -->
# MaaAssistantArknights
# MAA
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social)
MAA 的意思是 MAA Assistant Arknights

View File

@@ -9,12 +9,12 @@ icon: jam:write-f
本文件的目的在於指導文件編寫者更好地使用主題提供的功能,以達到更易讀的效果。
:::
我們的文件基於 [vuepress](https://github.com/vuejs/vuepress) 構建,使用了 [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) 主題,你也可以查看[官方文件](https://theme-hope.vuejs.press/zh/)來獲取更詳細的說明,這裡僅介紹一些常用的功能。
我們的文件基於 [vuepress](https://github.com/vuejs/vuepress) 構建,使用了 [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) 主題,你也可以查看[官方文件](https://theme-plume.vuejs.press/)來獲取更詳細的說明,這裡僅介紹一些常用的功能。
## 本地部署
1. 安裝 [pnpm](https://pnpm.io/zh/installation),並參考 [Pull Request 流程簡述](./development.md#github-pull-request-流程簡述)將倉庫克隆到本地。
2.`website` 目錄下新建終端,運行 `pnpm i` 下載依賴。
2.`docs` 目錄下新建終端,運行 `pnpm i` 下載依賴。
3. 運行 `pnpm run dev` 進行部署。
## 容器

View File

@@ -69,6 +69,10 @@ icon: iconoir:code-brackets
插件支持資源包含多個路徑, 會按照指定順序進行邏輯覆蓋, 即後載入的可以引用到前載入的內容.
### 計算任務 / 任務列表表達式 (僅 Maa)
通過控制面板, 可以計算任務實際展開的內容, 以及每一項的來源; 可以計算任務列表表達式展開的結果
### MaaPiCli 功能 (僅 MaaFramework 項目)
通過控制面板, 可以掃描並選擇控制器, 選擇資源, 添加並管理任務, 以及執行任務.

View File

@@ -13,11 +13,11 @@ dir:
<!-- markdownlint-restore -->
# MaaAssistantArknights
# MAA
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social)
MAA 的意思是 MAA Assistant Arknights

View File

@@ -0,0 +1,952 @@
{
"code": "RM-H1",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_01",
"name": "岩溶险地",
"stageId": "act1halfidle_h01",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.6,
-10.63
],
[
1.0958801285994695,
-7.1,
-11.468506414519773
]
],
"width": 13
}

View File

@@ -0,0 +1,952 @@
{
"code": "RM-H2",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_02",
"name": "裂壕险地",
"stageId": "act1halfidle_h02",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_start"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.6,
-10.63
],
[
1.0958801285994695,
-7.1,
-11.468506414519773
]
],
"width": 13
}

View File

@@ -0,0 +1,673 @@
{
"code": "RM-H3",
"height": 7,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_03",
"name": "孤隘险地",
"stageId": "act1halfidle_h03",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-6.6,
-10.63
],
[
1.0958801285994695,
-7.1,
-11.468506414519773
]
],
"width": 13
}

View File

@@ -0,0 +1,710 @@
{
"code": "RM-H7",
"height": 8,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_07",
"name": "雾城险地",
"stageId": "act1halfidle_h07",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-5.6,
-10.63
],
[
1.0958801285994695,
-6.1,
-11.468506414519773
]
],
"width": 12
}

View File

@@ -0,0 +1,952 @@
{
"code": "RM-H8",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_08",
"name": "湖骸险地",
"stageId": "act1halfidle_h08",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telout"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.0,
-7.1,
-10.63
],
[
1.0958801285994695,
-7.6,
-11.468506414519773
]
],
"width": 13
}

View File

@@ -0,0 +1,477 @@
{
"code": "RM-TR-1",
"height": 7,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_tr01",
"name": "荒地前哨",
"stageId": "act1halfidle_tr01",
"tiles": [
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": true,
"isStart": true,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
}
]
],
"view": [
[
0.5,
-6.6,
-10.63
],
[
1.5882840051055735,
-7.1,
-11.381682325686308
]
],
"width": 9
}

View File

@@ -6326,6 +6326,141 @@
"stageId": "act1enemyduel_02b",
"width": 15
},
"act1halfidle_01-activities/act1vhalfidle/level_act1vhalfidle_01": {
"code": "RM-1",
"filename": "act1halfidle_01-activities-act1vhalfidle-level_act1vhalfidle_01.json",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_01",
"name": "旧城遗址",
"stageId": "act1halfidle_01",
"width": 14
},
"act1halfidle_02-activities/act1vhalfidle/level_act1vhalfidle_02": {
"code": "RM-2",
"filename": "act1halfidle_02-activities-act1vhalfidle-level_act1vhalfidle_02.json",
"height": 11,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_02",
"name": "风号峡谷",
"stageId": "act1halfidle_02",
"width": 16
},
"act1halfidle_03-activities/act1vhalfidle/level_act1vhalfidle_03": {
"code": "RM-3",
"filename": "act1halfidle_03-activities-act1vhalfidle-level_act1vhalfidle_03.json",
"height": 11,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_03",
"name": "坍塌矿区",
"stageId": "act1halfidle_03",
"width": 17
},
"act1halfidle_04-activities/act1vhalfidle/level_act1vhalfidle_04": {
"code": "RM-4",
"filename": "act1halfidle_04-activities-act1vhalfidle-level_act1vhalfidle_04.json",
"height": 13,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_04",
"name": "沉积河床",
"stageId": "act1halfidle_04",
"width": 17
},
"act1halfidle_05-activities/act1vhalfidle/level_act1vhalfidle_05": {
"code": "RM-5",
"filename": "act1halfidle_05-activities-act1vhalfidle-level_act1vhalfidle_05.json",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_05",
"name": "斑斓巢穴",
"stageId": "act1halfidle_05",
"width": 15
},
"act1halfidle_06-activities/act1vhalfidle/level_act1vhalfidle_06": {
"code": "RM-6",
"filename": "act1halfidle_06-activities-act1vhalfidle-level_act1vhalfidle_06.json",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_06",
"name": "猎骨荒野",
"stageId": "act1halfidle_06",
"width": 15
},
"act1halfidle_h01-activities/act1vhalfidle/level_act1vhalfidle_hard_01": {
"code": "RM-H1",
"filename": "act1halfidle_h01-activities-act1vhalfidle-level_act1vhalfidle_hard_01.json",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_01",
"name": "岩溶险地",
"stageId": "act1halfidle_h01",
"width": 13
},
"act1halfidle_h02-activities/act1vhalfidle/level_act1vhalfidle_hard_02": {
"code": "RM-H2",
"filename": "act1halfidle_h02-activities-act1vhalfidle-level_act1vhalfidle_hard_02.json",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_02",
"name": "裂壕险地",
"stageId": "act1halfidle_h02",
"width": 13
},
"act1halfidle_h03-activities/act1vhalfidle/level_act1vhalfidle_hard_03": {
"code": "RM-H3",
"filename": "act1halfidle_h03-activities-act1vhalfidle-level_act1vhalfidle_hard_03.json",
"height": 7,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_03",
"name": "孤隘险地",
"stageId": "act1halfidle_h03",
"width": 13
},
"act1halfidle_h04-activities/act1vhalfidle/level_act1vhalfidle_hard_04": {
"code": "RM-H4",
"filename": "act1halfidle_h04-activities-act1vhalfidle-level_act1vhalfidle_hard_04.json",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_04",
"name": "断岭险地",
"stageId": "act1halfidle_h04",
"width": 15
},
"act1halfidle_h05-activities/act1vhalfidle/level_act1vhalfidle_hard_05": {
"code": "RM-H5",
"filename": "act1halfidle_h05-activities-act1vhalfidle-level_act1vhalfidle_hard_05.json",
"height": 11,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_05",
"name": "迷窟险地",
"stageId": "act1halfidle_h05",
"width": 16
},
"act1halfidle_h06-activities/act1vhalfidle/level_act1vhalfidle_hard_06": {
"code": "RM-H6",
"filename": "act1halfidle_h06-activities-act1vhalfidle-level_act1vhalfidle_hard_06.json",
"height": 11,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_06",
"name": "蚀林险地",
"stageId": "act1halfidle_h06",
"width": 15
},
"act1halfidle_h07-activities/act1vhalfidle/level_act1vhalfidle_hard_07": {
"code": "RM-H7",
"filename": "act1halfidle_h07-activities-act1vhalfidle-level_act1vhalfidle_hard_07.json",
"height": 8,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_07",
"name": "雾城险地",
"stageId": "act1halfidle_h07",
"width": 12
},
"act1halfidle_h08-activities/act1vhalfidle/level_act1vhalfidle_hard_08": {
"code": "RM-H8",
"filename": "act1halfidle_h08-activities-act1vhalfidle-level_act1vhalfidle_hard_08.json",
"height": 10,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_hard_08",
"name": "湖骸险地",
"stageId": "act1halfidle_h08",
"width": 13
},
"act1halfidle_tr01-activities/act1vhalfidle/level_act1vhalfidle_tr01": {
"code": "RM-TR-1",
"filename": "act1halfidle_tr01-activities-act1vhalfidle-level_act1vhalfidle_tr01.json",
"height": 7,
"levelId": "activities/act1vhalfidle/level_act1vhalfidle_tr01",
"name": "荒地前哨",
"stageId": "act1halfidle_tr01",
"width": 9
},
"act1multi_01-activities/act1multi/level_act1multi_01": {
"code": "IG-1",
"filename": "act1multi_01-activities-act1multi-level_act1multi_01.json",

View File

@@ -7604,6 +7604,306 @@
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1500_lhgras": {
"name": "草丛",
"name_en": "草丛",
"name_en_unavailable": true,
"name_jp": "草丛",
"name_jp_unavailable": true,
"name_kr": "草丛",
"name_kr_unavailable": true,
"name_tw": "草丛",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1501_lhpark": {
"name": "花丛",
"name_en": "花丛",
"name_en_unavailable": true,
"name_jp": "花丛",
"name_jp_unavailable": true,
"name_kr": "花丛",
"name_kr_unavailable": true,
"name_tw": "花丛",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1502_lhrock": {
"name": "岩石",
"name_en": "岩石",
"name_en_unavailable": true,
"name_jp": "岩石",
"name_jp_unavailable": true,
"name_kr": "岩石",
"name_kr_unavailable": true,
"name_tw": "岩石",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1503_lhshan": {
"name": "山脉",
"name_en": "山脉",
"name_en_unavailable": true,
"name_jp": "山脉",
"name_jp_unavailable": true,
"name_kr": "山脉",
"name_kr_unavailable": true,
"name_tw": "山脉",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1504_lhtree": {
"name": "林地",
"name_en": "林地",
"name_en_unavailable": true,
"name_jp": "林地",
"name_jp_unavailable": true,
"name_kr": "林地",
"name_kr_unavailable": true,
"name_tw": "林地",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1505_lhfrst": {
"name": "密林",
"name_en": "密林",
"name_en_unavailable": true,
"name_jp": "密林",
"name_jp_unavailable": true,
"name_kr": "密林",
"name_kr_unavailable": true,
"name_tw": "密林",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["b-2", "b-2", "b-2"],
"rarity": 1
},
"trap_1506_lhhe": {
"name": "河流",
"name_en": "河流",
"name_en_unavailable": true,
"name_jp": "河流",
"name_jp_unavailable": true,
"name_kr": "河流",
"name_kr_unavailable": true,
"name_tw": "河流",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1507_lhukmi": {
"name": "富集矿区",
"name_en": "富集矿区",
"name_en_unavailable": true,
"name_jp": "富集矿区",
"name_jp_unavailable": true,
"name_kr": "富集矿区",
"name_kr_unavailable": true,
"name_tw": "富集矿区",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-5", "x-5", "x-5"],
"rarity": 1
},
"trap_1508_lhmine": {
"name": "源石矿场",
"name_en": "源石矿场",
"name_en_unavailable": true,
"name_jp": "源石矿场",
"name_jp_unavailable": true,
"name_kr": "源石矿场",
"name_kr_unavailable": true,
"name_tw": "源石矿场",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1509_lhbot": {
"name": "勘探器",
"name_en": "勘探器",
"name_en_unavailable": true,
"name_jp": "勘探器",
"name_jp_unavailable": true,
"name_kr": "勘探器",
"name_kr_unavailable": true,
"name_tw": "勘探器",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1510_lhplt": {
"name": "源石晶簇",
"name_en": "源石晶簇",
"name_en_unavailable": true,
"name_jp": "源石晶簇",
"name_jp_unavailable": true,
"name_kr": "源石晶簇",
"name_kr_unavailable": true,
"name_tw": "源石晶簇",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-5", "x-5", "x-5"],
"rarity": 1
},
"trap_1511_lhfac": {
"name": "晶簇稳定器",
"name_en": "晶簇稳定器",
"name_en_unavailable": true,
"name_jp": "晶簇稳定器",
"name_jp_unavailable": true,
"name_kr": "晶簇稳定器",
"name_kr_unavailable": true,
"name_tw": "晶簇稳定器",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-1", "x-1", "x-1"],
"rarity": 1
},
"trap_1512_lhfarm": {
"name": "源石回收炉",
"name_en": "源石回收炉",
"name_en_unavailable": true,
"name_jp": "源石回收炉",
"name_jp_unavailable": true,
"name_kr": "源石回收炉",
"name_kr_unavailable": true,
"name_tw": "源石回收炉",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-1", "x-1", "x-1"],
"rarity": 1
},
"trap_1513_lhshop": {
"name": "冶铸车",
"name_en": "冶铸车",
"name_en_unavailable": true,
"name_jp": "冶铸车",
"name_jp_unavailable": true,
"name_kr": "冶铸车",
"name_kr_unavailable": true,
"name_tw": "冶铸车",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1514_lhpad": {
"name": "田地",
"name_en": "田地",
"name_en_unavailable": true,
"name_jp": "田地",
"name_jp_unavailable": true,
"name_kr": "田地",
"name_kr_unavailable": true,
"name_tw": "田地",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1515_lhfacp": {
"name": "被污染的回收炉",
"name_en": "被污染的回收炉",
"name_en_unavailable": true,
"name_jp": "被污染的回收炉",
"name_jp_unavailable": true,
"name_kr": "被污染的回收炉",
"name_kr_unavailable": true,
"name_tw": "被污染的回收炉",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-1", "x-1", "x-1"],
"rarity": 1
},
"trap_1516_lhnat": {
"name": "供能基站",
"name_en": "供能基站",
"name_en_unavailable": true,
"name_jp": "供能基站",
"name_jp_unavailable": true,
"name_kr": "供能基站",
"name_kr_unavailable": true,
"name_tw": "供能基站",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-2", "x-2", "x-2"],
"rarity": 1
},
"trap_1517_lhcol": {
"name": "藏书馆",
"name_en": "藏书馆",
"name_en_unavailable": true,
"name_jp": "藏书馆",
"name_jp_unavailable": true,
"name_kr": "藏书馆",
"name_kr_unavailable": true,
"name_tw": "藏书馆",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1518_lhdoor": {
"name": "改良巫术祭坛",
"name_en": "改良巫术祭坛",
"name_en_unavailable": true,
"name_jp": "改良巫术祭坛",
"name_jp_unavailable": true,
"name_kr": "改良巫术祭坛",
"name_kr_unavailable": true,
"name_tw": "改良巫术祭坛",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1519_lhrift": {
"name": "巫术村落",
"name_en": "巫术村落",
"name_en_unavailable": true,
"name_jp": "巫术村落",
"name_jp_unavailable": true,
"name_kr": "巫术村落",
"name_kr_unavailable": true,
"name_tw": "巫术村落",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["1-1", "1-1", "1-1"],
"rarity": 1
},
"trap_151_muruinw": {
"name": "折叠式堡垒模块",
"name_en": "Foldable Bastion",
@@ -7615,6 +7915,156 @@
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1520_lhcolb": {
"name": "大图书馆",
"name_en": "大图书馆",
"name_en_unavailable": true,
"name_jp": "大图书馆",
"name_jp_unavailable": true,
"name_kr": "大图书馆",
"name_kr_unavailable": true,
"name_tw": "大图书馆",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1521_lhmagd": {
"name": "术法岗哨",
"name_en": "术法岗哨",
"name_en_unavailable": true,
"name_jp": "术法岗哨",
"name_jp_unavailable": true,
"name_kr": "术法岗哨",
"name_kr_unavailable": true,
"name_tw": "术法岗哨",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1522_lhvlg": {
"name": "先遣侦测器",
"name_en": "先遣侦测器",
"name_en_unavailable": true,
"name_jp": "先遣侦测器",
"name_jp_unavailable": true,
"name_kr": "先遣侦测器",
"name_kr_unavailable": true,
"name_tw": "先遣侦测器",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1523_lhtown": {
"name": "侦测中心",
"name_en": "侦测中心",
"name_en_unavailable": true,
"name_jp": "侦测中心",
"name_jp_unavailable": true,
"name_kr": "侦测中心",
"name_kr_unavailable": true,
"name_tw": "侦测中心",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1524_lhport": {
"name": "装卸机",
"name_en": "装卸机",
"name_en_unavailable": true,
"name_jp": "装卸机",
"name_jp_unavailable": true,
"name_kr": "装卸机",
"name_kr_unavailable": true,
"name_tw": "装卸机",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1525_lhswer": {
"name": "水产村落",
"name_en": "水产村落",
"name_en_unavailable": true,
"name_jp": "水产村落",
"name_jp_unavailable": true,
"name_kr": "水产村落",
"name_kr_unavailable": true,
"name_tw": "水产村落",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["1-1", "1-1", "1-1"],
"rarity": 1
},
"trap_1526_lharen": {
"name": "冲突围栏",
"name_en": "冲突围栏",
"name_en_unavailable": true,
"name_jp": "冲突围栏",
"name_jp_unavailable": true,
"name_kr": "冲突围栏",
"name_kr_unavailable": true,
"name_tw": "冲突围栏",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1527_lhtwer": {
"name": "警戒岗哨",
"name_en": "警戒岗哨",
"name_en_unavailable": true,
"name_jp": "警戒岗哨",
"name_jp_unavailable": true,
"name_kr": "警戒岗哨",
"name_kr_unavailable": true,
"name_tw": "警戒岗哨",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1528_lhruin": {
"name": "废墟",
"name_en": "废墟",
"name_en_unavailable": true,
"name_jp": "废墟",
"name_jp_unavailable": true,
"name_kr": "废墟",
"name_kr_unavailable": true,
"name_tw": "废墟",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1529_lhsht": {
"name": "岗哨",
"name_en": "岗哨",
"name_en_unavailable": true,
"name_jp": "岗哨",
"name_jp_unavailable": true,
"name_kr": "岗哨",
"name_kr_unavailable": true,
"name_tw": "岗哨",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_152_muruino": {
"name": "折叠式辅助器械",
"name_en": "Foldable Auxiliary Apparatus",
@@ -7626,6 +8076,171 @@
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1530_lhcamp": {
"name": "荒野村落",
"name_en": "荒野村落",
"name_en_unavailable": true,
"name_jp": "荒野村落",
"name_jp_unavailable": true,
"name_kr": "荒野村落",
"name_kr_unavailable": true,
"name_tw": "荒野村落",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["1-1", "1-1", "1-1"],
"rarity": 1
},
"trap_1531_lhcampa": {
"name": "猎户村落",
"name_en": "猎户村落",
"name_en_unavailable": true,
"name_jp": "猎户村落",
"name_jp_unavailable": true,
"name_kr": "猎户村落",
"name_kr_unavailable": true,
"name_tw": "猎户村落",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["1-1", "1-1", "1-1"],
"rarity": 1
},
"trap_1532_lhcampb": {
"name": "山地村落",
"name_en": "山地村落",
"name_en_unavailable": true,
"name_jp": "山地村落",
"name_jp_unavailable": true,
"name_kr": "山地村落",
"name_kr_unavailable": true,
"name_tw": "山地村落",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["1-1", "1-1", "1-1"],
"rarity": 1
},
"trap_1533_lhcampc": {
"name": "牧场村落",
"name_en": "牧场村落",
"name_en_unavailable": true,
"name_jp": "牧场村落",
"name_jp_unavailable": true,
"name_kr": "牧场村落",
"name_kr_unavailable": true,
"name_tw": "牧场村落",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["1-1", "1-1", "1-1"],
"rarity": 1
},
"trap_1534_lheqp": {
"name": "插件补给点",
"name_en": "插件补给点",
"name_en_unavailable": true,
"name_jp": "插件补给点",
"name_jp_unavailable": true,
"name_kr": "插件补给点",
"name_kr_unavailable": true,
"name_tw": "插件补给点",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1535_lhupgd": {
"name": "插件强化点",
"name_en": "插件强化点",
"name_en_unavailable": true,
"name_jp": "插件强化点",
"name_jp_unavailable": true,
"name_kr": "插件强化点",
"name_kr_unavailable": true,
"name_tw": "插件强化点",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
"rarity": 1
},
"trap_1536_lhbat": {
"name": "噬血诅地",
"name_en": "噬血诅地",
"name_en_unavailable": true,
"name_jp": "噬血诅地",
"name_jp_unavailable": true,
"name_kr": "噬血诅地",
"name_kr_unavailable": true,
"name_tw": "噬血诅地",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-4", "x-4", "x-4"],
"rarity": 1
},
"trap_1537_lhside": {
"name": "信号基站",
"name_en": "信号基站",
"name_en_unavailable": true,
"name_jp": "信号基站",
"name_jp_unavailable": true,
"name_kr": "信号基站",
"name_kr_unavailable": true,
"name_tw": "信号基站",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-2", "x-2", "x-2"],
"rarity": 1
},
"trap_1538_lhblod": {
"name": "血裔胞体",
"name_en": "血裔胞体",
"name_en_unavailable": true,
"name_jp": "血裔胞体",
"name_jp_unavailable": true,
"name_kr": "血裔胞体",
"name_kr_unavailable": true,
"name_tw": "血裔胞体",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-4", "x-4", "x-4"],
"rarity": 1
},
"trap_1539_lhflwr": {
"name": "精怪实验室",
"name_en": "精怪实验室",
"name_en_unavailable": true,
"name_jp": "精怪实验室",
"name_jp_unavailable": true,
"name_kr": "精怪实验室",
"name_kr_unavailable": true,
"name_tw": "精怪实验室",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["x-5", "x-5", "x-5"],
"rarity": 1
},
"trap_1540_lhpad2": {
"name": "温室拱棚",
"name_en": "温室拱棚",
"name_en_unavailable": true,
"name_jp": "温室拱棚",
"name_jp_unavailable": true,
"name_kr": "温室拱棚",
"name_kr_unavailable": true,
"name_tw": "温室拱棚",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["b-2", "b-2", "b-2"],
"rarity": 1
},
"trap_154_mugtps": {
"name": "阵地屏障",
"name_en": "Positional Barrier",

View File

@@ -8,8 +8,9 @@
},
"Mizuki@Roguelike@NextLevel": {
"ocrReplace": [
["迫.*来る波濤", "迫り来る波濤"],
["陽の.*海岸", "陽の射す海岸"]
["陽の.*海岸", "陽の射す海岸"],
["離.*の孤[島鳥]", "離れの孤島"],
["迫.*来る波濤", "迫り来る波濤"]
],
"text": ["陽の射す海岸", "離れの孤島", "迫り来る波濤", "秘密の温床", "不可侵の洞窟", "深海の密林", "紺碧の揺籃"]
},
@@ -18,7 +19,10 @@
},
"Mizuki@Roguelike@StageEncounterLeaveConfirm": {
"roi": [1063, 0, 217, 700],
"template": "Mizuki@Roguelike@StageEncounterLeaveConfirm.png"
"template": [
"Mizuki@Roguelike@StageEncounterLeaveConfirm.png",
"Mizuki@Roguelike@StageEncounterLeaveConfirm720p.png"
]
},
"Mizuki@Roguelike@StageSafeHouseReuse": {
"text": ["セーフハウスを利用する"]
@@ -26,7 +30,7 @@
"Mizuki@Roguelike@StrategyChange_mode0": {
"ocrReplace": [
["陽の.*海岸", "_aggressive"],
["離れの孤島", "_aggressive"],
["離.*の孤[島鳥]", "_aggressive"],
["迫.*来る波濤", "_pragmatic"],
["秘密の温床", "_pragmatic"],
["不可侵の洞窟", "_default"],
@@ -37,7 +41,7 @@
"Mizuki@Roguelike@StrategyChange_mode1": {
"ocrReplace": [
["陽の.*海岸", "_default"],
["離れの孤島", "_exit"],
["離.*の孤[島鳥]", "_exit"],
["迫.*来る波濤", "_exit"],
["秘密の温床", "_exit"],
["不可侵の洞窟", "_exit"],
@@ -48,7 +52,7 @@
"Mizuki@Roguelike@StrategyChange_mode4": {
"ocrReplace": [
["陽の.*海岸", "_default"],
["離れの孤島", "_default"],
["離.*の孤[島鳥]", "_default"],
["迫.*来る波濤", "_exit"],
["秘密の温床", "_exit"],
["不可侵の洞窟", "_exit"],
@@ -59,7 +63,7 @@
"Mizuki@Roguelike@StrategyChange_mode6": {
"ocrReplace": [
["陽の.*海岸", "_aggressive"],
["離れの孤島", "_aggressive"],
["離.*の孤[島鳥]", "_aggressive"],
["迫.*来る波濤", "_pragmatic"],
["秘密の温床", "_pragmatic"],
["不可侵の洞窟", "_default"],
@@ -70,7 +74,7 @@
"Mizuki@Roguelike@StrategyChange_mode7": {
"ocrReplace": [
["陽の.*海岸", "_aggressive"],
["離れの孤島", "_aggressive"],
["離.*の孤[島鳥]", "_aggressive"],
["迫.*来る波濤", "_pragmatic"],
["秘密の温床", "_pragmatic"],
["不可侵の洞窟", "_default"],

View File

@@ -48,7 +48,12 @@
"text": ["科学考察記録", "科学", "考察"]
},
"Sami@Roguelike@ContinueClick": {
"text": ["初霜の湖沼", "静謐な.*", "夜明けの凍.*", "凍てつく岩骸", "汚れなき花園", "遠見の巨構", "深埋の迷境"]
"ocrReplace": [
["静謐な.*", "静謐な森"],
["夜明けの凍.*", "夜明けの凍土"],
["凍てつく岩.*", "凍てつく岩骸"]
],
"text": ["初霜の湖沼", "静謐な森", "夜明けの凍土", "凍てつく岩骸", "汚れなき花園", "遠見の巨構", "深埋の迷境"]
},
"Sami@Roguelike@FoldartalGainNextLevel": {
"text": ["本エリア", "通過後", "次段階", "パラダイム"]
@@ -145,11 +150,22 @@
"template": "Sami@Roguelike@Recruit2.png"
},
"Sami@Roguelike@NextLevel": {
"text": ["初霜の湖沼", "静謐な.*", "夜明けの凍.*", "凍てつく岩骸", "汚れなき花園", "遠見の巨構", "深埋の迷境"]
"ocrReplace": [
["静謐な.*", "静謐な森"],
["夜明けの凍.*", "夜明けの凍土"],
["凍てつく岩.*", "凍てつく岩骸"]
],
"text": ["初霜の湖沼", "静謐な森", "夜明けの凍土", "凍てつく岩骸", "汚れなき花園", "遠見の巨構", "深埋の迷境"]
},
"Sami@Roguelike@SelectTheme": {
"text": ["科学考察記録"]
},
"Sami@Roguelike@StageEncounterLeaveConfirm": {
"template": [
"Sami@Roguelike@StageEncounterLeaveConfirm.png",
"Sami@Roguelike@StageEncounterLeaveConfirm720p.png"
]
},
"Sami@Roguelike@StageSafeHouseReuse": {
"text": ["セーフハウスを利用する"]
},
@@ -158,7 +174,7 @@
["初霜の湖沼", "_aggressive"],
["静謐な.*", "_aggressive"],
["夜明けの凍.*", "_pragmatic"],
["凍てつく岩", "_pragmatic"],
["凍てつく岩.*", "_pragmatic"],
["汚れなき花園", "_default"],
["遠見の巨構", "_default"],
["深埋の迷境", "_SKIP_"]
@@ -169,7 +185,7 @@
["初霜の湖沼", "_default"],
["静謐な.*", "_exit"],
["夜明けの凍.*", "_exit"],
["凍てつく岩", "_exit"],
["凍てつく岩.*", "_exit"],
["汚れなき花園", "_exit"],
["遠見の巨構", "_exit"],
["深埋の迷境", "_exit"]
@@ -180,7 +196,7 @@
["初霜の湖沼", "_default"],
["静謐な.*", "_default"],
["夜明けの凍.*", "_exit"],
["凍てつく岩", "_exit"],
["凍てつく岩.*", "_exit"],
["汚れなき花園", "_exit"],
["遠見の巨構", "_exit"],
["深埋の迷境", "_exit"]
@@ -191,7 +207,7 @@
["初霜の湖沼", "_collapsal_paradigms"],
["静謐な.*", "_collapsal_paradigms"],
["夜明けの凍.*", "_SKIP_"],
["凍てつく岩", "_SKIP_"],
["凍てつく岩.*", "_SKIP_"],
["汚れなき花園", "_SKIP_"],
["遠見の巨構", "_SKIP_"],
["深埋の迷境", "_SKIP_"]
@@ -202,7 +218,7 @@
["初霜の湖沼", "_aggressive"],
["静謐な.*", "_aggressive"],
["夜明けの凍.*", "_pragmatic"],
["凍てつく岩", "_pragmatic"],
["凍てつく岩.*", "_pragmatic"],
["汚れなき花園", "_default"],
["遠見の巨構", "_default"],
["深埋の迷境", "_SKIP_"]
@@ -213,7 +229,7 @@
["初霜の湖沼", "_aggressive"],
["静謐な.*", "_aggressive"],
["夜明けの凍.*", "_pragmatic"],
["凍てつく岩", "_pragmatic"],
["凍てつく岩.*", "_pragmatic"],
["汚れなき花園", "_default"],
["遠見の巨構", "_default"],
["深埋の迷境", "_SKIP_"]

View File

@@ -23,6 +23,12 @@
"Sarkaz@Roguelike@SelectTheme": {
"text": ["仮説集"]
},
"Sarkaz@Roguelike@StageEncounterLeaveConfirm": {
"template": [
"Sarkaz@Roguelike@StageEncounterLeaveConfirm.png",
"Sarkaz@Roguelike@StageEncounterLeaveConfirm720p.png"
]
},
"Sarkaz@Roguelike@StageRefresh": {
"templThreshold": 0.77
},

View File

@@ -58,7 +58,11 @@
"RoguelikeRefreshSupportBtnOcr": {
"text": ["サポート", "更新"]
},
"RoguelikeTraderShopping": {
"roi": [420, 240, 810, 355]
},
"RoguelikeTraderShoppingOcr": {
"roi": [406, 90, 825, 350],
"ocrReplace": [
["前衛昇進券", "近卫进阶券"],
["耐久値", "目标生命"],
@@ -1058,7 +1062,7 @@
["夢中の邂逅", "梦中之会"],
["低地の市場", "低地市集"],
["雪と木の垣根", "雪与木的笆篱"],
["アマータル", "安玛塔卢"],
["ア.*マータル", "安玛塔卢"],
["北地の巫術師競技会", "北地巫师竞技"],
[".*の.*術師競技会", "北地巫师竞技"],
["最高の友達", "最好的朋友"],
@@ -1139,10 +1143,10 @@
["魂の見聞.*石心の双子", "魂灵见闻:石心双子"],
["最後のページ", "尾页"],
["異音を撃ち鳴らして", "扣响异音"],
["魂の見聞.*血には血を", "魂灵见闻:以血还血"],
["魂の見聞.*血に.*", "魂灵见闻:以血还血"],
["変.*の解読", "解读变迁"],
["構想の塔", "聚思成塔"],
["最高入者", "价高者得"],
["最高入.*者", "价高者得"],
["語り手を待つ真相", "待诉说的真相"],
["(戴|裁|載)冠の儀", "戴冠式"],
["去りし者の庭", "离去者的庭院"],
@@ -1153,7 +1157,7 @@
["スカー・ワールドワイド", "疤痕国际"],
["(窮)?地か選択か", "绝境?抉择?"],
["原初の分岐", "原初异途"],
["魂の見聞.*善悪道", "魂灵见闻:善恶同道"],
["魂の見聞.*善悪.*道", "魂灵见闻:善恶同道"],
["温かな余韻", "温暖余韵"],
["財運招来", "财源广进"],
["表現欲求", "表达欲"],

View File

@@ -125,7 +125,7 @@
["キアーベ", "贾维"],
["エリジウム", "极境"],
["バグパイ", "风笛"],
["^リド", "苇草"],
["^リ[ーニ]ド", "苇草"],
["テンニンカ", "桃金娘"],
["グラニ", "格拉尼"],
["シージ", "推进之王"],
@@ -193,7 +193,7 @@
["(ク)?ロワッサン", "可颂"],
["リスカム", "雷蛇"],
["^ニア.*ル", "临光"],
["^グ(で|)", "古米"],
["^グ(ム|で|)", "古米"],
["クオーラ", "蛇屠箱"],
["(マ)?ッターホルン", "角峰"],
["ビーグル", "米格鲁"],
@@ -239,7 +239,7 @@
["ウィーディ", "温蒂"],
["ファ(ン|ソ)トム", "傀影"],
["^ア(?:|-|回.*すス)$|^ァ.*イメ$", "阿"],
["ス.*ズ(ン|ソ)ト", "雪雉"],
["ス.*ズ(ン|ソ)ト($|[^の])", "雪雉"],
["(ワ|フ)イ(フ|ラ)ー", "槐琥"],
["イーサ(ン|ソ)", "伊桑"],
["エフイーター", "食铁兽"],
@@ -1283,7 +1283,7 @@
["魂の謁見", "魂灵朝谒"],
["説法", "授法"],
["軽舟ともに渡る", "轻舟共渡"],
["ムシカズの(滝|淹)", "卡兹瀑布"],
["ムシカズの(滝|淹|蒲)", "卡兹瀑布"],
["火力小隊", "火力小队"],
["「外道」", "“外道”"],
["氷河期", "冰川期"],

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -3444,7 +3444,7 @@
"bskill_tra_spd&limit_down1": {
"desc": ["进驻贸易站时,订单获取效率+20%,且订单上限-2订单最少为1"],
"efficient": {
"all": 19.8
"all": 10
},
"name": ["威压"],
"template": "Bskill_tra_spd&limit_down1.png"
@@ -3452,7 +3452,7 @@
"bskill_tra_spd&limit_down2": {
"desc": ["进驻贸易站时,订单获取效率+25%,且订单上限-6订单最少为1"],
"efficient": {
"all": 24.4
"all": 4.1
},
"name": ["不怒自威"],
"template": "Bskill_tra_spd&limit_down2.png"

View File

@@ -1687,6 +1687,126 @@
"sortId": -10000,
"usage": "可在突破里程碑中兑换奖励。"
},
"act1vhalfidle_asc_cst": {
"classifyType": "NONE",
"description": "代表着精英术师干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_cst.png",
"name": "术师进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_asc_grd": {
"classifyType": "NONE",
"description": "代表着精英近卫干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_grd.png",
"name": "近卫进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_asc_med": {
"classifyType": "NONE",
"description": "代表着精英医疗干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_med.png",
"name": "医疗进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_asc_pio": {
"classifyType": "NONE",
"description": "代表着精英先锋干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_pio.png",
"name": "先锋进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_asc_snp": {
"classifyType": "NONE",
"description": "代表着精英狙击干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_snp.png",
"name": "狙击进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_asc_spc": {
"classifyType": "NONE",
"description": "代表着精英特种干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_spc.png",
"name": "特种进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_asc_sup": {
"classifyType": "NONE",
"description": "代表着精英辅助干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_sup.png",
"name": "辅助进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_asc_tnk": {
"classifyType": "NONE",
"description": "代表着精英重装干员职称的信物。持有它便说明持有者已经在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_asc_tnk.png",
"name": "重装进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中进行干员精英职称晋升。"
},
"act1vhalfidle_gacha_newplayer": {
"classifyType": "NONE",
"description": "封装矿核精炼提纯后的产物,存量稀少,一般作为开拓新生产基地时的启动资源使用。",
"icon": "act1vhalfidle_gacha_newplayer.png",
"name": "精炼矿核",
"sortId": -10000,
"usage": "可用来在专项任命中任命干员。"
},
"act1vhalfidle_gacha_normal": {
"classifyType": "NONE",
"description": "从源石矿脉核心位置取出并妥善封存的矿石样本。在缺少必要精炼提纯工业条件的环境下,封装矿核可以作为高纯度源石燃料的替代品。",
"icon": "act1vhalfidle_gacha_normal.png",
"name": "封装矿核",
"sortId": -10000,
"usage": "可用来在随机任命中任命干员。"
},
"act1vhalfidle_itempack_asc": {
"classifyType": "NONE",
"description": "代表着精英称号的信物。持有它便说明持有者在前哨支点的生产建设中得到了充分的认可。",
"icon": "act1vhalfidle_itempack_asc.png",
"name": "精英进阶信物",
"sortId": -10000,
"usage": "可用来在次生预案中为干员晋升精英职称。"
},
"act1vhalfidle_level_exp": {
"classifyType": "NONE",
"description": "踏入前哨支点,最为必需的便是不怕艰苦的勇气和谦虚好学的态度。请牢记:安全生产,人人有责。从头学起,分秒必争。",
"icon": "act1vhalfidle_level_exp.png",
"name": "培训手册",
"sortId": -10000,
"usage": "可用来在次生预案中提升干员的培训等级。"
},
"act1vhalfidle_skill_exp": {
"classifyType": "NONE",
"description": "生产建设所需的技巧并不比在战场上厮杀需要的少。请牢记:时时注意,处处留神。齐心协力,共同进步。",
"icon": "act1vhalfidle_skill_exp.png",
"name": "技巧手册",
"sortId": -10000,
"usage": "可用来在次生预案中提升干员的技能等级。"
},
"act1vhalfidle_strategy_point": {
"classifyType": "NONE",
"description": "带有可露希尔加密签名的虚拟信标,投放数量经过她的精密计算,可以确保从罗德岛总部调拨的援助得到更有效率的使用。\n“比起一张呆板的生产计划表格这样难道不是更有趣吗”",
"icon": "act1vhalfidle_strategy_point.png",
"name": "策略信标",
"sortId": -10000,
"usage": "可用来在次生预案中应用营建策略。"
},
"act1vhalfidle_token_point": {
"classifyType": "NONE",
"description": "罗德岛绝非一天建成。但每一天,我们都会将它建设得比昨天更强大。\n“为了罗德岛。”",
"icon": "act1vhalfidle_token_point.png",
"name": "资源点数",
"sortId": -10000,
"usage": "各类建设资源经换算后得出的点数。凭此点数可向可露希尔换取奖励。"
},
"act20side_token_book": {
"classifyType": "NONE",
"description": "纸页上留有各种不同的笔迹,甚至可以从数量上判断杂志转手的次数。其中大多是无意义的涂鸦,但智慧的闪光也散落其间。",

View File

@@ -172,7 +172,7 @@
{
"name": "藏宝港湾",
"option_num": 2,
"choose": 1
"choose": 2
},
{
"name": "宝箱之舞",
@@ -182,7 +182,7 @@
{
"name": "狗眼婆娑",
"option_num": 2,
"choose": 1
"choose": 2
},
{
"name": "鸭力测试",

View File

@@ -190,11 +190,23 @@
{
"name": "别打扰他们",
"option_num": 2,
"choose": 1,
"next_event": "别打扰他们-战斗"
},
{
"name": "别打扰他们-战斗",
"option_num": 1,
"choose": 1
},
{
"name": "复仇剧",
"option_num": 2,
"choose": 1,
"next_event": "复仇剧-战斗"
},
{
"name": "复仇剧-战斗",
"option_num": 1,
"choose": 1
},
{

View File

@@ -283,17 +283,17 @@
{
"name": "沼泽里的抽泣声",
"option_num": 3,
"choose": 1
"choose": 3
},
{
"name": "有利可图",
"option_num": 3,
"choose": 1
"choose": 3
},
{
"name": "随行人员",
"option_num": 3,
"choose": 1
"choose": 3
},
{
"name": "邪恶计划鸭",
@@ -336,12 +336,12 @@
{
"name": "请君入戏",
"option_num": 3,
"choose": 1
"choose": 3
},
{
"name": "北风女巫",
"option_num": 3,
"choose": 1,
"choose": 3,
"choices": [
{
"name": "乖乖照做",

View File

@@ -0,0 +1,85 @@
{
"MiniGame@RebuildingMandate@Begin": {
"algorithm": "JustReturn",
"next": ["MiniGame@RebuildingMandate@StartExecution", "MiniGame@RebuildingMandate@StageName"]
},
"MiniGame@RebuildingMandate@StageName": {
"action": "ClickSelf",
"roi": [597, 348, 219, 128],
"next": ["MiniGame@RebuildingMandate@StartExecution", "#self"]
},
"MiniGame@RebuildingMandate@StartExecution": {
"action": "ClickSelf",
"roi": [1040, 584, 240, 136],
"next": ["#self", "MiniGame@RebuildingMandate@NextStep"]
},
"MiniGame@RebuildingMandate@NextStep": {
"action": "ClickSelf",
"roi": [1086, 611, 194, 109],
"next": ["MiniGame@RebuildingMandate@StartBuildingProduction", "#self"]
},
"MiniGame@RebuildingMandate@StartBuildingProduction": {
"action": "ClickSelf",
"roi": [1003, 609, 277, 111],
"preDelay": 1000,
"postDelay": 5000,
"next": ["#self", "MiniGame@RebuildingMandate@WaitSkip"]
},
"MiniGame@RebuildingMandate@WaitSkip": {
"algorithm": "JustReturn",
"postDelay": 1000,
"next": ["MiniGame@RebuildingMandate@Skip", "#self"]
},
"MiniGame@RebuildingMandate@Skip": {
"action": "ClickSelf",
"roi": [1079, 0, 201, 144],
"postDelay": 1000,
"next": ["MiniGame@RebuildingMandate@SkipConfirm", "#self"]
},
"MiniGame@RebuildingMandate@SkipConfirm": {
"action": "ClickSelf",
"roi": [714, 284, 168, 155],
"postDelay": 1000,
"next": ["#self", "MiniGame@RebuildingMandate@Lava"]
},
"MiniGame@RebuildingMandate@Lava": {
"algorithm": "JustReturn",
"action": "Swipe",
"specialParams": [200, 0, 2, 0],
"specificRect": [1135, 656, 8, 8],
"rectMove": [733, 303, 8, 8],
"postDelay": 500,
"next": ["MiniGame@RebuildingMandate@LavaConfirm"]
},
"MiniGame@RebuildingMandate@LavaConfirm": {
"algorithm": "JustReturn",
"action": "Swipe",
"specialParams": [200, 0, 2, 0],
"specificRect": [733, 303, 8, 8],
"rectMove": [233, 303, 8, 8],
"next": ["MiniGame@RebuildingMandate@DoubleSpeed"]
},
"MiniGame@RebuildingMandate@DoubleSpeed": {
"action": "ClickSelf",
"roi": [1016, 0, 167, 166],
"postDelay": 1000,
"next": ["#self", "MiniGame@RebuildingMandate@WaitForEnd"]
},
"MiniGame@RebuildingMandate@WaitForEnd": {
"roi": [1027, 499, 247, 125],
"postDelay": 5000,
"next": ["MiniGame@RebuildingMandate@DoNotApply", "#self"]
},
"MiniGame@RebuildingMandate@DoNotApply": {
"action": "ClickSelf",
"roi": [213, 574, 241, 143],
"postDelay": 1000,
"next": ["MiniGame@RebuildingMandate@SettlementStageName", "#self"]
},
"MiniGame@RebuildingMandate@SettlementStageName": {
"action": "ClickSelf",
"roi": [0, 572, 458, 148],
"postDelay": 1000,
"next": ["#self", "MiniGame@RebuildingMandate@Begin"]
}
}

View File

@@ -78,7 +78,9 @@
"template": "Roguelike@ExitThenAbandon.png",
"next": ["Phantom@Roguelike@ExitThenAbandon_ToHardest", "Phantom@Roguelike@Abandon"]
},
"Phantom@Roguelike@GamePass": {},
"Phantom@Roguelike@GamePass": {
"template": ["Phantom@Roguelike@GamePass.png", "Phantom@Roguelike@GamePass4.png"]
},
"Phantom@Roguelike@GamePassSkip1": {},
"Phantom@Roguelike@GamePassSkip1Confirm": {
"next": [

View File

@@ -690,6 +690,8 @@
"Doc": "base_task",
"template": "empty.png",
"action": "ClickSelf",
"postDelay": 3000,
"postDelay_Doc": "多加点延迟防止出现一个一闪而过的跳过被GamePassSkip2识别到",
"roi": [715, 282, 171, 155]
},
"Roguelike@GamePassSkip2": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -4,8 +4,8 @@
"time": 1756368000
},
"gacha": {
"pool": "未致蒙尘",
"time": 1758268800
"pool": "定向甄选",
"time": 1758787200
},
"last_updated": "2025-09-20 04:31:06.000"
"last_updated": "2025-09-25 16:50:00.000"
}

View File

@@ -863,7 +863,6 @@ asst::ResultOrError<asst::TaskData::RawCompileResult> asst::TaskData::compile_ra
return TaskDataSymbol::append_prefix(
symbol,
prefix,
self_name,
get_raw,
[&](const TaskList& raw_or_empty) -> TaskDataSymbol::SymbolsOrError {
if (auto opt = compile_raw_tasklist(raw_or_empty, self_name, get_raw, allow_duplicate)) {

View File

@@ -3,20 +3,15 @@
asst::TaskDataSymbol::SymbolsOrError asst::TaskDataSymbol::append_prefix(
const TaskDataSymbol& symbol,
const TaskDataSymbol& prefix,
std::string_view self_name,
std::function<TaskDerivedConstPtr(std::string_view)> get_raw,
std::function<SymbolsOrError(const TaskList&)> compile_tasklist)
{
// 注意A@#self 是 A 而不是 A@self_name, #self@A 是 self_name@A 而不是 A
std::string_view prefix_name;
if (prefix == SharpSelf) {
prefix_name = self_name;
}
else if (prefix.is_name()) {
if (prefix.is_name()) {
prefix_name = prefix.name();
}
else [[unlikely]] {
return { std::nullopt, "prefix " + prefix.name() + " is not name or self" };
return { std::nullopt, "prefix " + prefix.name() + " is not name" };
}
if (prefix_name.empty()) {
return std::vector { symbol };

Some files were not shown because too many files have changed in this diff Show More