Compare commits

...

74 Commits

Author SHA1 Message Date
uye
031e99c295 feat: 增加自动下载更新包提示文本 2026-06-29 14:46:42 +08:00
uye
84b560d3cd feat: 新增隐藏更新进度提示框选项 2026-06-29 14:37:02 +08:00
MistEO
ac9dbff483 ci: 强调要读skills 2026-06-29 12:15:19 +08:00
Constrat
b926a838c2 chore: revert discord notification embed color 2026-06-28 16:56:53 +02:00
uye
d9e8ec97ee Release v6.13.0 (#17210)
## Summary by Sourcery

为 v6.13.0 更新发布通知和问题分析工作流。

新特性:
- 在 Discord 发布通知中新增分别针对 Windows x64/ARM 和 Linux x64/ARM 的下载链接。

增强:
- 修订 Discord 发布通知消息文案和嵌入样式。
- 将问题 AI 分析工作流从基于 Codex 的集成切换为基于 Claude 的集成,包括作业命名和输出引用。

CI:
- 更新用于 Discord 发布通知和问题 AI 分析的 GitHub Actions 工作流,以反映新的构建产物和 AI 提供商配置。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Update release notification and issue analysis workflows for v6.13.0.

New Features:
- Add separate Windows x64/ARM and Linux x64/ARM download links to
Discord release notifications.

Enhancements:
- Revise Discord release notification message copy and embed styling.
- Switch the issue AI analysis workflow from Codex-based to Claude-based
integration, including job naming and output references.

CI:
- Update GitHub Actions workflows for Discord release notifications and
issue AI analysis to reflect new artifacts and AI provider
configuration.

</details>
2026-06-28 21:25:15 +08:00
uye
d92fa39e88 docs: update skill and changelog 2026-06-28 21:24:19 +08:00
MistEO
30477505e8 ci: AI changelog generation with auto PR creation (#17214)
* ci: AI changelog generation with auto PR creation

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: force write CHANGELOG.md from AI output

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: add warning when changelog has no diff

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 14:42:57 +08:00
MistEO
0fc8263854 chore: switch AI issue analysis to unified main branch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 13:36:13 +08:00
dependabot[bot]
ff7306775b ci: bump actions/cache from 5 to 6 in /.github/workflows in the github-actions group (#17207)
Signed-off-by: dependabot[bot] <support@github.com>
2026-06-28 13:24:55 +08:00
uye
8af85aa4ec docs: changelog 2026-06-28 10:09:07 +08:00
github-actions[bot]
2bf335d35d feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28303359795
[skip changelog]
2026-06-27 22:12:56 +00:00
MistEO
18d764643a chore: switch AI issue analysis from Codex to Claude
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 00:22:42 +08:00
Constrat
62f456dc5a style: update discord release notification 2026-06-27 12:03:59 +02:00
Constrat
ca19cb1af1 fix: discord release link for linux x86_64 2026-06-27 10:06:59 +02:00
uye
58e3d06b27 Release v6.13.0-beta.3 (#17203)
## 由 Sourcery 总结

改进运行时语言切换、跨实例属性依赖处理和 OCR 可靠性,同时优化任务队列 UI 行为以及多处彩蛋流程。

新功能:
- 支持在多个 ViewModel 间进行跨实例和基于属性的依赖绑定,包括针对语言变化的全局刷新钩子。
- 引入可复用的 `LocalizedObservableList` 帮助类,用于集中管理本地化的选项列表,并在语言改变时自动刷新。
- 新增统一的非阻塞 `EasterEggDialog` 视图和辅助 API,用于在设置页和助理流程中展示脚本化对话框。
- 通过 `LocalizationHelper` 暴露运行时语言重载能力,提供 `LanguageChanged` 事件和
`CurrentCulture`,实现无需重启应用的热语言切换。
- 增强 `OcrPackNcnn` 中的 OCR 行为,以兼容 fastdeploy
的检测与识别流程以及空检测场景;在未检测到任何框时,将整张图片视作一行处理。
- 新增 GPU 选项视图模型封装(`GpuOptionItem`),以支持本地化的 GPU 选择并保持稳定的 `ComboBox` 绑定行为。
- 扩展成就系统,增加发布阶段元数据,包括本地化的工具提示和基于阶段的 UI 提示。

错误修复:
- 通过将 `LanguageChanged` 接入设置、任务队列、工具箱、计时器、关卡和多个设置面板,修复多处与语言相关的陈旧文本问题。
- 在临时 ViewModel 被释放时跟踪并清理跨实例属性依赖,防止内存泄漏和“僵尸”通知。
- 将 DWM 组合被禁用和拖放过程中的 COM 异常视为非致命错误,避免不必要的应用退出,同时仍然弹出错误对话框。
- 调整预处理、候选过滤和多边形评分,使其与 fastdeploy 行为一致,修复小 ROI 场景下的 OCR
误检问题,包括丢弃过于细长的检测框。
- 确保本地化的条目名称和关卡工具提示在语言更改时能够正确回退与重新加载。
- 修正肉鸽难度选择校验逻辑,并在主题特定限制变化时正确更新当前显示的难度。
- 改进对永久关卡阻塞后续关卡的处理,在配置会导致静默跳过后续关卡时对用户进行警告。
- 通过将显示文本与底层 `GpuOption` 值解耦,修复语言切换时的 GPU 选择与 `ComboBox` 刷新问题。

增强优化:
- 重构本地化处理逻辑,让更多设置与任务相关的 ViewModel 订阅集中式的 `LanguageChanged`
事件,并就地刷新缓存的显示字符串,而非依赖重启。
- 优化 Pallas 语言“醉酒/宿醉”彩蛋流程,避免强制重启,使用内部语言切换辅助工具,并在启动与退出时展示非阻塞对话框。
- 将多种对话框控件(文本输入、定时文本以及新的
`EasterEggDialog`)统一到重命名后的视图类下,并更新在任务队列和其他界面中的使用方式。
- 改进 `StageManager` 和 `StageInfo`,同时存储本地化键和值,使关卡名称、提示和小游戏入口在语言变更时可动态刷新。
- 使多个设置列表(连接配置、客户端类型、无人机使用模式、基础设施模式、更新通道、肉鸽主题、收容模式、战斗序列/重置模式等)现代化,统一使用
`LocalizedObservableList`,以实现更简洁、可热插拔的本地化方案。
- 收紧计时器、协作作战、工具箱、托盘图标、后置动作以及根视图在语言变化和启动流程中的行为,包括自动刷新标题与工具提示。
- 添加结构化的成就阶段发布日期映射,以支持更具信息量的成就 UI。
- 对日志作用域和若干 UI 绑定做小规模重构,包括语言切换后的非阻塞关卡/日期刷新以及废弃配置键的清理。

杂务:
- 更新多份游戏资源 JSON 文件(关卡、任务、物品索引、地块位置、版本清单),以适配最新内容与关卡布局,包括新的危机合约 v2
地块位置信息。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Improve runtime language switching, cross-instance property dependency
handling, and OCR robustness, while refining task queue UI behaviors and
various Easter egg flows.

New Features:
- Support cross-instance and attribute-based property dependencies
across ViewModels, including global refresh hooks for language changes.
- Introduce a reusable LocalizedObservableList helper to centralize
localized option lists that automatically refresh on language change.
- Add a unified non-blocking EasterEggDialog view and helper APIs for
showing scripted dialogs from settings and assistant flows.
- Expose runtime language reload via LocalizationHelper with a
LanguageChanged event and CurrentCulture, enabling hot language
switching without app restart.
- Enhance OCR behavior in OcrPackNcnn to handle fastdeploy-compatible
detection, recognition, and empty-detection cases, including treating
the whole image as a line when no boxes are found.
- Add GPU option view-model wrapper (GpuOptionItem) to support localized
GPU selection with stable ComboBox binding behavior.
- Extend achievements with release phase metadata including localized
tooltips and phase-based UI hints.

Bug Fixes:
- Fix multiple language-related stale-text issues by wiring
LanguageChanged into Settings, task queues, toolbox, timers, stages, and
various settings panels.
- Prevent memory leaks and zombie notifications by tracking and cleaning
cross-instance property dependencies when transient ViewModels are
disposed.
- Handle DWM composition disabled and drag-drop COM exceptions as
non-fatal, avoiding unnecessary application exits while still surfacing
error dialogs.
- Address OCR mis-detections on small ROIs by aligning preprocessing,
candidate filtering, and polygon scoring with fastdeploy behavior,
including dropping overly thin boxes.
- Ensure localized item names and stage tooltips fall back gracefully
and reload correctly when the language is changed.
- Correct roguelike difficulty selection validation and update of the
displayed difficulty when theme-specific limits change.
- Improve handling of permanent stages blocking later entries by warning
the user when configuration would silently skip subsequent stages.
- Fix GPU selection and ComboBox refresh issues when language changes by
decoupling display text from the underlying GpuOption value.

Enhancements:
- Rework localization handling so many settings and task-related
ViewModels subscribe to a central LanguageChanged event and refresh
cached display strings in-place instead of requiring restarts.
- Refine Pallas language "drunk/hangover" easter egg flow to avoid
forced restarts, use internal language switching helpers, and show
non-blocking dialogs on start and exit.
- Unify various dialog controls (text input, timed text, and new
EasterEggDialog) under renamed view classes and updated usages in
TaskQueue and other screens.
- Improve StageManager and StageInfo to store localization keys
alongside values, enabling dynamic refresh of stage names, tips, and
mini-game entries on language change.
- Modernize several settings lists (connection configs, client types,
drones usage, infrast modes, update channels, roguelike themes,
reclamation modes, fight series/reset modes, etc.) to use
LocalizedObservableList for cleaner, hot-swappable localization.
- Tighten timer, copilot, toolbox, notify icon, post-action, and root
view behaviors around language changes and startup flows, including
automatic title and tooltip refreshes.
- Add structured release date mapping for achievement phases to support
more informative achievement UI.
- Minor refactors to logging scopes and miscellaneous UI bindings,
including non-blocking stage/date updates after language changes and
cleanup of obsolete configuration keys.

Chores:
- Update multiple game resource JSON files (stages, tasks, item indexes,
tile positions, version manifests) for the latest content and stage
layouts, including new crisis v2 tile position data.

</details>
2026-06-27 13:53:51 +08:00
Aliothmoon
72c68bd1e0 chore: 补点注释 (#17205) 2026-06-27 13:53:32 +08:00
uye
19e6e1d70b fix. 复制任务时保留原任务的启用状态 2026-06-27 13:36:27 +08:00
uye
2cad3baf92 docs: changelog 2026-06-27 13:28:12 +08:00
uye
5d5b66a1ef ai: 优化 changelog skill,changelog 生成改用 ai 生成 2026-06-27 13:28:03 +08:00
uye
cdbf31debb feat: 增加 DWM 被禁用与重复拖动解决方案提示 2026-06-27 12:37:39 +08:00
github-actions[bot]
0239409ef4 chore: Auto Update Game Resources - 2026-06-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28232398301

[skip changelog]
2026-06-26 10:29:16 +00:00
github-actions[bot]
8927eb7a15 feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28203974590
[skip changelog]
2026-06-25 22:17:06 +00:00
github-actions[bot]
b81e1d49b5 chore: Auto Update Game Resources - 2026-06-25
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28157219377

[skip changelog]
2026-06-25 08:29:20 +00:00
uye
7a92d322d8 refactor: 移动 TextDialogWithTimerUserControl 到 Dialogs 文件夹并统一命名
- 将 TextDialogWithTimerUserControl 从 Views/UserControl/ 移至 Views/Dialogs/,重命名为 TextWithTimerDialogView
- 将 TextDialogUserControl 重命名为 TextDialogView,统一 Dialogs 文件夹内的 *DialogView 命名约定
- 同步更新命名空间、x:Class、copyright 注释及 TaskQueueViewModel 中的引用
2026-06-25 15:43:38 +08:00
uye
a36947a8ec chore: 喝酒堂堂复活 2026-06-25 14:13:38 +08:00
uye
eb318012c4 feat: 无痛喝酒 2026-06-25 14:11:46 +08:00
uye
d17249649e feat: 不重启切换语言 (#17183)
* feat: 不重启切换语言

* feat: 部分文本与列表更新

* feat: 右键图标菜单、关卡提示、牛杂、关卡列表、指定材料

* chore: Stage 刷新

* feat: LocalizedList

* chore: SettingsViewModel

* chore: ConnectSettingsUserControlModel

* chore: GameSettingsUserControlModel

* chore: VersionUpdateSettingsUserControlModel

* chore: InfrastSettingsUserControlModel

* chore: RecruitSettingsUserControlModel

* chore: RoguelikeSettingsUserControlModel

* chore: UserDataUpdateSettingsUserControlModel

* chore: LastSyncTime

* chore: 设置指引重叠

* chore: PerformanceUserControlModel

* chore: GPU 绑定

* chore: FightSettingsUserControlModel

* chore: GuiSettingsUserControlModel

* style: FightSettingsUserControlModel

* chore: ReclamationSettingsUserControlModel

* feat: 干员识别/仓库识别 支持动态切换语言

* feat: 干员名称显示语言

* perf: 优化 IsLocalizationDictionary 判断

* style: 空行

* chore: UnInitializePropertyDependencies / GC.SuppressFinalize(this);

* chore: PropertyDependsOnUtility 增加锁

* chore: 移除未使用 using

* chore: 更新时序

* chore: 在 UI 线程 Reload

* fix: OperNameLanguageModeList 去重

* chore: LocalizedList -> LocalizedObservableList

* fix: 修复 TaskItemViewModel.Name 绕过 _name 字段导致 SetAndNotify 变更检测失效

getter 改为复用 BaseTask.NameOrTaskType(与原构造参数语义一致),
移除已成为死代码的 _name 字段;setter 写配置后显式 NotifyOfPropertyChange,
确保外部重命名后 UI 能收到通知。

* fix: UnInitializePropertyDependencies 清理孤儿外部实例避免处理器累积

当某 externalInstance 的 propMap 完全清空后,移除该键并反订阅其
externalHandler,避免 TaskItemViewModel 反复创建/销毁时 _externalHandlers
外壳持续累积(虽不产生错误通知,但持有空字典浪费内存)。

* rft: 提取 RefreshInverseModeText 消除 InverseMode 自赋值 hack

原 LanguageChanged 回调用 InverseMode = InverseMode 触发 setter 内的
本地化文本刷新,依赖 SetAndNotify 不 early-return 的副作用,语义脆弱。
提取 RefreshInverseModeText() 方法供 setter 和回调共用。

* rft: UseStoneString 改用 SuppressMessage 替代 #pragma

将 #pragma warning disable CA1822 改为 [SuppressMessage],
并补充 Justification 说明必须保持实例成员以支持 PropertyDependsOn 反射触发通知。

* docs: 补充 LanguageChanged 订阅单例约定注释

在 LanguageChanged 事件声明处补充订阅约定(必须是 IoC 单例,
非单例需 Dispose 时清理跨实例依赖);在 ToolboxViewModel(Stylet IoC 单例)
订阅处标注无需取消订阅。

* rft: 删除 TaskItemViewModel 构造函数的 name 参数

Name getter 已改为从配置动态读取 NameOrTaskType,构造时传入的 name
不再有任何作用,删除该参数及三处调用点的实参。

* chore: 简化绑定

* fix: 修复语言切换时 PropertyDependsOn 回调读到旧字典的时序竞态

原先 Language setter 里先 SetAndNotify 再 Reload,导致同步通知链中
PropertyDependsOn(Language) 回调执行时 ResourceDictionary 尚未替换,
LocalizationHelper.GetString 拿到的是旧语言文本。

调整为先 Reload(内部先替换字典再触发 LanguageChanged),再更新
_language 字段并触发 PropertyChanged,确保两条通知链路
(LanguageChanged 订阅者 + PropertyDependsOn 回调)读到的都是新语言。

* refactor: LocalizedObservableList 内部支持增删,消除 Zip 脱节隐患

将 _entries 从 readonly array 改为可变 List,新增 Add/Remove/RemoveAt/
Insert/Clear 方法同步维护 _entries 与 Items,确保两者始终一一对应。

此前 RefreshLocalization 用 Zip 遍历,对运行时动态添加的项(如
OperNameLanguageForce)不会刷新 Display,需调用方手动补偿。现在动态项
也纳入 _entries,RefreshLocalization 改为索引遍历,覆盖全部条目。

同步修正类头 XML 注释:去掉不实的 INotifyPropertyChanged 声明与
'转发 item 属性变更'描述(item 的 PropertyChanged 由 WPF 直接监听)。

调用方 GuiSettingsUserControlModel 改用 Add/Remove API,移除
RefreshLocalization 里的手动补偿逻辑。

* fix: 任务排序/增删后 Index 变化时自动刷新 Name

TaskItemViewModel.Name 的 getter 依赖 Index 从配置读取,但此前只声明了
对 Language 的跨实例依赖,拖拽排序/增删任务导致 Index 变化时 Name 不会被
通知刷新,自定义名任务可能短暂显示错位。

将 PropertyDependsOnAttribute 的 AllowMultiple 改为 true,为 Name 额外声明
[PropertyDependsOn(nameof(Index))],使 Index 变化时自动触发 Name 刷新。
Utility 的 GetCustomAttributes 循环已原生支持多 attribute,无需改动。

* chore: 图标 Unloaded 时取消 LanguageChanged 订阅

* fix: Pormpt1/Pormpt2 小提示刷新
2026-06-25 13:14:55 +08:00
uye
d31ca81e83 feat: 常驻关卡备选提示 2026-06-25 10:56:18 +08:00
github-actions[bot]
5bfbd22215 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28130848588
[skip changelog]
2026-06-24 21:31:18 +00:00
github-actions[bot]
9ab5912a4b chore: Auto Update Game Resources - 2026-06-24
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/28126992299

[skip changelog]
2026-06-24 20:20:15 +00:00
Manicsteiner
382f10a58c chore: JP episide new navigation and JieGarden theme recruit 2026-06-24 23:56:21 +08:00
Constrat
295f2073bd chore: EN preload lone trail + fix JieGarden themes 2026-06-24 14:42:17 +02:00
Constrat
821d5fc425 fix: EnterEpisodeNew-Click EN 2026-06-24 14:00:43 +02:00
HX3N
1676cb7de4 chore: KR remove deprecated EnterEpisodeNew 2026-06-24 20:33:55 +09:00
Aliothmoon
efb3c7a567 fix: 部分设备界园树洞是非境识别错误 (#17181) 2026-06-24 10:58:48 +08:00
Aliothmoon
418a4aa0e0 fix: ncnn 对齐 fastdeploy 的 det 缩放与 rec 预处理 (#17182)
* fix: 对齐 OcrPackNcnn det 缩放算法与 fastdeploy

- 小 ROI 下 ceil 直接就爆了,识别会出现问题

* fix: ncnn 对齐 fastdeploy de1通道序/打分/裁剪

* fix: OcrPackNcnn det 无框兜底走整图 rec,尺寸过滤对齐 fastdeploy
2026-06-24 10:58:22 +08:00
uye
cab1ca8cca chore: dlc 还是放后面,毕竟钥匙扣已经这么做了)
[skip changelog]
2026-06-23 15:52:33 +08:00
Manicsteiner
130164e925 chore: JP ocr edits 2026-06-23 13:24:42 +08:00
uye
85024b6141 rft: 优化成就 DLC 标识显示效果与提示,增加对应 DLC 上线时间提示 2026-06-23 12:24:02 +08:00
github-actions[bot]
aa47abfacb chore: Auto Templates Optimization
Triggered by fa8d0f8344

[skip changelog]
2026-06-23 02:04:54 +00:00
Manicsteiner
fa8d0f8344 chore: JP LoneTrail theme and JieGarden theme update (#17175)
主题预载
界园主题突然大改了一遍,其他几个免费主题好像没问题,付费主题等issue和贴图()
2026-06-23 10:04:32 +08:00
HX3N
95a3fa6236 fix: expanded KR training roi for wrapped names 2026-06-23 10:49:39 +09:00
github-actions[bot]
cf61b5b6e4 chore: Auto Templates Optimization
Triggered by 20056e52b9

[skip changelog]
2026-06-22 23:41:02 +00:00
HX3N
20056e52b9 chore: KR LoneTrail theme 2026-06-23 08:07:32 +09:00
HX3N
746daa27cf chore: KR ocr edits 2026-06-23 08:07:31 +09:00
Constrat
c3dffe9929 fix: future alter operators EN 2026-06-22 18:34:10 +02:00
github-actions[bot]
94e0addc9a chore: Auto Update Game Resources - 2026-06-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27953171369

[skip changelog]
2026-06-22 12:38:44 +00:00
github-actions[bot]
1083ee342e chore: Auto Update Game Resources - 2026-06-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27933177568

[skip changelog]
2026-06-22 06:11:46 +00:00
uye
f9dbbb36b9 Release v6.13.0-beta.2 (#17170)
## Summary by Sourcery

错误修复:
- 在 `MultiCopilotTaskPlugin` 中遍历导航重试循环时,使用正确的最大重试配置。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Bug Fixes:
- Use the correct maximum retry configuration when iterating the
navigation retry loop in MultiCopilotTaskPlugin.

</details>
2026-06-22 12:36:59 +08:00
uye
1c4aba28fd docs: Bump version to v6.13.0-beta.2 in CHANGELOG
Updated changelog to reflect version bump to v6.13.0-beta.2 and added fix details.
2026-06-22 12:34:42 +08:00
status102
ba47dd16cf fix: 猪猪 2026-06-22 12:24:31 +08:00
uye
db6bb9c4e6 Release v6.13.0-beta.1 (#17131)
## Summary by Sourcery

为 v6.13.0-beta.1 做准备,加入基于 Android NCNN 的 OCR、Webhook 预设模板,以及多项稳定性与 CI
改进。

New Features:
- 为 Android 构建引入基于 NCNN 的 OCR 实现,同时在其他平台继续使用 FastDeploy OCR。
- 在外部通知设置中新增可选择的 Webhook 预设模板,包括 MeoW 预设。
- 支持「仅配置」的 6 星自动公招确认,并固定公招时间为 9:00。

Bug Fixes:
- 确保 Maa API 更新检查能够遵循全局更新代理配置。
- 修复任务停止与 UI 重置逻辑,避免竞争条件,并确保超时能强制恢复 UI。
- 当在连接过程中已发出停止请求时,阻止协助器(copilot)继续启动。
- 当 Windows 无法显示系统 Toast 通知时,避免显示应用内 Toast 日志,而是改用 Growl 作为回退方案。

Enhancements:
- 重构 OCR 包实现,在其背后使用 pimpl 隔离平台相关的后端实现。
- 调整多协助器导航重试逻辑,更好地尊重已配置的重试次数。
- 改进手动停止行为,将 Core 停止处理和任务结束脚本集中到统一逻辑中。
- 在 Toast 通知失败的情况下,始终使用 Growl 显示失败消息,而不是写入任务日志。
- 刷新明日方舟的关卡方块、关卡、肉鸽和任务元数据资源,以支持最新活动。
- 收紧公招时间处理,将 5 星 / 6 星公招时间固定为 9:00,并打通序列化和工具箱相关逻辑。
- 更新 MaaDeps 下载脚本以拉取 v2.13.1,并使依赖安装脚本路径与当前目录结构保持一致。

Build:
- 在 MaaCore 的 CMake 中拆分 OCR 实现选择:桌面端使用 FastDeploy,Android 使用
NCNN,并相应调整链接依赖。
- 将 Avalonia CI 触发条件限制为相关源码与构建文件,并将默认推送分支切换为 dev-v2。

CI:
- 将各工作流中对 actions/checkout 的使用升级到 v7。
- 在资源同步与模板优化工作流中,将 ad-m/github-push-action 固定到 v1.3.0。
- 将 softprops/action-gh-release 升级到 v3.0.1,用于发布 GitHub Release。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Prepare v6.13.0-beta.1 by adding Android NCNN-based OCR, webhook preset
templates, and various stability and CI improvements.

New Features:
- Introduce NCNN-based OCR implementation for Android builds while
keeping FastDeploy OCR for other platforms.
- Add selectable preset webhook templates, including a MeoW preset, in
external notification settings.
- Support configuration-only 6-star auto-recruit confirmation with fixed
9:00 recruit time.

Bug Fixes:
- Ensure Maa API update checks respect the global update proxy
configuration.
- Fix task stopping and UI reset logic to avoid race conditions and
ensure timeouts force UI recovery.
- Prevent copilot start from proceeding if a stop request was issued
during connection.
- Avoid showing in-app toast logs when Windows toast notifications are
unavailable, instead using Growl fallback.

Enhancements:
- Refactor OCR pack implementation behind a pimpl to separate
platform-specific backends.
- Adjust multi-copilot navigation retry logic to better respect
configured retry counts.
- Improve manual stop behavior to centralize Core stop handling and
end-of-task scripts.
- Always use Growl for toast notification failure messages instead of
task log entries.
- Refresh Arknights tile, stage, roguelike, and task metadata resources
for new events.
- Tighten recruit time handling by fixing 5-star/6-star recruit times to
9:00 and wiring them through serialization and toolbox.
- Update MaaDeps downloader script to pull v2.13.1 and align dependency
setup script paths with current layout.

Build:
- Split OCR implementation selection in MaaCore CMake to use FastDeploy
on desktop and NCNN on Android, adjusting link dependencies accordingly.
- Restrict Avalonia CI triggers to relevant source and build files and
switch its default push branch to dev-v2.

CI:
- Upgrade actions/checkout usage across workflows to v7.
- Pin ad-m/github-push-action to v1.3.0 in resource sync and template
optimization workflows.
- Bump softprops/action-gh-release to v3.0.1 for GitHub release
publishing.

</details>

新功能:
- 为外部通知配置引入内置 webhook 预设模板,包括 MeoW 预设。
- 在外部通知设置界面中开放预设 webhook 的选择,并提供本地化显示名称。

错误修复:
- 在通过 Maa API 检查更新时,使用全局更新代理配置。

优化改进:
- 刷新《明日方舟》的地块位置、关卡、肉鸽和任务元数据资源,并提升资源版本以适配新一批活动。

CI:
- 更新 GitHub workflow,使用 `ad-m/github-push-action` v1.3.0 进行自动推送。

日常维护:
- 调整依赖安装批处理脚本的路径/名称,以与当前工具布局保持一致。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

为 v6.13.0-beta.1 做准备,加入基于 Android NCNN 的 OCR、Webhook 预设模板,以及多项稳定性与 CI
改进。

New Features:
- 为 Android 构建引入基于 NCNN 的 OCR 实现,同时在其他平台继续使用 FastDeploy OCR。
- 在外部通知设置中新增可选择的 Webhook 预设模板,包括 MeoW 预设。
- 支持「仅配置」的 6 星自动公招确认,并固定公招时间为 9:00。

Bug Fixes:
- 确保 Maa API 更新检查能够遵循全局更新代理配置。
- 修复任务停止与 UI 重置逻辑,避免竞争条件,并确保超时能强制恢复 UI。
- 当在连接过程中已发出停止请求时,阻止协助器(copilot)继续启动。
- 当 Windows 无法显示系统 Toast 通知时,避免显示应用内 Toast 日志,而是改用 Growl 作为回退方案。

Enhancements:
- 重构 OCR 包实现,在其背后使用 pimpl 隔离平台相关的后端实现。
- 调整多协助器导航重试逻辑,更好地尊重已配置的重试次数。
- 改进手动停止行为,将 Core 停止处理和任务结束脚本集中到统一逻辑中。
- 在 Toast 通知失败的情况下,始终使用 Growl 显示失败消息,而不是写入任务日志。
- 刷新明日方舟的关卡方块、关卡、肉鸽和任务元数据资源,以支持最新活动。
- 收紧公招时间处理,将 5 星 / 6 星公招时间固定为 9:00,并打通序列化和工具箱相关逻辑。
- 更新 MaaDeps 下载脚本以拉取 v2.13.1,并使依赖安装脚本路径与当前目录结构保持一致。

Build:
- 在 MaaCore 的 CMake 中拆分 OCR 实现选择:桌面端使用 FastDeploy,Android 使用
NCNN,并相应调整链接依赖。
- 将 Avalonia CI 触发条件限制为相关源码与构建文件,并将默认推送分支切换为 dev-v2。

CI:
- 将各工作流中对 actions/checkout 的使用升级到 v7。
- 在资源同步与模板优化工作流中,将 ad-m/github-push-action 固定到 v1.3.0。
- 将 softprops/action-gh-release 升级到 v3.0.1,用于发布 GitHub Release。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Prepare v6.13.0-beta.1 by adding Android NCNN-based OCR, webhook preset
templates, and various stability and CI improvements.

New Features:
- Introduce NCNN-based OCR implementation for Android builds while
keeping FastDeploy OCR for other platforms.
- Add selectable preset webhook templates, including a MeoW preset, in
external notification settings.
- Support configuration-only 6-star auto-recruit confirmation with fixed
9:00 recruit time.

Bug Fixes:
- Ensure Maa API update checks respect the global update proxy
configuration.
- Fix task stopping and UI reset logic to avoid race conditions and
ensure timeouts force UI recovery.
- Prevent copilot start from proceeding if a stop request was issued
during connection.
- Avoid showing in-app toast logs when Windows toast notifications are
unavailable, instead using Growl fallback.

Enhancements:
- Refactor OCR pack implementation behind a pimpl to separate
platform-specific backends.
- Adjust multi-copilot navigation retry logic to better respect
configured retry counts.
- Improve manual stop behavior to centralize Core stop handling and
end-of-task scripts.
- Always use Growl for toast notification failure messages instead of
task log entries.
- Refresh Arknights tile, stage, roguelike, and task metadata resources
for new events.
- Tighten recruit time handling by fixing 5-star/6-star recruit times to
9:00 and wiring them through serialization and toolbox.
- Update MaaDeps downloader script to pull v2.13.1 and align dependency
setup script paths with current layout.

Build:
- Split OCR implementation selection in MaaCore CMake to use FastDeploy
on desktop and NCNN on Android, adjusting link dependencies accordingly.
- Restrict Avalonia CI triggers to relevant source and build files and
switch its default push branch to dev-v2.

CI:
- Upgrade actions/checkout usage across workflows to v7.
- Pin ad-m/github-push-action to v1.3.0 in resource sync and template
optimization workflows.
- Bump softprops/action-gh-release to v3.0.1 for GitHub release
publishing.

</details>

</details>
2026-06-21 17:07:07 +08:00
uye
349a0bf730 docs: changelog 2026-06-21 16:47:41 +08:00
uye
e2400684bb chore: 通知不可用时记录日志 2026-06-21 16:46:15 +08:00
uye
6cec1e9ced chore: 移除未使用变量 2026-06-21 16:18:38 +08:00
uye
d821607983 chore: copilot stop 改为 Task 2026-06-21 16:18:37 +08:00
Status102
8f860635aa fix: 错误短路 2026-06-21 16:05:40 +08:00
uye
222c853263 rft: 无法显示系统通知时回退到软件内通知,启动时日志中的通知不可用提示改为 growl 提示 (#17165) 2026-06-21 15:43:34 +08:00
dependabot[bot]
8276849f1a ci:将 /.github/workflows 中的 github-actions 组更新 2 次 (#17163)
Bumps the github-actions group in /.github/workflows with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

Updates `softprops/action-gh-release` from 3.0.0 to 3.0.1
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-20 23:08:27 +08:00
uye
f24c0e237a feat: 新增可通过手动修改配置文件开启 6 星自动公招,将是否招募和招募时间选项移入常规设置 (#17154) 2026-06-20 16:46:05 +08:00
Halo
e04e656f45 修复MAAUnified CI 选错ref的问题 (#17143)
* ci: checkout PR head for MAAUnified debug builds

* fix(Avalonia): 删除倒反天罡的对主仓CI的相关测试
2026-06-19 17:22:15 +08:00
uye
9104f1a06a chore: 调整日志超时提示 2026-06-19 17:08:36 +08:00
github-actions[bot]
9344e38fec chore: Auto Templates Optimization
Triggered by d2cb0fd435

[skip changelog]
2026-06-19 05:59:02 +00:00
HX3N
d2cb0fd435 chore: YostarKR crop JieGarden@Roguelike@StartAction.png to improve match score 2026-06-19 14:55:29 +09:00
HX3N
645b86babd fix: YostarKR correct ClickChapterNewDefaultProgress roi
Yostar changed the UI layout
2026-06-19 13:57:58 +09:00
github-actions[bot]
70a3a5a6eb feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27723628023
[skip changelog]
2026-06-17 22:24:57 +00:00
github-actions[bot]
6b7ec43006 chore: Auto update by pre-commit hooks
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27721405857
[skip changelog]
2026-06-17 21:41:25 +00:00
github-actions[bot]
3578c255be chore: Auto Update Game Resources - 2026-06-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/27710873810

[skip changelog]
2026-06-17 18:29:27 +00:00
status102
0d66797b34 fix: 漏了 2026-06-17 18:21:06 +08:00
Aliothmoon
9097d4e1c1 feat: Android OCR 推理使用 NCNN (#17133) 2026-06-17 16:56:03 +08:00
uye
0f4497da86 rft: 统一停止逻辑 (#17087)
* rft: 统一停止逻辑

* chore: 连接时停止脚本
2026-06-17 15:02:24 +08:00
Manicsteiner
ded0682bcc chore: Yostar SSS#10 极寒 (#17137) 2026-06-17 14:58:52 +08:00
Manicsteiner
8c560b8bc6 ci: 优化Avalonia构建工作流触发条件 (#17139)
- push 触发改为 dev-v2 分支。
 - 不再在仅有 resources 更改时触发。
 - 新增该文件本身和cmake、3rdparty触发条件,不再在仅md文件更改时触发,与 ci.yml 保持一致。

~另外这玩意失败概率有点高啊~

## 由 Sourcery 提供的摘要

调整 Avalonia CI 工作流的触发条件,以更好地匹配相关的源码变更和分支使用情况。

CI:
- 将 Avalonia CI 的 push 触发分支从 `dev` 限制为 `dev-v2`。
- 当仅有 Markdown 或资源文件发生变更时跳过运行;同时确保对工作流文件、CMake、第三方依赖(3rdparty
includes)以及核心源码路径的变更仍会触发构建。

<details>
<summary>Original summary in English</summary>

## Summary by Sourcery

Adjust Avalonia CI workflow triggers to better match relevant source
changes and branch usage.

CI:
- Limit Avalonia CI push triggers to the dev-v2 branch instead of dev.
- Exclude runs when only markdown or resource files change while
ensuring the workflow, CMake, 3rdparty includes, and core source paths
still trigger builds.

</details>
2026-06-17 14:57:42 +08:00
status102
0b281e6ff6 fix: 自动战斗导航retry异常, 跳过作业 2026-06-17 14:24:55 +08:00
204 changed files with 10186 additions and 1378 deletions

View File

@@ -1,196 +1,209 @@
---
name: changelog
description: 根据提交记录、PR、diff、现有 CHANGELOG 与历史 tag 内容,整理符合 MAA 发布规范的 changelog Markdown。用于修正工具自动生成的 changelog、合并同类改动、清理 bot 或 release 噪音,并产出可直接提交的最终版本。
description: 根据 git 提交记录、diff、现有 CHANGELOG 与 tag整理符合 MAA 发布规范的 changelog Markdown。过滤噪音、合并同类改动,输出可直接写入 CHANGELOG.md 的最终版本。
---
# MAA Changelog Skill
## Goal
## 目标
- 读取待发布范围内的 commit、PR、diff、现有 CHANGELOG 与对应 tag 内容,输出可直接写入 CHANGELOG.md 的最终 Markdown 片段
- 只输出最终 Markdown不输出分析过程、分类理由、筛选记录、额外说明或 Markdown 代码围栏。
- 以“最终用户看得懂、历史版本不断裂、同类改动不重复”为第一目标,不以保留原始 commit 标题为目标。
读取待发布范围内的 commit、diff、现有 CHANGELOG 与历史 tag输出可直接写入 `CHANGELOG.md` 的最终 Markdown。
## Scope
- **只输出最终 Markdown**,不输出分析过程、分类理由或代码围栏。
- 第一目标:"最终用户看得懂、历史版本不断裂、同类改动不重复"。
- 适用于正式版、测试版、补丁版的 changelog 整理与重写。
- 正式版的补丁版本不应该修改 Highlights 中的内容,除非确实有用户可感知的重要变化。
- 当工具已经生成初稿时,初稿只可作为原始素材,不能直接信任其分类、版本归属、标题质量、去重结果与排序结果。
- 如果 commit 标题含糊、口语化、玩梗、只写 review、typo、warning、日志顺序、调整坐标等必须查看 diff 后改写为专业、完整、可独立理解的用户向描述。
## 必要输入
## Required Inputs
- 目标版本号。
- 待发布的提交范围,或可推导该范围的 PR、tag、分支信息。
- 目标版本号(如 `v6.13.0-beta.3`)。
- 待发布提交范围(可由 tag、PR、分支信息推导
- 当前 CHANGELOG 内容。
- 如果目标版本与已有正式版属于同一非 patch 版号,必须先读取对应正式版 tag 下的 changelog 内容,再决定如何合并与追加。
## Non-Negotiable Rules
## 核心规则
### 1. 先看净变更,再写条目
### 1. 净变更优先
- 同一功能、同一问题或逻辑相关的多条 commit,应合并为单条 changelog 项
- 合并后的描述必须简洁、专业、面向最终用户,避免堆实现细节
- 若 commit 标题不足以表达改动价值,必须结合 diff 重写标题
- Revert 不是 changelog 项。遇到 Revert 时,必须结合最终 diff 判断净效果:
- 若原改动被完整撤销,则 Revert 与原始项都删除
- 若最终仍保留部分语义,则把原始项与 Revert 合并为一条准确描述最终结果的 changelog 项
- 不要把“review”“日志顺序”“调整坐标”“typo”“build warning”这类缺乏用户语义的提交原样保留为条目除非 diff 证明它确实修复了用户可感知问题。
- 同一功能/问题的多条相关 commit **合并为单条**,面向用户描述最终效果
- commit 标题含糊、口语化、玩梗时,**必须查看 diff 后改写**为专业可理解的描述
- **Revert 处理**:原改动被完整撤销则删除该项;仍保留部分语义则合并为一条准确描述最终结果的条目
- "review""typo""日志顺序""调整坐标""build warning" 等缺乏用户语义的提交不单独保留,除非 diff 证明修复了用户可感知问题。
- **多服同类改动合并**:按**单项改动**(而非 commit/PR 整体)为粒度拆分,每项改动再跨服合并。同一 commit/PR 中若包含多项不同改动,应先按改动类型拆开,再将每项在实现了它的所有服务器上合并。服务器名用 `/` 连接(如 `YostarEN/JP/KR`),多位作者依次排列(如 `@author1 @author2 @author3`
- 示例:某 PR 为 JP 同时更新了主题、新增了章节导航,而 EN/KR 只更新了主题。应拆为两行:`YostarEN/JP/KR 更新主题`(三服共同)+ `YostarJP 新增章节导航`(仅 JP
### 2. 分类按用户价值,不按 commit 前缀
### 2. 按用户价值分类
- 改动必须放入正确模块Highlights、新增 | New、改进 | Improved、修复 | Fix、文档 | Docs、其他 | Other。
- 新功能、新支持、新入口、新导出能力、新兼容性,放“新增 | New”。
- 现有能力增强、性能提升、稳定性提升、体验优化、识别优化、重构后带来的用户收益,放“改进 | Improved”。
- 缺陷修正、兼容性修复、异常处理、回归修复,放“修复 | Fix”。
- 纯文档变更放“文档 | Docs”。
- 仅内部维护、CI、脚本、杂项且不适合省略时才放“其他 | Other”。
- 如果自动生成结果分类错误,必须移动到更合适的模块并同步调整描述。
- 子仓库(如 MaaMacGui的更新应作为独立的 `### MaaMacGui` 子项,放在主 changelog 的 `### 其他 | Other` 之后。该子项内部使用与主 changelog 相同分类结构(新增 | New、改进 | Improved、修复 | Fix 等)PR 引用格式 `([#数字](https://github.com/MaaAssistantArknights/MaaMacGui/pull/数字))`
| 模块 | 适用场景 |
|------|----------|
| **新增 \| New** | 新功能、新支持、新入口、新兼容性 |
| **改进 \| Improved** | 能力增强、性能/稳定性/体验优化、识别优化、重构收益 |
| **修复 \| Fix** | 缺陷修正、兼容性/异常/回归修复 |
| **文档 \| Docs** | 纯文档变更 |
| **其他 \| Other** | 仅内部维护、CI、脚本等不适合省略时 |
| **MaaMacGui** | 子仓库独立区块,放在 `### 其他 \| Other` 之后,内部复用相同分类结构PR 格式 `([#数字](https://github.com/MaaAssistantArknights/MaaMacGui/pull/数字))` |
### 3. 模块内排序与文案规范
### 3. 模块内排序与文案
- 中文条目放在前,纯英文条目排在该模块最后。
- 同一模块内按逻辑相关性或重要性排序:功能接口变更优先,其次是兼容性或实现优化,最后是次要修复杂项。
- 列表统一使用 * 作为项目前缀。
- 中英文数字混排时,在英文词与数字之间保留空格,例如:修复 3 个 bug支持 3D 功能。
- 统一常见术语大小写与写法,例如 WPF、Json、Markdown、CSV、Info。
- 保留作者、PR、commit reference例如 (#12345) @author多条相关提交被合并,可把相近引用合并到同一项后括注。
- **中文在前,纯英文条目排最后**
- 重要性排序:功能/接口变更 > 兼容性/优化 > 次要修复/杂项。
- 列表前缀统一 `*`
- 中英文与数字间留空格(如"修复 3 个 bug""支持 3D 功能"
- 术语统一大小写:WPF、Json、Markdown、CSV、Info。
- 保留作者与 PR 引用,主仓库格式为 `([#12345](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12345)) @author`;多条合并时引用合并括注。
### 4. 正式版与 patch 版的历史连续性
### 4. 版本历史连续性
- 正式版严禁只留下单独的 patch 版本内容
- 如果目标正式版与已有正式版属于同一非 patch 版号,必须对比对应 tag 下的 changelog并把当前新增改动追加到原有内容之后保持版本历史连续。
- patch 版详细区块只能写“自上一发布版本之后新增的变化”,不能把更早正式版已经出现过的条目整段复制到当前 patch 版本下面。
- 例如生成 v6.10.4 时v6.10.4 区块只能写 v6.10.3 之后的新变化v6.10.0、v6.10.1、v6.10.2、v6.10.3 的既有内容应保留在历史区块,而不是重新抄进 v6.10.4。
- 若非 patch 版本不同,则直接根据现有内容组织该版本及其历史区块。
**版本类型定义**:不带 `-beta`/`-alpha` 后缀的均为正式版(包含首个正式版 `X.Y.0` 与 patch 正式版 `X.Y.1``X.Y.2` 等);带后缀的为测试版
### 5. 正式版合并测试版内容
- **跨次版本号的正式版**(如 v6.12.x → v6.13.0):不保留上一个次版本号的任何历史折叠块。
- **同次版本号的 patch 正式版**(如 v6.13.1 相对 v6.13.0):当前版本只写相对上一版本的增量变化(放在 `<details open>` 展开块),不得复制更早版本已发布条目。更早版本保留为各自独立的 `<details>` 收起块,紧跟在当前版本展开块之后。
- 正式版发布时应把所有前置测试版beta.1、beta.2 等)的条目按模块(新增、改进、修复等)合并到正式版的单一详细区块中,去重后统一展示。
- 不应按测试版小版本分别折叠。正式版用户不关心测试版之间的增量差异,只关心"这个正式版相比上一个正式版有什么变化"。
- 测试版之间重复或被后续修改覆盖的条目只保留最终有效版本。例如 beta.1 修复了某个问题但 beta.2 又对其做了改进,正式版中只保留合并后的最终描述。
- 正式版的详细区块使用 `<details open>` 默认展开,其后不再保留 beta 版本的历史折叠块(除非之前还有更早的正式版)。
### 5. 测试版与 patch 版的折叠块规则
### 6. patch / 测试版的 Highlights 复用规则
- 同次版本号内的测试版beta.1、beta.2…)与 patch 版之间**保留历史折叠块**。
- **发布正式版时**:将所有前置测试版条目按模块合并到正式版单一详细区块,去重后统一展示。测试版间被覆盖的条目只保留最终有效版本。正式版使用 `<details open>`,其后不再保留 beta 版本历史折叠块(除非有更早正式版)。
- patch 版本(例如 v6.10.4 相对于 v6.10.3)和测试版(例如 v6.11.0-beta.2 相对于 v6.11.0-beta.1)如果没有用户可感知的重要新功能或重大变化,必须直接复用其父版本的 Highlights 内容,不得自行重写或另起一套。
- 复用 Highlights 时,只改顶部版本号标题和发版日期(例如 `## v6.11.0-beta.1 (2026-05-27)``## v6.11.0-beta.2 (2026-05-29)`Highlights 正文原样保留。
- 当 patch 版本或测试版确实包含用户可感知的重要新变化时(例如新增了重大功能、改变了核心交互),可以为 Highlights 追加新段落,但必须保留原有 Highlights 内容,新段落追加在末尾。
#### 正式版的详细内容来源:基于已有测试版 changelog 合并,而非全量重分析
### 7. patch / 测试版编辑的完整结构
**禁止**在发布正式版时从 git 历史全量重新分析提交、重新阅读 diff。正式版的详细内容应**直接合并已发布各测试版 changelog 的条目**,工作流如下:
- 输出文件的结构必须严格遵循以下层次,不得把 patch 版本或测试版的详细内容插入到父版本的 Highlights 与详细内容之间:
1. 顶部:`## vX.Y.Z (YYYY-MM-DD)`patch / 测试版标题,含发版日期)
2. `### Highlights`(复用父版本内容,或在有必要时追加新段落)
3. 英文 Highlights 折叠块
4. `----`
5. `以下是详细内容:`
6. `<details open><summary><b>vX.Y.Z (YYYY-MM-DD)</b></summary>`(当前版本详细内容,默认展开)
7. `<details><summary><b>vX.Y.Z-1 (YYYY-MM-DD)</b></summary>`(上一 patch 版本,默认收起)
8. 更早版本各自独立折叠块...
9. `<details><summary><b>vX.Y.0 (YYYY-MM-DD)</b></summary>`(正式版,默认收起)
- 每个版本的详细内容各自放入独立的 `<details>` 折叠块,`<summary>` 内格式为 `<b>vX.Y.Z (YYYY-MM-DD)</b>`(版本号 + 发版日期),当前目标版本使用 `<details open>` 默认展开,其余默认收起。
- 折叠块内只保留详细内容(改进、修复等),不重复 Highlights不写 `## vX.Y.Z` 子标题(`<summary>` 已提供版本标识)。
1. 读取现有 CHANGELOG 中同次版本号的所有测试版区块beta.1、beta.2…直至最新测试版)。
2. 将这些区块的条目按模块(新增/改进/修复/其他…)汇总,跨测试版去重:
- 同一条目在多个测试版出现 → 只保留最终(最新)版本表述。
- 被后续测试版修正/覆盖的条目 → 保留修正后的最终结果。
3. **唯一需要新增分析的增量**:仅为「最后一个测试版 tag → HEAD」之间的提交。这部分通常是少量改动逐一检查后补充进正式版详细区块有用户可感知效果才补否则丢弃
4. 合并后统一排序、统一文案,不重复、不断裂。
### 8. Highlights 必须中英双语且先中后英
**理由**:测试版发布时已完成对应提交范围的分析与改写,正式版只是对同一发布周期的汇总收尾,全量重分析会引入不一致、重复劳动,且容易把已被测试版 changelog 过滤/改写的噪音重新捞回。
- 输出顶部必须包含当前目标版本和发版日期,例如 `## vX.Y.Z (2026-05-29)`
- 必须包含 ### Highlights。
- 中文 Highlights 直接展示,不折叠。
- 英文 Highlights 放入折叠块:`<details><summary><b>English</b></summary>` ... `</details>`
- 中文与英文都应按主题分段,标题简洁明确,正文面向最终用户,不是 commit 列表翻译。
- Highlights 只总结本次版本中最值得强调的变化,不要把所有条目机械搬进去。
### 6. Highlights 规则
### 9. 必须过滤的噪音项
- **中英双语,先中后英**。中文直接展示,英文放入 `<details><summary><b>English</b></summary>` 折叠块。
- Highlights 只总结最值得强调的变化,不要机械搬运所有条目。
- **复用规则(适用于 patch 版、测试版、以及由测试版晋升的正式版)**
- 判定标准:相对**直接前驱版本**patch 的父正式版、测试版的上一测试版、正式版晋升时的最后一个测试版)有无用户可感知的重大变化。
- 无重大变化 → **直接复用前驱版本 Highlights**,仅改版本号标题和日期,不改写内容。
- 有重大新变化 → 保留原有内容,新段落追加在末尾。
- 正式版的补丁版本不应修改 Highlights除非确实有用户可感知的重要变化。
- **由测试版晋升的正式版X.Y.0**:判定基准是最后一个测试版(如 beta.3。若最后一个测试版到正式版之间只有内部维护、CI、通知文案等无用户可感知的变化则 Highlights 一字不改地复用最后一个测试版的内容,只更新顶部版本号标题与日期。
- 删除或忽略纯 bot 自动生成的 changelog、update、release 条目(如 github-actions[bot] 的 Auto Update Game Resources
- 删除显式的 Release 发布记录,例如 Release vX.Y.Z。
- 删除或忽略 Generate、Auto Update、Auto Generate、Update CHANGELOG、Bump version 之类自动维护条目。
- 删除带有 `[skip changelog]` 标记的提交。
- 删除 commit 消息仅为 "Update CHANGELOG" "docs: Update CHANGELOG for vX.Y.Z release" 之类纯 changelog 内容维护的提交。
- 除此之外的提交都不应过滤,即使标题是 chore、perf 或看起来像内部优化——只要有用户可感知的效果(包括启动体验、操作窗口、性能、稳定性等),都应保留并放入合适的模块。
### 7. 必须过滤的噪音
### 10. 查询 git 历史时的编码处理
删除以下类型提交:
- bot 自动生成(`Auto Update Game Resources``Auto Templates Optimization` 等)
- `Release vX.Y.Z``Auto Update Changelogs``Auto Generate Changelog`
- `Update CHANGELOG``Bump version` 等 changelog 维护提交
-`[skip changelog]` 标记的提交
- 在 Windows PowerShell 环境下git log 输出的中文默认会乱码。查询 git 历史时必须指定编码参数:
```
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; git -c core.quotepath=false -c i18n.logoutputencoding=utf-8 -c i18n.commitencoding=utf-8 log --encoding=utf-8 --format="%H %s" RANGE | ForEach-Object { [System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::Default.GetBytes($_)) }
```
- 简化写法(仅在当前终端已执行过 `[Console]::OutputEncoding = [System.Text.Encoding]::UTF8` 后有效):`git -c core.quotepath=false log --encoding=utf-8 --format="..." | ForEach-Object { [System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::Default.GetBytes($_)) }`
- 如果输出仍然乱码,可将结果写入临时文件(`| Out-File -Encoding utf8 -FilePath "$env:TEMP\commits.txt"`)再用 read_file 工具读取。
**不过滤**chore、perf 或看似内部优化的提交——只要有用户可感知效果(启动体验、性能、稳定性等),一律保留并放入合适模块。
## Workflow
### 8. git 历史编码处理Windows PowerShell
1. 先确定本次发布边界:目标版本、上一版本、对应 tag、待发布 commit 范围。
2. 读取现有 CHANGELOG 与目标范围内的 diff不要只根据 commit 标题下结论。
3. 先过滤 bot、release、generate、update changelog、revert、重复历史条目等噪音。
4. 按“净变更”合并同类提交,必要时从 diff 改写标题。
5. 按用户价值重新分类到正确模块,而不是沿用自动生成结果。
6. 在每个模块内完成排序、术语统一与中英文条目整理。
7. 编写中英双语 Highlights先中文后英文中间用 ---- 分隔。
8. 输出完整 Markdown 片段包含顶部版本、Highlights、以下是详细内容、当前版本区块与历史版本区块。
```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; git -c core.quotepath=false -c i18n.logoutputencoding=utf-8 -c i18n.commitencoding=utf-8 log --encoding=utf-8 --format="%H %s" RANGE | ForEach-Object { [System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::Default.GetBytes($_)) }
```
## Common Failure Patterns To Correct
如仍乱码,写入临时文件后用 read_file 读取:`| Out-File -Encoding utf8 -FilePath "$env:TEMP\commits.txt"`
- 把旧版本已有条目整段复制到当前 patch 版本。
- 把 Revert 原样保留成单独 changelog 项。
- 把 Release vX.Y.Z、Auto Update Changelogs、Update CHANGELOG、Bump version 之类自动提交写进文档或其他模块。
- 把同一功能拆成多条重复表述,例如同一个生息演算功能拆成多个相近新增或改进条目。
- 保留玩梗、口语化、半成品标题,例如不会现在还有人选沙中遗火吧、特意删的 PNS 怎么又给加回来了。
- 机械沿用 commit type 导致分类错误,例如把用户能感知的修复放进其他,把兼容性提升放进新增。
- patch 版本或测试版没有用户可感知的重要新变化,却自行重写了独立的 Highlights而非复用父版本内容。
- 把 patch 版本的详细内容插入到父版本的 Highlights 与详细内容之间,破坏了文件结构。
- patch / 测试版的历史区块中重复保留了 Highlights 和"以下是详细内容:"引导语,这些应只在顶部出现一次。
- 正式版不应保留各 beta 版本的独立折叠块,应将所有测试版条目按模块合并到正式版的单一详细区块中。
- 查询 git 历史时未指定编码,导致中文 commit 消息乱码,无法正确理解变更内容。
- 把 chore/perf 标题的提交默认当作噪音过滤,而不是判断其是否有用户可感知的效果。
### 9. 翻译判断规则(外服条目保留英文原文)
## Output Requirements
changelog 主体面向中文用户,但**并非所有条目都应译成中文**。判断依据是「该条目的目标读者是谁」:玩外服的用户能看懂英文/该服语言,而中文用户一般不接触外服内容,因此外服专有条目保留原文更准确、更不易误导。
- 输出完整 Markdown 文件片段。
- 顶部必须包含当前版本标题,例如 ## vX.Y.Z
- 顶部必须包含 ### Highlights并满足先中文、后英文、用 ---- 分隔的格式
- 英文 Highlights 折叠块结束后,接“----”分隔线,然后接“以下是详细内容:”引导语
- 每个版本的详细内容各自放入独立的折叠块:`<details><summary><b>vX.Y.Z</b></summary>` ... `</details>`
- 当前目标版本的折叠块使用 `<details open>` 默认展开,历史版本使用 `<details>` 默认收起。
- 详细内容中的模块标题统一使用以下格式:
- ### 新增 | New
- ### 改进 | Improved
- ### 修复 | Fix
- ### 文档 | Docs
- ### 其他 | Other
- ### MaaMacGui子仓库独立区块放在 `### 其他 | Other` 之后,内部再按相同分类结构组织)
- 列表项统一使用 *。
- 仅保留有内容的模块;空模块省略。
**用中文描述(默认)**
- 国服CN、繁中服txwy相关改动
- 跨服/全服通用的功能、架构、性能、稳定性改动
- 行为描述、用户操作说明(如 `add support for X` → 「新增支持 X」
- 含糊/口语化/玩梗的英文 commit 标题,改写为专业可理解的中文表述
## Output Template
**整条保留英文原文(不翻译)——外服专有条目**
- **适用范围**:仅针对 YostarEN / YostarJP / YostarKR 等外服的改动,且该改动不涉及国服。整条描述(含动词、行为)均保留英文,**不要**只保留专有名词而把描述译成中文。
- **原因**:① 外服条目的目标读者是玩该外服的用户,能看懂英文;② 外服的关卡、活动、章节、主题名(如 `lone trail``JieGarden`)在中文服可能不存在或译名不同,翻译会丢失原文标识、产生误导。
- **条目格式**:服务器代号前置,后接英文描述。跨多服同改时用 `/` 连接(如 `YostarEN/JP/KR ...`)。
-`YostarEN preload lone trail + fix JieGarden themes`
-`YostarEN/JP/KR update LoneTrail and JieGarden themes`
-`YostarEN/JP/KR 更新落叶逐火与界园主题`(把外服描述整条译成中文,且「落叶逐火」是中服译名)
-`YostarEN 预加载孤星轨道并修复界园主题`(把外服描述译成中文,丢失原文)
- ❌ 把 `Stage 10-2` 翻成「第十章第二节」
### 正式版模板(合并测试版内容)
**混合判断**:同一 commit/PR 同时含国服与外服改动时,按 §1 拆为多条:国服部分用中文,外服部分保留英文,各自独立成行。
**代码/技术标识始终保留原文**(不分中外服):任务名(`Stage``Roguelike``Depot`、配置项、接口名、文件名、命令名以及技术术语与产品名WPF、Json、Markdown、CSV、onnx、ADB、minitouch 等,大小写见 §3
**判断要点**:翻译的目的是让「该条目的目标读者」看得懂。国服/通用条目译给中文用户看;外服专有条目保留英文给外服用户看——不要为了「消灭英文」而过度翻译。
## 完整文件结构
patch / 测试版结构(严格自上而下,不得打乱层次):
1. `## vX.Y.Z (YYYY-MM-DD)` — 顶部版本标题
2. `### Highlights` — 中文直接展示
3. 英文 Highlights 折叠块
4. `----` 分隔线
5. `以下是详细内容:`
6. `<details open><summary><b>vX.Y.Z (YYYY-MM-DD)</b></summary>` — 当前版本(展开)
7. `<details><summary><b>vX.Y.Z-1 (YYYY-MM-DD)</b></summary>` — 上一版本(收起)
8. 更早版本各自独立折叠块…
9. `<details><summary><b>vX.Y.0 (YYYY-MM-DD)</b></summary>` — 最早正式版(收起)
**要点**
- 折叠块内只保留详细内容,不重复 Highlights、不写 `## vX.Y.Z` 子标题。
- 历史区块不重复 Highlights 和"以下是详细内容:"引导语——这些只在顶部出现一次。
## 工作流程
### 通用步骤patch / 测试版)
1. 确定发布边界:目标版本、上一版本 tag、提交范围。
2. 读取现有 CHANGELOG 与范围内的 diff不只看 commit 标题)。
3. 过滤 bot、release、`[skip changelog]`、revert 等噪音。
4. 按净变更合并同类提交,必要时从 diff 改写标题。
5. 按用户价值分类到正确模块。
6. 模块内排序、术语统一、中英文整理。
7. 编写中英双语 Highlights。
8. 输出完整 Markdown顶部版本 + Highlights + 详细内容 + 历史折叠块)。
### 正式版(由测试版晋升)专属流程
**关键区别**:正式版**不做全量重分析**,而是「合并已有测试版 changelog + 补少量增量 + 处理 Highlights 复用」。步骤如下:
1. 读取现有 CHANGELOG 中同次版本号的所有测试版区块beta.1 … beta.N
2. 判定「最后一个测试版 tag → HEAD」是否有用户可感知的重大变化
- 若有 → 分析这小段增量提交并整理成条目;若足以影响 Highlights 则追加(一般不追加)。
- 若无(仅 CI、chore、内部维护等→ 增量条目为空。
3. **Highlights**:直接复用最后一个测试版的 Highlights仅改顶部版本号标题与日期不重写。
4. **详细内容**:将各测试版区块条目按模块汇总去重,补入第 2 步的增量条目,按 §3 排序。
5. 输出跨次版本号X.Y.0)不保留历史折叠块;同次版本号 patch 正式版保留历史折叠块。
## 模块标题格式
```
### 新增 | New
### 改进 | Improved
### 修复 | Fix
### 文档 | Docs
### 其他 | Other
### MaaMacGui
```
仅保留有内容的模块,空模块省略。列表项统一 `*`
## 输出模板
### 正式版
```markdown
## vX.Y.Z
### Highlights
#### 中文小结标题 A
#### 中文标题
中文小结正文。
#### 中文小结标题 B
中文小结正文。
中文正文。
<details>
<summary><b>English</b></summary>
#### English Summary Title A
#### English Title
English summary paragraph.
#### English Summary Title B
English summary paragraph.
English paragraph.
</details>
@@ -203,64 +216,41 @@ English summary paragraph.
### 新增 | New
* 条目 A @author
* 条目 ([#12345](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12345)) @author
### 改进 | Improved
* 条目 B (#12345) @author
### 修复 | Fix
* 条目 C @author
### 文档 | Docs
* 条目 D @author
* 条目 @author
### MaaMacGui
#### 新增 | New
* 子仓库新增条目 ([#85](https://github.com/MaaAssistantArknights/MaaMacGui/pull/85)) @author
#### 修复 | Fix
* 子仓库修复条目 ([#88](https://github.com/MaaAssistantArknights/MaaMacGui/pull/88)) @author
</details>
<details>
<summary><b>vX.Y-1.Z (YYYY-MM-DD)</b></summary>
### 修复 | Fix
* 上一个正式版的条目 @author
* 子仓库条目 ([#85](https://github.com/MaaAssistantArknights/MaaMacGui/pull/85)) @author
</details>
```
### patch / 测试版模板
- **跨次版本号正式版**X.Y.0,如 v6.13.0):按规则 §4 不保留任何历史折叠块。
- **同次版本号 patch 正式版**X.Y.Z, Z≥1如 v6.13.1 相对 v6.13.0):保留历史折叠块,与下方 patch / 测试版模板结构一致。
### patch / 测试版
```markdown
## vX.Y.Z
### Highlights
#### 中文小结标题 A
#### 中文标题
中文小结正文。
#### 中文小结标题 B
中文小结正文。
中文正文。
<details>
<summary><b>English</b></summary>
#### English Summary Title A
#### English Title
English summary paragraph.
#### English Summary Title B
English summary paragraph.
English paragraph.
</details>
@@ -273,39 +263,21 @@ English summary paragraph.
### 改进 | Improved
* 条目 A (#12345) @author
* 条目 ([#12345](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12345)) @author
### 修复 | Fix
* 条目 B @author
### 文档 | Docs
* 条目 C @author
### MaaMacGui
#### 新增 | New
* 子仓库新增条目 ([#85](https://github.com/MaaAssistantArknights/MaaMacGui/pull/85)) @author
#### 修复 | Fix
* 子仓库修复条目 ([#88](https://github.com/MaaAssistantArknights/MaaMacGui/pull/88)) @author
* 条目 @author
</details>
<details>
<summary><b>vX.Y.1 (YYYY-MM-DD)</b></summary>
<summary><b>vX.Y.Z-1 (YYYY-MM-DD)</b></summary>
### 改进 | Improved
* 历史版本条目 @author
### 修复 | Fix
* 历史版本条目 @author
</details>
<details>
@@ -315,31 +287,46 @@ English summary paragraph.
* 正式版条目 @author
### 改进 | Improved
* 正式版条目 @author
### 修复 | Fix
* 正式版条目 @author
</details>
```
## Final Checklist
## 常见错误
- 是否只保留最终有效的净变更,而不是机械罗列 commit
- 是否已经删除 bot、Release、Generate、Update CHANGELOG、Revert 等噪音项?
- 是否避免把旧版本已发布内容重复抄进当前 patch 版本?
- 是否所有条目都能被最终用户独立理解?
- 是否已经按模块正确分类、排序,并保持中文在前、英文在后?
- 是否已经输出完整 Markdown而不是说明文字或代码块
- 如果是 patch 版本且没有用户可感知的重要新变化,是否复用了父版本的 Highlights 而非自行重写?
- patch / 测试版的详细内容是否紧跟在"以下是详细内容:"之后,而非插入到父版本的 Highlights 下方?
- 历史版本区块中是否只保留详细内容,没有重复 Highlights 和引导语?
- 英文 Highlights 是否放入 `<details>` 折叠块(中文不折叠)?
- 每个版本的详细内容是否各自放入独立的 `<details>` 折叠块?
- 当前版本是否使用 `<details open>` 默认展开,历史版本是否默认收起?
- 如果有子仓库(如 MaaMacGui更新是否作为 `### MaaMacGui` 独立子项放在 `### 其他 | Other` 之后,且内部使用与主 changelog 相同的分类结构?
- 正式版是否已将所有测试版条目合并到单一详细区块中,而非按 beta 小版本分别折叠?
- 查询 git 历史时是否已正确指定编码参数,避免中文 commit 消息乱码?
- ❌ 旧版本条目整段复制到当前 patch 版本
- ❌ Revert 原样保留为单独条目
- ❌ bot/release/auto generate/update changelog 提交写入文档
- ❌ 同一功能拆成多条重复表述
- ❌ 保留玩梗/口语化/半成品标题
- ❌ 机械沿用 commit type 导致分类错误
- ❌ patch/测试版无重大变化却重写独立 Highlights
- ❌ 详细内容插入到 Highlights 与历史区块之间,破坏文件结构
- ❌ 历史区块重复 Highlights 或"以下是详细内容:"引导语
- ❌ 正式版按 beta 小版本分别折叠而非合并
- ❌ git 历史未指定编码导致中文乱码
- ❌ chore/perf 提交默认当噪音过滤(应判断是否有用户可感知效果)
- ❌ 跨次版本号时仍保留旧版本历史折叠块
- 正式版晋升时全量重新分析 git 提交,而非合并已有测试版 changelog
- ❌ 正式版晋升时重写 Highlights而非复用最后一个测试版的 Highlights无重大变化时
- ❌ 将外服专有条目YostarEN/JP/KR 等)的英文描述整条译成中文,应保留原文给外服用户阅读
## 最终检查
- [ ] 只保留最终有效净变更,非机械罗列 commit
- [ ] 已删除 bot、Release、Generate、Update CHANGELOG、Revert 等噪音?
- [ ] 未把旧版本已发布内容重复抄入当前版本?
- [ ] 所有条目用户可独立理解?
- [ ] 分类正确、排序合理、中文在前英文在后?
- [ ] 输出完整 Markdown非代码块
- [ ] patch/测试版无重大变化时复用了父版本 Highlights
- [ ] 详细内容紧跟"以下是详细内容:"之后?
- [ ] 历史区块无重复 Highlights 和引导语?
- [ ] 英文 Highlights 在 `<details>` 折叠块内?
- [ ] 每个版本各自独立 `<details>` 折叠块?
- [ ] 当前版本 `<details open>`,历史版本默认收起?
- [ ] 子仓库MaaMacGui作为独立子项放在 `### 其他 | Other` 之后?
- [ ] 正式版已合并所有测试版条目为单一区块?
- [ ] 正式版是合并已有测试版 changelog而非全量重分析提交
- [ ] 正式版 Highlights 无重大变化时复用了最后一个测试版的 Highlights
- [ ] git 历史查询已指定编码参数?
- [ ] 跨次版本号时已移除旧版本历史折叠块?
- [ ] 外服专有条目YostarEN/JP/KR 等)保留英文原文描述,未被整条翻译成中文?

View File

@@ -13,7 +13,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
persist-credentials: false # Needed to bypass protection rules in Push changes

View File

@@ -4,28 +4,34 @@ on:
workflow_dispatch:
pull_request:
paths:
- ".github/workflows/ci-avalonia.yml"
- "3rdparty/include/**"
- "cmake/**"
- "src/MAAUnified"
- "src/MAAUnified/**"
- "src/MaaCore/**"
- "src/MaaUtils/**"
- "include/**"
- "resource/**"
- "tools/maadeps-download.py"
- "CMakeLists.txt"
- "CMakePresets.json"
- "!**/*.md"
push:
branches:
- dev
- dev-v2
paths:
- ".github/workflows/ci-avalonia.yml"
- "3rdparty/include/**"
- "cmake/**"
- "src/MAAUnified"
- "src/MAAUnified/**"
- "src/MaaCore/**"
- "src/MaaUtils/**"
- "include/**"
- "resource/**"
- "tools/maadeps-download.py"
- "CMakeLists.txt"
- "CMakePresets.json"
- "!**/*.md"
jobs:
meta:
@@ -33,13 +39,17 @@ jobs:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.out.outputs.tag }}
checkout_sha: ${{ steps.out.outputs.checkout_sha }}
steps:
- id: out
env:
CHECKOUT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
echo "checkout_sha=${CHECKOUT_SHA}" >> "$GITHUB_OUTPUT"
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
else
echo "tag=preview-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
echo "tag=preview-${CHECKOUT_SHA::7}" >> "$GITHUB_OUTPUT"
fi
build:
@@ -70,7 +80,9 @@ jobs:
maadeps_triplet: x64-osx
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
ref: ${{ needs.meta.outputs.checkout_sha }}
- name: Fetch required submodules
shell: bash

View File

@@ -48,7 +48,7 @@ jobs:
echo "Concurrency Group: $CONCURRENCY_GROUP"
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
show-progress: false
@@ -107,7 +107,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -117,7 +117,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -164,7 +164,7 @@ jobs:
- name: Cache .nuke/temp, ~/.nuget/packages
id: cache-nuget
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -245,7 +245,7 @@ jobs:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -255,7 +255,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -365,7 +365,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -375,7 +375,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -437,7 +437,7 @@ jobs:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -452,7 +452,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -495,7 +495,7 @@ jobs:
runs-on: macos-26
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -671,7 +671,7 @@ jobs:
find . -type f | while read f; do mv -fvt . $f; done
- name: Publish release to GitHub
uses: softprops/action-gh-release@v3.0.0
uses: softprops/action-gh-release@v3.0.1
with:
body_path: CHANGELOG.md
files: |

View File

@@ -42,27 +42,31 @@ jobs:
URL="${{ steps.release.outputs.url }}"
BASE_URL="https://github.com/${{ github.repository }}/releases/download/${TAG}"
WIN_URL="${BASE_URL}/MAA-${TAG}-win-x64.zip"
WIN64_URL="${BASE_URL}/MAA-${TAG}-win-x64.zip"
WINARM_URL="${BASE_URL}/MAA-${TAG}-win-arm64.zip"
MAC_URL="${BASE_URL}/MAA-${TAG}-macos-universal.dmg"
LIN_URL="${BASE_URL}/MAA-${TAG}-linux-amd64.tar.gz"
LIN64_URL="${BASE_URL}/MAA-${TAG}-linux-x86_64.tar.gz"
LINARM_URL="${BASE_URL}/MAA-${TAG}-linux-aarch64.tar.gz"
DESCRIPTION=$(printf 'Read the full release note [here](%s).\n\nOpen or reopen your MAA client to get automatic updates.\nOr, download `MAA %s` for your platform by clicking the buttons below.' "$URL" "$TAG")
DESCRIPTION=$(printf 'Read the full release note [here](%s).\n\nReopen your MAA client to get automatic updates.\nDownload MAA `%s` for your platform below.' "$URL" "$TAG")
PAYLOAD=$(jq -n \
--arg tag "$TAG" \
--arg description "$DESCRIPTION" \
--arg win_url "$WIN_URL" \
--arg win64_url "$WIN64_URL" \
--arg winarm_url "$WINARM_URL" \
--arg mac_url "$MAC_URL" \
--arg lin_url "$LIN_URL" \
--arg lin64_url "$LIN64_URL" \
--arg linarm_url "$LINARM_URL" \
'{
embeds: [{
title: ("🎉 New MAA Release: " + $tag),
description: $description,
color: 10246582,
fields: [
{ name: "Windows (x64)", value: ("[↗ Download](" + $win_url + ")"), inline: true },
{ name: "macOS (Universal, dmg)", value: ("[↗ Download](" + $mac_url + ")"), inline: true },
{ name: "Linux (amd64, tar.gz)", value: ("[↗ Download](" + $lin_url + ")"), inline: true }
{ name: "Windows", value: ("[x64](" + $win64_url + ") ❘ [ARM](" + $winarm_url + ")"), inline: true },
{ name: "macOS", value: ("[Universal](" + $mac_url + ")"), inline: true },
{ name: "Linux", value: ("[x64](" + $lin64_url + ") ❘ [ARM](" + $linarm_url + ")"), inline: true }
]
}]
}')

View File

@@ -13,7 +13,7 @@ on:
type: number
jobs:
codex-analysis:
ai-analysis:
if: |
(github.event_name == 'issues' && github.event.action == 'opened') ||
github.event_name == 'workflow_dispatch' ||
@@ -27,38 +27,36 @@ jobs:
contents: read
issues: write
steps:
# 这个 action 只负责编排,分析质量仍依赖配套的 issue/log analysis skill。
# 分析质量仍依赖配套的 issue/log analysis skill。
# 详细使用文档https://github.com/MistEO/ai-issue-analysis
# 最佳实践参考:
# - https://github.com/MaaEnd/MaaEnd/blob/v2/.claude/skills/maaend-issue-log-analysis/SKILL.md
# - https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.claude/skills/maa-issue-log-analysis/SKILL.md
- name: Analyze issue with Codex
id: codex
- name: Analyze issue with AI
id: analysis
continue-on-error: true
uses: MistEO/ai-issue-analysis@codex
uses: MistEO/ai-issue-analysis@main
with:
agent: claude
api-key: ${{ secrets.BOT_AI_API_KEY }}
api-base-url: ${{ secrets.BOT_AI_API_BASE_URL }}
model: ${{ secrets.BOT_AI_MODEL }}
github-token: ${{ secrets.MAA_BOT_TOKEN }}
codex-api-key: ${{ secrets.CODEX_API_KEY }}
codex-base-url: ${{ secrets.CODEX_BASE_URL }}
codex-model: ${{ secrets.CODEX_MODEL }}
bot-name: '@MaaArknightsBot'
initial-comment-body: |
🤖 **MaaBot 正在分析该 Issue...**
感谢您的反馈AI 正在自动分析该问题,预计耗时约 10 分钟。
prompt-template: |
分析 GitHub Issue {{issue_number}}。把最终结论写到 {{answer_file}}。
严格按照 .claude/skills/maa-issue-log-analysis/SKILL.md 中的规则,分析 GitHub Issue {{issue_number}}。把最终结论写到 {{answer_file}}。
extra-comment-content: |
<!-- Skip all labels -->
- name: 查看完整输入输出
if: always()
env:
ISSUE_NUMBER: ${{ steps.codex.outputs.issue-number }}
COMMENT_ID: ${{ steps.codex.outputs.comment-id }}
COMMENT_URL: ${{ steps.codex.outputs.comment-url }}
ISSUE_NUMBER: ${{ steps.analysis.outputs.issue-number }}
COMMENT_ID: ${{ steps.analysis.outputs.comment-id }}
COMMENT_URL: ${{ steps.analysis.outputs.comment-url }}
run: |
echo "issue_number=$ISSUE_NUMBER"
echo "comment_id=$COMMENT_ID"
echo "comment_url=$COMMENT_URL"
echo "(Full codex-output and final-conclusion are available in the uploaded artifacts)"
echo "(Full agent-output and final-conclusion are available in the uploaded artifacts)"

View File

@@ -31,12 +31,12 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
- name: Cache lychee responses
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: .lycheecache

View File

@@ -44,7 +44,7 @@ jobs:
- name: Checkout repository
if: steps.check_push.outputs.is_pr != 'True'
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
persist-credentials: false

View File

@@ -21,7 +21,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.MAARELEASE_RELEASE }}

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
show-progress: false

View File

@@ -40,7 +40,7 @@ jobs:
changelog: ${{ steps.read_changelog.outputs.content }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
# repository: 'MaaAssistantArknights/MaaAssistantArknights'
#ref: ${{ inputs.ref }}
@@ -170,7 +170,7 @@ jobs:
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -218,7 +218,7 @@ jobs:
- name: Cache .nuke/temp, ~/.nuget/packages
id: cache-nuget
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -298,7 +298,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout MaaRelease
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
fetch-depth: 0
@@ -329,7 +329,7 @@ jobs:
echo ${{ needs.build-win-nightly.outputs.tag }}
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
path: MaaAssistantArknights
token: ${{ secrets.MAARELEASE_RELEASE }}

View File

@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout MaaRelease
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
@@ -102,7 +102,7 @@ jobs:
path: ./MaaReleaseConfig
- name: Checkout MaaRelease
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
@@ -111,7 +111,7 @@ jobs:
token: ${{ secrets.MAARELEASE_RELEASE }}
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
path: MaaAssistantArknights

View File

@@ -7,100 +7,127 @@ on:
- reopened
- ready_for_review
workflow_dispatch:
inputs:
pr_number:
description: 'Release PR number for changelog generation'
required: false
type: number
jobs:
generate-changelog:
name: Generate Changelog
# startsWith 表达式不区分大小写
# fork 守卫:自动化流程对 fork PR 无效token 只读),提前短路以避免 runner 上的表达式注入
if: github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
if: |
(github.event_name == 'workflow_dispatch' && github.event.inputs.pr_number != '') ||
(github.event.pull_request.head.repo.full_name == github.repository &&
github.event.pull_request.draft == false &&
startsWith(github.event.pull_request.title, 'Release v'))
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Checkout dev-v2 with full history
uses: actions/checkout@v4
with:
ref: dev-v2
fetch-depth: 0
show-progress: false
- name: Extract release information
id: extract_tag
- name: Extract version from Release PR
id: version
env:
PR_BODY: ${{ format('{0}/{1}', runner.temp, 'output' ) }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number || github.event.inputs.pr_number }}
PR_TITLE: ${{ github.event.pull_request.title }}
PR_URL: ${{ github.event.pull_request.html_url }}
run: |
tag_name=$(printf '%s' "$PR_TITLE" | sed -E 's/(Release|release)//' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
echo "tag_name=$tag_name" >> $GITHUB_OUTPUT
title="${PR_TITLE:-$(gh pr view "$PR_NUMBER" --json title -q .title)}"
version=$(echo "$title" | sed -E 's/[Rr]elease\s*//')
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "Release version: $version"
pr_title="docs: Auto Update Changelogs of "$tag_name
echo "pr_title=$pr_title" >> $GITHUB_OUTPUT
- name: Generate changelog with AI
id: analysis
continue-on-error: true
uses: MistEO/ai-issue-analysis@main
with:
agent: claude
api-key: ${{ secrets.BOT_AI_API_KEY }}
api-base-url: ${{ secrets.BOT_AI_API_BASE_URL }}
model: ${{ secrets.BOT_AI_MODEL }}
github-token: ${{ secrets.MAA_BOT_TOKEN }}
issue-number: ${{ github.event.pull_request.number || github.event.inputs.pr_number }}
checkout-repository: false
initial-comment-body: |
🤖 **AI 正在生成 Changelog...**
latest_stable_tag=$(git tag -l 'v*' | grep -v '-' | sort -V | tail -n 1) # 上一个 stable 版本
newest_tag=$(git describe --tags --match "v*" --abbrev=0) # 最新版本
echo "latest_stable_tag=$latest_stable_tag" >> $GITHUB_OUTPUT
echo "newest_tag=$newest_tag" >> $GITHUB_OUTPUT
正在根据提交记录自动生成 Changelog预计耗时约 10 分钟。
prompt-template: |
你是 MAA 项目的 Changelog 生成专员。
if [[ $tag_name == *-* ]]; then # 判断新版本是否为 beta 版本
latest=$newest_tag # 若是,则将 latest 参数设置为最新版本
else
latest=$latest_stable_tag # 若否,则设置为上一个 stable 版本
当前 Release PR 编号为 #{{issue_number}}(仓库 {{repository}}),请从该 PR 标题中提取目标版本号。
严格按照 .claude/skills/changelog/SKILL.md 中的规则,分析 git 提交记录tag 间的 commit 及其 diff和现有 CHANGELOG.md
生成完整的新版本 Changelog Markdown 并写到 {{answer_file}}。
{{answer_file}} 的内容应当是可以直接替换 CHANGELOG.md 整个文件的完整内容(包含新版本和所有历史版本)。
details-summary: 点击此处展开生成过程
- name: Write CHANGELOG.md from AI output
if: steps.analysis.outcome == 'success'
run: |
if [ ! -f answer.md ] || [ ! -s answer.md ]; then
echo "::error::answer.md not found or empty, cannot update CHANGELOG.md"
exit 1
fi
echo "latest=$latest" >> $GITHUB_OUTPUT
cp answer.md CHANGELOG.md
echo "CHANGELOG.md updated from AI output ($(wc -l < CHANGELOG.md) lines)"
cat $GITHUB_OUTPUT
echo '======='
echo "Target PR: $PR_URL" >> $PR_BODY
echo '' >> $PR_BODY
echo '<details><summary>Debug information</summary>' >> $PR_BODY
echo '' >> $PR_BODY
echo '```' >> $PR_BODY
sed 's/=/: /1' $GITHUB_OUTPUT >> $PR_BODY
echo '```' >> $PR_BODY
echo '' >> $PR_BODY
echo '</details>' >> $PR_BODY
cat $PR_BODY
- name: Generate changelog
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG_NAME: ${{ steps.extract_tag.outputs.tag_name }}
LATEST: ${{ steps.extract_tag.outputs.latest }}
run: |
git switch dev-v2
python3 tools/ChangelogGenerator/changelog_generator.py --tag "$TAG_NAME" --latest "$LATEST"
- name: Commit changes
env:
TAG_NAME: ${{ steps.extract_tag.outputs.tag_name }}
run: |
git status
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
git add .
commit_msg="docs: Auto Generate Changelog of Release $TAG_NAME"
git commit -m "$commit_msg"
if git diff --quiet CHANGELOG.md 2>/dev/null; then
echo "::warning::AI output is identical to existing CHANGELOG.md, no PR will be created"
else
echo "Changes detected:"
git diff --stat CHANGELOG.md
fi
- name: Create changelog PR
if: steps.analysis.outcome == 'success'
uses: peter-evans/create-pull-request@v8
with:
sign-commits: true
token: ${{ secrets.GITHUB_TOKEN }}
title: ${{ steps.extract_tag.outputs.pr_title }}
body-path: ${{ format('{0}/{1}', runner.temp, 'output' ) }}
base: "dev-v2"
branch: "changelog"
commit-message: "docs: Auto Generate Changelog of Release ${{ steps.version.outputs.version }}"
sign-commits: true
title: "docs: Auto Update Changelogs of ${{ steps.version.outputs.version }}"
body: |
Auto-generated changelog for **${{ steps.version.outputs.version }}**.
Target Release PR: #${{ github.event.pull_request.number || github.event.inputs.pr_number }}
base: dev-v2
branch: changelog
delete-branch: true
add-paths: CHANGELOG.md
reviewers: |
AnnAngela
assignees: |
AnnAngela
- name: Show outputs
if: always()
env:
COMMENT_URL: ${{ steps.analysis.outputs.comment-url }}
run: |
echo "comment_url=$COMMENT_URL"
echo "(Full agent-output and final-conclusion are available in the uploaded artifacts)"
assign-release-reviewers:
name: Assign Reviewers to Release PR
if: github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Assign reviewers to release PR
uses: kentaro-m/auto-assign-action@v2.0.2
with:
@@ -108,7 +135,6 @@ jobs:
update-submodules:
name: Update Submodules
# fork 守卫同上fork PR 的 token 只读write 步骤必然失败
if: github.event.pull_request.head.repo.full_name == github.repository && github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
runs-on: ubuntu-latest
steps:

View File

@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone ArknightsGameResource for Official
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: yuanyan3060/ArknightsGameResource
@@ -49,7 +49,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone ArknightsGameResource_Yostar for Overseas
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: ArknightsAssets/ArknightsGamedata
@@ -92,7 +92,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone arknights-toolbox-update for Taiwan
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
repository: arkntools/arknights-data-tw-for-maa
@@ -145,7 +145,7 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
# TL;DR https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/9872#issuecomment-2251378371
# actions/checkout uses ${{ secrets.GITHUB_TOKEN }} by default, meaning all steps will inherit it
@@ -155,7 +155,7 @@ jobs:
- name: Restore ResourceUpdater from cache
id: resupd-cache
uses: actions/cache/restore@v5
uses: actions/cache/restore@v6
continue-on-error: true
with:
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}
@@ -171,7 +171,7 @@ jobs:
- name: Cache MaaDeps
if: steps.resupd-cache.outputs.cache-hit != 'true'
id: maadeps-cache
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: |
@@ -195,7 +195,7 @@ jobs:
- name: Save ResourceUpdater to cache
if: always() && steps.resupd-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
uses: actions/cache/save@v6
continue-on-error: true
with:
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}

View File

@@ -43,7 +43,7 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -56,7 +56,7 @@ jobs:
- name: Restore cache for Smoke Test
if: ${{ steps.cache_key.outputs.key != '' }}
id: smoke-cache
uses: actions/cache/restore@v5
uses: actions/cache/restore@v6
continue-on-error: true
with:
key: ${{ steps.cache_key.outputs.key }}
@@ -76,7 +76,7 @@ jobs:
- name: Cache MaaDeps
if: steps.smoke-cache.outputs.cache-hit != 'true'
id: maadeps-cache
uses: actions/cache@v5
uses: actions/cache@v6
continue-on-error: true
with:
path: ./src/MaaUtils/MaaDeps
@@ -107,7 +107,7 @@ jobs:
- name: Save cache for Smoke Test (only in dev-v2)
if: steps.smoke-cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/dev-v2'
uses: actions/cache/save@v5
uses: actions/cache/save@v6
continue-on-error: true
with:
key: ${{ steps.cache_key.outputs.key }}

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false
@@ -28,7 +28,7 @@ jobs:
git show -s
- name: Checkout MaaResource
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
repository: MaaAssistantArknights/MaaResource
show-progress: false

View File

@@ -28,7 +28,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
show-progress: false
@@ -105,7 +105,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false

View File

@@ -12,7 +12,7 @@ jobs:
if: github.repository_owner == 'MaaAssistantArknights'
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
submodules: true

View File

@@ -35,7 +35,7 @@ jobs:
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
show-progress: false

View File

@@ -1,34 +1,33 @@
## v6.12.2
## v6.13.0
### Highlights
泡影苍霆活动关卡暂不支持多作业模式
由于本次活动关卡的字体与界面结构较为特殊MAA 无法在活动关卡中正常使用多作业模式。
使用自动战斗功能时,请关闭 MAA 的「多作业模式」,并在干员编队界面启动任务。
作业站中的「作业集」仅用于归纳作业,仍可正常导入。导入后可点击关卡名称右侧的文件图标,快速切换至对应关卡的单作业模式使用。
#### 6 星自动公招支持
#### 阵地足球锦标赛
新增可通过手动修改配置文件开启的 6 星自动公招功能,「是否招募」和「招募时间」选项移入常规设置,并优化了相关提示信息。
新增支持阵地足球锦标赛小游戏,可前往 「小工具-牛杂-当期活动」 进行选择。
#### 通知不可用时自动回退
#### 悖论模拟支持跳过战斗失败的关卡
系统通知无法显示时自动回退到软件内通知,避免用户错过重要提醒;启动时的通知检测提示也改为软件内弹窗,不再仅写入日志。
悖论模拟新增跳过战斗失败的作业选项,仅自动取消已完成的作业,未完成的作业将继续保持勾选状态。
#### 切换语言无需重启
#### 支持 MuMu 6.0 版本截图增强
支持 MuMu 6.0 版本安卓 15 的截图增强路径,提升截图稳定性和兼容性。
切换软件界面语言不再需要重启,干员识别、仓库识别等界面同步支持动态切换。
<details>
<summary><b>English</b></summary>
#### Paradox Simulation Support for Skipping Failed Battle Stages
#### 6-Star Auto Recruitment Support
The Paradox Simulation now includes an option to skip failed battle stages, automatically unchecking completed stages while keeping incomplete stages checked.
Added a 6-star auto recruitment feature that can be enabled through manual configuration file editing. The "Recruit" and "Recruitment Time" options have been moved to general settings, with improved tooltip hints.
#### Support for MuMu 6.0 Screenshot Enhancement
#### Notification Fallback
Supports the enhanced screenshot path for MuMu 6.0 Android 15, improving screenshot stability and compatibility.
Automatically falls back to in-app notifications when system notifications are unavailable, ensuring users never miss important alerts. The startup notification availability check now shows an in-app Growl message instead of only logging to file.
#### Switch Language Without Restart
Switching the UI language no longer requires a restart; operator recognition, depot recognition, and other views now support dynamic switching.
</details>
@@ -37,99 +36,52 @@ Supports the enhanced screenshot path for MuMu 6.0 Android 15, improving screens
以下是详细内容:
<details open>
<summary><b>v6.12.2 (2026-06-14)</b></summary>
<summary><b>v6.13.0 (2026-06-28)</b></summary>
### 新增 | New
* MAA 更新器增加文件被占用时重试、互斥量协调与自动回滚机制 (#16703) @soundofautumn
* Android OCR 推理引擎切换为 NCNN ([#17133](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17133)) @Aliothmoon
* 切换界面语言不再需要重启,干员识别、仓库识别等界面同步支持动态切换,并可单独设置干员名称显示语言 ([#17183](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17183)) @ABA2396
* 新增可通过手动修改配置文件开启 6 星自动公招,将「是否招募」和「招募时间」选项移入常规设置,优化 ToolTip 提示 ([#17154](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17154)) @ABA2396
* Custom Webhook 新增预置模板功能 ([#17081](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17081)) @pboymt
* 新增常驻关卡备选提示,当选中的关卡为常驻关卡或当前/上次时提示其后关卡不会被选中执行 @ABA2396
* 增加 DWM 被禁用与重复拖动异常的解决方案提示 @ABA2396
* 添加落叶逐火复刻关卡入口任务 @SherkeyXD
* Yostar 服新增 SSS#10 极寒自动战斗作业 ([#17137](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17137)) @Manicsteiner
### 改进 | Improved
* 更新肉鸽招募干员配置,补充赤刃明霄陈、贝洛内、缇缇、焰狐龙梓兰等干员 @Saratoga-Official
* 修复 POSIX 下 RawByNc 截图等待设备回连可能无限阻塞的问题 (#17027) @Halo5082
* 统一任务队列与自动战斗的停止逻辑 ([#17087](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17087)) @ABA2396
* 无法显示系统通知时自动回退到软件内通知,启动时通知不可用提示改为软件内弹窗 ([#17165](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17165)) @ABA2396
* 优化成就 DLC 标识显示效果与提示,增加对应 DLC 上线时间提示 @ABA2396
* 调整繁中服 CharNameOcrReplace 替换规则 ([#17113](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17113)) @momomochi987
* 怪猎一期复刻 CF-EX-8、CF-S-1 关卡参数调整 @status102
* 移除依赖库安装脚本的提权操作 @ABA2396
* 调整日志超时提示 @ABA2396
* YostarKR crop JieGarden@Roguelike@StartAction.png to improve match score @HX3N
### 修复 | Fix
* 修复界园肉鸽"移时换物"事件放弃探索时的异常处理 @Saratoga-Official
* 修复水月肉鸽事件 DiceConfirm 后事件不处理的问题 @status102
* 修复 NCNN OCR 引擎在小 ROI 下识别异常,对齐 fastdeploy 的 det 缩放与 rec 预处理 ([#17182](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17182)) @Aliothmoon
* 修复部分设备界园树洞"是非境"识别错误 ([#17181](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17181)) @Aliothmoon
* 修复自动战斗多作业模式无法进行关卡导航 @status102
* 修复自动战斗导航 retry 异常导致跳过作业的问题 @status102
* 修复肉鸽战斗结束后招募误入 StartExplore 的问题 @Saratoga-Official
* 修复水月肉鸽"大海的遗产"和"狗眼婆娑"事件名识别错误 @Saratoga-Official
* 修复肉鸽 GetDrop 未等待 LoadingText 导致的问题 @Saratoga-Official
* 修复 CloseEvent 和 CloseCollection 同时出现导致的异常 @Saratoga-Official
* 修复 MAA 更新检查 API 请求未遵循代理设置的问题 @status102
* 修正落叶逐火入口 OCR 文本 @SherkeyXD
* 修复复制任务时未保留原任务启用状态的问题 @ABA2396
* YostarEN fix future alter operators recognition and EnterEpisodeNew-Click @Constrat
* YostarKR correct ClickChapterNewDefaultProgress roi, expand training roi for wrapped operator names @HX3N
### 其他 | Other
* CI 工作流安全加固,防止 fork PR 表达式注入 @ABA2396
* Windows 构建切换至 VS2026 运行器镜像 (#15806) @soundofautumn
* 启动初始化期间允许拖拽排序任务列表 @status102
* 移除未使用的变量、简化 MuMu 加载日志 @ABA2396
</details>
<details>
<summary><b>v6.12.1 (2026-06-11)</b></summary>
### 修复 | Fix
* 修复多作业模式关卡导航选错关卡无法重选、关卡名复核失效等多项问题 @status102 @ABA2396
* 修复界园事件内通宝交换后无法正确处理事件结束页 (#16936) @ZiyinLin
</details>
<details>
<summary><b>v6.12.0 (2026-06-11)</b></summary>
### 新增 | New
* 繁中服支持「雪山降臨1101」活动导航与「喀蘭貿易技術研發部」小游戏 (#17073) @momomochi987
* 添加阵地足球锦标赛小游戏 @ABA2396
* 理智药使用增加使用中的药品信息 @status102
* 支持 MuMu 6.0 截图增强路径 (#16994) @ABA2396
* 切换主题时保存当前画面截图 (#16993) @ABA2396
* 悖论模拟支持跳过战斗失败的作业,自动战斗作业增加对应结构 (#16985) @status102
* 启动设置添加模拟器启动测试按钮,便于测试是否配置成功 @ABA2396
* 统一 SearchBar 样式 @ABA2396
### 改进 | Improved
* 更新 MuMu 12 关闭命令至 MuMuManager 新版 API (#17067) @Zmjjeff7
* 贸易站切换产物前先校验当前状态,避免已达成目标时的冗余操作 (#16954) @ZiyinLin
* 修正小游戏显示名称与提示文案的本地化优先级 @ABA2396
* 优化阵地足球锦标赛部署坐标与动画时序 @ABA2396
* 更新 OF-1 信用作战作业干员配置 @ABA2396
* 优化部分情况下自动战斗导航 OCR 结果中会出现误识别的前缀 @status102
* 基于灰度阈值预处理的自动战斗导航,适配 H 关及怪猎二期 TD-2 本 (#16990) @status102
* 肉鸽弹窗类事件处理重构 CloseCollectionClose (#17005) @status102
* InvokeProcSubTaskMsg 重构 (#16979) @status102
### 修复 | Fix
* 修复启动模拟器与 ADB 操作时 Process 对象未释放导致句柄泄漏 (#17060) @Zmjjeff7
* 修复配置创建失败时回滚不一致的问题 @ABA2396
* 修复 RainbowAnimation 画刷选择潜在的空引用异常 @ABA2396
* ConfigFactory Save 锁统一 (#17052) @status102
* 错误隐藏开局分队与开局干员选项 @ABA2396
* 修复特克诺干员名 OCR 误识别 (#17030) @ZiyinLin
* 修复绿票商店状态回退错误及二阶段校验问题 @status102 @ZiyinLin
* MaskedCcoeffMatcher 稀疏路径累加器改用 CV_64F 防止大数目相减精度损失 (#16983) @Aliothmoon
* 降低 PlayCover 下肉鸽部分任务的模版匹配分数阈值 (#16968) @Alan-Charred
* 更新 EN 服 IS6 bosky 模板与文字尺寸 @Constrat
* 修复 MaaMacGui changelog 贡献者 mention (#16978) @ColdSpellhere
### 文档 | Docs
* README「自动抄作业」更新为「自动战斗」 @Rbqwow
### 其他 | Other
* 自动战斗视频链接始终显示 @ABA2396
* 补充可露希尔基建数值 @Saratoga-Official
* YostarKR winden colorScale for compatibility @HX3N
### MaaMacGui
#### 新增 | New
* 添加阵地足球锦标赛小游戏入口 @ABA2396
#### 修复 | Fix
* 统一 gui.log 文件日志中的日期与时间格式 ([#93](https://github.com/MaaAssistantArknights/MaaMacGui/pull/93)) @Alan-Charred
* 修复 MAAUnified CI 选错 ref 的问题 ([#17143](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17143)) @Halo
* 优化 Avalonia 构建工作流触发条件 ([#17139](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17139)) @Manicsteiner
* YostarEN/JP/KR update LoneTrail and JieGarden themes ([#17175](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17175)) @Constrat @Manicsteiner @HX3N
* YostarJP add episode new navigation and JieGarden theme recruit @Manicsteiner
* Update GitHub push action version comment ([#17124](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/17124)) @AnnAngela
</details>

View File

@@ -0,0 +1,710 @@
{
"code": "level_crisis_v2_05-01",
"height": 8,
"levelId": "obt/crisis/v2/level_crisis_v2_05-01",
"name": "level_crisis_v2_05-01",
"stageId": "level_crisis_v2_05-01",
"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": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"buildableType": 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_character"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_character"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_character"
},
{
"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_character"
},
{
"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": 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_telout"
},
{
"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_character"
},
{
"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_fence_bound"
},
{
"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": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_fence_bound"
},
{
"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_character"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_character"
},
{
"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": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_character"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_character"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_hole"
},
{
"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_character"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_character"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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": true,
"tileKey": "tile_character"
},
{
"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_character"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_hole"
},
{
"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": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": true,
"tileKey": "tile_flystart"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_character"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_telin"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_character"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_hole"
},
{
"buildableType": 1,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_road"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"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": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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_character"
},
{
"buildableType": 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.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 12
}

View File

@@ -0,0 +1,710 @@
{
"code": "level_crisis_v2_05-03",
"height": 8,
"levelId": "obt/crisis/v2/level_crisis_v2_05-03",
"name": "level_crisis_v2_05-03",
"stageId": "level_crisis_v2_05-03",
"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": 0,
"isEnd": false,
"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": 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_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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_floor"
},
{
"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": 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_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": 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": 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": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"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": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"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": 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": 0,
"isEnd": false,
"isStart": true,
"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": 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": 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_telout"
}
],
[
{
"buildableType": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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": 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": 0,
"isEnd": true,
"isStart": false,
"tileKey": "tile_end"
},
{
"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": 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": 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.1,
-9.76
],
[
0.9448062140292399,
-6.6,
-10.61172366939915
]
],
"width": 12
}

View File

@@ -0,0 +1,733 @@
{
"code": "level_crisis_v2_05-05",
"height": 9,
"levelId": "obt/crisis/v2/level_crisis_v2_05-05",
"name": "level_crisis_v2_05-05",
"stageId": "level_crisis_v2_05-05",
"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": 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": 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": 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": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"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": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"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": 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": 2,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_wall"
},
{
"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": 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": 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_floor"
},
{
"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": 0,
"isEnd": false,
"isStart": true,
"tileKey": "tile_start"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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_end"
}
],
[
{
"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": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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": 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": 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": 0,
"heightType": 1,
"isEnd": false,
"isStart": false,
"tileKey": "tile_forbidden"
},
{
"buildableType": 0,
"heightType": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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": 0,
"isEnd": false,
"isStart": false,
"tileKey": "tile_floor"
},
{
"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": true,
"isStart": true,
"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"
}
]
],
"view": [
[
0.0,
-7.6,
-11.5
],
[
1.2469540431696988,
-8.1,
-12.325289159640393
]
],
"width": 11
}

View File

@@ -19925,6 +19925,33 @@
"stageId": "level_crisis_v2_04-05",
"width": 12
},
"level_crisis_v2_05-01-obt/crisis/v2/level_crisis_v2_05-01": {
"code": "level_crisis_v2_05-01",
"filename": "level_crisis_v2_05-01-obt-crisis-v2-level_crisis_v2_05-01.json",
"height": 8,
"levelId": "obt/crisis/v2/level_crisis_v2_05-01",
"name": "level_crisis_v2_05-01",
"stageId": "level_crisis_v2_05-01",
"width": 12
},
"level_crisis_v2_05-03-obt/crisis/v2/level_crisis_v2_05-03": {
"code": "level_crisis_v2_05-03",
"filename": "level_crisis_v2_05-03-obt-crisis-v2-level_crisis_v2_05-03.json",
"height": 8,
"levelId": "obt/crisis/v2/level_crisis_v2_05-03",
"name": "level_crisis_v2_05-03",
"stageId": "level_crisis_v2_05-03",
"width": 12
},
"level_crisis_v2_05-05-obt/crisis/v2/level_crisis_v2_05-05": {
"code": "level_crisis_v2_05-05",
"filename": "level_crisis_v2_05-05-obt-crisis-v2-level_crisis_v2_05-05.json",
"height": 9,
"levelId": "obt/crisis/v2/level_crisis_v2_05-05",
"name": "level_crisis_v2_05-05",
"stageId": "level_crisis_v2_05-05",
"width": 11
},
"level_rune_01-01-obt/rune/level_rune_01-01": {
"code": "level_rune_01-01",
"filename": "level_rune_01-01-obt-rune-level_rune_01-01.json",

View File

@@ -169,12 +169,9 @@
},
"char_1022_flwr2": {
"name": "撷英调香师",
"name_en": "撷英调香师",
"name_en_unavailable": true,
"name_jp": "撷英调香师",
"name_jp_unavailable": true,
"name_kr": "撷英调香师",
"name_kr_unavailable": true,
"name_en": "Perfumer the Distilled",
"name_jp": "萃香パフューマー",
"name_kr": "퍼퓨머 더 디스틸트",
"name_tw": "撷英调香师",
"name_tw_unavailable": true,
"position": "RANGED",
@@ -2942,12 +2939,9 @@
},
"char_4056_titi": {
"name": "缇缇",
"name_en": "缇缇",
"name_en_unavailable": true,
"name_jp": "缇缇",
"name_jp_unavailable": true,
"name_kr": "缇缇",
"name_kr_unavailable": true,
"name_en": "Titi",
"name_jp": "ティティ",
"name_kr": "티티",
"name_tw": "缇缇",
"name_tw_unavailable": true,
"position": "RANGED",
@@ -3686,12 +3680,9 @@
},
"char_4166_varkis": {
"name": "摆渡人",
"name_en": "摆渡人",
"name_en_unavailable": true,
"name_jp": "摆渡人",
"name_jp_unavailable": true,
"name_kr": "摆渡人",
"name_kr_unavailable": true,
"name_en": "Varkáris",
"name_jp": "ヴァルカリス",
"name_kr": "바르카리스",
"name_tw": "摆渡人",
"name_tw_unavailable": true,
"position": "MELEE",
@@ -5032,8 +5023,7 @@
"name_en": "Alliance/Supportive Operator",
"name_jp": "盟約・補助オペレーター",
"name_kr": "맹약·서포터 오퍼레이터",
"name_tw": "盟约·辅助干员",
"name_tw_unavailable": true,
"name_tw": "盟約·輔助幹員",
"position": "RANGED",
"profession": "SUPPORT",
"rangeId": ["y-2", "y-2", "y-2"],
@@ -5044,8 +5034,7 @@
"name_en": "Lord/Sharp",
"name_jp": "領主・Sharp",
"name_kr": "로드·샤프",
"name_tw": "主·Sharp",
"name_tw_unavailable": true,
"name_tw": "主·Sharp",
"position": "MELEE",
"profession": "WARRIOR",
"rangeId": ["2-3", "3-12", "3-12"],
@@ -7386,8 +7375,7 @@
"name_en": "Yanese Dagger",
"name_jp": "炎国の短刀",
"name_kr": "염국 단검",
"name_tw": "炎短刀",
"name_tw_unavailable": true,
"name_tw": "炎短刀",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7398,8 +7386,7 @@
"name_en": "Victorian Hammer",
"name_jp": "ヴィクトリアの鉄鎚",
"name_kr": "빅토리아 해머",
"name_tw": "式重",
"name_tw_unavailable": true,
"name_tw": "式重",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7410,8 +7397,7 @@
"name_en": "Burning Victorian Hammer",
"name_jp": "ヴィクトリアの鉄鎚・灼熱",
"name_kr": "불타는 빅토리아 해머",
"name_tw": "灼燃式重",
"name_tw_unavailable": true,
"name_tw": "灼燃式重",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7422,8 +7408,7 @@
"name_en": "Durable Victorian Hammer",
"name_jp": "ヴィクトリアの鉄鎚・不動",
"name_kr": "견고한 빅토리아 해머",
"name_tw": "坚固维式重",
"name_tw_unavailable": true,
"name_tw": "堅固維式重",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7434,8 +7419,7 @@
"name_en": "Speedy Victorian Hammer",
"name_jp": "ヴィクトリアの鉄鎚・加速",
"name_kr": "가속의 빅토리아 해머",
"name_tw": "加速式重",
"name_tw_unavailable": true,
"name_tw": "加速式重",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7446,8 +7430,7 @@
"name_en": "Frightening Victorian Hammer",
"name_jp": "ヴィクトリアの鉄鎚・戦慄",
"name_kr": "전율의 빅토리아 해머",
"name_tw": "战栗维式重",
"name_tw_unavailable": true,
"name_tw": "戰慄維式重",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7458,8 +7441,7 @@
"name_en": "Ægirian Blade",
"name_jp": "エーギルのいかり",
"name_kr": "에기르 칼날",
"name_tw": "阿戈重刃",
"name_tw_unavailable": true,
"name_tw": "阿戈重刃",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7470,8 +7452,7 @@
"name_en": "Durable Shield",
"name_jp": "堅守の盾",
"name_kr": "고수 방패",
"name_tw": "守盾牌",
"name_tw_unavailable": true,
"name_tw": "守盾牌",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7482,8 +7463,7 @@
"name_en": "Pocket Arts Circle",
"name_jp": "携帯式アーツバリア",
"name_kr": "주머니 마법진",
"name_tw": "奥术法阵",
"name_tw_unavailable": true,
"name_tw": "口袋法陣",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7494,8 +7474,7 @@
"name_en": "Goliath Helmet",
"name_jp": "ゴリアテの兜",
"name_kr": "골리앗 투구",
"name_tw": "歌利亚头盔",
"name_tw_unavailable": true,
"name_tw": "歌利亞頭盔",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7517,8 +7496,7 @@
"name_en": "Sargonian Teaspresso",
"name_jp": "サルゴンの渋茶",
"name_kr": "사르곤 농차",
"name_tw": "萨尔贡浓茶",
"name_tw_unavailable": true,
"name_tw": "薩爾貢濃茶",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7529,8 +7507,7 @@
"name_en": "Quick Combat Rations",
"name_jp": "速攻用レーション",
"name_kr": "신속 전투식량",
"name_tw": "迅捷作战粮",
"name_tw_unavailable": true,
"name_tw": "迅捷作戰糧",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7542,7 +7519,6 @@
"name_jp": "有限加速マシン",
"name_kr": "제한 가속기",
"name_tw": "有限加速器",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7553,8 +7529,7 @@
"name_en": "Laser Sighter",
"name_jp": "レーザー発射機",
"name_kr": "레이저 발사기",
"name_tw": "激光发射器",
"name_tw_unavailable": true,
"name_tw": "鐳射發射器",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7565,8 +7540,7 @@
"name_en": "Buzzer",
"name_jp": "警報器",
"name_kr": "버저",
"name_tw": "蜂器",
"name_tw_unavailable": true,
"name_tw": "蜂器",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7577,8 +7551,7 @@
"name_en": "Disguise Outfit",
"name_jp": "迷彩ヘルメット",
"name_kr": "위장복",
"name_tw": "伪装服",
"name_tw_unavailable": true,
"name_tw": "偽裝服",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7589,8 +7562,7 @@
"name_en": "Tough Launcher",
"name_jp": "不屈の射出装置",
"name_kr": "불굴의 사출기",
"name_tw": "不屈射器",
"name_tw_unavailable": true,
"name_tw": "不屈射器",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7601,8 +7573,7 @@
"name_en": "Lateran Clip",
"name_jp": "ラテラーノのクリップ",
"name_kr": "라테라노 클립",
"name_tw": "拉特兰桥夹",
"name_tw_unavailable": true,
"name_tw": "拉特蘭橋夾",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7613,8 +7584,7 @@
"name_en": "Teargas Can",
"name_jp": "催涙ガス",
"name_kr": "최루가스",
"name_tw": "催瓦斯",
"name_tw_unavailable": true,
"name_tw": "催瓦斯",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7625,8 +7595,7 @@
"name_en": "Concentrated Smelling Salts",
"name_jp": "濃縮気付け薬",
"name_kr": "농축 스멜링 솔트",
"name_tw": "浓缩嗅盐",
"name_tw_unavailable": true,
"name_tw": "濃縮嗅鹽",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7649,7 +7618,6 @@
"name_jp": "ライオットシールド",
"name_kr": "진압 방패",
"name_tw": "防暴盾",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7660,8 +7628,7 @@
"name_en": "Protection Drone",
"name_jp": "シールドドローン",
"name_kr": "실드 드론",
"name_tw": "护盾无人机",
"name_tw_unavailable": true,
"name_tw": "護盾無人機",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7672,8 +7639,7 @@
"name_en": "Kjeragi Nevermeltice",
"name_jp": "イェラグの不融氷",
"name_kr": "쉐라그 만년빙",
"name_tw": "拉格不融冰",
"name_tw_unavailable": true,
"name_tw": "拉格不融冰",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7684,8 +7650,7 @@
"name_en": "Precision Scope",
"name_jp": "精密な狙撃スコープ",
"name_kr": "정밀 조준경",
"name_tw": "精准狙击镜",
"name_tw_unavailable": true,
"name_tw": "精準狙擊鏡",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7696,8 +7661,7 @@
"name_en": "Raid Grenade",
"name_jp": "強襲用グレネード",
"name_kr": "기습 수류탄",
"name_tw": "突袭手雷",
"name_tw_unavailable": true,
"name_tw": "突襲手榴彈",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7709,7 +7673,6 @@
"name_jp": "眠れる眷属",
"name_kr": "잠자는 후예",
"name_tw": "休眠子裔",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7720,8 +7683,7 @@
"name_en": "Lucky Coin",
"name_jp": "幸運のコイン",
"name_kr": "럭키코인",
"name_tw": "盟约之币",
"name_tw_unavailable": true,
"name_tw": "幸運硬幣",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7732,8 +7694,7 @@
"name_en": "Bimodule Robotic Arm",
"name_jp": "デュアルロボットアーム",
"name_kr": "듀얼 모드 기계팔",
"name_tw": "双模机械臂",
"name_tw_unavailable": true,
"name_tw": "雙模機械臂",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7744,8 +7705,7 @@
"name_en": "M3 Cocoon Shell",
"name_jp": "M3コクーンアーマー",
"name_kr": "M3 고치 갑옷",
"name_tw": "M3甲",
"name_tw_unavailable": true,
"name_tw": "M3甲",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7756,8 +7716,7 @@
"name_en": "Mimic Matter",
"name_jp": "擬態物質",
"name_kr": "의태 물질",
"name_tw": "拟态物质",
"name_tw_unavailable": true,
"name_tw": "擬態物質",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7779,8 +7738,7 @@
"name_en": "HR File",
"name_jp": "人事部の書類",
"name_kr": "인사부 파일",
"name_tw": "人事部文",
"name_tw_unavailable": true,
"name_tw": "人事部文",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7792,7 +7750,6 @@
"name_jp": "ドクターのホログラム",
"name_kr": "박사의 홀로그램",
"name_tw": "博士投影",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7803,8 +7760,7 @@
"name_en": "Mutated Cells",
"name_jp": "変異細胞",
"name_kr": "돌연변이 세포",
"name_tw": "突变细胞",
"name_tw_unavailable": true,
"name_tw": "突變細胞",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7815,8 +7771,7 @@
"name_en": "Damazti Isomorph",
"name_jp": "変形同位体",
"name_kr": "변형 구조체",
"name_tw": "形同构体",
"name_tw_unavailable": true,
"name_tw": "形同構體",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7827,8 +7782,7 @@
"name_en": "Commercial Packaging Plan",
"name_jp": "プロデュース戦略",
"name_kr": "상업 포장 계획",
"name_tw": "商业包装方案",
"name_tw_unavailable": true,
"name_tw": "商業包裝方案",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7839,8 +7793,7 @@
"name_en": "Dispatch Module",
"name_jp": "呼出モジュール",
"name_kr": "호출 모듈",
"name_tw": "呼模",
"name_tw_unavailable": true,
"name_tw": "呼模",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7851,8 +7804,7 @@
"name_en": "Gun-Knight's Might",
"name_jp": "銃騎士の威光",
"name_kr": "총기사의 위엄",
"name_tw": "铳骑之威",
"name_tw_unavailable": true,
"name_tw": "銃騎之威",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7863,8 +7815,7 @@
"name_en": "Tianshi's Cauldron",
"name_jp": "天師の祭器",
"name_kr": "천사의 고정",
"name_tw": "天古鼎",
"name_tw_unavailable": true,
"name_tw": "天古鼎",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7875,8 +7826,7 @@
"name_en": "Trench Test Subject",
"name_jp": "海溝の実験体",
"name_kr": "해구 실험체",
"name_tw": "海沟实验体",
"name_tw_unavailable": true,
"name_tw": "海溝實驗體",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -7888,7 +7838,6 @@
"name_jp": "スチームハート",
"name_kr": "증기의 마음",
"name_tw": "蒸汽之心",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8163,8 +8112,7 @@
"name_en": "Kjeragandr's Tears",
"name_jp": "イェラガンドの涙",
"name_kr": "쉐라간드의 눈물",
"name_tw": "耶拉德之",
"name_tw_unavailable": true,
"name_tw": "耶拉德之",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8175,8 +8123,7 @@
"name_en": "Desert Compass",
"name_jp": "黄砂のコンパス",
"name_kr": "사막 나침반",
"name_tw": "黄沙罗盘",
"name_tw_unavailable": true,
"name_tw": "黃沙羅盤",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8187,8 +8134,7 @@
"name_en": "'Double Lids'",
"name_jp": "「ダブルリッズ」",
"name_kr": "'쌍꺼풀'",
"name_tw": "“眼皮”",
"name_tw_unavailable": true,
"name_tw": "“眼皮”",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["3-10", "3-10", "3-10"],
@@ -8200,7 +8146,6 @@
"name_jp": "バリケード",
"name_kr": "차단 공사",
"name_tw": "阻隔工事",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8211,8 +8156,7 @@
"name_en": "Ranged Tile",
"name_jp": "射撃台",
"name_kr": "사격대",
"name_tw": "射台",
"name_tw_unavailable": true,
"name_tw": "射台",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8224,7 +8168,6 @@
"name_jp": "封じられた地面",
"name_kr": "봉인된 지면",
"name_tw": "封印的地面",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8235,8 +8178,7 @@
"name_en": "'Mystery Customer'",
"name_jp": "「謎の客人」",
"name_kr": "'신비한 고객'",
"name_tw": "“神秘客”",
"name_tw_unavailable": true,
"name_tw": "“神秘客”",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8247,8 +8189,7 @@
"name_en": "Transmitter",
"name_jp": "ビーコン",
"name_kr": "비콘",
"name_tw": "信",
"name_tw_unavailable": true,
"name_tw": "信",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8270,8 +8211,7 @@
"name_en": "Dusk's Scroll",
"name_jp": "絵巻",
"name_kr": "두루마리",
"name_tw": "卷",
"name_tw_unavailable": true,
"name_tw": "卷",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["1-1", "1-1", "1-1"],
@@ -8283,7 +8223,6 @@
"name_jp": "教鞭",
"name_kr": "교편",
"name_tw": "教鞭",
"name_tw_unavailable": true,
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -8294,8 +8233,7 @@
"name_en": "Alliance Chill Gust",
"name_jp": "盟約吹雪",
"name_kr": "맹약의 한풍",
"name_tw": "盟约寒风",
"name_tw_unavailable": true,
"name_tw": "盟約寒風",
"position": "NONE",
"profession": "TRAP",
"rangeId": ["0-1", "0-1", "0-1"],
@@ -10663,12 +10601,9 @@
},
"trap_279_pirene": {
"name": "喷泉水池",
"name_en": "喷泉水池",
"name_en_unavailable": true,
"name_jp": "喷泉水池",
"name_jp_unavailable": true,
"name_kr": "喷泉水池",
"name_kr_unavailable": true,
"name_en": "Fountain",
"name_jp": "憩いの池",
"name_kr": "분수대 수조",
"name_tw": "喷泉水池",
"name_tw_unavailable": true,
"position": "NONE",
@@ -15240,12 +15175,9 @@
},
"trap_790_dytswd": {
"name": "宿傲",
"name_en": "宿傲",
"name_en_unavailable": true,
"name_en": "Olden Pride",
"name_jp": "宿傲",
"name_jp_unavailable": true,
"name_kr": "宿傲",
"name_kr_unavailable": true,
"name_kr": "숙오",
"name_tw": "宿傲",
"name_tw_unavailable": true,
"position": "NONE",
@@ -15255,12 +15187,9 @@
},
"trap_791_dytfre": {
"name": "宿怒",
"name_en": "宿怒",
"name_en_unavailable": true,
"name_en": "Olden Grudge",
"name_jp": "宿怒",
"name_jp_unavailable": true,
"name_kr": "宿怒",
"name_kr_unavailable": true,
"name_kr": "숙노",
"name_tw": "宿怒",
"name_tw_unavailable": true,
"position": "NONE",

View File

@@ -0,0 +1,429 @@
{
"minimum_required": "v5.23.0",
"stage_name": "Spier Foothills",
"actions": [],
"doc": {
"title": "SSS - TASK ONLY - CasterRecruit - Spier Foothills - Ice Blast Machine",
"details": "This operation is for farming the \"Recruit 8 Casters\" mission. You need to set the loop count. MAA will clear the first stage, recruit operators, then intentionally leak enemies to restart.\n═══════════════════════════════════\nOperation code: maa://77859\nManual team assembly is required for now. For all filler operators, prioritize low cost. Recommended promotion is E2, with E1 max as the bare minimum.\nAvoid skills that only trigger once per deployment (like Mountain S2) or skills that require enemy contact (like Degenbrecher S3), as MAA will keep activating them repeatedly. Also avoid skills with unusual attack ranges (like Schwarz S3).\nDouble-check that the Amplifier is set to [Ice Blast Machine], all Tactical Equipment are set to A, your team is manually formed and confirmed, and then hit Start.\nAuthor: 萨拉托加\nJSON Author: 萨拉托加\nVideo: 【MAA保全派驻 任务合集】 https://www.bilibili.com/video/BV1RbqnBCEfd/\n═══════════════════════════════════\nExtra operators (excluding core picks):\nVanguards (3): Choose skills that generate cost without needing enemy contact. Avoid skills that require enemy contact to generate cost, and avoid block-1 vanguards (they may leak enemies). Prioritize Pioneers. SilverAsh is not recommended, as MAA will frequently target his summon.\nDefenders (5): Prioritize self-healing healing defenders like Saria, Shu, Nearl, plus other defenders around 20 cost, e.g., Hoshiguma, Yu.\nSnipers (5): Go for low-cost AA snipers where possible.\nCasters (5): Aim for casters around 20 cost. If bringing AoE casters, equip cost-reduction modules. Recommended operators with AoE skills, e.g., Eyjafjalla S3, Goldenglow S3, LapplandAlt S3; bring Dusk if you want the \"Four Seasons\" buff.\nSupporters (2): Options include Civilight Eterna S2, Haruka S2, Virtuosa S3, or Tragodia S3; bring Ling if you want the \"Four Seasons\" buff.\n═══════════════════════════════════\nFor any issues, join the group: 216314927. Comments may not receive timely replies.\nYou may tweak the core selections in the operation files to suit your needs, but please do not re-upload them to the operation site. Using this operation means you agree to these terms.",
"title_color": "dark",
"details_color": "dark"
},
"groups": [],
"opers": [],
"type": "SSS",
"buff": "冷爆机",
"equipment": ["A", "A", "A", "A", "A", "A", "A", "A"],
"strategy": "优选策略",
"tool_men": {
"vanguard": 3,
"guard": 0,
"defender": 5,
"sniper": 5,
"caster": 5,
"medic": 0,
"supporter": 2,
"specialist": 0
},
"drops": ["术师", "辅助", "无需增调干员", "重装", "冰浪脉冲模块"],
"blacklist": [
"CONFESS-47",
"PhonoR-0",
"Friston-3",
"U-Official",
"泰拉大陆调查团",
"正义骑士号",
"THRM-EX",
"斑点",
"泡普卡",
"月见夜",
"空爆",
"梓兰",
"安赛尔",
"芙蓉",
"安德切尔",
"克洛丝",
"米格鲁",
"卡缇",
"玫兰莎",
"翎羽",
"香草",
"芬",
"巡林者",
"黑角",
"夜刀",
"Castle-3",
"Lancet-2",
"历阵锐枪芬",
"野鬃",
"风笛",
"苇草",
"格拉尼",
"红豆",
"渡桥",
"缪尔赛思",
"伺夜",
"夜半",
"豆苗",
"万顷",
"琴柳",
"极境",
"桃金娘",
"寻澜",
"齐尔查克",
"伊内丝",
"谜图",
"晓歌",
"山",
"达格达",
"重岳",
"杰克",
"燧石",
"猎蜂",
"因陀罗",
"维娜·维多利亚",
"薇薇安娜",
"史尔特尔",
"阿米娅",
"铸铁",
"星极",
"慕斯",
"左乐",
"火龙S黑角",
"赤冬",
"宴",
"赫拉格",
"莱欧斯",
"止颂",
"摩根",
"耀骑士临光",
"断罪者",
"炎客",
"斯卡蒂",
"芙兰卡",
"缠丸",
"司霆惊蛰",
"骋风",
"玛恩纳",
"龙舌兰",
"露托",
"斥罪",
"泥岩",
"火神",
"坚雷",
"石棉",
"暮落",
"车尔尼",
"森蚺",
"极光",
"洋灰",
"灰毫",
"号角",
"火哨",
"菲莱",
"余",
"普罗旺斯",
"黑",
"酸糖",
"鸿雪",
"玫拉",
"白雪",
"陨星",
"慑砂",
"W",
"菲亚梅塔",
"截云",
"守林人",
"安比尔",
"安哲拉",
"远牙",
"子月",
"送葬人",
"奥斯塔",
"松果",
"假日威龙陈",
"吉星",
"早露",
"熔泉",
"埃拉托",
"铅踝",
"提丰",
"迷迭香",
"承曦格雷伊",
"冰酿",
"莱伊",
"跃跃",
"娜仁图亚",
"水灯心",
"凯尔希",
"刺玫",
"焰影苇草",
"濯尘芙蓉",
"罗比菈塔",
"掠风",
"白铁",
"凯瑟琳",
"阿兰娜",
"砾",
"红",
"槐琥",
"傀影",
"卡夫卡",
"缄默德克萨斯",
"麒麟R夜刀",
"弑君者",
"阿消",
"食铁兽",
"温蒂",
"见行者",
"暗索",
"崖心",
"雪雉",
"歌蕾蒂娅",
"杏仁",
"阿",
"空构",
"新约能天使",
"孑",
"乌有",
"老鲤",
"琳琅诗怀雅",
"裁度",
"罗宾",
"霜华",
"多萝西",
"艾拉",
"钼铅",
"贝娜",
"风丸",
"归溟幽灵鲨",
"维荻",
"双月",
"锡人",
"引星棘刺",
"云迹",
"蒂比",
"狮蝎",
"伊桑",
"绮良",
"水月",
"阿斯卡纶",
"八幡海铃",
"若叶睦",
"冬时",
"折桠",
"哈蒂娅",
"雪猎",
"凛御银灰",
"娜斯提",
"响石",
"天空盒"
],
"stages": [
{
"stage_name": "运道抢险",
"strategies": [
{
"tool_men": {
"vanguard": 1
},
"location": [8, 5],
"direction": "none"
},
{
"tool_men": {
"sniper": 1,
"vanguard": 1
},
"location": [8, 5],
"direction": "none"
},
{
"tool_men": {
"vanguard": 1
},
"location": [7, 5],
"direction": "Left"
},
{
"tool_men": {
"sniper": 1
},
"location": [4, 4],
"direction": "Left"
},
{
"core": "冷爆机",
"tool_men": {},
"location": [6, 5],
"direction": "Left"
},
{
"tool_men": {
"defender": 1
},
"location": [5, 5],
"direction": "Left"
},
{
"core": "冷爆机",
"tool_men": {},
"location": [6, 5],
"direction": "Left"
},
{
"tool_men": {
"supporter": 1
},
"location": [5, 4],
"direction": "Left"
},
{
"core": "冷爆机",
"tool_men": {},
"location": [6, 5],
"direction": "Left"
},
{
"tool_men": {
"vanguard": 1
},
"location": [7, 5],
"direction": "Left"
},
{
"tool_men": {
"caster": 1
},
"location": [4, 4],
"direction": "Left"
},
{
"tool_men": {
"defender": 1
},
"location": [5, 5],
"direction": "Left"
},
{
"tool_men": {
"supporter": 1
},
"location": [4, 4],
"direction": "Left"
},
{
"tool_men": {
"sniper": 1,
"caster": 1
},
"location": [5, 4],
"direction": "Left"
},
{
"tool_men": {
"sniper": 1,
"caster": 1
},
"location": [5, 4],
"direction": "Left"
},
{
"tool_men": {
"vanguard": 99
},
"location": [7, 5],
"direction": "Left"
},
{
"tool_men": {
"defender": 99
},
"location": [5, 5],
"direction": "Left"
},
{
"tool_men": {
"supporter": 99
},
"location": [4, 4],
"direction": "Left"
},
{
"tool_men": {
"caster": 99
},
"location": [5, 4],
"direction": "Left"
},
{
"core": "战备激活阀",
"tool_men": {
"sniper": 99
},
"location": [5, 4],
"direction": "Left"
}
],
"draw_as_possible": true,
"actions": [
{
"type": "二倍速"
},
{
"type": "Deploy",
"name": "超重绝缘水泥",
"location": [6, 1],
"direction": "none",
"costs": 48
},
{
"type": "Deploy",
"name": "超重绝缘水泥",
"location": [7, 1],
"direction": "none",
"costs": 49
},
{
"type": "Deploy",
"name": "超重绝缘水泥",
"location": [8, 1],
"direction": "none",
"costs": 50
}
],
"retry_times": 99
},
{
"stage_name": "作业整备",
"strategies": [],
"draw_as_possible": true,
"actions": [
{
"type": "二倍速"
},
{
"type": "Deploy",
"name": "超重绝缘水泥",
"location": [1, 1],
"direction": "none",
"costs": 48
},
{
"type": "Deploy",
"name": "超重绝缘水泥",
"location": [2, 1],
"direction": "none",
"costs": 49
},
{
"type": "Deploy",
"name": "超重绝缘水泥",
"location": [3, 1],
"direction": "none",
"costs": 50
}
],
"retry_times": 0
}
]
}

View File

@@ -2287,6 +2287,14 @@
"sortId": -10000,
"usage": "An innovative beverage inspired by high-altitude air-supply devices, now the lifeblood of Columbians. No one would refuse to fork over a high price to taste a new era beyond the Starpod."
},
"act48side_token_ostracon": {
"classifyType": "NONE",
"description": "Even though everyone has a terminal loaded with all kinds of apps these days, the Minoans still prefer to follow their ancient traditions.",
"icon": "act48side_token_ostracon.png",
"name": "Ostracon",
"sortId": -10000,
"usage": "An essential item for Athenian citizens when voting. But what to do with used ostraca? Astynomos' Office decided to collect and wrap them up nicely for tourist souvenirs, and this innovative idea was well received by all."
},
"act4bossrush_milestone_point": {
"classifyType": "NONE",
"description": "Right and wrong are far from crucial in a simulation. They are only a form of support. They help you make the correct choices when the battle is real.",
@@ -2719,6 +2727,22 @@
"sortId": -10000,
"usage": "A carefully-prepared tasting set. Can be exchanged for LMD."
},
"itempack_leaf_def": {
"classifyType": "NONE",
"description": "Create your own unique style.",
"icon": "itempack_leaf_def.png",
"name": "Looseleaf/Rhodes Fashion Review",
"sortId": -10000,
"usage": "A themed Fashion Collections set containing a Custom Looseleaf and stickers, easily placed and displayed."
},
"itempack_leaf_def2": {
"classifyType": "NONE",
"description": "A new melody composed for today's display.",
"icon": "itempack_leaf_def2.png",
"name": "Looseleaf/Media",
"sortId": -10000,
"usage": "A themed Fashion Collections set containing a Custom Looseleaf and stickers, easily placed and displayed."
},
"itempack_main_1": {
"classifyType": "NONE",
"description": "A materials supply crate issued alongside Sanity samplers, giving you a random material as you restore your Sanity.",
@@ -2823,6 +2847,54 @@
"sortId": -10000,
"usage": "HR resource pack for recruitment, allowing a large number of Operators to be recruited via public channels."
},
"itempack_stickers_rog1": {
"classifyType": "NONE",
"description": "A grand encompassing performance.",
"icon": "itempack_stickers_rog1.png",
"name": "Sticker Pack/Crimson Solitaire",
"sortId": -10000,
"usage": "Special Looseleaf Stickers for Fashion Collections usable as decorations."
},
"itempack_stickers_rog2": {
"classifyType": "NONE",
"description": "The tides call out for you to travel.",
"icon": "itempack_stickers_rog2.png",
"name": "Sticker Pack/Caerula Arbor",
"sortId": -10000,
"usage": "Special Looseleaf Stickers for Fashion Collections usable as decorations."
},
"itempack_stickers_rog3": {
"classifyType": "NONE",
"description": "Seek the beauty of mystery in the bitter cold.",
"icon": "itempack_stickers_rog3.png",
"name": "Sticker Pack/Silverfrost Frontier",
"sortId": -10000,
"usage": "Special Looseleaf Stickers for Fashion Collections usable as decorations."
},
"itempack_stickers_rog4": {
"classifyType": "NONE",
"description": "The land witnesses the Sarkaz's splendid forms.",
"icon": "itempack_stickers_rog4.png",
"name": "Sticker Pack/Furnaceside Fables",
"sortId": -10000,
"usage": "Special Looseleaf Stickers for Fashion Collections usable as decorations."
},
"itempack_stickers_rog5": {
"classifyType": "NONE",
"description": "Tourists entranced by enchanting landscapes.",
"icon": "itempack_stickers_rog5.png",
"name": "Sticker Pack/Garden of Grotesqueries",
"sortId": -10000,
"usage": "Special Looseleaf Stickers for Fashion Collections usable as decorations."
},
"itempack_stickers_sand1": {
"classifyType": "NONE",
"description": "Admire the artistic mesh of desert and oasis.",
"icon": "itempack_stickers_sand1.png",
"name": "Sticker Pack/Tales Within the Sand",
"sortId": -10000,
"usage": "Special Looseleaf Stickers for Fashion Collections usable as decorations."
},
"main16_spitem_1": {
"classifyType": "NORMAL",
"description": "Once, they said it was the origin of suffering. Now, they say its disappearance was the beginning of tragedy.",

View File

@@ -28,12 +28,8 @@
"roi": [1163, 27, 84, 28],
"text": ["Movements"]
},
"EnterEpisodeNew": {
"baseTask": "#none",
"baseTaskDoc": "26.2.10 Add a secondary interface and delete it after subsequent updates",
"Doc": "base_task",
"template": "empty.png",
"action": "ClickSelf"
"EnterEpisodeNew-Click": {
"text": ["Go to Episode"]
},
"LevelOfDifficulty": {
"text": ["Environment", "PRTS"]
@@ -127,7 +123,7 @@
["Purestream", "清流"],
["Whisperain", "絮雨"],
["Tuye", "图耶"],
["Kal'tsit", "凯尔希"],
["^Kal'tsit$", "凯尔希"],
["Mulberry", "桑葚"],
["Honeyberry", "蜜莓"],
["Reserve Operator *-* *L[ogistics]*", "预备干员-后勤"],
@@ -144,7 +140,7 @@
["Grani", "格拉尼"],
["Siege", "推进之王"],
["^Texas$", "德克萨斯"],
["Zima", "凛冬"],
["^Zima$", "凛冬"],
["Vigna", "红豆"],
["Scavenger", "清道夫"],
["Courier", "讯使"],
@@ -1092,7 +1088,13 @@
["Ice Blast Machine", "冷爆机"],
["Skybox", "天空盒"],
["Nasti", "娜斯提"],
["Cairn", "响石"]
["Cairn", "响石"],
["Olden Pride", "宿傲"],
["Olden Grudge", "宿怒"],
["Fountain", "喷泉水池"],
["Varkáris", "摆渡人"],
["Perfumer the Distilled", "撷英调香师"],
["Titi", "缇缇"]
]
},
"GameStartCheckResourceOCR": {
@@ -1762,7 +1764,8 @@
["Cloudstepper", "攀云机"],
["Pinnacle Insights? Port", "尖端研究成果共享终端"],
["Lightweight Range[finder]*", "轻型瞄准测距仪"],
["Master Who Walks the[ Night Gear]*", "天工夜行套装"]
["Master Who Walks the[ Night Gear]*", "天工夜行套装"],
["Ice Blast Machine", "冷爆机"]
]
},
"SSSBuffChooseConfirm": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -1,11 +1,11 @@
{
"activity": {
"name": "Trials for Navigator",
"time": 1781175600
"name": "Medjehtiqedti Bound",
"time": 1782129600
},
"gacha": {
"pool": "Confirmation, Completion, Conduction",
"time": 1780671600
"pool": "Quester in Frozen Moments",
"time": 1782129600
},
"last_updated": "2026-06-11 11:33:55.000"
"last_updated": "2026-06-22 12:38:44.000"
}

View File

@@ -43,7 +43,7 @@
"classifyType": "CONSUME",
"description": "ロドスの戦略需要を考慮した結果、まとまった人材の引き入れと方向性が定まったスカウトを同時進行することで、特殊な人材を個別に獲得することができるようになった。",
"icon": "2026recruitment10_1.png",
"name": "5.5周年特別スカウト券α",
"name": "6.5周年特別スカウト券α",
"sortId": 50107,
"usage": "ロドス人事部が特別に発行した許可証。 人材紹介会社に対して特殊なリクエストをしており、オペレーターを1回で10人採用できる。"
},
@@ -51,7 +51,7 @@
"classifyType": "CONSUME",
"description": "ロドスの戦略需要を考慮した結果、まとまった人材の引き入れと方向性が定まったスカウトを同時進行することで、特殊な人材を個別に獲得することができるようになった。",
"icon": "2026recruitment10_2.png",
"name": "5.5周年特別スカウト券β",
"name": "6.5周年特別スカウト券β",
"sortId": 50107,
"usage": "ロドス人事部が特別に発行した許可証。 人材紹介会社に対して特殊なリクエストをしており、オペレーターを1回で10人採用できる。"
},
@@ -59,7 +59,7 @@
"classifyType": "CONSUME",
"description": "ロドスの戦略需要を考慮した結果、まとまった人材の引き入れと方向性が定まったスカウトを同時進行することで、特殊な人材を個別に獲得することができるようになった。",
"icon": "2026recruitment10_3.png",
"name": "5.5周年特別スカウト券γ",
"name": "6.5周年特別スカウト券γ",
"sortId": 50107,
"usage": "ロドス人事部が特別に発行した許可証。 人材紹介会社に対して特殊なリクエストをしており、オペレーターを1回で10人採用できる。"
},
@@ -501,7 +501,7 @@
"icon": "31083.png",
"name": "炭化水素ポリマー",
"sortId": 100010,
"usage": "耐熱性と耐薬品性を兼ね備えた工業材料昇進やスキル強化に必要な素材。"
"usage": "耐熱性と耐薬品性を兼ね備えた工業材料昇進やスキル強化に必要な素材。"
},
"31084": {
"classifyType": "MATERIAL",
@@ -1989,7 +1989,7 @@
"icon": "act27side_token_fur.png",
"name": "ピンクのふわふわ",
"sortId": -10000,
"usage": "アウトドア用の防寒具に使えそうだが、今の季節はあまり役に立たないだろう。「ホワイト・ヴォルケーノ」の末娘がなぜこの奇妙な綿毛を気に入っているのかは分からないが、彼女にこれを渡せばこっそり店内の商品と交換してくれる。注意:このことはにはくれぐれも長兄には内密に!!"
"usage": "アウトドア用の防寒具に使えそうだが、今の季節はあまり役に立たないだろう。「ホワイト・ヴォルケーノ」の末娘がなぜこの奇妙な綿毛を気に入っているのかは分からないが、彼女にこれを渡せばこっそり店内の商品と交換してくれる。注意:このことはくれぐれも長兄には内密に!!"
},
"act28side_token_box": {
"classifyType": "NONE",
@@ -2287,6 +2287,14 @@
"sortId": -10000,
"usage": "高所環境用酸素供給装置から着想を得た斬新なコンセプトのドリンク。現代のクルビア人にとっては、もはや血液も同然だ。新時代、それも星のさやの外側から来た味をひと口体験するためなら、誰もが喜んで大金を差し出す。"
},
"act48side_token_ostracon": {
"classifyType": "NONE",
"description": "人々が様々な機能を備えた端末を手にするようになった現代に、ミノス人は依然として、投票という行為においては古来のやり方に従い続けている。",
"icon": "act48side_token_ostracon.png",
"name": "投票用陶片",
"sortId": -10000,
"usage": "アテヌスの公民が投票時に用いる必需品。使用した陶片は、監督官の執務室が回収し、それをきれいに包装して、アテヌスを訪れる観光客に販売することになった。この画期的な取り組みは、各方面から高い評価を得ている。"
},
"act4bossrush_milestone_point": {
"classifyType": "NONE",
"description": "試練の成否はそれほど重要ではない、これは貴殿が実戦において正確な選択を行うためのサポートである。",
@@ -2727,6 +2735,22 @@
"sortId": -10000,
"usage": "丹念に用意された試飲セット。龍門幣と交換できる。"
},
"itempack_leaf_def": {
"classifyType": "NONE",
"description": "あなただけのデザインを創ろう。",
"icon": "itempack_leaf_def.png",
"name": "特集/ロドス特選",
"sortId": -10000,
"usage": "表紙編集のテンプレートに含まれている表紙と特集シール。一括で編集を完了させられる。"
},
"itempack_leaf_def2": {
"classifyType": "NONE",
"description": "今日の輝きのために、新たな旋律を紡ごう。",
"icon": "itempack_leaf_def2.png",
"name": "特集/ストリーミングメディア",
"sortId": -10000,
"usage": "表紙編集のテンプレートに含まれている表紙と特集シール。一括で編集を完了させられる。"
},
"itempack_main_1": {
"classifyType": "NONE",
"description": "試供理性回復剤がおまけでついて来る素材補給箱。理性を回復させると同時に、ランダムで材料をひとつ獲得できる。",
@@ -2831,6 +2855,54 @@
"sortId": -10000,
"usage": "求人の需要を満たすために用意された人材リソースパック。関係者が公開ルートを通じて多くのオペレーターを募集するために使用される。"
},
"itempack_stickers_rog1": {
"classifyType": "NONE",
"description": "気迫溢れる一幕。",
"icon": "itempack_stickers_rog1.png",
"name": "シールパック/緋き貴石",
"sortId": -10000,
"usage": "コーデ特集専用のシール。表紙編集に使うことができる。"
},
"itempack_stickers_rog2": {
"classifyType": "NONE",
"description": "潮風があなたを旅にいざなっている。",
"icon": "itempack_stickers_rog2.png",
"name": "シールパック/紺碧の樹",
"sortId": -10000,
"usage": "コーデ特集専用のシール。表紙編集に使うことができる。"
},
"itempack_stickers_rog3": {
"classifyType": "NONE",
"description": "凍える風の中に神秘の美を追い求める。",
"icon": "itempack_stickers_rog3.png",
"name": "シールパック/銀氷の果て",
"sortId": -10000,
"usage": "コーデ特集専用のシール。表紙編集に使うことができる。"
},
"itempack_stickers_rog4": {
"classifyType": "NONE",
"description": "大地はサルカズの輝かしき姿を見届ける。",
"icon": "itempack_stickers_rog4.png",
"name": "シールパック/炉辺奇談",
"sortId": -10000,
"usage": "コーデ特集専用のシール。表紙編集に使うことができる。"
},
"itempack_stickers_rog5": {
"classifyType": "NONE",
"description": "美しき山水に、旅人は休息をも忘れる。",
"icon": "itempack_stickers_rog5.png",
"name": "シールパック/界園志異",
"sortId": -10000,
"usage": "コーデ特集専用のシール。表紙編集に使うことができる。"
},
"itempack_stickers_sand1": {
"classifyType": "NONE",
"description": "砂漠とオアシスが織りなす芸術を鑑賞しよう。",
"icon": "itempack_stickers_sand1.png",
"name": "シールパック/熱砂秘聞",
"sortId": -10000,
"usage": "コーデ特集専用のシール。表紙編集に使うことができる。"
},
"main16_spitem_1": {
"classifyType": "NORMAL",
"description": "かつて、苦難はそれの出現によって生まれると言われていた。だが今では、悲劇はそれが消えることによって始まると言われている。",

View File

@@ -29,12 +29,8 @@
"ClickChapterNewOverview": {
"text": ["楽章"]
},
"EnterEpisodeNew": {
"baseTask": "#none",
"baseTaskDoc": "26.2.10 Add a secondary interface and delete it after subsequent updates",
"Doc": "base_task",
"template": "empty.png",
"action": "ClickSelf"
"EnterEpisodeNew-Click": {
"text": ["章節へ"]
},
"EnterChapterDifficultyHard": {
"text": ["作戦へ"]
@@ -108,7 +104,7 @@
[".*ースス.*リッ(ト)?", "地灵"],
["(ロ|コ)ベルタ", "罗比菈塔"],
["ディピ力", "深海色"],
["オーキッド", "梓兰"],
["^オーキッド", "梓兰"],
["予備隊員-術師", "预备干员-术师"],
["^(ハ|/|,)?イビスカス", "芙蓉"],
["^ア(ン|シ)(ャ|セ)ル", "安赛尔"],
@@ -127,7 +123,7 @@
["セイリュ.+", "清流"],
[".*ィス.*ーレイ.*", "絮雨"],
["(ト)?ゥイエ", "图耶"],
["ケル.*ー", "凯尔希"],
["ケル.*ー$", "凯尔希"],
["マルベリー", "桑葚"],
["(ハ)?ニーベリー", "蜜莓"],
["予備隊員-支援", "预备干员-后勤"],
@@ -172,7 +168,7 @@
["^(イ)?グゼキュター", "送葬人"],
["ヴァーミル", "红云"],
[".*(ユ|ュ)ヴァルツ", "黑"],
["カタパル", "空爆"],
["^カタパル(ト)?", "空爆"],
["^エクシア", "能天使"],
[".*ァイヤーウォッ.*", "守林人"],
["プ?ロヴァンス", "普罗旺斯"],
@@ -203,7 +199,7 @@
["スポット", "斑点"],
["サリア", "塞雷娅"],
["^ホシグマ", "星熊"],
["ヴァルカ", "火神"],
["ヴァルカ($|ン|[^リ])", "火神"],
["(ク)?ロワッサン", "可颂"],
["リスカム", "雷蛇"],
["^ニア.*ル", "临光"],
@@ -957,7 +953,7 @@
["カウンターアーマーセット", "反制装甲套组"],
["三角初華", "三角初华"],
["「パーフェクトサポーター」", "“绝对助手”"],
["祐天寺にむ", "祐天寺若麦"],
["祐天寺に[ゃや]む", "祐天寺若麦"],
["^温室$", "温室拱棚"],
["血裔の胞体", "血裔胞体"],
["吸血の悪地", "噬血诅地"],
@@ -1015,7 +1011,7 @@
["巫女像", "圣女像"],
["イスビット高台", "伊斯贝塔高台"],
["風雪の眼", "风雪之眼"],
["緊急建設チーム", "“应急承重小组”"],
["緊急建設チーム", "“应急承重小组”"],
["防衛ライン(凍結状態)", "保护目标(冻结状态)"],
[".*光アステジーニ", "溯光星源"],
["雪面固定装置", "积雪固定装置"],
@@ -1023,8 +1019,8 @@
["スノーハンター", "雪猎"],
["(凛|御).*シルバ.*", "凛御银灰"],
["ハディ[ヤセ]", "哈蒂娅"],
["品質検査員", "“质检专员”"],
["現場監督", "“监工专员”"],
["品質検査員", "“质检专员”"],
["現場監督", "“监工专员”"],
["聖.*プラマニクス", "圣聆初雪"],
["盟約吹雪", "盟约寒风"],
["「謎の客人」", "“神秘顾客”"],
@@ -1075,7 +1071,11 @@
["寒冷弾発射装置", "冷爆机"],
["スカイボックス", "天空盒"],
["ナスティ", "娜斯提"],
["ケルン", "响石"]
["ケルン", "响石"],
["憩いの池", "喷泉水池"],
["ヴァルカリス", "摆渡人"],
[".*香パフューマ", "撷英调香师"],
["ティティ", "缇缇"]
]
},
"GameStartCheckResourceOCR": {
@@ -1631,7 +1631,8 @@
["登雲具", "攀云机"],
["軽量型距離計", "轻型瞄准测距仪"],
["天工夜行セット", "天工夜行套装"],
["カウンターアーマーセット", "反制装甲套组"]
["カウンターアーマーセット", "反制装甲套组"],
["寒冷弾発射装置", "冷爆机"]
],
"roi": [0, 136, 1280, 162]
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

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