Opt: Delay to next server update if approaching it

This commit is contained in:
LmeSzinc 2024-05-30 20:35:59 +08:00
parent a40b9d69fd
commit df46b5d549

View File

@ -141,21 +141,26 @@ class DungeonState(UI):
limit = 60 limit = 60
# Double event is not yet finished, do it today as possible # Double event is not yet finished, do it today as possible
diff = get_server_next_update('04:00') - now() update = get_server_next_update(self.config.Scheduler_ServerUpdate)
diff = update - now()
run_double = False
if self.config.stored.DungeonDouble.relic > 0: if self.config.stored.DungeonDouble.relic > 0:
if diff < timedelta(hours=4): if diff < timedelta(hours=4):
# 4h recover 40 stamina, run double relic at today # 4h recover 40 stamina, run double relic at today
logger.info(f'Just less than 4h til the next day, ' logger.info(f'Just less than 4h til the next day, '
f'double relic event is not yet finished, wait until 40') f'double relic event is not yet finished, wait until 40')
run_double = True
limit = 40 limit = 40
if self.config.stored.DungeonDouble.calyx > 0: if self.config.stored.DungeonDouble.calyx > 0:
if diff < timedelta(hours=3): if diff < timedelta(hours=3):
logger.info(f'Just less than 3h til the next day, ' logger.info(f'Just less than 3h til the next day, '
f'double calyx event is not yet finished, wait until 10') f'double calyx event is not yet finished, wait until 10')
run_double = True
limit = 10 limit = 10
elif diff < timedelta(hours=6): elif diff < timedelta(hours=6):
logger.info(f'Just less than 6h til the next day, ' logger.info(f'Just less than 6h til the next day, '
f'double calyx event is not yet finished, wait until 30') f'double calyx event is not yet finished, wait until 30')
run_double = True
limit = 30 limit = 30
# Recover 1 trailbaze power each 6 minutes # Recover 1 trailbaze power each 6 minutes
@ -164,6 +169,11 @@ class DungeonState(UI):
future = now() + timedelta(minutes=cover) future = now() + timedelta(minutes=cover)
logger.info(f'Currently has {current} need {cover} minutes to reach {limit}') logger.info(f'Currently has {current} need {cover} minutes to reach {limit}')
# Align server update
if not run_double and update - future < timedelta(hours=2):
logger.info('Approaching next day, delay to server update instead')
future = update
# Save stamina for the next week # Save stamina for the next week
next_monday = get_server_next_monday_update('04:00') next_monday = get_server_next_monday_update('04:00')
if next_monday - future < timedelta(hours=4): if next_monday - future < timedelta(hours=4):