1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-14 08:49:24 +08:00

add: migrate NoOpsiMeowfficerFarming and NoYellowCoinLimit for OpsiHazard1Leveling

This commit is contained in:
0O0o0oOoO00
2025-09-20 22:02:16 +08:00
parent 64ac9ab9fe
commit 089095dff1
10 changed files with 115 additions and 0 deletions

View File

@@ -2585,6 +2585,8 @@
},
"OpsiHazard1Leveling": {
"HigherPriority": false,
"NoOpsiMeowfficerFarming": false,
"NoYellowCoinLimit": false,
"TargetZone": 0
},
"OpsiFleet": {

View File

@@ -16597,6 +16597,14 @@
"type": "checkbox",
"value": false
},
"NoOpsiMeowfficerFarming": {
"type": "checkbox",
"value": false
},
"NoYellowCoinLimit": {
"type": "checkbox",
"value": false
},
"TargetZone": {
"type": "select",
"value": 0,

View File

@@ -744,6 +744,8 @@ OpsiMeowfficerFarming:
value: 0
OpsiHazard1Leveling:
HigherPriority: false
NoOpsiMeowfficerFarming: false
NoYellowCoinLimit: false
TargetZone:
value: 0
option: [ 0, 44, 22 ]

View File

@@ -445,6 +445,8 @@ class GeneratedConfig:
# Group `OpsiHazard1Leveling`
OpsiHazard1Leveling_HigherPriority = False
OpsiHazard1Leveling_NoOpsiMeowfficerFarming = False
OpsiHazard1Leveling_NoYellowCoinLimit = False
OpsiHazard1Leveling_TargetZone = 0 # 0, 44, 22
# Group `Daemon`

View File

@@ -1878,6 +1878,8 @@ class FullGeneratedConfig:
OpsiHazard1Leveling_Scheduler_FailureInterval = None
OpsiHazard1Leveling_Scheduler_ServerUpdate = None
OpsiHazard1Leveling_OpsiHazard1Leveling_HigherPriority = None
OpsiHazard1Leveling_OpsiHazard1Leveling_NoOpsiMeowfficerFarming = None
OpsiHazard1Leveling_OpsiHazard1Leveling_NoYellowCoinLimit = None
OpsiHazard1Leveling_OpsiHazard1Leveling_TargetZone = None
OpsiHazard1Leveling_OpsiFleet_Fleet = None
OpsiHazard1Leveling_OpsiFleet_Submarine = None

View File

@@ -2617,6 +2617,14 @@
"name": "OpsiHazard1Leveling.HigherPriority.name",
"help": "OpsiHazard1Leveling.HigherPriority.help"
},
"NoOpsiMeowfficerFarming": {
"name": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.name",
"help": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.help"
},
"NoYellowCoinLimit": {
"name": "OpsiHazard1Leveling.NoYellowCoinLimit.name",
"help": "OpsiHazard1Leveling.NoYellowCoinLimit.help"
},
"TargetZone": {
"name": "Target Zone ID",
"help": "Only attack target zone, which can be used to avoid the event that the map cannot be refreshed due to game bug",

View File

@@ -2617,6 +2617,14 @@
"name": "OpsiHazard1Leveling.HigherPriority.name",
"help": "OpsiHazard1Leveling.HigherPriority.help"
},
"NoOpsiMeowfficerFarming": {
"name": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.name",
"help": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.help"
},
"NoYellowCoinLimit": {
"name": "OpsiHazard1Leveling.NoYellowCoinLimit.name",
"help": "OpsiHazard1Leveling.NoYellowCoinLimit.help"
},
"TargetZone": {
"name": "OpsiHazard1Leveling.TargetZone.name",
"help": "OpsiHazard1Leveling.TargetZone.help",

View File

@@ -2617,6 +2617,14 @@
"name": "更高优先级",
"help": "开启后会将优先级调整到紧急委托前面"
},
"NoOpsiMeowfficerFarming": {
"name": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.name",
"help": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.help"
},
"NoYellowCoinLimit": {
"name": "OpsiHazard1Leveling.NoYellowCoinLimit.name",
"help": "OpsiHazard1Leveling.NoYellowCoinLimit.help"
},
"TargetZone": {
"name": "指定海域",
"help": "仅出击指定的海域可以用来规避游戏BUG导致的无法刷新海域",

View File

@@ -2617,6 +2617,14 @@
"name": "OpsiHazard1Leveling.HigherPriority.name",
"help": "OpsiHazard1Leveling.HigherPriority.help"
},
"NoOpsiMeowfficerFarming": {
"name": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.name",
"help": "OpsiHazard1Leveling.NoOpsiMeowfficerFarming.help"
},
"NoYellowCoinLimit": {
"name": "OpsiHazard1Leveling.NoYellowCoinLimit.name",
"help": "OpsiHazard1Leveling.NoYellowCoinLimit.help"
},
"TargetZone": {
"name": "指定海域",
"help": "僅出擊指定的海域可以用來規避遊戲BUG導致的無法重繪海域",

View File

@@ -897,6 +897,73 @@ class OperationSiren(OSMap):
self.config.task_stop()
class OperationSiren(OperationSiren):
def os_hazard1_leveling(self):
logger.hr('OS hazard 1 leveling', level=1)
# Without these enabled, CL1 gains 0 profits
self.config.override(
OpsiGeneral_DoRandomMapEvent=True,
OpsiGeneral_AkashiShopFilter='ActionPoint',
)
full_config = self.config.full_config
no_opsi_meowfficer_farming = full_config.OpsiHazard1Leveling_OpsiHazard1Leveling_NoOpsiMeowfficerFarming
no_yellow_coin_limit = full_config.OpsiHazard1Leveling_NoYellowCoinLimit
if no_opsi_meowfficer_farming:
logger.info(f"No OpsiMeowfficerFarming is enabled in OpsiHazard1Leveling")
else:
if not self.config.is_task_enabled('OpsiMeowfficerFarming'):
self.config.cross_set(keys='OpsiMeowfficerFarming.Scheduler.Enable', value=True)
while True:
# Limited action point preserve of hazard 1 to 200
self.config.OS_ACTION_POINT_PRESERVE = 200
if self.config.is_task_enabled('OpsiAshBeacon') \
and not self._ash_fully_collected \
and self.config.OpsiAshBeacon_EnsureFullyCollected:
logger.info('Ash beacon not fully collected, ignore action point limit temporarily')
self.config.OS_ACTION_POINT_PRESERVE = 0
logger.attr('OS_ACTION_POINT_PRESERVE', self.config.OS_ACTION_POINT_PRESERVE)
if not no_yellow_coin_limit:
if self.get_yellow_coins() < self.config.OS_CL1_YELLOW_COINS_PRESERVE:
logger.info(f'Reach the limit of yellow coins, preserve={self.config.OS_CL1_YELLOW_COINS_PRESERVE}')
with self.config.multi_set():
self.config.task_delay(server_update=True)
if not self.is_in_opsi_explore():
self.config.task_call('OpsiMeowfficerFarming')
self.config.task_stop()
self.get_current_zone()
# Preset action point to 70
# When running CL1 oil is for running CL1, not meowfficer farming
keep_current_ap = True
if self.config.OpsiGeneral_BuyActionPointLimit > 0:
keep_current_ap = False
self.action_point_set(cost=70, keep_current_ap=keep_current_ap, check_rest_ap=True)
if self._action_point_total >= 3000 and not no_opsi_meowfficer_farming:
with self.config.multi_set():
self.config.task_delay(server_update=True)
if not self.is_in_opsi_explore():
self.config.task_call('OpsiMeowfficerFarming')
self.config.task_stop()
if self.config.OpsiHazard1Leveling_TargetZone != 0:
zone = self.config.OpsiHazard1Leveling_TargetZone
else:
zone = 22
logger.hr(f'OS hazard 1 leveling, zone_id={zone}', level=1)
if self.zone.zone_id != zone or not self.is_zone_name_hidden:
self.globe_goto(self.name_to_zone(zone), types='SAFE', refresh=True)
self.fleet_set(self.config.OpsiFleet_Fleet)
self.run_strategic_search()
self.handle_after_auto_search()
self.config.check_task_switch()
if __name__ == '__main__':
self = OperationSiren('month_test', task='OpsiMonthBoss')
from module.os.config import OSConfig