Skip to content

Commit cd8dd02

Browse files
authored
Update server time configuration and optimize task scheduling logic (#361)
## Summary by Sourcery 基于 AP 快照新增提前智能调度触发机制,优化智能调度阈值与任务排序,并为 War Archives 引入每日运行次数限制,同时统一调度器的服务器时间与优先级。 New Features: - 新增配置项与逻辑:基于存储的 AP 快照中估算的行动力,提前触发智能调度。 - 为 War Archives 增加每日运行次数限制跟踪,包括重置、消耗以及与停止条件的整合。 Bug Fixes: - 当每日限制在当天中途发生变更时,通过重新计算剩余次数,避免 War Archives 的每日运行计数出现偏差。 Enhancements: - 统一智能调度相关开关的布尔配置处理方式,包括复选框值。 - 确保 OpsiScheduling 在派发金币与升级任务后让出执行权,避免立即再次进入调度。 - 从仪表盘、智能调度以及 Meowfficer 搜索流程记录 AP 快照,以提升 AP 预估精度。 - 调整默认任务优先级以纳入 OpsiScheduling,并在安全的情况下迁移现有配置。 - 统一公会、奖励及 OpsiScheduling 调度器行为,使其依赖服务器更新窗口及一致的执行间隔。 <details> <summary>Original summary in English</summary> ## Summary by Sourcery Add AP snapshot-based early smart scheduling trigger, refine smart scheduling thresholds and task sequencing, and introduce daily run limits for War Archives while aligning scheduler server times and priorities. New Features: - Introduce configuration options and logic to trigger smart scheduling early based on estimated action points from stored AP snapshots. - Add daily run limit tracking for War Archives, including reset, consumption, and stop-condition integration. Bug Fixes: - Prevent War Archives daily run counters from drifting when limits change mid-day by recalculating remaining runs. Enhancements: - Normalize boolean config handling for smart scheduling-related toggles, including checkbox values. - Ensure OpsiScheduling yields after dispatching coin and leveling tasks to avoid immediate re-entry. - Record AP snapshots from dashboard, smart scheduling, and Meowfficer search flows to improve AP estimation. - Adjust default task priority to include OpsiScheduling and migrate existing configs when safe. - Unify guild, reward, and OpsiScheduling scheduler behaviors to rely on server update windows and consistent intervals. </details>
2 parents 3dfddad + 8f90a7c commit cd8dd02

22 files changed

Lines changed: 548 additions & 34 deletions

config/template.json

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
"FleetOnsen": false
170170
},
171171
"YukikazeTaskManager": {
172-
"TaskPriorityAdjustment": "Restart\n> OpsiCrossMonth\n> Commission > Tactical > Research\n> Exercise\n> Dorm > Meowfficer > Guild > Gacha\n> Reward\n> ShopFrequent > ShopOnce > Shipyard > Freebies\n> PrivateQuarters\n> OpsiExplore\n> Minigame > Awaken\n> OpsiAshBeacon\n> OpsiDaily > OpsiShop > OpsiVoucher > EventShop\n> OpsiAbyssal > OpsiStronghold > OpsiObscure > OpsiArchive\n> Daily > Hard > OpsiAshBeacon > OpsiAshAssist > OpsiMonthBoss\n> Sos > EventSp > EventA > EventB > EventC > EventD\n> RaidDaily > CoalitionSp > WarArchives > MaritimeEscort\n> IslandJuuEatery > IslandJuuCoffee > IslandGrill > IslandTeahouse > IslandRestaurant\n> IslandFarm > IslandRancher > IslandMineForest > IslandDailyGather > IslandManufacture\n> IslandAirDrop > IslandBusiness > IslandDailyOrder > IslandDailyInteract > IslandPearlSell > IslandCargoPreparation\n> Event > Event2 > Event3 > Raid > Hospital > HospitalEvent > Coalition > RaidScuttle > Main > Main2 > Main3\n> OpsiMeowfficerFarming\n> GemsFarming\n> Ambush11\n> OpsiHazard1Leveling\n> ThreeOilLowCost"
172+
"TaskPriorityAdjustment": "Restart\n> OpsiCrossMonth\n> OpsiScheduling\n> Commission > Tactical > Research\n> Exercise\n> Dorm > Meowfficer > Guild > Gacha\n> Reward\n> ShopFrequent > ShopOnce > Shipyard > Freebies\n> PrivateQuarters\n> OpsiExplore\n> Minigame > Awaken\n> OpsiAshBeacon\n> OpsiDaily > OpsiShop > OpsiVoucher > EventShop\n> OpsiAbyssal > OpsiStronghold > OpsiObscure > OpsiArchive\n> Daily > Hard > OpsiAshBeacon > OpsiAshAssist > OpsiMonthBoss\n> Sos > EventSp > EventA > EventB > EventC > EventD\n> RaidDaily > CoalitionSp > WarArchives > MaritimeEscort\n> IslandJuuEatery > IslandJuuCoffee > IslandGrill > IslandTeahouse > IslandRestaurant\n> IslandFarm > IslandRancher > IslandMineForest > IslandDailyGather > IslandManufacture\n> IslandAirDrop > IslandBusiness > IslandDailyOrder > IslandDailyInteract > IslandPearlSell > IslandCargoPreparation\n> Event > Event2 > Event3 > Raid > Hospital > HospitalEvent > Coalition > RaidScuttle > Main > Main2 > Main3\n> OpsiMeowfficerFarming\n> GemsFarming\n> Ambush11\n> OpsiHazard1Leveling\n> ThreeOilLowCost"
173173
},
174174
"Storage": {
175175
"Storage": {}
@@ -1243,6 +1243,12 @@
12431243
"GetNewShip": false,
12441244
"ReachLevel": 0
12451245
},
1246+
"WarArchives": {
1247+
"DailyRunCount": 0,
1248+
"DailyRunCountRemain": 0,
1249+
"DailyRunCountRecord": "2020-01-01 00:00:00",
1250+
"DailyRunCountLimit": 0
1251+
},
12461252
"Fleet": {
12471253
"Fleet1": 1,
12481254
"Fleet1Formation": "double_line",
@@ -1960,7 +1966,7 @@
19601966
"Command": "Guild",
19611967
"SuccessInterval": 30,
19621968
"FailureInterval": 30,
1963-
"ServerUpdate": "00:00, 06:00, 12:00, 18:00, 21:00",
1969+
"ServerUpdate": "00:00, 06:00, 12:00, 18:00",
19641970
"Sensitive": false
19651971
},
19661972
"GuildLogistics": {
@@ -1988,7 +1994,7 @@
19881994
"Command": "Reward",
19891995
"SuccessInterval": "120-240",
19901996
"FailureInterval": "120-240",
1991-
"ServerUpdate": "00:00",
1997+
"ServerUpdate": "00:00, 06:00, 12:00, 18:00",
19921998
"Sensitive": false
19931999
},
19942000
"Reward": {
@@ -2637,15 +2643,17 @@
26372643
"PushNotification": false,
26382644
"NextRun": "2020-01-01 00:00:00",
26392645
"Command": "OpsiScheduling",
2640-
"SuccessInterval": 0,
2641-
"FailureInterval": 120,
2646+
"SuccessInterval": 60,
2647+
"FailureInterval": 60,
26422648
"ServerUpdate": "00:00",
26432649
"Sensitive": false
26442650
},
26452651
"OpsiScheduling": {
26462652
"UseSmartSchedulingOperationCoinsPreserve": true,
26472653
"OperationCoinsPreserve": 40000,
26482654
"ActionPointPreserve": 200,
2655+
"ActionPointEarlyTriggerEnable": true,
2656+
"ActionPointEarlyTriggerThreshold": 200,
26492657
"OperationCoinsReturnThreshold": 20000,
26502658
"EnableMeowfficerFarming": true,
26512659
"EnableObscure": false,

module/campaign/run.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,10 @@ def can_use_auto_search_continue(self):
371371

372372
return self.run_count > 0 and self.campaign.map_is_auto_search
373373

374+
def after_campaign_run(self):
375+
"""单次战役完成后的扩展钩子。"""
376+
pass
377+
374378
def handle_commission_notice(self):
375379
"""
376380
检查委托通知。如果发现委托完成,停止当前任务并调用委托处理。
@@ -479,6 +483,7 @@ def run(self, name, folder='campaign_main', mode='normal', total=0):
479483
self.run_count += 1
480484
if self.config.StopCondition_RunCount:
481485
self.config.StopCondition_RunCount -= 1
486+
self.after_campaign_run()
482487
# 结束条件
483488
if self.triggered_stop_condition(oil_check=False):
484489
break

module/config/argument/args.json

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,7 @@
783783
"YukikazeTaskManager": {
784784
"TaskPriorityAdjustment": {
785785
"type": "textarea",
786-
"value": "Restart\n> OpsiCrossMonth\n> Commission > Tactical > Research\n> Exercise\n> Dorm > Meowfficer > Guild > Gacha\n> Reward\n> ShopFrequent > ShopOnce > Shipyard > Freebies\n> PrivateQuarters\n> OpsiExplore\n> Minigame > Awaken\n> OpsiAshBeacon\n> OpsiDaily > OpsiShop > OpsiVoucher > EventShop\n> OpsiAbyssal > OpsiStronghold > OpsiObscure > OpsiArchive\n> Daily > Hard > OpsiAshBeacon > OpsiAshAssist > OpsiMonthBoss\n> Sos > EventSp > EventA > EventB > EventC > EventD\n> RaidDaily > CoalitionSp > WarArchives > MaritimeEscort\n> IslandJuuEatery > IslandJuuCoffee > IslandGrill > IslandTeahouse > IslandRestaurant\n> IslandFarm > IslandRancher > IslandMineForest > IslandDailyGather > IslandManufacture\n> IslandAirDrop > IslandBusiness > IslandDailyOrder > IslandDailyInteract > IslandPearlSell > IslandCargoPreparation\n> Event > Event2 > Event3 > Raid > Hospital > HospitalEvent > Coalition > RaidScuttle > Main > Main2 > Main3\n> OpsiMeowfficerFarming\n> GemsFarming\n> Ambush11\n> OpsiHazard1Leveling\n> ThreeOilLowCost"
786+
"value": "Restart\n> OpsiCrossMonth\n> OpsiScheduling\n> Commission > Tactical > Research\n> Exercise\n> Dorm > Meowfficer > Guild > Gacha\n> Reward\n> ShopFrequent > ShopOnce > Shipyard > Freebies\n> PrivateQuarters\n> OpsiExplore\n> Minigame > Awaken\n> OpsiAshBeacon\n> OpsiDaily > OpsiShop > OpsiVoucher > EventShop\n> OpsiAbyssal > OpsiStronghold > OpsiObscure > OpsiArchive\n> Daily > Hard > OpsiAshBeacon > OpsiAshAssist > OpsiMonthBoss\n> Sos > EventSp > EventA > EventB > EventC > EventD\n> RaidDaily > CoalitionSp > WarArchives > MaritimeEscort\n> IslandJuuEatery > IslandJuuCoffee > IslandGrill > IslandTeahouse > IslandRestaurant\n> IslandFarm > IslandRancher > IslandMineForest > IslandDailyGather > IslandManufacture\n> IslandAirDrop > IslandBusiness > IslandDailyOrder > IslandDailyInteract > IslandPearlSell > IslandCargoPreparation\n> Event > Event2 > Event3 > Raid > Hospital > HospitalEvent > Coalition > RaidScuttle > Main > Main2 > Main3\n> OpsiMeowfficerFarming\n> GemsFarming\n> Ambush11\n> OpsiHazard1Leveling\n> ThreeOilLowCost"
787787
}
788788
},
789789
"Storage": {
@@ -6772,6 +6772,28 @@
67726772
"value": 0
67736773
}
67746774
},
6775+
"WarArchives": {
6776+
"DailyRunCount": {
6777+
"type": "input",
6778+
"value": 0
6779+
},
6780+
"DailyRunCountRemain": {
6781+
"type": "stored",
6782+
"value": 0,
6783+
"display": "hide"
6784+
},
6785+
"DailyRunCountRecord": {
6786+
"type": "stored",
6787+
"value": "2020-01-01 00:00:00",
6788+
"validate": "datetime",
6789+
"display": "hide"
6790+
},
6791+
"DailyRunCountLimit": {
6792+
"type": "stored",
6793+
"value": 0,
6794+
"display": "hide"
6795+
}
6796+
},
67756797
"Fleet": {
67766798
"Fleet1": {
67776799
"type": "select",
@@ -10471,7 +10493,7 @@
1047110493
},
1047210494
"ServerUpdate": {
1047310495
"type": "input",
10474-
"value": "00:00, 06:00, 12:00, 18:00, 21:00",
10496+
"value": "00:00, 06:00, 12:00, 18:00",
1047510497
"display": "hide"
1047610498
},
1047710499
"Sensitive": {
@@ -10572,7 +10594,7 @@
1057210594
},
1057310595
"ServerUpdate": {
1057410596
"type": "input",
10575-
"value": "00:00",
10597+
"value": "00:00, 06:00, 12:00, 18:00",
1057610598
"display": "hide"
1057710599
},
1057810600
"Sensitive": {
@@ -13343,12 +13365,12 @@
1334313365
},
1334413366
"SuccessInterval": {
1334513367
"type": "input",
13346-
"value": 0,
13368+
"value": 60,
1334713369
"display": "hide"
1334813370
},
1334913371
"FailureInterval": {
1335013372
"type": "input",
13351-
"value": 120,
13373+
"value": 60,
1335213374
"display": "hide"
1335313375
},
1335413376
"ServerUpdate": {
@@ -13382,6 +13404,18 @@
1338213404
"type": "input",
1338313405
"value": 200
1338413406
},
13407+
"ActionPointEarlyTriggerEnable": {
13408+
"type": "checkbox",
13409+
"value": true,
13410+
"option": [
13411+
true,
13412+
false
13413+
]
13414+
},
13415+
"ActionPointEarlyTriggerThreshold": {
13416+
"type": "input",
13417+
"value": 200
13418+
},
1338513419
"OperationCoinsReturnThreshold": {
1338613420
"type": "input",
1338713421
"value": 20000

module/config/argument/argument.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ YukikazeTaskManager:
268268
value: |-
269269
Restart
270270
> OpsiCrossMonth
271+
> OpsiScheduling
271272
> Commission > Tactical > Research
272273
> Exercise
273274
> Dorm > Meowfficer > Guild > Gacha
@@ -339,6 +340,20 @@ StopCondition:
339340
StageIncrease: false
340341
GetNewShip: false
341342
ReachLevel: 0
343+
WarArchives:
344+
DailyRunCount: 0
345+
DailyRunCountRemain:
346+
type: stored
347+
value: 0
348+
display: hide
349+
DailyRunCountRecord:
350+
type: stored
351+
value: 2020-01-01 00:00:00
352+
display: hide
353+
DailyRunCountLimit:
354+
type: stored
355+
value: 0
356+
display: hide
342357
Fleet:
343358
Fleet1:
344359
value: 1
@@ -1079,6 +1094,12 @@ OpsiScheduling:
10791094
value: 40000
10801095
ActionPointPreserve:
10811096
value: 200
1097+
ActionPointEarlyTriggerEnable:
1098+
value: true
1099+
type: checkbox
1100+
option: [true, false]
1101+
ActionPointEarlyTriggerThreshold:
1102+
value: 200
10821103

10831104
OperationCoinsReturnThreshold:
10841105
value: 20000

module/config/argument/gui.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ OpsiScheduling:
288288
UseSmartSchedulingOperationCoinsPreserve:
289289
OperationCoinsPreserve:
290290
ActionPointPreserve:
291+
ActionPointEarlyTriggerEnable:
292+
ActionPointEarlyTriggerThreshold:
291293

292294
OperationCoinsReturnThreshold:
293295
EnableMeowfficerFarming:

module/config/argument/override.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -451,12 +451,12 @@ Guild:
451451
Scheduler:
452452
SuccessInterval: 30
453453
FailureInterval: 30
454-
ServerUpdate: 00:00, 06:00, 12:00, 18:00, 21:00
454+
ServerUpdate: 00:00, 06:00, 12:00, 18:00
455455
Reward:
456456
Scheduler:
457457
SuccessInterval: 120-240
458458
FailureInterval: 120-240
459-
ServerUpdate: 00:00
459+
ServerUpdate: 00:00, 06:00, 12:00, 18:00
460460
ShopFrequent:
461461
Scheduler:
462462
SuccessInterval: 30
@@ -583,10 +583,13 @@ OpsiScheduling:
583583
NextRun:
584584
display: hide
585585
SuccessInterval:
586+
value: 60
586587
display: hide
587588
FailureInterval:
589+
value: 60
588590
display: hide
589591
ServerUpdate:
592+
value: 00:00
590593
display: hide
591594

592595
# ==================== Tool ====================

module/config/argument/task.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ Event:
145145
- Scheduler
146146
- Campaign
147147
- StopCondition
148+
- WarArchives
148149
- Fleet
149150
- Submarine
150151
- Emotion

module/config/config_generated.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ class GeneratedConfig:
161161
PublicEmotion_FleetOnsen = False
162162

163163
# 配置组 `YukikazeTaskManager`
164-
YukikazeTaskManager_TaskPriorityAdjustment = 'Restart\n> OpsiCrossMonth\n> Commission > Tactical > Research\n> Exercise\n> Dorm > Meowfficer > Guild > Gacha\n> Reward\n> ShopFrequent > ShopOnce > Shipyard > Freebies\n> PrivateQuarters\n> OpsiExplore\n> Minigame > Awaken\n> OpsiAshBeacon\n> OpsiDaily > OpsiShop > OpsiVoucher > EventShop\n> OpsiAbyssal > OpsiStronghold > OpsiObscure > OpsiArchive\n> Daily > Hard > OpsiAshBeacon > OpsiAshAssist > OpsiMonthBoss\n> Sos > EventSp > EventA > EventB > EventC > EventD\n> RaidDaily > CoalitionSp > WarArchives > MaritimeEscort\n> IslandJuuEatery > IslandJuuCoffee > IslandGrill > IslandTeahouse > IslandRestaurant\n> IslandFarm > IslandRancher > IslandMineForest > IslandDailyGather > IslandManufacture\n> IslandAirDrop > IslandBusiness > IslandDailyOrder > IslandDailyInteract > IslandPearlSell > IslandCargoPreparation\n> Event > Event2 > Event3 > Raid > Hospital > HospitalEvent > Coalition > RaidScuttle > Main > Main2 > Main3\n> OpsiMeowfficerFarming\n> GemsFarming\n> Ambush11\n> OpsiHazard1Leveling\n> ThreeOilLowCost'
164+
YukikazeTaskManager_TaskPriorityAdjustment = 'Restart\n> OpsiCrossMonth\n> OpsiScheduling\n> Commission > Tactical > Research\n> Exercise\n> Dorm > Meowfficer > Guild > Gacha\n> Reward\n> ShopFrequent > ShopOnce > Shipyard > Freebies\n> PrivateQuarters\n> OpsiExplore\n> Minigame > Awaken\n> OpsiAshBeacon\n> OpsiDaily > OpsiShop > OpsiVoucher > EventShop\n> OpsiAbyssal > OpsiStronghold > OpsiObscure > OpsiArchive\n> Daily > Hard > OpsiAshBeacon > OpsiAshAssist > OpsiMonthBoss\n> Sos > EventSp > EventA > EventB > EventC > EventD\n> RaidDaily > CoalitionSp > WarArchives > MaritimeEscort\n> IslandJuuEatery > IslandJuuCoffee > IslandGrill > IslandTeahouse > IslandRestaurant\n> IslandFarm > IslandRancher > IslandMineForest > IslandDailyGather > IslandManufacture\n> IslandAirDrop > IslandBusiness > IslandDailyOrder > IslandDailyInteract > IslandPearlSell > IslandCargoPreparation\n> Event > Event2 > Event3 > Raid > Hospital > HospitalEvent > Coalition > RaidScuttle > Main > Main2 > Main3\n> OpsiMeowfficerFarming\n> GemsFarming\n> Ambush11\n> OpsiHazard1Leveling\n> ThreeOilLowCost'
165165

166166
# 配置组 `OneClickRetire`
167167
OneClickRetire_KeepLimitBreak = 'keep_limit_break' # keep_limit_break, do_not_keep
@@ -199,6 +199,12 @@ class GeneratedConfig:
199199
StopCondition_GetNewShip = False
200200
StopCondition_ReachLevel = 0
201201

202+
# 配置组 `WarArchives`
203+
WarArchives_DailyRunCount = 0
204+
WarArchives_DailyRunCountRemain = 0
205+
WarArchives_DailyRunCountRecord = datetime.datetime(2020, 1, 1, 0, 0)
206+
WarArchives_DailyRunCountLimit = 0
207+
202208
# 配置组 `Fleet`
203209
Fleet_Fleet1 = 1 # 1, 2, 3, 4, 5, 6
204210
Fleet_Fleet1Formation = 'double_line' # line_ahead, double_line, diamond
@@ -636,6 +642,8 @@ class GeneratedConfig:
636642
OpsiScheduling_UseSmartSchedulingOperationCoinsPreserve = True # True, False
637643
OpsiScheduling_OperationCoinsPreserve = 40000
638644
OpsiScheduling_ActionPointPreserve = 200
645+
OpsiScheduling_ActionPointEarlyTriggerEnable = True # True, False
646+
OpsiScheduling_ActionPointEarlyTriggerThreshold = 200
639647
OpsiScheduling_OperationCoinsReturnThreshold = 20000
640648
OpsiScheduling_EnableMeowfficerFarming = True # True, False
641649
OpsiScheduling_EnableObscure = False # True, False

module/config/config_updater.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,22 @@ def default_stage(t, stage):
717717

718718
if not is_template:
719719
new = self.config_redirect(old, new)
720+
old_priority = deep_get(old, 'General.YukikazeTaskManager.TaskPriorityAdjustment')
721+
new_priority = deep_get(new, 'General.YukikazeTaskManager.TaskPriorityAdjustment')
722+
template_priority = deep_get(
723+
self.args, 'General.YukikazeTaskManager.TaskPriorityAdjustment.value'
724+
)
725+
if (
726+
isinstance(old_priority, str)
727+
and 'OpsiScheduling' not in old_priority
728+
and isinstance(new_priority, str)
729+
and new_priority == old_priority
730+
and old_priority.replace(
731+
'> OpsiCrossMonth\n> Commission > Tactical > Research',
732+
'> OpsiCrossMonth\n> OpsiScheduling\n> Commission > Tactical > Research',
733+
) == template_priority
734+
):
735+
deep_set(new, 'General.YukikazeTaskManager.TaskPriorityAdjustment', template_priority)
720736
new = self._override(new)
721737

722738
return new

module/config/i18n/en-US.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,6 +1210,28 @@
12101210
"help": "Any ship below level X will stop after reaching level X\n0 means no level restriction"
12111211
}
12121212
},
1213+
"WarArchives": {
1214+
"_info": {
1215+
"name": "War Archives",
1216+
"help": ""
1217+
},
1218+
"DailyRunCount": {
1219+
"name": "Daily Sortie Count",
1220+
"help": "Maximum War Archives runs per day.\n0 means no limit.\nAfter reaching the limit, the task is delayed until the next server reset instead of being disabled."
1221+
},
1222+
"DailyRunCountRemain": {
1223+
"name": "Daily Sorties Remaining",
1224+
"help": "Today's remaining quota, maintained automatically by the script."
1225+
},
1226+
"DailyRunCountRecord": {
1227+
"name": "Daily Sortie Count Record Time",
1228+
"help": "Quota record time maintained automatically by the script, used to reset after server refresh."
1229+
},
1230+
"DailyRunCountLimit": {
1231+
"name": "Previous Daily Sortie Count",
1232+
"help": "Previous daily count setting maintained automatically by the script, used when adjusting the quota."
1233+
}
1234+
},
12131235
"Fleet": {
12141236
"_info": {
12151237
"name": "Sortie Fleet",
@@ -3281,6 +3303,16 @@
32813303
"name": "Meowfficer Farming: Preserve X Action Points",
32823304
"help": "Stop when Action Points are lower than X, and automatically open AP boxes. X includes AP in boxes. It is recommended to preserve 1000 AP for Corrosion 1 Leveling."
32833305
},
3306+
"ActionPointEarlyTriggerEnable": {
3307+
"name": "Early AP Scheduling",
3308+
"help": "Estimate current Action Points from the last Operation Siren AP snapshot and the natural recovery rate of 1 AP per 10 minutes. When the threshold is reached, run Smart Scheduling early to avoid AP overflow while higher-priority tasks such as urgent commissions are running.",
3309+
"True": "True",
3310+
"False": "False"
3311+
},
3312+
"ActionPointEarlyTriggerThreshold": {
3313+
"name": "Early Scheduling AP Threshold",
3314+
"help": "Trigger Smart Scheduling early when the estimated Action Points reach X. Default is 200, suitable for starting OS 7-1 or Meowfficer farming before AP reaches the natural cap."
3315+
},
32843316
"OperationCoinsReturnThreshold": {
32853317
"name": "Obtain X Combat Supply Vouchers",
32863318
"help": "During the yellow coin acquisition task, obtain (increase) X Combat Supply Vouchers in total, then return to Corrosion 1 Leveling."
@@ -5944,6 +5976,8 @@
59445976
"UseSmartSchedulingOperationCoinsPreserve": "Gui.OpsiScheduling.UseSmartSchedulingOperationCoinsPreserve",
59455977
"OperationCoinsPreserve": "Gui.OpsiScheduling.OperationCoinsPreserve",
59465978
"ActionPointPreserve": "Gui.OpsiScheduling.ActionPointPreserve",
5979+
"ActionPointEarlyTriggerEnable": "Early AP Scheduling",
5980+
"ActionPointEarlyTriggerThreshold": "Early Scheduling AP Threshold",
59475981
"OperationCoinsReturnThreshold": "Gui.OpsiScheduling.OperationCoinsReturnThreshold",
59485982
"EnableMeowfficerFarming": "Gui.OpsiScheduling.EnableMeowfficerFarming",
59495983
"EnableObscure": "Gui.OpsiScheduling.EnableObscure",

0 commit comments

Comments
 (0)