From 54f6ca91c00c1ebc96f4f2d0ecd46fc6098f35df Mon Sep 17 00:00:00 2001 From: Lancarus <34369130+Lancarus@users.noreply.github.com> Date: Mon, 28 Aug 2023 19:18:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=83=A7=E5=BC=80?= =?UTF-8?q?=E6=B0=B4=E9=80=BB=E8=BE=91=EF=BC=8C=E7=8E=B0=E5=9C=A8=E8=83=BD?= =?UTF-8?q?=E5=9C=A8=E4=BD=8E=E9=9A=BE=E5=BA=A6=E7=83=A7=E6=B0=B4=EF=BC=8C?= =?UTF-8?q?=E9=AB=98=E9=9A=BE=E5=BA=A6=E5=BC=80=E5=A7=8B=20(#6094)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roguelike/Sami/encounter_for_deposit.json | 2 +- resource/roguelike/Sami/shopping.json | 1046 +++++++++-------- resource/tasks.json | 227 +++- .../Mizuki@Roguelike@ChooseDifficulty.png | Bin 6909 -> 12184 bytes .../Mizuki@Roguelike@ChooseDifficulty0.png | Bin 0 -> 12741 bytes .../Roguelike@ExitThenAbandon_mode4.png | Bin 0 -> 2525 bytes .../Sami@Roguelike@ChooseDifficulty.png | Bin 6909 -> 11747 bytes src/MaaCore/MaaCore.vcxproj | 4 + src/MaaCore/MaaCore.vcxproj.filters | 14 +- src/MaaCore/Status.h | 1 + src/MaaCore/Task/AbstractTaskPlugin.h | 1 + src/MaaCore/Task/Interface/RoguelikeTask.cpp | 20 + src/MaaCore/Task/Interface/RoguelikeTask.h | 2 + ...RoguelikeDifficultySelectionTaskPlugin.cpp | 55 + .../RoguelikeDifficultySelectionTaskPlugin.h | 18 + .../RoguelikeLastRewardTaskPlugin.cpp | 43 + .../Roguelike/RoguelikeLastRewardTaskPlugin.h | 18 + .../Roguelike/RoguelikeShoppingTaskPlugin.cpp | 2 +- 18 files changed, 979 insertions(+), 474 deletions(-) create mode 100644 resource/template/Mizuki@Roguelike@ChooseDifficulty0.png create mode 100644 resource/template/Roguelike@ExitThenAbandon_mode4.png create mode 100644 src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp create mode 100644 src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.h create mode 100644 src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp create mode 100644 src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h diff --git a/resource/roguelike/Sami/encounter_for_deposit.json b/resource/roguelike/Sami/encounter_for_deposit.json index 2025f9e2d0..de2023972e 100644 --- a/resource/roguelike/Sami/encounter_for_deposit.json +++ b/resource/roguelike/Sami/encounter_for_deposit.json @@ -500,7 +500,7 @@ { "name": "前行的林地", "option_num": 2, - "choose": 2, + "choose": 1, "choice_require": [ { "name": "树上就不能走吗?", diff --git a/resource/roguelike/Sami/shopping.json b/resource/roguelike/Sami/shopping.json index c05c0b9b26..aaa2ceac67 100644 --- a/resource/roguelike/Sami/shopping.json +++ b/resource/roguelike/Sami/shopping.json @@ -1,62 +1,365 @@ { "theme": "Sami", "priority": [ - { - "name": "地区行动方案", - "effect": "【极地化】希望+2,招募4星干员的希望消耗-2,每次招募有概率出现随机直升的4星干员※", - "No": 15 + "name": "锈蚀的铁锤", + "effect": "商店中购买道具所需源石锭-50%", + "No": 189 }, { - "name": "地区行动方案-α" + "name": "人事部密信-γ", + "effect": "【极地化】希望+2,招募6星干员的希望消耗-2,每次招募有概率出现随机直升的6星干员", + "No": 17 }, { - "name": "地区行动方案-β" + "name": "人事部密信-β", + "effect": "【冻土化】希望+1,招募6星干员的希望消耗-2,每次招募有概率出现随机直升的6星干员", + "No": 17 }, { - "name": "地区行动方案-γ" - }, - { - "name": "全局作战文件", + "name": "全局作战文件-γ", "effect": "【极地化】希望+2,招募5星干员的希望消耗-2,每次招募有概率出现随机直升的5星干员※", "No": 16 }, { - "name": "全局作战文件-α" + "name": "一份演讲稿", + "effect": "招募所有干员的希望消耗-2", + "No": 188 }, { - "name": "全局作战文件-β" - }, - { - "name": "全局作战文件-γ" - }, - { - "name": "人事部密信", - "effect": "【极地化】希望+2,招募6星干员的希望消耗-2,每次招募有概率出现随机直升的6星干员※", + "name": "人事部密信-α", + "effect": "【高寒化】希望+1,招募6星干员的希望消耗-2", "No": 17 }, { - "name": "人事部密信-α" + "name": "缠梦古堡模型", + "effect": "初始部署费用+30", + "No": 95 }, { - "name": "人事部密信-β" + "name": "微缩舞台模型", + "effect": "初始部署费用+20", + "No": 94 }, { - "name": "人事部密信-γ" + "name": "人偶之家", + "effect": "初始部署费用+10", + "No": 93 }, { - "name": "罗德岛战术电台", - "effect": "【极地化】希望+2,战斗后掉落招募券时,增加两个可选项", - "No": 18 + "name": "《第二经济改革法》", + "effect": "所有干员的初始技力+18", + "No": 100 }, { - "name": "罗德岛战术电台-α" + "name": "高卢银行支票", + "effect": "所有干员的初始技力+12", + "No": 99 + }, + { + "name": "老蒲扇", + "effect": "战斗编队中每有一个职业不同的干员,所有干员的攻击力+10%", + "No": 112 + }, + { + "name": "古高卢银币", + "effect": "所有干员的初始技力+6", + "No": 98 }, { - "name": "罗德岛战术电台-β" + "name": "荆棘环", + "effect": "近战干员在受到治疗后,使自身和周围4格内的干员获得1点技力", + "No": 128 }, { - "name": "罗德岛战术电台-γ" + "name": "活木甲", + "effect": "所有我方近战单位部署时获得相当于最大生命50%的屏障", + "No": 134 + }, + { + "name": "不灭的火炬", + "effect": "所有干员周围4格每有一名干员,攻击速度+30", + "No": 140 + }, + { + "name": "岩角号", + "effect": "所有干员周围4格每有一名干员,攻击力+20%", + "No": 139 + }, + { + "name": "湖中神盾", + "effect": "护盾值+1;战斗开始时如果拥有护盾值,所有我方单位的最大生命+60%", + "No": 141 + }, + { + "name": "古地树实", + "effect": "立即获得三件随机的小玩意", + "No": 205 + }, + { + "name": "立体艺术装置", + "effect": "回复7目标生命,每次战斗结束后额外回复1目标生命", + "No": 192 + }, + { + "name": "“时光之末“", + "effect": "仅一次,在非区域最终战斗和领袖战中失败时不结束探索,目标生命+1并继续下一步行动", + "No": 225 + }, + { + "name": "“小格兰法洛“", + "effect": "每次敌人进入保护目标点时,立刻对全场所有敌人造成5秒晕眩", + "No": 226 + }, + { + "name": "“碎片大厦的回忆“", + "effect": "每次敌人进入保护目标点时,立刻对全场所有敌人造成3000点真实伤害", + "No": 227 + }, + { + "name": "宁静泉流", + "effect": "抗干扰指数+2,目标生命上限+3,希望+3", + "No": 51 + }, + + { + "name": "特殊抑制器", + "effect": "目标生命上限+2,回复2目标生命", + "No": 34 + }, + { + "name": "长生者之证", + "effect": "目标生命上限+6", + "No": 37 + }, + { + "name": "阿卡胡拉饭碗", + "effect": "回复4目标生命,护盾值+2", + "No": 191 + }, + { + "name": "《旧高卢地名源流考》", + "effect": "护盾值+6", + "No": 32 + }, + + { + "name": "血魔的寝床", + "effect": "目标生命上限+4", + "No": 36 + }, + { + "name": "警戒篱木", + "effect": "坍缩值-2,目标生命上限+2", + "No": 198 + }, + { + "name": "光谱分析仪", + "effect": "抗干扰指数+1,护盾值+2", + "No": 49 + }, + { + "name": "御2", + "effect": "护盾值+5", + "No": 193 + }, + { + "name": "石像鬼塑像", + "effect": "目标生命上限+3", + "No": 35 + }, + { + "name": "《杜林地上环游记》", + "effect": "护盾值+4", + "No": 31 + }, + { + "name": "闲暇时光", + "effect": "可携带干员+1,抗干扰指数+1", + "No": 50 + }, + { + "name": "Miss.Christine摸摸券-γ", + "promotion": 2, + "effect": "【极地化】护盾值+2,并进阶两个干员(不消耗且获得1希望)", + "No": 14 + }, + { + "name": "“国王的护戒“", + "effect": "护盾值+2,将目标生命全部转化为等量护盾值(目标生命不会低于1)", + "No": 195 + }, + { + "name": "古旧铸物", + "promotion": 2, + "effect": "立即进阶三个干员(不消耗希望)", + "No": 187 + }, + { + "name": "Miss.Christine摸摸券-β", + "promotion": 2, + "effect": "【冻土化】护盾值+1,并进阶两个干员(不消耗且获得1希望)", + "No": 14 + }, + { + "name": "热水壶", + "effect": "目标生命上限+1,希望+1", + "No": 33 + }, + { + "name": "赤金的远征", + "effect": "希望+4,可携带干员+1,可同时部署人数+1", + "No": 30 + }, + { + "name": "特级馥郁咖啡豆", + "effect": "可携带干员+1,可同时部署人数+1,护盾值+1", + "No": 25 + }, + { + "name": "地形图", + "effect": "【常态化】可同时部署人数+1,所有我方单位的防御力+4%", + "No": 1 + }, + { + "name": "地形图-α", + "effect": "【高寒化】可同时部署人数+1,所有我方单位的防御力+5%", + "No": 1 + }, + { + "name": "地形图-β", + "effect": "【冻土化】可同时部署人数+1,所有我方单位的防御力+6%", + "No": 1 + }, + { + "name": "林间夜话", + "effect": "【常态化】可同时部署人数+2,所有我方单位的防御力+6%", + "No": 3 + }, + { + "name": "林间夜话-α", + "effect": "【高寒化】可同时部署人数+2,所有我方单位的防御力+7%", + "No": 3 + }, + { + "name": "林间夜话-β", + "effect": "【冻土化】可同时部署人数+2,所有我方单位的防御力+8%", + "No": 3 + }, + { + "name": "林间夜话-γ", + "effect": "【极地化】可同时部署人数+2,所有我方单位的防御力+8%,场上每有一个我方单位防御力额外+0.5%", + "No": 3 + }, + { + "name": "教堂救济餐券", + "effect": "【常态化】可同时部署人数+2,所有我方单位的生命值+6%", + "No": 4 + }, + { + "name": "教堂救济餐券-α", + "effect": "【高寒化】可同时部署人数+2,所有我方单位的生命值+7%", + "No": 4 + }, + { + "name": "教堂救济餐券-β", + "effect": "【冻土化】可同时部署人数+2,所有我方单位的生命值+8%", + "No": 4 + }, + { + "name": "教堂救济餐券-γ", + "effect": "【极地化】可同时部署人数+2,所有我方单位的生命值+8%,场上每有一个我方单位生命值额外+0.5%", + "No": 4 + }, + { + "name": "红色蝴蝶结", + "effect": "【常态化】希望+2,可同时部署人数+1", + "No": 5 + }, + { + "name": "红色蝴蝶结-α", + "effect": "【高寒化】希望+3,可同时部署人数+1", + "No": 5 + }, + { + "name": "红色蝴蝶结-β", + "effect": "【极地化】希望+4,可同时部署人数+1,非战斗节点进行的战斗可同时部署人数额外+2", + "No": 5 + }, + { + "name": "红色蝴蝶结-γ", + "effect": "【冻土化】希望+4,可同时部署人数+1", + "No": 5 + }, + { + "name": "独奏八音盒", + "effect": "【常态化】希望+4,可同时部署人数+1", + "No": 6 + }, + { + "name": "独奏八音盒-α", + "effect": "【高寒化】希望+5,可同时部署人数+1", + "No": 6 + }, + { + "name": "独奏八音盒-β", + "effect": "【冻土化】希望+6,可同时部署人数+1", + "No": 6 + }, + { + "name": "独奏八音盒-γ", + "effect": "【极地化】希望+6,可同时部署人数+1,险路恶敌战斗可同时部署人数额外+1", + "No": 6 + }, + { + "name": "皮特水果什锦", + "effect": "可携带干员+3,所有我方单位的攻击力、防御力和生命值+3%", + "No": 24 + }, + { + "name": "咖啡平原咖啡糖", + "effect": "可携带干员+2,所有我方单位的攻击速度+2", + "No": 22 + }, + { + "name": "尖叫樱桃", + "effect": "可携带干员+2,所有我方单位的攻击力+2%", + "No": 23 + }, + { + "name": "神音海螺", + "effect": "【常态化】可同时部署人数+1,所有我方单位的生命值+4%", + "No": 2 + }, + { + "name": "神音海螺-α", + "effect": "【高寒化】可同时部署人数+1,所有我方单位的生命值+5%", + "No": 2 + }, + { + "name": "神音海螺-β", + "effect": "【冻土化】可同时部署人数+1,所有我方单位的生命值+6%", + "No": 2 + }, + { + "name": "神音海螺-γ", + "effect": "【极地化】可同时部署人数+1,所有我方单位的生命值+6%,场上每有一个我方单位生命值额外+0.5%", + "No": 2 + }, + { + "name": "琥珀伤痕", + "effect": "抗干扰指数可以超出上限,且每超出1点使所有我方单位的生命值+8%,攻击力+8%", + "No": 229 + }, + { + "name": "地形图-γ", + "effect": "【极地化】可同时部署人数+1,所有我方单位的防御力+6%,场上每有一个我方单位防御力额外+0.5%", + "No": 1 + }, + { + "name": "指路藤偶", + "effect": "通过纵向通路时有概率不降低抗干扰指数", + "No": 211 }, { "name": "精选兽肉罐头", @@ -72,27 +375,7 @@ "name": "橙味风暴", "effect": "可携带干员+1,所有我方单位的攻击力+1%", "No": 21 - }, - { - "name": "咖啡平原咖啡糖", - "effect": "可携带干员+2,所有我方单位的攻击速度+2", - "No": 22 - }, - { - "name": "尖叫樱桃", - "effect": "可携带干员+2,所有我方单位的攻击力+2%", - "No": 23 - }, - { - "name": "皮特水果什锦", - "effect": "可携带干员+3,所有我方单位的攻击力、防御力和生命值+3%", - "No": 24 - }, - { - "name": "特级馥郁咖啡豆", - "effect": "可携带干员+1,可同时部署人数+1,护盾值+1", - "No": 25 - }, + }, { "name": "蓝色丝巾", "effect": "希望+2,可携带干员+1", @@ -112,77 +395,141 @@ "name": "玻璃小鸟", "effect": "希望+4,可携带干员+1", "No": 29 + }, + { + "name": "伶牙,毁林者", + "effect": "战斗有概率额外掉落1个密文板", + "No": 213 }, { - "name": "赤金的远征", - "effect": "希望+4,可携带干员+1,可同时部署人数+1", - "No": 30 + "name": "维多利亚“废铁“勋章", + "effect": "战斗获得的指挥经验+20%", + "No": 48 }, { - "name": "《杜林地上环游记》", - "effect": "护盾值+4", - "No": 31 + "name": "彩虹瓮", + "effect": "每次敌人进入保护目标点时,立即使随机一名再部署中的单位当前再部署时间减半", + "No": 208 }, { - "name": "《旧高卢地名源流考》", - "effect": "护盾值+6", - "No": 32 + "name": "“盲目“", + "effect": "抗干扰指数为0-1时,水平或垂直移动随机获得护盾值、源石锭、希望、抗干扰指数或密文板", + "No": 228 }, { - "name": "一份演讲稿", - "effect": "招募所有干员的希望消耗-2", - "No": 188 + "name": "“岁怒“", + "effect": "每次部署我方单位时,对场上随机一个敌人及其周围造成3000点法术伤害", + "No": 223 }, { - "name": "锈蚀的铁锤", - "effect": "商店中购买道具所需源石锭-50%", - "No": 189 + "name": "芽棍", + "effect": "每次进入树篱之途或失与得节点,护盾值+2", + "No": 209 }, { - "name": "阿卡胡拉饭碗", - "effect": "回复4目标生命,护盾值+2", - "No": 191 + "name": "坎诺特印记", + "effect": "每次在诡意行商购买一件道具,或在失与得交换一次,希望+1", + "No": 210 }, { - "name": "立体艺术装置", - "effect": "回复7目标生命,每次战斗结束后额外回复1目标生命", - "No": 192 + "name": "全自动维修台", + "effect": "抗干扰指数+2,但是坍缩值+2", + "No": 197 }, { - "name": "御2", - "effect": "护盾值+5", - "No": 193 + "name": "解约协议-α", + "effect": "【高寒化】希望+4,回复1目标生命", + "No": 9 }, + { + "name": "解约协议-β", + "effect": "【冻土化】希望+4,回复2目标生命", + "No": 9 + }, + { + "name": "解约协议-γ", + "effect": "【极地化】希望+4,回复3目标生命", + "No": 9 + }, + { + "name": "仪式铃", + "effect": "失去抗干扰指数时,回复1目标生命", + "No": 201 + }, + { + "name": "地区行动方案", + "effect": "【常态化】招募4星干员的希望消耗-2", + "No": 15 + }, + { + "name": "地区行动方案-α", + "effect": "【高寒化】希望+1,招募4星干员的希望消耗-2", + "No": 15 + }, + { + "name": "地区行动方案-β", + "effect": "【冻土化】希望+1,招募4星干员的希望消耗-2,每次招募有概率出现随机直升的4星干员", + "No": 15 + }, + { + "name": "地区行动方案-γ", + "effect": "【极地化】希望+2,招募4星干员的希望消耗-2,每次招募有概率出现随机直升的4星干员※", + "No": 15 + }, + { + "name": "全局作战文件", + "effect": "【常态化】招募5星干员的希望消耗-2", + "No": 16 + }, + { + "name": "全局作战文件-α", + "effect": "【冻土化】希望+1,招募5星干员的希望消耗-2,每次招募有概率出现随机直升的5星干员", + "No": 16 + }, + { + "name": "全局作战文件-β", + "effect": "【冻土化】希望+1,招募5星干员的希望消耗-2,每次招募有概率出现随机直升的5星干员", + "No": 16 + }, + { + "name": "全局作战文件-γ", + "effect": "【极地化】希望+2,招募5星干员的希望消耗-2,每次招募有概率出现随机直升的5星干员※", + "No": 16 + }, + { + "name": "人事部密信", + "effect": "【常态化】招募6星干员的希望消耗-2", + "No": 17 + }, + + + { + "name": "罗德岛战术电台", + "effect": "【常态化】战斗后掉落招募券时,增加一个可选项", + "No": 18 + }, + { + "name": "罗德岛战术电台-α", + "effect": "【高寒化】希望+1,战斗后掉落招募券时,增加一个可选项", + "No": 18 + }, + { + "name": "罗德岛战术电台-β", + "effect": "【冻土化】希望+1,战斗后掉落招募券时,增加两个可选项", + "No": 18 + }, + { + "name": "罗德岛战术电台-γ", + "effect": "【极地化】希望+2,战斗后掉落招募券时,增加两个可选项", + "No": 18 + }, + { "name": "金酒之杯", "effect": "每有5源石锭,所有我方单位的攻击速度+7", "No": 194 }, - { - "name": "热水壶", - "effect": "目标生命上限+1,希望+1", - "No": 33 - }, - { - "name": "特殊抑制器", - "effect": "目标生命上限+2,回复2目标生命", - "No": 34 - }, - { - "name": "石像鬼塑像", - "effect": "目标生命上限+3", - "No": 35 - }, - { - "name": "血魔的寝床", - "effect": "目标生命上限+4", - "No": 36 - }, - { - "name": "长生者之证", - "effect": "目标生命上限+6", - "No": 37 - }, + { "name": "女妖之吻", "effect": "希望+8", @@ -224,6 +571,47 @@ "effect": "所有干员攻击【感染生物】时攻击力提升至150%并使其失去特殊能力3秒", "No": 186 }, + { + "name": "游戏室管理员权限卡", + "promotion": 1, + "effect": "【常态化】立即进阶一个干员(不消耗希望)", + "No": 13 + }, + { + "name": "游戏室管理员权限卡-α", + "promotion": 1, + "effect": "【高寒化】立即获得源石锭+2,并进阶一个干员(不消耗希望)", + "No": 13 + }, + { + "name": "游戏室管理员权限卡-β", + "promotion": 1, + "effect": "【冻土化】立即获得源石锭+2,并进阶一个干员(不消耗且获得1希望)", + "No": 13 + }, + { + "name": "游戏室管理员权限卡-γ", + "promotion": 1, + "effect": "【极地化】立即获得源石锭+4,并进阶一个干员(不消耗且获得1希望)", + "No": 13 + }, + { + "name": "Miss.Christine摸摸券", + "promotion": 2, + "effect": "【常态化】进阶两个干员(不消耗且获得1希望)", + "No": 14 + }, + { + "name": "Miss.Christine摸摸券-α", + "promotion": 2, + "effect": "【常态化】立即进阶两个干员(不消耗希望)", + "No": 14 + }, + { + "name": "四叶草化石", + "effect": "我方在得偿所愿节点和战斗后掉落战利品时,增加一个可选项", + "No": 190 + }, { "name": "钝爪-典训", "effect": "立即进阶一个【先锋】干员【不消耗希望】", @@ -322,70 +710,12 @@ { "name": "先锋招募券" }, - { - "name": "游戏室管理员权限卡", - "effect": "【极地化】立即获得源石锭+4,并进阶一个干员(不消耗且获得1希望)", - "No": 13 - }, - { - "name": "游戏室管理员权限卡-α", - "promotion": 1 - }, - { - "name": "游戏室管理员权限卡-β", - "promotion": 1 - }, - { - "name": "游戏室管理员权限卡-γ", - "promotion": 1 - }, - { - "name": "Miss.Christine摸摸券", - "effect": "【极地化】护盾值+2,并进阶两个干员(不消耗且获得1希望)", - "No": 14 - }, - { - "name": "Miss.Christine摸摸券-α", - "promotion": 2 - }, - { - "name": "Miss.Christine摸摸券-β", - "promotion": 2 - }, - { - "name": "Miss.Christine摸摸券-γ", - "promotion": 2 - }, - { - "name": "四叶草化石", - "effect": "我方在得偿所愿节点和战斗后掉落战利品时,增加一个可选项", - "No": 190 - }, - { - "name": "古旧铸物", - "effect": "立即进阶三个干员(不消耗希望)", - "No": 187 - }, - { - "name": "维多利亚“废铁“勋章", - "effect": "战斗获得的指挥经验+20%", - "No": 48 - }, - { - "name": "光谱分析仪", - "effect": "抗干扰指数+1,护盾值+2", - "No": 49 - }, - { - "name": "闲暇时光", - "effect": "可携带干员+1,抗干扰指数+1", - "No": 50 - }, - { - "name": "宁静泉流", - "effect": "抗干扰指数+2,目标生命上限+3,希望+3", - "No": 51 - }, + + + + + + { "name": "突击协议-利刃", "roles": [ @@ -623,21 +953,7 @@ "effect": "所有我方单位获得10%物理与法术闪避", "No": 92 }, - { - "name": "人偶之家", - "effect": "初始部署费用+10", - "No": 93 - }, - { - "name": "微缩舞台模型", - "effect": "初始部署费用+20", - "No": 94 - }, - { - "name": "缠梦古堡模型", - "effect": "初始部署费用+30", - "No": 95 - }, + { "name": "漆黑的舞鞋", "effect": "可以在高台部署近战位干员", @@ -648,21 +964,7 @@ "effect": "可以在低地部署远程位干员", "No": 97 }, - { - "name": "古高卢银币", - "effect": "所有干员的初始技力+6", - "No": 98 - }, - { - "name": "高卢银行支票", - "effect": "所有干员的初始技力+12", - "No": 99 - }, - { - "name": "《第二经济改革法》", - "effect": "所有干员的初始技力+18", - "No": 100 - }, + { "name": "香草沙士汽水", "effect": "所有自然回复技能的技力恢复+0.2/秒", @@ -718,11 +1020,7 @@ "effect": "敌人受到的一次性晕眩、寒冷、冰冻等异常效果影响时间提高150%", "No": 111 }, - { - "name": "老蒲扇", - "effect": "战斗编队中每有一个职业不同的干员,所有干员的攻击力+10%", - "No": 112 - }, + { "name": "食腐者手杖", "effect": "所有我方单位受到的治疗溢出时,周围敌人会受到相当于该次溢出治疗量的法术伤害", @@ -798,11 +1096,7 @@ "effect": "近战干员在受到伤害后5秒内,攻击速度+40", "No": 127 }, - { - "name": "荆棘环", - "effect": "近战干员在受到治疗后,使自身和周围4格内的干员获得1点技力", - "No": 128 - }, + { "name": "“永夜的窥视“", "effect": "所有干员的攻击力+25%,攻击速度+25,但每秒流失25生命值", @@ -828,11 +1122,7 @@ "effect": "每次战斗会随机1个可部署位置,该位置和周围8格内的我方单位具有迷彩", "No": 133 }, - { - "name": "活木甲", - "effect": "所有我方近战单位部署时获得相当于最大生命50%的屏障", - "No": 134 - }, + { "name": "鳞皮壳盾", "effect": "所有我方远程单位部署时获得3层护盾", @@ -852,22 +1142,7 @@ "name": "空羽兽", "effect": "【召唤物】生命值+30%,攻击力+30%,且在场时使它所属的干员攻击力+60%", "No": 138 - }, - { - "name": "岩角号", - "effect": "所有干员周围4格每有一名干员,攻击力+20%", - "No": 139 - }, - { - "name": "不灭的火炬", - "effect": "所有干员周围4格每有一名干员,攻击速度+30", - "No": 140 - }, - { - "name": "湖中神盾", - "effect": "护盾值+1;战斗开始时如果拥有护盾值,所有我方单位的最大生命+60%", - "No": 141 - }, + }, { "name": "古老壁画", "effect": "敌人进入和解除浮空、失重状态时,受到1000点法术伤害,并在10秒内失去特殊能力", @@ -883,173 +1158,112 @@ "effect": "所有敌方单位移动速度-15%,且失重时重量额外下降2个等级", "No": 144 }, - { - "name": "地形图", - "effect": "【极地化】可同时部署人数+1,所有我方单位的防御力+6%,场上每有一个我方单位防御力额外+0.5%", - "No": 1 - }, - { - "name": "地形图-α" - }, - { - "name": "地形图-β" - }, - { - "name": "地形图-γ" - }, - { - "name": "神音海螺", - "effect": "【极地化】可同时部署人数+1,所有我方单位的生命值+6%,场上每有一个我方单位生命值额外+0.5%", - "No": 2 - }, - { - "name": "神音海螺-α" - }, - { - "name": "神音海螺-β" - }, - { - "name": "神音海螺-γ" - }, - { - "name": "林间夜话", - "effect": "【极地化】可同时部署人数+2,所有我方单位的防御力+8%,场上每有一个我方单位防御力额外+0.5%", - "No": 3 - }, - { - "name": "林间夜话-α" - }, - { - "name": "林间夜话-β" - }, - { - "name": "林间夜话-γ" - }, - { - "name": "教堂救济餐券", - "effect": "【极地化】可同时部署人数+2,所有我方单位的生命值+8%,场上每有一个我方单位生命值额外+0.5%", - "No": 4 - }, - { - "name": "教堂救济餐券-α" - }, - { - "name": "教堂救济餐券-β" - }, - { - "name": "教堂救济餐券-γ" - }, - { - "name": "红色蝴蝶结", - "effect": "【极地化】希望+4,可同时部署人数+1,非战斗节点进行的战斗可同时部署人数额外+2", - "No": 5 - }, - { - "name": "红色蝴蝶结-α" - }, - { - "name": "红色蝴蝶结-β" - }, - { - "name": "红色蝴蝶结-γ" - }, - { - "name": "独奏八音盒", - "effect": "【极地化】希望+6,可同时部署人数+1,险路恶敌战斗可同时部署人数额外+1", - "No": 6 - }, - { - "name": "独奏八音盒-α" - }, - { - "name": "独奏八音盒-β" - }, - { - "name": "独奏八音盒-γ" - }, + + { "name": "被撬开的道具箱", + "effect": "【常态化】希望+4", + "No": 7 + }, + { + "name": "被撬开的道具箱-α", + "effect": "【高寒化】希望+4,立即获得源石锭+3", + "No": 7 + }, + { + "name": "被撬开的道具箱-β", + "effect": "【冻土化】希望+4,立即获得源石锭+4", + "No": 7 + }, + { + "name": "被撬开的道具箱-γ", "effect": "【极地化】希望+4,立即获得源石锭+5", "No": 7 }, - { - "name": "被撬开的道具箱-α" - }, - { - "name": "被撬开的道具箱-β" - }, - { - "name": "被撬开的道具箱-γ" - }, { "name": "古旧乐谱残章", + "effect": "【常态化】希望+4", + "No": 8 + }, + { + "name": "古旧乐谱残章-α", + "effect": "【高寒化】希望+4,所有我方单位的攻击速度+4", + "No": 8 + }, + { + "name": "古旧乐谱残章-β", + "effect": "【冻土化】希望+4,所有我方单位的攻击速度+5", + "No": 8 + }, + { + "name": "古旧乐谱残章-γ", "effect": "【极地化】希望+4,所有我方单位的攻击速度+6", "No": 8 }, - { - "name": "古旧乐谱残章-α" - }, - { - "name": "古旧乐谱残章-β" - }, - { - "name": "古旧乐谱残章-γ" - }, { "name": "解约协议", - "effect": "【极地化】希望+4,回复3目标生命", + "effect": "【常态化】希望+4", "No": 9 }, - { - "name": "解约协议-α" - }, - { - "name": "解约协议-β" - }, - { - "name": "解约协议-γ" - }, { "name": "万能钥匙", + "effect": "【常态化】希望+6", + "No": 10 + }, + { + "name": "万能钥匙-α", + "effect": "【高寒化】希望+6,坍缩值-1", + "No": 10 + }, + { + "name": "万能钥匙-β", + "effect": "【冻土化】希望+7,坍缩值-1", + "No": 10 + }, + { + "name": "万能钥匙-γ", "effect": "【极地化】希望+7,坍缩值-2", "No": 10 }, - { - "name": "万能钥匙-α" - }, - { - "name": "万能钥匙-β" - }, - { - "name": "万能钥匙-γ" - }, { "name": "古旧钱币", + "effect": "【常态化】立即获得源石锭+10", + "No": 11 + }, + { + "name": "古旧钱币-α", + "effect": "【高寒化】立即获得源石锭+10,希望+1", + "No": 11 + }, + { + "name": "古旧钱币-β", + "effect": "【冻土化】立即获得源石锭+11,希望+1", + "No": 11 + }, + { + "name": "古旧钱币-γ", "effect": "【极地化】立即获得源石锭+12,希望+1", "No": 11 }, - { - "name": "古旧钱币-α" - }, - { - "name": "古旧钱币-β" - }, - { - "name": "古旧钱币-γ" - }, { "name": "演员的首饰盒", - "effect": "【极地化】立即获得源石锭+20,每当坍缩值增长时获得源石锭+1", + "effect": "【常态化】立即获得源石锭+18", "No": 12 }, { - "name": "演员的首饰盒-α" + "name": "演员的首饰盒-α", + "effect": "【高寒化】立即获得源石锭+18,每当坍缩值增长时获得源石锭+1", + "No": 12 }, { - "name": "演员的首饰盒-β" + "name": "演员的首饰盒-β", + "effect": "【冻土化】立即获得源石锭+19,每当坍缩值增长时获得源石锭+1", + "No": 12 }, { - "name": "演员的首饰盒-γ" + "name": "演员的首饰盒-γ", + "effect": "【极地化】立即获得源石锭+20,每当坍缩值增长时获得源石锭+1", + "No": 12 }, { "name": "钝爪-突破", @@ -1061,17 +1275,11 @@ }, { "name": "钝爪-爆发", - "roles": [ - "PIONEER" - ], "effect": "所有【先锋】干员的初始技力+15", "No": 146 }, { "name": "钝爪-熟稔", - "roles": [ - "PIONEER" - ], "effect": "所有【先锋】干员的技力消耗-35%", "No": 147 }, @@ -1101,9 +1309,6 @@ }, { "name": "折戟-浴血", - "roles": [ - "WARRIOR" - ], "effect": "所有【近卫】干员在攻击后获得2点技力", "No": 151 }, @@ -1173,9 +1378,6 @@ }, { "name": "残弩-神速", - "roles": [ - "SNIPER" - ], "effect": "所有【狙击】干员的攻击速度+70", "No": 160 }, @@ -1197,9 +1399,6 @@ }, { "name": "断杖-凝神", - "roles": [ - "CASTER" - ], "effect": "所有【术师】干员的技力恢复+0.4/秒", "No": 163 }, @@ -1253,17 +1452,11 @@ }, { "name": "医者-自医", - "roles": [ - "MEDIC" - ], "effect": "所有【医疗】干员的技力恢复+0.3/秒", "No": 170 }, { "name": "医者-妙手", - "roles": [ - "MEDIC" - ], "effect": "所有【医疗】干员的攻击速度+50", "No": 171 }, @@ -1293,9 +1486,6 @@ }, { "name": "锈刃-可视静谧", - "roles": [ - "SPECIAL" - ], "effect": "所有【特种】干员的再部署时间-35%", "No": 175 }, @@ -1320,7 +1510,11 @@ { "name": "极速之手", "effect": "【处决者】、【伏击客】和【傀儡师】相邻四格内没有我方单位时,攻击速度+120", - "No": 179 + "No": 179, + "chars": [ + "红", + "伊桑" + ] }, { "name": "净尘之手", @@ -1328,7 +1522,7 @@ "No": 180, "chars": [ "浊心斯卡蒂", - "卡涅利安", + "林", "流明" ] }, @@ -1342,26 +1536,12 @@ "Pith" ] }, - { - "name": "“国王的护戒“", - "effect": "护盾值+2,将目标生命全部转化为等量护盾值(目标生命不会低于1)", - "No": 195 - }, + { "name": "骑士长枪专业版", "effect": "战场的宝箱会掉落更多的源石锭", "No": 196 - }, - { - "name": "全自动维修台", - "effect": "抗干扰指数+2,但是坍缩值+2", - "No": 197 - }, - { - "name": "警戒篱木", - "effect": "坍缩值-2,目标生命上限+2", - "No": 198 - }, + }, { "name": "《重型音乐选集》", "effect": "坍缩值-2,希望+2", @@ -1372,11 +1552,7 @@ "effect": "进入深埋迷境时,坍缩值-3", "No": 200 }, - { - "name": "仪式铃", - "effect": "失去抗干扰指数时,回复1目标生命", - "No": 201 - }, + { "name": "北方拓荒者拐杖", "effect": "抗干扰指数不低于4时,每进入一个非战斗节点,获得源石锭+2", @@ -1391,12 +1567,7 @@ "name": "雪与土的织带", "effect": "每次战斗会随机1个可部署位置,该位置和周围8格的我方干员攻击和受击回复技力时,使范围内另一名干员同时回复", "No": 204 - }, - { - "name": "古地树实", - "effect": "立即获得三件随机的小玩意", - "No": 205 - }, + }, { "name": "极地改型包", "effect": "支援道具使用时会在周围4格同时使用", @@ -1407,71 +1578,16 @@ "effect": "战斗后有概率使所有我方单位的攻击力和防御力永久+5%(最多叠加10层)", "No": 207 }, - { - "name": "彩虹瓮", - "effect": "每次敌人进入保护目标点时,立即使随机一名再部署中的单位当前再部署时间减半", - "No": 208 - }, - { - "name": "芽棍", - "effect": "每次进入树篱之途或失与得节点,护盾值+2", - "No": 209 - }, - { - "name": "坎诺特印记", - "effect": "每次在诡意行商购买一件道具,或在失与得交换一次,希望+1", - "No": 210 - }, - { - "name": "指路藤偶", - "effect": "通过纵向通路时有概率不降低抗干扰指数", - "No": 211 - }, { "name": "乌萨斯断刃", "effect": "每有1级坍缩范式,战斗获得的指挥经验+10%", "No": 212 }, - { - "name": "“岁怒“", - "effect": "每次部署我方单位时,对场上随机一个敌人及其周围造成3000点法术伤害", - "No": 223 - }, { "name": "“文明的存续“", "effect": "所有敌方单位受到的真实伤害+150%", "No": 224 }, - { - "name": "“时光之末“", - "effect": "仅一次,在非区域最终战斗和领袖战中失败时不结束探索,目标生命+1并继续下一步行动", - "No": 225 - }, - { - "name": "“小格兰法洛“", - "effect": "每次敌人进入保护目标点时,立刻对全场所有敌人造成5秒晕眩", - "No": 226 - }, - { - "name": "“碎片大厦的回忆“", - "effect": "每次敌人进入保护目标点时,立刻对全场所有敌人造成3000点真实伤害", - "No": 227 - }, - { - "name": "“盲目“", - "effect": "抗干扰指数为0-1时,水平或垂直移动随机获得护盾值、源石锭、希望、抗干扰指数或密文板", - "No": 228 - }, - { - "name": "琥珀伤痕", - "effect": "抗干扰指数可以超出上限,且每超出1点使所有我方单位的生命值+8%,攻击力+8%", - "No": 229 - }, - { - "name": "伶牙,毁林者", - "effect": "战斗有概率额外掉落1个密文板", - "No": 213 - }, { "name": "树痕之盔", "effect": "希望+3,让探索开启不同的方向", diff --git a/resource/tasks.json b/resource/tasks.json index 35637465cd..ed92157bd7 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -115,6 +115,60 @@ ], "maxTimes": 20 }, + "SwipeToTheUp": { + "algorithm": "JustReturn", + "action": "Swipe", + "postDelay": 300, + "specificRect": [ + 600, + 510, + 100, + 100 + ], + "rectMove": [ + 600, + 0, + 100, + 100 + ], + "specialParams": [ + 150, + 0, + 1, + 1 + ], + "next": [ + "#next" + ], + "maxTimes": 20 + }, + "SwipeToTheDown": { + "algorithm": "JustReturn", + "action": "Swipe", + "postDelay": 300, + "specificRect": [ + 600, + 145, + 100, + 100 + ], + "rectMove": [ + 600, + 610, + 100, + 100 + ], + "specialParams": [ + 150, + 0, + 1, + 1 + ], + "next": [ + "#next" + ], + "maxTimes": 20 + }, "StageTheme": { "action": "ClickSelf", "roi": [ @@ -7752,6 +7806,19 @@ "Roguelike@StartExplore" ] }, + "Roguelike@ChooseDifficultyConfirm": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "postDelay": 500, + "text": [ "选择" ], + "roi": [ + 1064, + 294, + 216, + 170 + ] + }, + "Roguelike@ChooseOper": { "Doc": "本任务注册了插件 RoguelikeRecruitTaskPlugin", "algorithm": "JustReturn", @@ -7926,6 +7993,16 @@ 160 ] }, + "Roguelike@ExitThenAbandon_mode4": { + "action": "ClickSelf", + "cache": false, + "roi": [ + 0, + 0, + 320, + 160 + ] + }, "Roguelike@FormationConfirm": { "action": "ClickSelf", "roi": [ @@ -9345,6 +9422,18 @@ "Roguelike@StartAction@LoadingIcon" ] }, + "Roguelike@StartExploreConfirm": { + "template": "empty.png", + "action": "ClickSelf", + "cache": false, + "postDelay": 2000, + "roi": [ + 1064, + 294, + 216, + 170 + ] + }, "Roguelike@StartExplore": { "Doc": "base_task", "template": "empty.png", @@ -9360,6 +9449,7 @@ "next": [ "Roguelike@SquadDefault", "Roguelike@InitalDrop", + "Roguelike@ChooseDifficulty", "Roguelike@StartExplore" ] }, @@ -9494,6 +9584,13 @@ "Phantom@Roguelike@Abandon" ] }, + "Phantom@Roguelike@ExitThenAbandon_mode4": { + "template": "Roguelike@ExitThenAbandon_mode4.png", + "next": [ + "Phantom@Roguelike@ExitThenAbandon", + "Phantom@Roguelike@Abandon" + ] + }, "Phantom@Roguelike@GamePass": {}, "Phantom@Roguelike@GamePassSkip1": {}, "Phantom@Roguelike@GamePassSkip1Confirm": { @@ -9541,7 +9638,7 @@ "故土残躯" ], "next": [ - "Phantom@Roguelike@ExitThenAbandon" + "Phantom@Roguelike@ExitThenAbandon_mode4" ] }, "Phantom@Roguelike@NextLevel": { @@ -9663,6 +9760,59 @@ "Phantom@Roguelike@TodoEnter": {}, "Mizuki@Roguelike@Abandon": {}, "Mizuki@Roguelike@ChooseDifficulty": {}, + "Mizuki@Roguelike@ChooseDifficulty0": { + "baseTask": "Roguelike@ChooseDifficulty", + "roi": [ + 1064, + 294, + 216, + 170 + ], + "next": [ + "Roguelike@StartExplore" + ] + }, + "Mizuki@Roguelike@ChooseDifficultyConfirm": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": [ "选择" ], + "roi": [ + 1064, + 294, + 216, + 170 + ] + }, + "Mizuki@Roguelike@ChooseDifficulty_Easiest": { + "action": "ClickRect", + "specificRect": [ 1144, 472, 78, 24 ], + "postDelay": 500, + "template": "Mizuki@Roguelike@StartExplore.png", + "roi": [ + 1026, + 470, + 254, + 248 + ], + "next": [ + "(SwipeToTheUp*5)" + ] + }, + "Mizuki@Roguelike@ChooseDifficulty_Hardest": { + "action": "ClickRect", + "specificRect": [ 1144, 472, 78, 24 ], + "postDelay": 500, + "template": "Mizuki@Roguelike@StartExplore.png", + "roi": [ + 1026, + 470, + 254, + 248 + ], + "next": [ + "(SwipeToTheDown*5)" + ] + }, "Mizuki@Roguelike@ChooseOper": { "onErrorNext": [ "Mizuki@Roguelike@RecruitWithoutButton" @@ -9826,6 +9976,15 @@ "Mizuki@Roguelike@DataTraceback" ] }, + "Mizuki@Roguelike@ExitThenAbandon_mode4": { + "template": "Roguelike@ExitThenAbandon.png", + "next": [ + "Mizuki@Roguelike@ExitThenAbandon", + "Mizuki@Roguelike@Abandon", + "Mizuki@Roguelike@DiceConfirmThenAbandon", + "Mizuki@Roguelike@DataTraceback" + ] + }, "Mizuki@Roguelike@GamePass": {}, "Mizuki@Roguelike@GamePassSkip1": {}, "Mizuki@Roguelike@GamePassSkip1Confirm": { @@ -9938,7 +10097,7 @@ "绀碧摇篮" ], "next": [ - "Mizuki@Roguelike@ExitThenAbandon" + "Mizuki@Roguelike@ExitThenAbandon_mode4" ] }, "Mizuki@Roguelike@NextLevel": { @@ -10157,9 +10316,49 @@ ] }, "Mizuki@Roguelike@StartExplore": {}, + "Mizuki@Roguelike@StartExploreConfirm": { + "template": "Mizuki@Roguelike@StartExplore.png" + }, "Mizuki@Roguelike@TodoEnter": {}, "Sami@Roguelike@Abandon": {}, - "Sami@Roguelike@ChooseDifficulty": {}, + "Sami@Roguelike@ChooseDifficulty": { + "roi": [ + 1064, + 294, + 216, + 170 + ] + }, + "Sami@Roguelike@ChooseDifficulty_Easiest": { + "action": "ClickRect", + "specificRect": [ 1119, 479, 80, 22 ], + "postDelay": 500, + "template": "Sami@Roguelike@StartExplore.png", + "roi": [ + 958, + 530, + 322, + 189 + ], + "next": [ + "(SwipeToTheUp*5)" + ] + }, + "Sami@Roguelike@ChooseDifficulty_Hardest": { + "action": "ClickRect", + "specificRect": [ 1119, 479, 80, 22 ], + "postDelay": 500, + "template": "Sami@Roguelike@StartExplore.png", + "roi": [ + 958, + 530, + 322, + 189 + ], + "next": [ + "(SwipeToTheDown*5)" + ] + }, "Sami@Roguelike@ChooseOper": { "onErrorNext": [ "Sami@Roguelike@RecruitWithoutButton" @@ -10270,6 +10469,13 @@ "Sami@Roguelike@Abandon" ] }, + "Sami@Roguelike@ExitThenAbandon_mode4": { + "template": "Roguelike@ExitThenAbandon_mode4.png", + "next": [ + "Sami@Roguelike@ExitThenAbandon", + "Sami@Roguelike@Abandon" + ] + }, "Sami@Roguelike@GamePass": {}, "Sami@Roguelike@GamePassSkip1": {}, "Sami@Roguelike@GamePassSkip1Confirm": { @@ -10371,7 +10577,7 @@ "深埋迷境" ], "next": [ - "Sami@Roguelike@ExitThenAbandon" + "Sami@Roguelike@ExitThenAbandon_mode4" ] }, "Sami@Roguelike@NextLevel": { @@ -10388,6 +10594,8 @@ "next": [ "Sami@Roguelike@LevelName", "Sami@Roguelike@NextLevel", + "Sami@Roguelike@StageBoskyPassage", + "Sami@Roguelike@StageBoskyPassageAI6", "Sami@Roguelike@StageTrader", "Sami@Roguelike@StageTraderAI6", "Sami@Roguelike@StageSafeHouse", @@ -10396,8 +10604,6 @@ "Sami@Roguelike@StageBoonsAI6", "Sami@Roguelike@StageEmergencyTransportation", "Sami@Roguelike@StageEmergencyTransportationAI6", - "Sami@Roguelike@StageBoskyPassage", - "Sami@Roguelike@StageBoskyPassageAI6", "Sami@Roguelike@StageGambling", "Sami@Roguelike@StageGamblingAI6", "Sami@Roguelike@StageProphecy", @@ -10789,6 +10995,15 @@ "Sami@Roguelike@NextLevel#next" ] }, + "Sami@Roguelike@StartExploreConfirm": { + "template": "Sami@Roguelike@StartExplore.png", + "roi": [ + 958, + 530, + 322, + 189 + ] + }, "Sami@Roguelike@StartExplore": { "roi": [ 958, diff --git a/resource/template/Mizuki@Roguelike@ChooseDifficulty.png b/resource/template/Mizuki@Roguelike@ChooseDifficulty.png index 1adf20cc4809f8417456f3c22803a04f3df054c2..9ec3c3f023e9ddd7cfc44dc9cc79a8b7459cca7d 100644 GIT binary patch literal 12184 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

lNEu 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

P2ow0(wF`l8m`rb#9~So0$#VMN*q({-cE<{Jj8 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 DaqBDo diff --git a/resource/template/Mizuki@Roguelike@ChooseDifficulty0.png b/resource/template/Mizuki@Roguelike@ChooseDifficulty0.png new file mode 100644 index 0000000000000000000000000000000000000000..4450e76a7706c8c1514a869b2faabab545b94a7b GIT binary patch literal 12741 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 literal 0 HcmV?d00001 diff --git a/resource/template/Roguelike@ExitThenAbandon_mode4.png b/resource/template/Roguelike@ExitThenAbandon_mode4.png new file mode 100644 index 0000000000000000000000000000000000000000..788ae90bc2a72f68ae559bc7e7c685ddc20cbd8b GIT binary patch literal 2525 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 literal 6909 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 DaqBDo diff --git a/src/MaaCore/MaaCore.vcxproj b/src/MaaCore/MaaCore.vcxproj index 20ae64a745..5a033a3923 100644 --- a/src/MaaCore/MaaCore.vcxproj +++ b/src/MaaCore/MaaCore.vcxproj @@ -77,6 +77,8 @@ + + @@ -231,6 +233,8 @@ + + diff --git a/src/MaaCore/MaaCore.vcxproj.filters b/src/MaaCore/MaaCore.vcxproj.filters index d1bcc174e7..72dfe1e2b0 100644 --- a/src/MaaCore/MaaCore.vcxproj.filters +++ b/src/MaaCore/MaaCore.vcxproj.filters @@ -612,6 +612,12 @@ 源文件\Vision\Config + + 源文件\Task\Roguelike + + + 源文件\Task\Roguelike + @@ -1007,5 +1013,11 @@ 源文件\Vision\Config + + 源文件\Task\Roguelike + + + 源文件\Task\Roguelike + - \ No newline at end of file + diff --git a/src/MaaCore/Status.h b/src/MaaCore/Status.h index 8497e4f4f7..2d34f2f506 100644 --- a/src/MaaCore/Status.h +++ b/src/MaaCore/Status.h @@ -53,6 +53,7 @@ namespace asst static inline const std::string RoguelikeRecruitmentTeamComplete = "RoguelikeRecruitmentTeamComplete"; static inline const std::string RoguelikeRecruitmentCount = "RoguelikeRecruitmentCount"; static inline const std::string RoguelikeMode = "RoguelikeMode"; + static inline const std::string RoguelikeNeedChangeDifficulty = "RoguelikeNeedChangeDifficulty"; static inline const std::string ProcessTaskLastTimePrefix = "#LastTime#"; diff --git a/src/MaaCore/Task/AbstractTaskPlugin.h b/src/MaaCore/Task/AbstractTaskPlugin.h index cd061ce620..b97e857a85 100644 --- a/src/MaaCore/Task/AbstractTaskPlugin.h +++ b/src/MaaCore/Task/AbstractTaskPlugin.h @@ -18,6 +18,7 @@ namespace asst void set_priority(int priority); void set_block(bool block); + virtual void set_task_ptr(AbstractTask* ptr); virtual bool verify(AsstMsg msg, const json::value& details) const = 0; diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index 787850885a..df7f88d84a 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -8,7 +8,9 @@ #include "Task/Roguelike/RoguelikeControlTaskPlugin.h" #include "Task/Roguelike/RoguelikeCustomStartTaskPlugin.h" #include "Task/Roguelike/RoguelikeDebugTaskPlugin.h" +#include "Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.h" #include "Task/Roguelike/RoguelikeFormationTaskPlugin.h" +#include "Task/Roguelike/RoguelikeLastRewardTaskPlugin.h" #include "Task/Roguelike/RoguelikeRecruitTaskPlugin.h" #include "Task/Roguelike/RoguelikeResetTaskPlugin.h" #include "Task/Roguelike/RoguelikeShoppingTaskPlugin.h" @@ -26,6 +28,7 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, Assistant* inst m_roguelike_task_ptr->register_plugin(); m_roguelike_task_ptr->register_plugin(); m_roguelike_task_ptr->register_plugin(); + m_debug_task_ptr = m_roguelike_task_ptr->register_plugin(); m_roguelike_task_ptr->register_plugin()->set_retry_times(0); @@ -38,6 +41,9 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, Assistant* inst m_skill_task_ptr->set_retry_times(2).set_ignore_error(true); m_roguelike_task_ptr->register_plugin()->set_retry_times(0); + m_roguelike_task_ptr->register_plugin(); + m_roguelike_task_ptr->register_plugin(); + // 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加一点。先这样凑合用 for (int i = 0; i != 100; ++i) { m_subtasks.emplace_back(m_roguelike_task_ptr); @@ -69,6 +75,7 @@ bool asst::RoguelikeTask::set_params(const json::value& params) // 4 - 刷开局藏品,以获得热水壶或者演讲稿开局,不期而遇采用保守策略 int mode = params.get("mode", 0); status()->set_properties(Status::RoguelikeMode, std::to_string(mode)); + status()->set_properties(Status::RoguelikeNeedChangeDifficulty, "0"); switch (mode) { case 0: m_debug_task_ptr->set_enable(true); @@ -90,22 +97,35 @@ bool asst::RoguelikeTask::set_params(const json::value& params) } if (mode == 4) { + // 设置ocr第三层层名,设置识别到退出重进 Task.get(theme + "@Roguelike@LevelName")->text = Task.get(theme + "@Roguelike@LevelName_mode4")->text; Task.get(theme + "@Roguelike@LevelName")->next = Task.get(theme + "@Roguelike@LevelName_mode4")->next; + // 获得热水壶和演讲时长延时 Task.get(theme + "@Roguelike@LastReward")->post_delay = Task.get(theme + "@Roguelike@LastReward_mode4")->post_delay; Task.get(theme + "@Roguelike@LastReward4")->post_delay = Task.get(theme + "@Roguelike@LastReward_mode4")->post_delay; + // 获得其他奖励时重开 + Task.get(theme + "@Roguelike@LastReward2")->next = Task.get(theme + "@Roguelike@LastReward_mode4")->next; + Task.get(theme + "@Roguelike@LastReward3")->next = Task.get(theme + "@Roguelike@LastReward_mode4")->next; + Task.get(theme + "@Roguelike@LastRewardRand")->next = Task.get(theme + "@Roguelike@LastReward_mode4")->next; } else { + // 重置需要ocr的层名和next任务 Task.get(theme + "@Roguelike@LevelName")->text = Task.get(theme + "@Roguelike@LevelName_normal_mode")->text; Task.get(theme + "@Roguelike@LevelName")->next = Task.get(theme + "@Roguelike@LevelName_normal_mode")->next; + // 重置获得热水壶和演讲延时 Task.get(theme + "@Roguelike@LastReward")->post_delay = Task.get(theme + "@Roguelike@LastReward_normal_mode")->post_delay; Task.get(theme + "@Roguelike@LastReward4")->post_delay = Task.get(theme + "@Roguelike@LastReward_normal_mode")->post_delay; + // 重置其他奖励next + Task.get(theme + "@Roguelike@LastReward2")->next = Task.get(theme + "@Roguelike@LastReward_normal_mode")->next; + Task.get(theme + "@Roguelike@LastReward3")->next = Task.get(theme + "@Roguelike@LastReward_normal_mode")->next; + Task.get(theme + "@Roguelike@LastRewardRand")->next = + Task.get(theme + "@Roguelike@LastReward_normal_mode")->next; } int number_of_starts = params.get("starts_count", INT_MAX); m_roguelike_task_ptr->set_times_limit(theme + "@Roguelike@StartExplore", number_of_starts); diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.h b/src/MaaCore/Task/Interface/RoguelikeTask.h index 44f7a1cbc4..d08814ff40 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.h +++ b/src/MaaCore/Task/Interface/RoguelikeTask.h @@ -9,6 +9,8 @@ namespace asst class RoguelikeBattleTaskPlugin; class RoguelikeCustomStartTaskPlugin; class RoguelikeDebugTaskPlugin; + class RoguelikeLastRewardTaskPlugin; + class RoguelikeDifficultySelectionTaskPlugin; class RoguelikeTask : public InterfaceTask { diff --git a/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp new file mode 100644 index 0000000000..7830f5e961 --- /dev/null +++ b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp @@ -0,0 +1,55 @@ +#include "RoguelikeDifficultySelectionTaskPlugin.h" + +#include "Status.h" +#include "Task/ProcessTask.h" +#include "Utils/Logger.hpp" + +bool asst::RoguelikeDifficultySelectionTaskPlugin::verify(AsstMsg msg, const json::value& details) const +{ + if (msg != AsstMsg::SubTaskStart || details.get("subtask", std::string()) != "ProcessTask") { + return false; + } + + auto roguelike_name_opt = status()->get_properties(Status::RoguelikeTheme); + if (!roguelike_name_opt) { + Log.error("Roguelike name doesn't exist!"); + return false; + } + const std::string roguelike_name = std::move(roguelike_name_opt.value()) + "@"; + const std::string& task = details.get("details", "task", ""); + std::string_view task_view = task; + if (task_view.starts_with(roguelike_name)) { + task_view.remove_prefix(roguelike_name.length()); + } + if (task_view == "Roguelike@StartExplore") { + return true; + } + else { + return false; + } +} + +bool asst::RoguelikeDifficultySelectionTaskPlugin::_run() +{ + LogTraceFunction; + + std::string theme = status()->get_properties(Status::RoguelikeTheme).value(); + std::string mode = status()->get_properties(Status::RoguelikeMode).value(); + // todo:以后可以根据传入的难度值选择难度? + std::string change_difficulty = status()->get_properties(Status::RoguelikeNeedChangeDifficulty).value(); + if (theme != "Phantom" && mode == "4") { + if (change_difficulty == "max") { + // 到第三层退出,选最高难度开水壶 + ProcessTask(*this, { theme + "@Roguelike@ChooseDifficulty_Hardest" }).run(); + } + // 其他情况下开始,选最低难度 + else { + ProcessTask(*this, { theme + "@Roguelike@ChooseDifficulty_Easiest" }).run(); + } + status()->set_properties(Status::RoguelikeNeedChangeDifficulty, "0"); + ProcessTask(*this, { theme + "@Roguelike@ChooseDifficultyConfirm" }).run(); + ProcessTask(*this, { theme + "@Roguelike@StartExploreConfirm" }).run(); + } + + return true; +} diff --git a/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.h b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.h new file mode 100644 index 0000000000..ffb07d28e0 --- /dev/null +++ b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.h @@ -0,0 +1,18 @@ +#pragma once +#include "Task/AbstractTaskPlugin.h" + +namespace asst +{ + class RoguelikeDifficultySelectionTaskPlugin : public AbstractTaskPlugin + { + public: + using AbstractTaskPlugin::AbstractTaskPlugin; + virtual ~RoguelikeDifficultySelectionTaskPlugin() override = default; + + public: + virtual bool verify(AsstMsg msg, const json::value& details) const override; + + protected: + virtual bool _run() override; + }; +} diff --git a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp new file mode 100644 index 0000000000..a2be007f80 --- /dev/null +++ b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp @@ -0,0 +1,43 @@ +#include "RoguelikeLastRewardTaskPlugin.h" + +#include "Status.h" +#include "Task/ProcessTask.h" +#include "Utils/Logger.hpp" + +bool asst::RoguelikeLastRewardTaskPlugin::verify(AsstMsg msg, const json::value& details) const +{ + if (msg != AsstMsg::SubTaskStart || details.get("subtask", std::string()) != "ProcessTask") { + return false; + } + + auto roguelike_name_opt = status()->get_properties(Status::RoguelikeTheme); + if (!roguelike_name_opt) { + Log.error("Roguelike name doesn't exist!"); + return false; + } + const std::string roguelike_name = std::move(roguelike_name_opt.value()) + "@"; + const std::string& task = details.get("details", "task", ""); + std::string_view task_view = task; + if (task_view.starts_with(roguelike_name)) { + task_view.remove_prefix(roguelike_name.length()); + } + if (task_view == "Roguelike@ExitThenAbandon_mode4") { + return true; + } + else { + return false; + } +} + +bool asst::RoguelikeLastRewardTaskPlugin::_run() +{ + LogTraceFunction; + + std::string theme = status()->get_properties(Status::RoguelikeTheme).value(); + std::string mode = status()->get_properties(Status::RoguelikeMode).value(); + + if (theme != "Phantom" && mode == "4") { + status()->set_properties(Status::RoguelikeNeedChangeDifficulty, "max"); + } + return true; +} diff --git a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h new file mode 100644 index 0000000000..967cc57cb0 --- /dev/null +++ b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.h @@ -0,0 +1,18 @@ +#pragma once +#include "Task/AbstractTaskPlugin.h" + +namespace asst +{ + class RoguelikeLastRewardTaskPlugin : public AbstractTaskPlugin + { + public: + using AbstractTaskPlugin::AbstractTaskPlugin; + virtual ~RoguelikeLastRewardTaskPlugin() override = default; + + public: + virtual bool verify(AsstMsg msg, const json::value& details) const override; + + protected: + virtual bool _run() override; + }; +} diff --git a/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp index 09ed47c083..eb6483a7de 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp @@ -133,7 +133,7 @@ bool asst::RoguelikeShoppingTaskPlugin::_run() continue; } } - + if (goods.promotion != 0) { if (total_wait_promotion == 0) { Log.trace("Ready to buy", goods.name, ", but there is no one waiting for promotion, skip");