refactor: 重写 肉鸽运行时修改任务内容 的代码

refactor: 重写 肉鸽烧水
This commit is contained in:
zzyyyl
2023-09-30 21:12:11 +08:00
parent d7971fdf71
commit c04deefd89
2 changed files with 95 additions and 188 deletions

View File

@@ -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": {

View File

@@ -91,41 +91,31 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
if (mode == 4) {
// 设置ocr第三层层名设置识别到退出重进
Task.get<OcrTaskInfo>(theme + "@Roguelike@LevelName")->text =
Task.get<OcrTaskInfo>(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<OcrTaskInfo>(theme + "@Roguelike@LevelName")->text =
Task.get<OcrTaskInfo>(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);
}