Compare commits

..

20 Commits

Author SHA1 Message Date
Constrat
ee566c5fb7 chore: add coppers to resource updater 2026-02-22 00:13:53 +01:00
Constrat
40d5bdd560 fix: IS6 EN yostar decided to finally fix the tongbaos releasing an official translation + resource updater copper-ability 2026-02-22 00:13:29 +01:00
status102
01a2329d18 fix(wpf): 修复自定义基建计划在迁移时基建计划选择转换错误 2026-02-21 19:58:51 +08:00
HX3N
c52cf81b94 chore: YostarKR SSS#9 SSSBuffChoose
and GO-OpenOcr
2026-02-21 18:02:25 +09:00
Constrat
2a9c963fef fix: EN Operator OCR roi fixes + skadi alter simplification 2026-02-20 23:45:10 +01:00
MistEO
0817bc1c9f feat: 适配maafw新Win32触控方式 (#15755) 2026-02-20 23:44:50 +08:00
Constrat
c36e5cfd9a fix: IS6 EN encounter regex post ROI increase 2026-02-20 16:04:14 +01:00
undefined
3fbda5b98d fix: touch screen support for version updated page (#15747) 2026-02-20 17:07:21 +08:00
uye
50cbc2e10d feat: PC 提示新增分辨率要求
close #15749
2026-02-20 16:59:38 +08:00
Constrat
30dd7d0afa fix: invert dice refresh with invest system priority in IS3 (#15740) 2026-02-20 16:52:33 +08:00
status102
80280bb62d fix: 小工具=-公招识别3~5星设置时间未遵循设置 2026-02-20 11:24:07 +08:00
SherkeyXD
e7362d2d35 feat: PC端忽略启动客户端设置 2026-02-19 14:17:04 +08:00
uye
f77d85f542 Release v6.3.2 (#15737)
## Summary by Sourcery

更新公招工具箱的时间选项、改进干员列表排序与电源操作的交互体验,并简化旧版 Windows 支持文档。

新功能:
- 在工具箱界面中为 3★–5★ 干员新增可配置的公招时间设置,并持久化到配置中。

缺陷修复:
- 确保自定义剿灭关卡在执行战斗任务时被正确应用,并在关卡列表中正确显示。
- 改进基建收取任务的异常处理,在出错时关闭线索发送对话框并正常停止任务。
- 修复公招时间选择器的绑定问题,确保当底层时间变化时,小时与分钟选择器能够保持同步。

优化改进:
- 优化与公招相关的视图模型属性,使用更简洁的自动属性模式,并以配置作为默认值来源。
- 以稀有度、精英化阶段、等级、潜能和 ID 的固定顺序对干员列表进行确定性排序,使已拥有与未拥有干员更易浏览。
- 用可取消的确认对话框替代固定延时的睡眠/休眠提示,将主窗口置于前台并记录操作结果。

文档:
- 在所有支持的语言中简化并统一常见问题(FAQ)部分,明确说明不再支持 Windows 7/8/8.1,并移除过时的版本说明和解决方案指引。

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

## Summary by Sourcery

Update recruitment toolbox timing options, improve operator box sorting
and power actions UX, and simplify legacy Windows support documentation.

New Features:
- Add configurable recruitment time settings for 3★–5★ operators within
the toolbox UI, persisted in configuration.

Bug Fixes:
- Ensure custom annihilation stages are correctly applied and reflected
in the stage list when running battle tasks.
- Improve infrastructure reception task failure handling by closing the
clue sending dialog and stopping cleanly on errors.
- Fix recruitment time picker bindings so hour and minute selectors stay
in sync when the underlying time changes.

Enhancements:
- Refine recruit-related view model properties to use simpler
auto-property patterns with configuration-backed defaults.
- Sort operator box lists deterministically by rarity, promotion, level,
potential, and ID to make owned and unowned operators easier to browse.
- Replace fixed-delay sleep/hibernate prompts with a cancelable
confirmation dialog that brings the main window to the foreground and
logs the result.

Documentation:
- Simplify and unify FAQ sections in all supported languages to state
that Windows 7/8/8.1 are no longer supported, removing outdated version
and workaround guidance.

</details>

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

## Summary by Sourcery

更新公招工具箱的时间选项、改进干员列表排序与电源操作的交互体验,并简化旧版 Windows 支持文档。

新功能:
- 在工具箱界面中为 3★–5★ 干员新增可配置的公招时间设置,并持久化到配置中。

缺陷修复:
- 确保自定义剿灭关卡在执行战斗任务时被正确应用,并在关卡列表中正确显示。
- 改进基建收取任务的异常处理,在出错时关闭线索发送对话框并正常停止任务。
- 修复公招时间选择器的绑定问题,确保当底层时间变化时,小时与分钟选择器能够保持同步。

优化改进:
- 优化与公招相关的视图模型属性,使用更简洁的自动属性模式,并以配置作为默认值来源。
- 以稀有度、精英化阶段、等级、潜能和 ID 的固定顺序对干员列表进行确定性排序,使已拥有与未拥有干员更易浏览。
- 用可取消的确认对话框替代固定延时的睡眠/休眠提示,将主窗口置于前台并记录操作结果。

文档:
- 在所有支持的语言中简化并统一常见问题(FAQ)部分,明确说明不再支持 Windows 7/8/8.1,并移除过时的版本说明和解决方案指引。

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

## Summary by Sourcery

Update recruitment toolbox timing options, improve operator box sorting
and power actions UX, and simplify legacy Windows support documentation.

New Features:
- Add configurable recruitment time settings for 3★–5★ operators within
the toolbox UI, persisted in configuration.

Bug Fixes:
- Ensure custom annihilation stages are correctly applied and reflected
in the stage list when running battle tasks.
- Improve infrastructure reception task failure handling by closing the
clue sending dialog and stopping cleanly on errors.
- Fix recruitment time picker bindings so hour and minute selectors stay
in sync when the underlying time changes.

Enhancements:
- Refine recruit-related view model properties to use simpler
auto-property patterns with configuration-backed defaults.
- Sort operator box lists deterministically by rarity, promotion, level,
potential, and ID to make owned and unowned operators easier to browse.
- Replace fixed-delay sleep/hibernate prompts with a cancelable
confirmation dialog that brings the main window to the foreground and
logs the result.

Documentation:
- Simplify and unify FAQ sections in all supported languages to state
that Windows 7/8/8.1 are no longer supported, removing outdated version
and workaround guidance.

</details>

</details>
2026-02-18 23:35:46 +08:00
github-actions[bot]
00e577f6d2 docs: Auto Update Changelogs of v6.3.2 (#15738)
* docs: Auto Generate Changelog of Release v6.3.2

* docs: Update CHANGELOG for v6.3.2 release

This version update includes preliminary support for the PC client, a restructured task configuration for Windows, and various enhancements and fixes across the application. Key features include the ability to add multiple tasks, color-coded task statuses, and improved operator recognition.

* docs: Update CHANGELOG for version 6.3.2

Updated CHANGELOG for version 6.3.2 with new features, improvements, fixes, and documentation updates.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2026-02-18 23:35:28 +08:00
uye
6d32795ffa chore: 增加 id 格式验证 2026-02-18 20:31:39 +08:00
uye
a72571ce90 fix: 4 星公招时间显示错误 2026-02-18 20:23:16 +08:00
uye
59fa039a72 feat: 睡眠休眠前增加倒计时弹窗 2026-02-18 20:12:31 +08:00
Constrat
adb8863cf6 perf: optimize templates 2026-02-17 10:12:07 +01:00
Constrat
7bab2b2312 perf: increase score for AddOperatorTradeAggressive EN 2026-02-17 10:11:58 +01:00
Manicsteiner
b55b2c6bd6 chore: Yostar servers SSS#9 and ShamareThumbnail (#15732)
* chore: Yostar servers SSS#9 and ShamareThumbnail

* chore: KR ShamareThumbnail4.png

* chore: Shamare EN

* perf: png optimization

* chore: KR replace the incorrect template

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2026-02-16 23:54:22 +01:00
52 changed files with 263 additions and 126 deletions

View File

@@ -1,4 +1,4 @@
## v6.3.1
## v6.3.2
### 拉电线不知天地为何物 | Highlight
@@ -65,6 +65,46 @@ We warmly welcome community developers to assist with adaptation and submit impr
以下是详细内容:
## v6.3.2
### 新增 | New
* 睡眠休眠前增加倒计时弹窗 @ABA2396
* 生息演算支援道具名称改为全字匹配 @ABA2396
### 改进 | Improved
* 干员识别按照 稀有度->精英化->等级->潜能->Id 排序 @ABA2396
* 优化识别工具中列表小于 5 时的显示效果 @ABA2396
* optimize templates @Constrat
* increase score for AddOperatorTradeAggressive EN @Constrat
### 修复 | Fix
* 4 星公招时间显示错误 @ABA2396
* 刷理智自定义剿灭关卡在特定情况的绑定错误 @status102
* 在禁用刷理智-自定义剿灭关卡后需要手动切换任务以刷新列表中显示的剿灭关卡, 尽管不影响实际运行 @status102
* 会客室任务失败重试时尝试关闭赠送线索界面 @ABA2396
* 肉鸽开局种子无法通过 Wpf 设置两位数难度 @status102
* 小工具-公招识别 3~5 星选择时间无法修改 @status102
* 小工具-干员识别 开始识别按钮启用状态绑定失效 @status102
* 自动公招任务 3~5 星确认时间在修改后未能刷新 UI @status102
* EN AveMujica terminal new template @Constrat
* EN IS tentative fix increasing roi for encounter and more replace regex @Constrat
* English text overflow on long strings in middle column @Constrat
### 文档 | Docs
* 删除一些过时内容 (#15700) @JasonHuang79
### 其他 | Other
* 增加 id 格式验证 @ABA2396
* 明确周计划和定时更新使用游戏时间而非现实时间 @ABA2396
* 移除老主线导航逻辑 (#15644) @SherkeyXD
* 繁中服「夢鄉」主題 (#15699) @momomochi987
* Yostar servers SSS#9 and ShamareThumbnail (#15732) @Manicsteiner @Constrat
## v6.3.1
### 新增 | New

View File

@@ -30,6 +30,8 @@ typedef enum AsstWin32InputMethodEnum
AsstWin32InputMethod_PostThreadMessage = 1 << 4,
AsstWin32InputMethod_SendMessageWithCursorPos = 1 << 5,
AsstWin32InputMethod_PostMessageWithCursorPos = 1 << 6,
AsstWin32InputMethod_SendMessageWithWindowPos = 1 << 7,
AsstWin32InputMethod_PostMessageWithWindowPos = 1 << 8,
} AsstWin32InputMethodEnum;
#endif

View File

@@ -17,73 +17,73 @@
"JieGarden@Roguelike@CoppersNameOcrReplace": {
"ocrReplace": [
[" |-", ""],
["[Bb]al:[Bb]i?tt?e?r[Cc]old", "衡-苦寒"],
["[Bb]al:[Dd]esir?e[Ff]ul?f+i?ll?ed", "衡-志欲遂"],
["[Bb]al:[Dd]ewin[Gg]old", "衡-金寒水衍"],
["[Bb]al:[Dd]ownpour", "衡-霖雨"],
["[Bb]al:[Dd]ry[Hh]eat", "衡-旱热"],
["[Bb]al:[Ff]ierce[Gg]ale", "衡-匪风"],
["[Bb]al:[Ff]rontier[Mm]oon", "衡-塞上月"],
["[Bb]al:[Ff]rost&[Ss]now", "衡-霜雪"],
["[Bb]al:[Gg]arr?ison[Ff]arm", "衡-军屯垦"],
["[Bb]al:[Gg]oo?d[Hh]arvest", "衡-庆丰收"],
["[Bb]al:[Hh]oarfrost", "衡-雾凇"],
["[Bb]al:[Mm]oving[Mm]ounts", "衡-移山繁"],
["[Bb]al:[Oo]riginal[Ss]cript", "衡-初有文"],
["[Bb]al:[Pp]rimal[Ff]arming", "衡-鸿蒙开荒"],
["[Bb]al:[Rr]?ainbow", "衡-虹霓"],
["[Bb]al:[Rr]egular[Ee]xercise", "衡-勤运体"],
["[Bb]al:[Rr]ogue[Tt]oken", "衡-诡意代币"],
["[Bb]al:[Ss]apient[Ee]vasion", "衡-慧避灾"],
["[Bb]al:[Ss]o?il[Bb]orn[Mm]etal", "衡-奇土生金"],
["[Bb]al:[Tt]hunderclap", "衡-霹雳"],
["[Bb]al:[Ww]aterwoo?d[Gg]uard", "衡-水生木护"],
["[Bb]al:[Ww]oo?d[Ff]ee?ds[Ff]lames", "衡-投木炎延"],
["[Bb]al:[Ww]orld.?s[Pp]ionee?r", "衡-天下先"],
["[Bb]al[Bb]i?tt?e?r[Cc]old", "衡-苦寒"],
["[Bb]al[Tt]estee?", "衡-志欲遂"],
["[Bb]al[Mm]etalto[Ww]ater", "衡-金寒水衍"],
["[Bb]al[Rr]ain", "衡-霖雨"],
["[Bb]al[Dd]rought", "衡-旱热"],
["[Bb]al[Gg]ale", "衡-匪风"],
["[Bb]al[Ff]rontier[Mm]oon", "衡-塞上月"],
["[Bb]al[Ff]rost", "衡-霜雪"],
["[Bb]al[Ss]tee?land[Ss]oil", "衡-军屯垦"],
["[Bb]al[Gg]oo?d[Hh]arvest", "衡-庆丰收"],
["[Bb]al[Rr]ime", "衡-雾凇"],
["[Bb]al[Tt]o[Mm]ove[Mm]ounts", "衡-移山繁"],
["[Bb]al[Aa][Pp]eople[Uu]nited", "衡-初有文"],
["[Bb]al[Dd]awnof[Yy][Aa][Nn]", "衡-鸿蒙开荒"],
["[Bb]al[Rr]?ainbow", "衡-虹霓"],
["[Bb]al[Aa][Bb]ody[Hh]oned", "衡-勤运体"],
["[Bb]al[Rr]ogue[Tt]oken", "衡-诡意代币"],
["[Bb]al[Pp]revention", "衡-慧避灾"],
["[Bb]al[Ss]oilto[Mm]etal", "衡-奇土生金"],
["[Bb]al[Tt]hunder", "衡-霹雳"],
["[Bb]al[Ww]aterto[Ww]oo?d", "衡-水生木护"],
["[Bb]al[Ww]oo?dto[Ff]ire", "衡-投木炎延"],
["[Bb]al[Tt]railblazer", "衡-天下先"],
["[Dd]ayan[Tt]ongh?bao", "大炎通宝"],
["[Ff]antastical", "入幻"],
["[Ff]lower:[Bb]ustl?ing[Tt]rade", "花-百业俱兴"],
["[Ff]lower:[Cc]hidao[Gg]rowth", "花-驰道长"],
["[Ff]lower:[Cc]ocoo?n[Ss]ilk", "花-茧成绢"],
["[Ff]lower:[Cc]ohesive[Mm]ight", "花-聚力则强"],
["[Ff]lower:[Cc]ultivate[Ss]elf", "花-修性情"],
["[Ff]lower:[Dd]uck[Cc]oin", "花-鸭爵金币"],
["[Ff]lower:[Ff]ire[Ff]orms[Ss]oil", "花-火灼土沃"],
["[Ff]lower:[Gg]odbless?ed", "花-圣诏封神"],
["[Ff]lower:[Hh]eavy[Dd]uties", "花-己任重"],
["[Ff]lower:[Ll]ong[Dd]istance", "花-载道远"],
["[Ff]lower:[Mm]artial[Ff]ight", "花-武人之争"],
["[Ff]lower:[Oo]dd[Mm]erchant", "花-神秘商贾"],
["[Ff]lower:[Ss]and[Ss]hield", "花-平沙之盾"],
["[Ff]lower:[Ss]tove[Aa]light", "花-火上之灶"],
["[Ff]lower:[Uu]nclouded[Mm]ind", "花-心无患"],
["[Rr]isk?:[Aa]rduous[Tt]rade", "厉-商路难行"],
["[Rr]isk?:[Bb]iding[Tt]ime", "厉-待机缘"],
["[Rr]isk?:[Bb]loo?dshed[Ss]pill?", "厉-战血流"],
["[Rr]isk?:[Cc]ity[Cc]oncerns", "厉-隐市忧"],
["[Rr]isk?:[Cc]ontent[Mm]egamus", "厉-安硕鼷"],
["[Rr]isk?:[Dd]ark[Cc]oncealment", "厉-无皎之昧"],
["[Rr]isk?:[Dd]awn.?s[Tt]eachings", "厉-朝闻道"],
["[Rr]isk?:[Dd]ream[Cc]urio", "厉-梦奇物"],
["[Rr]isk?:[Ee]astern[Gg]ap", "厉-东缺角"],
["[Rr]isk?:[Ff]irst[Ww]ord[Ff]all?s", "厉-一字落"],
["[Rr]isk?:[Gg]iftof[Aa]cc?ord", "厉-合乎礼"],
["[Rr]isk?:[Ll]awand[Oo]rder", "厉-法与律"],
["[Rr]isk?:[Ll]ei[Ff]a[Pp]unishment", "厉-诛邪雷法"],
["[Rr]isk?:[Mm]ortal[Ee]ndurance", "厉-人间长存"],
["[Rr]isk?:[Mm]oving[Mm]ount[Hh]ard", "厉-移山难"],
["[Rr]isk?:[Nn]orthern[Ss]ting", "厉-北刺面"],
["[Rr]isk?:[Pp]ainter.?s[Rr]ealm", "厉-画人间"],
["[Rr]isk?:[Ss]henn?ong[Ww]atches", "厉-神农守"],
["[Rr]isk?:[Ss]inister[Ss]tealth", "厉-黑子伏"],
["[Rr]isk?:[Ss]outhern[Mm]ounts", "厉-南见山"],
["[Rr]isk?:[Ss]trenuous[Ss]tudy", "厉-寒窗志"],
["[Rr]isk?:[Ss]ui.?s[Aa]wakening", "厉-岁醒天时"],
["[Rr]isk?:[Tt]wo[Rr]iver[Ss]pring", "厉-两江春"],
["[Rr]isk?:[Uu]niversal[Cc]hange", "厉-凡物变"],
["[Rr]isk?:[Ww]eiq[ij]?[Cc]hance", "厉-遇良弈"],
["[Rr]isk?:[Ww]est[Ll]ianzhen[Mm]t.?", "厉-西廉贞"],
["[Rr]isk?:[Ww]ild[Pp]ass?ion", "厉-恣狂情"],
["[Ff]lower[Tt]rades", "花-百业俱兴"],
["[Ff]lower[Ll]ong[Rr]oad", "花-驰道长"],
["[Ff]lower[Cc]ocoo?n[Ww]orth", "花-茧成绢"],
["[Ff]lower[Uu]nity.?s[Mm]ight", "花-聚力则强"],
["[Ff]lower[Mm]indfulness?", "花-修性情"],
["[Ff]lower[Dd]uck[Cc]oin", "花-鸭爵金币"],
["[Ff]lower[Ff]ireto[Ss]oil", "花-火灼土沃"],
["[Ff]lower[Th]e[Aa]scent", "花-圣诏封神"],
["[Ff]lower[Hh]eavy[Dd]uties", "花-己任重"],
["[Ff]lower[Ii]deas[Cc]arried", "花-载道远"],
["[Ff]lower[Mm]artial[Ff]ight", "花-武人之争"],
["[Ff]lower[Oo]dd[Mm]erchant", "花-神秘商贾"],
["[Ff]lower[Th]e[Bb]ulwark", "花-平沙之盾"],
["[Ff]lower[Ss]tove[Aa]light", "花-火上之灶"],
["[Ff]lower[Uu]nclouded", "花-心无患"],
["[Rr]isk[Tt]ollfor[Rr]oads", "厉-商路难行"],
["[Rr]isk[Bb]iding[Tt]ime", "厉-待机缘"],
["[Rr]isk[Bb]loodshed", "厉-战血流"],
["[Rr]isk[Gg]etaway", "厉-隐市忧"],
["[Rr]isk[Tt]aming[Mm]egamus", "厉-安硕鼷"],
["[Rr]isk[Dd]arkness?", "厉-无皎之昧"],
["[Rr]isk[Ee]nlightenment", "厉-朝闻道"],
["[Rr]isk[Dd]reamof[Cc]urio", "厉-梦奇物"],
["[Rr]isk[Ee]astern[Gg]ap", "厉-东缺角"],
["[Rr]isk[Ff]all?ing[Ww]ord", "厉-一字落"],
["[Rr]isk[Gg]iftof[Aa]cc?ord", "厉-合乎礼"],
["[Rr]isk[Ll]awand[Rr]itual", "厉-法与律"],
["[Rr]isk[Ll]ei[Ff]a.?s[Pp]urge", "厉-诛邪雷法"],
["[Rr]isk[Tt]hey[Ww]ho[Ee]ndure", "厉-人间长存"],
["[Rr]isk[Uu]nmoved[Mm]ounts", "厉-移山难"],
["[Rr]isk[Nn]orthern[Ss]ting", "厉-北刺面"],
["[Rr]isk[Pp]ainter.?s[Rr]ealm", "厉-画人间"],
["[Rr]isk[Ss]henn?ong[Ww]atch", "厉-神农守"],
["[Rr]isk[Hh]idd?en[Gg]ambit", "厉-黑子伏"],
["[Rr]isk[Ss]outhern[Mm]ounts", "厉-南见山"],
["[Rr]isk[Ss]tudy", "厉-寒窗志"],
["[Rr]isk[Ss]ui.?s[Aa]wakening", "厉-岁醒天时"],
["[Rr]isk[Ss]pring[Rr]ivers", "厉-两江春"],
["[Rr]isk[Cc]onstant[Cc]hange", "厉-凡物变"],
["[Rr]isk[Aa][Gg]oo?d[Mm]atch", "厉-遇良弈"],
["[Rr]isk[Ww]est[Ss]tones", "厉-西廉贞"],
["[Rr]isk[Ww]ild[Pp]ass?ion", "厉-恣狂情"],
["[Rr]usty", "锈色"],
["[Ss]urvival", "存护"],
["rogue_5_copper_buff_F_28_a", "衡-挪移"],

View File

@@ -113,7 +113,7 @@
["Masquerade Mask", "假面舞会面具"],
["Live Rose", "活玫瑰"],
["Elite Caster Rec.? *Voucher", "高级术师招募券"],
["Profound Silence'?", "《大静谧》"],
["'?Profound Silence'?", "《大静谧》"],
["Medic Rec.? *Voucher", "医疗招募券"],
["Defender Rec.? *Voucher", "重装招募券"],
["'?Gaulish Toponym Origins'?", "《旧高卢地名源流考》"],
@@ -942,7 +942,7 @@
"Roguelike@StageEncounterOcr": {
"ocrReplace": [
["\\s+o+\\s*$", ""],
[" |<|>|-", ""],
[" |<|>|-|'", ""],
["^\\d+", ""],
["Disappear\\.\\.\\.", "消失......"],
["Disappear\\.", "消失。"],
@@ -951,7 +951,6 @@
["TheKindPuppet", "善良的木偶"],
["TellerofTales", "讲故事的人"],
["AdventurerComm[ission]*", "委托冒险者"],
["RoyalRumble'?", "皇家争执"],
["AdvanceSquad", "先遣小队"],
["GaulishVeteran", "高卢老兵"],
["HallucinatoryCandlelights", "迷幻烛火"],
@@ -1042,15 +1041,15 @@
["EmergencyDispatch", "紧急调遣"],
["AtaGlance", "瞥视"],
["Tulip.*sCommission", "郁金香的委托"],
["Bob'sEmporium", "鲍勃杂货店"],
["BobsEmporium", "鲍勃杂货店"],
["VacationSpot", "度假胜地"],
["'?TheSwordintheStone'?", "“石中剑”"],
["'?TinMan'?", "“锡人”"],
["TheSwordintheStone", "“石中剑”"],
["TinMan", "“锡人”"],
["MissingMountains", "不见群山"],
["Reprieve\\??", "解脱?"],
["OnsiteatPublicSignalAmplificationStation756", "在地公共信号放大站756号"],
["'?ArtConnoisseur'?", "“鉴赏家”"],
["'?RoyalRumble'?", "“皇家争执”"],
["ArtConnoisseur", "“鉴赏家”"],
["RoyalRumble", "“皇家争执”"],
["SearchingForAPathForward", "探寻前路"],
["OperationRewards", "行动奖励"],
["DuckLordtheLeadActor\\??", "鸭爵主演?"],
@@ -1069,7 +1068,7 @@
["SobbingintheSwamp", "沼泽里的抽泣声"],
["AProfitablePlan", "有利可图"],
["Entourage", "随行人员"],
["DuckLord'sSinisterPlot", "邪恶计划鸭"],
["DuckLordsSinisterPlot", "邪恶计划鸭"],
["ChainofCamps", "百里连营"],
["OnstageInvitation", "请君入戏"],
["NorthwindWitch", "北风女巫"],
@@ -1078,10 +1077,10 @@
["EntrancetotheAbyss", "深渊入口"],
["WoundedPrimeTree", "负伤的主树"],
["ResearchOutpost", "科考站"],
["Sami'sLanguage", "萨米之语"],
["SamisLanguage", "萨米之语"],
["Ursus", "乌萨斯"],
["UselessItem", "无用之物"],
["Clairvoyance'sDirection", "远见所向"],
["ClairvoyancesDirection", "远见所向"],
["ForwardForest", "前行的林地"],
["TrimountsTravelAgencyDispatch", "特里蒙旅行社特派团"],
["OnsiteatPublicNomadicStationN6", "在地公共移动站N6号"],
@@ -1090,9 +1089,9 @@
["UnfreezingRiver", "不冻河"],
["FenceofWoodandSnow", "雪与木的笆篱"],
["AmmaTal", "安玛塔卢"],
["CrossingSami'sArm", "走过萨米的臂膀"],
["CrossingSamisArm", "走过萨米的臂膀"],
["ShatteredOmen", "木裂前兆"],
["Pessimist'sCage", "悲观者囚笼"],
["PessimistsCage", "悲观者囚笼"],
["Change", "变化"],
["Reconstruction", "重构"],
["OneSmallStepforExpeditioners", "探索者的一小步"],
@@ -1121,7 +1120,7 @@
["EmployeeofBabel", "巴别塔雇员"],
["SoulExperiences.*TwinGargoyles?", "魂灵见闻:石心双子"],
["FinalPage", "尾页"],
["TheDissident'sSound", "扣响异音"],
["TheDissidentsSound", "扣响异音"],
["DecipheringEvolution", "解读变迁"],
["TowerofThoughts", "聚思成塔"],
["HighestBidderWins", "价高者得"],
@@ -1197,9 +1196,6 @@
],
"roi": [0, 395, 725, 235]
},
"Roguelike@StageTraderInvestSystem": {
"maskRange": [1, 255]
},
"Roguelike@StageTraderInvestSystemFull": {
"text": ["Storage full"]
},

View File

@@ -90,7 +90,7 @@
["Reserve Operator *-* *M[elee]*", "预备干员-近战"],
["Angelina", "安洁莉娜"],
["Sora", "空"],
["Ss?k?ad?i? the Co?rru?pt?ing ?[Heart]*", "浊心斯卡蒂"],
["Skadi the Corrupting ?[Heart]*", "浊心斯卡蒂"],
["Scene", "稀音"],
["Suzuran", "铃兰"],
["Mayer", "梅尔"],
@@ -1532,7 +1532,7 @@
"text": ["All"]
},
"BattleQuickFormationOCR": {
"rectMove": [0, 231, 116, 22],
"rectMove": [0, 234, 116, 22],
"specialParams": [105, 2, 7, 0, 3, 10]
},
"BattleStartPre": {
@@ -1586,7 +1586,7 @@
},
"OperBoxNameOCR": {
"rectMove_doc": "for overwidth",
"rectMove": [0, 265, 128, 22],
"rectMove": [0, 264, 133, 24],
"specialParams": [160, 4, 0, 0, 3, 10]
},
"SSSBegin": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,6 +1,6 @@
{
"GO-OpenOcr": {
"text": ["위대한", "서곡의", "끝", "이벤트", "개방중"]
"text": ["위대한", "서곡의", "끝"]
},
"GOChapterToGO": {
"text": ["무명", "공훈"]

View File

@@ -1622,7 +1622,8 @@
[".*사이언스아카.*", "皇家科学院望远镜"],
["보안인재.*", "保全人才合作协议"],
["소형조준.*", "轻型瞄准测距仪"],
["천공야행세트", "天工夜行套装"]
["천공야행세트", "天工夜行套装"],
["역제압장갑세트", "反制装甲套组"]
]
},
"SSSBuffChooseConfirm": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -1419,8 +1419,8 @@
"next": [
"Roguelike@StageVerticalConfirmTrader",
"Roguelike@StageTraderEnter",
"Roguelike@StageTraderRefreshWithDice",
"Roguelike@StageTraderInvestSystem",
"Roguelike@StageTraderRefreshWithDice",
"Roguelike@TraderRandomShopping",
"Roguelike@StageTraderLeave",
"Roguelike@StageTraderLeaveConfirm"
@@ -1556,8 +1556,8 @@
"next": [
"Roguelike@StageTraderSpecialShoppingAfterRefresh",
"Roguelike@StageTraderRefreshWithDice",
"Roguelike@TraderRandomShopping",
"Roguelike@StageTraderInvestSystem",
"Roguelike@TraderRandomShopping",
"Roguelike@StageTraderLeave",
"Roguelike@StageTraderRefreshWithDiceDoubleConfirm"
]
@@ -1604,8 +1604,8 @@
"baseTask": "Roguelike@StageVerticalConfirm",
"next": [
"Roguelike@StageTraderEnter",
"Roguelike@StageTraderRefreshWithDice",
"Roguelike@StageTraderInvestSystem",
"Roguelike@StageTraderRefreshWithDice",
"Roguelike@TraderRandomShopping",
"Roguelike@StageTraderLeave"
]

View File

@@ -85,6 +85,8 @@ constexpr Win32InputMethod LegacyEvent = 1ULL << 3;
constexpr Win32InputMethod PostThreadMessage = 1ULL << 4;
constexpr Win32InputMethod SendMessageWithCursorPos = 1ULL << 5;
constexpr Win32InputMethod PostMessageWithCursorPos = 1ULL << 6;
constexpr Win32InputMethod SendMessageWithWindowPos = 1ULL << 7;
constexpr Win32InputMethod PostMessageWithWindowPos = 1ULL << 8;
} // namespace Win32Input
#endif // _WIN32

View File

@@ -93,7 +93,7 @@ public class InfrastTask : BaseTask, IJsonOnDeserialized
/// <summary>
/// Gets or sets 自定义配置计划编号
/// </summary>
public int PlanSelect { get; set; }
public int PlanSelect { get; set; } = -1;
public List<RoomInfo> RoomList { get; set; } =
[.. typeof(InfrastRoomType).GetEnumValues().OfType<InfrastRoomType>().Select<InfrastRoomType, RoomInfo>(i => new(i, true))];

View File

@@ -60,9 +60,8 @@ public class ConfigConverter
{
ret &= ConvertTaskQueue();
}
else if (configurations != null)
else if (configurations != null) // 保证 configurations 可用
{
// 保证 configurations 可用
if (parsedOld["Configurations"] is JObject oldConfigurations)
{
// 删除多余配置
@@ -235,7 +234,7 @@ public class ConfigConverter
infrastTask.DormTrustEnabled = ConfigurationHelper.GetValue(ConfigurationKeys.DormTrustEnabled, false);
infrastTask.OriginiumShardAutoReplenishment = ConfigurationHelper.GetValue(ConfigurationKeys.OriginiumShardAutoReplenishment, true);
infrastTask.Filename = ConfigurationHelper.GetValue(ConfigurationKeys.CustomInfrastFile, string.Empty);
infrastTask.PlanSelect = ConfigurationHelper.GetValue(ConfigurationKeys.CustomInfrastPlanSelect, 0);
infrastTask.PlanSelect = ConfigurationHelper.GetValue(ConfigurationKeys.CustomInfrastPlanSelect, -1);
ConfigurationHelper.DeleteValue(ConfigurationKeys.InfrastMode);
ConfigurationHelper.DeleteValue(ConfigurationKeys.UsesOfDrones);
ConfigurationHelper.DeleteValue(ConfigurationKeys.InfrastReceptionMessageBoardReceive);

View File

@@ -117,7 +117,6 @@ public class CopilotModel : CopilotBase
return string.Empty;
}
string[] moduleName = [string.Empty, "χ", "γ", "α", "Δ"];
// var moduleLevel = req.ModuleLevel > 0 ? $" [Lv.{req.ModuleLevel}]" : string.Empty;
// 模组编号 -1: 不切换模组 / 无要求, 0: 不使用模组, 1: 模组χ, 2: 模组γ, 3: 模组α, 4: 模组Δ

View File

@@ -1254,7 +1254,8 @@ Due to limited development resources within the MAA Team, PC support lacks dedic
Before use, please ensure:
1. MAA is launched with administrator privileges
2. The game window is not minimized
3. Arknights Settings → Game → UI Scaling is set to 100%</system:String>
3. Arknights Settings → Game → UI Scaling is set to 100%
4. Game resolution must be 16:9, recommended settings: 720×1280 or 1080×1920</system:String>
<system:String x:Key="AttachWindowScreencapMethod">Screencap Method</system:String>
<system:String x:Key="AttachWindowMouseMethod">Mouse Input Method</system:String>
<system:String x:Key="AttachWindowKeyboardMethod">Keyboard Input Method</system:String>
@@ -1265,6 +1266,8 @@ Before use, please ensure:
<system:String x:Key="AttachWindowInputSeize">Seize (Foreground, More Stable)</system:String>
<system:String x:Key="AttachWindowInputPostWithCursor">PostMessageWithCursor (Semi-background)</system:String>
<system:String x:Key="AttachWindowInputSendWithCursor">SendMessageWithCursor (Semi-background, Backup)</system:String>
<system:String x:Key="AttachWindowInputPostWithWindowPos">PostMessageWithWindowPos (Background Window)</system:String>
<system:String x:Key="AttachWindowInputSendWithWindowPos">SendMessageWithWindowPos (Background Window, Backup)</system:String>
<!-- !AsstProxy -->
<!-- TrayIcon -->
<system:String x:Key="ForceShow">Force display of MAA</system:String>

View File

@@ -1255,7 +1255,8 @@ MAA Team の開発リソースが限られているため、PC 対応は専任
使用前にご確認ください:
1. MAA を管理者権限で起動してください
2. ゲームウィンドウを最小化しないでください
3. アークナイツ設定 → ゲーム → UI スケーリングを 100% に設定してください</system:String>
3. アークナイツ設定 → ゲーム → UI スケーリングを 100% に設定してください
4. ゲーム解像度は 16:9 である必要があります。推奨設定720×1280 または 1080×1920</system:String>
<system:String x:Key="AttachWindowScreencapMethod">スクリーンキャプチャ方式</system:String>
<system:String x:Key="AttachWindowMouseMethod">マウス入力方式</system:String>
<system:String x:Key="AttachWindowKeyboardMethod">キーボード入力方式</system:String>
@@ -1266,6 +1267,8 @@ MAA Team の開発リソースが限られているため、PC 対応は専任
<system:String x:Key="AttachWindowInputSeize">Seizeフォアグラウンド、より安定</system:String>
<system:String x:Key="AttachWindowInputPostWithCursor">PostMessageWithCursor半バックグラウンド</system:String>
<system:String x:Key="AttachWindowInputSendWithCursor">SendMessageWithCursor半バックグラウンド、予備</system:String>
<system:String x:Key="AttachWindowInputPostWithWindowPos">PostMessageWithWindowPosバックグラウンドウィンドウ</system:String>
<system:String x:Key="AttachWindowInputSendWithWindowPos">SendMessageWithWindowPosバックグラウンドウィンドウ、予備</system:String>
<!-- !AsstProxy -->
<!-- TrayIcon -->
<system:String x:Key="ForceShow">MAAの強制表示</system:String>

View File

@@ -1256,7 +1256,8 @@ MAA Team의 개발 인력이 제한되어 있어 PC 지원은 전담 관리가
사용 전 확인 사항:
1. MAA를 관리자 권한으로 실행해야 합니다
2. 게임 창을 최소화하면 안 됩니다
3. 명일방주 설정 → 게임 → UI 배율을 100%로 설정해야 합니다</system:String>
3. 명일방주 설정 → 게임 → UI 배율을 100%로 설정해야 합니다
4. 게임 해상도는 16:9이어야 하며, 권장 설정: 720×1280 또는 1080×1920</system:String>
<system:String x:Key="AttachWindowScreencapMethod">스크린샷 방식</system:String>
<system:String x:Key="AttachWindowMouseMethod">마우스 입력 방식</system:String>
<system:String x:Key="AttachWindowKeyboardMethod">키보드 입력 방식</system:String>
@@ -1267,6 +1268,8 @@ MAA Team의 개발 인력이 제한되어 있어 PC 지원은 전담 관리가
<system:String x:Key="AttachWindowInputSeize">Seize (포그라운드, 더 안정적)</system:String>
<system:String x:Key="AttachWindowInputPostWithCursor">PostMessageWithCursor (반 백그라운드)</system:String>
<system:String x:Key="AttachWindowInputSendWithCursor">SendMessageWithCursor (반 백그라운드, 백업)</system:String>
<system:String x:Key="AttachWindowInputPostWithWindowPos">PostMessageWithWindowPos (백그라운드 윈도우)</system:String>
<system:String x:Key="AttachWindowInputSendWithWindowPos">SendMessageWithWindowPos (백그라운드 윈도우, 백업)</system:String>
<!-- !AsstProxy -->
<!-- TrayIcon -->
<system:String x:Key="ForceShow">MAA 강제 표시</system:String>

View File

@@ -1255,7 +1255,8 @@ C:\\leidian\\LDPlayer9。\n
使用前请确认:
1. 需要以管理员身份启动 MAA
2. 游戏窗口不能最小化
3. 明日方舟设置 → 游戏 → UI 缩放需设为 100%</system:String>
3. 明日方舟设置 → 游戏 → UI 缩放需设为 100%
4. 游戏分辨率需为 16:9推荐设置 720×1280 或 1080×1920</system:String>
<system:String x:Key="AttachWindowScreencapMethod">截图方式</system:String>
<system:String x:Key="AttachWindowMouseMethod">鼠标输入</system:String>
<system:String x:Key="AttachWindowKeyboardMethod">键盘输入</system:String>
@@ -1266,6 +1267,8 @@ C:\\leidian\\LDPlayer9。\n
<system:String x:Key="AttachWindowInputSeize">Seize前台更稳定</system:String>
<system:String x:Key="AttachWindowInputPostWithCursor">PostMessageWithCursor半后台</system:String>
<system:String x:Key="AttachWindowInputSendWithCursor">SendMessageWithCursor半后台备用</system:String>
<system:String x:Key="AttachWindowInputPostWithWindowPos">PostMessageWithWindowPos后台窗口</system:String>
<system:String x:Key="AttachWindowInputSendWithWindowPos">SendMessageWithWindowPos后台窗口备用</system:String>
<!-- !AsstProxy -->
<!-- TrayIcon -->
<system:String x:Key="ForceShow">强制显示MAA</system:String>

View File

@@ -1255,7 +1255,8 @@ C:\\leidian\\LDPlayer9\n
使用前請確認:
1. 需以系統管理員身分啟動 MAA
2. 遊戲視窗不可最小化
3. 明日方舟設定 → 遊戲 → UI 縮放需設為 100%</system:String>
3. 明日方舟設定 → 遊戲 → UI 縮放需設為 100%
4. 遊戲解析度需為 16:9推薦設定 720×1280 或 1080×1920</system:String>
<system:String x:Key="AttachWindowScreencapMethod">截圖方式</system:String>
<system:String x:Key="AttachWindowMouseMethod">滑鼠輸入</system:String>
<system:String x:Key="AttachWindowKeyboardMethod">鍵盤輸入</system:String>
@@ -1266,6 +1267,8 @@ C:\\leidian\\LDPlayer9\n
<system:String x:Key="AttachWindowInputSeize">Seize前台更穩定</system:String>
<system:String x:Key="AttachWindowInputPostWithCursor">PostMessageWithCursor半背景</system:String>
<system:String x:Key="AttachWindowInputSendWithCursor">SendMessageWithCursor半背景備用</system:String>
<system:String x:Key="AttachWindowInputPostWithWindowPos">PostMessageWithWindowPos後台視窗</system:String>
<system:String x:Key="AttachWindowInputSendWithWindowPos">SendMessageWithWindowPos後台視窗備用</system:String>
<!-- !AsstProxy -->
<!-- TrayIcon -->
<system:String x:Key="ForceShow">強制顯示 MAA</system:String>

View File

@@ -501,9 +501,9 @@ public class SettingsViewModel : Screen
public ObservableCollection<CombinedData> ConfigurationList { get; set; } = [];
private string _currentConfiguration = ConfigurationHelper.GetCurrentConfiguration();
private string? _currentConfiguration = ConfigurationHelper.GetCurrentConfiguration();
public string CurrentConfiguration
public string? CurrentConfiguration
{
get => _currentConfiguration;
set {

View File

@@ -507,9 +507,17 @@ public class TaskQueueViewModel : Screen
{
actions.LoadPostActions();
// 休眠提示
AddLog(LocalizationHelper.GetString("HibernatePrompt"), UiLogColor.Error);
await Task.Delay(10000);
await Execute.OnUIThreadAsync(() => Instances.MainWindowManager?.Show());
if (await TimerCanceledAsync(
LocalizationHelper.GetString("Hibernate"),
LocalizationHelper.GetString("HibernatePrompt"),
LocalizationHelper.GetString("Cancel"),
60))
{
return;
}
_logger.Information("Hibernate not canceled, proceeding to hibernate.");
PowerManagement.Hibernate();
}
@@ -536,9 +544,17 @@ public class TaskQueueViewModel : Screen
{
actions.LoadPostActions();
// 休眠提示
AddLog(LocalizationHelper.GetString("SleepPrompt"), UiLogColor.Error);
await Task.Delay(10000);
await Execute.OnUIThreadAsync(() => Instances.MainWindowManager?.Show());
if (await TimerCanceledAsync(
LocalizationHelper.GetString("Sleep"),
LocalizationHelper.GetString("SleepPrompt"),
LocalizationHelper.GetString("Cancel"),
60))
{
return;
}
_logger.Information("Sleep not canceled, proceeding to sleep.");
PowerManagement.Sleep();
}
}

View File

@@ -300,7 +300,7 @@ public class ToolboxViewModel : Screen
set => ChooseLevel4Time = (value * 60) + ChooseLevel4Min;
}
[PropertyDependsOn(nameof(ChooseLevel3Time))]
[PropertyDependsOn(nameof(ChooseLevel4Time))]
public int ChooseLevel4Min
{
get => (ChooseLevel4Time % 60) / 10 * 10;
@@ -410,9 +410,9 @@ public class ToolboxViewModel : Screen
SelectList = levelList,
ConfirmList = [-1], // 仅公招识别时将-1加入comfirm_level
SetRecruitTime = RecruitAutoSetTime,
ChooseLevel3Time = TaskQueueViewModel.RecruitTask.ChooseLevel3Time,
ChooseLevel4Time = TaskQueueViewModel.RecruitTask.ChooseLevel4Time,
ChooseLevel5Time = TaskQueueViewModel.RecruitTask.ChooseLevel5Time,
ChooseLevel3Time = ChooseLevel3Time,
ChooseLevel4Time = ChooseLevel4Time,
ChooseLevel5Time = ChooseLevel5Time,
ServerType = Instances.SettingsViewModel.ServerType,
};
var (type, taskParams) = task.Serialize();
@@ -1061,11 +1061,31 @@ public class ToolboxViewModel : Screen
private static int ExtractIdNumber(string id)
{
// char_002_amiya
// ↑取中间
int start = id.IndexOf('_') + 1;
int end = id.IndexOf('_', start);
return int.Parse(id.AsSpan(start, end - start));
// Expected format: "char_002_amiya"
if (string.IsNullOrEmpty(id))
{
return 0;
}
int firstUnderscore = id.IndexOf('_');
if (firstUnderscore < 0 || firstUnderscore >= id.Length - 1)
{
return 0;
}
int secondUnderscore = id.IndexOf('_', firstUnderscore + 1);
if (secondUnderscore < 0 || secondUnderscore <= firstUnderscore + 1)
{
return 0;
}
ReadOnlySpan<char> numericSpan = id.AsSpan(firstUnderscore + 1, secondUnderscore - firstUnderscore - 1);
if (int.TryParse(numericSpan, out int value))
{
return value;
}
return 0;
}
}

View File

@@ -1243,6 +1243,8 @@ public class ConnectSettingsUserControlModel : PropertyChangedBase
new() { Display = LocalizationHelper.GetString("AttachWindowInputSeize"), Value = "1" },
new() { Display = LocalizationHelper.GetString("AttachWindowInputPostWithCursor"), Value = "64" },
new() { Display = LocalizationHelper.GetString("AttachWindowInputSendWithCursor"), Value = "32" },
new() { Display = LocalizationHelper.GetString("AttachWindowInputPostWithWindowPos"), Value = "256" },
new() { Display = LocalizationHelper.GetString("AttachWindowInputSendWithWindowPos"), Value = "128" },
];
private string _attachWindowMouseMethod = ConfigurationHelper.GetValue(ConfigurationKeys.AttachWindowMouseMethod, "64"); // 默认 PostMessageWithCursorPos

View File

@@ -46,7 +46,7 @@ public class GameSettingsUserControlModel : PropertyChangedBase
public bool StartGame
{
get => field;
get => SettingsViewModel.ConnectSettings.UseAttachWindow ? false : field;
set {
SetAndNotify(ref field, value);
ConfigurationHelper.SetValue(ConfigurationKeys.StartGame, value.ToString());

View File

@@ -143,16 +143,16 @@ public class TimerSettingsUserControlModel : PropertyChangedBase
}
}
private string _timerConfig;
private string? _timerConfig;
/// <summary>
/// Gets or sets the config of the timer.
/// </summary>
public string TimerConfig
public string? TimerConfig
{
get => _timerConfig;
set {
SetAndNotify(ref _timerConfig, value);
SetAndNotify(ref _timerConfig, value ?? ConfigurationHelper.GetCurrentConfiguration());
ConfigurationHelper.SetTimerConfig(TimerId, _timerConfig);
}
}

View File

@@ -17,7 +17,7 @@
Background="{DynamicResource MdXamlBackground}"
Icon="../../newlogo.ico"
mc:Ignorable="d">
<hc:ScrollViewer Margin="10,5" IsInertiaEnabled="True">
<hc:ScrollViewer Margin="10,5" IsInertiaEnabled="True" PanningMode="VerticalOnly">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50" />

View File

@@ -1977,7 +1977,7 @@
"resource/global/YoStarEN/resource/template/InfrastPic/Product/ClickProductMax": "048a5733d78d9b67419fba4bd222f6b5c76da21532147efb7743f699d8d46eb0",
"resource/global/YoStarEN/resource/template/InfrastPic/Mfg/ReplenishToMax": "91829c29e77ec700ff24cc5d3b215184916e463c5e54ee63721632be349069fb",
"resource/global/YoStarEN/resource/template/InfrastPic/AddOperator/AddOperatorReceptionGentle": "1f4d74309e34de3e324060227abbeabb34bdfa5477a38d12f574b5370508a519",
"resource/global/YoStarEN/resource/template/InfrastPic/AddOperator/AddOperatorTradeAggressive": "a94911feffd935d55dededdf8ef6e9b9834004dd8bf3b6c3cf764b69165b86f6",
"resource/global/YoStarEN/resource/template/InfrastPic/AddOperator/AddOperatorTradeAggressive": "e8b750ae773c872db5814d8fe470cf12ee10ba8c78d849fa850d394eaa3fcf1c",
"resource/global/YoStarEN/resource/template/InfrastPic/AddOperator/AddOperatorMfgAggressive": "1640c2fd0e9e12a4d63fd0a781c4a533250b48b3df2a8354c01b9908fec03866",
"resource/global/YoStarEN/resource/template/InfrastPic/ShamareThumbnail/ShamareThumbnail1": "bac47736aaa68e7ac79b71728eb8e705bca28e1fd5a2ec841b2761c07cd027a8",
"resource/global/YoStarEN/resource/template/InfrastPic/ShamareThumbnail/ShamareThumbnail3": "10e466d6ee9848058ea6990646c7ed9f07b7d6a4da2e2a8404d023e4b40c6b37",
@@ -3843,5 +3843,22 @@
"resource/global/YoStarEN/resource/template/UiTheme/AveMujica/GachaEnter": "22181867362f20e599deb876d1d69e0c100c32371cac5ce27593e623b5371469",
"resource/global/YoStarEN/resource/template/UiTheme/AveMujica/Mall": "a8554e0cff0d0eb8513f0c453c779e733cccfd64d5ce9cc3a03825015615a333",
"resource/global/YoStarEN/resource/template/UiTheme/AveMujica/Recruit": "08e718920c5d5371d3606cde876e31f16b2b52fb169592e21f7e15fe4fa25a0b",
"resource/global/YoStarEN/resource/template/UiTheme/AveMujica/Terminal": "0e470a9283c9c8f87333f276dc7b5891853bd576bf5b1fafcf53fb21f93d7208"
"resource/global/YoStarEN/resource/template/UiTheme/AveMujica/Terminal": "0e470a9283c9c8f87333f276dc7b5891853bd576bf5b1fafcf53fb21f93d7208",
"resource/global/YoStarEN/resource/template/InfrastPic/ShamareThumbnail/ShamareThumbnail4": "7e41fa057b3a70c22d8b62497c26ec7d44d69010da107b97dd309a76a40ea3d0",
"resource/global/YoStarJP/resource/template/InfrastPic/ShamareThumbnail/ShamareThumbnail4": "65951ac24667c0c79b266fe6c06b13b13d4e018a4507186878b76e63d2a18f16",
"resource/global/YoStarKR/resource/template/InfrastPic/ShamareThumbnail/ShamareThumbnail4": "a4d6572568f341f7a19a1953fd414be3b1f0b24da0377cfc010b14ade75a3c94",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Day/EnterInfrast": "4b97e58fade18b27121641bc32e1af12d518c7dba3009894cb8130b1a78cec58",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Day/Friends": "d78806957c33d10a79dc4f77434b06678c4d283f3cc067b72a8fa69f9f903238",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Day/GachaEnter": "7dd57f2e2d09f7b15888a20a9e79a7af320241c31dd1cae9cc80ca19e89a0c1f",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Day/Mall": "d44060092f416a234efc05dddcf730b8b85c523bd27f058cb3a6a3bc250c3135",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Day/OperBoxEnter": "3e034cbab51db62a618b76d43d6fc20e920297e85fb56ddfa370da2a55530370",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Day/Recruit": "be3e74049dc25af5dbeec6d87a7b9b37b5432a9bdcdc8317916246f70f4e6c0b",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Day/Task": "8b5a2f28ad439b69f147ee598f0fde13696d50888a3280cae1fbc7cc8406a061",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Night/EnterInfrast": "8ce0c28c41dfaa7e8c75583a05eb03441625471f9e96623c9f63f67fcf925825",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Night/Friends": "e58f069339dea9edc3417ace211a5457f34654af72655486d9575f8a172f49a1",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Night/GachaEnter": "e2026a967188a0b6ff086f0decace0d73b9c78c6756ff3a85ac29841db141ebe",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Night/Mall": "45f1f97febcb88c7a534b3db2a0eb379e3cb7b26b10a6cbf25f59681ef6ed3d5",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Night/OperBoxEnter": "2b215e4d620a3a7ceecbfdaa51a386b582d926b27dd8c2e7ccdcb7a936f46f0d",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Night/Recruit": "fd0dd3c611c3c24871cbc957037e85049072156b93b932ba6b8121a0e375d61e",
"resource/global/txwy/resource/template/UiTheme/Dreamland/Night/Task": "66174d53fcd1bc6809a9a8ce59dfadf27a45bbf85c08b4166eeaa2258fbe5f80"
}

View File

@@ -1230,9 +1230,10 @@ bool ocr_replace_overseas(const fs::path& input_dir, const fs::path& tasks_base_
static std::unordered_map</*id*/ std::string, /*base_name*/ std::string> base_totem_names;
static std::unordered_map</*id*/ std::string, /*base_name*/ std::string> base_encounter_names;
static std::unordered_map</*id*/ std::string, /*base_name*/ std::string> base_char_names;
// static std::unordered_map</*id*/ std::string, /*base_name*/ std::string> base_coppers_names;
if (base_stage_names.empty() || base_item_names.empty() || base_totem_names.empty() ||
base_encounter_names.empty()) {
base_encounter_names.empty() || base_char_names.empty() /*|| base_coppers_names.empty()*/) {
auto rg_opt = json::open(base_dir / "roguelike_topic_table.json");
if (!rg_opt) {
std::cerr << "Failed to open roguelike_topic_table for" << base_dir << '\n';
@@ -1257,6 +1258,10 @@ bool ocr_replace_overseas(const fs::path& input_dir, const fs::path& tasks_base_
if (id.starts_with(rogue_index + "_totem")) {
base_totem_names.emplace(id, item_obj["name"].as_string());
}
// if (id.starts_with(rogue_index + "_copper") && !id.starts_with(rogue_index + "_copper_draw") &&
// !id.starts_with(rogue_index + "_copper_buff")) {
// base_coppers_names.emplace(id, item_obj["name"].as_string());
// }
}
}
for (auto&& [id, encounter_obj] : rogue_details["choiceScenes"].as_object()) {
@@ -1296,6 +1301,7 @@ bool ocr_replace_overseas(const fs::path& input_dir, const fs::path& tasks_base_
std::unordered_map</*id*/ std::string, /*name*/ std::string> totem_names;
std::unordered_map</*id*/ std::string, /*name*/ std::string> encounter_names;
std::unordered_map</*id*/ std::string, /*name*/ std::string> char_names;
// std::unordered_map</*id*/ std::string, /*name*/ std::string> coppers_names;
bool remove_spaces = input_dir.string().ends_with("kr\\gamedata\\excel");
@@ -1344,6 +1350,15 @@ bool ocr_replace_overseas(const fs::path& input_dir, const fs::path& tasks_base_
}
totem_names.emplace(id, name_buffer);
}
// if (id.starts_with(rogue_index + "_copper") && !id.starts_with(rogue_index + "_copper_draw") &&
// !id.starts_with(rogue_index + "_copper_buff")) {
// name_buffer = item_obj["name"].as_string();
// if (remove_spaces) {
// name_buffer.erase(std::remove(name_buffer.begin(), name_buffer.end(), ' '), name_buffer.end());
// }
// coppers_names.emplace(id, name_buffer);
// }
}
for (auto&& [id, encounter_obj] : rogue_details["choiceScenes"].as_object()) {
@@ -1400,6 +1415,14 @@ bool ocr_replace_overseas(const fs::path& input_dir, const fs::path& tasks_base_
}
auto& roguelike_sami_json = roguelike_sami_opt.value();
// auto roguelike_jiegarden_path = tasks_base_path / "Roguelike" / "Jiegarden.json";
// auto roguelike_jiegarden_opt = json::open(roguelike_jiegarden_path);
// if (!roguelike_jiegarden_opt) {
// std::cerr << "Failed to open Roguelike Jiegarden file: " << roguelike_jiegarden_path << '\n';
// return false;
// }
// auto& roguelike_jiegarden_json = roguelike_jiegarden_opt.value();
auto proc = [](json::array& replace_array,
const std::unordered_map<std::string, std::string>& base_map,
const std::unordered_map<std::string, std::string>& cur_map) {
@@ -1435,6 +1458,7 @@ bool ocr_replace_overseas(const fs::path& input_dir, const fs::path& tasks_base_
base_totem_names,
totem_names);
proc(roguelike_sami_json["Sami@Roguelike@FoldartalUseOcr"]["ocrReplace"].as_array(), base_totem_names, totem_names);
// proc(roguelike_jiegarden_json["JieGarden@Roguelike@CoppersNameOcrReplace"]["ocrReplace"].as_array(), base_coppers_names, coppers_names);
proc(roguelike_json["Roguelike@StageEncounterOcr"]["ocrReplace"].as_array(), base_encounter_names, encounter_names);
std::ofstream tasks_ofs(tasks_path, std::ios::out);
@@ -1449,6 +1473,10 @@ bool ocr_replace_overseas(const fs::path& input_dir, const fs::path& tasks_base_
roguelike_sami_ofs << roguelike_sami_json.format() << '\n';
roguelike_sami_ofs.close();
// std::ofstream roguelike_jiegarden_ofs(roguelike_jiegarden_path, std::ios::out);
// roguelike_jiegarden_ofs << roguelike_jiegarden_json.format() << '\n';
// roguelike_jiegarden_ofs.close();
return true;
}