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 58a9342eb..e0221d67e 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -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 4fff306dd..e2eee7476 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -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 dad466106..2afd1d1e5 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -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 395d7af9b..5b1cde0f7 100644 --- a/module/os/tasks/cross_month.py +++ b/module/os/tasks/cross_month.py @@ -121,10 +121,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, @@ -134,8 +137,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: @@ -153,7 +156,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)