diff --git a/resource/tasks.json b/resource/tasks.json index 3b131ab076..2c8981989c 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -9035,115 +9035,81 @@ "Sami@Roguelike@FromIntegratedStrategies" ] }, - "Roguelike@LastReward_normal_mode": { - "algorithm": "JustReturn", - "postDelay": 0, + "Roguelike@LastReward_default": { + "template": "empty.png", + "action": "ClickSelf", + "cache": false, + "roi": [ + 171, + 151, + 935, + 533 + ], "next": [ "Roguelike@LastRewardConfirm" ] }, - "Roguelike@LastReward_mode4": { - "algorithm": "JustReturn", - "postDelay": 2147483647 + "Roguelike@LastReward_restart": { + "template": "empty.png", + "action": "ClickSelf", + "cache": false, + "roi": [ + 171, + 151, + 935, + 533 + ], + "next": [] + }, + "Roguelike@LastReward_stop": { + "template": "empty.png", + "action": "ClickSelf", + "cache": false, + "roi": [ + 171, + 151, + 935, + 533 + ], + "next": [ + "RoguelikeControlTaskPlugin-Stop" + ] }, "Roguelike@LastReward": { - "Doc": "base_task", - "Doc2": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援——热水壶", - "template": "empty.png", + "Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援——热水壶", + "baseTask": "Roguelike@LastReward_default", "templThreshold": 0.7, - "action": "ClickSelf", - "cache": false, - "roi": [ - 171, - 151, - 935, - 533 - ], - "next": [ - "Roguelike@LastRewardConfirm" - ] + "template": "empty.png" }, "Roguelike@LastReward2": { - "Doc": "base_task", - "Doc2": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 5 源石锭", - "template": "empty.png", + "Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 5 源石锭", + "baseTask": "Roguelike@LastReward_default", "templThreshold": 0.7, - "action": "ClickSelf", - "cache": false, - "roi": [ - 171, - 151, - 935, - 533 - ], - "next": [ - "Roguelike@LastRewardConfirm" - ] + "template": "empty.png" }, "Roguelike@LastReward3": { - "Doc": "base_task", - "Doc2": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 3 目标生命", - "template": "empty.png", - "action": "ClickSelf", - "cache": false, - "roi": [ - 171, - 151, - 935, - 533 - ], - "next": [ - "Roguelike@LastRewardConfirm" - ] + "Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 3 目标生命", + "baseTask": "Roguelike@LastReward_default", + "template": "empty.png" }, "Roguelike@LastReward4": { - "Doc": "base_task", - "Doc2": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 2 希望", - "template": "empty.png", - "action": "ClickSelf", - "cache": false, - "roi": [ - 171, - 151, - 935, - 533 - ], - "next": [ - "Roguelike@LastRewardConfirm" - ] + "Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 2 希望", + "baseTask": "Roguelike@LastReward_default", + "template": "empty.png" + }, + "Roguelike@LastRewardRand": { + "Doc": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 问号", + "baseTask": "Roguelike@LastReward_default", + "template": "empty.png" }, "Roguelike@LastRewardConfirm": { - "Doc": "base_task", + "baseTask": "Roguelike@LastReward_default", "template": "empty.png", - "action": "ClickSelf", - "cache": false, - "roi": [ - 171, - 151, - 935, - 533 - ], "next": [ "Roguelike@RolesDefault", "Roguelike@CloseCollection" ] }, - "Roguelike@LastRewardRand": { - "Doc": "base_task", - "Doc2": "你的上一次探索突破了至少两层困难,这一次可以获得更多支援—— 问号", - "template": "empty.png", - "action": "ClickSelf", - "cache": false, - "roi": [ - 171, - 151, - 935, - 533 - ], - "next": [ - "Roguelike@LastRewardConfirm" - ] - }, "Roguelike@MissionCompletedFlag": { "roi": [ 0, @@ -9183,25 +9149,11 @@ "Roguelike@ClickToStartPointAfterFailed" ] }, - "Roguelike@LevelName": { - "algorithm": "OcrDetect", - "cache": false, - "text": [], - "roi": [ - 593, - 0, - 186, - 129 - ], - "next": [ - "Roguelike@NextLevel" - ] - }, - "Roguelike@LevelName_normal_mode": { + "Roguelike@LevelName_default": { "algorithm": "OcrDetect", "cache": false, "text": [ - "随便写点什么防止卡住,Leave some words here to avoid stucking" + "_SKIP_" ], "roi": [ 593, @@ -9216,7 +9168,9 @@ "Roguelike@LevelName_mode4": { "algorithm": "OcrDetect", "cache": false, - "text": [], + "text": [ + "_SKIP_" + ], "roi": [ 593, 0, @@ -9224,7 +9178,7 @@ 129 ], "next": [ - "Roguelike@NextLevel" + "Roguelike@ExitThenAbandon_mode4" ] }, "Roguelike@Stages": { @@ -10325,21 +10279,9 @@ }, "Phantom@Roguelike@DropsFlag": { "template": "Roguelike@DropsFlag.png", - "next": [ - "Phantom@Roguelike@GetDrops#next", - "Phantom@Roguelike@GetDropCompleted", - "Phantom@Roguelike@GetDropLeave", - "Phantom@Roguelike@Stages#next", - "Phantom@Roguelike@StageEncounterOptions#next", - "Phantom@Roguelike@StageEncounterSpecialClose", - "Phantom@Roguelike@EnterAfterRecruit", - "Phantom@Roguelike@StageTraderLeave", - "Phantom@Roguelike@CloseEvent", - "Phantom@Roguelike@DialogSkip", - "Phantom@Roguelike@RecruitOther" - ] + "baseTask": "Phantom@Roguelike@DropsFlag_default" }, - "Phantom@Roguelike@DropsFlag_normal_mode": { + "Phantom@Roguelike@DropsFlag_default": { "template": "Roguelike@DropsFlag.png", "next": [ "Phantom@Roguelike@GetDrops#next", @@ -10420,16 +10362,16 @@ "Phantom@Roguelike@LastReward2": {}, "Phantom@Roguelike@LastReward3": {}, "Phantom@Roguelike@LastReward4": {}, - "Phantom@Roguelike@LastRewardConfirm": {}, "Phantom@Roguelike@LastRewardRand": {}, + "Phantom@Roguelike@LastRewardConfirm": {}, "Phantom@Roguelike@MissionFailedFlag": {}, "Phantom@Roguelike@MissionFailedFlag2": {}, + "Phantom@Roguelike@LevelName": { + "baseTask": "Phantom@Roguelike@LevelName_default" + }, "Phantom@Roguelike@LevelName_mode4": { "text": [ "故土残躯" - ], - "next": [ - "Phantom@Roguelike@ExitThenAbandon_mode4" ] }, "Phantom@Roguelike@Stages": { @@ -10758,21 +10700,9 @@ }, "Mizuki@Roguelike@DropsFlag": { "template": "Roguelike@DropsFlag.png", - "next": [ - "Mizuki@Roguelike@GetDrops#next", - "Mizuki@Roguelike@GetDropCompleted", - "Mizuki@Roguelike@GetDropLeave", - "Mizuki@Roguelike@Stages#next", - "Mizuki@Roguelike@StageEncounterOptions#next", - "Mizuki@Roguelike@StageEncounterSpecialClose", - "Mizuki@Roguelike@EnterAfterRecruit", - "Mizuki@Roguelike@StageTraderLeave", - "Mizuki@Roguelike@CloseEvent", - "Mizuki@Roguelike@DialogSkip", - "Mizuki@Roguelike@RecruitOther" - ] + "baseTask": "Mizuki@Roguelike@DropsFlag_default" }, - "Mizuki@Roguelike@DropsFlag_normal_mode": { + "Mizuki@Roguelike@DropsFlag_default": { "template": "Roguelike@DropsFlag.png", "next": [ "Mizuki@Roguelike@GetDrops#next", @@ -10908,8 +10838,8 @@ "Mizuki@Roguelike@LastReward2": {}, "Mizuki@Roguelike@LastReward3": {}, "Mizuki@Roguelike@LastReward4": {}, - "Mizuki@Roguelike@LastRewardConfirm": {}, "Mizuki@Roguelike@LastRewardRand": {}, + "Mizuki@Roguelike@LastRewardConfirm": {}, "Mizuki@Roguelike@MapObject": { "action": "DoNothing", "cache": false, @@ -10925,13 +10855,13 @@ }, "Mizuki@Roguelike@MissionFailedFlag": {}, "Mizuki@Roguelike@MissionFailedFlag2": {}, + "Mizuki@Roguelike@LevelName": { + "baseTask": "Mizuki@Roguelike@LevelName_default" + }, "Mizuki@Roguelike@LevelName_mode4": { "text": [ "波涛略地", "绀碧摇篮" - ], - "next": [ - "Mizuki@Roguelike@ExitThenAbandon_mode4" ] }, "Mizuki@Roguelike@Stages": { @@ -11285,22 +11215,9 @@ }, "Sami@Roguelike@DropsFlag": { "template": "Roguelike@DropsFlag.png", - "next": [ - "Sami@Roguelike@GetDrops#next", - "Sami@Roguelike@GetDropCompleted", - "Sami@Roguelike@GetDropLeave", - "Sami@Roguelike@NextLevel", - "Sami@Roguelike@Stages#next", - "Sami@Roguelike@StageEncounterOptions#next", - "Sami@Roguelike@StageEncounterSpecialClose", - "Sami@Roguelike@EnterAfterRecruit", - "Sami@Roguelike@StageTraderLeave", - "Sami@Roguelike@CloseEvent", - "Sami@Roguelike@DialogSkip", - "Sami@Roguelike@RecruitOther" - ] + "baseTask": "Sami@Roguelike@DropsFlag_default" }, - "Sami@Roguelike@DropsFlag_normal_mode": { + "Sami@Roguelike@DropsFlag_default": { "template": "Roguelike@DropsFlag.png", "next": [ "Sami@Roguelike@GetDrops#next", @@ -11450,8 +11367,8 @@ "Sami@Roguelike@LastReward2": {}, "Sami@Roguelike@LastReward3": {}, "Sami@Roguelike@LastReward4": {}, - "Sami@Roguelike@LastRewardConfirm": {}, "Sami@Roguelike@LastRewardRand": {}, + "Sami@Roguelike@LastRewardConfirm": {}, "Sami@Roguelike@MapObject": { "action": "DoNothing", "cache": false, @@ -11467,13 +11384,13 @@ }, "Sami@Roguelike@MissionFailedFlag": {}, "Sami@Roguelike@MissionFailedFlag2": {}, + "Sami@Roguelike@LevelName": { + "baseTask": "Sami@Roguelike@LevelName_default" + }, "Sami@Roguelike@LevelName_mode4": { "text": [ "昧明冻土", "深埋迷境" - ], - "next": [ - "Sami@Roguelike@ExitThenAbandon_mode4" ] }, "Sami@Roguelike@Stages": { diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index 841964bce2..ee725cb336 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -91,41 +91,31 @@ 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; - if (!start_with_elite_two) { - // 获得热水壶和演讲时长延时 - 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.set_task_base(theme + "@Roguelike@LevelName", theme + "@Roguelike@LevelName_mode4"); + // 获得热水壶和演讲时停止肉鸽 + std::string last_reward_stop_or_continue = + start_with_elite_two ? "Roguelike@LastReward_default" : "Roguelike@LastReward_stop"; + Task.set_task_base("Roguelike@LastReward", last_reward_stop_or_continue); + Task.set_task_base("Roguelike@LastReward4", last_reward_stop_or_continue); // 获得其他奖励时重开 - 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; + Task.set_task_base("Roguelike@LastReward2", "Roguelike@LastReward_restart"); + Task.set_task_base("Roguelike@LastReward3", "Roguelike@LastReward_restart"); + Task.set_task_base("Roguelike@LastRewardRand", "Roguelike@LastReward_restart"); } 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; + Task.set_task_base(theme + "@Roguelike@LevelName", theme + "@Roguelike@LevelName_default"); + // 重置开局奖励next + Task.set_task_base("Roguelike@LastReward", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward2", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward3", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastReward4", "Roguelike@LastReward_default"); + Task.set_task_base("Roguelike@LastRewardRand", "Roguelike@LastReward_default"); } if (mode == 1) { // 战斗后奖励只拿钱 - Task.get(theme + "@Roguelike@DropsFlag")->next = Task.get(theme + "@Roguelike@DropsFlag_mode1")->next; + Task.set_task_base(theme + "@Roguelike@DropsFlag", theme + "@Roguelike@DropsFlag_mode1"); // 刷源石锭模式是否进入第二层 bool investment_enter_second_floor = params.get("investment_enter_second_floor", true); if (investment_enter_second_floor) { @@ -139,7 +129,7 @@ bool asst::RoguelikeTask::set_params(const json::value& params) } else { // 重置战斗后奖励next - Task.get(theme + "@Roguelike@DropsFlag")->next = Task.get(theme + "@Roguelike@DropsFlag_normal_mode")->next; + Task.set_task_base(theme + "@Roguelike@DropsFlag", theme + "@Roguelike@DropsFlag_default"); m_roguelike_task_ptr->set_times_limit("StageTraderLeave", INT_MAX); m_roguelike_task_ptr->set_times_limit("StageTraderLeaveConfirm", INT_MAX); }