diff --git a/config/template.json b/config/template.json index 7351eb867..eb35aa79f 100644 --- a/config/template.json +++ b/config/template.json @@ -2405,6 +2405,10 @@ "FailureInterval": 120, "ServerUpdate": "00:00" }, + "OpsiCrossMonth": { + "HazardLevel": 0, + "TargetZone": -1 + }, "Storage": { "Storage": {} } diff --git a/module/config/argument/args.json b/module/config/argument/args.json index d221d7396..7f22a3740 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -14527,6 +14527,25 @@ "display": "hide" } }, + "OpsiCrossMonth": { + "HazardLevel": { + "type": "select", + "value": 0, + "option": [ + 0, + 2, + 3, + 4, + 5, + 6, + 10 + ] + }, + "TargetZone": { + "type": "input", + "value": -1 + } + }, "Storage": { "Storage": { "type": "storage", diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 3fabeaae9..334e72a75 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -1064,6 +1064,12 @@ OpsiHazard1Leveling: option: [ 0, 44, 22 ] OperationCoinsPreserve: 100000 DoScanningDevice: false +OpsiCrossMonth: + HazardLevel: + value: 0 + option: [ 0, 2, 3, 4, 5, 6, 10 ] + TargetZone: + value: -1 # ==================== Tools ==================== diff --git a/module/config/argument/task.yaml b/module/config/argument/task.yaml index 95c0caf70..16fb69ab8 100644 --- a/module/config/argument/task.yaml +++ b/module/config/argument/task.yaml @@ -358,6 +358,7 @@ Opsi: - OpsiFleet OpsiCrossMonth: - Scheduler + - OpsiCrossMonth # ==================== Tool ==================== diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 38914814f..2e87b2398 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -670,6 +670,10 @@ class GeneratedConfig: OpsiHazard1Leveling_OperationCoinsPreserve = 100000 OpsiHazard1Leveling_DoScanningDevice = False + # Group `OpsiCrossMonth` + OpsiCrossMonth_HazardLevel = 0 # 0, 2, 3, 4, 5, 6, 10 + OpsiCrossMonth_TargetZone = -1 + # Group `Daemon` Daemon_EnterMap = True diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index bbbc54f0a..e0221d67e 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -1469,29 +1469,29 @@ }, "Hospital": { "_info": { - "name": "Hospital._info.name", - "help": "Hospital._info.help" + "name": "Event Settings", + "help": "" }, "UseRecommendFleet": { - "name": "Hospital.UseRecommendFleet.name", - "help": "Hospital.UseRecommendFleet.help" + "name": "Use Fleet Recommendation", + "help": "If turned off, you need to manually prepare fleets of all 15 stages in advance" } }, "HospitalEvent": { "_info": { - "name": "HospitalEvent._info.name", - "help": "HospitalEvent._info.help" + "name": "Raid Settings", + "help": "" }, "Mode": { - "name": "HospitalEvent.Mode.name", - "help": "HospitalEvent.Mode.help", - "easy": "easy", - "normal": "normal", - "hard": "hard" + "name": "Raid Mode", + "help": "", + "easy": "Day", + "normal": "Dusk", + "hard": "Night" }, "Stage": { - "name": "HospitalEvent.Stage.name", - "help": "HospitalEvent.Stage.help", + "name": "Level Name", + "help": "", "T1": "T1", "T2": "T2", "T3": "T3", @@ -1501,12 +1501,12 @@ }, "MaritimeEscort": { "_info": { - "name": "MaritimeEscort._info.name", - "help": "MaritimeEscort._info.help" + "name": "Maritime Escort", + "help": "Enter then retreat, get about 70% of maximum rewards" }, "Enable": { - "name": "MaritimeEscort.Enable.name", - "help": "MaritimeEscort.Enable.help" + "name": "Enable maritime Escort", + "help": "" } }, "CoalitionScuttle": { @@ -6285,6 +6285,27 @@ "help": "Exchange purple coins to operation coins, which may cause a shortage of purple coins" } }, + "OpsiCrossMonth": { + "_info": { + "name": "OpSi Cross Month Settings", + "help": "" + }, + "HazardLevel": { + "name": "Target Zone Hazard Level of Meowfficer Farm", + "help": "Recommend 3 or 5 as these have higher meowfficer ratio to AP cost", + "0": "Use Config from Task OpSi Meowfficer Farm", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "10": "Center Zones" + }, + "TargetZone": { + "name": "Target Zone ID of Meowfficer Farm", + "help": "Supports either Zone ID or Name in CN/EN/JP/TW, i.e. \"51\", \"NA Ocean SE Sector E\"\nIf specified, Alas will loop on this same zone after each clear\nUse value 0 to remove the specification\nUse default value -1 or clear the field to use the target zone ID in Task Opsi Meowfficer Farm as the specification\nZone information can be acquired from <./module/os/map_data.py>" + } + }, "Daemon": { "_info": { "name": "Semi-auto Clicking", diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index d4715830f..dade4b1a8 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -6285,6 +6285,27 @@ "help": "OpsiHazard1Leveling.DoScanningDevice.help" } }, + "OpsiCrossMonth": { + "_info": { + "name": "OpsiCrossMonth._info.name", + "help": "OpsiCrossMonth._info.help" + }, + "HazardLevel": { + "name": "OpsiCrossMonth.HazardLevel.name", + "help": "OpsiCrossMonth.HazardLevel.help", + "0": "0", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "10": "10" + }, + "TargetZone": { + "name": "OpsiCrossMonth.TargetZone.name", + "help": "OpsiCrossMonth.TargetZone.help" + } + }, "Daemon": { "_info": { "name": "Daemon._info.name", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 5ae3da80a..e2eee7476 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -1469,29 +1469,29 @@ }, "Hospital": { "_info": { - "name": "Hospital._info.name", - "help": "Hospital._info.help" + "name": "活动设置", + "help": "" }, "UseRecommendFleet": { - "name": "Hospital.UseRecommendFleet.name", - "help": "Hospital.UseRecommendFleet.help" + "name": "使用舰队推荐", + "help": "如果关闭,需要事先手动为所有15个关卡配队" } }, "HospitalEvent": { "_info": { - "name": "HospitalEvent._info.name", - "help": "HospitalEvent._info.help" + "name": "共斗活动设置", + "help": "" }, "Mode": { - "name": "HospitalEvent.Mode.name", - "help": "HospitalEvent.Mode.help", - "easy": "easy", - "normal": "normal", - "hard": "hard" + "name": "难度", + "help": "", + "easy": "正午", + "normal": "黄昏", + "hard": "夜晚" }, "Stage": { - "name": "HospitalEvent.Stage.name", - "help": "HospitalEvent.Stage.help", + "name": "关卡名称", + "help": "", "T1": "T1", "T2": "T2", "T3": "T3", @@ -1501,12 +1501,12 @@ }, "MaritimeEscort": { "_info": { - "name": "MaritimeEscort._info.name", - "help": "MaritimeEscort._info.help" + "name": "商船护航", + "help": "进一下就撤退,能拿约70%的奖励" }, "Enable": { - "name": "MaritimeEscort.Enable.name", - "help": "MaritimeEscort.Enable.help" + "name": "启用商船护航", + "help": "" } }, "CoalitionScuttle": { @@ -6285,6 +6285,27 @@ "help": "消耗紫币换取黄币,可能会导致紫币不足" } }, + "OpsiCrossMonth": { + "_info": { + "name": "跨月每日", + "help": "" + }, + "HazardLevel": { + "name": "短猫侵蚀等级", + "help": "按顺时针出击特定侵蚀等级的海域\n建议选 5 或 3,有更高的 猫点/行动力 比\n\"使用短猫配置\"表示在跨月每日时使用短猫相接任务配置中的侵蚀等级进行短猫", + "0": "使用短猫配置", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "10": "中心海域" + }, + "TargetZone": { + "name": "短猫指定海域", + "help": "仅出击指定的海域,可以用来获取大世界成就星星\n支持海域ID、国服/国际服/日服/台服海域名称,例如 \"51\", \"NA海域东南E\", \"NA Ocean SE Sector E\"\n填入0表示不指定海域\n填入默认值-1,或者删除数值表示在跨月每日时使用短猫相接任务配置中的指定海域进行短猫" + } + }, "Daemon": { "_info": { "name": "半自动点击", diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index 640efce82..2afd1d1e5 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -1469,29 +1469,29 @@ }, "Hospital": { "_info": { - "name": "Hospital._info.name", - "help": "Hospital._info.help" + "name": "活動設定", + "help": "" }, "UseRecommendFleet": { - "name": "Hospital.UseRecommendFleet.name", - "help": "Hospital.UseRecommendFleet.help" + "name": "使用艦隊推薦", + "help": "如果關閉,需要事先手動為所有15個關卡配隊" } }, "HospitalEvent": { "_info": { - "name": "HospitalEvent._info.name", - "help": "HospitalEvent._info.help" + "name": "共鬥活動設定", + "help": "" }, "Mode": { - "name": "HospitalEvent.Mode.name", - "help": "HospitalEvent.Mode.help", - "easy": "easy", - "normal": "normal", - "hard": "hard" + "name": "難度", + "help": "", + "easy": "正午", + "normal": "黃昏", + "hard": "夜晚" }, "Stage": { - "name": "HospitalEvent.Stage.name", - "help": "HospitalEvent.Stage.help", + "name": "地圖名稱", + "help": "", "T1": "T1", "T2": "T2", "T3": "T3", @@ -1501,12 +1501,12 @@ }, "MaritimeEscort": { "_info": { - "name": "MaritimeEscort._info.name", - "help": "MaritimeEscort._info.help" + "name": "商船護航", + "help": "進一下就撤退,能拿約70%的獎勵" }, "Enable": { - "name": "MaritimeEscort.Enable.name", - "help": "MaritimeEscort.Enable.help" + "name": "啟用商船護航", + "help": "" } }, "CoalitionScuttle": { @@ -6257,7 +6257,7 @@ }, "TargetZone": { "name": "指定海域", - "help": "僅出擊指定的海域,可以用來獲取大世界成就星星\n自動更新的數值,填0可重置進度,重置後自動跳過已開荒的海域\n支援海域ID、國服/國際服/日服/台服海域名稱,例如 \"51\", \"NA海域東南E\", \"NA Ocean SE Sector E\"\n填入默認值0,或者刪除數值即可取消指定" + "help": "僅出擊指定的海域,可以用來獲取大世界成就星星\n支援海域ID、國服/國際服/日服/台服海域名稱,例如 \"51\", \"NA海域東南E\", \"NA Ocean SE Sector E\"\n填入默認值0,或者刪除數值即可取消指定" }, "APPreserveUntilReset": { "name": "保留行動力直到月底", @@ -6285,6 +6285,27 @@ "help": "消耗紫幣換取黃幣,可能會導致紫幣不足" } }, + "OpsiCrossMonth": { + "_info": { + "name": "跨月每日", + "help": "" + }, + "HazardLevel": { + "name": "短貓侵蝕等級", + "help": "按順時針出擊特定侵蝕等級的海域\n建議選 5 或 3 ,有更高的 貓點/行動力 比\n\"使用短貓配置\"表示在跨月每日時使用短貓相接任務配置中的侵蝕等級進行短貓", + "0": "使用短貓配置", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "10": "中心海域" + }, + "TargetZone": { + "name": "短貓指定海域", + "help": "僅出擊指定的海域,可以用來獲取大世界成就星星\n支援海域ID、國服/國際服/日服/台服海域名稱,例如 \"51\", \"NA海域東南E\", \"NA Ocean SE Sector E\"\n填入0表示不指定海域\n填入預設值-1,或者刪除數值表示在跨月每日時使用短貓相接任務配置中的指定海域進行短貓" + } + }, "Daemon": { "_info": { "name": "半自動點擊", diff --git a/module/os/tasks/cross_month.py b/module/os/tasks/cross_month.py index 4f0c8b622..27be62f11 100644 --- a/module/os/tasks/cross_month.py +++ b/module/os/tasks/cross_month.py @@ -135,10 +135,13 @@ class OpsiCrossMonth(OSMap): else: break - OpsiMeowfficerFarming_HazardLevel = self.config.cross_get('OpsiMeowfficerFarming' - '.OpsiMeowfficerFarming' - '.HazardLevel') - logger.hr(f'OS meowfficer farming, hazard_level={OpsiMeowfficerFarming_HazardLevel}', level=1) + hazard_level = self.config.OpsiCrossMonth_HazardLevel + target_zone = self.config.OpsiCrossMonth_TargetZone + if hazard_level == 0: + hazard_level = self.config.cross_get('OpsiMeowfficerFarming.OpsiMeowfficerFarming.HazardLevel') + if target_zone == -1: + target_zone = self.config.cross_get('OpsiMeowfficerFarming.OpsiMeowfficerFarming.TargetZone') + logger.hr(f'OS meowfficer farming, hazard_level={hazard_level}', level=1) self.config.override( OpsiGeneral_DoRandomMapEvent=True, OpsiGeneral_BuyActionPointLimit=0, @@ -148,8 +151,8 @@ class OpsiCrossMonth(OSMap): OpsiFleet_Fleet=self.config.cross_get('OpsiMeowfficerFarming.OpsiFleet.Fleet'), OpsiFleet_Submarine=False, OpsiMeowfficerFarming_ActionPointPreserve=0, - OpsiMeowfficerFarming_HazardLevel=OpsiMeowfficerFarming_HazardLevel, - OpsiMeowfficerFarming_TargetZone=self.config.cross_get('OpsiMeowfficerFarming.OpsiMeowfficerFarming.TargetZone'), + OpsiMeowfficerFarming_HazardLevel=hazard_level, + OpsiMeowfficerFarming_TargetZone=target_zone, OpsiMeowfficerFarming_APPreserveUntilReset=False, ) while True: @@ -167,7 +170,7 @@ class OpsiCrossMonth(OSMap): self.run_strategic_search() self.handle_after_auto_search() else: - zones = self.zone_select(hazard_level=OpsiMeowfficerFarming_HazardLevel) \ + zones = self.zone_select(hazard_level=self.config.OpsiMeowfficerFarming_HazardLevel) \ .delete(SelectedGrids([self.zone])) \ .delete(SelectedGrids(self.zones.select(is_port=True))) \ .sort_by_clock_degree(center=(1252, 1012), start=self.zone.location)