diff --git a/repo/js/AAA-AutoMine/assets/disabled_paths.txt b/repo/js/AAA-AutoMine/assets/disabled_paths.txt deleted file mode 100644 index dedc66747..000000000 --- a/repo/js/AAA-AutoMine/assets/disabled_paths.txt +++ /dev/null @@ -1,20 +0,0 @@ -// 容易摔死 -A23-萃凝晶-枫丹-优兰尼娅湖-1(火神赶路-有战斗-16个).json - -// 地图边缘容易卡死 -20-水晶块-层岩巨渊·地下矿区-巨渊主矿区-(诺艾尔必须放1号位)东2-3个.json - -// 战斗容易卡死 -03-水晶块-璃月-天衡山西(有战斗,冰免,精英200x1)-5个.json - -// 战斗必超时 -07-水晶块-璃月-遁玉陵西(有战斗,小怪)-8个.json - -// 爬墙容易卡死 -07-水晶块-蒙德-风龙废墟南-6个.json - -// 满命火神适配不好 -A05-紫晶块-稻妻-鸣神岛-荒海-8~9个.json -C01-紫晶块-稻妻-八酝島-名椎滩-西-2个.json -C04-紫晶块-稻妻-八酝岛-绯木村-3个.json -F04-紫晶块-稻妻-鹤观-菅名山-4个.json \ No newline at end of file diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/README.md b/repo/js/ArtifactsGroupPurchasing/README.md similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/README.md rename to repo/js/ArtifactsGroupPurchasing/README.md diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/占位/纳塔-度假村多人狗粮踩点.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/占位/纳塔-度假村多人狗粮踩点.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/占位/纳塔-度假村多人狗粮踩点.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/占位/纳塔-度假村多人狗粮踩点.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市①-5.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市①-5.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市①-5.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市①-5.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市②-6.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市②-6.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市②-6.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市②-6.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市③-11.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市③-11.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市③-11.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/624【收尾】纳塔-悠悠集市③-11.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/626【多人】纳塔-悠悠集市西13.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/626【多人】纳塔-悠悠集市西13.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/626【多人】纳塔-悠悠集市西13.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/626【多人】纳塔-悠悠集市西13.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/627【多人】纳塔-悠悠集市西岸5.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/627【多人】纳塔-悠悠集市西岸5.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/627【多人】纳塔-悠悠集市西岸5.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/627【多人】纳塔-悠悠集市西岸5.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/629【多人】纳塔-悠悠集市西北岸8.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/629【多人】纳塔-悠悠集市西北岸8.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/度假村/执行/629【多人】纳塔-悠悠集市西北岸8.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/度假村/执行/629【多人】纳塔-悠悠集市西北岸8.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/占位/须弥-智障厅多人狗粮踩点.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/占位/须弥-智障厅多人狗粮踩点.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/占位/须弥-智障厅多人狗粮踩点.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/占位/须弥-智障厅多人狗粮踩点.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/424【多人】须弥-赤王陵中间2.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/424【多人】须弥-赤王陵中间2.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/424【多人】须弥-赤王陵中间2.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/424【多人】须弥-赤王陵中间2.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/426【多人】须弥-智障厅东8.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/426【多人】须弥-智障厅东8.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/426【多人】须弥-智障厅东8.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/426【多人】须弥-智障厅东8.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅①-13.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅①-13.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅①-13.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅①-13.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅②-7.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅②-7.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅②-7.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅②-7.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅③-8.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅③-8.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅③-8.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/427【收尾】须弥-智障厅③-8.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/430【多人】须弥-智障厅北2.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/430【多人】须弥-智障厅北2.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/智障厅/执行/430【多人】须弥-智障厅北2.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/智障厅/执行/430【多人】须弥-智障厅北2.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔①-9.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔①-9.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔①-9.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔①-9.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔②-6.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔②-6.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔②-6.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔②-6.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔③-7.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔③-7.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔③-7.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/枫丹高塔/执行/509【收尾】枫丹-科学院工坊高塔③-7.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/占位/稻妻-踏鞴砂多人狗粮踩点.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/占位/稻妻-踏鞴砂多人狗粮踩点.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/占位/稻妻-踏鞴砂多人狗粮踩点.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/占位/稻妻-踏鞴砂多人狗粮踩点.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/304【多人】稻妻-神无卓6.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/304【多人】稻妻-神无卓6.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/304【多人】稻妻-神无卓6.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/304【多人】稻妻-神无卓6.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂①-10.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂①-10.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂①-10.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂①-10.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂②-7.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂②-7.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂②-7.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂②-7.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂③-8.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂③-8.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂③-8.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/踏鞴砂/执行/305【收尾】稻妻-踏鞴砂③-8.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/01【额外】稻妻-踏鞴砂大炮点5.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/01【额外】稻妻-踏鞴砂大炮点5.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/01【额外】稻妻-踏鞴砂大炮点5.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/01【额外】稻妻-踏鞴砂大炮点5.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/02【额外】须弥-水天丛林7.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/02【额外】须弥-水天丛林7.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/02【额外】须弥-水天丛林7.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/02【额外】须弥-水天丛林7.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/03【额外】须弥-凡爷屋顶罐子1.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/03【额外】须弥-凡爷屋顶罐子1.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/03【额外】须弥-凡爷屋顶罐子1.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/03【额外】须弥-凡爷屋顶罐子1.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/04【额外】枫丹-科学院瓶子3.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/04【额外】枫丹-科学院瓶子3.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/04【额外】枫丹-科学院瓶子3.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/04【额外】枫丹-科学院瓶子3.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/05【额外】纳塔-鸡屁股9.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/05【额外】纳塔-鸡屁股9.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/05【额外】纳塔-鸡屁股9.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/05【额外】纳塔-鸡屁股9.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/06【额外】纳塔-灵谜纹13.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/06【额外】纳塔-灵谜纹13.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/06【额外】纳塔-灵谜纹13.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/06【额外】纳塔-灵谜纹13.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/98【额外】璃月-层岩地下1.json b/repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/98【额外】璃月-层岩地下1.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/ArtifactsPath/额外/执行/98【额外】璃月-层岩地下1.json rename to repo/js/ArtifactsGroupPurchasing/assets/ArtifactsPath/额外/执行/98【额外】璃月-层岩地下1.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/1P.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/1P.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/1P.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/1P.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/2P.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/2P.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/2P.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/2P.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/2pInBigMap.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/2pInBigMap.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/2pInBigMap.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/2pInBigMap.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/3P.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/3P.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/3P.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/3P.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/3pInBigMap.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/3pInBigMap.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/3pInBigMap.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/3pInBigMap.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/4P.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/4P.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/4P.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/4P.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/4pInBigMap.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/4pInBigMap.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/4pInBigMap.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/4pInBigMap.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/ArtifactsButton.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/ArtifactsButton.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/ArtifactsButton.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/ArtifactsButton.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/AutoAddButton.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/AutoAddButton.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/AutoAddButton.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/AutoAddButton.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/CharacterMenu.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/CharacterMenu.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/CharacterMenu.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/CharacterMenu.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/ConfirmButton.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/ConfirmButton.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/ConfirmButton.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/ConfirmButton.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/DeleteButton.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/DeleteButton.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/DeleteButton.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/DeleteButton.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/DestoryButton.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/DestoryButton.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/DestoryButton.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/DestoryButton.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/MainUI.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/MainUI.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/MainUI.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/MainUI.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/confirm.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/confirm.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/confirm.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/confirm.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/confirmKick.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/confirmKick.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/confirmKick.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/confirmKick.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/decompose.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/decompose.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/decompose.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/decompose.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/doDecompose.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/doDecompose.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/doDecompose.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/doDecompose.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/doDecompose2.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/doDecompose2.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/doDecompose2.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/doDecompose2.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/kickAll.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/kickAll.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/kickAll.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/kickAll.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/kickButton.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/kickButton.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/kickButton.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/kickButton.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/leaveTeam.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/leaveTeam.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/leaveTeam.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/leaveTeam.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/quickChoose.png b/repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/quickChoose.png similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/RecognitionObject/quickChoose.png rename to repo/js/ArtifactsGroupPurchasing/assets/RecognitionObject/quickChoose.png diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/assets/info.json b/repo/js/ArtifactsGroupPurchasing/assets/info.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/assets/info.json rename to repo/js/ArtifactsGroupPurchasing/assets/info.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/main.js b/repo/js/ArtifactsGroupPurchasing/main.js similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/main.js rename to repo/js/ArtifactsGroupPurchasing/main.js diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/manifest.json b/repo/js/ArtifactsGroupPurchasing/manifest.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/manifest.json rename to repo/js/ArtifactsGroupPurchasing/manifest.json diff --git a/repo/js/AAA-Artifacts-Group-Purchasing/settings.json b/repo/js/ArtifactsGroupPurchasing/settings.json similarity index 100% rename from repo/js/AAA-Artifacts-Group-Purchasing/settings.json rename to repo/js/ArtifactsGroupPurchasing/settings.json diff --git a/repo/js/AAA-AutoMine/README.md b/repo/js/AutoMine/README.md similarity index 100% rename from repo/js/AAA-AutoMine/README.md rename to repo/js/AutoMine/README.md diff --git a/repo/js/AAA-AutoMine/assets/images/amethyst_lump.png b/repo/js/AutoMine/assets/images/amethyst_lump.png similarity index 100% rename from repo/js/AAA-AutoMine/assets/images/amethyst_lump.png rename to repo/js/AutoMine/assets/images/amethyst_lump.png diff --git a/repo/js/AAA-AutoMine/assets/images/condessence_crystal.png b/repo/js/AutoMine/assets/images/condessence_crystal.png similarity index 100% rename from repo/js/AAA-AutoMine/assets/images/condessence_crystal.png rename to repo/js/AutoMine/assets/images/condessence_crystal.png diff --git a/repo/js/AAA-AutoMine/assets/images/crystal_chunk.png b/repo/js/AutoMine/assets/images/crystal_chunk.png similarity index 100% rename from repo/js/AAA-AutoMine/assets/images/crystal_chunk.png rename to repo/js/AutoMine/assets/images/crystal_chunk.png diff --git a/repo/js/AAA-AutoMine/assets/statistics.json b/repo/js/AutoMine/assets/statistics.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/statistics.json rename to repo/js/AutoMine/assets/statistics.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/01-水晶块-层岩巨渊·地下矿区-地下水泽-南-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/01-水晶块-层岩巨渊·地下矿区-地下水泽-南-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/01-水晶块-层岩巨渊·地下矿区-地下水泽-南-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/01-水晶块-层岩巨渊·地下矿区-地下水泽-南-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/02-水晶块-层岩巨渊·地下矿区-地下水泽-东(有战斗,精英200x1,小怪)-7个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/02-水晶块-层岩巨渊·地下矿区-地下水泽-东(有战斗,精英200x1,小怪)-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/02-水晶块-层岩巨渊·地下矿区-地下水泽-东(有战斗,精英200x1,小怪)-7个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/02-水晶块-层岩巨渊·地下矿区-地下水泽-东(有战斗,精英200x1,小怪)-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/03-水晶块-层岩巨渊·地下矿区-地下水泽-西南(有战斗,精英200x1)-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/03-水晶块-层岩巨渊·地下矿区-地下水泽-西南(有战斗,精英200x1)-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/03-水晶块-层岩巨渊·地下矿区-地下水泽-西南(有战斗,精英200x1)-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/03-水晶块-层岩巨渊·地下矿区-地下水泽-西南(有战斗,精英200x1)-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/04-水晶块-层岩巨渊·地下矿区-巨蛇岩洞-9个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/04-水晶块-层岩巨渊·地下矿区-巨蛇岩洞-9个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/04-水晶块-层岩巨渊·地下矿区-巨蛇岩洞-9个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/04-水晶块-层岩巨渊·地下矿区-巨蛇岩洞-9个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/05-水晶块-层岩巨渊·地下矿区-巨渊主矿区-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/05-水晶块-层岩巨渊·地下矿区-巨渊主矿区-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/05-水晶块-层岩巨渊·地下矿区-巨渊主矿区-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/05-水晶块-层岩巨渊·地下矿区-巨渊主矿区-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/06-水晶块-层岩巨渊·地下矿区-巨渊主矿区-东-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/06-水晶块-层岩巨渊·地下矿区-巨渊主矿区-东-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/06-水晶块-层岩巨渊·地下矿区-巨渊主矿区-东-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/06-水晶块-层岩巨渊·地下矿区-巨渊主矿区-东-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/07-水晶块-层岩巨渊·地下矿区-巨渊主矿区-西北-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/07-水晶块-层岩巨渊·地下矿区-巨渊主矿区-西北-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/07-水晶块-层岩巨渊·地下矿区-巨渊主矿区-西北-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/07-水晶块-层岩巨渊·地下矿区-巨渊主矿区-西北-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/08-水晶块-层岩巨渊·地下矿区-临时主矿道-东-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/08-水晶块-层岩巨渊·地下矿区-临时主矿道-东-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/08-水晶块-层岩巨渊·地下矿区-临时主矿道-东-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/08-水晶块-层岩巨渊·地下矿区-临时主矿道-东-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/09-水晶块-层岩巨渊·地下矿区-临时主矿道-东北(有战斗,小怪)-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/09-水晶块-层岩巨渊·地下矿区-临时主矿道-东北(有战斗,小怪)-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/09-水晶块-层岩巨渊·地下矿区-临时主矿道-东北(有战斗,小怪)-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/09-水晶块-层岩巨渊·地下矿区-临时主矿道-东北(有战斗,小怪)-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/10-水晶块-层岩巨渊·地下矿区-临时主矿道-南-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/10-水晶块-层岩巨渊·地下矿区-临时主矿道-南-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/10-水晶块-层岩巨渊·地下矿区-临时主矿道-南-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/10-水晶块-层岩巨渊·地下矿区-临时主矿道-南-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/11-水晶块-层岩巨渊·地下矿区-临时主矿道-南2-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/11-水晶块-层岩巨渊·地下矿区-临时主矿道-南2-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/11-水晶块-层岩巨渊·地下矿区-临时主矿道-南2-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/11-水晶块-层岩巨渊·地下矿区-临时主矿道-南2-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/12-水晶块-层岩巨渊·地下矿区-临时主矿道-西-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/12-水晶块-层岩巨渊·地下矿区-临时主矿道-西-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/12-水晶块-层岩巨渊·地下矿区-临时主矿道-西-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/12-水晶块-层岩巨渊·地下矿区-临时主矿道-西-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/13-水晶块-层岩巨渊·地下矿区-崎岖石厅-南2(有战斗,小怪)-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/13-水晶块-层岩巨渊·地下矿区-崎岖石厅-南2(有战斗,小怪)-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/13-水晶块-层岩巨渊·地下矿区-崎岖石厅-南2(有战斗,小怪)-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/13-水晶块-层岩巨渊·地下矿区-崎岖石厅-南2(有战斗,小怪)-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/14-水晶块-层岩巨渊·地下矿区-崎岖石厅-南-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/14-水晶块-层岩巨渊·地下矿区-崎岖石厅-南-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/14-水晶块-层岩巨渊·地下矿区-崎岖石厅-南-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/14-水晶块-层岩巨渊·地下矿区-崎岖石厅-南-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/15-水晶块-层岩巨渊·地下矿区-崎岖石厅-南3-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/15-水晶块-层岩巨渊·地下矿区-崎岖石厅-南3-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/15-水晶块-层岩巨渊·地下矿区-崎岖石厅-南3-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/15-水晶块-层岩巨渊·地下矿区-崎岖石厅-南3-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/16-水晶块-层岩巨渊·地下矿区-无名遗迹-北-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/16-水晶块-层岩巨渊·地下矿区-无名遗迹-北-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/16-水晶块-层岩巨渊·地下矿区-无名遗迹-北-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/16-水晶块-层岩巨渊·地下矿区-无名遗迹-北-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/17-水晶块-层岩巨渊·地下矿区-无名遗迹-南(有战斗,小怪)-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/17-水晶块-层岩巨渊·地下矿区-无名遗迹-南(有战斗,小怪)-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/17-水晶块-层岩巨渊·地下矿区-无名遗迹-南(有战斗,小怪)-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/17-水晶块-层岩巨渊·地下矿区-无名遗迹-南(有战斗,小怪)-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/18-水晶块-层岩巨渊·地下矿区-荧光狭道-9个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/18-水晶块-层岩巨渊·地下矿区-荧光狭道-9个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/18-水晶块-层岩巨渊·地下矿区-荧光狭道-9个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/18-水晶块-层岩巨渊·地下矿区-荧光狭道-9个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/19-水晶块-层岩巨渊·地下矿区-荧光狭道-西-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/19-水晶块-层岩巨渊·地下矿区-荧光狭道-西-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/19-水晶块-层岩巨渊·地下矿区-荧光狭道-西-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/19-水晶块-层岩巨渊·地下矿区-荧光狭道-西-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/20-水晶块-层岩巨渊·地下矿区-巨渊主矿区-(诺艾尔必须放1号位)东2-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/20-水晶块-层岩巨渊·地下矿区-巨渊主矿区-(诺艾尔必须放1号位)东2-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/20-水晶块-层岩巨渊·地下矿区-巨渊主矿区-(诺艾尔必须放1号位)东2-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/层岩巨渊·地下矿区/20-水晶块-层岩巨渊·地下矿区-巨渊主矿区-(诺艾尔必须放1号位)东2-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/01-水晶块-沉玉谷-药蝶谷-8个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/01-水晶块-沉玉谷-药蝶谷-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/01-水晶块-沉玉谷-药蝶谷-8个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/01-水晶块-沉玉谷-药蝶谷-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/02-水晶块-沉玉谷-古茶树坡-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/02-水晶块-沉玉谷-古茶树坡-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/02-水晶块-沉玉谷-古茶树坡-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/02-水晶块-沉玉谷-古茶树坡-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/03-水晶块-沉玉谷-灵濛山西-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/03-水晶块-沉玉谷-灵濛山西-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/03-水晶块-沉玉谷-灵濛山西-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/03-水晶块-沉玉谷-灵濛山西-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/04-水晶块-沉玉谷-灵濛山北-7个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/04-水晶块-沉玉谷-灵濛山北-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/04-水晶块-沉玉谷-灵濛山北-7个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/04-水晶块-沉玉谷-灵濛山北-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/05-水晶块-沉玉谷-暝垣山北-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/05-水晶块-沉玉谷-暝垣山北-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/05-水晶块-沉玉谷-暝垣山北-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/05-水晶块-沉玉谷-暝垣山北-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/06-水晶块-沉玉谷-暝垣山-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/06-水晶块-沉玉谷-暝垣山-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/06-水晶块-沉玉谷-暝垣山-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/06-水晶块-沉玉谷-暝垣山-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/07-水晶块-沉玉谷-赤璋城垣(有战斗,精英200x4)-11个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/07-水晶块-沉玉谷-赤璋城垣(有战斗,精英200x4)-11个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/07-水晶块-沉玉谷-赤璋城垣(有战斗,精英200x4)-11个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/沉玉谷/07-水晶块-沉玉谷-赤璋城垣(有战斗,精英200x4)-11个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/01-水晶块-璃月-天衡山-10个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/01-水晶块-璃月-天衡山-10个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/01-水晶块-璃月-天衡山-10个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/01-水晶块-璃月-天衡山-10个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/02-水晶块-璃月-天衡山西南(有战斗,火免,精英200x1)-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/02-水晶块-璃月-天衡山西南(有战斗,火免,精英200x1)-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/02-水晶块-璃月-天衡山西南(有战斗,火免,精英200x1)-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/02-水晶块-璃月-天衡山西南(有战斗,火免,精英200x1)-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/03-水晶块-璃月-天衡山西(有战斗,冰免,精英200x1)-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/03-水晶块-璃月-天衡山西(有战斗,冰免,精英200x1)-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/03-水晶块-璃月-天衡山西(有战斗,冰免,精英200x1)-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/03-水晶块-璃月-天衡山西(有战斗,冰免,精英200x1)-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/04-水晶块-璃月-灵矩关南(有战斗,小怪)-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/04-水晶块-璃月-灵矩关南(有战斗,小怪)-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/04-水晶块-璃月-灵矩关南(有战斗,小怪)-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/04-水晶块-璃月-灵矩关南(有战斗,小怪)-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/05-水晶块-璃月-天衡山北(有战斗,小怪)-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/05-水晶块-璃月-天衡山北(有战斗,小怪)-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/05-水晶块-璃月-天衡山北(有战斗,小怪)-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/05-水晶块-璃月-天衡山北(有战斗,小怪)-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/06-水晶块-璃月-遁玉陵-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/06-水晶块-璃月-遁玉陵-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/06-水晶块-璃月-遁玉陵-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/06-水晶块-璃月-遁玉陵-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/07-水晶块-璃月-遁玉陵西(有战斗,小怪)-8个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/07-水晶块-璃月-遁玉陵西(有战斗,小怪)-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/07-水晶块-璃月-遁玉陵西(有战斗,小怪)-8个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/07-水晶块-璃月-遁玉陵西(有战斗,小怪)-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/08-水晶块-璃月-天遒谷东-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/08-水晶块-璃月-天遒谷东-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/08-水晶块-璃月-天遒谷东-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/08-水晶块-璃月-天遒谷东-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/09-水晶块-璃月-翠玦坡西-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/09-水晶块-璃月-翠玦坡西-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/09-水晶块-璃月-翠玦坡西-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/09-水晶块-璃月-翠玦坡西-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/10-水晶块-璃月-翠玦坡东(有战斗,小怪)-8个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/10-水晶块-璃月-翠玦坡东(有战斗,小怪)-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/10-水晶块-璃月-翠玦坡东(有战斗,小怪)-8个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/10-水晶块-璃月-翠玦坡东(有战斗,小怪)-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/11-水晶块-璃月-绝云间南(有战斗,小怪)-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/11-水晶块-璃月-绝云间南(有战斗,小怪)-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/11-水晶块-璃月-绝云间南(有战斗,小怪)-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/11-水晶块-璃月-绝云间南(有战斗,小怪)-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/12-水晶块-璃月-绝云间西(有战斗,小怪)-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/12-水晶块-璃月-绝云间西(有战斗,小怪)-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/12-水晶块-璃月-绝云间西(有战斗,小怪)-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/12-水晶块-璃月-绝云间西(有战斗,小怪)-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/13-水晶块-璃月-庆云顶南-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/13-水晶块-璃月-庆云顶南-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/13-水晶块-璃月-庆云顶南-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/13-水晶块-璃月-庆云顶南-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/14-水晶块-璃月-庆云顶西-7个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/14-水晶块-璃月-庆云顶西-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/14-水晶块-璃月-庆云顶西-7个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/14-水晶块-璃月-庆云顶西-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/15-水晶块-璃月-庆云顶北(有战斗,精英600x2)-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/15-水晶块-璃月-庆云顶北(有战斗,精英600x2)-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/15-水晶块-璃月-庆云顶北(有战斗,精英600x2)-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/15-水晶块-璃月-庆云顶北(有战斗,精英600x2)-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/16-水晶块-璃月-庆云顶东-7个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/16-水晶块-璃月-庆云顶东-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/16-水晶块-璃月-庆云顶东-7个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/16-水晶块-璃月-庆云顶东-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/17-水晶块-璃月-奥藏山(有战斗,精英600x1,200x1)-8个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/17-水晶块-璃月-奥藏山(有战斗,精英600x1,200x1)-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/17-水晶块-璃月-奥藏山(有战斗,精英600x1,200x1)-8个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/17-水晶块-璃月-奥藏山(有战斗,精英600x1,200x1)-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/18-水晶块-璃月-绝云间北-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/18-水晶块-璃月-绝云间北-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/18-水晶块-璃月-绝云间北-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/18-水晶块-璃月-绝云间北-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/19-水晶块-璃月-望舒客栈西-1个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/19-水晶块-璃月-望舒客栈西-1个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/19-水晶块-璃月-望舒客栈西-1个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/19-水晶块-璃月-望舒客栈西-1个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/20-水晶块-璃月-奥藏山东(有战斗,小怪)-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/20-水晶块-璃月-奥藏山东(有战斗,小怪)-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/20-水晶块-璃月-奥藏山东(有战斗,小怪)-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/20-水晶块-璃月-奥藏山东(有战斗,小怪)-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/21-水晶块-璃月-华池-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/21-水晶块-璃月-华池-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/21-水晶块-璃月-华池-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/21-水晶块-璃月-华池-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/22-水晶块-璃月-轻策庄南-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/22-水晶块-璃月-轻策庄南-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/22-水晶块-璃月-轻策庄南-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/22-水晶块-璃月-轻策庄南-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/23-水晶块-璃月-孤云阁北(定位不准)-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/23-水晶块-璃月-孤云阁北(定位不准)-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/23-水晶块-璃月-孤云阁北(定位不准)-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/23-水晶块-璃月-孤云阁北(定位不准)-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/24-水晶块-璃月-孤云阁南(定位不准,有战斗,精英200x1)-18个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/24-水晶块-璃月-孤云阁南(定位不准,有战斗,精英200x1)-18个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/24-水晶块-璃月-孤云阁南(定位不准,有战斗,精英200x1)-18个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/24-水晶块-璃月-孤云阁南(定位不准,有战斗,精英200x1)-18个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/25-水晶块-璃月-天工峡-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/25-水晶块-璃月-天工峡-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/25-水晶块-璃月-天工峡-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/25-水晶块-璃月-天工峡-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/26-水晶块-璃月-巨渊之口-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/26-水晶块-璃月-巨渊之口-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/26-水晶块-璃月-巨渊之口-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/26-水晶块-璃月-巨渊之口-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/27-水晶块-璃月-岩中幽谷-7个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/27-水晶块-璃月-岩中幽谷-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/27-水晶块-璃月-岩中幽谷-7个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/27-水晶块-璃月-岩中幽谷-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/28-水晶块-璃月-地面矿区(有战斗,小怪)-9个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/28-水晶块-璃月-地面矿区(有战斗,小怪)-9个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/28-水晶块-璃月-地面矿区(有战斗,小怪)-9个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/28-水晶块-璃月-地面矿区(有战斗,小怪)-9个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/29-水晶块-璃月-琉璃峰-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/29-水晶块-璃月-琉璃峰-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/29-水晶块-璃月-琉璃峰-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/29-水晶块-璃月-琉璃峰-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/30-水晶块-璃月-琉璃峰北-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/30-水晶块-璃月-琉璃峰北-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/30-水晶块-璃月-琉璃峰北-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/璃月/30-水晶块-璃月-琉璃峰北-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/01-水晶块-蒙德-望风山地-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/01-水晶块-蒙德-望风山地-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/01-水晶块-蒙德-望风山地-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/01-水晶块-蒙德-望风山地-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/02-水晶块-蒙德-铭记之谷-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/02-水晶块-蒙德-铭记之谷-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/02-水晶块-蒙德-铭记之谷-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/02-水晶块-蒙德-铭记之谷-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/03-水晶块-蒙德-奔狼领-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/03-水晶块-蒙德-奔狼领-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/03-水晶块-蒙德-奔狼领-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/03-水晶块-蒙德-奔狼领-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/04-水晶块-蒙德-奔狼领东(有战斗,小怪)-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/04-水晶块-蒙德-奔狼领东(有战斗,小怪)-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/04-水晶块-蒙德-奔狼领东(有战斗,小怪)-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/04-水晶块-蒙德-奔狼领东(有战斗,小怪)-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/05-水晶块-蒙德-奔狼领北(有战斗,精英200x1,小怪)-7个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/05-水晶块-蒙德-奔狼领北(有战斗,精英200x1,小怪)-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/05-水晶块-蒙德-奔狼领北(有战斗,精英200x1,小怪)-7个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/05-水晶块-蒙德-奔狼领北(有战斗,精英200x1,小怪)-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/06-水晶块-蒙德-明冠峡-1个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/06-水晶块-蒙德-明冠峡-1个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/06-水晶块-蒙德-明冠峡-1个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/06-水晶块-蒙德-明冠峡-1个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/07-水晶块-蒙德-风龙废墟南-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/07-水晶块-蒙德-风龙废墟南-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/07-水晶块-蒙德-风龙废墟南-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/07-水晶块-蒙德-风龙废墟南-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/08-水晶块-蒙德-风龙废墟(有战斗,小怪)-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/08-水晶块-蒙德-风龙废墟(有战斗,小怪)-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/08-水晶块-蒙德-风龙废墟(有战斗,小怪)-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/08-水晶块-蒙德-风龙废墟(有战斗,小怪)-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/09-水晶块-蒙德-风龙废墟中央-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/09-水晶块-蒙德-风龙废墟中央-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/09-水晶块-蒙德-风龙废墟中央-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/09-水晶块-蒙德-风龙废墟中央-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/10-水晶块-蒙德-风龙废墟中央(有战斗,小怪)-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/10-水晶块-蒙德-风龙废墟中央(有战斗,小怪)-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/10-水晶块-蒙德-风龙废墟中央(有战斗,小怪)-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/10-水晶块-蒙德-风龙废墟中央(有战斗,小怪)-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/11-水晶块-蒙德-风龙废墟中央-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/11-水晶块-蒙德-风龙废墟中央-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/11-水晶块-蒙德-风龙废墟中央-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/11-水晶块-蒙德-风龙废墟中央-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/12-水晶块-蒙德-风龙废墟北-1个.json b/repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/12-水晶块-蒙德-风龙废墟北-1个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/12-水晶块-蒙德-风龙废墟北-1个.json rename to repo/js/AutoMine/assets/矿物/水晶块/诺艾尔的提瓦特矿闻录@火山/蒙德/12-水晶块-蒙德-风龙废墟北-1个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A01-须弥-桓那兰那右侧-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A01-须弥-桓那兰那右侧-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A01-须弥-桓那兰那右侧-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A01-须弥-桓那兰那右侧-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A02-须弥-二净甸右侧-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A02-须弥-二净甸右侧-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A02-须弥-二净甸右侧-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A02-须弥-二净甸右侧-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A03-须弥-二净甸左侧-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A03-须弥-二净甸左侧-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A03-须弥-二净甸左侧-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A03-须弥-二净甸左侧-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A04-须弥-二净甸上面-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A04-须弥-二净甸上面-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A04-须弥-二净甸上面-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A04-须弥-二净甸上面-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A05-须弥-善见地上面-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A05-须弥-善见地上面-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A05-须弥-善见地上面-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A05-须弥-善见地上面-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A06-须弥-善见地左侧-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A06-须弥-善见地左侧-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A06-须弥-善见地左侧-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A06-须弥-善见地左侧-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A07-须弥-善见地左下-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A07-须弥-善见地左下-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A07-须弥-善见地左下-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A07-须弥-善见地左下-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A08-须弥-灵树之馆副本-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A08-须弥-灵树之馆副本-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A08-须弥-灵树之馆副本-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A08-须弥-灵树之馆副本-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A09-须弥-阿陀河谷左上-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A09-须弥-阿陀河谷左上-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A09-须弥-阿陀河谷左上-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A09-须弥-阿陀河谷左上-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A10-须弥-禅那园上方-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A10-须弥-禅那园上方-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A10-须弥-禅那园上方-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A10-须弥-禅那园上方-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A11-须弥-禅那园右上方-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A11-须弥-禅那园右上方-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A11-须弥-禅那园右上方-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A11-须弥-禅那园右上方-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A12-须弥-二净甸右下-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A12-须弥-二净甸右下-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A12-须弥-二净甸右下-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A12-须弥-二净甸右下-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A13-须弥-二净甸七天神像上方-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A13-须弥-二净甸七天神像上方-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A13-须弥-二净甸七天神像上方-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A13-须弥-二净甸七天神像上方-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A14-须弥-须弥成左下-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A14-须弥-须弥成左下-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A14-须弥-须弥成左下-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A14-须弥-须弥成左下-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A15-须弥-香醉坡-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A15-须弥-香醉坡-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A15-须弥-香醉坡-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A15-须弥-香醉坡-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A16-须弥-翠羽恐蕈的巢窟-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A16-须弥-翠羽恐蕈的巢窟-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A16-须弥-翠羽恐蕈的巢窟-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A16-须弥-翠羽恐蕈的巢窟-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A17-须弥-沙中故里-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A17-须弥-沙中故里-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A17-须弥-沙中故里-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A17-须弥-沙中故里-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A18-须弥-沙中故里半空洞窟-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A18-须弥-沙中故里半空洞窟-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A18-须弥-沙中故里半空洞窟-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A18-须弥-沙中故里半空洞窟-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A19-须弥-沙中故里传送锚点旁-1个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A19-须弥-沙中故里传送锚点旁-1个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A19-须弥-沙中故里传送锚点旁-1个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A19-须弥-沙中故里传送锚点旁-1个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A20-须弥-晴雨的经纬副本-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A20-须弥-晴雨的经纬副本-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A20-须弥-晴雨的经纬副本-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/A20-须弥-晴雨的经纬副本-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B01-须弥-愚妄行宫右侧-1个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B01-须弥-愚妄行宫右侧-1个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B01-须弥-愚妄行宫右侧-1个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B01-须弥-愚妄行宫右侧-1个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B02-须弥-王者狭廊右侧-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B02-须弥-王者狭廊右侧-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B02-须弥-王者狭廊右侧-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B02-须弥-王者狭廊右侧-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B03-须弥-沙之眼-5个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B03-须弥-沙之眼-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B03-须弥-沙之眼-5个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B03-须弥-沙之眼-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B04-须弥-神弃殿阁右下-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B04-须弥-神弃殿阁右下-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B04-须弥-神弃殿阁右下-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B04-须弥-神弃殿阁右下-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B05-须弥-肇始之乡副本-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B05-须弥-肇始之乡副本-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B05-须弥-肇始之乡副本-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B05-须弥-肇始之乡副本-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B06-须弥-达马山遗迹下层-8个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B06-须弥-达马山遗迹下层-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B06-须弥-达马山遗迹下层-8个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B06-须弥-达马山遗迹下层-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B07-须弥-沙虫隧道中层北侧及下层-10个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B07-须弥-沙虫隧道中层北侧及下层-10个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B07-须弥-沙虫隧道中层北侧及下层-10个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B07-须弥-沙虫隧道中层北侧及下层-10个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B08-须弥-沙虫隧道中层南侧-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B08-须弥-沙虫隧道中层南侧-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B08-须弥-沙虫隧道中层南侧-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/B08-须弥-沙虫隧道中层南侧-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C01-须弥-吞羊岩-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C01-须弥-吞羊岩-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C01-须弥-吞羊岩-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C01-须弥-吞羊岩-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C02-须弥-丰饶绿洲-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C02-须弥-丰饶绿洲-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C02-须弥-丰饶绿洲-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C02-须弥-丰饶绿洲-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C03-须弥-舍身步道-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C03-须弥-舍身步道-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C03-须弥-舍身步道-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C03-须弥-舍身步道-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C04-须弥-落谷山内洞窟上层-2个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C04-须弥-落谷山内洞窟上层-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C04-须弥-落谷山内洞窟上层-2个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C04-须弥-落谷山内洞窟上层-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C05-须弥-赤王陵西北岩窟中层下层-19个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C05-须弥-赤王陵西北岩窟中层下层-19个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C05-须弥-赤王陵西北岩窟中层下层-19个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C05-须弥-赤王陵西北岩窟中层下层-19个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C06-须弥-赤王陵左上传送锚点-13个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C06-须弥-赤王陵左上传送锚点-13个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C06-须弥-赤王陵左上传送锚点-13个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C06-须弥-赤王陵左上传送锚点-13个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C07-须弥-赤王陵上方地下传送锚点-4个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C07-须弥-赤王陵上方地下传送锚点-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C07-须弥-赤王陵上方地下传送锚点-4个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C07-须弥-赤王陵上方地下传送锚点-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C08-须弥-赤王陵上方地下传送锚点-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C08-须弥-赤王陵上方地下传送锚点-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C08-须弥-赤王陵上方地下传送锚点-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/C08-须弥-赤王陵上方地下传送锚点-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/D01-须弥-逾渊地墟上层-6个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/D01-须弥-逾渊地墟上层-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/D01-须弥-逾渊地墟上层-6个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/D01-须弥-逾渊地墟上层-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/E01-纳塔-提提岛-3个.json b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/E01-纳塔-提提岛-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/E01-纳塔-提提岛-3个.json rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/E01-纳塔-提提岛-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/README.md b/repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/README.md similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/README.md rename to repo/js/AutoMine/assets/矿物/水晶块/须弥纳塔地区大剑@芝士贝果/README.md diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A01-紫晶块-稻妻-鸣神岛-绀田村-东-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A01-紫晶块-稻妻-鸣神岛-绀田村-东-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A01-紫晶块-稻妻-鸣神岛-绀田村-东-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A01-紫晶块-稻妻-鸣神岛-绀田村-东-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A02-紫晶块-稻妻-鸣神岛-绀田村01-(有战斗,小怪)-5个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A02-紫晶块-稻妻-鸣神岛-绀田村01-(有战斗,小怪)-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A02-紫晶块-稻妻-鸣神岛-绀田村01-(有战斗,小怪)-5个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A02-紫晶块-稻妻-鸣神岛-绀田村01-(有战斗,小怪)-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A03-紫晶块-稻妻-鸣神岛-绀田村02-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A03-紫晶块-稻妻-鸣神岛-绀田村02-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A03-紫晶块-稻妻-鸣神岛-绀田村02-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A03-紫晶块-稻妻-鸣神岛-绀田村02-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A04-紫晶块-稻妻-鸣神岛-绀田村03-(有战斗,小怪)-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A04-紫晶块-稻妻-鸣神岛-绀田村03-(有战斗,小怪)-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A04-紫晶块-稻妻-鸣神岛-绀田村03-(有战斗,小怪)-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A04-紫晶块-稻妻-鸣神岛-绀田村03-(有战斗,小怪)-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A05-紫晶块-稻妻-鸣神岛-荒海-8~9个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A05-紫晶块-稻妻-鸣神岛-荒海-8~9个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A05-紫晶块-稻妻-鸣神岛-荒海-8~9个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A05-紫晶块-稻妻-鸣神岛-荒海-8~9个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A06-紫晶块-稻妻-鸣神岛-梦想乐土之殁-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A06-紫晶块-稻妻-鸣神岛-梦想乐土之殁-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A06-紫晶块-稻妻-鸣神岛-梦想乐土之殁-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A06-紫晶块-稻妻-鸣神岛-梦想乐土之殁-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A07-紫晶块-稻妻-鸣神岛-神里屋敷-北-(有战斗,小怪)-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A07-紫晶块-稻妻-鸣神岛-神里屋敷-北-(有战斗,小怪)-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A07-紫晶块-稻妻-鸣神岛-神里屋敷-北-(有战斗,小怪)-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A07-紫晶块-稻妻-鸣神岛-神里屋敷-北-(有战斗,小怪)-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A08-紫晶块-稻妻-鸣神岛-神里屋敷-南-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A08-紫晶块-稻妻-鸣神岛-神里屋敷-南-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A08-紫晶块-稻妻-鸣神岛-神里屋敷-南-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A08-紫晶块-稻妻-鸣神岛-神里屋敷-南-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A09-紫晶块-稻妻-鸣神岛-稻妻城-5个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A09-紫晶块-稻妻-鸣神岛-稻妻城-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A09-紫晶块-稻妻-鸣神岛-稻妻城-5个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/A09-紫晶块-稻妻-鸣神岛-稻妻城-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B01-紫晶块-稻妻-神無冢-九條陣屋-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B01-紫晶块-稻妻-神無冢-九條陣屋-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B01-紫晶块-稻妻-神無冢-九條陣屋-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B01-紫晶块-稻妻-神無冢-九條陣屋-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B02-紫晶块-稻妻-神無冢-踏鞴砂-大炮1-7~10个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B02-紫晶块-稻妻-神無冢-踏鞴砂-大炮1-7~10个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B02-紫晶块-稻妻-神無冢-踏鞴砂-大炮1-7~10个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B02-紫晶块-稻妻-神無冢-踏鞴砂-大炮1-7~10个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B03-紫晶块-稻妻-神無冢-踏鞴砂-大炮2-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B03-紫晶块-稻妻-神無冢-踏鞴砂-大炮2-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B03-紫晶块-稻妻-神無冢-踏鞴砂-大炮2-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B03-紫晶块-稻妻-神無冢-踏鞴砂-大炮2-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B04-紫晶块-稻妻-神无冢-踏鞴砂-借景之馆-(有战斗,小怪)-3~5个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B04-紫晶块-稻妻-神无冢-踏鞴砂-借景之馆-(有战斗,小怪)-3~5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B04-紫晶块-稻妻-神无冢-踏鞴砂-借景之馆-(有战斗,小怪)-3~5个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B04-紫晶块-稻妻-神无冢-踏鞴砂-借景之馆-(有战斗,小怪)-3~5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B05-紫晶块-稻妻-神無冢-踏鞴砂-南-5个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B05-紫晶块-稻妻-神無冢-踏鞴砂-南-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B05-紫晶块-稻妻-神無冢-踏鞴砂-南-5个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B05-紫晶块-稻妻-神無冢-踏鞴砂-南-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B06-紫晶块-稻妻-神无冢-踏鞴砂-西南-8个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B06-紫晶块-稻妻-神无冢-踏鞴砂-西南-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B06-紫晶块-稻妻-神无冢-踏鞴砂-西南-8个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B06-紫晶块-稻妻-神无冢-踏鞴砂-西南-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B07-紫晶块-稻妻-神无冢-名椎滩-(有战斗,小怪)-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B07-紫晶块-稻妻-神无冢-名椎滩-(有战斗,小怪)-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B07-紫晶块-稻妻-神无冢-名椎滩-(有战斗,小怪)-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/B07-紫晶块-稻妻-神无冢-名椎滩-(有战斗,小怪)-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C01-紫晶块-稻妻-八酝島-名椎滩-西-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C01-紫晶块-稻妻-八酝島-名椎滩-西-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C01-紫晶块-稻妻-八酝島-名椎滩-西-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C01-紫晶块-稻妻-八酝島-名椎滩-西-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C02-紫晶块-稻妻-八酝岛-藤兜砦-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C02-紫晶块-稻妻-八酝岛-藤兜砦-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C02-紫晶块-稻妻-八酝岛-藤兜砦-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C02-紫晶块-稻妻-八酝岛-藤兜砦-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C03-紫晶块-稻妻-八酝岛-椛染之庭-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C03-紫晶块-稻妻-八酝岛-椛染之庭-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C03-紫晶块-稻妻-八酝岛-椛染之庭-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C03-紫晶块-稻妻-八酝岛-椛染之庭-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C04-紫晶块-稻妻-八酝岛-绯木村-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C04-紫晶块-稻妻-八酝岛-绯木村-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C04-紫晶块-稻妻-八酝岛-绯木村-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C04-紫晶块-稻妻-八酝岛-绯木村-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C05-紫晶块-稻妻-八酝岛-七天神像-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C05-紫晶块-稻妻-八酝岛-七天神像-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C05-紫晶块-稻妻-八酝岛-七天神像-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C05-紫晶块-稻妻-八酝岛-七天神像-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C06-紫晶块-稻妻-八酝岛-阵代屋敷-西-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C06-紫晶块-稻妻-八酝岛-阵代屋敷-西-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C06-紫晶块-稻妻-八酝岛-阵代屋敷-西-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C06-紫晶块-稻妻-八酝岛-阵代屋敷-西-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C07-紫晶块-稻妻-八酝岛-阵代屋敷-东-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C07-紫晶块-稻妻-八酝岛-阵代屋敷-东-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C07-紫晶块-稻妻-八酝岛-阵代屋敷-东-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C07-紫晶块-稻妻-八酝岛-阵代屋敷-东-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C08-紫晶块-稻妻-八酝岛-蛇骨矿洞-东-(有战斗,小怪)-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C08-紫晶块-稻妻-八酝岛-蛇骨矿洞-东-(有战斗,小怪)-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C08-紫晶块-稻妻-八酝岛-蛇骨矿洞-东-(有战斗,小怪)-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/C08-紫晶块-稻妻-八酝岛-蛇骨矿洞-东-(有战斗,小怪)-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D01-紫晶块-稻妻-海衹岛-水月池-南-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D01-紫晶块-稻妻-海衹岛-水月池-南-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D01-紫晶块-稻妻-海衹岛-水月池-南-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D01-紫晶块-稻妻-海衹岛-水月池-南-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D02-紫晶块-稻妻-海衹岛-望泷村-东-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D02-紫晶块-稻妻-海衹岛-望泷村-东-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D02-紫晶块-稻妻-海衹岛-望泷村-东-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D02-紫晶块-稻妻-海衹岛-望泷村-东-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D03-紫晶块-稻妻-海衹岛-望泷村01(有战斗,小怪)-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D03-紫晶块-稻妻-海衹岛-望泷村01(有战斗,小怪)-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D03-紫晶块-稻妻-海衹岛-望泷村01(有战斗,小怪)-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D03-紫晶块-稻妻-海衹岛-望泷村01(有战斗,小怪)-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D04-紫晶块-稻妻-海衹岛-望泷村02-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D04-紫晶块-稻妻-海衹岛-望泷村02-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D04-紫晶块-稻妻-海衹岛-望泷村02-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D04-紫晶块-稻妻-海衹岛-望泷村02-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D05-紫晶块-稻妻-海衹岛-珊瑚宫-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D05-紫晶块-稻妻-海衹岛-珊瑚宫-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D05-紫晶块-稻妻-海衹岛-珊瑚宫-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D05-紫晶块-稻妻-海衹岛-珊瑚宫-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D06-紫晶块-稻妻-海衹岛-七天神像-5个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D06-紫晶块-稻妻-海衹岛-七天神像-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D06-紫晶块-稻妻-海衹岛-七天神像-5个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/D06-紫晶块-稻妻-海衹岛-七天神像-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E01-紫晶块-稻妻-清籁岛-天云峠(有战斗,高危,精英200x3)-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E01-紫晶块-稻妻-清籁岛-天云峠(有战斗,高危,精英200x3)-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E01-紫晶块-稻妻-清籁岛-天云峠(有战斗,高危,精英200x3)-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E01-紫晶块-稻妻-清籁岛-天云峠(有战斗,高危,精英200x3)-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E02-紫晶块-稻妻-清籁岛-天云峠下-12个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E02-紫晶块-稻妻-清籁岛-天云峠下-12个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E02-紫晶块-稻妻-清籁岛-天云峠下-12个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E02-紫晶块-稻妻-清籁岛-天云峠下-12个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E03-紫晶块-稻妻-清籁岛-越石村-8个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E03-紫晶块-稻妻-清籁岛-越石村-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E03-紫晶块-稻妻-清籁岛-越石村-8个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E03-紫晶块-稻妻-清籁岛-越石村-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E04-紫晶块-稻妻-清籁岛-越石村左(有戰鬥,小怪)-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E04-紫晶块-稻妻-清籁岛-越石村左(有戰鬥,小怪)-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E04-紫晶块-稻妻-清籁岛-越石村左(有戰鬥,小怪)-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E04-紫晶块-稻妻-清籁岛-越石村左(有戰鬥,小怪)-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E05-紫晶块-稻妻-清籁岛-沉眠之庭-7个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E05-紫晶块-稻妻-清籁岛-沉眠之庭-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E05-紫晶块-稻妻-清籁岛-沉眠之庭-7个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/E05-紫晶块-稻妻-清籁岛-沉眠之庭-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F01-紫晶块-稻妻-鹤观-黄金王兽旁1-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F01-紫晶块-稻妻-鹤观-黄金王兽旁1-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F01-紫晶块-稻妻-鹤观-黄金王兽旁1-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F01-紫晶块-稻妻-鹤观-黄金王兽旁1-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F02-紫晶块-稻妻-鹤观-黄金王兽旁2(有战斗,高危,精英400x1,200x1)-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F02-紫晶块-稻妻-鹤观-黄金王兽旁2(有战斗,高危,精英400x1,200x1)-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F02-紫晶块-稻妻-鹤观-黄金王兽旁2(有战斗,高危,精英400x1,200x1)-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F02-紫晶块-稻妻-鹤观-黄金王兽旁2(有战斗,高危,精英400x1,200x1)-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F03-紫晶块-稻妻-鹤观-逢岳之野下-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F03-紫晶块-稻妻-鹤观-逢岳之野下-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F03-紫晶块-稻妻-鹤观-逢岳之野下-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F03-紫晶块-稻妻-鹤观-逢岳之野下-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F04-紫晶块-稻妻-鹤观-菅名山-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F04-紫晶块-稻妻-鹤观-菅名山-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F04-紫晶块-稻妻-鹤观-菅名山-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F04-紫晶块-稻妻-鹤观-菅名山-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F05-紫晶块-稻妻-鹤观-荗知祭场左上-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F05-紫晶块-稻妻-鹤观-荗知祭场左上-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F05-紫晶块-稻妻-鹤观-荗知祭场左上-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F05-紫晶块-稻妻-鹤观-荗知祭场左上-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F06-紫晶块-稻妻-鹤观-知比山-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F06-紫晶块-稻妻-鹤观-知比山-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F06-紫晶块-稻妻-鹤观-知比山-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F06-紫晶块-稻妻-鹤观-知比山-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F07-紫晶块-稻妻-鹤观-七天神像-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F07-紫晶块-稻妻-鹤观-七天神像-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F07-紫晶块-稻妻-鹤观-七天神像-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/F07-紫晶块-稻妻-鹤观-七天神像-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G01-紫晶块-渊下宫-蛇肠之路下-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G01-紫晶块-渊下宫-蛇肠之路下-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G01-紫晶块-渊下宫-蛇肠之路下-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G01-紫晶块-渊下宫-蛇肠之路下-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G02-紫晶块-渊下宫-蛇心之地下(定位不准,有战斗,小怪)-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G02-紫晶块-渊下宫-蛇心之地下(定位不准,有战斗,小怪)-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G02-紫晶块-渊下宫-蛇心之地下(定位不准,有战斗,小怪)-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G02-紫晶块-渊下宫-蛇心之地下(定位不准,有战斗,小怪)-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G03-紫晶块-渊下宫-蛇心之地(有战斗,小怪)-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G03-紫晶块-渊下宫-蛇心之地(有战斗,小怪)-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G03-紫晶块-渊下宫-蛇心之地(有战斗,小怪)-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G03-紫晶块-渊下宫-蛇心之地(有战斗,小怪)-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G04-紫晶块-渊下宫-蛇心之地左上01(有战斗,小怪)-3个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G04-紫晶块-渊下宫-蛇心之地左上01(有战斗,小怪)-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G04-紫晶块-渊下宫-蛇心之地左上01(有战斗,小怪)-3个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G04-紫晶块-渊下宫-蛇心之地左上01(有战斗,小怪)-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G05-紫晶块-渊下宫-蛇心之地左上02-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G05-紫晶块-渊下宫-蛇心之地左上02-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G05-紫晶块-渊下宫-蛇心之地左上02-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G05-紫晶块-渊下宫-蛇心之地左上02-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G06-紫晶块-渊下宫-蛇心之地左上03(有战斗,火免,精英200x1,小怪)-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G06-紫晶块-渊下宫-蛇心之地左上03(有战斗,火免,精英200x1,小怪)-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G06-紫晶块-渊下宫-蛇心之地左上03(有战斗,火免,精英200x1,小怪)-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G06-紫晶块-渊下宫-蛇心之地左上03(有战斗,火免,精英200x1,小怪)-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G07-紫晶块-渊下宫-蛇心之地右-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G07-紫晶块-渊下宫-蛇心之地右-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G07-紫晶块-渊下宫-蛇心之地右-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G07-紫晶块-渊下宫-蛇心之地右-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G08-紫晶块-渊下宫-大日御舆-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G08-紫晶块-渊下宫-大日御舆-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G08-紫晶块-渊下宫-大日御舆-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G08-紫晶块-渊下宫-大日御舆-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G09-紫晶块-渊下宫-狹間之街01(有战斗,小怪)-5个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G09-紫晶块-渊下宫-狹間之街01(有战斗,小怪)-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G09-紫晶块-渊下宫-狹間之街01(有战斗,小怪)-5个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G09-紫晶块-渊下宫-狹間之街01(有战斗,小怪)-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G10-紫晶块-渊下宫-狹間之街02(有战斗,火免,精英200x1,小怪)-6个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G10-紫晶块-渊下宫-狹間之街02(有战斗,火免,精英200x1,小怪)-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G10-紫晶块-渊下宫-狹間之街02(有战斗,火免,精英200x1,小怪)-6个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G10-紫晶块-渊下宫-狹間之街02(有战斗,火免,精英200x1,小怪)-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G11-紫晶块-渊下宫-常夜灵庙下-2个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G11-紫晶块-渊下宫-常夜灵庙下-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G11-紫晶块-渊下宫-常夜灵庙下-2个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G11-紫晶块-渊下宫-常夜灵庙下-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G12-紫晶块-渊下宫-常夜灵庙上-4个.json b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G12-紫晶块-渊下宫-常夜灵庙上-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G12-紫晶块-渊下宫-常夜灵庙上-4个.json rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/G12-紫晶块-渊下宫-常夜灵庙上-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/README.md b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/README.md similarity index 97% rename from repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/README.md rename to repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/README.md index 0ec54043e..e4194ec98 100644 --- a/repo/js/AAA-AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/README.md +++ b/repo/js/AutoMine/assets/矿物/紫晶块/紫晶块[大剑]@蜜柑魚/README.md @@ -1,57 +1,57 @@ -# 紫晶块之大剑矿闻录 注意事项 -## 一、前言 -- 本地图追蹤以稻妻、渊下宫 解谜全解 与 宝箱全收集 情况下制作 -- 制作脚本时,以**钟剑诺艾尔**作为行走位 -- 部份地图追蹤會使用玛薇卡趕路 -- 队伍 : 诺艾尔、玛薇卡、爱可菲、芭芭拉 - -- 预期用时 1小时35分~40分 / 235~275 个 - -## 二、配置简介 -- 生存位技能 : 芭芭拉 -- CD : `300` - -- 以下为战斗脚本 - - ``` - 诺艾尔 e - 玛薇卡 e - 爱可菲 attack(0.01),e,attack(0.1),jump,wait(0.2),keypress(q),keydown(W),attack(0.3),keypress(q),keyup(W),attack(0.3),keypress(q),attack(0.1),keydown(S),attack(0.33),keyup(S), wait(0.15), keydown(S), attack(0.66), keyup(S),keypress(q),wait(0.3) - 芭芭拉 attack(0.2),wait(0.3),keypress(e), wait(0.2),keypress(e), click(middle), keypress(q),wait(0.2), keypress(q),keypress(e),wait(0.2), keypress(q),click(middle) ,attack(0.6),charge(0.6),click(middle),keypress(e),wait(0.3) - 玛薇卡 q - ``` - -- 開啟 更快檢查結束戰鬥 -- 自動撿取掉落物 : 關閉 -- 戰鬥超時為`45`秒 -- **战斗脚本 与 战斗超时时间 请以个人配队练度及实力自行调整** - - -## 三、预期数量 - -- **鸣神岛** : 42 - - 鸣神岛 无战斗 = 27 - - 鸣神岛 有战斗 = 15 -- **神无冢** : 35 - - 神无冢 无战斗 = 29 - - 神无冢 有战斗 = 6 -- **八酝岛** : 27 - - 八酝岛 无战斗 = 23 - - 八酝岛 有战斗 = 4 -- **海衹岛** : 24 - - 海衹岛 无战斗 = 20 - - 海衹岛 有战斗 = 4 -- **清籁岛** : 35 - - 清籁岛 无战斗 = 27 - - 清籁岛 有战斗 = 8 -- **鹤观** : 26 - - 鹤观 无战斗 = 24 - - 鹤观 有战斗 = 2 -- **渊下宫** : 46 - - 渊下宫 无战斗 = 20 - - 渊下宫 有战斗 = 26 - -**预期总计:235 个** - - +# 紫晶块之大剑矿闻录 注意事项 +## 一、前言 +- 本地图追蹤以稻妻、渊下宫 解谜全解 与 宝箱全收集 情况下制作 +- 制作脚本时,以**钟剑诺艾尔**作为行走位 +- 部份地图追蹤會使用玛薇卡趕路 +- 队伍 : 诺艾尔、玛薇卡、爱可菲、芭芭拉 + +- 预期用时 1小时35分~40分 / 235~275 个 + +## 二、配置简介 +- 生存位技能 : 芭芭拉 +- CD : `300` + +- 以下为战斗脚本 + + ``` + 诺艾尔 e + 玛薇卡 e + 爱可菲 attack(0.01),e,attack(0.1),jump,wait(0.2),keypress(q),keydown(W),attack(0.3),keypress(q),keyup(W),attack(0.3),keypress(q),attack(0.1),keydown(S),attack(0.33),keyup(S), wait(0.15), keydown(S), attack(0.66), keyup(S),keypress(q),wait(0.3) + 芭芭拉 attack(0.2),wait(0.3),keypress(e), wait(0.2),keypress(e), click(middle), keypress(q),wait(0.2), keypress(q),keypress(e),wait(0.2), keypress(q),click(middle) ,attack(0.6),charge(0.6),click(middle),keypress(e),wait(0.3) + 玛薇卡 q + ``` + +- 開啟 更快檢查結束戰鬥 +- 自動撿取掉落物 : 關閉 +- 戰鬥超時為`45`秒 +- **战斗脚本 与 战斗超时时间 请以个人配队练度及实力自行调整** + + +## 三、预期数量 + +- **鸣神岛** : 42 + - 鸣神岛 无战斗 = 27 + - 鸣神岛 有战斗 = 15 +- **神无冢** : 35 + - 神无冢 无战斗 = 29 + - 神无冢 有战斗 = 6 +- **八酝岛** : 27 + - 八酝岛 无战斗 = 23 + - 八酝岛 有战斗 = 4 +- **海衹岛** : 24 + - 海衹岛 无战斗 = 20 + - 海衹岛 有战斗 = 4 +- **清籁岛** : 35 + - 清籁岛 无战斗 = 27 + - 清籁岛 有战斗 = 8 +- **鹤观** : 26 + - 鹤观 无战斗 = 24 + - 鹤观 有战斗 = 2 +- **渊下宫** : 46 + - 渊下宫 无战斗 = 20 + - 渊下宫 有战斗 = 26 + +**预期总计:235 个** + + **去除战斗脚本 (-67) = 168个** \ No newline at end of file diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A00-塞洛海原(学习螃蟹技能).json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A00-塞洛海原(学习螃蟹技能).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A00-塞洛海原(学习螃蟹技能).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A00-塞洛海原(学习螃蟹技能).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A01-塞洛海原左侧-18个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A01-塞洛海原左侧-18个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A01-塞洛海原左侧-18个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A01-塞洛海原左侧-18个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A02-塞洛海原右侧-8个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A02-塞洛海原右侧-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A02-塞洛海原右侧-8个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A02-塞洛海原右侧-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A03-塔拉塔海谷-6个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A03-塔拉塔海谷-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A03-塔拉塔海谷-6个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A03-塔拉塔海谷-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A04-塔拉塔海谷上方-16个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A04-塔拉塔海谷上方-16个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A04-塔拉塔海谷上方-16个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A04-塔拉塔海谷上方-16个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A05-塔拉塔海谷下方-3个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A05-塔拉塔海谷下方-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A05-塔拉塔海谷下方-3个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A05-塔拉塔海谷下方-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A06-欧蒂克莱尔左侧-8个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A06-欧蒂克莱尔左侧-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A06-欧蒂克莱尔左侧-8个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A06-欧蒂克莱尔左侧-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A07-欧蒂克莱尔右侧-5个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A07-欧蒂克莱尔右侧-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A07-欧蒂克莱尔右侧-5个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A07-欧蒂克莱尔右侧-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A08-伊黎耶岛地下水脉左分支和右分支-17个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A08-伊黎耶岛地下水脉左分支和右分支-17个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A08-伊黎耶岛地下水脉左分支和右分支-17个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/A08-伊黎耶岛地下水脉左分支和右分支-17个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B01-自体自身之塔左下-4个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B01-自体自身之塔左下-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B01-自体自身之塔左下-4个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B01-自体自身之塔左下-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B02-自体自身之塔右下-3个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B02-自体自身之塔右下-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B02-自体自身之塔右下-3个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B02-自体自身之塔右下-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B03-自体自身之塔右上-3个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B03-自体自身之塔右上-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B03-自体自身之塔右上-3个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B03-自体自身之塔右上-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B04-卡布狄斯堡遗迹右下-10个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B04-卡布狄斯堡遗迹右下-10个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B04-卡布狄斯堡遗迹右下-10个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B04-卡布狄斯堡遗迹右下-10个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B05-卡布狄斯堡遗迹右侧-17个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B05-卡布狄斯堡遗迹右侧-17个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B05-卡布狄斯堡遗迹右侧-17个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/B05-卡布狄斯堡遗迹右侧-17个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C01-枫丹动能工程科学研究院区左侧-8个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C01-枫丹动能工程科学研究院区左侧-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C01-枫丹动能工程科学研究院区左侧-8个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C01-枫丹动能工程科学研究院区左侧-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C02-枫丹动能工程科学研究院区右侧-10个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C02-枫丹动能工程科学研究院区右侧-10个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C02-枫丹动能工程科学研究院区右侧-10个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C02-枫丹动能工程科学研究院区右侧-10个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C03-黎翡区上方传送锚点上面-7个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C03-黎翡区上方传送锚点上面-7个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C03-黎翡区上方传送锚点上面-7个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C03-黎翡区上方传送锚点上面-7个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C04-黎翡区上方传送锚点左侧-11个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C04-黎翡区上方传送锚点左侧-11个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C04-黎翡区上方传送锚点左侧-11个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C04-黎翡区上方传送锚点左侧-11个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C05-黎翡区下方传送锚点低处-4个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C05-黎翡区下方传送锚点低处-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C05-黎翡区下方传送锚点低处-4个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C05-黎翡区下方传送锚点低处-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C06-黎翡区下方传送锚点高处-12个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C06-黎翡区下方传送锚点高处-12个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C06-黎翡区下方传送锚点高处-12个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C06-黎翡区下方传送锚点高处-12个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C07-黎翡区下方传送锚点右侧-8个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C07-黎翡区下方传送锚点右侧-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C07-黎翡区下方传送锚点右侧-8个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C07-黎翡区下方传送锚点右侧-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C08-黎翡区下方传送锚点右下角至水下洞窟-12个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C08-黎翡区下方传送锚点右下角至水下洞窟-12个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C08-黎翡区下方传送锚点右下角至水下洞窟-12个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/C08-黎翡区下方传送锚点右下角至水下洞窟-12个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D01-苍晶区七天神像下方-8个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D01-苍晶区七天神像下方-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D01-苍晶区七天神像下方-8个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D01-苍晶区七天神像下方-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D02-优兰妮亚湖左侧水坑-5个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D02-优兰妮亚湖左侧水坑-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D02-优兰妮亚湖左侧水坑-5个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D02-优兰妮亚湖左侧水坑-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D03-卡布狄斯堡遗迹右侧水坑-8个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D03-卡布狄斯堡遗迹右侧水坑-8个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D03-卡布狄斯堡遗迹右侧水坑-8个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D03-卡布狄斯堡遗迹右侧水坑-8个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D04-柔灯港上方-13个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D04-柔灯港上方-13个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D04-柔灯港上方-13个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D04-柔灯港上方-13个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D05-莫尔泰区七天神像右侧-17个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D05-莫尔泰区七天神像右侧-17个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D05-莫尔泰区七天神像右侧-17个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D05-莫尔泰区七天神像右侧-17个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D06-柔灯港左侧-33个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D06-柔灯港左侧-33个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D06-柔灯港左侧-33个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D06-柔灯港左侧-33个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D07-伊黎耶岛地下水脉上分支和下分支-15个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D07-伊黎耶岛地下水脉上分支和下分支-15个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D07-伊黎耶岛地下水脉上分支和下分支-15个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/D07-伊黎耶岛地下水脉上分支和下分支-15个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/README.md b/repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/README.md similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/README.md rename to repo/js/AutoMine/assets/矿物/萃凝晶/枫丹水下@芝士贝果/README.md diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A01-萃凝晶-枫丹-新枫丹科学院-1(火神赶路-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A01-萃凝晶-枫丹-新枫丹科学院-1(火神赶路-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A01-萃凝晶-枫丹-新枫丹科学院-1(火神赶路-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A01-萃凝晶-枫丹-新枫丹科学院-1(火神赶路-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A02-萃凝晶-枫丹-新枫丹科学院-2(火神赶路-5个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A02-萃凝晶-枫丹-新枫丹科学院-2(火神赶路-5个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A02-萃凝晶-枫丹-新枫丹科学院-2(火神赶路-5个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A02-萃凝晶-枫丹-新枫丹科学院-2(火神赶路-5个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A03-萃凝晶-枫丹-新枫丹科学院-3(有战斗-3个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A03-萃凝晶-枫丹-新枫丹科学院-3(有战斗-3个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A03-萃凝晶-枫丹-新枫丹科学院-3(有战斗-3个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A03-萃凝晶-枫丹-新枫丹科学院-3(有战斗-3个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A04-萃凝晶-枫丹-新枫丹科学院-4(火神赶路-有战斗-14个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A04-萃凝晶-枫丹-新枫丹科学院-4(火神赶路-有战斗-14个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A04-萃凝晶-枫丹-新枫丹科学院-4(火神赶路-有战斗-14个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A04-萃凝晶-枫丹-新枫丹科学院-4(火神赶路-有战斗-14个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A05-萃凝晶-枫丹-新枫丹科学院-5(火神赶路-有战斗12个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A05-萃凝晶-枫丹-新枫丹科学院-5(火神赶路-有战斗12个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A05-萃凝晶-枫丹-新枫丹科学院-5(火神赶路-有战斗12个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A05-萃凝晶-枫丹-新枫丹科学院-5(火神赶路-有战斗12个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A06-萃凝晶-枫丹-新枫丹科学院-6(火神赶路-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A06-萃凝晶-枫丹-新枫丹科学院-6(火神赶路-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A06-萃凝晶-枫丹-新枫丹科学院-6(火神赶路-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A06-萃凝晶-枫丹-新枫丹科学院-6(火神赶路-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A07-萃凝晶-枫丹-新枫丹科学院-7(火神赶路-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A07-萃凝晶-枫丹-新枫丹科学院-7(火神赶路-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A07-萃凝晶-枫丹-新枫丹科学院-7(火神赶路-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A07-萃凝晶-枫丹-新枫丹科学院-7(火神赶路-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A08-萃凝晶-枫丹-新枫丹科学院-8(火神赶路-12个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A08-萃凝晶-枫丹-新枫丹科学院-8(火神赶路-12个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A08-萃凝晶-枫丹-新枫丹科学院-8(火神赶路-12个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A08-萃凝晶-枫丹-新枫丹科学院-8(火神赶路-12个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A09-萃凝晶-枫丹-新枫丹科学院-9(火神赶路-3个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A09-萃凝晶-枫丹-新枫丹科学院-9(火神赶路-3个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A09-萃凝晶-枫丹-新枫丹科学院-9(火神赶路-3个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A09-萃凝晶-枫丹-新枫丹科学院-9(火神赶路-3个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A10-萃凝晶-枫丹-中央实验室遗址-1(火神赶路-有战斗-6个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A10-萃凝晶-枫丹-中央实验室遗址-1(火神赶路-有战斗-6个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A10-萃凝晶-枫丹-中央实验室遗址-1(火神赶路-有战斗-6个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A10-萃凝晶-枫丹-中央实验室遗址-1(火神赶路-有战斗-6个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A11-萃凝晶-枫丹-中央实验室遗址-2(火神赶路-有战斗-8个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A11-萃凝晶-枫丹-中央实验室遗址-2(火神赶路-有战斗-8个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A11-萃凝晶-枫丹-中央实验室遗址-2(火神赶路-有战斗-8个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A11-萃凝晶-枫丹-中央实验室遗址-2(火神赶路-有战斗-8个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A12-萃凝晶-枫丹-中央实验室遗址-3(火神赶路-5个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A12-萃凝晶-枫丹-中央实验室遗址-3(火神赶路-5个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A12-萃凝晶-枫丹-中央实验室遗址-3(火神赶路-5个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A12-萃凝晶-枫丹-中央实验室遗址-3(火神赶路-5个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A13-萃凝晶-枫丹-下落BOOS-1(火神赶路-9个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A13-萃凝晶-枫丹-下落BOOS-1(火神赶路-9个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A13-萃凝晶-枫丹-下落BOOS-1(火神赶路-9个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A13-萃凝晶-枫丹-下落BOOS-1(火神赶路-9个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A14-萃凝晶-枫丹-下落BOOS-2 (10个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A14-萃凝晶-枫丹-下落BOOS-2 (10个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A14-萃凝晶-枫丹-下落BOOS-2 (10个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A14-萃凝晶-枫丹-下落BOOS-2 (10个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A15-萃凝晶-枫丹-枫丹厅北侧-1(火神赶路-14个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A15-萃凝晶-枫丹-枫丹厅北侧-1(火神赶路-14个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A15-萃凝晶-枫丹-枫丹厅北侧-1(火神赶路-14个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A15-萃凝晶-枫丹-枫丹厅北侧-1(火神赶路-14个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A16-萃凝晶-枫丹-枫丹厅北侧-2(火神赶路-8个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A16-萃凝晶-枫丹-枫丹厅北侧-2(火神赶路-8个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A16-萃凝晶-枫丹-枫丹厅北侧-2(火神赶路-8个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A16-萃凝晶-枫丹-枫丹厅北侧-2(火神赶路-8个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A17-萃凝晶-枫丹-枫丹厅北侧-3(火神赶路-有战斗-13个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A17-萃凝晶-枫丹-枫丹厅北侧-3(火神赶路-有战斗-13个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A17-萃凝晶-枫丹-枫丹厅北侧-3(火神赶路-有战斗-13个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A17-萃凝晶-枫丹-枫丹厅北侧-3(火神赶路-有战斗-13个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A18-萃凝晶-枫丹-枫丹厅北侧-4 (火神赶路-6个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A18-萃凝晶-枫丹-枫丹厅北侧-4 (火神赶路-6个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A18-萃凝晶-枫丹-枫丹厅北侧-4 (火神赶路-6个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A18-萃凝晶-枫丹-枫丹厅北侧-4 (火神赶路-6个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A19-萃凝晶-枫丹-枫丹厅北侧-5(火神赶路-有战斗-6个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A19-萃凝晶-枫丹-枫丹厅北侧-5(火神赶路-有战斗-6个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A19-萃凝晶-枫丹-枫丹厅北侧-5(火神赶路-有战斗-6个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A19-萃凝晶-枫丹-枫丹厅北侧-5(火神赶路-有战斗-6个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A20-萃凝晶-枫丹-枫丹厅北侧-6(火神赶路-有战斗-9个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A20-萃凝晶-枫丹-枫丹厅北侧-6(火神赶路-有战斗-9个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A20-萃凝晶-枫丹-枫丹厅北侧-6(火神赶路-有战斗-9个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A20-萃凝晶-枫丹-枫丹厅北侧-6(火神赶路-有战斗-9个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A21-萃凝晶-枫丹-露景泉 (火神赶路-6个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A21-萃凝晶-枫丹-露景泉 (火神赶路-6个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A21-萃凝晶-枫丹-露景泉 (火神赶路-6个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A21-萃凝晶-枫丹-露景泉 (火神赶路-6个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A22-萃凝晶-枫丹-茉洁站(火神赶路-有战斗-7个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A22-萃凝晶-枫丹-茉洁站(火神赶路-有战斗-7个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A22-萃凝晶-枫丹-茉洁站(火神赶路-有战斗-7个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A22-萃凝晶-枫丹-茉洁站(火神赶路-有战斗-7个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A23-萃凝晶-枫丹-优兰尼娅湖-1(火神赶路-有战斗-16个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A23-萃凝晶-枫丹-优兰尼娅湖-1(火神赶路-有战斗-16个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A23-萃凝晶-枫丹-优兰尼娅湖-1(火神赶路-有战斗-16个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A23-萃凝晶-枫丹-优兰尼娅湖-1(火神赶路-有战斗-16个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A24-萃凝晶-枫丹-优兰尼娅湖-2 (火神赶路-有战斗-14个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A24-萃凝晶-枫丹-优兰尼娅湖-2 (火神赶路-有战斗-14个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A24-萃凝晶-枫丹-优兰尼娅湖-2 (火神赶路-有战斗-14个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A24-萃凝晶-枫丹-优兰尼娅湖-2 (火神赶路-有战斗-14个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A25-萃凝晶-枫丹-湖中垂柳下侧 (火神赶路-有战斗-5个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A25-萃凝晶-枫丹-湖中垂柳下侧 (火神赶路-有战斗-5个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A25-萃凝晶-枫丹-湖中垂柳下侧 (火神赶路-有战斗-5个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A25-萃凝晶-枫丹-湖中垂柳下侧 (火神赶路-有战斗-5个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A26-萃凝晶-枫丹-幽林雾道北(火神赶路-有战斗-12个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A26-萃凝晶-枫丹-幽林雾道北(火神赶路-有战斗-12个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A26-萃凝晶-枫丹-幽林雾道北(火神赶路-有战斗-12个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A26-萃凝晶-枫丹-幽林雾道北(火神赶路-有战斗-12个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A27-萃凝晶-枫丹-湖中垂柳右侧(火神赶路-有战斗-9个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A27-萃凝晶-枫丹-湖中垂柳右侧(火神赶路-有战斗-9个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A27-萃凝晶-枫丹-湖中垂柳右侧(火神赶路-有战斗-9个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A27-萃凝晶-枫丹-湖中垂柳右侧(火神赶路-有战斗-9个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A28-萃凝晶-枫丹-幽林雾道(火神赶路-有战斗-2个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A28-萃凝晶-枫丹-幽林雾道(火神赶路-有战斗-2个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A28-萃凝晶-枫丹-幽林雾道(火神赶路-有战斗-2个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A28-萃凝晶-枫丹-幽林雾道(火神赶路-有战斗-2个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A29-萃凝晶-枫丹-卡布狄斯堡遗迹(火神赶路-有战斗-12个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A29-萃凝晶-枫丹-卡布狄斯堡遗迹(火神赶路-有战斗-12个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A29-萃凝晶-枫丹-卡布狄斯堡遗迹(火神赶路-有战斗-12个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A29-萃凝晶-枫丹-卡布狄斯堡遗迹(火神赶路-有战斗-12个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A30-萃凝晶-枫丹-秋分山西侧北(火神赶路-有战斗-7个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A30-萃凝晶-枫丹-秋分山西侧北(火神赶路-有战斗-7个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A30-萃凝晶-枫丹-秋分山西侧北(火神赶路-有战斗-7个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A30-萃凝晶-枫丹-秋分山西侧北(火神赶路-有战斗-7个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A31-萃凝晶-枫丹-厄里那斯-1(火神赶路-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A31-萃凝晶-枫丹-厄里那斯-1(火神赶路-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A31-萃凝晶-枫丹-厄里那斯-1(火神赶路-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A31-萃凝晶-枫丹-厄里那斯-1(火神赶路-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A32-萃凝晶-枫丹-厄里那斯-2(火神赶路-有战斗-水免-10个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A32-萃凝晶-枫丹-厄里那斯-2(火神赶路-有战斗-水免-10个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A32-萃凝晶-枫丹-厄里那斯-2(火神赶路-有战斗-水免-10个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A32-萃凝晶-枫丹-厄里那斯-2(火神赶路-有战斗-水免-10个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A33-萃凝晶-枫丹-苍晶区南-1(火神赶路-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A33-萃凝晶-枫丹-苍晶区南-1(火神赶路-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A33-萃凝晶-枫丹-苍晶区南-1(火神赶路-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A33-萃凝晶-枫丹-苍晶区南-1(火神赶路-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A34-萃凝晶-枫丹-苍晶区南-2(火神赶路-有战斗-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A34-萃凝晶-枫丹-苍晶区南-2(火神赶路-有战斗-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A34-萃凝晶-枫丹-苍晶区南-2(火神赶路-有战斗-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A34-萃凝晶-枫丹-苍晶区南-2(火神赶路-有战斗-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A35-萃凝晶-枫丹-苍晶区南-3(火神赶路-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A35-萃凝晶-枫丹-苍晶区南-3(火神赶路-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A35-萃凝晶-枫丹-苍晶区南-3(火神赶路-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A35-萃凝晶-枫丹-苍晶区南-3(火神赶路-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A36-萃凝晶-枫丹-罪祸的终末南(火神赶路-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A36-萃凝晶-枫丹-罪祸的终末南(火神赶路-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A36-萃凝晶-枫丹-罪祸的终末南(火神赶路-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A36-萃凝晶-枫丹-罪祸的终末南(火神赶路-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A37-萃凝晶-枫丹-厄里那斯内部北区.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A37-萃凝晶-枫丹-厄里那斯内部北区.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A37-萃凝晶-枫丹-厄里那斯内部北区.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A37-萃凝晶-枫丹-厄里那斯内部北区.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A38-萃凝晶-枫丹-幽林雾道上方山洞(有战斗-4个).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A38-萃凝晶-枫丹-幽林雾道上方山洞(有战斗-4个).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A38-萃凝晶-枫丹-幽林雾道上方山洞(有战斗-4个).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/A38-萃凝晶-枫丹-幽林雾道上方山洞(有战斗-4个).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B01-萃凝晶-纳塔-万火之瓯01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B01-萃凝晶-纳塔-万火之瓯01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B01-萃凝晶-纳塔-万火之瓯01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B01-萃凝晶-纳塔-万火之瓯01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B02-萃凝晶-纳塔-万火之瓯02.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B02-萃凝晶-纳塔-万火之瓯02.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B02-萃凝晶-纳塔-万火之瓯02.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B02-萃凝晶-纳塔-万火之瓯02.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B03-萃凝晶-纳塔-万火之瓯03.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B03-萃凝晶-纳塔-万火之瓯03.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B03-萃凝晶-纳塔-万火之瓯03.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B03-萃凝晶-纳塔-万火之瓯03.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B04-萃凝晶-纳塔-烟迷主(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B04-萃凝晶-纳塔-烟迷主(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B04-萃凝晶-纳塔-烟迷主(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B04-萃凝晶-纳塔-烟迷主(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B05-萃凝晶-纳塔-烟迷主上-5个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B05-萃凝晶-纳塔-烟迷主上-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B05-萃凝晶-纳塔-烟迷主上-5个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B05-萃凝晶-纳塔-烟迷主上-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B06-萃凝晶-纳塔-镜壁山.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B06-萃凝晶-纳塔-镜壁山.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B06-萃凝晶-纳塔-镜壁山.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B06-萃凝晶-纳塔-镜壁山.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B07-萃凝晶-纳塔-镜壁山七天神像01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B07-萃凝晶-纳塔-镜壁山七天神像01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B07-萃凝晶-纳塔-镜壁山七天神像01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B07-萃凝晶-纳塔-镜壁山七天神像01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B08-萃凝晶-纳塔-镜壁山七天神像02(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B08-萃凝晶-纳塔-镜壁山七天神像02(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B08-萃凝晶-纳塔-镜壁山七天神像02(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B08-萃凝晶-纳塔-镜壁山七天神像02(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B09-萃凝晶-纳塔-翘枝崖.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B09-萃凝晶-纳塔-翘枝崖.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B09-萃凝晶-纳塔-翘枝崖.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B09-萃凝晶-纳塔-翘枝崖.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B10-萃凝晶-纳塔-花羽会(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B10-萃凝晶-纳塔-花羽会(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B10-萃凝晶-纳塔-花羽会(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B10-萃凝晶-纳塔-花羽会(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B11-萃凝晶-纳塔-花羽会01-6(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B11-萃凝晶-纳塔-花羽会01-6(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B11-萃凝晶-纳塔-花羽会01-6(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B11-萃凝晶-纳塔-花羽会01-6(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B12-萃凝晶-纳塔-花羽会02(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B12-萃凝晶-纳塔-花羽会02(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B12-萃凝晶-纳塔-花羽会02(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B12-萃凝晶-纳塔-花羽会02(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B13-萃凝晶-纳塔-花羽会03(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B13-萃凝晶-纳塔-花羽会03(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B13-萃凝晶-纳塔-花羽会03(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B13-萃凝晶-纳塔-花羽会03(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B14-萃凝晶-纳塔-花羽会04.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B14-萃凝晶-纳塔-花羽会04.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B14-萃凝晶-纳塔-花羽会04.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B14-萃凝晶-纳塔-花羽会04.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B15-萃凝晶-纳塔-柴薪之丘01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B15-萃凝晶-纳塔-柴薪之丘01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B15-萃凝晶-纳塔-柴薪之丘01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B15-萃凝晶-纳塔-柴薪之丘01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B16-萃凝晶-纳塔-坚岩隘谷01(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B16-萃凝晶-纳塔-坚岩隘谷01(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B16-萃凝晶-纳塔-坚岩隘谷01(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B16-萃凝晶-纳塔-坚岩隘谷01(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B17-萃凝晶-纳塔-坚岩隘谷02(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B17-萃凝晶-纳塔-坚岩隘谷02(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B17-萃凝晶-纳塔-坚岩隘谷02(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B17-萃凝晶-纳塔-坚岩隘谷02(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B18-萃凝晶-纳塔-坚岩隘谷03(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B18-萃凝晶-纳塔-坚岩隘谷03(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B18-萃凝晶-纳塔-坚岩隘谷03(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B18-萃凝晶-纳塔-坚岩隘谷03(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B19-萃凝晶-纳塔-坚岩隘谷04.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B19-萃凝晶-纳塔-坚岩隘谷04.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B19-萃凝晶-纳塔-坚岩隘谷04.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B19-萃凝晶-纳塔-坚岩隘谷04.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B20-萃凝晶-纳塔-坚岩隘谷七天神像01(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B20-萃凝晶-纳塔-坚岩隘谷七天神像01(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B20-萃凝晶-纳塔-坚岩隘谷七天神像01(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B20-萃凝晶-纳塔-坚岩隘谷七天神像01(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B21-萃凝晶-纳塔-坚岩隘谷七天神像02.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B21-萃凝晶-纳塔-坚岩隘谷七天神像02.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B21-萃凝晶-纳塔-坚岩隘谷七天神像02.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B21-萃凝晶-纳塔-坚岩隘谷七天神像02.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B22-萃凝晶-纳塔-回声之子七天神像-6(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B22-萃凝晶-纳塔-回声之子七天神像-6(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B22-萃凝晶-纳塔-回声之子七天神像-6(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B22-萃凝晶-纳塔-回声之子七天神像-6(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B23-萃凝晶-纳塔-隆掘坡-2个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B23-萃凝晶-纳塔-隆掘坡-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B23-萃凝晶-纳塔-隆掘坡-2个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B23-萃凝晶-纳塔-隆掘坡-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B24-萃凝晶-纳塔-隆掘坡蕴火的幽墟.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B24-萃凝晶-纳塔-隆掘坡蕴火的幽墟.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B24-萃凝晶-纳塔-隆掘坡蕴火的幽墟.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B24-萃凝晶-纳塔-隆掘坡蕴火的幽墟.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B25-萃凝晶-纳塔-踞石山01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B25-萃凝晶-纳塔-踞石山01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B25-萃凝晶-纳塔-踞石山01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B25-萃凝晶-纳塔-踞石山01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B26-萃凝晶-纳塔-踞石山02.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B26-萃凝晶-纳塔-踞石山02.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B26-萃凝晶-纳塔-踞石山02.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B26-萃凝晶-纳塔-踞石山02.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B27-萃凝晶-纳塔-踞石山03(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B27-萃凝晶-纳塔-踞石山03(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B27-萃凝晶-纳塔-踞石山03(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B27-萃凝晶-纳塔-踞石山03(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B28-萃凝晶-纳塔-踞石山04-3个(有战斗、高危).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B28-萃凝晶-纳塔-踞石山04-3个(有战斗、高危).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B28-萃凝晶-纳塔-踞石山04-3个(有战斗、高危).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B28-萃凝晶-纳塔-踞石山04-3个(有战斗、高危).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B29-萃凝晶-纳塔-彩石顶01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B29-萃凝晶-纳塔-彩石顶01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B29-萃凝晶-纳塔-彩石顶01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B29-萃凝晶-纳塔-彩石顶01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B30-萃凝晶-纳塔-彩石顶02-3个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B30-萃凝晶-纳塔-彩石顶02-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B30-萃凝晶-纳塔-彩石顶02-3个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B30-萃凝晶-纳塔-彩石顶02-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B31-萃凝晶-纳塔-彩石顶02-11个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B31-萃凝晶-纳塔-彩石顶02-11个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B31-萃凝晶-纳塔-彩石顶02-11个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B31-萃凝晶-纳塔-彩石顶02-11个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B32-萃凝晶-纳塔-彩石顶02-3个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B32-萃凝晶-纳塔-彩石顶02-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B32-萃凝晶-纳塔-彩石顶02-3个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B32-萃凝晶-纳塔-彩石顶02-3个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B33-萃凝晶-纳塔-悬木人-5个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B33-萃凝晶-纳塔-悬木人-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B33-萃凝晶-纳塔-悬木人-5个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B33-萃凝晶-纳塔-悬木人-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B34-萃凝晶-纳塔-溶水域01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B34-萃凝晶-纳塔-溶水域01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B34-萃凝晶-纳塔-溶水域01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B34-萃凝晶-纳塔-溶水域01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B35-萃凝晶-纳塔-溶水域02.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B35-萃凝晶-纳塔-溶水域02.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B35-萃凝晶-纳塔-溶水域02.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B35-萃凝晶-纳塔-溶水域02.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B36-萃凝晶-纳塔-溶水域虹灵的净土.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B36-萃凝晶-纳塔-溶水域虹灵的净土.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B36-萃凝晶-纳塔-溶水域虹灵的净土.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B36-萃凝晶-纳塔-溶水域虹灵的净土.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B37-萃凝晶-纳塔-涌流地01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B37-萃凝晶-纳塔-涌流地01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B37-萃凝晶-纳塔-涌流地01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B37-萃凝晶-纳塔-涌流地01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B38-萃凝晶-纳塔-深渊古瞭望所01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B38-萃凝晶-纳塔-深渊古瞭望所01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B38-萃凝晶-纳塔-深渊古瞭望所01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B38-萃凝晶-纳塔-深渊古瞭望所01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B39-萃凝晶-纳塔-深渊古瞭望所02(有战斗).json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B39-萃凝晶-纳塔-深渊古瞭望所02(有战斗).json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B39-萃凝晶-纳塔-深渊古瞭望所02(有战斗).json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B39-萃凝晶-纳塔-深渊古瞭望所02(有战斗).json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B40-萃凝晶-纳塔-奥奇卡纳塔-5个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B40-萃凝晶-纳塔-奥奇卡纳塔-5个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B40-萃凝晶-纳塔-奥奇卡纳塔-5个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B40-萃凝晶-纳塔-奥奇卡纳塔-5个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B41-萃凝晶-纳塔-奥奇卡纳塔流灰之街-4个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B41-萃凝晶-纳塔-奥奇卡纳塔流灰之街-4个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B41-萃凝晶-纳塔-奥奇卡纳塔流灰之街-4个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B41-萃凝晶-纳塔-奥奇卡纳塔流灰之街-4个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B42-萃凝晶-纳塔-奥奇卡纳塔下01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B42-萃凝晶-纳塔-奥奇卡纳塔下01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B42-萃凝晶-纳塔-奥奇卡纳塔下01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B42-萃凝晶-纳塔-奥奇卡纳塔下01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B43-萃凝晶-纳塔-奥奇卡纳塔右边小岛01.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B43-萃凝晶-纳塔-奥奇卡纳塔右边小岛01.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B43-萃凝晶-纳塔-奥奇卡纳塔右边小岛01.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B43-萃凝晶-纳塔-奥奇卡纳塔右边小岛01.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B44-萃凝晶-纳塔-安绕之野入口01-2个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B44-萃凝晶-纳塔-安绕之野入口01-2个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B44-萃凝晶-纳塔-安绕之野入口01-2个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B44-萃凝晶-纳塔-安绕之野入口01-2个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B45-萃凝晶-纳塔-安绕之野入口02-6个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B45-萃凝晶-纳塔-安绕之野入口02-6个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B45-萃凝晶-纳塔-安绕之野入口02-6个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B45-萃凝晶-纳塔-安绕之野入口02-6个.json diff --git a/repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B46-萃凝晶-纳塔-安绕之野入口03-3个.json b/repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B46-萃凝晶-纳塔-安绕之野入口03-3个.json similarity index 100% rename from repo/js/AAA-AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B46-萃凝晶-纳塔-安绕之野入口03-3个.json rename to repo/js/AutoMine/assets/矿物/萃凝晶/萃凝晶-火神赶路-大剑@无限不循环/B46-萃凝晶-纳塔-安绕之野入口03-3个.json diff --git a/repo/js/AAA-AutoMine/main.js b/repo/js/AutoMine/main.js similarity index 97% rename from repo/js/AAA-AutoMine/main.js rename to repo/js/AutoMine/main.js index c578a6252..2a46aaf01 100644 --- a/repo/js/AAA-AutoMine/main.js +++ b/repo/js/AutoMine/main.js @@ -1,389 +1,389 @@ -function get_exclude_tags() { - var tags = []; - if (settings.exclude_fights) { - tags.push("fight"); - } - if (settings.exclude_natlan) { - tags.push("natlan"); - } - if (settings.exclude_fontaine_underwater) { - tags.push("fontaine underwater"); - } - if (settings.exclude_fontaine_terrestrial) { - tags.push("fontaine terrestrial"); - } - if (settings.exclude_sumeru) { - tags.push("sumeru"); - } - if (settings.exclude_inazuma) { - tags.push("inazuma"); - } - if (settings.exclude_liyue) { - tags.push("liyue"); - } - if (settings.exclude_chasm_underground) { - tags.push("chasm underground"); - } - if (settings.exclude_mondstadt) { - tags.push("mondstadt"); - } - if (settings.exclude_crystal_chunks) { - tags.push("crystal chunk"); - } - if (settings.exclude_condessence_crystals) { - tags.push("condessence crystal"); - } - if (settings.exclude_amethyst_lumps) { - tags.push("amethyst lump"); - } - return tags; -} - -function get_profile_name() { - if (settings.profile_id.length === 0) { - return null; - } - return settings.profile_id; -} - -const filename_to_path_map = {}; - -function load_filename_to_path_map() { - var all_paths = []; - const read_dir = (path) => { - for (const i of file.readPathSync(path)) { - if (file.isFolder(i)) { - read_dir(i); - } else { - all_paths.push(i); - } - } - }; - read_dir("assets/矿物"); - for (const i of all_paths) { - const filename = i.replace(/^.*[\\/]/, ""); - filename_to_path_map[filename] = i; - } -} - -var persistent_data = {}; - -function load_persistent_data() { - const file_content = file.readTextSync("records/persistent_data.json"); - if (file_content.length !== 0) { - persistent_data = JSON.parse(file_content); - } -} - -const disabled_paths = new Set(); - -function load_disabled_paths() { - const file_content = file.readTextSync("assets/disabled_paths.txt"); - for (var l of file_content.split("\n")) { - l = l.trim(); - if (l.length === 0) { - continue; - } - if (l.startsWith("//") || l.startsWith("#")) { - continue; - } - disabled_paths.add(l); - } -} - -async function flush_persistent_data() { - await file.writeText("records/persistent_data.json", JSON.stringify(persistent_data, null, " ")); -} - -async function mark_task_finished(task_name) { - const profile_name = get_profile_name(); - const profile_key = !profile_name ? "default-profile" : ("profile-" + profile_name); - if (!persistent_data.hasOwnProperty(profile_key)) { - persistent_data[profile_key] = {}; - } - persistent_data[profile_key][task_name] = { - "last_run_time": Date.now(), - }; - await flush_persistent_data(); -} - -function get_task_last_run_time(task_name) { - const profile_name = get_profile_name(); - const profile_key = !profile_name ? "default-profile" : ("profile-" + profile_name); - return persistent_data[profile_key]?.[task_name]?.last_run_time || 0; -} - -function is_ore_respawned(t) { - t /= 1000; - var t0 = Math.floor(t / 86400) * 86400 + 57600; - if (t0 > t) { - t0 -= 86400; - } - const respawn_time = t0 + 86400 * 3; - return respawn_time < Date.now() / 1000; -} - -function get_some_tasks() { - const statistics = JSON.parse(file.readTextSync("assets/statistics.json")); - const exclude_tags = new Set(get_exclude_tags()); - var filtered_statistics = []; - for (const [key, value] of Object.entries(statistics)) { - if (disabled_paths.has(key)) { - continue; - } - if (value.tags.some(i => exclude_tags.has(i))) { - continue; - } - if (value.statistics.avg_num_defeats > 0) { - continue; - } - if (value.statistics.avg_abnormal_exits > 0) { - continue; - } - if (!filename_to_path_map.hasOwnProperty(key)) { - continue; - } - if (!is_ore_respawned(get_task_last_run_time(key))) { - log.debug("{name} not respawned, skip", key); - continue; - } - value.statistics.avg_yield_per_min = value.statistics.avg_yield / value.statistics.avg_time_consumed * 60; - filtered_statistics.push([key, value]); - } - filtered_statistics.sort((a, b) => - b[1].statistics.avg_yield_per_min - a[1].statistics.avg_yield_per_min - ); - - // We don't want to teleport around all the time. So add some spacial affinity here. - const look_ahead_num = 20; - var sorted_filtered_statistics = []; - for (var i = 0; i < filtered_statistics.length; ++i) { - if (!filtered_statistics[i]) { - continue; - } - const filename = filtered_statistics[i][0]; - const value = filtered_statistics[i][1]; - const group_name = value.group; - sorted_filtered_statistics.push([filename, value]); - filtered_statistics[i] = null; - for (var j = i + 1; j <= i + look_ahead_num && j < filtered_statistics.length; ++j) { - if (!filtered_statistics[j]) { - continue; - } - const filename2 = filtered_statistics[j][0]; - const value2 = filtered_statistics[j][1]; - const group_name2 = value2.group; - if (group_name2 === group_name) { - sorted_filtered_statistics.push([filename2, value2]); - filtered_statistics[j] = null; - } - } - } - if (sorted_filtered_statistics.length === 0) { - return []; - } - const first_out_of_group_index = sorted_filtered_statistics.findIndex(i => i[1].group !== sorted_filtered_statistics[0][1].group); - const first_group = sorted_filtered_statistics.slice(0, first_out_of_group_index); - first_group.sort((a, b) => a[0].localeCompare(b[0])); - return first_group; -} - -async function get_inventory() { - const ore_image_map = { - amethyst_lumps: "assets/images/amethyst_lump.png", - crystal_chunks: "assets/images/crystal_chunk.png", - condessence_crystals: "assets/images/condessence_crystal.png", - }; - - await genshin.returnMainUi(); - keyPress("b") - await sleep(1000); - click(964, 53); - await sleep(500); - - const game_region = captureGameRegion(); - const inventory_result = { - crystal_chunks: 0, - condessence_crystals: 0, - amethyst_lumps: 0 - }; - for (const [name, path] of Object.entries(ore_image_map)) { - let match_obj = RecognitionObject.TemplateMatch(file.ReadImageMatSync(path)); - match_obj.threshold = 0.85; - match_obj.Use3Channels = true; - const match_res = game_region.Find(match_obj); - if (match_res.isExist()) { - log.debug(`Found ${name} image at (${match_res.x}, ${match_res.y})`); - - const text_x = match_res.x - 0; - const text_y = match_res.y + 120; - const text_w = 120; - const text_h = 40; - - const ocr_res = game_region.find(RecognitionObject.ocr(text_x, text_y, text_w, text_h)); - - if (ocr_res) { - inventory_result[name] = Number(ocr_res.text); - } - } - } - await genshin.returnMainUi(); - return inventory_result; -} - -async function run_pathing_script(name, path_state_change, current_states) { - path_state_change ||= {}; - path_state_change.require ||= []; - path_state_change.add ||= []; - path_state_change.sustain ||= []; - - for (const s of path_state_change.require) { - if (!current_states.has(s)) { - log.debug("Trying to get {s}", s); - const statistics = JSON.parse(file.readTextSync("assets/statistics.json")); - for (const [name, data] of Object.entries(statistics)) { - const add_states = data.state_change?.add || []; - if (add_states.includes(s)) { - await run_pathing_script(name, data.state_change, current_states); - break; - } - } - } - } - log.info("运行 {name}", name); - var json_content = await file.readText(filename_to_path_map[name]); - { - // set Noelle mining action - const json_obj = JSON.parse(json_content); - var modified = false; - for (const i of json_obj.positions) { - if (i.action === "mining" && !i.action_params) { - i.action = "combat_script"; - i.action_params = "诺艾尔 attack(2.0)"; - modified = true; - } - } - if (modified) { - log.debug("Patched mining action"); - json_content = JSON.stringify(json_obj); - } - } - const cancellation_token = dispatcher.getLinkedCancellationToken(); - await pathingScript.run(json_content); - if (!cancellation_token.isCancellationRequested) { - await mark_task_finished(name); - } - - current_states = current_states.intersection(new Set(path_state_change.sustain)); - current_states = current_states.union(new Set(path_state_change.add)); -} - - -async function main() { - load_filename_to_path_map(); - load_persistent_data(); - load_disabled_paths(); - dispatcher.addTimer(new RealtimeTimer("AutoPick")); - if (["natlan", "fontaine terrestrial", "sumeru", "inazuma", "liyue", "chasm underground", "mondstadt"].filter(i => !get_exclude_tags().includes(i)).length > 0) { - if (!Array.from(getAvatars()).includes("诺艾尔")) { - log.error("地面挖矿必须带诺艾尔"); - return; - } - } - - const original_inventory = await get_inventory(); - const start_time = Date.now(); - var target_yield = null; - var target_running_minutes = null; - switch (settings.arg_mode) { - case "最速480矿": - target_yield = 480; - break; - case "挖指定数目的矿(手动填写)": - target_yield = Number(settings.arg_amount); - break; - case "挖一段时间(手动填写)": - target_running_minutes = Number(settings.arg_amount); - break; - case "挖所有矿": - break; - default: - log.error("Unknown running mode"); - return; - } - log.info("已有水晶块{a}个,紫晶块{b}个,萃凝晶{c}个", original_inventory.crystal_chunks, original_inventory.amethyst_lumps, original_inventory.condessence_crystals); - if (target_yield !== null) { - log.info("将挖矿{a}个", target_yield); - } else if (target_runnning_minutes !== null) { - log.info("将标挖矿{a}分钟", target_running_minutes); - } else { - log.info("将标挖所有矿"); - } - - var accurate_yield = 0; - var estimated_yield = 0; - var cached_inventory_data = null; - - - var finished = false; - const current_states = new Set(); - while (!finished) { - const tasks = get_some_tasks(); - if (tasks.length === 0) { - log.info("没有更多任务可运行,退出"); - finished = true; - } else { - log.debug("Running {num} tasks as a group", tasks.length); - } - for (const [name, data] of tasks) { - cached_inventory_data = null; - await run_pathing_script(name, data.state_change, current_states); - estimated_yield += data.statistics.avg_yield; - - if (target_yield !== null && estimated_yield >= target_yield + 5) { - const current_inventory = await get_inventory(); - cached_inventory_data = current_inventory; - accurate_yield += current_inventory.crystal_chunks - original_inventory.crystal_chunks; - accurate_yield += current_inventory.condessence_crystals - original_inventory.condessence_crystals; - accurate_yield += current_inventory.amethyst_lumps - original_inventory.amethyst_lumps; - estimated_yield = accurate_yield; - } - if (target_yield !== null && accurate_yield >= target_yield) { - finished = true; - break; - } - if (target_running_minutes !== null) { - const duration_mins = (Date.now() - start_time) / 1000 / 60; - if (duration_mins > target_running_minutes) { - finished = true; - break; - } - } - } - } - - const end_time = Date.now(); - const running_minutes = (end_time - start_time) / 1000 / 60; - var total_yield_str = []; - const latest_inventory = cached_inventory_data ? cached_inventory_data : (await get_inventory()); - if (latest_inventory.crystal_chunks - original_inventory.crystal_chunks) { - total_yield_str.push(`${latest_inventory.crystal_chunks - original_inventory.crystal_chunks}水晶块`); - } - if (latest_inventory.condessence_crystals - original_inventory.condessence_crystals) { - total_yield_str.push(`${latest_inventory.condessence_crystals - original_inventory.condessence_crystals}萃凝晶`); - } - if (latest_inventory.amethyst_lumps - original_inventory.amethyst_lumps) { - total_yield_str.push(`${latest_inventory.amethyst_lumps - original_inventory.amethyst_lumps}紫晶块`); - } - if (total_yield_str.length > 0) { - total_yield_str = "收获" + total_yield_str.join(","); - } else { - total_yield_str = "无收获"; - } - log.info("现有水晶块{a}个,紫晶块{b}个,萃凝晶{c}个", latest_inventory.crystal_chunks, latest_inventory.amethyst_lumps, latest_inventory.condessence_crystals); - log.info("运行{m}分钟,{y}", running_minutes.toFixed(2), total_yield_str); -} - -(async function() { - await main(); +function get_exclude_tags() { + var tags = []; + if (settings.exclude_fights) { + tags.push("fight"); + } + if (settings.exclude_natlan) { + tags.push("natlan"); + } + if (settings.exclude_fontaine_underwater) { + tags.push("fontaine underwater"); + } + if (settings.exclude_fontaine_terrestrial) { + tags.push("fontaine terrestrial"); + } + if (settings.exclude_sumeru) { + tags.push("sumeru"); + } + if (settings.exclude_inazuma) { + tags.push("inazuma"); + } + if (settings.exclude_liyue) { + tags.push("liyue"); + } + if (settings.exclude_chasm_underground) { + tags.push("chasm underground"); + } + if (settings.exclude_mondstadt) { + tags.push("mondstadt"); + } + if (settings.exclude_crystal_chunks) { + tags.push("crystal chunk"); + } + if (settings.exclude_condessence_crystals) { + tags.push("condessence crystal"); + } + if (settings.exclude_amethyst_lumps) { + tags.push("amethyst lump"); + } + return tags; +} + +function get_profile_name() { + if (settings.profile_id.length === 0) { + return null; + } + return settings.profile_id; +} + +const filename_to_path_map = {}; + +function load_filename_to_path_map() { + var all_paths = []; + const read_dir = (path) => { + for (const i of file.readPathSync(path)) { + if (file.isFolder(i)) { + read_dir(i); + } else { + all_paths.push(i); + } + } + }; + read_dir("assets/矿物"); + for (const i of all_paths) { + const filename = i.replace(/^.*[\\/]/, ""); + filename_to_path_map[filename] = i; + } +} + +var persistent_data = {}; + +function load_persistent_data() { + const file_content = file.readTextSync("records/persistent_data.json"); + if (file_content.length !== 0) { + persistent_data = JSON.parse(file_content); + } +} + +const disabled_paths = new Set(); + +function load_disabled_paths() { + const file_content = file.readTextSync("assets/disabled_paths.txt"); + for (var l of file_content.split("\n")) { + l = l.trim(); + if (l.length === 0) { + continue; + } + if (l.startsWith("//") || l.startsWith("#")) { + continue; + } + disabled_paths.add(l); + } +} + +async function flush_persistent_data() { + await file.writeText("records/persistent_data.json", JSON.stringify(persistent_data, null, " ")); +} + +async function mark_task_finished(task_name) { + const profile_name = get_profile_name(); + const profile_key = !profile_name ? "default-profile" : ("profile-" + profile_name); + if (!persistent_data.hasOwnProperty(profile_key)) { + persistent_data[profile_key] = {}; + } + persistent_data[profile_key][task_name] = { + "last_run_time": Date.now(), + }; + await flush_persistent_data(); +} + +function get_task_last_run_time(task_name) { + const profile_name = get_profile_name(); + const profile_key = !profile_name ? "default-profile" : ("profile-" + profile_name); + return persistent_data[profile_key]?.[task_name]?.last_run_time || 0; +} + +function is_ore_respawned(t) { + t /= 1000; + var t0 = Math.floor(t / 86400) * 86400 + 57600; + if (t0 > t) { + t0 -= 86400; + } + const respawn_time = t0 + 86400 * 3; + return respawn_time < Date.now() / 1000; +} + +function get_some_tasks() { + const statistics = JSON.parse(file.readTextSync("assets/statistics.json")); + const exclude_tags = new Set(get_exclude_tags()); + var filtered_statistics = []; + for (const [key, value] of Object.entries(statistics)) { + if (disabled_paths.has(key)) { + continue; + } + if (value.tags.some(i => exclude_tags.has(i))) { + continue; + } + if (value.statistics.avg_num_defeats > 0) { + continue; + } + if (value.statistics.avg_abnormal_exits > 0) { + continue; + } + if (!filename_to_path_map.hasOwnProperty(key)) { + continue; + } + if (!is_ore_respawned(get_task_last_run_time(key))) { + log.debug("{name} not respawned, skip", key); + continue; + } + value.statistics.avg_yield_per_min = value.statistics.avg_yield / value.statistics.avg_time_consumed * 60; + filtered_statistics.push([key, value]); + } + filtered_statistics.sort((a, b) => + b[1].statistics.avg_yield_per_min - a[1].statistics.avg_yield_per_min + ); + + // We don't want to teleport around all the time. So add some spacial affinity here. + const look_ahead_num = 20; + var sorted_filtered_statistics = []; + for (var i = 0; i < filtered_statistics.length; ++i) { + if (!filtered_statistics[i]) { + continue; + } + const filename = filtered_statistics[i][0]; + const value = filtered_statistics[i][1]; + const group_name = value.group; + sorted_filtered_statistics.push([filename, value]); + filtered_statistics[i] = null; + for (var j = i + 1; j <= i + look_ahead_num && j < filtered_statistics.length; ++j) { + if (!filtered_statistics[j]) { + continue; + } + const filename2 = filtered_statistics[j][0]; + const value2 = filtered_statistics[j][1]; + const group_name2 = value2.group; + if (group_name2 === group_name) { + sorted_filtered_statistics.push([filename2, value2]); + filtered_statistics[j] = null; + } + } + } + if (sorted_filtered_statistics.length === 0) { + return []; + } + const first_out_of_group_index = sorted_filtered_statistics.findIndex(i => i[1].group !== sorted_filtered_statistics[0][1].group); + const first_group = sorted_filtered_statistics.slice(0, first_out_of_group_index); + first_group.sort((a, b) => a[0].localeCompare(b[0])); + return first_group; +} + +async function get_inventory() { + const ore_image_map = { + amethyst_lumps: "assets/images/amethyst_lump.png", + crystal_chunks: "assets/images/crystal_chunk.png", + condessence_crystals: "assets/images/condessence_crystal.png", + }; + + await genshin.returnMainUi(); + keyPress("b") + await sleep(1000); + click(964, 53); + await sleep(500); + + const game_region = captureGameRegion(); + const inventory_result = { + crystal_chunks: 0, + condessence_crystals: 0, + amethyst_lumps: 0 + }; + for (const [name, path] of Object.entries(ore_image_map)) { + let match_obj = RecognitionObject.TemplateMatch(file.ReadImageMatSync(path)); + match_obj.threshold = 0.85; + match_obj.Use3Channels = true; + const match_res = game_region.Find(match_obj); + if (match_res.isExist()) { + log.debug(`Found ${name} image at (${match_res.x}, ${match_res.y})`); + + const text_x = match_res.x - 0; + const text_y = match_res.y + 120; + const text_w = 120; + const text_h = 40; + + const ocr_res = game_region.find(RecognitionObject.ocr(text_x, text_y, text_w, text_h)); + + if (ocr_res) { + inventory_result[name] = Number(ocr_res.text); + } + } + } + await genshin.returnMainUi(); + return inventory_result; +} + +async function run_pathing_script(name, path_state_change, current_states) { + path_state_change ||= {}; + path_state_change.require ||= []; + path_state_change.add ||= []; + path_state_change.sustain ||= []; + + for (const s of path_state_change.require) { + if (!current_states.has(s)) { + log.debug("Trying to get {s}", s); + const statistics = JSON.parse(file.readTextSync("assets/statistics.json")); + for (const [name, data] of Object.entries(statistics)) { + const add_states = data.state_change?.add || []; + if (add_states.includes(s)) { + await run_pathing_script(name, data.state_change, current_states); + break; + } + } + } + } + log.info("运行 {name}", name); + var json_content = await file.readText(filename_to_path_map[name]); + { + // set Noelle mining action + const json_obj = JSON.parse(json_content); + var modified = false; + for (const i of json_obj.positions) { + if (i.action === "mining" && !i.action_params) { + i.action = "combat_script"; + i.action_params = "诺艾尔 attack(2.0)"; + modified = true; + } + } + if (modified) { + log.debug("Patched mining action"); + json_content = JSON.stringify(json_obj); + } + } + const cancellation_token = dispatcher.getLinkedCancellationToken(); + await pathingScript.run(json_content); + if (!cancellation_token.isCancellationRequested) { + await mark_task_finished(name); + } + + current_states = current_states.intersection(new Set(path_state_change.sustain)); + current_states = current_states.union(new Set(path_state_change.add)); +} + + +async function main() { + load_filename_to_path_map(); + load_persistent_data(); + load_disabled_paths(); + dispatcher.addTimer(new RealtimeTimer("AutoPick")); + if (["natlan", "fontaine terrestrial", "sumeru", "inazuma", "liyue", "chasm underground", "mondstadt"].filter(i => !get_exclude_tags().includes(i)).length > 0) { + if (!Array.from(getAvatars()).includes("诺艾尔")) { + log.error("地面挖矿必须带诺艾尔"); + return; + } + } + + const original_inventory = await get_inventory(); + const start_time = Date.now(); + var target_yield = null; + var target_running_minutes = null; + switch (settings.arg_mode) { + case "最速480矿": + target_yield = 480; + break; + case "挖指定数目的矿(手动填写)": + target_yield = Number(settings.arg_amount); + break; + case "挖一段时间(手动填写)": + target_running_minutes = Number(settings.arg_amount); + break; + case "挖所有矿": + break; + default: + log.error("Unknown running mode"); + return; + } + log.info("已有水晶块{a}个,紫晶块{b}个,萃凝晶{c}个", original_inventory.crystal_chunks, original_inventory.amethyst_lumps, original_inventory.condessence_crystals); + if (target_yield !== null) { + log.info("将挖矿{a}个", target_yield); + } else if (target_runnning_minutes !== null) { + log.info("将标挖矿{a}分钟", target_running_minutes); + } else { + log.info("将标挖所有矿"); + } + + var accurate_yield = 0; + var estimated_yield = 0; + var cached_inventory_data = null; + + + var finished = false; + const current_states = new Set(); + while (!finished) { + const tasks = get_some_tasks(); + if (tasks.length === 0) { + log.info("没有更多任务可运行,退出"); + finished = true; + } else { + log.debug("Running {num} tasks as a group", tasks.length); + } + for (const [name, data] of tasks) { + cached_inventory_data = null; + await run_pathing_script(name, data.state_change, current_states); + estimated_yield += data.statistics.avg_yield; + + if (target_yield !== null && estimated_yield >= target_yield + 5) { + const current_inventory = await get_inventory(); + cached_inventory_data = current_inventory; + accurate_yield += current_inventory.crystal_chunks - original_inventory.crystal_chunks; + accurate_yield += current_inventory.condessence_crystals - original_inventory.condessence_crystals; + accurate_yield += current_inventory.amethyst_lumps - original_inventory.amethyst_lumps; + estimated_yield = accurate_yield; + } + if (target_yield !== null && accurate_yield >= target_yield) { + finished = true; + break; + } + if (target_running_minutes !== null) { + const duration_mins = (Date.now() - start_time) / 1000 / 60; + if (duration_mins > target_running_minutes) { + finished = true; + break; + } + } + } + } + + const end_time = Date.now(); + const running_minutes = (end_time - start_time) / 1000 / 60; + var total_yield_str = []; + const latest_inventory = cached_inventory_data ? cached_inventory_data : (await get_inventory()); + if (latest_inventory.crystal_chunks - original_inventory.crystal_chunks) { + total_yield_str.push(`${latest_inventory.crystal_chunks - original_inventory.crystal_chunks}水晶块`); + } + if (latest_inventory.condessence_crystals - original_inventory.condessence_crystals) { + total_yield_str.push(`${latest_inventory.condessence_crystals - original_inventory.condessence_crystals}萃凝晶`); + } + if (latest_inventory.amethyst_lumps - original_inventory.amethyst_lumps) { + total_yield_str.push(`${latest_inventory.amethyst_lumps - original_inventory.amethyst_lumps}紫晶块`); + } + if (total_yield_str.length > 0) { + total_yield_str = "收获" + total_yield_str.join(","); + } else { + total_yield_str = "无收获"; + } + log.info("现有水晶块{a}个,紫晶块{b}个,萃凝晶{c}个", latest_inventory.crystal_chunks, latest_inventory.amethyst_lumps, latest_inventory.condessence_crystals); + log.info("运行{m}分钟,{y}", running_minutes.toFixed(2), total_yield_str); +} + +(async function() { + await main(); })(); \ No newline at end of file diff --git a/repo/js/AAA-AutoMine/manifest.json b/repo/js/AutoMine/manifest.json similarity index 96% rename from repo/js/AAA-AutoMine/manifest.json rename to repo/js/AutoMine/manifest.json index b9d8b23e1..f6feec50f 100644 --- a/repo/js/AAA-AutoMine/manifest.json +++ b/repo/js/AutoMine/manifest.json @@ -1,13 +1,13 @@ -{ - "manifest_version": 1, - "name": "矿产资源批发", - "version": "0.1", - "description": "自动记录矿石刷新时间,优先选择效率最高的路线,支持按区域、种类、数量自动规划挖矿路线", - "authors": [ - { - "name": "芝士贝果" - } - ], - "settings_ui": "settings.json", - "main": "main.js" +{ + "manifest_version": 1, + "name": "矿产资源批发", + "version": "0.1", + "description": "自动记录矿石刷新时间,优先选择效率最高的路线,支持按区域、种类、数量自动规划挖矿路线", + "authors": [ + { + "name": "芝士贝果" + } + ], + "settings_ui": "settings.json", + "main": "main.js" } \ No newline at end of file diff --git a/repo/js/AAA-AutoMine/records/placeholder b/repo/js/AutoMine/records/placeholder similarity index 100% rename from repo/js/AAA-AutoMine/records/placeholder rename to repo/js/AutoMine/records/placeholder diff --git a/repo/js/AAA-AutoMine/settings.json b/repo/js/AutoMine/settings.json similarity index 95% rename from repo/js/AAA-AutoMine/settings.json rename to repo/js/AutoMine/settings.json index 58486f119..0f285755d 100644 --- a/repo/js/AAA-AutoMine/settings.json +++ b/repo/js/AutoMine/settings.json @@ -1,84 +1,84 @@ -[ - { - "name": "arg_mode", - "type": "select", - "label": "运行模式👇", - "options": [ - "最速480矿", - "挖指定数目的矿(手动填写)", - "挖一段时间(手动填写)", - "挖所有矿" - ] - }, - { - "name": "arg_amount", - "type": "input-text", - "label": "挖矿的数量或持续的分钟数👇", - }, - { - "name": "exclude_fights", - "type": "checkbox", - "label": "跳过有战斗👇" - }, - { - "name": "exclude_natlan", - "type": "checkbox", - "label": "不挖纳塔👇" - }, - { - "name": "exclude_fontaine_underwater", - "type": "checkbox", - "default": true, - "label": "不挖枫丹水下(详见README)👇" - }, - { - "name": "exclude_fontaine_terrestrial", - "type": "checkbox", - "label": "不挖枫丹地上👇" - }, - { - "name": "exclude_sumeru", - "type": "checkbox", - "label": "不挖须弥👇" - }, - { - "name": "exclude_inazuma", - "type": "checkbox", - "label": "不挖稻妻👇" - }, - { - "name": "exclude_liyue", - "type": "checkbox", - "label": "不挖璃月👇" - }, - { - "name": "exclude_chasm_underground", - "type": "checkbox", - "label": "不挖层岩巨渊地下矿区👇" - }, - { - "name": "exclude_mondstadt", - "type": "checkbox", - "label": "不挖蒙德👇" - }, - { - "name": "exclude_crystal_chunks", - "type": "checkbox", - "label": "不挖水晶块👇" - }, - { - "name": "exclude_condessence_crystals", - "type": "checkbox", - "label": "不挖萃凝晶👇" - }, - { - "name": "exclude_amethyst_lumps", - "type": "checkbox", - "label": "不挖紫晶块👇" - }, - { - "name": "profile_id", - "type": "input-text", - "label": "(仅多帐号适用)区分帐号的唯一ID" - } +[ + { + "name": "arg_mode", + "type": "select", + "label": "运行模式👇", + "options": [ + "最速480矿", + "挖指定数目的矿(手动填写)", + "挖一段时间(手动填写)", + "挖所有矿" + ] + }, + { + "name": "arg_amount", + "type": "input-text", + "label": "挖矿的数量或持续的分钟数👇", + }, + { + "name": "exclude_fights", + "type": "checkbox", + "label": "跳过有战斗👇" + }, + { + "name": "exclude_natlan", + "type": "checkbox", + "label": "不挖纳塔👇" + }, + { + "name": "exclude_fontaine_underwater", + "type": "checkbox", + "default": true, + "label": "不挖枫丹水下(详见README)👇" + }, + { + "name": "exclude_fontaine_terrestrial", + "type": "checkbox", + "label": "不挖枫丹地上👇" + }, + { + "name": "exclude_sumeru", + "type": "checkbox", + "label": "不挖须弥👇" + }, + { + "name": "exclude_inazuma", + "type": "checkbox", + "label": "不挖稻妻👇" + }, + { + "name": "exclude_liyue", + "type": "checkbox", + "label": "不挖璃月👇" + }, + { + "name": "exclude_chasm_underground", + "type": "checkbox", + "label": "不挖层岩巨渊地下矿区👇" + }, + { + "name": "exclude_mondstadt", + "type": "checkbox", + "label": "不挖蒙德👇" + }, + { + "name": "exclude_crystal_chunks", + "type": "checkbox", + "label": "不挖水晶块👇" + }, + { + "name": "exclude_condessence_crystals", + "type": "checkbox", + "label": "不挖萃凝晶👇" + }, + { + "name": "exclude_amethyst_lumps", + "type": "checkbox", + "label": "不挖紫晶块👇" + }, + { + "name": "profile_id", + "type": "input-text", + "label": "(仅多帐号适用)区分帐号的唯一ID" + } ] \ No newline at end of file diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/Completed.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/Completed.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/Completed.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/Completed.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/IconBigmapCommission.jpg b/repo/js/AutoStoryLoader/Data/RecognitionObject/IconBigmapCommission.jpg similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/IconBigmapCommission.jpg rename to repo/js/AutoStoryLoader/Data/RecognitionObject/IconBigmapCommission.jpg diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/IconQuestionCommission.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/IconQuestionCommission.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/IconQuestionCommission.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/IconQuestionCommission.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/IconTaskCommission.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/IconTaskCommission.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/IconTaskCommission.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/IconTaskCommission.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/UnCompleted.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/UnCompleted.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/UnCompleted.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/UnCompleted.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/paimon_menu.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/paimon_menu.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/paimon_menu.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/paimon_menu.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/加入.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/加入.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/加入.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/加入.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/更换.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/更换.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/更换.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/更换.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/队伍配置.png b/repo/js/AutoStoryLoader/Data/RecognitionObject/队伍配置.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/RecognitionObject/队伍配置.png rename to repo/js/AutoStoryLoader/Data/RecognitionObject/队伍配置.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/avatar/combat_avatar.json b/repo/js/AutoStoryLoader/Data/avatar/combat_avatar.json similarity index 94% rename from repo/js/AAA-Auto-Story-Loader/Data/avatar/combat_avatar.json rename to repo/js/AutoStoryLoader/Data/avatar/combat_avatar.json index 6f63715e4..ee0114de0 100644 --- a/repo/js/AAA-Auto-Story-Loader/Data/avatar/combat_avatar.json +++ b/repo/js/AutoStoryLoader/Data/avatar/combat_avatar.json @@ -1,1902 +1,1902 @@ -[ - { - "alias": [ - "旅行者", - "主角", - "卑鄙的外乡人", - "荣誉骑士", - "爷", - "主", - "履刑者", - "抽卡不歪真君" - ], - "id": "20000000", - "name": "旅行者", - "nameEn": "Traveler", - "weapon": "1" - }, - { - "alias": [ - "荧", - "女主", - "女主角", - "莹", - "萤", - "黄毛阿姨", - "荧妹", - "女爷", - "包包", - "宴宁" - ], - "id": "10000007", - "name": "荧", - "nameEn": "PlayerGirl", - "weapon": "1" - }, - { - "alias": [ - "空", - "男主", - "男主角", - "龙哥", - "空哥", - "男爷" - ], - "id": "10000005", - "name": "空", - "nameEn": "PlayerBoy", - "weapon": "1" - }, - { - "alias": [ - "神里绫华", - "Kamisato Ayaka", - "Ayaka", - "神里", - "绫华", - "神里凌华", - "凌华", - "白鹭公主", - "神里大小姐", - "龟", - "龟龟", - "乌龟" - ], - "burstCD": 20, - "id": "10000002", - "name": "神里绫华", - "nameEn": "Ayaka", - "skillCD": 10, - "weapon": "1" - }, - { - "alias": [ - "琴", - "Jean", - "团长", - "代理团长", - "琴团长", - "蒲公英骑士" - ], - "burstCD": 20, - "id": "10000003", - "name": "琴", - "nameEn": "Qin", - "skillCD": 6, - "weapon": "1" - }, - { - "alias": [ - "丽莎", - "Lisa", - "图书管理员", - "图书馆管理员", - "蔷薇魔女", - "阿姨" - ], - "burstCD": 20, - "id": "10000006", - "name": "丽莎", - "nameEn": "Lisa", - "skillCD": 1, - "skillHoldCD": 16, - "weapon": "10" - }, - { - "alias": [ - "芭芭拉", - "Barbara", - "巴巴拉", - "内鬼", - "加湿器", - "肉身解咒", - "肉身解咒真君", - "闪耀偶像", - "偶像" - ], - "burstCD": 20, - "id": "10000014", - "name": "芭芭拉", - "nameEn": "Barbara", - "skillCD": 32, - "weapon": "10" - }, - { - "alias": [ - "凯亚", - "Kaeya", - "盖亚", - "凯子哥", - "凯鸭", - "矿工", - "矿工头子", - "骑兵队长", - "凯子", - "凝冰渡海真君" - ], - "burstCD": 15, - "id": "10000015", - "name": "凯亚", - "nameEn": "Kaeya", - "skillCD": 6, - "weapon": "1" - }, - { - "alias": [ - "迪卢克", - "Diluc", - "卢姥爷", - "姥爷", - "卢老爷", - "卢锅巴", - "正义人", - "正e人", - "正E人", - "卢本伟", - "暗夜英雄", - "卢卢伯爵", - "落魄了", - "落魄了家人们" - ], - "burstCD": 12, - "id": "10000016", - "name": "迪卢克", - "nameEn": "Diluc", - "skillCD": 10, - "weapon": "11" - }, - { - "alias": [ - "雷泽", - "Razor", - "狼少年", - "狼崽子", - "狼崽", - "卢皮卡", - "小狼", - "小狼狗", - "狼孩" - ], - "burstCD": 20, - "id": "10000020", - "name": "雷泽", - "nameEn": "Razor", - "skillCD": 6, - "skillHoldCD": 10, - "weapon": "11" - }, - { - "alias": [ - "安柏", - "Amber", - "安伯", - "兔兔伯爵", - "飞行冠军", - "侦查骑士", - "点火姬", - "点火机", - "打火机", - "打火姬" - ], - "burstCD": 12, - "id": "10000021", - "name": "安柏", - "nameEn": "Ambor", - "skillCD": 15, - "weapon": "12" - }, - { - "alias": [ - "温迪", - "Venti", - "温蒂", - "风神", - "卖唱的", - "巴巴托斯", - "巴巴脱丝", - "芭芭托斯", - "芭芭脱丝", - "干点正事", - "不干正事", - "吟游诗人", - "诶嘿", - "唉嘿", - "摸鱼" - ], - "burstCD": 15, - "id": "10000022", - "name": "温迪", - "nameEn": "Venti", - "skillCD": 6, - "skillHoldCD": 15, - "weapon": "12" - }, - { - "alias": [ - "香菱", - "Xiangling", - "香玲", - "锅巴", - "厨师", - "万民堂厨师", - "香师傅" - ], - "burstCD": 20, - "id": "10000023", - "name": "香菱", - "nameEn": "Xiangling", - "skillCD": 12, - "weapon": "13" - }, - { - "alias": [ - "北斗", - "Beidou", - "大姐头", - "大姐", - "无冕的龙王" - ], - "burstCD": 20, - "id": "10000024", - "name": "北斗", - "nameEn": "Beidou", - "skillCD": 7.5, - "weapon": "11" - }, - { - "alias": [ - "行秋", - "Xingqiu", - "秋秋人", - "秋妹妹", - "书呆子", - "枕玉", - "飞云商会二少爷" - ], - "burstCD": 20, - "id": "10000025", - "name": "行秋", - "nameEn": "Xingqiu", - "skillCD": 21, - "weapon": "1" - }, - { - "alias": [ - "魈", - "Xiao", - "打桩机", - "插秧", - "三眼五显仙人", - "三眼五显真人", - "降魔大圣", - "护法夜叉", - "快乐风男", - "无聊", - "靖妖傩舞", - "矮子仙人", - "三点五尺仙人", - "跳跳虎", - "风夜叉" - ], - "burstCD": 18, - "id": "10000026", - "name": "魈", - "nameEn": "Xiao", - "skillCD": 10, - "weapon": "13" - }, - { - "alias": [ - "凝光", - "Ningguang", - "富婆", - "天权星", - "天权" - ], - "burstCD": 12, - "id": "10000027", - "name": "凝光", - "nameEn": "Ningguang", - "skillCD": 12, - "weapon": "10" - }, - { - "alias": [ - "可莉", - "逃跑的太阳", - "Klee", - "嘟嘟可", - "火花骑士", - "蹦蹦炸弹", - "炸鱼", - "放火烧山", - "放火烧山真君", - "蒙德最强战力", - "逃跑的太阳", - "啦啦啦", - "哒哒哒", - "炸弹人", - "禁闭室", - "太阳", - "小太阳" - ], - "burstCD": 15, - "id": "10000029", - "name": "可莉", - "nameEn": "Klee", - "skillCD": 20, - "weapon": "10" - }, - { - "alias": [ - "钟离", - "Zhongli", - "摩拉克斯", - "岩王爷", - "岩神", - "钟师傅", - "天动万象", - "岩王帝君", - "未来可期", - "帝君", - "拒收病婿" - ], - "burstCD": 12, - "id": "10000030", - "name": "钟离", - "nameEn": "Zhongli", - "skillCD": 4, - "skillHoldCD": 12, - "weapon": "13" - }, - { - "alias": [ - "菲谢尔", - "Fischl", - "皇女", - "小艾米", - "小艾咪", - "奥兹", - "断罪皇女", - "中二病", - "中二少女", - "中二皇女", - "奥兹发射器" - ], - "burstCD": 15, - "id": "10000031", - "name": "菲谢尔", - "nameEn": "Fischl", - "skillCD": 25, - "weapon": "12" - }, - { - "alias": [ - "班尼特", - "Bennett", - "点赞哥", - "点赞", - "倒霉少年", - "倒霉蛋", - "霹雳闪雷真君", - "班神", - "班爷", - "倒霉", - "蒙德火神", - "六星真神" - ], - "burstCD": 15, - "id": "10000032", - "name": "班尼特", - "nameEn": "Bennett", - "skillCD": 5, - "weapon": "1" - }, - { - "alias": [ - "达达利亚", - "Tartaglia", - "Childe", - "Ajax", - "达达鸭", - "达达利鸭", - "公子", - "玩具销售员", - "玩具推销员", - "钱包", - "鸭鸭", - "愚人众末席" - ], - "burstCD": 15, - "id": "10000033", - "name": "达达利亚", - "nameEn": "Tartaglia", - "skillCD": 6, - "skillHoldCD": 45, - "weapon": "12" - }, - { - "alias": [ - "诺艾尔", - "Noelle", - "女仆", - "高达", - "岩王帝姬" - ], - "burstCD": 15, - "id": "10000034", - "name": "诺艾尔", - "nameEn": "Noel", - "skillCD": 24, - "weapon": "11" - }, - { - "alias": [ - "七七", - "Qiqi", - "僵尸", - "肚饿真君", - "度厄真君", - "77" - ], - "burstCD": 20, - "id": "10000035", - "name": "七七", - "nameEn": "Qiqi", - "skillCD": 30, - "weapon": "1" - }, - { - "alias": [ - "重云", - "Chongyun", - "纯阳之体", - "冰棍" - ], - "burstCD": 12, - "id": "10000036", - "name": "重云", - "nameEn": "Chongyun", - "skillCD": 15, - "weapon": "11" - }, - { - "alias": [ - "甘雨", - "Ganyu", - "椰羊", - "椰奶", - "王小美" - ], - "burstCD": 15, - "id": "10000037", - "name": "甘雨", - "nameEn": "Ganyu", - "skillCD": 10, - "weapon": "12" - }, - { - "alias": [ - "阿贝多", - "Albedo", - "可莉哥哥", - "升降机", - "升降台", - "电梯", - "白垩之子", - "贝爷", - "白垩", - "阿贝少", - "花呗多", - "阿贝夕", - "阿师傅" - ], - "burstCD": 12, - "id": "10000038", - "name": "阿贝多", - "nameEn": "Albedo", - "skillCD": 4, - "weapon": "1" - }, - { - "alias": [ - "迪奥娜", - "Diona", - "迪欧娜", - "dio娜", - "冰猫", - "猫猫", - "猫娘", - "喵喵", - "调酒师" - ], - "burstCD": 20, - "id": "10000039", - "name": "迪奥娜", - "nameEn": "Diona", - "skillCD": 6, - "skillHoldCD": 15, - "weapon": "12" - }, - { - "alias": [ - "莫娜", - "Mona", - "穷鬼", - "穷光蛋", - "穷", - "莫纳", - "占星术士", - "占星师", - "讨龙真君", - "半部讨龙真君", - "阿斯托洛吉斯·莫娜·梅姬斯图斯", - "梅姬斯图斯", - "梅姬斯图斯姬" - ], - "burstCD": 15, - "id": "10000041", - "name": "莫娜", - "nameEn": "Mona", - "skillCD": 12, - "weapon": "10" - }, - { - "alias": [ - "刻晴", - "Keqing", - "刻情", - "氪晴", - "刻师傅", - "刻师父", - "牛杂", - "牛杂师傅", - "斩尽牛杂", - "免疫", - "免疫免疫", - "屁斜剑法", - "玉衡星", - "阿晴", - "啊晴", - "璃月雷神" - ], - "burstCD": 12, - "id": "10000042", - "name": "刻晴", - "nameEn": "Keqing", - "skillCD": 7.5, - "weapon": "1" - }, - { - "alias": [ - "砂糖", - "Sucrose", - "sucrose" - ], - "burstCD": 20, - "id": "10000043", - "name": "砂糖", - "nameEn": "Sucrose", - "skillCD": 15, - "weapon": "10" - }, - { - "alias": [ - "辛焱", - "Xinyan", - "辛炎", - "黑妹", - "摇滚" - ], - "burstCD": 15, - "id": "10000044", - "name": "辛焱", - "nameEn": "Xinyan", - "skillCD": 18, - "weapon": "11" - }, - { - "alias": [ - "罗莎莉亚", - "Rosaria", - "罗莎莉娅", - "白色史莱姆", - "白史莱姆", - "修女", - "罗莎利亚", - "罗莎利娅", - "罗沙莉亚", - "罗沙莉娅", - "罗沙利亚", - "罗沙利娅", - "萝莎莉亚", - "萝莎莉娅", - "萝莎利亚", - "萝莎利娅", - "萝沙莉亚", - "萝沙莉娅", - "萝沙利亚", - "萝沙利娅" - ], - "burstCD": 15, - "id": "10000045", - "name": "罗莎莉亚", - "nameEn": "Rosaria", - "skillCD": 6, - "weapon": "13" - }, - { - "alias": [ - "胡桃", - "Hu Tao", - "HuTao", - "Hutao", - "胡淘", - "往生堂堂主", - "火化", - "抬棺的", - "蝴蝶", - "核桃", - "堂主", - "胡堂主", - "雪霁梅香", - "桃子", - "桃" - ], - "burstCD": 15, - "id": "10000046", - "name": "胡桃", - "nameEn": "Hutao", - "skillCD": 16, - "weapon": "13" - }, - { - "alias": [ - "枫原万叶", - "Kaedehara Kazuha", - "Kazuha", - "万叶", - "叶天帝", - "天帝", - "叶师傅" - ], - "burstCD": 15, - "id": "10000047", - "name": "枫原万叶", - "nameEn": "Kazuha", - "skillCD": 6, - "skillHoldCD": 9, - "weapon": "1" - }, - { - "alias": [ - "烟绯", - "Yanfei", - "烟老师", - "律师", - "罗翔" - ], - "burstCD": 20, - "id": "10000048", - "name": "烟绯", - "nameEn": "Feiyan", - "skillCD": 9, - "weapon": "10" - }, - { - "alias": [ - "宵宫", - "Yoimiya", - "霄宫", - "烟花", - "肖宫", - "肖工", - "绷带女孩" - ], - "burstCD": 15, - "id": "10000049", - "name": "宵宫", - "nameEn": "Yoimiya", - "skillCD": 18, - "weapon": "12" - }, - { - "alias": [ - "托马", - "Thoma", - "家政官", - "太郎丸", - "地头蛇", - "男仆", - "拖马" - ], - "burstCD": 20, - "id": "10000050", - "name": "托马", - "nameEn": "Tohma", - "skillCD": 15, - "weapon": "13" - }, - { - "alias": [ - "优菈", - "Eula", - "优拉", - "尤拉", - "尤菈", - "浪花骑士", - "记仇", - "劳伦斯" - ], - "burstCD": 20, - "id": "10000051", - "name": "优菈", - "nameEn": "Eula", - "skillCD": 4, - "skillHoldCD": 10, - "weapon": "11" - }, - { - "alias": [ - "雷电将军", - "Raiden Shogun", - "Raiden", - "雷神", - "将军", - "雷军", - "巴尔", - "阿影", - "影", - "巴尔泽布", - "煮饭婆", - "奶香一刀", - "无想一刀", - "宅女" - ], - "burstCD": 18, - "id": "10000052", - "name": "雷电将军", - "nameEn": "Shougun", - "skillCD": 10, - "weapon": "13" - }, - { - "alias": [ - "早柚", - "Sayu", - "小狸猫", - "狸猫", - "忍者", - "貉" - ], - "burstCD": 20, - "id": "10000053", - "name": "早柚", - "nameEn": "Sayu", - "skillCD": 6, - "weapon": "11" - }, - { - "alias": [ - "珊瑚宫心海", - "Sangonomiya Kokomi", - "Kokomi", - "心海", - "军师", - "珊瑚宫", - "书记", - "观赏鱼", - "水母", - "鱼", - "美人鱼" - ], - "burstCD": 18, - "id": "10000054", - "name": "珊瑚宫心海", - "nameEn": "Kokomi", - "skillCD": 20, - "weapon": "10" - }, - { - "alias": [ - "五郎", - "Gorou", - "柴犬", - "土狗", - "希娜", - "希娜小姐" - ], - "burstCD": 20, - "id": "10000055", - "name": "五郎", - "nameEn": "Gorou", - "skillCD": 10, - "weapon": "12" - }, - { - "alias": [ - "九条裟罗", - "Kujou Sara", - "Sara", - "九条", - "九条沙罗", - "裟罗", - "沙罗", - "天狗" - ], - "burstCD": 20, - "id": "10000056", - "name": "九条裟罗", - "nameEn": "Sara", - "skillCD": 10, - "weapon": "12" - }, - { - "alias": [ - "荒泷一斗", - "Arataki Itto", - "Itto", - "荒龙一斗", - "荒泷天下第一斗", - "一斗", - "一抖", - "荒泷", - "1斗", - "岩牛", - "岩牛牛", - "斗战岩牛", - "斗子哥", - "牛子哥", - "牛子", - "孩子王", - "斗虫", - "巧乐兹", - "放牛的" - ], - "burstCD": 18, - "id": "10000057", - "name": "荒泷一斗", - "nameEn": "Itto", - "skillCD": 10, - "weapon": "11" - }, - { - "alias": [ - "八重神子", - "Yae Miko", - "Miko", - "八重", - "神子", - "狐狸", - "想得美哦", - "巫女", - "屑狐狸", - "骚狐狸", - "八重宫司", - "婶子", - "小八", - "八重寄子", - "寄子", - "八神虫子", - "八神重子" - ], - "burstCD": 22, - "id": "10000058", - "name": "八重神子", - "nameEn": "Yae", - "skillCD": 4, - "weapon": "10" - }, - { - "alias": [ - "鹿野院平藏", - "shikanoin heizou", - "Heizou", - "鹿野苑", - "鹿野院", - "平藏", - "鹿野苑平藏", - "小鹿" - ], - "burstCD": 12, - "id": "10000059", - "name": "鹿野院平藏", - "nameEn": "Heizo", - "skillCD": 10, - "weapon": "10" - }, - { - "alias": [ - "夜兰", - "Yelan", - "夜阑", - "叶澜", - "腋兰", - "夜天后" - ], - "burstCD": 18, - "id": "10000060", - "name": "夜兰", - "nameEn": "Yelan", - "skillCD": 10, - "weapon": "12" - }, - { - "alias": [ - "绮良良", - "Kirara", - "大猫猫", - "大喵喵", - "稻妻猫猫", - "绮娘娘", - "琦良良", - "良良", - "快递员", - "草猫", - "草猫猫", - "草喵", - "草喵喵", - "猫又" - ], - "burstCD": 15, - "id": "10000061", - "name": "绮良良", - "nameEn": "Momoka", - "skillCD": 8, - "weapon": "1" - }, - { - "alias": [ - "埃洛伊", - "Aloy" - ], - "burstCD": 12, - "id": "10000062", - "name": "埃洛伊", - "nameEn": "Aloy", - "skillCD": 20, - "weapon": "12" - }, - { - "alias": [ - "申鹤", - "Shenhe", - "神鹤", - "小姨", - "小姨子", - "审鹤" - ], - "burstCD": 20, - "id": "10000063", - "name": "申鹤", - "nameEn": "Shenhe", - "skillCD": 10, - "skillHoldCD": 15, - "weapon": "13" - }, - { - "alias": [ - "云堇", - "Yun Jin", - "yun jin", - "云瑾", - "云先生", - "云锦", - "神女劈观" - ], - "burstCD": 15, - "id": "10000064", - "name": "云堇", - "nameEn": "Yunjin", - "skillCD": 9, - "weapon": "13" - }, - { - "alias": [ - "久岐忍", - "Kuki Shinobu", - "Kuki", - "Shinobu", - "97忍", - "小忍", - "久歧忍", - "97", - "茄忍", - "茄子", - "紫茄子", - "阿忍", - "忍姐" - ], - "burstCD": 15, - "id": "10000065", - "name": "久岐忍", - "nameEn": "Shinobu", - "skillCD": 15, - "weapon": "1" - }, - { - "alias": [ - "神里绫人", - "Kamisato Ayato", - "Ayato", - "绫人", - "神里凌人", - "凌人", - "0人", - "神人", - "零人", - "大舅哥" - ], - "burstCD": 20, - "id": "10000066", - "name": "神里绫人", - "nameEn": "Ayato", - "skillCD": 12, - "weapon": "1" - }, - { - "alias": [ - "柯莱", - "Collei", - "柯来", - "科莱", - "科来", - "小天使", - "须弥安柏", - "草安柏", - "须弥飞行冠军" - ], - "burstCD": 15, - "id": "10000067", - "name": "柯莱", - "nameEn": "Collei", - "skillCD": 12, - "weapon": "12" - }, - { - "alias": [ - "多莉", - "Dori", - "多利", - "多力", - "奸商" - ], - "burstCD": 20, - "id": "10000068", - "name": "多莉", - "nameEn": "Dori", - "skillCD": 9, - "weapon": "11" - }, - { - "alias": [ - "提纳里", - "Tighnari", - "提那里", - "小提", - "驴" - ], - "burstCD": 12, - "id": "10000069", - "name": "提纳里", - "nameEn": "Tighnari", - "skillCD": 12, - "weapon": "12" - }, - { - "alias": [ - "妮露", - "Nilou", - "尼露", - "妮璐", - "舞娘", - "红牛" - ], - "burstCD": 18, - "id": "10000070", - "name": "妮露", - "nameEn": "Nilou", - "skillCD": 18, - "weapon": "1" - }, - { - "alias": [ - "赛诺", - "Cyno", - "塞诺", - "胡狼", - "大风纪官", - "大风机关" - ], - "burstCD": 20, - "id": "10000071", - "name": "赛诺", - "nameEn": "Cyno", - "skillCD": 7.5, - "skillHoldCD": 3, - "weapon": "13" - }, - { - "alias": [ - "坎蒂丝", - "Candace", - "坎迪斯" - ], - "burstCD": 15, - "id": "10000072", - "name": "坎蒂丝", - "nameEn": "Candace", - "skillCD": 6, - "skillHoldCD": 9, - "weapon": "13" - }, - { - "alias": [ - "纳西妲", - "Nahida", - "草神", - "小吉祥", - "大吉祥", - "小草神", - "大慈树王", - "小吉祥草王", - "草萝莉", - "羽毛球", - "摩诃善法大吉祥智慧主", - "智慧主", - "智慧之神", - "布耶尔" - ], - "burstCD": 13.5, - "id": "10000073", - "name": "纳西妲", - "nameEn": "Nahida", - "skillCD": 5, - "skillHoldCD": 6, - "weapon": "10" - }, - { - "alias": [ - "莱依拉", - "Layla", - "莱依菈", - "来依菈", - "来依拉" - ], - "burstCD": 12, - "id": "10000074", - "name": "莱依拉", - "nameEn": "Layla", - "skillCD": 12, - "weapon": "1" - }, - { - "alias": [ - "流浪者", - "Wanderer", - "散兵", - "国崩", - "雷电国崩", - "大炮", - "雷电大炮", - "雷大炮", - "伞兵", - "斯卡拉姆齐" - ], - "burstCD": 15, - "id": "10000075", - "name": "流浪者", - "nameEn": "Wanderer", - "skillCD": 6, - "weapon": "10" - }, - { - "alias": [ - "珐露珊", - "Faruzan", - "法露珊", - "法璐珊", - "法露姗", - "法璐姗", - "珐露姗", - "珐璐姗", - "百岁珊", - "百岁山", - "前辈", - "仙贝" - ], - "burstCD": 20, - "id": "10000076", - "name": "珐露珊", - "nameEn": "Faruzan", - "skillCD": 6, - "weapon": "12" - }, - { - "alias": [ - "瑶瑶", - "Yaoyao", - "遥遥", - "萝卜", - "月桂" - ], - "burstCD": 20, - "id": "10000077", - "name": "瑶瑶", - "nameEn": "Yaoyao", - "skillCD": 15, - "weapon": "13" - }, - { - "alias": [ - "艾尔海森", - "Alhaitham", - "海哥", - "埃尔海森", - "海森", - "海参", - "书记官" - ], - "burstCD": 18, - "id": "10000078", - "name": "艾尔海森", - "nameEn": "Alhatham", - "skillCD": 18, - "weapon": "1" - }, - { - "alias": [ - "迪希雅", - "Dehya", - "迪希亚", - "迪希娅", - "迪西雅", - "迪西亚" - ], - "burstCD": 18, - "id": "10000079", - "name": "迪希雅", - "nameEn": "Dehya", - "skillCD": 20, - "weapon": "11" - }, - { - "alias": [ - "米卡", - "Mika", - "鹦鹉", - "凤头", - "凤头鹦鹉" - ], - "burstCD": 18, - "id": "10000080", - "name": "米卡", - "nameEn": "Mika", - "skillCD": 15, - "weapon": "13" - }, - { - "alias": [ - "卡维", - "Kaveh", - "艾尔海森室友" - ], - "burstCD": 20, - "id": "10000081", - "name": "卡维", - "nameEn": "Kaveh", - "skillCD": 6, - "weapon": "11" - }, - { - "alias": [ - "白术", - "Baizhu", - "长生", - "白医生" - ], - "burstCD": 20, - "id": "10000082", - "name": "白术", - "nameEn": "Baizhuer", - "skillCD": 10, - "weapon": "10" - }, - { - "alias": [ - "琳妮特", - "Lynette", - "林妮特", - "林尼特", - "琳尼特", - "女魔术师", - "魔术猫", - "魔术喵", - "登登" - ], - "burstCD": 18, - "id": "10000083", - "name": "琳妮特", - "nameEn": "Linette", - "skillCD": 12, - "weapon": "1" - }, - { - "alias": [ - "林尼", - "Lyney", - "林妮", - "琳尼", - "琳妮", - "男魔术师", - "魔术师" - ], - "burstCD": 15, - "id": "10000084", - "name": "林尼", - "nameEn": "Liney", - "skillCD": 15, - "weapon": "12" - }, - { - "alias": [ - "菲米尼", - "Freminet", - "非米尼", - "潜水员" - ], - "burstCD": 15, - "id": "10000085", - "name": "菲米尼", - "nameEn": "Freminet", - "skillCD": 10, - "weapon": "11" - }, - { - "alias": [ - "莱欧斯利", - "Wriothesley", - "莱欧", - "枫丹桑博", - "公爵", - "典狱长", - "牢大" - ], - "burstCD": 15, - "id": "10000086", - "name": "莱欧斯利", - "nameEn": "Wriothesley", - "skillCD": 16, - "weapon": "10" - }, - { - "alias": [ - "那维莱特", - "Neuvillette", - "那维", - "水龙王", - "水龙", - "审判官", - "海獭", - "龙王", - "最高审判官", - "水之龙王" - ], - "burstCD": 18, - "id": "10000087", - "name": "那维莱特", - "nameEn": "Neuvillette", - "skillCD": 12, - "weapon": "10" - }, - { - "alias": [ - "夏洛蒂", - "Charlotte", - "夏洛", - "夏洛帝", - "记者", - "小记者", - "佳能400D", - "400D" - ], - "burstCD": 20, - "id": "10000088", - "name": "夏洛蒂", - "nameEn": "Charlotte", - "skillCD": 12, - "skillHoldCD": 18, - "weapon": "10" - }, - { - "alias": [ - "芙宁娜", - "Furina", - "Focalors", - "水神", - "芙芙", - "芙卡洛斯", - "傻芙芙" - ], - "burstCD": 15, - "id": "10000089", - "name": "芙宁娜", - "nameEn": "Furina", - "skillCD": 20, - "weapon": "1" - }, - { - "alias": [ - "夏沃蕾", - "chevreuse", - "夏沃雷" - ], - "burstCD": 15, - "id": "10000090", - "name": "夏沃蕾", - "nameEn": "Chevreuse", - "skillCD": 15, - "weapon": "13" - }, - { - "alias": [ - "娜维娅", - "navia", - "大小姐", - "刺玫会", - "黄豆", - "流汗黄豆", - "黄豆姐", - "娜薇娅", - "娜薇雅", - "娜维雅" - ], - "burstCD": 15, - "id": "10000091", - "name": "娜维娅", - "nameEn": "Navia", - "skillCD": 9, - "weapon": "11" - }, - { - "alias": [ - "嘉明", - "Gaming", - "jiaming", - "佳明", - "嘉铭", - "家明", - "镖师", - "舞狮少年", - "舞狮" - ], - "burstCD": 15, - "id": "10000092", - "name": "嘉明", - "nameEn": "Gaming", - "skillCD": 6, - "weapon": "11" - }, - { - "alias": [ - "闲云", - "Xianyun", - "流云", - "刘云", - "留云", - "野鹤", - "那个女人", - "留云借风", - "留云借风真君", - "很会聊天", - "很会聊天真君" - ], - "burstCD": 18, - "id": "10000093", - "name": "闲云", - "nameEn": "Liuyun", - "skillCD": 12, - "weapon": "10" - }, - { - "alias": [ - "千织", - "Chiori", - "千只", - "设计师", - "裁缝", - "千织屋老板" - ], - "burstCD": 13.5, - "id": "10000094", - "name": "千织", - "nameEn": "Chiori", - "skillCD": 16, - "weapon": "1" - }, - { - "alias": [ - "希格雯", - "Sigewinne", - "希格文", - "护士", - "护士长" - ], - "burstCD": 18, - "id": "10000095", - "name": "希格雯", - "nameEn": "Sigewinne", - "skillCD": 18, - "weapon": "12" - }, - { - "alias": [ - "阿蕾奇诺", - "Arlecchino", - "阿雷奇诺", - "仆人", - "黑优菈", - "黑暗优菈", - "父亲", - "佩露薇利" - ], - "burstCD": 15, - "id": "10000096", - "name": "阿蕾奇诺", - "nameEn": "Arlecchino", - "skillCD": 30, - "weapon": "13" - }, - { - "alias": [ - "赛索斯", - "Sethos", - "塞索斯", - "塞索思", - "赛索思" - ], - "burstCD": 15, - "id": "10000097", - "name": "赛索斯", - "nameEn": "Sethos", - "skillCD": 8, - "weapon": "12" - }, - { - "alias": [ - "克洛琳德", - "Clorinde", - "琳德", - "科洛琳德", - "克洛林德", - "克罗林德", - "苹果姐" - ], - "burstCD": 15, - "id": "10000098", - "name": "克洛琳德", - "nameEn": "Clorinde", - "skillCD": 16, - "weapon": "1" - }, - { - "alias": [ - "艾梅莉埃", - "Emilie", - "调香师", - "艾梅", - "香水设计师", - "现场清理人" - ], - "burstCD": 13.5, - "id": "10000099", - "name": "艾梅莉埃", - "nameEn": "Emilie", - "skillCD": 10, - "skillHoldCD": 14, - "weapon": "13" - }, - { - "alias": [ - "卡齐娜", - "Kachina", - "卡奇娜", - "卡齐纳", - "卡齐那", - "卡其那", - "冲天钻钻", - "岩莉莉" - ], - "burstCD": 18, - "id": "10000100", - "name": "卡齐娜", - "nameEn": "Kachina", - "skillCD": 20, - "weapon": "13" - }, - { - "alias": [ - "基尼奇", - "Kinich", - "基哥", - "基尼齐", - "蜘蛛侠" - ], - "burstCD": 18, - "id": "10000101", - "name": "基尼奇", - "nameEn": "Kinich", - "skillCD": 18, - "weapon": "11" - }, - { - "alias": [ - "玛拉妮", - "Mualani", - "马拉尼", - "鲨鱼妹", - "海豹妹", - "海豹", - "纳塔鲨", - "逐浪客" - ], - "burstCD": 15, - "id": "10000102", - "name": "玛拉妮", - "nameEn": "Mualani", - "skillCD": 1.8, - "skillHoldCD": 6, - "weapon": "10" - }, - { - "alias": [ - "希诺宁", - "Xilonen", - "豹女", - "岩大猫", - "大岩猫", - "岩猫", - "岩猫猫", - "西诺宁" - ], - "burstCD": 15, - "id": "10000103", - "name": "希诺宁", - "nameEn": "Xilonen", - "skillCD": 7, - "weapon": "1" - }, - { - "alias": [ - "恰斯卡", - "Chasca", - "武卡", - "调停人", - "鸟人" - ], - "burstCD": 15, - "id": "10000104", - "name": "恰斯卡", - "nameEn": "Chasca", - "skillCD": 6.5, - "weapon": "12" - }, - { - "alias": [ - "欧洛伦", - "Ororon", - "庇笛", - "孙子", - "大孙子", - "蝙蝠侠" - ], - "burstCD": 15, - "id": "10000105", - "name": "欧洛伦", - "nameEn": "Olorun", - "skillCD": 15, - "weapon": "12" - }, - { - "alias": [ - "玛薇卡", - "Mavuika", - "火神", - "马薇卡", - "玛维卡", - "马维卡", - "马微卡", - "玛微卡" - ], - "burstCD": 18, - "id": "10000106", - "name": "玛薇卡", - "nameEn": "Mavuika", - "skillCD": 15, - "weapon": "11" - }, - { - "alias": [ - "茜特菈莉", - "Citlali", - "西特菈莉", - "西特拉莉", - "茜特拉莉", - "西特拉利", - "黑曜石奶奶", - "黑曜石", - "奶奶", - "老伴" - ], - "burstCD": 15, - "id": "10000107", - "name": "茜特菈莉", - "nameEn": "Citlali", - "skillCD": 16, - "weapon": "10" - }, - { - "alias": [ - "蓝砚", - "Lanyan", - "蓝燕", - "兰砚", - "兰燕", - "藤编师", - "风鹰侠", - "蓝研", - "蓝颜", - "兰颜" - ], - "burstCD": 15, - "id": "10000108", - "name": "蓝砚", - "nameEn": "Lanyan", - "skillCD": 16, - "weapon": "10" - }, - { - "alias": [ - "梦见月瑞希", - "Yumemizuki Mizuki", - "Mizuki", - "梦见", - "梦见月", - "瑞希", - "瑞幸", - "木更", - "梗小姐", - "食梦貘", - "梦魔", - "魅魔", - "心理医生", - "心理诊疗师" - ], - "burstCD": 15, - "id": "10000109", - "name": "梦见月瑞希", - "nameEn": "Mizuki", - "skillCD": 15, - "weapon": "10" - }, - { - "alias": [ - "伊安珊", - "Iansan", - "123", - "伊安姗", - "教练", - "依安珊" - ], - "burstCD": 18, - "id": "10000110", - "name": "伊安珊", - "nameEn": "Iansan", - "skillCD": 16, - "weapon": "13" - }, - { - "alias": [ - "瓦雷莎", - "Varesa", - "瓦蕾莎", - "瓦蕾沙", - "瓦蕾砂", - "瓦雷沙", - "牛头人", - "牛战士", - "牛牛", - "雷牛", - "雷牛牛", - "奶牛", - "粉牛" - ], - "burstCD": 18, - "id": "10000111", - "name": "瓦雷莎", - "nameEn": "Varesa", - "skillCD": 9, - "weapon": "10" - }, - { - "alias": [ - "爱可菲", - "Escoffier", - "厨师", - "爱可非", - "艾可菲", - "艾可非" - ], - "burstCD": 15, - "id": "10000112", - "name": "爱可菲", - "nameEn": "Escoffier", - "skillCD": 15, - "skillHoldCD": 6, - "weapon": "13" - }, - { - "alias": [ - "伊法", - "Ifa", - "哥们", - "医生" - ], - "burstCD": 15, - "id": "10000113", - "name": "伊法", - "nameEn": "Ifa", - "skillCD": 7.5, - "weapon": "10" - }, - { - "alias": [ - "丝柯克", - "Skirk", - "丝柯可", - "斯柯克" - ], - "burstCD": 15, - "id": "10000114", - "name": "丝柯克", - "nameEn": "SkirkNew", - "skillCD": 8, - "weapon": "1" - }, - { - "alias": [ - "塔利雅", - "Dahlia", - "塔利亚", - "塔丽雅", - "主祭", - "助祭" - ], - "burstCD": 15, - "id": "10000115", - "name": "塔利雅", - "nameEn": "Dahlia", - "skillCD": 9, - "weapon": "1" - } +[ + { + "alias": [ + "旅行者", + "主角", + "卑鄙的外乡人", + "荣誉骑士", + "爷", + "主", + "履刑者", + "抽卡不歪真君" + ], + "id": "20000000", + "name": "旅行者", + "nameEn": "Traveler", + "weapon": "1" + }, + { + "alias": [ + "荧", + "女主", + "女主角", + "莹", + "萤", + "黄毛阿姨", + "荧妹", + "女爷", + "包包", + "宴宁" + ], + "id": "10000007", + "name": "荧", + "nameEn": "PlayerGirl", + "weapon": "1" + }, + { + "alias": [ + "空", + "男主", + "男主角", + "龙哥", + "空哥", + "男爷" + ], + "id": "10000005", + "name": "空", + "nameEn": "PlayerBoy", + "weapon": "1" + }, + { + "alias": [ + "神里绫华", + "Kamisato Ayaka", + "Ayaka", + "神里", + "绫华", + "神里凌华", + "凌华", + "白鹭公主", + "神里大小姐", + "龟", + "龟龟", + "乌龟" + ], + "burstCD": 20, + "id": "10000002", + "name": "神里绫华", + "nameEn": "Ayaka", + "skillCD": 10, + "weapon": "1" + }, + { + "alias": [ + "琴", + "Jean", + "团长", + "代理团长", + "琴团长", + "蒲公英骑士" + ], + "burstCD": 20, + "id": "10000003", + "name": "琴", + "nameEn": "Qin", + "skillCD": 6, + "weapon": "1" + }, + { + "alias": [ + "丽莎", + "Lisa", + "图书管理员", + "图书馆管理员", + "蔷薇魔女", + "阿姨" + ], + "burstCD": 20, + "id": "10000006", + "name": "丽莎", + "nameEn": "Lisa", + "skillCD": 1, + "skillHoldCD": 16, + "weapon": "10" + }, + { + "alias": [ + "芭芭拉", + "Barbara", + "巴巴拉", + "内鬼", + "加湿器", + "肉身解咒", + "肉身解咒真君", + "闪耀偶像", + "偶像" + ], + "burstCD": 20, + "id": "10000014", + "name": "芭芭拉", + "nameEn": "Barbara", + "skillCD": 32, + "weapon": "10" + }, + { + "alias": [ + "凯亚", + "Kaeya", + "盖亚", + "凯子哥", + "凯鸭", + "矿工", + "矿工头子", + "骑兵队长", + "凯子", + "凝冰渡海真君" + ], + "burstCD": 15, + "id": "10000015", + "name": "凯亚", + "nameEn": "Kaeya", + "skillCD": 6, + "weapon": "1" + }, + { + "alias": [ + "迪卢克", + "Diluc", + "卢姥爷", + "姥爷", + "卢老爷", + "卢锅巴", + "正义人", + "正e人", + "正E人", + "卢本伟", + "暗夜英雄", + "卢卢伯爵", + "落魄了", + "落魄了家人们" + ], + "burstCD": 12, + "id": "10000016", + "name": "迪卢克", + "nameEn": "Diluc", + "skillCD": 10, + "weapon": "11" + }, + { + "alias": [ + "雷泽", + "Razor", + "狼少年", + "狼崽子", + "狼崽", + "卢皮卡", + "小狼", + "小狼狗", + "狼孩" + ], + "burstCD": 20, + "id": "10000020", + "name": "雷泽", + "nameEn": "Razor", + "skillCD": 6, + "skillHoldCD": 10, + "weapon": "11" + }, + { + "alias": [ + "安柏", + "Amber", + "安伯", + "兔兔伯爵", + "飞行冠军", + "侦查骑士", + "点火姬", + "点火机", + "打火机", + "打火姬" + ], + "burstCD": 12, + "id": "10000021", + "name": "安柏", + "nameEn": "Ambor", + "skillCD": 15, + "weapon": "12" + }, + { + "alias": [ + "温迪", + "Venti", + "温蒂", + "风神", + "卖唱的", + "巴巴托斯", + "巴巴脱丝", + "芭芭托斯", + "芭芭脱丝", + "干点正事", + "不干正事", + "吟游诗人", + "诶嘿", + "唉嘿", + "摸鱼" + ], + "burstCD": 15, + "id": "10000022", + "name": "温迪", + "nameEn": "Venti", + "skillCD": 6, + "skillHoldCD": 15, + "weapon": "12" + }, + { + "alias": [ + "香菱", + "Xiangling", + "香玲", + "锅巴", + "厨师", + "万民堂厨师", + "香师傅" + ], + "burstCD": 20, + "id": "10000023", + "name": "香菱", + "nameEn": "Xiangling", + "skillCD": 12, + "weapon": "13" + }, + { + "alias": [ + "北斗", + "Beidou", + "大姐头", + "大姐", + "无冕的龙王" + ], + "burstCD": 20, + "id": "10000024", + "name": "北斗", + "nameEn": "Beidou", + "skillCD": 7.5, + "weapon": "11" + }, + { + "alias": [ + "行秋", + "Xingqiu", + "秋秋人", + "秋妹妹", + "书呆子", + "枕玉", + "飞云商会二少爷" + ], + "burstCD": 20, + "id": "10000025", + "name": "行秋", + "nameEn": "Xingqiu", + "skillCD": 21, + "weapon": "1" + }, + { + "alias": [ + "魈", + "Xiao", + "打桩机", + "插秧", + "三眼五显仙人", + "三眼五显真人", + "降魔大圣", + "护法夜叉", + "快乐风男", + "无聊", + "靖妖傩舞", + "矮子仙人", + "三点五尺仙人", + "跳跳虎", + "风夜叉" + ], + "burstCD": 18, + "id": "10000026", + "name": "魈", + "nameEn": "Xiao", + "skillCD": 10, + "weapon": "13" + }, + { + "alias": [ + "凝光", + "Ningguang", + "富婆", + "天权星", + "天权" + ], + "burstCD": 12, + "id": "10000027", + "name": "凝光", + "nameEn": "Ningguang", + "skillCD": 12, + "weapon": "10" + }, + { + "alias": [ + "可莉", + "逃跑的太阳", + "Klee", + "嘟嘟可", + "火花骑士", + "蹦蹦炸弹", + "炸鱼", + "放火烧山", + "放火烧山真君", + "蒙德最强战力", + "逃跑的太阳", + "啦啦啦", + "哒哒哒", + "炸弹人", + "禁闭室", + "太阳", + "小太阳" + ], + "burstCD": 15, + "id": "10000029", + "name": "可莉", + "nameEn": "Klee", + "skillCD": 20, + "weapon": "10" + }, + { + "alias": [ + "钟离", + "Zhongli", + "摩拉克斯", + "岩王爷", + "岩神", + "钟师傅", + "天动万象", + "岩王帝君", + "未来可期", + "帝君", + "拒收病婿" + ], + "burstCD": 12, + "id": "10000030", + "name": "钟离", + "nameEn": "Zhongli", + "skillCD": 4, + "skillHoldCD": 12, + "weapon": "13" + }, + { + "alias": [ + "菲谢尔", + "Fischl", + "皇女", + "小艾米", + "小艾咪", + "奥兹", + "断罪皇女", + "中二病", + "中二少女", + "中二皇女", + "奥兹发射器" + ], + "burstCD": 15, + "id": "10000031", + "name": "菲谢尔", + "nameEn": "Fischl", + "skillCD": 25, + "weapon": "12" + }, + { + "alias": [ + "班尼特", + "Bennett", + "点赞哥", + "点赞", + "倒霉少年", + "倒霉蛋", + "霹雳闪雷真君", + "班神", + "班爷", + "倒霉", + "蒙德火神", + "六星真神" + ], + "burstCD": 15, + "id": "10000032", + "name": "班尼特", + "nameEn": "Bennett", + "skillCD": 5, + "weapon": "1" + }, + { + "alias": [ + "达达利亚", + "Tartaglia", + "Childe", + "Ajax", + "达达鸭", + "达达利鸭", + "公子", + "玩具销售员", + "玩具推销员", + "钱包", + "鸭鸭", + "愚人众末席" + ], + "burstCD": 15, + "id": "10000033", + "name": "达达利亚", + "nameEn": "Tartaglia", + "skillCD": 6, + "skillHoldCD": 45, + "weapon": "12" + }, + { + "alias": [ + "诺艾尔", + "Noelle", + "女仆", + "高达", + "岩王帝姬" + ], + "burstCD": 15, + "id": "10000034", + "name": "诺艾尔", + "nameEn": "Noel", + "skillCD": 24, + "weapon": "11" + }, + { + "alias": [ + "七七", + "Qiqi", + "僵尸", + "肚饿真君", + "度厄真君", + "77" + ], + "burstCD": 20, + "id": "10000035", + "name": "七七", + "nameEn": "Qiqi", + "skillCD": 30, + "weapon": "1" + }, + { + "alias": [ + "重云", + "Chongyun", + "纯阳之体", + "冰棍" + ], + "burstCD": 12, + "id": "10000036", + "name": "重云", + "nameEn": "Chongyun", + "skillCD": 15, + "weapon": "11" + }, + { + "alias": [ + "甘雨", + "Ganyu", + "椰羊", + "椰奶", + "王小美" + ], + "burstCD": 15, + "id": "10000037", + "name": "甘雨", + "nameEn": "Ganyu", + "skillCD": 10, + "weapon": "12" + }, + { + "alias": [ + "阿贝多", + "Albedo", + "可莉哥哥", + "升降机", + "升降台", + "电梯", + "白垩之子", + "贝爷", + "白垩", + "阿贝少", + "花呗多", + "阿贝夕", + "阿师傅" + ], + "burstCD": 12, + "id": "10000038", + "name": "阿贝多", + "nameEn": "Albedo", + "skillCD": 4, + "weapon": "1" + }, + { + "alias": [ + "迪奥娜", + "Diona", + "迪欧娜", + "dio娜", + "冰猫", + "猫猫", + "猫娘", + "喵喵", + "调酒师" + ], + "burstCD": 20, + "id": "10000039", + "name": "迪奥娜", + "nameEn": "Diona", + "skillCD": 6, + "skillHoldCD": 15, + "weapon": "12" + }, + { + "alias": [ + "莫娜", + "Mona", + "穷鬼", + "穷光蛋", + "穷", + "莫纳", + "占星术士", + "占星师", + "讨龙真君", + "半部讨龙真君", + "阿斯托洛吉斯·莫娜·梅姬斯图斯", + "梅姬斯图斯", + "梅姬斯图斯姬" + ], + "burstCD": 15, + "id": "10000041", + "name": "莫娜", + "nameEn": "Mona", + "skillCD": 12, + "weapon": "10" + }, + { + "alias": [ + "刻晴", + "Keqing", + "刻情", + "氪晴", + "刻师傅", + "刻师父", + "牛杂", + "牛杂师傅", + "斩尽牛杂", + "免疫", + "免疫免疫", + "屁斜剑法", + "玉衡星", + "阿晴", + "啊晴", + "璃月雷神" + ], + "burstCD": 12, + "id": "10000042", + "name": "刻晴", + "nameEn": "Keqing", + "skillCD": 7.5, + "weapon": "1" + }, + { + "alias": [ + "砂糖", + "Sucrose", + "sucrose" + ], + "burstCD": 20, + "id": "10000043", + "name": "砂糖", + "nameEn": "Sucrose", + "skillCD": 15, + "weapon": "10" + }, + { + "alias": [ + "辛焱", + "Xinyan", + "辛炎", + "黑妹", + "摇滚" + ], + "burstCD": 15, + "id": "10000044", + "name": "辛焱", + "nameEn": "Xinyan", + "skillCD": 18, + "weapon": "11" + }, + { + "alias": [ + "罗莎莉亚", + "Rosaria", + "罗莎莉娅", + "白色史莱姆", + "白史莱姆", + "修女", + "罗莎利亚", + "罗莎利娅", + "罗沙莉亚", + "罗沙莉娅", + "罗沙利亚", + "罗沙利娅", + "萝莎莉亚", + "萝莎莉娅", + "萝莎利亚", + "萝莎利娅", + "萝沙莉亚", + "萝沙莉娅", + "萝沙利亚", + "萝沙利娅" + ], + "burstCD": 15, + "id": "10000045", + "name": "罗莎莉亚", + "nameEn": "Rosaria", + "skillCD": 6, + "weapon": "13" + }, + { + "alias": [ + "胡桃", + "Hu Tao", + "HuTao", + "Hutao", + "胡淘", + "往生堂堂主", + "火化", + "抬棺的", + "蝴蝶", + "核桃", + "堂主", + "胡堂主", + "雪霁梅香", + "桃子", + "桃" + ], + "burstCD": 15, + "id": "10000046", + "name": "胡桃", + "nameEn": "Hutao", + "skillCD": 16, + "weapon": "13" + }, + { + "alias": [ + "枫原万叶", + "Kaedehara Kazuha", + "Kazuha", + "万叶", + "叶天帝", + "天帝", + "叶师傅" + ], + "burstCD": 15, + "id": "10000047", + "name": "枫原万叶", + "nameEn": "Kazuha", + "skillCD": 6, + "skillHoldCD": 9, + "weapon": "1" + }, + { + "alias": [ + "烟绯", + "Yanfei", + "烟老师", + "律师", + "罗翔" + ], + "burstCD": 20, + "id": "10000048", + "name": "烟绯", + "nameEn": "Feiyan", + "skillCD": 9, + "weapon": "10" + }, + { + "alias": [ + "宵宫", + "Yoimiya", + "霄宫", + "烟花", + "肖宫", + "肖工", + "绷带女孩" + ], + "burstCD": 15, + "id": "10000049", + "name": "宵宫", + "nameEn": "Yoimiya", + "skillCD": 18, + "weapon": "12" + }, + { + "alias": [ + "托马", + "Thoma", + "家政官", + "太郎丸", + "地头蛇", + "男仆", + "拖马" + ], + "burstCD": 20, + "id": "10000050", + "name": "托马", + "nameEn": "Tohma", + "skillCD": 15, + "weapon": "13" + }, + { + "alias": [ + "优菈", + "Eula", + "优拉", + "尤拉", + "尤菈", + "浪花骑士", + "记仇", + "劳伦斯" + ], + "burstCD": 20, + "id": "10000051", + "name": "优菈", + "nameEn": "Eula", + "skillCD": 4, + "skillHoldCD": 10, + "weapon": "11" + }, + { + "alias": [ + "雷电将军", + "Raiden Shogun", + "Raiden", + "雷神", + "将军", + "雷军", + "巴尔", + "阿影", + "影", + "巴尔泽布", + "煮饭婆", + "奶香一刀", + "无想一刀", + "宅女" + ], + "burstCD": 18, + "id": "10000052", + "name": "雷电将军", + "nameEn": "Shougun", + "skillCD": 10, + "weapon": "13" + }, + { + "alias": [ + "早柚", + "Sayu", + "小狸猫", + "狸猫", + "忍者", + "貉" + ], + "burstCD": 20, + "id": "10000053", + "name": "早柚", + "nameEn": "Sayu", + "skillCD": 6, + "weapon": "11" + }, + { + "alias": [ + "珊瑚宫心海", + "Sangonomiya Kokomi", + "Kokomi", + "心海", + "军师", + "珊瑚宫", + "书记", + "观赏鱼", + "水母", + "鱼", + "美人鱼" + ], + "burstCD": 18, + "id": "10000054", + "name": "珊瑚宫心海", + "nameEn": "Kokomi", + "skillCD": 20, + "weapon": "10" + }, + { + "alias": [ + "五郎", + "Gorou", + "柴犬", + "土狗", + "希娜", + "希娜小姐" + ], + "burstCD": 20, + "id": "10000055", + "name": "五郎", + "nameEn": "Gorou", + "skillCD": 10, + "weapon": "12" + }, + { + "alias": [ + "九条裟罗", + "Kujou Sara", + "Sara", + "九条", + "九条沙罗", + "裟罗", + "沙罗", + "天狗" + ], + "burstCD": 20, + "id": "10000056", + "name": "九条裟罗", + "nameEn": "Sara", + "skillCD": 10, + "weapon": "12" + }, + { + "alias": [ + "荒泷一斗", + "Arataki Itto", + "Itto", + "荒龙一斗", + "荒泷天下第一斗", + "一斗", + "一抖", + "荒泷", + "1斗", + "岩牛", + "岩牛牛", + "斗战岩牛", + "斗子哥", + "牛子哥", + "牛子", + "孩子王", + "斗虫", + "巧乐兹", + "放牛的" + ], + "burstCD": 18, + "id": "10000057", + "name": "荒泷一斗", + "nameEn": "Itto", + "skillCD": 10, + "weapon": "11" + }, + { + "alias": [ + "八重神子", + "Yae Miko", + "Miko", + "八重", + "神子", + "狐狸", + "想得美哦", + "巫女", + "屑狐狸", + "骚狐狸", + "八重宫司", + "婶子", + "小八", + "八重寄子", + "寄子", + "八神虫子", + "八神重子" + ], + "burstCD": 22, + "id": "10000058", + "name": "八重神子", + "nameEn": "Yae", + "skillCD": 4, + "weapon": "10" + }, + { + "alias": [ + "鹿野院平藏", + "shikanoin heizou", + "Heizou", + "鹿野苑", + "鹿野院", + "平藏", + "鹿野苑平藏", + "小鹿" + ], + "burstCD": 12, + "id": "10000059", + "name": "鹿野院平藏", + "nameEn": "Heizo", + "skillCD": 10, + "weapon": "10" + }, + { + "alias": [ + "夜兰", + "Yelan", + "夜阑", + "叶澜", + "腋兰", + "夜天后" + ], + "burstCD": 18, + "id": "10000060", + "name": "夜兰", + "nameEn": "Yelan", + "skillCD": 10, + "weapon": "12" + }, + { + "alias": [ + "绮良良", + "Kirara", + "大猫猫", + "大喵喵", + "稻妻猫猫", + "绮娘娘", + "琦良良", + "良良", + "快递员", + "草猫", + "草猫猫", + "草喵", + "草喵喵", + "猫又" + ], + "burstCD": 15, + "id": "10000061", + "name": "绮良良", + "nameEn": "Momoka", + "skillCD": 8, + "weapon": "1" + }, + { + "alias": [ + "埃洛伊", + "Aloy" + ], + "burstCD": 12, + "id": "10000062", + "name": "埃洛伊", + "nameEn": "Aloy", + "skillCD": 20, + "weapon": "12" + }, + { + "alias": [ + "申鹤", + "Shenhe", + "神鹤", + "小姨", + "小姨子", + "审鹤" + ], + "burstCD": 20, + "id": "10000063", + "name": "申鹤", + "nameEn": "Shenhe", + "skillCD": 10, + "skillHoldCD": 15, + "weapon": "13" + }, + { + "alias": [ + "云堇", + "Yun Jin", + "yun jin", + "云瑾", + "云先生", + "云锦", + "神女劈观" + ], + "burstCD": 15, + "id": "10000064", + "name": "云堇", + "nameEn": "Yunjin", + "skillCD": 9, + "weapon": "13" + }, + { + "alias": [ + "久岐忍", + "Kuki Shinobu", + "Kuki", + "Shinobu", + "97忍", + "小忍", + "久歧忍", + "97", + "茄忍", + "茄子", + "紫茄子", + "阿忍", + "忍姐" + ], + "burstCD": 15, + "id": "10000065", + "name": "久岐忍", + "nameEn": "Shinobu", + "skillCD": 15, + "weapon": "1" + }, + { + "alias": [ + "神里绫人", + "Kamisato Ayato", + "Ayato", + "绫人", + "神里凌人", + "凌人", + "0人", + "神人", + "零人", + "大舅哥" + ], + "burstCD": 20, + "id": "10000066", + "name": "神里绫人", + "nameEn": "Ayato", + "skillCD": 12, + "weapon": "1" + }, + { + "alias": [ + "柯莱", + "Collei", + "柯来", + "科莱", + "科来", + "小天使", + "须弥安柏", + "草安柏", + "须弥飞行冠军" + ], + "burstCD": 15, + "id": "10000067", + "name": "柯莱", + "nameEn": "Collei", + "skillCD": 12, + "weapon": "12" + }, + { + "alias": [ + "多莉", + "Dori", + "多利", + "多力", + "奸商" + ], + "burstCD": 20, + "id": "10000068", + "name": "多莉", + "nameEn": "Dori", + "skillCD": 9, + "weapon": "11" + }, + { + "alias": [ + "提纳里", + "Tighnari", + "提那里", + "小提", + "驴" + ], + "burstCD": 12, + "id": "10000069", + "name": "提纳里", + "nameEn": "Tighnari", + "skillCD": 12, + "weapon": "12" + }, + { + "alias": [ + "妮露", + "Nilou", + "尼露", + "妮璐", + "舞娘", + "红牛" + ], + "burstCD": 18, + "id": "10000070", + "name": "妮露", + "nameEn": "Nilou", + "skillCD": 18, + "weapon": "1" + }, + { + "alias": [ + "赛诺", + "Cyno", + "塞诺", + "胡狼", + "大风纪官", + "大风机关" + ], + "burstCD": 20, + "id": "10000071", + "name": "赛诺", + "nameEn": "Cyno", + "skillCD": 7.5, + "skillHoldCD": 3, + "weapon": "13" + }, + { + "alias": [ + "坎蒂丝", + "Candace", + "坎迪斯" + ], + "burstCD": 15, + "id": "10000072", + "name": "坎蒂丝", + "nameEn": "Candace", + "skillCD": 6, + "skillHoldCD": 9, + "weapon": "13" + }, + { + "alias": [ + "纳西妲", + "Nahida", + "草神", + "小吉祥", + "大吉祥", + "小草神", + "大慈树王", + "小吉祥草王", + "草萝莉", + "羽毛球", + "摩诃善法大吉祥智慧主", + "智慧主", + "智慧之神", + "布耶尔" + ], + "burstCD": 13.5, + "id": "10000073", + "name": "纳西妲", + "nameEn": "Nahida", + "skillCD": 5, + "skillHoldCD": 6, + "weapon": "10" + }, + { + "alias": [ + "莱依拉", + "Layla", + "莱依菈", + "来依菈", + "来依拉" + ], + "burstCD": 12, + "id": "10000074", + "name": "莱依拉", + "nameEn": "Layla", + "skillCD": 12, + "weapon": "1" + }, + { + "alias": [ + "流浪者", + "Wanderer", + "散兵", + "国崩", + "雷电国崩", + "大炮", + "雷电大炮", + "雷大炮", + "伞兵", + "斯卡拉姆齐" + ], + "burstCD": 15, + "id": "10000075", + "name": "流浪者", + "nameEn": "Wanderer", + "skillCD": 6, + "weapon": "10" + }, + { + "alias": [ + "珐露珊", + "Faruzan", + "法露珊", + "法璐珊", + "法露姗", + "法璐姗", + "珐露姗", + "珐璐姗", + "百岁珊", + "百岁山", + "前辈", + "仙贝" + ], + "burstCD": 20, + "id": "10000076", + "name": "珐露珊", + "nameEn": "Faruzan", + "skillCD": 6, + "weapon": "12" + }, + { + "alias": [ + "瑶瑶", + "Yaoyao", + "遥遥", + "萝卜", + "月桂" + ], + "burstCD": 20, + "id": "10000077", + "name": "瑶瑶", + "nameEn": "Yaoyao", + "skillCD": 15, + "weapon": "13" + }, + { + "alias": [ + "艾尔海森", + "Alhaitham", + "海哥", + "埃尔海森", + "海森", + "海参", + "书记官" + ], + "burstCD": 18, + "id": "10000078", + "name": "艾尔海森", + "nameEn": "Alhatham", + "skillCD": 18, + "weapon": "1" + }, + { + "alias": [ + "迪希雅", + "Dehya", + "迪希亚", + "迪希娅", + "迪西雅", + "迪西亚" + ], + "burstCD": 18, + "id": "10000079", + "name": "迪希雅", + "nameEn": "Dehya", + "skillCD": 20, + "weapon": "11" + }, + { + "alias": [ + "米卡", + "Mika", + "鹦鹉", + "凤头", + "凤头鹦鹉" + ], + "burstCD": 18, + "id": "10000080", + "name": "米卡", + "nameEn": "Mika", + "skillCD": 15, + "weapon": "13" + }, + { + "alias": [ + "卡维", + "Kaveh", + "艾尔海森室友" + ], + "burstCD": 20, + "id": "10000081", + "name": "卡维", + "nameEn": "Kaveh", + "skillCD": 6, + "weapon": "11" + }, + { + "alias": [ + "白术", + "Baizhu", + "长生", + "白医生" + ], + "burstCD": 20, + "id": "10000082", + "name": "白术", + "nameEn": "Baizhuer", + "skillCD": 10, + "weapon": "10" + }, + { + "alias": [ + "琳妮特", + "Lynette", + "林妮特", + "林尼特", + "琳尼特", + "女魔术师", + "魔术猫", + "魔术喵", + "登登" + ], + "burstCD": 18, + "id": "10000083", + "name": "琳妮特", + "nameEn": "Linette", + "skillCD": 12, + "weapon": "1" + }, + { + "alias": [ + "林尼", + "Lyney", + "林妮", + "琳尼", + "琳妮", + "男魔术师", + "魔术师" + ], + "burstCD": 15, + "id": "10000084", + "name": "林尼", + "nameEn": "Liney", + "skillCD": 15, + "weapon": "12" + }, + { + "alias": [ + "菲米尼", + "Freminet", + "非米尼", + "潜水员" + ], + "burstCD": 15, + "id": "10000085", + "name": "菲米尼", + "nameEn": "Freminet", + "skillCD": 10, + "weapon": "11" + }, + { + "alias": [ + "莱欧斯利", + "Wriothesley", + "莱欧", + "枫丹桑博", + "公爵", + "典狱长", + "牢大" + ], + "burstCD": 15, + "id": "10000086", + "name": "莱欧斯利", + "nameEn": "Wriothesley", + "skillCD": 16, + "weapon": "10" + }, + { + "alias": [ + "那维莱特", + "Neuvillette", + "那维", + "水龙王", + "水龙", + "审判官", + "海獭", + "龙王", + "最高审判官", + "水之龙王" + ], + "burstCD": 18, + "id": "10000087", + "name": "那维莱特", + "nameEn": "Neuvillette", + "skillCD": 12, + "weapon": "10" + }, + { + "alias": [ + "夏洛蒂", + "Charlotte", + "夏洛", + "夏洛帝", + "记者", + "小记者", + "佳能400D", + "400D" + ], + "burstCD": 20, + "id": "10000088", + "name": "夏洛蒂", + "nameEn": "Charlotte", + "skillCD": 12, + "skillHoldCD": 18, + "weapon": "10" + }, + { + "alias": [ + "芙宁娜", + "Furina", + "Focalors", + "水神", + "芙芙", + "芙卡洛斯", + "傻芙芙" + ], + "burstCD": 15, + "id": "10000089", + "name": "芙宁娜", + "nameEn": "Furina", + "skillCD": 20, + "weapon": "1" + }, + { + "alias": [ + "夏沃蕾", + "chevreuse", + "夏沃雷" + ], + "burstCD": 15, + "id": "10000090", + "name": "夏沃蕾", + "nameEn": "Chevreuse", + "skillCD": 15, + "weapon": "13" + }, + { + "alias": [ + "娜维娅", + "navia", + "大小姐", + "刺玫会", + "黄豆", + "流汗黄豆", + "黄豆姐", + "娜薇娅", + "娜薇雅", + "娜维雅" + ], + "burstCD": 15, + "id": "10000091", + "name": "娜维娅", + "nameEn": "Navia", + "skillCD": 9, + "weapon": "11" + }, + { + "alias": [ + "嘉明", + "Gaming", + "jiaming", + "佳明", + "嘉铭", + "家明", + "镖师", + "舞狮少年", + "舞狮" + ], + "burstCD": 15, + "id": "10000092", + "name": "嘉明", + "nameEn": "Gaming", + "skillCD": 6, + "weapon": "11" + }, + { + "alias": [ + "闲云", + "Xianyun", + "流云", + "刘云", + "留云", + "野鹤", + "那个女人", + "留云借风", + "留云借风真君", + "很会聊天", + "很会聊天真君" + ], + "burstCD": 18, + "id": "10000093", + "name": "闲云", + "nameEn": "Liuyun", + "skillCD": 12, + "weapon": "10" + }, + { + "alias": [ + "千织", + "Chiori", + "千只", + "设计师", + "裁缝", + "千织屋老板" + ], + "burstCD": 13.5, + "id": "10000094", + "name": "千织", + "nameEn": "Chiori", + "skillCD": 16, + "weapon": "1" + }, + { + "alias": [ + "希格雯", + "Sigewinne", + "希格文", + "护士", + "护士长" + ], + "burstCD": 18, + "id": "10000095", + "name": "希格雯", + "nameEn": "Sigewinne", + "skillCD": 18, + "weapon": "12" + }, + { + "alias": [ + "阿蕾奇诺", + "Arlecchino", + "阿雷奇诺", + "仆人", + "黑优菈", + "黑暗优菈", + "父亲", + "佩露薇利" + ], + "burstCD": 15, + "id": "10000096", + "name": "阿蕾奇诺", + "nameEn": "Arlecchino", + "skillCD": 30, + "weapon": "13" + }, + { + "alias": [ + "赛索斯", + "Sethos", + "塞索斯", + "塞索思", + "赛索思" + ], + "burstCD": 15, + "id": "10000097", + "name": "赛索斯", + "nameEn": "Sethos", + "skillCD": 8, + "weapon": "12" + }, + { + "alias": [ + "克洛琳德", + "Clorinde", + "琳德", + "科洛琳德", + "克洛林德", + "克罗林德", + "苹果姐" + ], + "burstCD": 15, + "id": "10000098", + "name": "克洛琳德", + "nameEn": "Clorinde", + "skillCD": 16, + "weapon": "1" + }, + { + "alias": [ + "艾梅莉埃", + "Emilie", + "调香师", + "艾梅", + "香水设计师", + "现场清理人" + ], + "burstCD": 13.5, + "id": "10000099", + "name": "艾梅莉埃", + "nameEn": "Emilie", + "skillCD": 10, + "skillHoldCD": 14, + "weapon": "13" + }, + { + "alias": [ + "卡齐娜", + "Kachina", + "卡奇娜", + "卡齐纳", + "卡齐那", + "卡其那", + "冲天钻钻", + "岩莉莉" + ], + "burstCD": 18, + "id": "10000100", + "name": "卡齐娜", + "nameEn": "Kachina", + "skillCD": 20, + "weapon": "13" + }, + { + "alias": [ + "基尼奇", + "Kinich", + "基哥", + "基尼齐", + "蜘蛛侠" + ], + "burstCD": 18, + "id": "10000101", + "name": "基尼奇", + "nameEn": "Kinich", + "skillCD": 18, + "weapon": "11" + }, + { + "alias": [ + "玛拉妮", + "Mualani", + "马拉尼", + "鲨鱼妹", + "海豹妹", + "海豹", + "纳塔鲨", + "逐浪客" + ], + "burstCD": 15, + "id": "10000102", + "name": "玛拉妮", + "nameEn": "Mualani", + "skillCD": 1.8, + "skillHoldCD": 6, + "weapon": "10" + }, + { + "alias": [ + "希诺宁", + "Xilonen", + "豹女", + "岩大猫", + "大岩猫", + "岩猫", + "岩猫猫", + "西诺宁" + ], + "burstCD": 15, + "id": "10000103", + "name": "希诺宁", + "nameEn": "Xilonen", + "skillCD": 7, + "weapon": "1" + }, + { + "alias": [ + "恰斯卡", + "Chasca", + "武卡", + "调停人", + "鸟人" + ], + "burstCD": 15, + "id": "10000104", + "name": "恰斯卡", + "nameEn": "Chasca", + "skillCD": 6.5, + "weapon": "12" + }, + { + "alias": [ + "欧洛伦", + "Ororon", + "庇笛", + "孙子", + "大孙子", + "蝙蝠侠" + ], + "burstCD": 15, + "id": "10000105", + "name": "欧洛伦", + "nameEn": "Olorun", + "skillCD": 15, + "weapon": "12" + }, + { + "alias": [ + "玛薇卡", + "Mavuika", + "火神", + "马薇卡", + "玛维卡", + "马维卡", + "马微卡", + "玛微卡" + ], + "burstCD": 18, + "id": "10000106", + "name": "玛薇卡", + "nameEn": "Mavuika", + "skillCD": 15, + "weapon": "11" + }, + { + "alias": [ + "茜特菈莉", + "Citlali", + "西特菈莉", + "西特拉莉", + "茜特拉莉", + "西特拉利", + "黑曜石奶奶", + "黑曜石", + "奶奶", + "老伴" + ], + "burstCD": 15, + "id": "10000107", + "name": "茜特菈莉", + "nameEn": "Citlali", + "skillCD": 16, + "weapon": "10" + }, + { + "alias": [ + "蓝砚", + "Lanyan", + "蓝燕", + "兰砚", + "兰燕", + "藤编师", + "风鹰侠", + "蓝研", + "蓝颜", + "兰颜" + ], + "burstCD": 15, + "id": "10000108", + "name": "蓝砚", + "nameEn": "Lanyan", + "skillCD": 16, + "weapon": "10" + }, + { + "alias": [ + "梦见月瑞希", + "Yumemizuki Mizuki", + "Mizuki", + "梦见", + "梦见月", + "瑞希", + "瑞幸", + "木更", + "梗小姐", + "食梦貘", + "梦魔", + "魅魔", + "心理医生", + "心理诊疗师" + ], + "burstCD": 15, + "id": "10000109", + "name": "梦见月瑞希", + "nameEn": "Mizuki", + "skillCD": 15, + "weapon": "10" + }, + { + "alias": [ + "伊安珊", + "Iansan", + "123", + "伊安姗", + "教练", + "依安珊" + ], + "burstCD": 18, + "id": "10000110", + "name": "伊安珊", + "nameEn": "Iansan", + "skillCD": 16, + "weapon": "13" + }, + { + "alias": [ + "瓦雷莎", + "Varesa", + "瓦蕾莎", + "瓦蕾沙", + "瓦蕾砂", + "瓦雷沙", + "牛头人", + "牛战士", + "牛牛", + "雷牛", + "雷牛牛", + "奶牛", + "粉牛" + ], + "burstCD": 18, + "id": "10000111", + "name": "瓦雷莎", + "nameEn": "Varesa", + "skillCD": 9, + "weapon": "10" + }, + { + "alias": [ + "爱可菲", + "Escoffier", + "厨师", + "爱可非", + "艾可菲", + "艾可非" + ], + "burstCD": 15, + "id": "10000112", + "name": "爱可菲", + "nameEn": "Escoffier", + "skillCD": 15, + "skillHoldCD": 6, + "weapon": "13" + }, + { + "alias": [ + "伊法", + "Ifa", + "哥们", + "医生" + ], + "burstCD": 15, + "id": "10000113", + "name": "伊法", + "nameEn": "Ifa", + "skillCD": 7.5, + "weapon": "10" + }, + { + "alias": [ + "丝柯克", + "Skirk", + "丝柯可", + "斯柯克" + ], + "burstCD": 15, + "id": "10000114", + "name": "丝柯克", + "nameEn": "SkirkNew", + "skillCD": 8, + "weapon": "1" + }, + { + "alias": [ + "塔利雅", + "Dahlia", + "塔利亚", + "塔丽雅", + "主祭", + "助祭" + ], + "burstCD": 15, + "id": "10000115", + "name": "塔利雅", + "nameEn": "Dahlia", + "skillCD": 9, + "weapon": "1" + } ] \ No newline at end of file diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/七七01.png b/repo/js/AutoStoryLoader/Data/characterimage/七七01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/七七01.png rename to repo/js/AutoStoryLoader/Data/characterimage/七七01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/丝柯克01.png b/repo/js/AutoStoryLoader/Data/characterimage/丝柯克01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/丝柯克01.png rename to repo/js/AutoStoryLoader/Data/characterimage/丝柯克01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/丽莎01.png b/repo/js/AutoStoryLoader/Data/characterimage/丽莎01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/丽莎01.png rename to repo/js/AutoStoryLoader/Data/characterimage/丽莎01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/丽莎02.png b/repo/js/AutoStoryLoader/Data/characterimage/丽莎02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/丽莎02.png rename to repo/js/AutoStoryLoader/Data/characterimage/丽莎02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/久岐忍01.png b/repo/js/AutoStoryLoader/Data/characterimage/久岐忍01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/久岐忍01.png rename to repo/js/AutoStoryLoader/Data/characterimage/久岐忍01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/九条裟罗01.png b/repo/js/AutoStoryLoader/Data/characterimage/九条裟罗01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/九条裟罗01.png rename to repo/js/AutoStoryLoader/Data/characterimage/九条裟罗01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/云堇01.png b/repo/js/AutoStoryLoader/Data/characterimage/云堇01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/云堇01.png rename to repo/js/AutoStoryLoader/Data/characterimage/云堇01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/五郎01.png b/repo/js/AutoStoryLoader/Data/characterimage/五郎01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/五郎01.png rename to repo/js/AutoStoryLoader/Data/characterimage/五郎01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/伊安珊01.png b/repo/js/AutoStoryLoader/Data/characterimage/伊安珊01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/伊安珊01.png rename to repo/js/AutoStoryLoader/Data/characterimage/伊安珊01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/伊法01.png b/repo/js/AutoStoryLoader/Data/characterimage/伊法01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/伊法01.png rename to repo/js/AutoStoryLoader/Data/characterimage/伊法01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/优菈01.png b/repo/js/AutoStoryLoader/Data/characterimage/优菈01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/优菈01.png rename to repo/js/AutoStoryLoader/Data/characterimage/优菈01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/克洛琳德01.png b/repo/js/AutoStoryLoader/Data/characterimage/克洛琳德01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/克洛琳德01.png rename to repo/js/AutoStoryLoader/Data/characterimage/克洛琳德01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/八重神子01.png b/repo/js/AutoStoryLoader/Data/characterimage/八重神子01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/八重神子01.png rename to repo/js/AutoStoryLoader/Data/characterimage/八重神子01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/凝光01.png b/repo/js/AutoStoryLoader/Data/characterimage/凝光01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/凝光01.png rename to repo/js/AutoStoryLoader/Data/characterimage/凝光01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/凝光02.png b/repo/js/AutoStoryLoader/Data/characterimage/凝光02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/凝光02.png rename to repo/js/AutoStoryLoader/Data/characterimage/凝光02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/凯亚01.png b/repo/js/AutoStoryLoader/Data/characterimage/凯亚01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/凯亚01.png rename to repo/js/AutoStoryLoader/Data/characterimage/凯亚01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/凯亚02.png b/repo/js/AutoStoryLoader/Data/characterimage/凯亚02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/凯亚02.png rename to repo/js/AutoStoryLoader/Data/characterimage/凯亚02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/刻晴01.png b/repo/js/AutoStoryLoader/Data/characterimage/刻晴01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/刻晴01.png rename to repo/js/AutoStoryLoader/Data/characterimage/刻晴01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/刻晴02.png b/repo/js/AutoStoryLoader/Data/characterimage/刻晴02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/刻晴02.png rename to repo/js/AutoStoryLoader/Data/characterimage/刻晴02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/北斗01.png b/repo/js/AutoStoryLoader/Data/characterimage/北斗01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/北斗01.png rename to repo/js/AutoStoryLoader/Data/characterimage/北斗01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/千织01.png b/repo/js/AutoStoryLoader/Data/characterimage/千织01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/千织01.png rename to repo/js/AutoStoryLoader/Data/characterimage/千织01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/卡维01.png b/repo/js/AutoStoryLoader/Data/characterimage/卡维01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/卡维01.png rename to repo/js/AutoStoryLoader/Data/characterimage/卡维01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/卡齐娜01.png b/repo/js/AutoStoryLoader/Data/characterimage/卡齐娜01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/卡齐娜01.png rename to repo/js/AutoStoryLoader/Data/characterimage/卡齐娜01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/可莉.png b/repo/js/AutoStoryLoader/Data/characterimage/可莉.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/可莉.png rename to repo/js/AutoStoryLoader/Data/characterimage/可莉.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/可莉02.png b/repo/js/AutoStoryLoader/Data/characterimage/可莉02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/可莉02.png rename to repo/js/AutoStoryLoader/Data/characterimage/可莉02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/嘉明01.png b/repo/js/AutoStoryLoader/Data/characterimage/嘉明01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/嘉明01.png rename to repo/js/AutoStoryLoader/Data/characterimage/嘉明01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/坎蒂丝01.png b/repo/js/AutoStoryLoader/Data/characterimage/坎蒂丝01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/坎蒂丝01.png rename to repo/js/AutoStoryLoader/Data/characterimage/坎蒂丝01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/埃洛伊01.png b/repo/js/AutoStoryLoader/Data/characterimage/埃洛伊01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/埃洛伊01.png rename to repo/js/AutoStoryLoader/Data/characterimage/埃洛伊01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/基尼奇01.png b/repo/js/AutoStoryLoader/Data/characterimage/基尼奇01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/基尼奇01.png rename to repo/js/AutoStoryLoader/Data/characterimage/基尼奇01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/塔利雅01.png b/repo/js/AutoStoryLoader/Data/characterimage/塔利雅01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/塔利雅01.png rename to repo/js/AutoStoryLoader/Data/characterimage/塔利雅01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/夏沃蕾01.png b/repo/js/AutoStoryLoader/Data/characterimage/夏沃蕾01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/夏沃蕾01.png rename to repo/js/AutoStoryLoader/Data/characterimage/夏沃蕾01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/夏洛蒂01.png b/repo/js/AutoStoryLoader/Data/characterimage/夏洛蒂01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/夏洛蒂01.png rename to repo/js/AutoStoryLoader/Data/characterimage/夏洛蒂01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/多莉01.png b/repo/js/AutoStoryLoader/Data/characterimage/多莉01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/多莉01.png rename to repo/js/AutoStoryLoader/Data/characterimage/多莉01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/夜兰01.png b/repo/js/AutoStoryLoader/Data/characterimage/夜兰01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/夜兰01.png rename to repo/js/AutoStoryLoader/Data/characterimage/夜兰01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/妮露01.png b/repo/js/AutoStoryLoader/Data/characterimage/妮露01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/妮露01.png rename to repo/js/AutoStoryLoader/Data/characterimage/妮露01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/妮露02.png b/repo/js/AutoStoryLoader/Data/characterimage/妮露02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/妮露02.png rename to repo/js/AutoStoryLoader/Data/characterimage/妮露02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/娜维娅01.png b/repo/js/AutoStoryLoader/Data/characterimage/娜维娅01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/娜维娅01.png rename to repo/js/AutoStoryLoader/Data/characterimage/娜维娅01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/安柏01.png b/repo/js/AutoStoryLoader/Data/characterimage/安柏01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/安柏01.png rename to repo/js/AutoStoryLoader/Data/characterimage/安柏01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/安柏02.png b/repo/js/AutoStoryLoader/Data/characterimage/安柏02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/安柏02.png rename to repo/js/AutoStoryLoader/Data/characterimage/安柏02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/宵宫01.png b/repo/js/AutoStoryLoader/Data/characterimage/宵宫01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/宵宫01.png rename to repo/js/AutoStoryLoader/Data/characterimage/宵宫01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/希格雯01.png b/repo/js/AutoStoryLoader/Data/characterimage/希格雯01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/希格雯01.png rename to repo/js/AutoStoryLoader/Data/characterimage/希格雯01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/希诺宁01.png b/repo/js/AutoStoryLoader/Data/characterimage/希诺宁01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/希诺宁01.png rename to repo/js/AutoStoryLoader/Data/characterimage/希诺宁01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/恰斯卡01.png b/repo/js/AutoStoryLoader/Data/characterimage/恰斯卡01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/恰斯卡01.png rename to repo/js/AutoStoryLoader/Data/characterimage/恰斯卡01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/托马01.png b/repo/js/AutoStoryLoader/Data/characterimage/托马01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/托马01.png rename to repo/js/AutoStoryLoader/Data/characterimage/托马01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/提纳里01.png b/repo/js/AutoStoryLoader/Data/characterimage/提纳里01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/提纳里01.png rename to repo/js/AutoStoryLoader/Data/characterimage/提纳里01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/旅行者01.png b/repo/js/AutoStoryLoader/Data/characterimage/旅行者01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/旅行者01.png rename to repo/js/AutoStoryLoader/Data/characterimage/旅行者01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/旅行者02.png b/repo/js/AutoStoryLoader/Data/characterimage/旅行者02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/旅行者02.png rename to repo/js/AutoStoryLoader/Data/characterimage/旅行者02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/早柚01.png b/repo/js/AutoStoryLoader/Data/characterimage/早柚01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/早柚01.png rename to repo/js/AutoStoryLoader/Data/characterimage/早柚01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/林尼01.png b/repo/js/AutoStoryLoader/Data/characterimage/林尼01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/林尼01.png rename to repo/js/AutoStoryLoader/Data/characterimage/林尼01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/枫原万叶01.png b/repo/js/AutoStoryLoader/Data/characterimage/枫原万叶01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/枫原万叶01.png rename to repo/js/AutoStoryLoader/Data/characterimage/枫原万叶01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/柯莱01.png b/repo/js/AutoStoryLoader/Data/characterimage/柯莱01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/柯莱01.png rename to repo/js/AutoStoryLoader/Data/characterimage/柯莱01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/梦见月瑞希01.png b/repo/js/AutoStoryLoader/Data/characterimage/梦见月瑞希01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/梦见月瑞希01.png rename to repo/js/AutoStoryLoader/Data/characterimage/梦见月瑞希01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/欧洛伦01.png b/repo/js/AutoStoryLoader/Data/characterimage/欧洛伦01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/欧洛伦01.png rename to repo/js/AutoStoryLoader/Data/characterimage/欧洛伦01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/流浪者01.png b/repo/js/AutoStoryLoader/Data/characterimage/流浪者01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/流浪者01.png rename to repo/js/AutoStoryLoader/Data/characterimage/流浪者01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/温迪01.png b/repo/js/AutoStoryLoader/Data/characterimage/温迪01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/温迪01.png rename to repo/js/AutoStoryLoader/Data/characterimage/温迪01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/烟绯01.png b/repo/js/AutoStoryLoader/Data/characterimage/烟绯01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/烟绯01.png rename to repo/js/AutoStoryLoader/Data/characterimage/烟绯01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/爱可菲01.png b/repo/js/AutoStoryLoader/Data/characterimage/爱可菲01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/爱可菲01.png rename to repo/js/AutoStoryLoader/Data/characterimage/爱可菲01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/玛拉妮01.png b/repo/js/AutoStoryLoader/Data/characterimage/玛拉妮01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/玛拉妮01.png rename to repo/js/AutoStoryLoader/Data/characterimage/玛拉妮01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/玛薇卡01.png b/repo/js/AutoStoryLoader/Data/characterimage/玛薇卡01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/玛薇卡01.png rename to repo/js/AutoStoryLoader/Data/characterimage/玛薇卡01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/珊瑚宫心海01.png b/repo/js/AutoStoryLoader/Data/characterimage/珊瑚宫心海01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/珊瑚宫心海01.png rename to repo/js/AutoStoryLoader/Data/characterimage/珊瑚宫心海01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/珐露珊01.png b/repo/js/AutoStoryLoader/Data/characterimage/珐露珊01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/珐露珊01.png rename to repo/js/AutoStoryLoader/Data/characterimage/珐露珊01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/班尼特01.png b/repo/js/AutoStoryLoader/Data/characterimage/班尼特01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/班尼特01.png rename to repo/js/AutoStoryLoader/Data/characterimage/班尼特01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/琳妮特01.png b/repo/js/AutoStoryLoader/Data/characterimage/琳妮特01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/琳妮特01.png rename to repo/js/AutoStoryLoader/Data/characterimage/琳妮特01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/琴01.png b/repo/js/AutoStoryLoader/Data/characterimage/琴01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/琴01.png rename to repo/js/AutoStoryLoader/Data/characterimage/琴01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/琴02.png b/repo/js/AutoStoryLoader/Data/characterimage/琴02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/琴02.png rename to repo/js/AutoStoryLoader/Data/characterimage/琴02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/瑶瑶01.png b/repo/js/AutoStoryLoader/Data/characterimage/瑶瑶01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/瑶瑶01.png rename to repo/js/AutoStoryLoader/Data/characterimage/瑶瑶01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/瓦蕾莎01.png b/repo/js/AutoStoryLoader/Data/characterimage/瓦蕾莎01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/瓦蕾莎01.png rename to repo/js/AutoStoryLoader/Data/characterimage/瓦蕾莎01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/甘雨01.png b/repo/js/AutoStoryLoader/Data/characterimage/甘雨01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/甘雨01.png rename to repo/js/AutoStoryLoader/Data/characterimage/甘雨01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/甘雨02.png b/repo/js/AutoStoryLoader/Data/characterimage/甘雨02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/甘雨02.png rename to repo/js/AutoStoryLoader/Data/characterimage/甘雨02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/申鹤01.png b/repo/js/AutoStoryLoader/Data/characterimage/申鹤01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/申鹤01.png rename to repo/js/AutoStoryLoader/Data/characterimage/申鹤01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/申鹤02.png b/repo/js/AutoStoryLoader/Data/characterimage/申鹤02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/申鹤02.png rename to repo/js/AutoStoryLoader/Data/characterimage/申鹤02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/白术01.png b/repo/js/AutoStoryLoader/Data/characterimage/白术01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/白术01.png rename to repo/js/AutoStoryLoader/Data/characterimage/白术01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/砂糖01.png b/repo/js/AutoStoryLoader/Data/characterimage/砂糖01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/砂糖01.png rename to repo/js/AutoStoryLoader/Data/characterimage/砂糖01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/神里绫人01.png b/repo/js/AutoStoryLoader/Data/characterimage/神里绫人01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/神里绫人01.png rename to repo/js/AutoStoryLoader/Data/characterimage/神里绫人01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/神里绫华01.png b/repo/js/AutoStoryLoader/Data/characterimage/神里绫华01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/神里绫华01.png rename to repo/js/AutoStoryLoader/Data/characterimage/神里绫华01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/神里绫华02.png b/repo/js/AutoStoryLoader/Data/characterimage/神里绫华02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/神里绫华02.png rename to repo/js/AutoStoryLoader/Data/characterimage/神里绫华02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/空01.png b/repo/js/AutoStoryLoader/Data/characterimage/空01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/空01.png rename to repo/js/AutoStoryLoader/Data/characterimage/空01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/米卡01.png b/repo/js/AutoStoryLoader/Data/characterimage/米卡01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/米卡01.png rename to repo/js/AutoStoryLoader/Data/characterimage/米卡01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/纳西妲01.png b/repo/js/AutoStoryLoader/Data/characterimage/纳西妲01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/纳西妲01.png rename to repo/js/AutoStoryLoader/Data/characterimage/纳西妲01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/绮良良01.png b/repo/js/AutoStoryLoader/Data/characterimage/绮良良01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/绮良良01.png rename to repo/js/AutoStoryLoader/Data/characterimage/绮良良01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/绮良良02.png b/repo/js/AutoStoryLoader/Data/characterimage/绮良良02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/绮良良02.png rename to repo/js/AutoStoryLoader/Data/characterimage/绮良良02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/罗莎莉亚01.png b/repo/js/AutoStoryLoader/Data/characterimage/罗莎莉亚01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/罗莎莉亚01.png rename to repo/js/AutoStoryLoader/Data/characterimage/罗莎莉亚01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/罗莎莉亚02.png b/repo/js/AutoStoryLoader/Data/characterimage/罗莎莉亚02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/罗莎莉亚02.png rename to repo/js/AutoStoryLoader/Data/characterimage/罗莎莉亚02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/胡桃01.png b/repo/js/AutoStoryLoader/Data/characterimage/胡桃01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/胡桃01.png rename to repo/js/AutoStoryLoader/Data/characterimage/胡桃01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/胡桃02.png b/repo/js/AutoStoryLoader/Data/characterimage/胡桃02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/胡桃02.png rename to repo/js/AutoStoryLoader/Data/characterimage/胡桃02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/艾尔海森01.png b/repo/js/AutoStoryLoader/Data/characterimage/艾尔海森01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/艾尔海森01.png rename to repo/js/AutoStoryLoader/Data/characterimage/艾尔海森01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/艾梅莉埃01.png b/repo/js/AutoStoryLoader/Data/characterimage/艾梅莉埃01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/艾梅莉埃01.png rename to repo/js/AutoStoryLoader/Data/characterimage/艾梅莉埃01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/芙宁娜01.png b/repo/js/AutoStoryLoader/Data/characterimage/芙宁娜01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/芙宁娜01.png rename to repo/js/AutoStoryLoader/Data/characterimage/芙宁娜01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/芭芭拉01.png b/repo/js/AutoStoryLoader/Data/characterimage/芭芭拉01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/芭芭拉01.png rename to repo/js/AutoStoryLoader/Data/characterimage/芭芭拉01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/芭芭拉02.png b/repo/js/AutoStoryLoader/Data/characterimage/芭芭拉02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/芭芭拉02.png rename to repo/js/AutoStoryLoader/Data/characterimage/芭芭拉02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/茜特菈莉01.png b/repo/js/AutoStoryLoader/Data/characterimage/茜特菈莉01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/茜特菈莉01.png rename to repo/js/AutoStoryLoader/Data/characterimage/茜特菈莉01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/荒泷一斗01.png b/repo/js/AutoStoryLoader/Data/characterimage/荒泷一斗01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/荒泷一斗01.png rename to repo/js/AutoStoryLoader/Data/characterimage/荒泷一斗01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/荧01.png b/repo/js/AutoStoryLoader/Data/characterimage/荧01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/荧01.png rename to repo/js/AutoStoryLoader/Data/characterimage/荧01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/莫娜01.png b/repo/js/AutoStoryLoader/Data/characterimage/莫娜01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/莫娜01.png rename to repo/js/AutoStoryLoader/Data/characterimage/莫娜01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/莱依拉01.png b/repo/js/AutoStoryLoader/Data/characterimage/莱依拉01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/莱依拉01.png rename to repo/js/AutoStoryLoader/Data/characterimage/莱依拉01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/莱欧斯利01.png b/repo/js/AutoStoryLoader/Data/characterimage/莱欧斯利01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/莱欧斯利01.png rename to repo/js/AutoStoryLoader/Data/characterimage/莱欧斯利01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/菲米尼01.png b/repo/js/AutoStoryLoader/Data/characterimage/菲米尼01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/菲米尼01.png rename to repo/js/AutoStoryLoader/Data/characterimage/菲米尼01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/菲谢尔01.png b/repo/js/AutoStoryLoader/Data/characterimage/菲谢尔01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/菲谢尔01.png rename to repo/js/AutoStoryLoader/Data/characterimage/菲谢尔01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/菲谢尔02.png b/repo/js/AutoStoryLoader/Data/characterimage/菲谢尔02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/菲谢尔02.png rename to repo/js/AutoStoryLoader/Data/characterimage/菲谢尔02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/蓝砚01.png b/repo/js/AutoStoryLoader/Data/characterimage/蓝砚01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/蓝砚01.png rename to repo/js/AutoStoryLoader/Data/characterimage/蓝砚01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/行秋01.png b/repo/js/AutoStoryLoader/Data/characterimage/行秋01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/行秋01.png rename to repo/js/AutoStoryLoader/Data/characterimage/行秋01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/行秋02.png b/repo/js/AutoStoryLoader/Data/characterimage/行秋02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/行秋02.png rename to repo/js/AutoStoryLoader/Data/characterimage/行秋02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/诺艾尔01.png b/repo/js/AutoStoryLoader/Data/characterimage/诺艾尔01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/诺艾尔01.png rename to repo/js/AutoStoryLoader/Data/characterimage/诺艾尔01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/赛索斯01.png b/repo/js/AutoStoryLoader/Data/characterimage/赛索斯01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/赛索斯01.png rename to repo/js/AutoStoryLoader/Data/characterimage/赛索斯01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/赛诺01.png b/repo/js/AutoStoryLoader/Data/characterimage/赛诺01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/赛诺01.png rename to repo/js/AutoStoryLoader/Data/characterimage/赛诺01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/辛焱01.png b/repo/js/AutoStoryLoader/Data/characterimage/辛焱01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/辛焱01.png rename to repo/js/AutoStoryLoader/Data/characterimage/辛焱01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/达达利亚.png b/repo/js/AutoStoryLoader/Data/characterimage/达达利亚.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/达达利亚.png rename to repo/js/AutoStoryLoader/Data/characterimage/达达利亚.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪卢克01.png b/repo/js/AutoStoryLoader/Data/characterimage/迪卢克01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪卢克01.png rename to repo/js/AutoStoryLoader/Data/characterimage/迪卢克01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪卢克02.png b/repo/js/AutoStoryLoader/Data/characterimage/迪卢克02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪卢克02.png rename to repo/js/AutoStoryLoader/Data/characterimage/迪卢克02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪奥娜01.png b/repo/js/AutoStoryLoader/Data/characterimage/迪奥娜01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪奥娜01.png rename to repo/js/AutoStoryLoader/Data/characterimage/迪奥娜01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪希雅01.png b/repo/js/AutoStoryLoader/Data/characterimage/迪希雅01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/迪希雅01.png rename to repo/js/AutoStoryLoader/Data/characterimage/迪希雅01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/那维莱特01.png b/repo/js/AutoStoryLoader/Data/characterimage/那维莱特01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/那维莱特01.png rename to repo/js/AutoStoryLoader/Data/characterimage/那维莱特01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/重云01.png b/repo/js/AutoStoryLoader/Data/characterimage/重云01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/重云01.png rename to repo/js/AutoStoryLoader/Data/characterimage/重云01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/钟离01.png b/repo/js/AutoStoryLoader/Data/characterimage/钟离01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/钟离01.png rename to repo/js/AutoStoryLoader/Data/characterimage/钟离01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/闲云01.png b/repo/js/AutoStoryLoader/Data/characterimage/闲云01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/闲云01.png rename to repo/js/AutoStoryLoader/Data/characterimage/闲云01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/阿蕾奇诺01.png b/repo/js/AutoStoryLoader/Data/characterimage/阿蕾奇诺01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/阿蕾奇诺01.png rename to repo/js/AutoStoryLoader/Data/characterimage/阿蕾奇诺01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/阿贝多01.png b/repo/js/AutoStoryLoader/Data/characterimage/阿贝多01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/阿贝多01.png rename to repo/js/AutoStoryLoader/Data/characterimage/阿贝多01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/雷泽01.png b/repo/js/AutoStoryLoader/Data/characterimage/雷泽01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/雷泽01.png rename to repo/js/AutoStoryLoader/Data/characterimage/雷泽01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/雷电将军01.png b/repo/js/AutoStoryLoader/Data/characterimage/雷电将军01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/雷电将军01.png rename to repo/js/AutoStoryLoader/Data/characterimage/雷电将军01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/香菱01.png b/repo/js/AutoStoryLoader/Data/characterimage/香菱01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/香菱01.png rename to repo/js/AutoStoryLoader/Data/characterimage/香菱01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/香菱02.png b/repo/js/AutoStoryLoader/Data/characterimage/香菱02.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/香菱02.png rename to repo/js/AutoStoryLoader/Data/characterimage/香菱02.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/魈01.png b/repo/js/AutoStoryLoader/Data/characterimage/魈01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/魈01.png rename to repo/js/AutoStoryLoader/Data/characterimage/魈01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/characterimage/鹿野院平藏01.png b/repo/js/AutoStoryLoader/Data/characterimage/鹿野院平藏01.png similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/characterimage/鹿野院平藏01.png rename to repo/js/AutoStoryLoader/Data/characterimage/鹿野院平藏01.png diff --git a/repo/js/AAA-Auto-Story-Loader/Data/暂停.json b/repo/js/AutoStoryLoader/Data/暂停.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/Data/暂停.json rename to repo/js/AutoStoryLoader/Data/暂停.json diff --git a/repo/js/AAA-Auto-Story-Loader/README.md b/repo/js/AutoStoryLoader/README.md similarity index 97% rename from repo/js/AAA-Auto-Story-Loader/README.md rename to repo/js/AutoStoryLoader/README.md index 4b7deff1f..55bc7e38a 100644 --- a/repo/js/AAA-Auto-Story-Loader/README.md +++ b/repo/js/AutoStoryLoader/README.md @@ -1,126 +1,126 @@ -# 自动剧情加载器 - 使用说明 -## 项目宗旨 -自动剧情加载器是专为委托开发者设计的**脚本调试与编辑工具**,旨在提升委托开发效率,简化测试流程。 - -> **重要声明**: -> 1. 本项目**不会将任何非委托任务流程脚本上传至脚本仓库** -> 2. **禁止任何人用于商业用途**,禁止在任何场合展示或宣传自动任务效果 -> 3. **不提倡**上传任何任务流程脚本到公开平台 -> 4. 工具仅提供技术框架,**不包含任何自动游戏剧情内容** -> 5. 请勿在任何官方平台(米游社、B站、微博等)讨论本工具 -> 6. 严禁在官方直播、动态或社区提及本工具相关内容 - -**免责声明**: -1. **使用风险**: - - 本脚本为开源学习项目,仅为游戏委托开发提供技术支持,禁止用于商业用途或违反游戏条款的行为。 -2. **责任限制**: - - 本脚本按“现状”提供,不承诺兼容性、安全性或功能完整性。 - - 用户应自行承担使用风险,并严格遵守《原神》用户协议。因使用本脚本导致的损失,开发者概不负责。 - -使用即表示您已阅读并同意上述条款。 ---- -## 使用方法及配置 -1. 将任务脚本解压至 `process/` 目录 -2. 将脚本添加至调度器 -3. 右键点击脚本以修改 JS 自定义配置 -4. 在设置中选择“刷新剧情列表” -5. 工具将扫描所有可用剧情脚本 -6. 从更新后的列表中选择要执行的剧情 ---- -### 社区公约 -> “我们理解大家对工具的热情,但脚本属于敏感领域。请务必: -> - 不在任何官方平台讨论技术细节 -> - 不在直播、视频中展示工具效果 -> - 不与官方产生任何形式冲突 -> -> 保持低调才能让工具持续可用!” - -### 开发者社区 -如需自动剧情脚本,请加入开发者社群: -- **开发者群**:[开发者群号](加群获取) -- **审核群**:1057644730 -- **小提示**: - - 群内还有提瓦特部分锄(tan)地(suo)资源(定期更新) - - 要求:会按按钮 - -> **再次强调**: -> - **禁止任何人用于商业用途**,禁止在任何场合展示或宣传自动任务效果 -> - **不要将任何非委托任务流程脚本上传至脚本仓库** - -**让我们共同维护良好的社区环境!让大家都 BetterGI 用!** ---- -## 全新框架开发指南 -### 用法速览 -- **放置位置**:仍使用原来的 `process/.../.../process.json` -- **文件内容**:可以直接写多行文本(无需 JSON)。冒号可用中文或英文 -- **元数据(可选)**:开头写 - - `作者:xxx` - - `描述:xxx` -- **任务块头**:以“任务描述字符串:”起一块,例如 `与纳西达对话:` - - 匹配规则:OCR 获得的任务描述将做清洗(去特殊字符、大小写不敏感),用相似度≥0.90 的最佳匹配来选择块。相同描述的多个块按出现顺序执行(会记执行计数,下次匹配到会执行下一块) - - 默认块(未匹配/超时13秒时执行):块头可写 `默认:`、`无任务描述字符串:`、`default:`、`超时:` 等之一 -- **指令行**:指令名与参数之间至少一个空格;`#` 与 `//` 为注释 - - `地图追踪 相对路径.json` - - `键鼠脚本 相对路径.json` - - `对话 NPC名`(简单格式下会自动开启 AutoSkip,交互→对话后等待回主界面) - - `交互 目标名`(Alt+点击,不等待对话) - - `等待返回主界面` - - `追踪图标 图标类型`(Bigmap/Question/默认Task) - - `按键 键值`(例如 F,在只有一个选项的时候可以用来充当交互,最好写两个以防万一) - - `等待 毫秒`(默认5000毫秒) - - `任务完成`(立即退出整个流程) - - `暂停 提示`(脚本会自己暂停自己,交由用户处理无法处理的事,提示非必填,在日志窗口输出) - - `战斗`(在原地开启一次战斗,直接写进地图追踪文件里也可) - - `自动拾取 开启/关闭` (开启关闭自动拾取,默认开启) -- **兼容旧格式**: - - `F 纳西达` 等价 `对话 纳西达` - - `xxx.json` 等价 `地图追踪 xxx.json` -### 示例新结构(可断点续跑,带重试机制) -``` -作者:星野 -描述:示例流程 - -与特纳对话: -父亲能做的事-晨曦酒庄-1.json -F 特纳 - -找吉丽安娜配药: -父亲能做的事-晨曦酒庄-2.json -F 吉丽安娜 - -向特纳回报: -父亲能做的事-晨曦酒庄-3.json -F 特纳 -任务完成 - -默认: -父亲能做的事-晨曦酒庄-1.json -自动拾取 开启 -F 特纳 -``` -- 重复任务描述的块按上下顺序依次执行;第一次匹配到执行第一个,再次匹配到执行第二个,以此类推 -- 未检测到任务描述时,会每秒检测一次,13 秒仍未匹配则执行默认块(若存在) -### 示例旧结构(可直接作为 `process.json` 文本内容) -``` -皮皮潘1接取对话.json -F -皮皮潘2暂停手动.json -暂停 -皮皮潘3对话.json -F -皮皮潘4暂停手动.json -暂停 -皮皮潘5对话.json -F -皮皮潘6暂停手动.json -键鼠脚本 键鼠脚本.json//地图追踪和键鼠脚本可以一起使用啦 -暂停 -皮皮潘7对话2分钟.json -F -``` -### 其它说明 -- “对话”指令会尝试优先 Alt+点击包含 NPC 名称的文本区域触发交互,然后执行 AutoSkip 自动跳过剧情并等待返回主界面 -- “交互”指令只做 Alt+点击,不等待对话 -- “追踪图标”支持 Bigmap/Question/默认 Task 图标 -- 原 JSON 数组流程保持兼容 +# 自动剧情加载器 - 使用说明 +## 项目宗旨 +自动剧情加载器是专为委托开发者设计的**脚本调试与编辑工具**,旨在提升委托开发效率,简化测试流程。 + +> **重要声明**: +> 1. 本项目**不会将任何非委托任务流程脚本上传至脚本仓库** +> 2. **禁止任何人用于商业用途**,禁止在任何场合展示或宣传自动任务效果 +> 3. **不提倡**上传任何任务流程脚本到公开平台 +> 4. 工具仅提供技术框架,**不包含任何自动游戏剧情内容** +> 5. 请勿在任何官方平台(米游社、B站、微博等)讨论本工具 +> 6. 严禁在官方直播、动态或社区提及本工具相关内容 + +**免责声明**: +1. **使用风险**: + - 本脚本为开源学习项目,仅为游戏委托开发提供技术支持,禁止用于商业用途或违反游戏条款的行为。 +2. **责任限制**: + - 本脚本按“现状”提供,不承诺兼容性、安全性或功能完整性。 + - 用户应自行承担使用风险,并严格遵守《原神》用户协议。因使用本脚本导致的损失,开发者概不负责。 + +使用即表示您已阅读并同意上述条款。 +--- +## 使用方法及配置 +1. 将任务脚本解压至 `process/` 目录 +2. 将脚本添加至调度器 +3. 右键点击脚本以修改 JS 自定义配置 +4. 在设置中选择“刷新剧情列表” +5. 工具将扫描所有可用剧情脚本 +6. 从更新后的列表中选择要执行的剧情 +--- +### 社区公约 +> “我们理解大家对工具的热情,但脚本属于敏感领域。请务必: +> - 不在任何官方平台讨论技术细节 +> - 不在直播、视频中展示工具效果 +> - 不与官方产生任何形式冲突 +> +> 保持低调才能让工具持续可用!” + +### 开发者社区 +如需自动剧情脚本,请加入开发者社群: +- **开发者群**:[开发者群号](加群获取) +- **审核群**:1057644730 +- **小提示**: + - 群内还有提瓦特部分锄(tan)地(suo)资源(定期更新) + - 要求:会按按钮 + +> **再次强调**: +> - **禁止任何人用于商业用途**,禁止在任何场合展示或宣传自动任务效果 +> - **不要将任何非委托任务流程脚本上传至脚本仓库** + +**让我们共同维护良好的社区环境!让大家都 BetterGI 用!** +--- +## 全新框架开发指南 +### 用法速览 +- **放置位置**:仍使用原来的 `process/.../.../process.json` +- **文件内容**:可以直接写多行文本(无需 JSON)。冒号可用中文或英文 +- **元数据(可选)**:开头写 + - `作者:xxx` + - `描述:xxx` +- **任务块头**:以“任务描述字符串:”起一块,例如 `与纳西达对话:` + - 匹配规则:OCR 获得的任务描述将做清洗(去特殊字符、大小写不敏感),用相似度≥0.90 的最佳匹配来选择块。相同描述的多个块按出现顺序执行(会记执行计数,下次匹配到会执行下一块) + - 默认块(未匹配/超时13秒时执行):块头可写 `默认:`、`无任务描述字符串:`、`default:`、`超时:` 等之一 +- **指令行**:指令名与参数之间至少一个空格;`#` 与 `//` 为注释 + - `地图追踪 相对路径.json` + - `键鼠脚本 相对路径.json` + - `对话 NPC名`(简单格式下会自动开启 AutoSkip,交互→对话后等待回主界面) + - `交互 目标名`(Alt+点击,不等待对话) + - `等待返回主界面` + - `追踪图标 图标类型`(Bigmap/Question/默认Task) + - `按键 键值`(例如 F,在只有一个选项的时候可以用来充当交互,最好写两个以防万一) + - `等待 毫秒`(默认5000毫秒) + - `任务完成`(立即退出整个流程) + - `暂停 提示`(脚本会自己暂停自己,交由用户处理无法处理的事,提示非必填,在日志窗口输出) + - `战斗`(在原地开启一次战斗,直接写进地图追踪文件里也可) + - `自动拾取 开启/关闭` (开启关闭自动拾取,默认开启) +- **兼容旧格式**: + - `F 纳西达` 等价 `对话 纳西达` + - `xxx.json` 等价 `地图追踪 xxx.json` +### 示例新结构(可断点续跑,带重试机制) +``` +作者:星野 +描述:示例流程 + +与特纳对话: +父亲能做的事-晨曦酒庄-1.json +F 特纳 + +找吉丽安娜配药: +父亲能做的事-晨曦酒庄-2.json +F 吉丽安娜 + +向特纳回报: +父亲能做的事-晨曦酒庄-3.json +F 特纳 +任务完成 + +默认: +父亲能做的事-晨曦酒庄-1.json +自动拾取 开启 +F 特纳 +``` +- 重复任务描述的块按上下顺序依次执行;第一次匹配到执行第一个,再次匹配到执行第二个,以此类推 +- 未检测到任务描述时,会每秒检测一次,13 秒仍未匹配则执行默认块(若存在) +### 示例旧结构(可直接作为 `process.json` 文本内容) +``` +皮皮潘1接取对话.json +F +皮皮潘2暂停手动.json +暂停 +皮皮潘3对话.json +F +皮皮潘4暂停手动.json +暂停 +皮皮潘5对话.json +F +皮皮潘6暂停手动.json +键鼠脚本 键鼠脚本.json//地图追踪和键鼠脚本可以一起使用啦 +暂停 +皮皮潘7对话2分钟.json +F +``` +### 其它说明 +- “对话”指令会尝试优先 Alt+点击包含 NPC 名称的文本区域触发交互,然后执行 AutoSkip 自动跳过剧情并等待返回主界面 +- “交互”指令只做 Alt+点击,不等待对话 +- “追踪图标”支持 Bigmap/Question/默认 Task 图标 +- 原 JSON 数组流程保持兼容 > 完成后把 `process.json` 及所有子流程文件打包发给审核即可。祝制作顺利! \ No newline at end of file diff --git a/repo/js/AAA-Auto-Story-Loader/main.js b/repo/js/AutoStoryLoader/main.js similarity index 97% rename from repo/js/AAA-Auto-Story-Loader/main.js rename to repo/js/AutoStoryLoader/main.js index cc0d2fb99..3df449704 100644 --- a/repo/js/AAA-Auto-Story-Loader/main.js +++ b/repo/js/AutoStoryLoader/main.js @@ -1,1886 +1,1886 @@ -(async function () { - // 版本和编译信息 - const VERSION = "1.1"; - const BUILD_TIME = "2025.08.26"; - - // 读取设置 - const team = settings.team || ""; - const elementTeam = settings.elementTeam || ""; - const selectedProcess = settings.process_selector || "刷新剧情列表"; - - async function errorlog() { - // 输出版本和编译时间信息 - log.info("=".repeat(20)); - log.info("版本: {version}", VERSION); - log.info("编译时间: {buildTime}", BUILD_TIME); - log.info("=".repeat(20)); - } - - // 统一常量定义 - const Datas = { - // 文件路径常量 - SUPPORT_LIST_PATH: "name.json", - OUTPUT_DIR: "Data", - TALK_PROCESS_BASE_PATH: "assets/process" - }; - - // 获取设置 - /*const getSetting = async () => { - try { - const skipRecognition = settings.skipRecognition || false; - const prepare = settings.prepare || false; - const team = settings.team || ""; - const skipCommissions = ""; - - const result = { - skipRecognition, - prepare, - team, - skipCommissions, - }; - - log.debug("setting:{index}", result); - - return result; - } catch { - log.error("getSetting函数出现错误,将使用默认配置"); - return { - skipRecognition: false, - prepare: true, - team: "", - skipCommissions: "", - }; - } - }; - - const { skipRecognition, prepare, team, skipCommissions } = - await getSetting();*/ - - const Utils = { - iframe: async ({ X, Y, WIDTH, HEIGHT }) => { - try { - log.info("i{index}", { X, Y, WIDTH, HEIGHT }); - - // 最简单的方式创建OCR识别对象 - const ro = RecognitionObject.Ocr(X, Y, WIDTH, HEIGHT); - ro.Name = "debug"; - ro.DrawOnWindow = true; - - // 捕获并识别 - const region = captureGameRegion(); - region.Find(ro); - - // 2000毫秒后移除绘制的边框 - setTimeout(() => { - // 使用相同的名称移除边框 - const drawContent = VisionContext.Instance().DrawContent; - drawContent.RemoveRect("debug"); - // 或者也可以使用 drawContent.Clear() 清除所有绘制的内容 - - log.info("已移除边框"); - }, 2000); - } catch (error) { - // 记录完整错误信息 - log.error("详细错误: " + JSON.stringify(error)); - } - }, - easyOCR: async ({ X, Y, WIDTH, HEIGHT }) => { - try { - // log.info("进行文字识别") - // 创建OCR识别对象 - const locationOcrRo = RecognitionObject.Ocr(X, Y, WIDTH, HEIGHT); - - // 截图识别 - let captureRegion = captureGameRegion(); - let OCRresults = await captureRegion.findMulti(locationOcrRo); - - return OCRresults; - } catch (error) { - log.error("easyOCR识别出错: {error}", error.message); - return { count: 0 }; - } - }, - easyOCROne: async (ocrdata) => { - results = await Utils.easyOCR(ocrdata); - if (results.count > 0) { - // 取第一个结果作为地点 - return results[0].text.trim(); - } - return ""; - }, - // 清理文本(去除标点符号等) - cleanText: (text) => { - if (!text) return ""; - // 去除标点符号和特殊字符 - return text.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, "").trim(); - }, - - // 读取角色别名文件 - readAliases: () => { - try { - const combatText = file.ReadTextSync("Data/avatar/combat_avatar.json"); - const combatData = JSON.parse(combatText); - const aliases = {}; - for (const character of combatData) { - if (character.alias && character.name) { - for (const alias of character.alias) { - aliases[alias] = character.name; - } - } - } - return aliases; - } catch (error) { - log.error("读取角色别名文件失败: {error}", error.message); - return {}; - } - }, - }; - - const UI = { - // 角色选择界面滚动页面函数 - scrollPage: async (totalDistance, stepDistance = 10, delayMs = 5) => { - try { - moveMouseTo(400, 750); - await sleep(50); - leftButtonDown(); - const steps = Math.ceil(totalDistance / stepDistance); - for (let j = 0; j < steps; j++) { - const remainingDistance = totalDistance - j * stepDistance; - const moveDistance = - remainingDistance < stepDistance ? remainingDistance : stepDistance; - moveMouseBy(0, -moveDistance); - await sleep(delayMs); - } - await sleep(700); - leftButtonUp(); - await sleep(100); - return true; - } catch (error) { - log.error(`角色选择界面滚动操作时发生错误:${error.message}`); - return false; - } - }, - }; - - // 步骤处理器类 - 处理不同类型的委托执行步骤 - // TAG:添加脚本功能点1 - const StepProcessor = { - // 处理地图追踪步骤 - processMapTracking: async (step, commissionName, location) => { - const fullPath = `${ - Datas.TALK_PROCESS_BASE_PATH - }/${commissionName}/${location}/${step.data || step}`; - log.info("执行地图追踪: {path}", fullPath); - try { - await pathingScript.runFile(fullPath); - log.info("地图追踪执行完成"); - } catch (error) { - log.error("执行地图追踪时出错: {error}", error.message); - throw error; - } - }, - - // 处理追踪委托步骤 - processCommissionTracking: async (step) => { - try { - // 获取目标NPC名称和图标类型 - let targetNpc = ""; - let iconType = "bigmap"; - - if (typeof step.data === "string") { - targetNpc = step.data; - } else if (typeof step.data === "object") { - if (step.data.npc) targetNpc = step.data.npc; - if (step.data.iconType) iconType = step.data.iconType; - } - - log.info( - "执行追踪委托,目标NPC: {target},图标类型: {type}", - targetNpc, - iconType - ); - await Execute.autoNavigateToTalk(targetNpc, iconType); - log.info("追踪委托执行完成"); - } catch (error) { - log.error("执行追踪委托时出错: {error}", error.message); - throw error; - } - }, - - // 处理键鼠脚本步骤 - processKeyMouseScript: async (step, commissionName, location) => { - log.info("执行键鼠脚本: {path}", step.data); - try { - const fullPath = `${Datas.TALK_PROCESS_BASE_PATH}/${commissionName}/${location}/${step.data}`; - await keyMouseScript.runFile(fullPath); - log.info("键鼠脚本执行完成"); - } catch (error) { - log.error("执行键鼠脚本时出错: {error}", error.message); - throw error; - } - }, - - // 处理按键步骤 - processKeyPress: async (step) => { - if (typeof step.data === "string") { - log.info("执行按键: {key}", step.data); - keyPress(step.data); - } else if (typeof step.data === "object") { - if (step.data.action === "down") { - log.info("按下按键: {key}", step.data.key); - keyDown(step.data.key); - } else if (step.data.action === "up") { - log.info("释放按键: {key}", step.data.key); - keyUp(step.data.key); - } else if (step.data.action === "press") { - log.info("点击按键: {key}", step.data.key); - keyPress(step.data.key); - } - } - }, - - // 处理传送步骤 - processTeleport: async (step) => { - if (Array.isArray(step.data) && step.data.length >= 2) { - log.info("执行传送: {x}, {y}", step.data[0], step.data[1]); - const force = step.data.length > 2 ? step.data[2] : false; - await genshin.tp(step.data[0], step.data[1], force); - log.info("传送完成"); - } else { - log.error("传送参数格式错误"); - throw new Error("传送参数格式错误"); - } - }, - - // 处理等待主界面步骤 - processWaitMainUI: async (isInMainUI) => { - for (let i = 0; i < 120; i++) { - if (isInMainUI()) { - log.info("检测到已返回主界面,结束等待"); - break; - } - await sleep(1000); - } - if (!isInMainUI()) { - log.info("等待返回主界面超时,尝试继续执行后续步骤"); - } - }, - - // 处理地址检测步骤 - processLocationDetection: async ( - step, - commissionName, - location, - processSteps, - currentIndex - ) => { - if (Array.isArray(step.data) && step.data.length >= 2) { - log.info( - `地址检测: {${step.data[0]}},{${step.data[1]}},run:${step.run}` - ); - - try { - // 获取当前委托目标位置 - let commissionTarget = await Execute.findCommissionTarget( - commissionName - ); - - if (commissionTarget) { - const distance2 = CommissionsFunc.calculateDistance( - commissionTarget, - { - x: step.data[0], - y: step.data[1], - } - ); - - log.info( - "地址检测 - 委托位置: ({x}, {y}), 目标位置: ({tx}, {ty}), 距离: {d}", - commissionTarget.x, - commissionTarget.y, - step.data[0], - step.data[1], - distance2 - ); - - if (distance2 < 15) { - log.info("地址检测成功,执行后续步骤"); - const nextSteps = await Execute.loadAndParseProcessFile( - commissionName, - location, - step.run - ); - // 插入到processSteps的这一步后面 - if (nextSteps && Array.isArray(nextSteps)) { - processSteps.splice(currentIndex + 1, 0, ...nextSteps); - log.info("已插入 {count} 个后续步骤", nextSteps.length); - } - } else { - log.info("地址检测失败,距离过远: {distance}", distance2); - } - } else { - log.warn("无法获取委托目标位置,跳过地址检测"); - } - } catch (error) { - log.error("地址检测时出错: {error}", error.message); - throw error; - } - } else { - log.error("地址检测参数格式错误"); - throw new Error("地址检测参数格式错误"); - } - }, - - // 处理委托描述检测步骤 - processCommissionDescriptionDetection: async ( - step, - commissionName, - location, - processSteps, - currentIndex - ) => { - // 按v键打开任务界面 - keyPress("v"); - await sleep(300); - - if (step.data !== "") { - log.info(`委托描述检测: {${step.data}}`); - - // 循环检测,直到稳定 - for (let c = 0; c < 13; c++) { - try { - // 使用委托详情检测区域进行OCR - const taskRegion = { X: 75, Y: 240, WIDTH: 280, HEIGHT: 43 }; - const ocrResult = await Utils.easyOCROne(taskRegion); - if (ocrResult === commissionName || ocrResult === "") { - await sleep(1000); - // 没有延时13s的错误提示,继续检测 - log.debug("检测到委托名称或空文本,继续等待..."); - keyPress("v"); - } - // 成功匹配,开始插入step - else if (ocrResult === step.data) { - log.info("委托描述检测成功,执行后续步骤"); - const nextSteps = await Execute.loadAndParseProcessFile( - commissionName, - location, - step.run - ); - // 插入到这一步后面 - if (nextSteps && Array.isArray(nextSteps)) { - processSteps.splice(currentIndex + 1, 0, ...nextSteps); - log.info("已插入 {count} 个后续步骤", nextSteps.length); - } - break; - } else { - log.warn(`委托描述不匹配,识别:${ocrResult},期望:${step.data}`); - break; - } - } catch (ocrError) { - log.error("委托描述OCR识别出错: {error}", ocrError); - break; - } - } - } else { - log.error("委托描述检测参数格式错误"); - throw new Error("委托描述检测参数格式错误"); - } - }, - - // 处理角色切换步骤 - processSwitchRole: async (step) => { - try { - const { position, character } = step.data; - - if (!position || !character) { - log.error("角色切换参数不完整,需要 position 和 character"); - return false; - } - - log.info(`开始切换角色:第${position}号位 -> ${character}`); - - const positionCoordinates = [ - [460, 538], - [792, 538], - [1130, 538], - [1462, 538], - ]; - - // 读取别名 - const aliases = Utils.readAliases(); - const actualName = aliases[character] || character; - log.info(`设置对应号位为【${character}】,切换角色为【${actualName}】`); - - // 识别对象定义 - const roTeamConfig = RecognitionObject.TemplateMatch( - file.ReadImageMatSync(`Data/RecognitionObject/队伍配置.png`), - 0, - 0, - 1920, - 1080 - ); - const roReplace = RecognitionObject.TemplateMatch( - file.ReadImageMatSync(`Data/RecognitionObject/更换.png`), - 0, - 0, - 1920, - 1080 - ); - const roJoin = RecognitionObject.TemplateMatch( - file.ReadImageMatSync(`Data/RecognitionObject/加入.png`), - 0, - 0, - 1920, - 1080 - ); - - let openPairingTries = 0; - let totalOpenPairingTries = 0; - - // 打开配对界面的内部函数 - const openPairingInterface = async () => { - while (openPairingTries < 3) { - keyPress("l"); - await sleep(3500); - const teamConfigResult = captureGameRegion().find(roTeamConfig); - if (teamConfigResult.isExist()) { - openPairingTries = 0; - return true; - } - openPairingTries++; - totalOpenPairingTries++; - } - if (totalOpenPairingTries < 6) { - await genshin.tp("2297.630859375", "-824.5517578125"); - openPairingTries = 0; - return openPairingInterface(); - } else { - log.error("无法打开配对界面,任务结束"); - return false; - } - }; - - if (!(await openPairingInterface())) { - return false; - } - - const rolenum = position; - const selectedCharacter = actualName; - const [x, y] = positionCoordinates[position - 1]; - click(x, y); - log.info(`开始设置${rolenum}号位角色`); - await sleep(1000); - let characterFound = false; - let pageTries = 0; - - // 最多尝试滚动页面20次 - while (pageTries < 20) { - // 尝试识别所有可能的角色文件名 - for (let num = 1; ; num++) { - const paddedNum = num.toString().padStart(2, "0"); - const characterFileName = `${selectedCharacter}${paddedNum}`; - try { - const characterRo = RecognitionObject.TemplateMatch( - file.ReadImageMatSync( - `Data/characterimage/${characterFileName}.png` - ), - 0, - 0, - 1920, - 1080 - ); - const characterResult = captureGameRegion().find(characterRo); - if (characterResult.isExist()) { - log.info(`已找到角色${selectedCharacter}`); - // 计算向右偏移35像素、向下偏移35像素的位置 - const targetX = characterResult.x + 35; - const targetY = characterResult.y + 35; - - // 边界检查,确保坐标在屏幕范围内 - const safeX = Math.min(Math.max(targetX, 0), 1920); - const safeY = Math.min(Math.max(targetY, 0), 1080); - - click(safeX, safeY); - await sleep(500); // 点击角色后等待0.5秒 - characterFound = true; - break; - } - } catch (error) { - // 如果文件不存在,跳出循环 - break; - } - } - - if (characterFound) { - break; - } - - // 如果不是最后一次尝试,尝试滚动页面 - if (pageTries < 15) { - log.info("当前页面没有目标角色,滚动页面"); - await UI.scrollPage(200); // 使用UI模块的scrollPage函数 - } - pageTries++; - } - - if (!characterFound) { - log.error(`未找到【${selectedCharacter}】`); - return false; - } - - // 识别"更换"或"加入"按钮 - const replaceResult = captureGameRegion().find(roReplace); - const joinResult = captureGameRegion().find(roJoin); - - if (replaceResult.isExist() || joinResult.isExist()) { - await sleep(300); - click(68, 1020); - keyPress("VK_LBUTTON"); - await sleep(500); - log.info(`角色切换完成:${character} -> ${actualName}`); - return true; - } else { - log.error(`该角色已在队伍中,无需切换`); - await sleep(300); - keyPress("VK_ESCAPE"); - await sleep(500); - return false; - } - } catch (error) { - log.error("角色切换过程中出错: {error}", error.message); - return false; - } - }, - - // 处理自动任务步骤 - processAutoTask: async (step) => { - try { - const { action, taskType, config } = step.data; - - if (!action) { - log.error("自动任务参数不完整,需要 action 参数"); - return false; - } - - log.info("执行自动任务操作: {action}", action); - - switch (action) { - case "enable": - // 启用自动任务 - if (!taskType) { - log.error("启用自动任务需要指定 taskType"); - return false; - } - - if (config && typeof config === "object") { - log.info("启用自动任务: {type},配置: {config}", taskType, JSON.stringify(config)); - dispatcher.addTimer(new RealtimeTimer(taskType, config)); - } else { - log.info("启用自动任务: {type}", taskType); - dispatcher.addTimer(new RealtimeTimer(taskType)); - } - break; - - case "disable": - // 取消所有自动任务 - log.info("取消所有自动任务"); - dispatcher.ClearAllTriggers(); - break; - - default: - log.error("未知的自动任务操作: {action}", action); - return false; - } - - return true; - } catch (error) { - log.error("处理自动任务步骤时出错: {error}", error.message); - return false; - } - }, - }; - - // 步骤处理器工厂 - 更好的扩展性设计 - // TAG:添加脚本功能点2 - const StepProcessorFactory = { - // 步骤处理器映射表 - processors: { - 地图追踪: async (step, context) => { - await StepProcessor.processMapTracking( - step, - context.commissionName, - context.location - ); - }, - - 等待: async (step, context) => { - const waitTime = step.data || 5000; - log.info("等待 {time} 毫秒", waitTime); - await sleep(waitTime); - }, - - 追踪委托: async (step, context) => { - await StepProcessor.processCommissionTracking(step); - }, - - 键鼠脚本: async (step, context) => { - await StepProcessor.processKeyMouseScript( - step, - context.commissionName, - context.location - ); - }, - - 对话: async (step, context) => { - await Execute.processDialogStep( - step, - context.priorityOptions, - context.npcWhiteList, - context.isInMainUI - ); - }, - - 按键: async (step, context) => { - await StepProcessor.processKeyPress(step); - }, - - tp: async (step, context) => { - await StepProcessor.processTeleport(step); - }, - - 等待返回主界面: async (step, context) => { - await StepProcessor.processWaitMainUI(context.isInMainUI); - }, - - 地址检测: async (step, context) => { - //await StepProcessor.processLocationDetection(step,context.commissionName,context.location,context.processSteps,context.currentIndex); - log.info("地址检测当前版本用不了,请联请联系作者获取最新版"); - }, - - 委托描述检测: async (step, context) => { - await StepProcessor.processCommissionDescriptionDetection( - step, - context.commissionName, - context.location, - context.processSteps, - context.currentIndex - ); - }, - - 切换角色: async (step, context) => { - await StepProcessor.processSwitchRole(step); - }, - - 自动任务: async (step, context) => { - await StepProcessor.processAutoTask(step); - }, - }, - - // 注册新的步骤处理器 - register: (stepType, processor) => { - StepProcessorFactory.processors[stepType] = processor; - log.info("注册新的步骤处理器: {type}", stepType); - }, - - // 处理步骤 - process: async (step, context) => { - const processor = StepProcessorFactory.processors[step.type]; - if (processor) { - await processor(step, context); - } else { - log.warn("未知的流程类型: {type}", step.type); - } - }, - }; - - // UI工具模块 - 处理UI检测和文本提取等工具函数 - const UIUtils = { - // 创建主界面检测函数 - createMainUIChecker: () => { - const paimonMenuRo = RecognitionObject.TemplateMatch( - file.ReadImageMatSync("Data/RecognitionObject/paimon_menu.png"), - 0, - 0, - genshin.width / 3.0, - genshin.width / 5.0 - ); - - return () => { - let captureRegion = captureGameRegion(); - let res = captureRegion.Find(paimonMenuRo); - return !res.isEmpty(); - }; - }, - - // 人名提取函数 - extractName: (text) => { - const patterns = [ - /与(.+?)对话/, - /与(.+?)一起/, - /同(.+?)交谈/, - /向(.+?)打听/, - /向(.+?)回报/, - /向(.+?)报告/, - /给(.+?)听/, - /陪同(.+?)\S+/, - /找到(.+?)\S+/, - /询问(.+?)\S+/, - /拜访(.+?)\S+/, - /寻找(.+?)\S+/, - /告诉(.+?)\S+/, - /带(.+?)去\S+/, - /跟随(.+?)\S+/, - /协助(.+?)\S+/, - /请教(.+?)\S+/, - /拜托(.+?)\S+/, - /委托(.+?)\S+/, - ]; - - for (const pattern of patterns) { - const match = text.match(pattern); - if (match && match[1]) { - return match[1].trim(); - } - } - return null; - }, - }; - - // 对话处理模块 - 处理自动对话相关功能 - const DialogProcessor = { - // 执行优化的自动对话 - executeOptimizedAutoTalk: async ( - extractedName = null, - skipCount = 5, - customPriorityOptions = null, - customNpcWhiteList = null, - isInMainUI - ) => { - // 使用传入的参数,不再加载默认配置 - const effectivePriorityOptions = customPriorityOptions || []; - const effectiveNpcWhiteList = customNpcWhiteList || []; - - // 初始化 - keyPress("V"); - - // 初始触发剧情 - 识别人名并点击 - extractedName = []; - // 人名区域OCR识别 - const nameRegion = { X: 75, Y: 240, WIDTH: 225, HEIGHT: 60 }; - let nameResults = await Utils.easyOCR(nameRegion); - // 尝试提取任务人名 - for (let i = 0; i < nameResults.count; i++) { - let text = nameResults[i].text; - log.info(`任务区域识别文本: ${text}`); - - // 尝试提取任务人名 - let name = UIUtils.extractName(text); - if (name) { - extractedName = name; - log.info(`提取到人名: ${extractedName}`); - break; - } - } - - // 对话选项区域OCR识别 - const dialogRegion = { X: 1150, Y: 300, WIDTH: 350, HEIGHT: 400 }; - nameResults = await Utils.easyOCR(dialogRegion); - let clickedWhitelistNPC = false; - let clickedExtractedName = false; - - // 处理人名区域的OCR结果 - if (nameResults.count > 0) { - log.info(`人名区域识别到 ${nameResults.count} 个文本`); - - // 首先尝试点击白名单中的NPC - for (let i = 0; i < nameResults.count; i++) { - let text = nameResults[i].text; - let res = nameResults[i]; - log.info( - "人名区域识别到{text}:位置({x},{y},{h},{w})", - res.text, - res.x, - res.y, - res.width, - res.Height - ); - // 检查是否包含白名单中的NPC名称 - for (let j = 0; j < effectiveNpcWhiteList.length; j++) { - if (text.includes(effectiveNpcWhiteList[j])) { - log.info(`找到白名单NPC: ${effectiveNpcWhiteList[j]},点击该NPC`); - keyDown("VK_MENU"); - await sleep(500); - click(res.x, res.y); - leftButtonClick(); - keyUp("VK_MENU"); - clickedWhitelistNPC = true; - break; - } - } - if (clickedWhitelistNPC) break; - } - - // 如果没有点击白名单NPC,尝试点击包含提取到的人名的选项 - if (!clickedWhitelistNPC && extractedName) { - for (let i = 0; i < nameResults.count; i++) { - let text = nameResults[i].text; - let res = nameResults[i]; - if (text.includes(extractedName)) { - log.info(`点击包含提取到任务人名的选项: ${text}`); - keyDown("VK_MENU"); - await sleep(500); - click(res.x, res.y); - leftButtonClick(); - keyUp("VK_MENU"); - clickedExtractedName = true; - break; - } - } - } - } - - // 如果没有找到NPC,使用默认触发 - if (!clickedWhitelistNPC && !clickedExtractedName) { - log.info("未找到匹配的NPC,使用默认触发方式"); - keyPress("F"); // 默认触发剧情 - await sleep(500); - } - - // 重复执行自动剧情,直到返回主界面 - let maxAttempts = 100; // 设置最大尝试次数,防止无限循环 - let attempts = 0; - let repetition = 0; - let oldcount = 1; - await sleep(1000); - log.info("开始执行自动剧情"); - - while (!isInMainUI() && attempts < maxAttempts) { - attempts++; - - // 正常跳过对话 - await genshin.chooseTalkOption("纳西妲美貌举世无双", skipCount, false); - - if (isInMainUI()) { - log.info("检测到已返回主界面,结束循环"); - break; - } - - //keyPress("VK_ESCAPE");//关弹窗 - - // 每skipCount次跳过后,进行OCR识别 - if (true) { - // 检查是否有匹配的优先选项 - let foundPriorityOption = false; - - // 获取对话区域截图并进行OCR识别 - const dialogOptionsRegion = { - X: 1250, - Y: 450, - WIDTH: 550, - HEIGHT: 400, - }; - let ocrResults = await Utils.easyOCR(dialogOptionsRegion); - if (ocrResults.count > 0) { - log.info(`识别到 ${ocrResults.count} 个选项`); - - if (ocrResults.count === oldcount) { - repetition++; - } - else { - repetition = 0; - } - oldcount = ocrResults.count; - if (repetition >= 5) { - log.info("连续5次选项数量一样,执行F跳过"); - keyPress("F"); - keyPress("VK_ESCAPE"); - repetition = 0; - } - for (let i = 0; i < ocrResults.count; i++) { - let ocrText = ocrResults[i].text; - - // 检查是否在优先选项列表中 - for (let j = 0; j < effectivePriorityOptions.length; j++) { - if (ocrText.includes(effectivePriorityOptions[j])) { - log.info( - `找到优先选项: ${effectivePriorityOptions[j]},点击该选项` - ); - // 点击该选项 - ocrResults[i].click(); - await sleep(500); - foundPriorityOption = true; - break; - } - } - - if (foundPriorityOption) break; - } - - // 如果没有找到优先选项,则使用默认跳过 - if (!foundPriorityOption) { - await genshin.chooseTalkOption("", 1, false); - } - } - } - - // 检查是否已返回主界面 - if (isInMainUI()) { - log.info("检测到已返回主界面,结束循环"); - break; - } - } - - if (isInMainUI()) { - log.info("已返回主界面,自动剧情执行完成"); - keyPress("V"); - } else { - log.warn(`已达到最大尝试次数 ${maxAttempts},但未检测到返回主界面`); - } - }, - }; - - const Execute = { - // 寻找委托目的地址带追踪任务 - findCommissionTarget: async (commissionName) => { - try { - log.info("开始寻找委托目标位置: {name}", commissionName); - - // 确保回到主界面 - await genshin.returnMainUi(); - - // 第一步,检测这个任务是否在1-3之中 - let index = 4; - - try { - // 进入委托界面 - const enterSuccess = await UI.enterCommissionScreen(); - if (!enterSuccess) { - log.error("无法进入委托界面"); - return null; - } - - await sleep(1000); - - // 识别前3个委托 - log.debug("findCommissionTarget识别前3个委托"); - - // 先识别前3个Main_Dev区域(索引0-2) - for (let regionIndex = 0; regionIndex < 3; regionIndex++) { - const region = Datas.OCR_REGIONS.Main_Dev[regionIndex]; - - try { - let results = await Utils.easyOCR(region); - - // 处理识别结果,取第一个有效结果 - for (let i = 0; i < results.count; i++) { - let result = results[i]; - let text = Utils.cleanText(result.text); - if (text && text.length >= 2) { - log.info( - '第{regionIndex}个委托: "{text}"', - regionIndex + 1, - text - ); - if (text === commissionName) { - index = regionIndex + 1; - log.info( - "找到委托 {name} 在位置 {index}", - commissionName, - index - ); - break; - } - } - } - - // 如果找到了委托,跳出外层循环 - if (index !== 4) { - break; - } - } catch (regionError) { - log.error( - "识别第{index}个委托区域时出错: {error}", - regionIndex + 1, - regionError - ); - continue; - } - } - } catch (error) { - log.error("findCommissionTarget第一步失败: {error}", error.message); - } - - // 如果前3个没找到,检查第4个委托(需要翻页) - if (index === 4) { - try { - log.info("前3个委托中未找到,检查第4个委托"); - await UI.pageScroll(1); - - const region = Datas.OCR_REGIONS.Main_Dev[3]; // 第4个区域 - let results = await Utils.easyOCR(region); - - for (let i = 0; i < results.count; i++) { - let result = results[i]; - let text = Utils.cleanText(result.text); - if (text && text.length >= 2) { - log.info('第4个委托: "{text}"', text); - if (text === commissionName) { - index = 4; - log.info("找到委托 {name} 在第4个位置", commissionName); - break; - } - } - } - } catch (fourthError) { - log.error("识别第4个委托时出错: {error}", fourthError); - } - } - - // 第二步:进入对应的大地图,获取位置 - let currentCommissionPosition = null; - try { - // 点击详情按钮 - if (index === 4) { - // 第4个委托已经翻页了,使用索引3 - index = 3; - } - - const button = Datas.COMMISSION_DETAIL_BUTTONS[index - 1]; - if (button) { - log.info("点击委托详情按钮: {id}", button.id); - click(button.x, button.y); - await sleep(2000); - - // 检查是否有追踪按钮并点击 - const trackingResult = await Utils.easyOCROne( - Datas.OCR_REGIONS.COMMISSION_TRACKING - ); - if (trackingResult === "追踪") { - log.info("发现追踪按钮,点击追踪"); - click(1693, 1000); - await sleep(1000); - } - - // 退出详情页面 - log.info("退出详情页面 - 按ESC"); - keyDown("VK_ESCAPE"); - await sleep(300); - keyUp("VK_ESCAPE"); - await sleep(1200); - await genshin.setBigMapZoomLevel(2); - // 获取地图坐标并保存 - const bigMapPosition = genshin.getPositionFromBigMap(); - if (bigMapPosition) { - currentCommissionPosition = bigMapPosition; - log.info( - "当前委托位置: ({x}, {y})", - bigMapPosition.x, - bigMapPosition.y - ); - } - - await genshin.returnMainUi(); - } else { - log.error("无效的委托按钮索引: {index}", index); - } - } catch (error) { - log.error("findCommissionTarget第2步失败: {error}", error.message); - } - - return currentCommissionPosition; - } catch (error) { - log.error("寻找委托目标位置时出错: {error}", error.message); - return null; - } - }, - - // 读取并解析流程文件为步骤数组 - loadAndParseProcessFile: async ( - commissionName, - location, - locationprocessFilePath = "process.json" - ) => { - const processFilePath = `${Datas.TALK_PROCESS_BASE_PATH}/${commissionName}/${location}/${locationprocessFilePath}`; - let processContent; - let processSteps; - try { - processContent = await file.readText(processFilePath); - log.info("找到对话委托流程文件: {path}", processFilePath); - } catch (error) { - log.warn( - "未找到对话委托 {name} 在 {location} 的流程文件: {path}", - commissionName, - location, - processFilePath - ); - return false; - } - // 解析流程内容 - - try { - // 尝试解析为JSON格式 - const jsonData = JSON.parse(processContent); - if (Array.isArray(jsonData)) { - processSteps = jsonData; - log.debug("JSON流程解析成功"); - } else { - log.error("JSON流程格式错误,应为数组"); - return false; - } - } catch (jsonError) { - // 如果不是JSON格式,按简单格式处理 - const lines = processContent - .split("\n") - .map((line) => line.trim()) - .filter((line) => line.length > 0); - processSteps = lines; - } - return processSteps; - }, - - // 执行对话委托流程(优化版) - executeTalkCommission: async (commissionName, location) => { - try { - const processSteps = await Execute.loadAndParseProcessFile( - commissionName, - location, - "process.json" - ); - - // 使用统一的处理器执行流程 - return await Execute.executeUnifiedTalkProcess( - processSteps, - commissionName, - location - ); - } catch (error) { - log.error("执行对话委托时出错: {error}", error.message); - return false; - } - }, - - // 自动导航到NPC对话位置(从main_branch.js移植) - autoNavigateToTalk: async (npcName = "", iconType = "") => { - try { - // 设置目标NPC名称 - const textArray = npcName; - - // 根据图标类型选择不同的识别对象 - let boxIconRo; - if (iconType === "Bigmap") { - boxIconRo = RecognitionObject.TemplateMatch( - file.ReadImageMatSync( - "Data/RecognitionObject/IconBigmapCommission.jpg" - ) - ); - log.info("使用大地图图标"); - } - else if (iconType === "Question") { - boxIconRo = RecognitionObject.TemplateMatch( - file.ReadImageMatSync( - "Data/RecognitionObject/IconQuestionCommission.png" - ) - ); - log.info("使用问号任务图标"); - } - else { - // 默认使用任务图标 - boxIconRo = RecognitionObject.TemplateMatch( - file.ReadImageMatSync( - "Data/RecognitionObject/IconTaskCommission.png" - ) - ); - log.info("使用任务图标"); - } - - let advanceNum = 0; //前进次数 - - middleButtonClick(); - await sleep(800); - - while (true) { - // 1. 优先检查是否已到达 - await sleep(500);// 等待0.5秒 - let captureRegion = captureGameRegion(); - let rewardTextArea = captureRegion.DeriveCrop(1210, 515, 200, 50); - let rewardResult = rewardTextArea.find(RecognitionObject.ocrThis); - log.debug("检测到文字: " + rewardResult.text); - // 检测到特点文字则结束!!! - if (rewardResult.text == textArray) { - log.info("已到达指定位置,检测到文字: " + rewardResult.text); - return; - } else if (advanceNum > 80) { - throw new Error("前进时间超时"); - } - // 2. 未到达领奖点,则调整视野 - for (let i = 0; i < 100; i++) { - captureRegion = captureGameRegion(); - let iconRes = captureRegion.Find(boxIconRo); - log.info("检测到委托图标位置 ({x}, {y})", iconRes.x, iconRes.y); - if (iconRes.x >= 920 && iconRes.x <= 980 && iconRes.y <= 540) { - advanceNum++; - log.info(`视野已调正,前进第${advanceNum}次`); - break; - } else { - // 小幅度调整 - if (iconRes.y >= 520) moveMouseBy(0, 920); - let adjustAmount = iconRes.x < 920 ? -20 : 20; - let distanceToCenter = Math.abs(iconRes.x - 920); // 计算与920的距离 - let scaleFactor = Math.max(1, Math.floor(distanceToCenter / 50)); // 根据距离缩放,最小为1 - let adjustAmount2 = iconRes.y < 540 ? scaleFactor : 10; - moveMouseBy(adjustAmount * adjustAmount2, 0); - await sleep(100); - } - if (i > 50) throw new Error("视野调整超时"); - } - // 3. 前进一小步 - keyDown("w"); - await sleep(200); - keyPress("VK_SPACE"); - await sleep(200); - keyPress("VK_SPACE"); - await sleep(200); - keyUp("w"); - await sleep(200); // 等待角色移动稳定 - } - } catch (error) { - log.error("自动导航到NPC对话位置时出错: {error}", error.message); - throw error; - } - }, - - // 统一的对话委托流程处理器(重构版 - 更简洁的主控制函数) - executeUnifiedTalkProcess: async ( - processSteps, - commissionName, - location - ) => { - try { - log.info("执行统一对话委托流程: {name}", commissionName); - - if (!processSteps || processSteps.length === 0) { - log.warn("没有找到有效的流程步骤"); - return false; - } - - // 初始化UI检测器和配置 - const isInMainUI = UIUtils.createMainUIChecker(); - let priorityOptions = []; - let npcWhiteList = []; - - // 刚开始就追踪委托目标 - //await Execute.findCommissionTarget(commissionName); - - // 执行处理步骤 - for (let i = 0; i < processSteps.length; i++) { - const step = processSteps[i]; - log.info("执行流程步骤 {step}: {type}", i + 1, step.type || step); - - try { - // 重置为默认值并处理自定义配置 - const stepConfig = Execute.processStepConfiguration( - step, - priorityOptions, - npcWhiteList - ); - priorityOptions = stepConfig.priorityOptions; - npcWhiteList = stepConfig.npcWhiteList; - - // TAG:添加脚本功能点3 - const context = { - commissionName, - location, - processSteps, - currentIndex: i, - isInMainUI, - priorityOptions, - npcWhiteList, - }; - - // 处理步骤 - await Execute.processStep(step, context); - } catch (stepError) { - log.error( - "执行步骤 {step} 时出错: {error}", - i + 1, - stepError.message - ); - // 继续执行下一步,不中断整个流程 - } - - // 每个步骤之间等待一段时间 - await sleep(2000); - } - - log.info("统一对话委托流程执行完成: {name}", commissionName); - return true; - } catch (error) { - log.error("执行统一对话委托流程时出错: {error}", error.message); - return false; - } - }, - - // 处理步骤配置(优先选项和NPC白名单) - processStepConfiguration: ( - step, - defaultPriorityOptions, - defaultNpcWhiteList - ) => { - let priorityOptions = [...defaultPriorityOptions]; - let npcWhiteList = [...defaultNpcWhiteList]; - - // 如果步骤中包含自定义的优先选项和NPC白名单,则使用它们 - if (step.data && typeof step.data === "object") { - if (Array.isArray(step.data.priorityOptions)) { - priorityOptions = step.data.priorityOptions; - log.info("使用自定义优先选项: {options}", priorityOptions.join(", ")); - } - if (Array.isArray(step.data.npcWhiteList)) { - npcWhiteList = step.data.npcWhiteList; - log.info("使用自定义NPC白名单: {npcs}", npcWhiteList.join(", ")); - } - } - - return { priorityOptions, npcWhiteList }; - }, - - // 处理单个步骤 - processStep: async (step, context) => { - if (typeof step === "string") { - // 简单格式处理 - await Execute.processStringStep(step, context); - } else if (typeof step === "object") { - // JSON格式处理 - await Execute.processObjectStep(step, context); - } - }, - - // 处理字符串格式的步骤 - processStringStep: async (step, context) => { - if (step.endsWith(".json")) { - // 地图追踪文件 - await StepProcessor.processMapTracking( - step, - context.commissionName, - context.location - ); - } else if (step === "F") { - // 按F键并执行优化的自动剧情 - log.info("执行自动剧情"); - await DialogProcessor.executeOptimizedAutoTalk( - null, - 5, - context.priorityOptions, - context.npcWhiteList, - context.isInMainUI - ); - } - }, - - // 处理对象格式的步骤 - processObjectStep: async (step, context) => { - if (step.note) { - log.info("步骤说明: {note}", step.note); - } - - // 使用步骤处理器工厂来处理步骤 - await StepProcessorFactory.process(step, context); - }, - - // 示例:注册自定义步骤处理器 - registerCustomStepProcessors: () => { - // 注册等待步骤处理器 - StepProcessorFactory.register("等待", async (step, context) => { - const waitTime = step.data || 1000; - log.info("等待 {time} 毫秒", waitTime); - await sleep(waitTime); - }); - - // 注册截图步骤处理器 - StepProcessorFactory.register("截图", async (step, context) => { - const filename = step.data || `screenshot_${Date.now()}.png`; - log.info("截图保存为: {filename}", filename); - // 这里可以添加实际的截图逻辑 - }); - - // 注册条件检查步骤处理器 - StepProcessorFactory.register("条件检查", async (step, context) => { - const condition = step.data.condition; - const trueSteps = step.data.trueSteps || []; - const falseSteps = step.data.falseSteps || []; - - log.info("执行条件检查: {condition}", condition); - - // 这里可以添加条件判断逻辑 - const conditionResult = true; // 示例结果 - - const stepsToExecute = conditionResult ? trueSteps : falseSteps; - for (const subStep of stepsToExecute) { - await Execute.processStep(subStep, context); - } - }); - - log.info("自定义步骤处理器注册完成"); - }, - - // 处理对话步骤 - processDialogStep: async ( - step, - priorityOptions, - npcWhiteList, - isInMainUI - ) => { - log.info("执行对话"); - let skipCount = 2; // 默认跳过2次 - - // 处理对话选项 - if (typeof step.data === "number") { - // 兼容旧版本,如果data是数字,则视为skipCount - skipCount = step.data; - } else if (typeof step.data === "object" && step.data.skipCount) { - // 新版本,data是对象,包含skipCount - skipCount = step.data.skipCount; - } - - // 执行对话,使用当前步骤的优先选项和NPC白名单 - await DialogProcessor.executeOptimizedAutoTalk( - null, - skipCount, - priorityOptions, - npcWhiteList, - isInMainUI - ); - }, - }; - - const CommissionsFunc = { - - // 计算两点之间的距离 - calculateDistance: (point1, point2) => { - if ( - !point1 || - !point2 || - !point1.X || - !point1.Y || - !point2.x || - !point2.y - ) { - log.warn("无效的位置数据"); - return Infinity; - } - return Math.sqrt( - Math.pow(point1.X - point2.x, 2) + Math.pow(point1.Y - point2.y, 2) - ); - }, - - // 获取委托的目标坐标(从路径追踪文件中获取最后一个坐标) - getCommissionTargetPosition: async (scriptPath) => { - try { - const scriptContent = await file.readText(scriptPath); - const pathData = JSON.parse(scriptContent); - - if (!pathData.positions || pathData.positions.length === 0) { - log.warn("路径追踪文件 {path} 中没有有效的坐标数据", scriptPath); - return null; - } - - const lastPosition = pathData.positions[pathData.positions.length - 1]; - if (!lastPosition.x || !lastPosition.y) { - log.warn( - "路径追踪文件 {path} 的最后一个路径点缺少坐标数据", - scriptPath - ); - return null; - } - - log.debug( - "从脚本路径 {path} 获取到目标坐标: ({x}, {y})", - scriptPath, - lastPosition.x, - lastPosition.y - ); - return { - x: lastPosition.x, - y: lastPosition.y, - }; - } catch (error) { - log.error("获取委托目标坐标时出错: {error}", error.message); - return null; - } - }, - - // 执行带分支的对话委托流程(从main_branch.js移植) - executeTalkCommissionWithBranches: async (processPath) => { - try { - log.info("开始执行对话委托流程: {path}", processPath); - - // 读取流程文件 - const processContent = await file.readText(processPath); - - // 解析流程内容 - const branches = CommissionsFunc.parseProcessBranches(processContent); - - // 确定要执行的分支 - const branchToExecute = await CommissionsFunc.determineBranch(branches); - - if (branchToExecute) { - log.info("执行分支: {id}", branchToExecute.id); - await Execute.executeUnifiedTalkProcess(branchToExecute.steps); - } else { - log.warn("没有找到匹配的分支,执行默认流程"); - // 尝试解析整个内容作为单一流程 - const steps = JSON.parse(processContent); - await Execute.executeUnifiedTalkProcess(steps); - } - } catch (error) { - log.error("执行对话委托流程出错: {error}", error.message); - } - }, - - // 解析流程文件中的分支(从main_branch.js移植) - parseProcessBranches: (content) => { - const branches = []; - const branchRegex = - /分支:(\d+)[\s\S]*?判断方法"([^"]+)"[\s\S]*?data:"([^"]+)"([\s\S]*?)(?=分支:|$)/g; - - let match; - while ((match = branchRegex.exec(content)) !== null) { - const branchId = parseInt(match[1]); - const judgmentMethod = match[2]; - const judgmentData = match[3]; - const stepsContent = match[4].trim(); - - // 解析步骤 - let steps = []; - try { - // 尝试解析JSON数组 - const jsonContent = `[${stepsContent}]`; - steps = JSON.parse(jsonContent); - } catch (error) { - log.warn("解析分支{id}的步骤出错: {error}", branchId, error); - continue; - } - - branches.push({ - id: branchId, - method: judgmentMethod, - data: judgmentData, - steps: steps, - }); - } - - return branches; - }, - - // 确定要执行的分支(从main_branch.js移植) - determineBranch: async (branches) => { - for (const branch of branches) { - switch (branch.method) { - case "坐标": - if (await CommissionsFunc.checkCoordinateMatch(branch.data)) { - return branch; - } - break; - - case "任务追踪": - if (await CommissionsFunc.checkTaskMatch(branch.data)) { - return branch; - } - break; - - default: - log.warn("未知的判断方法: {method}", branch.method); - } - } - - return null; - }, - - // 检查当前坐标是否匹配(从main_branch.js移植) - checkCoordinateMatch: async (coordData) => { - try { - const [targetX, targetY] = coordData - .split(",") - .map((c) => parseFloat(c.trim())); - - // 获取当前委托位置 - const playerPos = await CommissionsFunc.getCurrentCommissionPosition(); - if (!playerPos) return false; - - // 计算距离 - const distance = CommissionsFunc.calculateDistance(playerPos, { - x: targetX, - y: targetY, - }); - log.info( - "当前位置: ({x}, {y}),目标位置: ({tx}, {ty}),距离: {d}", - playerPos.x, - playerPos.y, - targetX, - targetY, - distance - ); - - // 如果距离小于阈值,认为匹配 - return distance < 100; // 可以调整阈值 - } catch (error) { - log.error("检查坐标匹配出错: {error}", error.message); - return false; - } - }, - - // 检查当前任务是否匹配(从main_branch.js移植) - checkTaskMatch: async (taskName) => { - try { - // 识别左上角任务区域文本 - const taskRegion = { X: 75, Y: 240, WIDTH: 225, HEIGHT: 60 }; - const taskResults = await Utils.easyOCR(taskRegion); - - // 检查是否包含目标任务名称 - for (let i = 0; i < taskResults.count; i++) { - const text = taskResults[i].text; - log.info(`任务区域识别文本: ${text}`); - - if (text.includes(taskName)) { - log.info(`找到匹配任务: ${taskName}`); - return true; - } - } - - log.info(`未找到匹配任务: ${taskName}`); - return false; - } catch (error) { - log.error("检查任务匹配出错: {error}", error.message); - return false; - } - }, - - // 获取当前委托位置(辅助函数) - getCurrentCommissionPosition: async () => { - try { - // 这里可以通过多种方式获取当前位置 - // 1. 从大地图获取 - await genshin.setBigMapZoomLevel(2); - const bigMapPosition = genshin.getPositionFromBigMap(); - if (bigMapPosition) { - return bigMapPosition; - } - - // 2. 从当前委托位置变量获取(如果有的话) - if (currentCommissionPosition) { - return currentCommissionPosition; - } - - log.warn("无法获取当前委托位置"); - return null; - } catch (error) { - log.error("获取当前委托位置时出错: {error}", error.message); - return null; - } - }, - }; - - const Test = async () => { - Utils.iframe(Datas.OCR_REGIONS.Main_Dev[0]); - // 角色切换步骤使用示例: - // 在process.json文件中添加如下步骤: - // { - // "type": "切换角色", - // "data": { - // "position": 1, - // "character": "枫原万叶" - // }, - // "note": "切换第1号位为枫原万叶" - // } - - // // 切换角色示例(可选) - // // 如果需要切换角色,可以取消注释下面的代码 - // const switchRoleStep = { - // type: "切换角色", - // data: { position: 1, character: "枫原万叶" }, - // note: "切换第1号位为枫原万叶", - // }; - // await StepProcessor.processSwitchRole(switchRoleStep); - }; - - //Main - const Main = async () => { - log.debug("版本: {version}", VERSION); - try { - if (selectedProcess === "刷新剧情列表") { - // 刷新操作:扫描所有process.json并更新设置 - await refreshProcessList(); - log.info("委托列表已刷新,请重新选择并运行"); - } else { - // 解析选中的委托路径 - const pathParts = selectedProcess.split('-'); - - // 确保至少有两个文件夹层级 - if (pathParts.length < 2) { - throw new Error("无效的委托路径格式"); - } - - // 提取最后两个文件夹名 - const folder1 = pathParts[pathParts.length - 2]; - const folder2 = pathParts[pathParts.length - 1]; - - // 设置动态基础路径(倒数第二个文件夹之前的所有部分) - Datas.TALK_PROCESS_BASE_PATH = "process/" + pathParts.slice(0, pathParts.length - 2).join('/'); - - log.info("执行任务: {path}", selectedProcess); - log.debug("基础路径: {basePath}", Datas.TALK_PROCESS_BASE_PATH); - log.debug("文件夹1: {folder1}, 文件夹2: {folder2}", folder1, folder2); - log.info("启用自动剧情"); - dispatcher.AddTrigger(new RealtimeTimer("AutoSkip")); - if (!settings.noSkip) { - log.info("启用自动拾取"); - dispatcher.AddTrigger(new RealtimeTimer("AutoPick")); - } - if (!settings.noEat) { - log.info("启用自动吃药"); - dispatcher.AddTrigger(new RealtimeTimer("AutoEat")); - } - await switchPartyIfNeeded(team); - await Execute.executeTalkCommission(folder1, folder2); - dispatcher.ClearAllTriggers(); - } - } catch (error) { - log.error("执行出错: {error}", error.message); - errorlog(); - } - }; - - -// 刷新委托列表(保留完整路径结构) -async function refreshProcessList() { - // 读取所有process.json文件 - const allFiles = await readFolder("process/", true); - - // 筛选并处理符合条件的process.json文件 - const processEntries = allFiles - .filter(file => file.fileName === "process.json") - .map(file => { - const pathSegments = file.folderPathArray; - - // 确保路径中有"process"部分 - const processIndex = pathSegments.indexOf("process"); - if (processIndex === -1 || processIndex >= pathSegments.length - 2) { - throw new Error(`无效的路径结构: ${file.fullPath}`); - } - - // 提取"process"之后的所有部分 - const relativePath = pathSegments.slice(processIndex + 1); - - // 确保至少有两个文件夹层级 - if (relativePath.length < 2) { - throw new Error(`路径层级不足: ${file.fullPath}`); - } - - // 创建选项名称(用连字符连接所有文件夹名) - const optionName = relativePath.join('-'); - - return { - name: optionName, - path: file.fullPath - }; - }); - - // 创建选项列表(以"刷新剧情列表"开头) - const options = ["刷新剧情列表", ...processEntries.map(entry => entry.name)]; - - // 更新settings.json - await updateSettingsFile(options); - log.info("已更新{count}个委托选项", processEntries.length); -} - -// 更新settings.json文件 -async function updateSettingsFile(options) { - const settingsPath = "./settings.json"; - let settingsArray; - - try { - // 读取现有设置 - const content = file.readTextSync(settingsPath); - settingsArray = JSON.parse(content); - } catch (e) { - // 文件不存在或解析失败时创建默认设置 - throw new Error("设置文件不存在"); - } - - // 更新process_selector选项 - const selectorIndex = settingsArray.findIndex(item => item.name === "process_selector"); - if (selectorIndex !== -1) { - settingsArray[selectorIndex].options = options; - settingsArray[selectorIndex].default = "刷新剧情列表"; - } else { - // 如果不存在则添加 - settingsArray.push({ - "name": "process_selector", - "type": "select", - "label": "可执行剧情列表", - "options": options, - "default": "刷新剧情列表" - }); - } - - // 写入更新后的设置 - const success = file.writeTextSync(settingsPath, JSON.stringify(settingsArray, null, 2)); - if (!success) { - throw new Error("写入设置文件失败"); - } -} - -// 文件夹读取函数(优化版) -async function readFolder(folderPath, onlyJson) { - log.info(`开始读取文件夹: ${folderPath}`); - const folderStack = [folderPath]; - const files = []; - - while (folderStack.length > 0) { - const currentPath = folderStack.pop(); - const items = file.ReadPathSync(currentPath); - const subFolders = []; - - for (const itemPath of items) { - if (file.IsFolder(itemPath)) { - subFolders.push(itemPath); - } else if (!onlyJson || itemPath.toLowerCase().endsWith(".json")) { - const pathParts = itemPath.split(/[\\\/]/).filter(Boolean); - const fileName = pathParts.pop(); - files.push({ - fullPath: itemPath, - fileName: fileName, - folderPathArray: pathParts - }); - } - } - - // 保持原始顺序添加子文件夹 - folderStack.push(...subFolders.reverse()); - } - - return files; -} - -//切换队伍 -async function switchPartyIfNeeded(partyName) { - if (!partyName) { - await genshin.returnMainUi(); - return; - } - try { - log.info("正在尝试切换至" + partyName); - if (!await genshin.switchParty(partyName)) { - log.info("切换队伍失败,前往七天神像重试"); - await genshin.tpToStatueOfTheSeven(); - await genshin.switchParty(partyName); - } - } catch { - log.error("队伍切换失败,可能处于联机模式或其他不可切换状态"); - notification.error(`队伍切换失败,可能处于联机模式或其他不可切换状态`); - await genshin.returnMainUi(); - } -} - -await Main(); -})(); +(async function () { + // 版本和编译信息 + const VERSION = "1.1"; + const BUILD_TIME = "2025.08.26"; + + // 读取设置 + const team = settings.team || ""; + const elementTeam = settings.elementTeam || ""; + const selectedProcess = settings.process_selector || "刷新剧情列表"; + + async function errorlog() { + // 输出版本和编译时间信息 + log.info("=".repeat(20)); + log.info("版本: {version}", VERSION); + log.info("编译时间: {buildTime}", BUILD_TIME); + log.info("=".repeat(20)); + } + + // 统一常量定义 + const Datas = { + // 文件路径常量 + SUPPORT_LIST_PATH: "name.json", + OUTPUT_DIR: "Data", + TALK_PROCESS_BASE_PATH: "assets/process" + }; + + // 获取设置 + /*const getSetting = async () => { + try { + const skipRecognition = settings.skipRecognition || false; + const prepare = settings.prepare || false; + const team = settings.team || ""; + const skipCommissions = ""; + + const result = { + skipRecognition, + prepare, + team, + skipCommissions, + }; + + log.debug("setting:{index}", result); + + return result; + } catch { + log.error("getSetting函数出现错误,将使用默认配置"); + return { + skipRecognition: false, + prepare: true, + team: "", + skipCommissions: "", + }; + } + }; + + const { skipRecognition, prepare, team, skipCommissions } = + await getSetting();*/ + + const Utils = { + iframe: async ({ X, Y, WIDTH, HEIGHT }) => { + try { + log.info("i{index}", { X, Y, WIDTH, HEIGHT }); + + // 最简单的方式创建OCR识别对象 + const ro = RecognitionObject.Ocr(X, Y, WIDTH, HEIGHT); + ro.Name = "debug"; + ro.DrawOnWindow = true; + + // 捕获并识别 + const region = captureGameRegion(); + region.Find(ro); + + // 2000毫秒后移除绘制的边框 + setTimeout(() => { + // 使用相同的名称移除边框 + const drawContent = VisionContext.Instance().DrawContent; + drawContent.RemoveRect("debug"); + // 或者也可以使用 drawContent.Clear() 清除所有绘制的内容 + + log.info("已移除边框"); + }, 2000); + } catch (error) { + // 记录完整错误信息 + log.error("详细错误: " + JSON.stringify(error)); + } + }, + easyOCR: async ({ X, Y, WIDTH, HEIGHT }) => { + try { + // log.info("进行文字识别") + // 创建OCR识别对象 + const locationOcrRo = RecognitionObject.Ocr(X, Y, WIDTH, HEIGHT); + + // 截图识别 + let captureRegion = captureGameRegion(); + let OCRresults = await captureRegion.findMulti(locationOcrRo); + + return OCRresults; + } catch (error) { + log.error("easyOCR识别出错: {error}", error.message); + return { count: 0 }; + } + }, + easyOCROne: async (ocrdata) => { + results = await Utils.easyOCR(ocrdata); + if (results.count > 0) { + // 取第一个结果作为地点 + return results[0].text.trim(); + } + return ""; + }, + // 清理文本(去除标点符号等) + cleanText: (text) => { + if (!text) return ""; + // 去除标点符号和特殊字符 + return text.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, "").trim(); + }, + + // 读取角色别名文件 + readAliases: () => { + try { + const combatText = file.ReadTextSync("Data/avatar/combat_avatar.json"); + const combatData = JSON.parse(combatText); + const aliases = {}; + for (const character of combatData) { + if (character.alias && character.name) { + for (const alias of character.alias) { + aliases[alias] = character.name; + } + } + } + return aliases; + } catch (error) { + log.error("读取角色别名文件失败: {error}", error.message); + return {}; + } + }, + }; + + const UI = { + // 角色选择界面滚动页面函数 + scrollPage: async (totalDistance, stepDistance = 10, delayMs = 5) => { + try { + moveMouseTo(400, 750); + await sleep(50); + leftButtonDown(); + const steps = Math.ceil(totalDistance / stepDistance); + for (let j = 0; j < steps; j++) { + const remainingDistance = totalDistance - j * stepDistance; + const moveDistance = + remainingDistance < stepDistance ? remainingDistance : stepDistance; + moveMouseBy(0, -moveDistance); + await sleep(delayMs); + } + await sleep(700); + leftButtonUp(); + await sleep(100); + return true; + } catch (error) { + log.error(`角色选择界面滚动操作时发生错误:${error.message}`); + return false; + } + }, + }; + + // 步骤处理器类 - 处理不同类型的委托执行步骤 + // TAG:添加脚本功能点1 + const StepProcessor = { + // 处理地图追踪步骤 + processMapTracking: async (step, commissionName, location) => { + const fullPath = `${ + Datas.TALK_PROCESS_BASE_PATH + }/${commissionName}/${location}/${step.data || step}`; + log.info("执行地图追踪: {path}", fullPath); + try { + await pathingScript.runFile(fullPath); + log.info("地图追踪执行完成"); + } catch (error) { + log.error("执行地图追踪时出错: {error}", error.message); + throw error; + } + }, + + // 处理追踪委托步骤 + processCommissionTracking: async (step) => { + try { + // 获取目标NPC名称和图标类型 + let targetNpc = ""; + let iconType = "bigmap"; + + if (typeof step.data === "string") { + targetNpc = step.data; + } else if (typeof step.data === "object") { + if (step.data.npc) targetNpc = step.data.npc; + if (step.data.iconType) iconType = step.data.iconType; + } + + log.info( + "执行追踪委托,目标NPC: {target},图标类型: {type}", + targetNpc, + iconType + ); + await Execute.autoNavigateToTalk(targetNpc, iconType); + log.info("追踪委托执行完成"); + } catch (error) { + log.error("执行追踪委托时出错: {error}", error.message); + throw error; + } + }, + + // 处理键鼠脚本步骤 + processKeyMouseScript: async (step, commissionName, location) => { + log.info("执行键鼠脚本: {path}", step.data); + try { + const fullPath = `${Datas.TALK_PROCESS_BASE_PATH}/${commissionName}/${location}/${step.data}`; + await keyMouseScript.runFile(fullPath); + log.info("键鼠脚本执行完成"); + } catch (error) { + log.error("执行键鼠脚本时出错: {error}", error.message); + throw error; + } + }, + + // 处理按键步骤 + processKeyPress: async (step) => { + if (typeof step.data === "string") { + log.info("执行按键: {key}", step.data); + keyPress(step.data); + } else if (typeof step.data === "object") { + if (step.data.action === "down") { + log.info("按下按键: {key}", step.data.key); + keyDown(step.data.key); + } else if (step.data.action === "up") { + log.info("释放按键: {key}", step.data.key); + keyUp(step.data.key); + } else if (step.data.action === "press") { + log.info("点击按键: {key}", step.data.key); + keyPress(step.data.key); + } + } + }, + + // 处理传送步骤 + processTeleport: async (step) => { + if (Array.isArray(step.data) && step.data.length >= 2) { + log.info("执行传送: {x}, {y}", step.data[0], step.data[1]); + const force = step.data.length > 2 ? step.data[2] : false; + await genshin.tp(step.data[0], step.data[1], force); + log.info("传送完成"); + } else { + log.error("传送参数格式错误"); + throw new Error("传送参数格式错误"); + } + }, + + // 处理等待主界面步骤 + processWaitMainUI: async (isInMainUI) => { + for (let i = 0; i < 120; i++) { + if (isInMainUI()) { + log.info("检测到已返回主界面,结束等待"); + break; + } + await sleep(1000); + } + if (!isInMainUI()) { + log.info("等待返回主界面超时,尝试继续执行后续步骤"); + } + }, + + // 处理地址检测步骤 + processLocationDetection: async ( + step, + commissionName, + location, + processSteps, + currentIndex + ) => { + if (Array.isArray(step.data) && step.data.length >= 2) { + log.info( + `地址检测: {${step.data[0]}},{${step.data[1]}},run:${step.run}` + ); + + try { + // 获取当前委托目标位置 + let commissionTarget = await Execute.findCommissionTarget( + commissionName + ); + + if (commissionTarget) { + const distance2 = CommissionsFunc.calculateDistance( + commissionTarget, + { + x: step.data[0], + y: step.data[1], + } + ); + + log.info( + "地址检测 - 委托位置: ({x}, {y}), 目标位置: ({tx}, {ty}), 距离: {d}", + commissionTarget.x, + commissionTarget.y, + step.data[0], + step.data[1], + distance2 + ); + + if (distance2 < 15) { + log.info("地址检测成功,执行后续步骤"); + const nextSteps = await Execute.loadAndParseProcessFile( + commissionName, + location, + step.run + ); + // 插入到processSteps的这一步后面 + if (nextSteps && Array.isArray(nextSteps)) { + processSteps.splice(currentIndex + 1, 0, ...nextSteps); + log.info("已插入 {count} 个后续步骤", nextSteps.length); + } + } else { + log.info("地址检测失败,距离过远: {distance}", distance2); + } + } else { + log.warn("无法获取委托目标位置,跳过地址检测"); + } + } catch (error) { + log.error("地址检测时出错: {error}", error.message); + throw error; + } + } else { + log.error("地址检测参数格式错误"); + throw new Error("地址检测参数格式错误"); + } + }, + + // 处理委托描述检测步骤 + processCommissionDescriptionDetection: async ( + step, + commissionName, + location, + processSteps, + currentIndex + ) => { + // 按v键打开任务界面 + keyPress("v"); + await sleep(300); + + if (step.data !== "") { + log.info(`委托描述检测: {${step.data}}`); + + // 循环检测,直到稳定 + for (let c = 0; c < 13; c++) { + try { + // 使用委托详情检测区域进行OCR + const taskRegion = { X: 75, Y: 240, WIDTH: 280, HEIGHT: 43 }; + const ocrResult = await Utils.easyOCROne(taskRegion); + if (ocrResult === commissionName || ocrResult === "") { + await sleep(1000); + // 没有延时13s的错误提示,继续检测 + log.debug("检测到委托名称或空文本,继续等待..."); + keyPress("v"); + } + // 成功匹配,开始插入step + else if (ocrResult === step.data) { + log.info("委托描述检测成功,执行后续步骤"); + const nextSteps = await Execute.loadAndParseProcessFile( + commissionName, + location, + step.run + ); + // 插入到这一步后面 + if (nextSteps && Array.isArray(nextSteps)) { + processSteps.splice(currentIndex + 1, 0, ...nextSteps); + log.info("已插入 {count} 个后续步骤", nextSteps.length); + } + break; + } else { + log.warn(`委托描述不匹配,识别:${ocrResult},期望:${step.data}`); + break; + } + } catch (ocrError) { + log.error("委托描述OCR识别出错: {error}", ocrError); + break; + } + } + } else { + log.error("委托描述检测参数格式错误"); + throw new Error("委托描述检测参数格式错误"); + } + }, + + // 处理角色切换步骤 + processSwitchRole: async (step) => { + try { + const { position, character } = step.data; + + if (!position || !character) { + log.error("角色切换参数不完整,需要 position 和 character"); + return false; + } + + log.info(`开始切换角色:第${position}号位 -> ${character}`); + + const positionCoordinates = [ + [460, 538], + [792, 538], + [1130, 538], + [1462, 538], + ]; + + // 读取别名 + const aliases = Utils.readAliases(); + const actualName = aliases[character] || character; + log.info(`设置对应号位为【${character}】,切换角色为【${actualName}】`); + + // 识别对象定义 + const roTeamConfig = RecognitionObject.TemplateMatch( + file.ReadImageMatSync(`Data/RecognitionObject/队伍配置.png`), + 0, + 0, + 1920, + 1080 + ); + const roReplace = RecognitionObject.TemplateMatch( + file.ReadImageMatSync(`Data/RecognitionObject/更换.png`), + 0, + 0, + 1920, + 1080 + ); + const roJoin = RecognitionObject.TemplateMatch( + file.ReadImageMatSync(`Data/RecognitionObject/加入.png`), + 0, + 0, + 1920, + 1080 + ); + + let openPairingTries = 0; + let totalOpenPairingTries = 0; + + // 打开配对界面的内部函数 + const openPairingInterface = async () => { + while (openPairingTries < 3) { + keyPress("l"); + await sleep(3500); + const teamConfigResult = captureGameRegion().find(roTeamConfig); + if (teamConfigResult.isExist()) { + openPairingTries = 0; + return true; + } + openPairingTries++; + totalOpenPairingTries++; + } + if (totalOpenPairingTries < 6) { + await genshin.tp("2297.630859375", "-824.5517578125"); + openPairingTries = 0; + return openPairingInterface(); + } else { + log.error("无法打开配对界面,任务结束"); + return false; + } + }; + + if (!(await openPairingInterface())) { + return false; + } + + const rolenum = position; + const selectedCharacter = actualName; + const [x, y] = positionCoordinates[position - 1]; + click(x, y); + log.info(`开始设置${rolenum}号位角色`); + await sleep(1000); + let characterFound = false; + let pageTries = 0; + + // 最多尝试滚动页面20次 + while (pageTries < 20) { + // 尝试识别所有可能的角色文件名 + for (let num = 1; ; num++) { + const paddedNum = num.toString().padStart(2, "0"); + const characterFileName = `${selectedCharacter}${paddedNum}`; + try { + const characterRo = RecognitionObject.TemplateMatch( + file.ReadImageMatSync( + `Data/characterimage/${characterFileName}.png` + ), + 0, + 0, + 1920, + 1080 + ); + const characterResult = captureGameRegion().find(characterRo); + if (characterResult.isExist()) { + log.info(`已找到角色${selectedCharacter}`); + // 计算向右偏移35像素、向下偏移35像素的位置 + const targetX = characterResult.x + 35; + const targetY = characterResult.y + 35; + + // 边界检查,确保坐标在屏幕范围内 + const safeX = Math.min(Math.max(targetX, 0), 1920); + const safeY = Math.min(Math.max(targetY, 0), 1080); + + click(safeX, safeY); + await sleep(500); // 点击角色后等待0.5秒 + characterFound = true; + break; + } + } catch (error) { + // 如果文件不存在,跳出循环 + break; + } + } + + if (characterFound) { + break; + } + + // 如果不是最后一次尝试,尝试滚动页面 + if (pageTries < 15) { + log.info("当前页面没有目标角色,滚动页面"); + await UI.scrollPage(200); // 使用UI模块的scrollPage函数 + } + pageTries++; + } + + if (!characterFound) { + log.error(`未找到【${selectedCharacter}】`); + return false; + } + + // 识别"更换"或"加入"按钮 + const replaceResult = captureGameRegion().find(roReplace); + const joinResult = captureGameRegion().find(roJoin); + + if (replaceResult.isExist() || joinResult.isExist()) { + await sleep(300); + click(68, 1020); + keyPress("VK_LBUTTON"); + await sleep(500); + log.info(`角色切换完成:${character} -> ${actualName}`); + return true; + } else { + log.error(`该角色已在队伍中,无需切换`); + await sleep(300); + keyPress("VK_ESCAPE"); + await sleep(500); + return false; + } + } catch (error) { + log.error("角色切换过程中出错: {error}", error.message); + return false; + } + }, + + // 处理自动任务步骤 + processAutoTask: async (step) => { + try { + const { action, taskType, config } = step.data; + + if (!action) { + log.error("自动任务参数不完整,需要 action 参数"); + return false; + } + + log.info("执行自动任务操作: {action}", action); + + switch (action) { + case "enable": + // 启用自动任务 + if (!taskType) { + log.error("启用自动任务需要指定 taskType"); + return false; + } + + if (config && typeof config === "object") { + log.info("启用自动任务: {type},配置: {config}", taskType, JSON.stringify(config)); + dispatcher.addTimer(new RealtimeTimer(taskType, config)); + } else { + log.info("启用自动任务: {type}", taskType); + dispatcher.addTimer(new RealtimeTimer(taskType)); + } + break; + + case "disable": + // 取消所有自动任务 + log.info("取消所有自动任务"); + dispatcher.ClearAllTriggers(); + break; + + default: + log.error("未知的自动任务操作: {action}", action); + return false; + } + + return true; + } catch (error) { + log.error("处理自动任务步骤时出错: {error}", error.message); + return false; + } + }, + }; + + // 步骤处理器工厂 - 更好的扩展性设计 + // TAG:添加脚本功能点2 + const StepProcessorFactory = { + // 步骤处理器映射表 + processors: { + 地图追踪: async (step, context) => { + await StepProcessor.processMapTracking( + step, + context.commissionName, + context.location + ); + }, + + 等待: async (step, context) => { + const waitTime = step.data || 5000; + log.info("等待 {time} 毫秒", waitTime); + await sleep(waitTime); + }, + + 追踪委托: async (step, context) => { + await StepProcessor.processCommissionTracking(step); + }, + + 键鼠脚本: async (step, context) => { + await StepProcessor.processKeyMouseScript( + step, + context.commissionName, + context.location + ); + }, + + 对话: async (step, context) => { + await Execute.processDialogStep( + step, + context.priorityOptions, + context.npcWhiteList, + context.isInMainUI + ); + }, + + 按键: async (step, context) => { + await StepProcessor.processKeyPress(step); + }, + + tp: async (step, context) => { + await StepProcessor.processTeleport(step); + }, + + 等待返回主界面: async (step, context) => { + await StepProcessor.processWaitMainUI(context.isInMainUI); + }, + + 地址检测: async (step, context) => { + //await StepProcessor.processLocationDetection(step,context.commissionName,context.location,context.processSteps,context.currentIndex); + log.info("地址检测当前版本用不了,请联请联系作者获取最新版"); + }, + + 委托描述检测: async (step, context) => { + await StepProcessor.processCommissionDescriptionDetection( + step, + context.commissionName, + context.location, + context.processSteps, + context.currentIndex + ); + }, + + 切换角色: async (step, context) => { + await StepProcessor.processSwitchRole(step); + }, + + 自动任务: async (step, context) => { + await StepProcessor.processAutoTask(step); + }, + }, + + // 注册新的步骤处理器 + register: (stepType, processor) => { + StepProcessorFactory.processors[stepType] = processor; + log.info("注册新的步骤处理器: {type}", stepType); + }, + + // 处理步骤 + process: async (step, context) => { + const processor = StepProcessorFactory.processors[step.type]; + if (processor) { + await processor(step, context); + } else { + log.warn("未知的流程类型: {type}", step.type); + } + }, + }; + + // UI工具模块 - 处理UI检测和文本提取等工具函数 + const UIUtils = { + // 创建主界面检测函数 + createMainUIChecker: () => { + const paimonMenuRo = RecognitionObject.TemplateMatch( + file.ReadImageMatSync("Data/RecognitionObject/paimon_menu.png"), + 0, + 0, + genshin.width / 3.0, + genshin.width / 5.0 + ); + + return () => { + let captureRegion = captureGameRegion(); + let res = captureRegion.Find(paimonMenuRo); + return !res.isEmpty(); + }; + }, + + // 人名提取函数 + extractName: (text) => { + const patterns = [ + /与(.+?)对话/, + /与(.+?)一起/, + /同(.+?)交谈/, + /向(.+?)打听/, + /向(.+?)回报/, + /向(.+?)报告/, + /给(.+?)听/, + /陪同(.+?)\S+/, + /找到(.+?)\S+/, + /询问(.+?)\S+/, + /拜访(.+?)\S+/, + /寻找(.+?)\S+/, + /告诉(.+?)\S+/, + /带(.+?)去\S+/, + /跟随(.+?)\S+/, + /协助(.+?)\S+/, + /请教(.+?)\S+/, + /拜托(.+?)\S+/, + /委托(.+?)\S+/, + ]; + + for (const pattern of patterns) { + const match = text.match(pattern); + if (match && match[1]) { + return match[1].trim(); + } + } + return null; + }, + }; + + // 对话处理模块 - 处理自动对话相关功能 + const DialogProcessor = { + // 执行优化的自动对话 + executeOptimizedAutoTalk: async ( + extractedName = null, + skipCount = 5, + customPriorityOptions = null, + customNpcWhiteList = null, + isInMainUI + ) => { + // 使用传入的参数,不再加载默认配置 + const effectivePriorityOptions = customPriorityOptions || []; + const effectiveNpcWhiteList = customNpcWhiteList || []; + + // 初始化 + keyPress("V"); + + // 初始触发剧情 - 识别人名并点击 + extractedName = []; + // 人名区域OCR识别 + const nameRegion = { X: 75, Y: 240, WIDTH: 225, HEIGHT: 60 }; + let nameResults = await Utils.easyOCR(nameRegion); + // 尝试提取任务人名 + for (let i = 0; i < nameResults.count; i++) { + let text = nameResults[i].text; + log.info(`任务区域识别文本: ${text}`); + + // 尝试提取任务人名 + let name = UIUtils.extractName(text); + if (name) { + extractedName = name; + log.info(`提取到人名: ${extractedName}`); + break; + } + } + + // 对话选项区域OCR识别 + const dialogRegion = { X: 1150, Y: 300, WIDTH: 350, HEIGHT: 400 }; + nameResults = await Utils.easyOCR(dialogRegion); + let clickedWhitelistNPC = false; + let clickedExtractedName = false; + + // 处理人名区域的OCR结果 + if (nameResults.count > 0) { + log.info(`人名区域识别到 ${nameResults.count} 个文本`); + + // 首先尝试点击白名单中的NPC + for (let i = 0; i < nameResults.count; i++) { + let text = nameResults[i].text; + let res = nameResults[i]; + log.info( + "人名区域识别到{text}:位置({x},{y},{h},{w})", + res.text, + res.x, + res.y, + res.width, + res.Height + ); + // 检查是否包含白名单中的NPC名称 + for (let j = 0; j < effectiveNpcWhiteList.length; j++) { + if (text.includes(effectiveNpcWhiteList[j])) { + log.info(`找到白名单NPC: ${effectiveNpcWhiteList[j]},点击该NPC`); + keyDown("VK_MENU"); + await sleep(500); + click(res.x, res.y); + leftButtonClick(); + keyUp("VK_MENU"); + clickedWhitelistNPC = true; + break; + } + } + if (clickedWhitelistNPC) break; + } + + // 如果没有点击白名单NPC,尝试点击包含提取到的人名的选项 + if (!clickedWhitelistNPC && extractedName) { + for (let i = 0; i < nameResults.count; i++) { + let text = nameResults[i].text; + let res = nameResults[i]; + if (text.includes(extractedName)) { + log.info(`点击包含提取到任务人名的选项: ${text}`); + keyDown("VK_MENU"); + await sleep(500); + click(res.x, res.y); + leftButtonClick(); + keyUp("VK_MENU"); + clickedExtractedName = true; + break; + } + } + } + } + + // 如果没有找到NPC,使用默认触发 + if (!clickedWhitelistNPC && !clickedExtractedName) { + log.info("未找到匹配的NPC,使用默认触发方式"); + keyPress("F"); // 默认触发剧情 + await sleep(500); + } + + // 重复执行自动剧情,直到返回主界面 + let maxAttempts = 100; // 设置最大尝试次数,防止无限循环 + let attempts = 0; + let repetition = 0; + let oldcount = 1; + await sleep(1000); + log.info("开始执行自动剧情"); + + while (!isInMainUI() && attempts < maxAttempts) { + attempts++; + + // 正常跳过对话 + await genshin.chooseTalkOption("纳西妲美貌举世无双", skipCount, false); + + if (isInMainUI()) { + log.info("检测到已返回主界面,结束循环"); + break; + } + + //keyPress("VK_ESCAPE");//关弹窗 + + // 每skipCount次跳过后,进行OCR识别 + if (true) { + // 检查是否有匹配的优先选项 + let foundPriorityOption = false; + + // 获取对话区域截图并进行OCR识别 + const dialogOptionsRegion = { + X: 1250, + Y: 450, + WIDTH: 550, + HEIGHT: 400, + }; + let ocrResults = await Utils.easyOCR(dialogOptionsRegion); + if (ocrResults.count > 0) { + log.info(`识别到 ${ocrResults.count} 个选项`); + + if (ocrResults.count === oldcount) { + repetition++; + } + else { + repetition = 0; + } + oldcount = ocrResults.count; + if (repetition >= 5) { + log.info("连续5次选项数量一样,执行F跳过"); + keyPress("F"); + keyPress("VK_ESCAPE"); + repetition = 0; + } + for (let i = 0; i < ocrResults.count; i++) { + let ocrText = ocrResults[i].text; + + // 检查是否在优先选项列表中 + for (let j = 0; j < effectivePriorityOptions.length; j++) { + if (ocrText.includes(effectivePriorityOptions[j])) { + log.info( + `找到优先选项: ${effectivePriorityOptions[j]},点击该选项` + ); + // 点击该选项 + ocrResults[i].click(); + await sleep(500); + foundPriorityOption = true; + break; + } + } + + if (foundPriorityOption) break; + } + + // 如果没有找到优先选项,则使用默认跳过 + if (!foundPriorityOption) { + await genshin.chooseTalkOption("", 1, false); + } + } + } + + // 检查是否已返回主界面 + if (isInMainUI()) { + log.info("检测到已返回主界面,结束循环"); + break; + } + } + + if (isInMainUI()) { + log.info("已返回主界面,自动剧情执行完成"); + keyPress("V"); + } else { + log.warn(`已达到最大尝试次数 ${maxAttempts},但未检测到返回主界面`); + } + }, + }; + + const Execute = { + // 寻找委托目的地址带追踪任务 + findCommissionTarget: async (commissionName) => { + try { + log.info("开始寻找委托目标位置: {name}", commissionName); + + // 确保回到主界面 + await genshin.returnMainUi(); + + // 第一步,检测这个任务是否在1-3之中 + let index = 4; + + try { + // 进入委托界面 + const enterSuccess = await UI.enterCommissionScreen(); + if (!enterSuccess) { + log.error("无法进入委托界面"); + return null; + } + + await sleep(1000); + + // 识别前3个委托 + log.debug("findCommissionTarget识别前3个委托"); + + // 先识别前3个Main_Dev区域(索引0-2) + for (let regionIndex = 0; regionIndex < 3; regionIndex++) { + const region = Datas.OCR_REGIONS.Main_Dev[regionIndex]; + + try { + let results = await Utils.easyOCR(region); + + // 处理识别结果,取第一个有效结果 + for (let i = 0; i < results.count; i++) { + let result = results[i]; + let text = Utils.cleanText(result.text); + if (text && text.length >= 2) { + log.info( + '第{regionIndex}个委托: "{text}"', + regionIndex + 1, + text + ); + if (text === commissionName) { + index = regionIndex + 1; + log.info( + "找到委托 {name} 在位置 {index}", + commissionName, + index + ); + break; + } + } + } + + // 如果找到了委托,跳出外层循环 + if (index !== 4) { + break; + } + } catch (regionError) { + log.error( + "识别第{index}个委托区域时出错: {error}", + regionIndex + 1, + regionError + ); + continue; + } + } + } catch (error) { + log.error("findCommissionTarget第一步失败: {error}", error.message); + } + + // 如果前3个没找到,检查第4个委托(需要翻页) + if (index === 4) { + try { + log.info("前3个委托中未找到,检查第4个委托"); + await UI.pageScroll(1); + + const region = Datas.OCR_REGIONS.Main_Dev[3]; // 第4个区域 + let results = await Utils.easyOCR(region); + + for (let i = 0; i < results.count; i++) { + let result = results[i]; + let text = Utils.cleanText(result.text); + if (text && text.length >= 2) { + log.info('第4个委托: "{text}"', text); + if (text === commissionName) { + index = 4; + log.info("找到委托 {name} 在第4个位置", commissionName); + break; + } + } + } + } catch (fourthError) { + log.error("识别第4个委托时出错: {error}", fourthError); + } + } + + // 第二步:进入对应的大地图,获取位置 + let currentCommissionPosition = null; + try { + // 点击详情按钮 + if (index === 4) { + // 第4个委托已经翻页了,使用索引3 + index = 3; + } + + const button = Datas.COMMISSION_DETAIL_BUTTONS[index - 1]; + if (button) { + log.info("点击委托详情按钮: {id}", button.id); + click(button.x, button.y); + await sleep(2000); + + // 检查是否有追踪按钮并点击 + const trackingResult = await Utils.easyOCROne( + Datas.OCR_REGIONS.COMMISSION_TRACKING + ); + if (trackingResult === "追踪") { + log.info("发现追踪按钮,点击追踪"); + click(1693, 1000); + await sleep(1000); + } + + // 退出详情页面 + log.info("退出详情页面 - 按ESC"); + keyDown("VK_ESCAPE"); + await sleep(300); + keyUp("VK_ESCAPE"); + await sleep(1200); + await genshin.setBigMapZoomLevel(2); + // 获取地图坐标并保存 + const bigMapPosition = genshin.getPositionFromBigMap(); + if (bigMapPosition) { + currentCommissionPosition = bigMapPosition; + log.info( + "当前委托位置: ({x}, {y})", + bigMapPosition.x, + bigMapPosition.y + ); + } + + await genshin.returnMainUi(); + } else { + log.error("无效的委托按钮索引: {index}", index); + } + } catch (error) { + log.error("findCommissionTarget第2步失败: {error}", error.message); + } + + return currentCommissionPosition; + } catch (error) { + log.error("寻找委托目标位置时出错: {error}", error.message); + return null; + } + }, + + // 读取并解析流程文件为步骤数组 + loadAndParseProcessFile: async ( + commissionName, + location, + locationprocessFilePath = "process.json" + ) => { + const processFilePath = `${Datas.TALK_PROCESS_BASE_PATH}/${commissionName}/${location}/${locationprocessFilePath}`; + let processContent; + let processSteps; + try { + processContent = await file.readText(processFilePath); + log.info("找到对话委托流程文件: {path}", processFilePath); + } catch (error) { + log.warn( + "未找到对话委托 {name} 在 {location} 的流程文件: {path}", + commissionName, + location, + processFilePath + ); + return false; + } + // 解析流程内容 + + try { + // 尝试解析为JSON格式 + const jsonData = JSON.parse(processContent); + if (Array.isArray(jsonData)) { + processSteps = jsonData; + log.debug("JSON流程解析成功"); + } else { + log.error("JSON流程格式错误,应为数组"); + return false; + } + } catch (jsonError) { + // 如果不是JSON格式,按简单格式处理 + const lines = processContent + .split("\n") + .map((line) => line.trim()) + .filter((line) => line.length > 0); + processSteps = lines; + } + return processSteps; + }, + + // 执行对话委托流程(优化版) + executeTalkCommission: async (commissionName, location) => { + try { + const processSteps = await Execute.loadAndParseProcessFile( + commissionName, + location, + "process.json" + ); + + // 使用统一的处理器执行流程 + return await Execute.executeUnifiedTalkProcess( + processSteps, + commissionName, + location + ); + } catch (error) { + log.error("执行对话委托时出错: {error}", error.message); + return false; + } + }, + + // 自动导航到NPC对话位置(从main_branch.js移植) + autoNavigateToTalk: async (npcName = "", iconType = "") => { + try { + // 设置目标NPC名称 + const textArray = npcName; + + // 根据图标类型选择不同的识别对象 + let boxIconRo; + if (iconType === "Bigmap") { + boxIconRo = RecognitionObject.TemplateMatch( + file.ReadImageMatSync( + "Data/RecognitionObject/IconBigmapCommission.jpg" + ) + ); + log.info("使用大地图图标"); + } + else if (iconType === "Question") { + boxIconRo = RecognitionObject.TemplateMatch( + file.ReadImageMatSync( + "Data/RecognitionObject/IconQuestionCommission.png" + ) + ); + log.info("使用问号任务图标"); + } + else { + // 默认使用任务图标 + boxIconRo = RecognitionObject.TemplateMatch( + file.ReadImageMatSync( + "Data/RecognitionObject/IconTaskCommission.png" + ) + ); + log.info("使用任务图标"); + } + + let advanceNum = 0; //前进次数 + + middleButtonClick(); + await sleep(800); + + while (true) { + // 1. 优先检查是否已到达 + await sleep(500);// 等待0.5秒 + let captureRegion = captureGameRegion(); + let rewardTextArea = captureRegion.DeriveCrop(1210, 515, 200, 50); + let rewardResult = rewardTextArea.find(RecognitionObject.ocrThis); + log.debug("检测到文字: " + rewardResult.text); + // 检测到特点文字则结束!!! + if (rewardResult.text == textArray) { + log.info("已到达指定位置,检测到文字: " + rewardResult.text); + return; + } else if (advanceNum > 80) { + throw new Error("前进时间超时"); + } + // 2. 未到达领奖点,则调整视野 + for (let i = 0; i < 100; i++) { + captureRegion = captureGameRegion(); + let iconRes = captureRegion.Find(boxIconRo); + log.info("检测到委托图标位置 ({x}, {y})", iconRes.x, iconRes.y); + if (iconRes.x >= 920 && iconRes.x <= 980 && iconRes.y <= 540) { + advanceNum++; + log.info(`视野已调正,前进第${advanceNum}次`); + break; + } else { + // 小幅度调整 + if (iconRes.y >= 520) moveMouseBy(0, 920); + let adjustAmount = iconRes.x < 920 ? -20 : 20; + let distanceToCenter = Math.abs(iconRes.x - 920); // 计算与920的距离 + let scaleFactor = Math.max(1, Math.floor(distanceToCenter / 50)); // 根据距离缩放,最小为1 + let adjustAmount2 = iconRes.y < 540 ? scaleFactor : 10; + moveMouseBy(adjustAmount * adjustAmount2, 0); + await sleep(100); + } + if (i > 50) throw new Error("视野调整超时"); + } + // 3. 前进一小步 + keyDown("w"); + await sleep(200); + keyPress("VK_SPACE"); + await sleep(200); + keyPress("VK_SPACE"); + await sleep(200); + keyUp("w"); + await sleep(200); // 等待角色移动稳定 + } + } catch (error) { + log.error("自动导航到NPC对话位置时出错: {error}", error.message); + throw error; + } + }, + + // 统一的对话委托流程处理器(重构版 - 更简洁的主控制函数) + executeUnifiedTalkProcess: async ( + processSteps, + commissionName, + location + ) => { + try { + log.info("执行统一对话委托流程: {name}", commissionName); + + if (!processSteps || processSteps.length === 0) { + log.warn("没有找到有效的流程步骤"); + return false; + } + + // 初始化UI检测器和配置 + const isInMainUI = UIUtils.createMainUIChecker(); + let priorityOptions = []; + let npcWhiteList = []; + + // 刚开始就追踪委托目标 + //await Execute.findCommissionTarget(commissionName); + + // 执行处理步骤 + for (let i = 0; i < processSteps.length; i++) { + const step = processSteps[i]; + log.info("执行流程步骤 {step}: {type}", i + 1, step.type || step); + + try { + // 重置为默认值并处理自定义配置 + const stepConfig = Execute.processStepConfiguration( + step, + priorityOptions, + npcWhiteList + ); + priorityOptions = stepConfig.priorityOptions; + npcWhiteList = stepConfig.npcWhiteList; + + // TAG:添加脚本功能点3 + const context = { + commissionName, + location, + processSteps, + currentIndex: i, + isInMainUI, + priorityOptions, + npcWhiteList, + }; + + // 处理步骤 + await Execute.processStep(step, context); + } catch (stepError) { + log.error( + "执行步骤 {step} 时出错: {error}", + i + 1, + stepError.message + ); + // 继续执行下一步,不中断整个流程 + } + + // 每个步骤之间等待一段时间 + await sleep(2000); + } + + log.info("统一对话委托流程执行完成: {name}", commissionName); + return true; + } catch (error) { + log.error("执行统一对话委托流程时出错: {error}", error.message); + return false; + } + }, + + // 处理步骤配置(优先选项和NPC白名单) + processStepConfiguration: ( + step, + defaultPriorityOptions, + defaultNpcWhiteList + ) => { + let priorityOptions = [...defaultPriorityOptions]; + let npcWhiteList = [...defaultNpcWhiteList]; + + // 如果步骤中包含自定义的优先选项和NPC白名单,则使用它们 + if (step.data && typeof step.data === "object") { + if (Array.isArray(step.data.priorityOptions)) { + priorityOptions = step.data.priorityOptions; + log.info("使用自定义优先选项: {options}", priorityOptions.join(", ")); + } + if (Array.isArray(step.data.npcWhiteList)) { + npcWhiteList = step.data.npcWhiteList; + log.info("使用自定义NPC白名单: {npcs}", npcWhiteList.join(", ")); + } + } + + return { priorityOptions, npcWhiteList }; + }, + + // 处理单个步骤 + processStep: async (step, context) => { + if (typeof step === "string") { + // 简单格式处理 + await Execute.processStringStep(step, context); + } else if (typeof step === "object") { + // JSON格式处理 + await Execute.processObjectStep(step, context); + } + }, + + // 处理字符串格式的步骤 + processStringStep: async (step, context) => { + if (step.endsWith(".json")) { + // 地图追踪文件 + await StepProcessor.processMapTracking( + step, + context.commissionName, + context.location + ); + } else if (step === "F") { + // 按F键并执行优化的自动剧情 + log.info("执行自动剧情"); + await DialogProcessor.executeOptimizedAutoTalk( + null, + 5, + context.priorityOptions, + context.npcWhiteList, + context.isInMainUI + ); + } + }, + + // 处理对象格式的步骤 + processObjectStep: async (step, context) => { + if (step.note) { + log.info("步骤说明: {note}", step.note); + } + + // 使用步骤处理器工厂来处理步骤 + await StepProcessorFactory.process(step, context); + }, + + // 示例:注册自定义步骤处理器 + registerCustomStepProcessors: () => { + // 注册等待步骤处理器 + StepProcessorFactory.register("等待", async (step, context) => { + const waitTime = step.data || 1000; + log.info("等待 {time} 毫秒", waitTime); + await sleep(waitTime); + }); + + // 注册截图步骤处理器 + StepProcessorFactory.register("截图", async (step, context) => { + const filename = step.data || `screenshot_${Date.now()}.png`; + log.info("截图保存为: {filename}", filename); + // 这里可以添加实际的截图逻辑 + }); + + // 注册条件检查步骤处理器 + StepProcessorFactory.register("条件检查", async (step, context) => { + const condition = step.data.condition; + const trueSteps = step.data.trueSteps || []; + const falseSteps = step.data.falseSteps || []; + + log.info("执行条件检查: {condition}", condition); + + // 这里可以添加条件判断逻辑 + const conditionResult = true; // 示例结果 + + const stepsToExecute = conditionResult ? trueSteps : falseSteps; + for (const subStep of stepsToExecute) { + await Execute.processStep(subStep, context); + } + }); + + log.info("自定义步骤处理器注册完成"); + }, + + // 处理对话步骤 + processDialogStep: async ( + step, + priorityOptions, + npcWhiteList, + isInMainUI + ) => { + log.info("执行对话"); + let skipCount = 2; // 默认跳过2次 + + // 处理对话选项 + if (typeof step.data === "number") { + // 兼容旧版本,如果data是数字,则视为skipCount + skipCount = step.data; + } else if (typeof step.data === "object" && step.data.skipCount) { + // 新版本,data是对象,包含skipCount + skipCount = step.data.skipCount; + } + + // 执行对话,使用当前步骤的优先选项和NPC白名单 + await DialogProcessor.executeOptimizedAutoTalk( + null, + skipCount, + priorityOptions, + npcWhiteList, + isInMainUI + ); + }, + }; + + const CommissionsFunc = { + + // 计算两点之间的距离 + calculateDistance: (point1, point2) => { + if ( + !point1 || + !point2 || + !point1.X || + !point1.Y || + !point2.x || + !point2.y + ) { + log.warn("无效的位置数据"); + return Infinity; + } + return Math.sqrt( + Math.pow(point1.X - point2.x, 2) + Math.pow(point1.Y - point2.y, 2) + ); + }, + + // 获取委托的目标坐标(从路径追踪文件中获取最后一个坐标) + getCommissionTargetPosition: async (scriptPath) => { + try { + const scriptContent = await file.readText(scriptPath); + const pathData = JSON.parse(scriptContent); + + if (!pathData.positions || pathData.positions.length === 0) { + log.warn("路径追踪文件 {path} 中没有有效的坐标数据", scriptPath); + return null; + } + + const lastPosition = pathData.positions[pathData.positions.length - 1]; + if (!lastPosition.x || !lastPosition.y) { + log.warn( + "路径追踪文件 {path} 的最后一个路径点缺少坐标数据", + scriptPath + ); + return null; + } + + log.debug( + "从脚本路径 {path} 获取到目标坐标: ({x}, {y})", + scriptPath, + lastPosition.x, + lastPosition.y + ); + return { + x: lastPosition.x, + y: lastPosition.y, + }; + } catch (error) { + log.error("获取委托目标坐标时出错: {error}", error.message); + return null; + } + }, + + // 执行带分支的对话委托流程(从main_branch.js移植) + executeTalkCommissionWithBranches: async (processPath) => { + try { + log.info("开始执行对话委托流程: {path}", processPath); + + // 读取流程文件 + const processContent = await file.readText(processPath); + + // 解析流程内容 + const branches = CommissionsFunc.parseProcessBranches(processContent); + + // 确定要执行的分支 + const branchToExecute = await CommissionsFunc.determineBranch(branches); + + if (branchToExecute) { + log.info("执行分支: {id}", branchToExecute.id); + await Execute.executeUnifiedTalkProcess(branchToExecute.steps); + } else { + log.warn("没有找到匹配的分支,执行默认流程"); + // 尝试解析整个内容作为单一流程 + const steps = JSON.parse(processContent); + await Execute.executeUnifiedTalkProcess(steps); + } + } catch (error) { + log.error("执行对话委托流程出错: {error}", error.message); + } + }, + + // 解析流程文件中的分支(从main_branch.js移植) + parseProcessBranches: (content) => { + const branches = []; + const branchRegex = + /分支:(\d+)[\s\S]*?判断方法"([^"]+)"[\s\S]*?data:"([^"]+)"([\s\S]*?)(?=分支:|$)/g; + + let match; + while ((match = branchRegex.exec(content)) !== null) { + const branchId = parseInt(match[1]); + const judgmentMethod = match[2]; + const judgmentData = match[3]; + const stepsContent = match[4].trim(); + + // 解析步骤 + let steps = []; + try { + // 尝试解析JSON数组 + const jsonContent = `[${stepsContent}]`; + steps = JSON.parse(jsonContent); + } catch (error) { + log.warn("解析分支{id}的步骤出错: {error}", branchId, error); + continue; + } + + branches.push({ + id: branchId, + method: judgmentMethod, + data: judgmentData, + steps: steps, + }); + } + + return branches; + }, + + // 确定要执行的分支(从main_branch.js移植) + determineBranch: async (branches) => { + for (const branch of branches) { + switch (branch.method) { + case "坐标": + if (await CommissionsFunc.checkCoordinateMatch(branch.data)) { + return branch; + } + break; + + case "任务追踪": + if (await CommissionsFunc.checkTaskMatch(branch.data)) { + return branch; + } + break; + + default: + log.warn("未知的判断方法: {method}", branch.method); + } + } + + return null; + }, + + // 检查当前坐标是否匹配(从main_branch.js移植) + checkCoordinateMatch: async (coordData) => { + try { + const [targetX, targetY] = coordData + .split(",") + .map((c) => parseFloat(c.trim())); + + // 获取当前委托位置 + const playerPos = await CommissionsFunc.getCurrentCommissionPosition(); + if (!playerPos) return false; + + // 计算距离 + const distance = CommissionsFunc.calculateDistance(playerPos, { + x: targetX, + y: targetY, + }); + log.info( + "当前位置: ({x}, {y}),目标位置: ({tx}, {ty}),距离: {d}", + playerPos.x, + playerPos.y, + targetX, + targetY, + distance + ); + + // 如果距离小于阈值,认为匹配 + return distance < 100; // 可以调整阈值 + } catch (error) { + log.error("检查坐标匹配出错: {error}", error.message); + return false; + } + }, + + // 检查当前任务是否匹配(从main_branch.js移植) + checkTaskMatch: async (taskName) => { + try { + // 识别左上角任务区域文本 + const taskRegion = { X: 75, Y: 240, WIDTH: 225, HEIGHT: 60 }; + const taskResults = await Utils.easyOCR(taskRegion); + + // 检查是否包含目标任务名称 + for (let i = 0; i < taskResults.count; i++) { + const text = taskResults[i].text; + log.info(`任务区域识别文本: ${text}`); + + if (text.includes(taskName)) { + log.info(`找到匹配任务: ${taskName}`); + return true; + } + } + + log.info(`未找到匹配任务: ${taskName}`); + return false; + } catch (error) { + log.error("检查任务匹配出错: {error}", error.message); + return false; + } + }, + + // 获取当前委托位置(辅助函数) + getCurrentCommissionPosition: async () => { + try { + // 这里可以通过多种方式获取当前位置 + // 1. 从大地图获取 + await genshin.setBigMapZoomLevel(2); + const bigMapPosition = genshin.getPositionFromBigMap(); + if (bigMapPosition) { + return bigMapPosition; + } + + // 2. 从当前委托位置变量获取(如果有的话) + if (currentCommissionPosition) { + return currentCommissionPosition; + } + + log.warn("无法获取当前委托位置"); + return null; + } catch (error) { + log.error("获取当前委托位置时出错: {error}", error.message); + return null; + } + }, + }; + + const Test = async () => { + Utils.iframe(Datas.OCR_REGIONS.Main_Dev[0]); + // 角色切换步骤使用示例: + // 在process.json文件中添加如下步骤: + // { + // "type": "切换角色", + // "data": { + // "position": 1, + // "character": "枫原万叶" + // }, + // "note": "切换第1号位为枫原万叶" + // } + + // // 切换角色示例(可选) + // // 如果需要切换角色,可以取消注释下面的代码 + // const switchRoleStep = { + // type: "切换角色", + // data: { position: 1, character: "枫原万叶" }, + // note: "切换第1号位为枫原万叶", + // }; + // await StepProcessor.processSwitchRole(switchRoleStep); + }; + + //Main + const Main = async () => { + log.debug("版本: {version}", VERSION); + try { + if (selectedProcess === "刷新剧情列表") { + // 刷新操作:扫描所有process.json并更新设置 + await refreshProcessList(); + log.info("委托列表已刷新,请重新选择并运行"); + } else { + // 解析选中的委托路径 + const pathParts = selectedProcess.split('-'); + + // 确保至少有两个文件夹层级 + if (pathParts.length < 2) { + throw new Error("无效的委托路径格式"); + } + + // 提取最后两个文件夹名 + const folder1 = pathParts[pathParts.length - 2]; + const folder2 = pathParts[pathParts.length - 1]; + + // 设置动态基础路径(倒数第二个文件夹之前的所有部分) + Datas.TALK_PROCESS_BASE_PATH = "process/" + pathParts.slice(0, pathParts.length - 2).join('/'); + + log.info("执行任务: {path}", selectedProcess); + log.debug("基础路径: {basePath}", Datas.TALK_PROCESS_BASE_PATH); + log.debug("文件夹1: {folder1}, 文件夹2: {folder2}", folder1, folder2); + log.info("启用自动剧情"); + dispatcher.AddTrigger(new RealtimeTimer("AutoSkip")); + if (!settings.noSkip) { + log.info("启用自动拾取"); + dispatcher.AddTrigger(new RealtimeTimer("AutoPick")); + } + if (!settings.noEat) { + log.info("启用自动吃药"); + dispatcher.AddTrigger(new RealtimeTimer("AutoEat")); + } + await switchPartyIfNeeded(team); + await Execute.executeTalkCommission(folder1, folder2); + dispatcher.ClearAllTriggers(); + } + } catch (error) { + log.error("执行出错: {error}", error.message); + errorlog(); + } + }; + + +// 刷新委托列表(保留完整路径结构) +async function refreshProcessList() { + // 读取所有process.json文件 + const allFiles = await readFolder("process/", true); + + // 筛选并处理符合条件的process.json文件 + const processEntries = allFiles + .filter(file => file.fileName === "process.json") + .map(file => { + const pathSegments = file.folderPathArray; + + // 确保路径中有"process"部分 + const processIndex = pathSegments.indexOf("process"); + if (processIndex === -1 || processIndex >= pathSegments.length - 2) { + throw new Error(`无效的路径结构: ${file.fullPath}`); + } + + // 提取"process"之后的所有部分 + const relativePath = pathSegments.slice(processIndex + 1); + + // 确保至少有两个文件夹层级 + if (relativePath.length < 2) { + throw new Error(`路径层级不足: ${file.fullPath}`); + } + + // 创建选项名称(用连字符连接所有文件夹名) + const optionName = relativePath.join('-'); + + return { + name: optionName, + path: file.fullPath + }; + }); + + // 创建选项列表(以"刷新剧情列表"开头) + const options = ["刷新剧情列表", ...processEntries.map(entry => entry.name)]; + + // 更新settings.json + await updateSettingsFile(options); + log.info("已更新{count}个委托选项", processEntries.length); +} + +// 更新settings.json文件 +async function updateSettingsFile(options) { + const settingsPath = "./settings.json"; + let settingsArray; + + try { + // 读取现有设置 + const content = file.readTextSync(settingsPath); + settingsArray = JSON.parse(content); + } catch (e) { + // 文件不存在或解析失败时创建默认设置 + throw new Error("设置文件不存在"); + } + + // 更新process_selector选项 + const selectorIndex = settingsArray.findIndex(item => item.name === "process_selector"); + if (selectorIndex !== -1) { + settingsArray[selectorIndex].options = options; + settingsArray[selectorIndex].default = "刷新剧情列表"; + } else { + // 如果不存在则添加 + settingsArray.push({ + "name": "process_selector", + "type": "select", + "label": "可执行剧情列表", + "options": options, + "default": "刷新剧情列表" + }); + } + + // 写入更新后的设置 + const success = file.writeTextSync(settingsPath, JSON.stringify(settingsArray, null, 2)); + if (!success) { + throw new Error("写入设置文件失败"); + } +} + +// 文件夹读取函数(优化版) +async function readFolder(folderPath, onlyJson) { + log.info(`开始读取文件夹: ${folderPath}`); + const folderStack = [folderPath]; + const files = []; + + while (folderStack.length > 0) { + const currentPath = folderStack.pop(); + const items = file.ReadPathSync(currentPath); + const subFolders = []; + + for (const itemPath of items) { + if (file.IsFolder(itemPath)) { + subFolders.push(itemPath); + } else if (!onlyJson || itemPath.toLowerCase().endsWith(".json")) { + const pathParts = itemPath.split(/[\\\/]/).filter(Boolean); + const fileName = pathParts.pop(); + files.push({ + fullPath: itemPath, + fileName: fileName, + folderPathArray: pathParts + }); + } + } + + // 保持原始顺序添加子文件夹 + folderStack.push(...subFolders.reverse()); + } + + return files; +} + +//切换队伍 +async function switchPartyIfNeeded(partyName) { + if (!partyName) { + await genshin.returnMainUi(); + return; + } + try { + log.info("正在尝试切换至" + partyName); + if (!await genshin.switchParty(partyName)) { + log.info("切换队伍失败,前往七天神像重试"); + await genshin.tpToStatueOfTheSeven(); + await genshin.switchParty(partyName); + } + } catch { + log.error("队伍切换失败,可能处于联机模式或其他不可切换状态"); + notification.error(`队伍切换失败,可能处于联机模式或其他不可切换状态`); + await genshin.returnMainUi(); + } +} + +await Main(); +})(); diff --git a/repo/js/AAA-Auto-Story-Loader/manifest.json b/repo/js/AutoStoryLoader/manifest.json similarity index 97% rename from repo/js/AAA-Auto-Story-Loader/manifest.json rename to repo/js/AutoStoryLoader/manifest.json index 09d5a88ec..38f265a7a 100644 --- a/repo/js/AAA-Auto-Story-Loader/manifest.json +++ b/repo/js/AutoStoryLoader/manifest.json @@ -1,15 +1,15 @@ -{ - "manifest_version": 1, - "name": "自动剧情加载器", - "version": "1.1", - "tags": ["剧情","任务"], - "description": "剧情自动加载器一键挂机过剧情:自动寻路、对话、战斗(需任务脚本支持),脚本拖进调度器就能跑,仅提供技术框架,完全体须搭配需任务脚本使用,详情见说明文档", - "authors": [ - { - "name": "星野", - "links": "https://github.com/LX666-666" - } - ], - "settings_ui": "settings.json", - "main": "main.js" +{ + "manifest_version": 1, + "name": "自动剧情加载器", + "version": "1.1", + "tags": ["剧情","任务"], + "description": "剧情自动加载器一键挂机过剧情:自动寻路、对话、战斗(需任务脚本支持),脚本拖进调度器就能跑,仅提供技术框架,完全体须搭配需任务脚本使用,详情见说明文档", + "authors": [ + { + "name": "星野", + "links": "https://github.com/LX666-666" + } + ], + "settings_ui": "settings.json", + "main": "main.js" } \ No newline at end of file diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/度假村欢聚总在悠闲第1天/process.json b/repo/js/AutoStoryLoader/process/示例/度假村欢聚总在悠闲第1天/process.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/度假村欢聚总在悠闲第1天/process.json rename to repo/js/AutoStoryLoader/process/示例/度假村欢聚总在悠闲第1天/process.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/度假村欢聚总在悠闲第2天/process.json b/repo/js/AutoStoryLoader/process/示例/度假村欢聚总在悠闲第2天/process.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/度假村欢聚总在悠闲第2天/process.json rename to repo/js/AutoStoryLoader/process/示例/度假村欢聚总在悠闲第2天/process.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/process.json b/repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/process.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/process.json rename to repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/process.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-1.json b/repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-1.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-1.json rename to repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-1.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-2.json b/repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-2.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-2.json rename to repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-2.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-3.json b/repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-3.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-3.json rename to repo/js/AutoStoryLoader/process/示例/父亲能做的事/晨曦酒庄/父亲能做的事-晨曦酒庄-3.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/皮皮潘大赛/process.json b/repo/js/AutoStoryLoader/process/示例/皮皮潘大赛/process.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/皮皮潘大赛/process.json rename to repo/js/AutoStoryLoader/process/示例/皮皮潘大赛/process.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/process.json b/repo/js/AutoStoryLoader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/process.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/process.json rename to repo/js/AutoStoryLoader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/process.json diff --git a/repo/js/AAA-Auto-Story-Loader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/接取任务.json b/repo/js/AutoStoryLoader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/接取任务.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/接取任务.json rename to repo/js/AutoStoryLoader/process/示例/致自由之风(音游接取任务)旧框架/蒙德城/接取任务.json diff --git a/repo/js/AAA-Auto-Story-Loader/settings.json b/repo/js/AutoStoryLoader/settings.json similarity index 100% rename from repo/js/AAA-Auto-Story-Loader/settings.json rename to repo/js/AutoStoryLoader/settings.json