BIN
assets/cn/raid/KUYBYSHEY_OCR_REMAIN_EX.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/cn/raid/KUYBYSHEY_RAID_EX.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/en/raid/KUYBYSHEY_OCR_REMAIN_EX.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/en/raid/KUYBYSHEY_RAID_EX.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.5 KiB |
@ -5105,7 +5105,8 @@
|
||||
"option": [
|
||||
"easy",
|
||||
"normal",
|
||||
"hard"
|
||||
"hard",
|
||||
"ex"
|
||||
]
|
||||
},
|
||||
"UseTicket": {
|
||||
|
@ -251,7 +251,7 @@ EventDaily:
|
||||
Raid:
|
||||
Mode:
|
||||
value: hard
|
||||
option: [ easy, normal, hard ]
|
||||
option: [ easy, normal, hard, ex ]
|
||||
UseTicket: false
|
||||
RaidDaily:
|
||||
StageFilter: |-
|
||||
|
@ -260,7 +260,6 @@ OpsiAbyssal:
|
||||
- OpsiFleetFilter
|
||||
OpsiArchive:
|
||||
- Scheduler
|
||||
- OpsiArchive
|
||||
- OpsiFleet
|
||||
OpsiStronghold:
|
||||
- Scheduler
|
||||
|
@ -166,7 +166,7 @@ class GeneratedConfig:
|
||||
EventDaily_LastStage = 0
|
||||
|
||||
# Group `Raid`
|
||||
Raid_Mode = 'hard' # easy, normal, hard
|
||||
Raid_Mode = 'hard' # easy, normal, hard, ex
|
||||
Raid_UseTicket = False
|
||||
|
||||
# Group `RaidDaily`
|
||||
|
@ -1151,7 +1151,8 @@
|
||||
"help": "",
|
||||
"easy": "easy",
|
||||
"normal": "normal",
|
||||
"hard": "hard"
|
||||
"hard": "hard",
|
||||
"ex": "ex"
|
||||
},
|
||||
"UseTicket": {
|
||||
"name": "Use Ticket(s)",
|
||||
@ -1165,7 +1166,7 @@
|
||||
},
|
||||
"StageFilter": {
|
||||
"name": "Raid Daily Stage Filter",
|
||||
"help": "Generally does not need to be modified or re-arranged but can do so if desired\nCan save on oil consumption if less are attacked"
|
||||
"help": "Generally does not need to be modified or re-arranged but can do so if desired\nCan save on oil consumption if less are attacked\n'EX' difficulty is supported, submarine is force called if specified to increase clearing rate"
|
||||
}
|
||||
},
|
||||
"MaritimeEscort": {
|
||||
|
@ -1151,7 +1151,8 @@
|
||||
"help": "Raid.Mode.help",
|
||||
"easy": "easy",
|
||||
"normal": "normal",
|
||||
"hard": "hard"
|
||||
"hard": "hard",
|
||||
"ex": "ex"
|
||||
},
|
||||
"UseTicket": {
|
||||
"name": "Raid.UseTicket.name",
|
||||
|
@ -1151,7 +1151,8 @@
|
||||
"help": "",
|
||||
"easy": "简单",
|
||||
"normal": "普通",
|
||||
"hard": "困难"
|
||||
"hard": "困难",
|
||||
"ex": "ex"
|
||||
},
|
||||
"UseTicket": {
|
||||
"name": "使用演习券",
|
||||
|
@ -1151,7 +1151,8 @@
|
||||
"help": "",
|
||||
"easy": "簡單",
|
||||
"normal": "普通",
|
||||
"hard": "困難"
|
||||
"hard": "困難",
|
||||
"ex": "ex"
|
||||
},
|
||||
"UseTicket": {
|
||||
"name": "使用演習券",
|
||||
|
@ -46,6 +46,8 @@ class GuildCombat(Combat):
|
||||
"""
|
||||
if self.is_combat_executing():
|
||||
return False
|
||||
if super().handle_exp_info():
|
||||
return True
|
||||
if self.appear_then_click(EXP_INFO_CF):
|
||||
self.device.sleep((0.25, 0.5))
|
||||
return True
|
||||
|
@ -32,9 +32,11 @@ IRIS_RAID_HARD = Button(area={'cn': (1089, 302, 1143, 329), 'en': (1093, 305, 11
|
||||
IRIS_RAID_NORMAL = Button(area={'cn': (1052, 403, 1107, 430), 'en': (1023, 406, 1115, 426), 'jp': (1047, 405, 1102, 431), 'tw': (1052, 403, 1107, 430)}, color={'cn': (101, 100, 97), 'en': (82, 81, 79), 'jp': (90, 90, 87), 'tw': (101, 100, 97)}, button={'cn': (1052, 403, 1107, 430), 'en': (1023, 406, 1115, 426), 'jp': (1047, 405, 1102, 431), 'tw': (1052, 403, 1107, 430)}, file={'cn': './assets/cn/raid/IRIS_RAID_NORMAL.png', 'en': './assets/en/raid/IRIS_RAID_NORMAL.png', 'jp': './assets/jp/raid/IRIS_RAID_NORMAL.png', 'tw': './assets/cn/raid/IRIS_RAID_NORMAL.png'})
|
||||
KUYBYSHEY_OCR_PT = Button(area={'cn': (1180, 606, 1280, 634), 'en': (1180, 606, 1280, 634), 'jp': (1180, 606, 1280, 634), 'tw': (1180, 606, 1280, 634)}, color={'cn': (120, 140, 155), 'en': (120, 140, 155), 'jp': (120, 140, 155), 'tw': (120, 140, 155)}, button={'cn': (1180, 606, 1280, 634), 'en': (1180, 606, 1280, 634), 'jp': (1180, 606, 1280, 634), 'tw': (1180, 606, 1280, 634)}, file={'cn': './assets/cn/raid/KUYBYSHEY_OCR_PT.png', 'en': './assets/en/raid/KUYBYSHEY_OCR_PT.png', 'jp': './assets/jp/raid/KUYBYSHEY_OCR_PT.png', 'tw': './assets/cn/raid/KUYBYSHEY_OCR_PT.png'})
|
||||
KUYBYSHEY_OCR_REMAIN_EASY = Button(area={'cn': (1138, 504, 1198, 528), 'en': (1138, 504, 1198, 528), 'jp': (1138, 504, 1198, 528), 'tw': (1138, 504, 1198, 528)}, color={'cn': (82, 91, 105), 'en': (82, 91, 105), 'jp': (82, 91, 105), 'tw': (82, 91, 105)}, button={'cn': (1138, 504, 1198, 528), 'en': (1138, 504, 1198, 528), 'jp': (1138, 504, 1198, 528), 'tw': (1138, 504, 1198, 528)}, file={'cn': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_EASY.png', 'en': './assets/en/raid/KUYBYSHEY_OCR_REMAIN_EASY.png', 'jp': './assets/jp/raid/KUYBYSHEY_OCR_REMAIN_EASY.png', 'tw': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_EASY.png'})
|
||||
KUYBYSHEY_OCR_REMAIN_EX = Button(area={'cn': (1103, 17, 1151, 41), 'en': (1103, 17, 1151, 41), 'jp': (1103, 17, 1151, 41), 'tw': (1103, 17, 1151, 41)}, color={'cn': (53, 59, 71), 'en': (53, 59, 71), 'jp': (53, 59, 71), 'tw': (53, 59, 71)}, button={'cn': (1103, 17, 1151, 41), 'en': (1103, 17, 1151, 41), 'jp': (1103, 17, 1151, 41), 'tw': (1103, 17, 1151, 41)}, file={'cn': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_EX.png', 'en': './assets/en/raid/KUYBYSHEY_OCR_REMAIN_EX.png', 'jp': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_EX.png', 'tw': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_EX.png'})
|
||||
KUYBYSHEY_OCR_REMAIN_HARD = Button(area={'cn': (1138, 347, 1198, 371), 'en': (1138, 347, 1198, 371), 'jp': (1138, 347, 1198, 371), 'tw': (1138, 347, 1198, 371)}, color={'cn': (82, 91, 105), 'en': (82, 91, 105), 'jp': (82, 91, 105), 'tw': (82, 91, 105)}, button={'cn': (1138, 347, 1198, 371), 'en': (1138, 347, 1198, 371), 'jp': (1138, 347, 1198, 371), 'tw': (1138, 347, 1198, 371)}, file={'cn': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_HARD.png', 'en': './assets/en/raid/KUYBYSHEY_OCR_REMAIN_HARD.png', 'jp': './assets/jp/raid/KUYBYSHEY_OCR_REMAIN_HARD.png', 'tw': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_HARD.png'})
|
||||
KUYBYSHEY_OCR_REMAIN_NORMAL = Button(area={'cn': (1107, 426, 1167, 450), 'en': (1107, 426, 1167, 450), 'jp': (1107, 426, 1167, 450), 'tw': (1107, 426, 1167, 450)}, color={'cn': (82, 91, 105), 'en': (82, 91, 105), 'jp': (82, 91, 105), 'tw': (82, 91, 105)}, button={'cn': (1107, 426, 1167, 450), 'en': (1107, 426, 1167, 450), 'jp': (1107, 426, 1167, 450), 'tw': (1107, 426, 1167, 450)}, file={'cn': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_NORMAL.png', 'en': './assets/en/raid/KUYBYSHEY_OCR_REMAIN_NORMAL.png', 'jp': './assets/jp/raid/KUYBYSHEY_OCR_REMAIN_NORMAL.png', 'tw': './assets/cn/raid/KUYBYSHEY_OCR_REMAIN_NORMAL.png'})
|
||||
KUYBYSHEY_RAID_EASY = Button(area={'cn': (1073, 503, 1124, 529), 'en': (1073, 502, 1124, 529), 'jp': (1078, 506, 1121, 527), 'tw': (1073, 503, 1124, 529)}, color={'cn': (84, 93, 107), 'en': (68, 77, 92), 'jp': (124, 133, 146), 'tw': (84, 93, 107)}, button={'cn': (1073, 503, 1124, 529), 'en': (1073, 502, 1124, 529), 'jp': (1078, 506, 1121, 527), 'tw': (1073, 503, 1124, 529)}, file={'cn': './assets/cn/raid/KUYBYSHEY_RAID_EASY.png', 'en': './assets/en/raid/KUYBYSHEY_RAID_EASY.png', 'jp': './assets/jp/raid/KUYBYSHEY_RAID_EASY.png', 'tw': './assets/cn/raid/KUYBYSHEY_RAID_EASY.png'})
|
||||
KUYBYSHEY_RAID_EX = Button(area={'cn': (1082, 189, 1146, 217), 'en': (1082, 189, 1146, 217), 'jp': (1082, 189, 1146, 217), 'tw': (1082, 189, 1146, 217)}, color={'cn': (160, 174, 191), 'en': (160, 174, 191), 'jp': (160, 174, 191), 'tw': (160, 174, 191)}, button={'cn': (1082, 189, 1146, 217), 'en': (1082, 189, 1146, 217), 'jp': (1082, 189, 1146, 217), 'tw': (1082, 189, 1146, 217)}, file={'cn': './assets/cn/raid/KUYBYSHEY_RAID_EX.png', 'en': './assets/en/raid/KUYBYSHEY_RAID_EX.png', 'jp': './assets/cn/raid/KUYBYSHEY_RAID_EX.png', 'tw': './assets/cn/raid/KUYBYSHEY_RAID_EX.png'})
|
||||
KUYBYSHEY_RAID_HARD = Button(area={'cn': (1073, 345, 1125, 371), 'en': (1074, 344, 1125, 372), 'jp': (1064, 348, 1127, 369), 'tw': (1073, 345, 1125, 371)}, color={'cn': (91, 100, 114), 'en': (84, 93, 107), 'jp': (85, 94, 108), 'tw': (91, 100, 114)}, button={'cn': (1073, 345, 1125, 371), 'en': (1074, 344, 1125, 372), 'jp': (1064, 348, 1127, 369), 'tw': (1073, 345, 1125, 371)}, file={'cn': './assets/cn/raid/KUYBYSHEY_RAID_HARD.png', 'en': './assets/en/raid/KUYBYSHEY_RAID_HARD.png', 'jp': './assets/jp/raid/KUYBYSHEY_RAID_HARD.png', 'tw': './assets/cn/raid/KUYBYSHEY_RAID_HARD.png'})
|
||||
KUYBYSHEY_RAID_NORMAL = Button(area={'cn': (1045, 423, 1097, 451), 'en': (1036, 424, 1099, 449), 'jp': (1048, 427, 1091, 448), 'tw': (1045, 423, 1097, 451)}, color={'cn': (86, 95, 109), 'en': (81, 92, 105), 'jp': (131, 143, 154), 'tw': (86, 95, 109)}, button={'cn': (1045, 423, 1097, 451), 'en': (1036, 424, 1099, 449), 'jp': (1048, 427, 1091, 448), 'tw': (1045, 423, 1097, 451)}, file={'cn': './assets/cn/raid/KUYBYSHEY_RAID_NORMAL.png', 'en': './assets/en/raid/KUYBYSHEY_RAID_NORMAL.png', 'jp': './assets/jp/raid/KUYBYSHEY_RAID_NORMAL.png', 'tw': './assets/cn/raid/KUYBYSHEY_RAID_NORMAL.png'})
|
||||
RAID_FLEET_PREPARATION = Button(area={'cn': (983, 577, 1181, 638), 'en': (1041, 592, 1121, 631), 'jp': (983, 579, 1180, 635), 'tw': (983, 577, 1181, 638)}, color={'cn': (236, 188, 115), 'en': (236, 184, 117), 'jp': (235, 183, 103), 'tw': (236, 188, 115)}, button={'cn': (983, 577, 1181, 638), 'en': (1041, 592, 1121, 631), 'jp': (983, 579, 1180, 635), 'tw': (983, 577, 1181, 638)}, file={'cn': './assets/cn/raid/RAID_FLEET_PREPARATION.png', 'en': './assets/en/raid/RAID_FLEET_PREPARATION.png', 'jp': './assets/jp/raid/RAID_FLEET_PREPARATION.png', 'tw': './assets/tw/raid/RAID_FLEET_PREPARATION.png'})
|
||||
|
55
module/raid/combat.py
Normal file
@ -0,0 +1,55 @@
|
||||
from module.combat.combat import Combat
|
||||
from module.guild.assets import BATTLE_STATUS_CF, EXP_INFO_CF
|
||||
|
||||
|
||||
class RaidCombat(Combat):
|
||||
def handle_battle_status(self, drop=None):
|
||||
"""
|
||||
Args:
|
||||
drop (DropImage):
|
||||
|
||||
Returns:
|
||||
bool:
|
||||
"""
|
||||
if self.is_combat_executing():
|
||||
return False
|
||||
if super().handle_battle_status(drop=drop):
|
||||
return True
|
||||
if self.appear(BATTLE_STATUS_CF, interval=self.battle_status_click_interval):
|
||||
if drop:
|
||||
drop.handle_add(self)
|
||||
else:
|
||||
self.device.sleep((0.25, 0.5))
|
||||
self.device.click(BATTLE_STATUS_CF)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def handle_get_items(self, drop=None):
|
||||
"""
|
||||
Args:
|
||||
drop (DropImage):
|
||||
|
||||
Returns:
|
||||
bool:
|
||||
"""
|
||||
if super().handle_get_items(drop=drop):
|
||||
self.interval_reset(BATTLE_STATUS_CF)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def handle_exp_info(self):
|
||||
"""
|
||||
Returns:
|
||||
bool:
|
||||
"""
|
||||
if self.is_combat_executing():
|
||||
return False
|
||||
if super().handle_exp_info():
|
||||
return True
|
||||
if self.appear_then_click(EXP_INFO_CF):
|
||||
self.device.sleep((0.25, 0.5))
|
||||
return True
|
||||
|
||||
return False
|
@ -1,10 +1,9 @@
|
||||
import re
|
||||
|
||||
from module.base.filter import Filter
|
||||
from module.base.timer import Timer
|
||||
from module.logger import logger
|
||||
from module.raid.raid import raid_ocr
|
||||
from module.raid.run import RaidRun
|
||||
from module.reward.reward import Reward
|
||||
from module.ui.page import page_raid
|
||||
|
||||
|
||||
@ -21,38 +20,6 @@ STAGE_FILTER = Filter(regex=re.compile('(\w+)'), attr=['name'])
|
||||
|
||||
|
||||
class RaidDaily(RaidRun):
|
||||
def get_remain(self, mode, skip_first_screenshot=True):
|
||||
"""
|
||||
Args:
|
||||
mode (str): easy, normal, hard
|
||||
skip_first_screenshot (bool):
|
||||
|
||||
Returns:
|
||||
int:
|
||||
"""
|
||||
confirm_timer = Timer(0.3, count=0)
|
||||
prev = 30
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
ocr = raid_ocr(raid=self.config.Campaign_Event, mode=mode)
|
||||
remain, _, _ = ocr.ocr(self.device.image)
|
||||
logger.attr(f'{mode.capitalize()} Remain', remain)
|
||||
|
||||
# End
|
||||
if remain == prev:
|
||||
if confirm_timer.reached():
|
||||
break
|
||||
else:
|
||||
confirm_timer.reset()
|
||||
|
||||
prev = remain
|
||||
|
||||
return remain
|
||||
|
||||
def run(self, name=''):
|
||||
"""
|
||||
Args:
|
||||
@ -74,4 +41,20 @@ class RaidDaily(RaidRun):
|
||||
break
|
||||
super().run(name=name, mode=mode, total=1)
|
||||
|
||||
# If configured for EX, always do last
|
||||
# So does not use stage filtering
|
||||
stages = [stage.lower().strip()\
|
||||
for stage in\
|
||||
self.config.RaidDaily_StageFilter.split('>')]
|
||||
if 'ex' in stages:
|
||||
# Collect raid tickets from clearing
|
||||
# any difficulty 5+ and 10+ times
|
||||
self.ui_goto_main()
|
||||
Reward(self.config, self.device).reward_mission(
|
||||
daily=self.config.Reward_CollectMission,
|
||||
weekly=False)
|
||||
|
||||
logger.hr('ex', level=1)
|
||||
super().run(name=name, mode='ex', total=self.get_remain('ex'))
|
||||
|
||||
self.config.task_delay(server_update=True)
|
||||
|
@ -5,12 +5,12 @@ from module.base.decorator import run_once
|
||||
from module.base.timer import Timer
|
||||
from module.campaign.campaign_event import CampaignEvent
|
||||
from module.combat.assets import *
|
||||
from module.combat.combat import Combat
|
||||
from module.exception import ScriptError
|
||||
from module.logger import logger
|
||||
from module.map.map_operation import MapOperation
|
||||
from module.ocr.ocr import Digit, DigitCounter
|
||||
from module.raid.assets import *
|
||||
from module.raid.combat import RaidCombat
|
||||
from module.ui.assets import RAID_CHECK
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ def raid_ocr(raid, mode):
|
||||
"""
|
||||
Args:
|
||||
raid (str): Raid name, such as raid_20200624, raid_20210708.
|
||||
mode (str): easy, normal, hard
|
||||
mode (str): easy, normal, hard, ex
|
||||
|
||||
Returns:
|
||||
DigitCounter:
|
||||
@ -98,7 +98,10 @@ def raid_ocr(raid, mode):
|
||||
elif raid == "ALBION":
|
||||
return DigitCounter(button, letter=(99, 73, 57), threshold=128)
|
||||
elif raid == 'KUYBYSHEY':
|
||||
return DigitCounter(button, letter=(231, 239, 247), threshold=128)
|
||||
if mode == 'ex':
|
||||
return Digit(button, letter=(189, 203, 214), threshold=128)
|
||||
else:
|
||||
return DigitCounter(button, letter=(231, 239, 247), threshold=128)
|
||||
except KeyError:
|
||||
raise ScriptError(f'Raid entrance asset not exists: {key}')
|
||||
|
||||
@ -126,7 +129,7 @@ def pt_ocr(raid):
|
||||
return None
|
||||
|
||||
|
||||
class Raid(MapOperation, Combat, CampaignEvent):
|
||||
class Raid(MapOperation, RaidCombat, CampaignEvent):
|
||||
def combat_preparation(self, balance_hp=False, emotion_reduce=False, auto=True, fleet_index=1):
|
||||
"""
|
||||
Args:
|
||||
@ -246,10 +249,21 @@ class Raid(MapOperation, Combat, CampaignEvent):
|
||||
Campaign_UseAutoSearch=False,
|
||||
Fleet_FleetOrder='fleet1_all_fleet2_standby'
|
||||
)
|
||||
|
||||
if mode == 'ex':
|
||||
backup = self.config.temporary(
|
||||
Submarine_Fleet=1,
|
||||
Submarine_Mode='every_combat'
|
||||
)
|
||||
|
||||
self.emotion.check_reduce(1)
|
||||
|
||||
self.raid_enter(mode=mode, raid=raid)
|
||||
self.combat(balance_hp=False, expected_end=self.raid_expected_end)
|
||||
|
||||
if mode == 'ex':
|
||||
backup.recover()
|
||||
|
||||
logger.hr('Raid End')
|
||||
|
||||
def get_event_pt(self):
|
||||
|
@ -1,7 +1,8 @@
|
||||
from module.base.timer import Timer
|
||||
from module.campaign.campaign_event import CampaignEvent
|
||||
from module.exception import ScriptEnd, ScriptError
|
||||
from module.logger import logger
|
||||
from module.raid.raid import OilExhausted, Raid
|
||||
from module.raid.raid import OilExhausted, Raid, raid_ocr
|
||||
from module.ui.page import page_raid
|
||||
|
||||
|
||||
@ -23,6 +24,42 @@ class RaidRun(Raid, CampaignEvent):
|
||||
|
||||
return False
|
||||
|
||||
def get_remain(self, mode, skip_first_screenshot=True):
|
||||
"""
|
||||
Args:
|
||||
mode (str): easy, normal, hard, ex
|
||||
skip_first_screenshot (bool):
|
||||
|
||||
Returns:
|
||||
int:
|
||||
"""
|
||||
confirm_timer = Timer(0.3, count=0)
|
||||
prev = 30
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
ocr = raid_ocr(raid=self.config.Campaign_Event, mode=mode)
|
||||
result = ocr.ocr(self.device.image)
|
||||
if mode == 'ex':
|
||||
remain = result
|
||||
else:
|
||||
remain, _, _ = result
|
||||
logger.attr(f'{mode.capitalize()} Remain', remain)
|
||||
|
||||
# End
|
||||
if remain == prev:
|
||||
if confirm_timer.reached():
|
||||
break
|
||||
else:
|
||||
confirm_timer.reset()
|
||||
|
||||
prev = remain
|
||||
|
||||
return remain
|
||||
|
||||
def run(self, name='', mode='', total=0):
|
||||
"""
|
||||
Args:
|
||||
@ -58,6 +95,13 @@ class RaidRun(Raid, CampaignEvent):
|
||||
# UI ensure
|
||||
self.ui_ensure(page_raid)
|
||||
|
||||
# End for mode EX
|
||||
if mode == 'ex':
|
||||
if not self.get_remain(mode):
|
||||
logger.info('Triggered stop condition: Zero '
|
||||
'raid tickets to do EX mode')
|
||||
break
|
||||
|
||||
# Run
|
||||
try:
|
||||
self.raid_execute_once(mode=mode, raid=name)
|
||||
@ -77,6 +121,6 @@ class RaidRun(Raid, CampaignEvent):
|
||||
# End
|
||||
if self.triggered_stop_condition():
|
||||
break
|
||||
# Scheduler
|
||||
## Scheduler
|
||||
if self.config.task_switched():
|
||||
self.config.task_stop()
|
||||
|
@ -12,9 +12,9 @@ SHIPYARD_IN_FATE = Button(area={'cn': (924, 122, 1025, 146), 'en': (924, 124, 11
|
||||
SHIPYARD_LEVEL_NOT_ENOUGH_DEV = Button(area={'cn': (1230, 155, 1273, 171), 'en': (1104, 149, 1273, 159), 'jp': (1230, 155, 1273, 171), 'tw': (1230, 155, 1273, 171)}, color={'cn': (125, 142, 174), 'en': (162, 166, 181), 'jp': (125, 142, 174), 'tw': (125, 142, 174)}, button={'cn': (1230, 155, 1273, 171), 'en': (1104, 149, 1273, 159), 'jp': (1230, 155, 1273, 171), 'tw': (1230, 155, 1273, 171)}, file={'cn': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png', 'tw': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_DEV.png'})
|
||||
SHIPYARD_LEVEL_NOT_ENOUGH_FATE = Button(area={'cn': (1019, 155, 1276, 199), 'en': (1021, 160, 1151, 174), 'jp': (1019, 155, 1276, 199), 'tw': (1019, 155, 1276, 199)}, color={'cn': (63, 42, 41), 'en': (88, 88, 90), 'jp': (63, 42, 41), 'tw': (63, 42, 41)}, button={'cn': (1019, 155, 1276, 199), 'en': (1021, 160, 1151, 174), 'jp': (1019, 155, 1276, 199), 'tw': (1019, 155, 1276, 199)}, file={'cn': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png', 'tw': './assets/cn/shipyard/SHIPYARD_LEVEL_NOT_ENOUGH_FATE.png'})
|
||||
SHIPYARD_MINUS_DEV = Button(area={'cn': (1049, 429, 1084, 463), 'en': (1051, 431, 1081, 461), 'jp': (1049, 429, 1084, 463), 'tw': (1049, 429, 1084, 463)}, color={'cn': (73, 126, 194), 'en': (76, 127, 195), 'jp': (73, 126, 194), 'tw': (73, 126, 194)}, button={'cn': (1049, 429, 1084, 463), 'en': (1051, 431, 1081, 461), 'jp': (1049, 429, 1084, 463), 'tw': (1049, 429, 1084, 463)}, file={'cn': './assets/cn/shipyard/SHIPYARD_MINUS_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_MINUS_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_MINUS_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_MINUS_DEV.png'})
|
||||
SHIPYARD_MINUS_FATE = Button(area={'cn': (1028, 453, 1063, 487), 'en': (1031, 461, 1067, 497), 'jp': (1028, 453, 1063, 487), 'tw': (1028, 453, 1063, 487)}, color={'cn': (72, 125, 193), 'en': (76, 127, 195), 'jp': (72, 125, 193), 'tw': (72, 125, 193)}, button={'cn': (1028, 453, 1063, 487), 'en': (1031, 461, 1067, 497), 'jp': (1028, 453, 1063, 487), 'tw': (1028, 453, 1063, 487)}, file={'cn': './assets/cn/shipyard/SHIPYARD_MINUS_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_MINUS_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_MINUS_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_MINUS_FATE.png'})
|
||||
SHIPYARD_MINUS_FATE = Button(area={'cn': (1028, 453, 1063, 487), 'en': (1031, 450, 1067, 486), 'jp': (1028, 453, 1063, 487), 'tw': (1028, 453, 1063, 487)}, color={'cn': (72, 125, 193), 'en': (76, 127, 195), 'jp': (72, 125, 193), 'tw': (72, 125, 193)}, button={'cn': (1028, 453, 1063, 487), 'en': (1031, 450, 1067, 486), 'jp': (1028, 453, 1063, 487), 'tw': (1028, 453, 1063, 487)}, file={'cn': './assets/cn/shipyard/SHIPYARD_MINUS_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_MINUS_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_MINUS_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_MINUS_FATE.png'})
|
||||
SHIPYARD_PLUS_DEV = Button(area={'cn': (1149, 429, 1184, 462), 'en': (1151, 431, 1181, 461), 'jp': (1149, 429, 1184, 462), 'tw': (1149, 429, 1184, 462)}, color={'cn': (79, 130, 197), 'en': (83, 132, 199), 'jp': (79, 130, 197), 'tw': (79, 130, 197)}, button={'cn': (1149, 429, 1184, 462), 'en': (1151, 431, 1181, 461), 'jp': (1149, 429, 1184, 462), 'tw': (1149, 429, 1184, 462)}, file={'cn': './assets/cn/shipyard/SHIPYARD_PLUS_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_PLUS_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_PLUS_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_PLUS_DEV.png'})
|
||||
SHIPYARD_PLUS_FATE = Button(area={'cn': (1129, 453, 1164, 487), 'en': (1198, 461, 1234, 497), 'jp': (1129, 453, 1164, 487), 'tw': (1129, 453, 1164, 487)}, color={'cn': (80, 130, 198), 'en': (82, 128, 192), 'jp': (80, 130, 198), 'tw': (80, 130, 198)}, button={'cn': (1129, 453, 1164, 487), 'en': (1198, 461, 1234, 497), 'jp': (1129, 453, 1164, 487), 'tw': (1129, 453, 1164, 487)}, file={'cn': './assets/cn/shipyard/SHIPYARD_PLUS_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_PLUS_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_PLUS_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_PLUS_FATE.png'})
|
||||
SHIPYARD_PLUS_FATE = Button(area={'cn': (1129, 453, 1164, 487), 'en': (1198, 449, 1234, 485), 'jp': (1129, 453, 1164, 487), 'tw': (1129, 453, 1164, 487)}, color={'cn': (80, 130, 198), 'en': (86, 133, 200), 'jp': (80, 130, 198), 'tw': (80, 130, 198)}, button={'cn': (1129, 453, 1164, 487), 'en': (1198, 449, 1234, 485), 'jp': (1129, 453, 1164, 487), 'tw': (1129, 453, 1164, 487)}, file={'cn': './assets/cn/shipyard/SHIPYARD_PLUS_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_PLUS_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_PLUS_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_PLUS_FATE.png'})
|
||||
SHIPYARD_PROGRESS_DEV = Button(area={'cn': (1184, 145, 1273, 175), 'en': (1184, 145, 1273, 175), 'jp': (1211, 149, 1274, 175), 'tw': (1184, 145, 1273, 175)}, color={'cn': (80, 97, 142), 'en': (80, 97, 142), 'jp': (97, 119, 165), 'tw': (80, 97, 142)}, button={'cn': (1184, 145, 1273, 175), 'en': (1184, 145, 1273, 175), 'jp': (1211, 149, 1274, 175), 'tw': (1184, 145, 1273, 175)}, file={'cn': './assets/cn/shipyard/SHIPYARD_PROGRESS_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_PROGRESS_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_PROGRESS_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_PROGRESS_DEV.png'})
|
||||
SHIPYARD_PROGRESS_FATE = Button(area={'cn': (1141, 153, 1278, 190), 'en': (1141, 153, 1278, 190), 'jp': (1189, 151, 1267, 188), 'tw': (1141, 153, 1278, 190)}, color={'cn': (82, 85, 89), 'en': (82, 85, 89), 'jp': (120, 121, 125), 'tw': (82, 85, 89)}, button={'cn': (1141, 153, 1278, 190), 'en': (1141, 153, 1278, 190), 'jp': (1189, 151, 1267, 188), 'tw': (1141, 153, 1278, 190)}, file={'cn': './assets/cn/shipyard/SHIPYARD_PROGRESS_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_PROGRESS_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_PROGRESS_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_PROGRESS_FATE.png'})
|
||||
SHIPYARD_RESEARCH_COMPLETE = Button(area={'cn': (548, 498, 740, 531), 'en': (548, 498, 740, 531), 'jp': (536, 494, 731, 538), 'tw': (548, 498, 740, 531)}, color={'cn': (214, 142, 124), 'en': (214, 142, 124), 'jp': (208, 120, 95), 'tw': (214, 142, 124)}, button={'cn': (548, 498, 740, 531), 'en': (548, 498, 740, 531), 'jp': (536, 494, 731, 538), 'tw': (548, 498, 740, 531)}, file={'cn': './assets/cn/shipyard/SHIPYARD_RESEARCH_COMPLETE.png', 'en': './assets/en/shipyard/SHIPYARD_RESEARCH_COMPLETE.png', 'jp': './assets/jp/shipyard/SHIPYARD_RESEARCH_COMPLETE.png', 'tw': './assets/tw/shipyard/SHIPYARD_RESEARCH_COMPLETE.png'})
|
||||
@ -23,4 +23,4 @@ SHIPYARD_RESEARCH_IN_PROGRESS = Button(area={'cn': (465, 479, 482, 501), 'en': (
|
||||
SHIPYARD_SERIES_SELECT_CHECK = Button(area={'cn': (565, 194, 715, 212), 'en': (565, 194, 715, 212), 'jp': (565, 194, 715, 212), 'tw': (565, 194, 715, 212)}, color={'cn': (18, 28, 56), 'en': (18, 28, 56), 'jp': (18, 28, 56), 'tw': (18, 28, 56)}, button={'cn': (565, 194, 715, 212), 'en': (565, 194, 715, 212), 'jp': (565, 194, 715, 212), 'tw': (565, 194, 715, 212)}, file={'cn': './assets/cn/shipyard/SHIPYARD_SERIES_SELECT_CHECK.png', 'en': './assets/en/shipyard/SHIPYARD_SERIES_SELECT_CHECK.png', 'jp': './assets/jp/shipyard/SHIPYARD_SERIES_SELECT_CHECK.png', 'tw': './assets/tw/shipyard/SHIPYARD_SERIES_SELECT_CHECK.png'})
|
||||
SHIPYARD_SERIES_SELECT_ENTER = Button(area={'cn': (33, 659, 161, 701), 'en': (34, 659, 160, 700), 'jp': (36, 674, 154, 696), 'tw': (33, 657, 157, 697)}, color={'cn': (91, 110, 155), 'en': (66, 87, 138), 'jp': (112, 126, 161), 'tw': (98, 117, 164)}, button={'cn': (33, 659, 161, 701), 'en': (34, 659, 160, 700), 'jp': (36, 674, 154, 696), 'tw': (33, 657, 157, 697)}, file={'cn': './assets/cn/shipyard/SHIPYARD_SERIES_SELECT_ENTER.png', 'en': './assets/en/shipyard/SHIPYARD_SERIES_SELECT_ENTER.png', 'jp': './assets/jp/shipyard/SHIPYARD_SERIES_SELECT_ENTER.png', 'tw': './assets/tw/shipyard/SHIPYARD_SERIES_SELECT_ENTER.png'})
|
||||
SHIPYARD_TOTAL_DEV = Button(area={'cn': (1086, 429, 1147, 463), 'en': (1091, 426, 1142, 466), 'jp': (1086, 429, 1147, 463), 'tw': (1086, 429, 1147, 463)}, color={'cn': (39, 46, 55), 'en': (45, 48, 55), 'jp': (39, 46, 55), 'tw': (39, 46, 55)}, button={'cn': (1086, 429, 1147, 463), 'en': (1091, 426, 1142, 466), 'jp': (1086, 429, 1147, 463), 'tw': (1086, 429, 1147, 463)}, file={'cn': './assets/cn/shipyard/SHIPYARD_TOTAL_DEV.png', 'en': './assets/en/shipyard/SHIPYARD_TOTAL_DEV.png', 'jp': './assets/jp/shipyard/SHIPYARD_TOTAL_DEV.png', 'tw': './assets/tw/shipyard/SHIPYARD_TOTAL_DEV.png'})
|
||||
SHIPYARD_TOTAL_FATE = Button(area={'cn': (1067, 457, 1126, 484), 'en': (1108, 462, 1158, 497), 'jp': (1067, 457, 1126, 484), 'tw': (1067, 457, 1126, 484)}, color={'cn': (43, 50, 59), 'en': (51, 58, 66), 'jp': (43, 50, 59), 'tw': (43, 50, 59)}, button={'cn': (1067, 457, 1126, 484), 'en': (1108, 462, 1158, 497), 'jp': (1067, 457, 1126, 484), 'tw': (1067, 457, 1126, 484)}, file={'cn': './assets/cn/shipyard/SHIPYARD_TOTAL_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_TOTAL_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_TOTAL_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_TOTAL_FATE.png'})
|
||||
SHIPYARD_TOTAL_FATE = Button(area={'cn': (1067, 457, 1126, 484), 'en': (1100, 449, 1165, 486), 'jp': (1067, 457, 1126, 484), 'tw': (1067, 457, 1126, 484)}, color={'cn': (43, 50, 59), 'en': (47, 51, 59), 'jp': (43, 50, 59), 'tw': (43, 50, 59)}, button={'cn': (1067, 457, 1126, 484), 'en': (1100, 449, 1165, 486), 'jp': (1067, 457, 1126, 484), 'tw': (1067, 457, 1126, 484)}, file={'cn': './assets/cn/shipyard/SHIPYARD_TOTAL_FATE.png', 'en': './assets/en/shipyard/SHIPYARD_TOTAL_FATE.png', 'jp': './assets/jp/shipyard/SHIPYARD_TOTAL_FATE.png', 'tw': './assets/tw/shipyard/SHIPYARD_TOTAL_FATE.png'})
|
||||
|