1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-09 18:39:04 +08:00
This commit is contained in:
GH Action - Upstream Sync 2025-05-26 16:27:02 +00:00
commit 88bbd62ff3
5 changed files with 130 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -165,10 +165,10 @@ class Retirement(Enhancement, QuickRetireSettingHandler):
continue continue
# Equip confirm # Equip confirm
if self.appear_then_click(EQUIP_CONFIRM, offset=(30, 30), interval=2): if self.appear_then_click(EQUIP_CONFIRM, offset=(30, 30), interval=2):
executed = True
continue continue
if self.appear_then_click(EQUIP_CONFIRM_2, offset=(30, 30), interval=2): if self.appear_then_click(EQUIP_CONFIRM_2, offset=(30, 30), interval=2):
self.interval_clear(GET_ITEMS_1) self.interval_clear(GET_ITEMS_1)
executed = True
continue continue
# Get items # Get items
if self.appear(GET_ITEMS_1, offset=(30, 30), interval=2): if self.appear(GET_ITEMS_1, offset=(30, 30), interval=2):

View File

@ -6,12 +6,12 @@ from module.base.template import Template
BOX_AMOUNT_CONFIRM = Button(area={'cn': (804, 614, 875, 644), 'en': (773, 618, 905, 642), 'jp': (802, 617, 877, 647), 'tw': (804, 614, 875, 644)}, color={'cn': (144, 173, 211), 'en': (153, 180, 213), 'jp': (123, 159, 202), 'tw': (144, 173, 211)}, button={'cn': (804, 614, 875, 644), 'en': (773, 618, 905, 642), 'jp': (802, 617, 877, 647), 'tw': (804, 614, 875, 644)}, file={'cn': './assets/cn/storage/BOX_AMOUNT_CONFIRM.png', 'en': './assets/en/storage/BOX_AMOUNT_CONFIRM.png', 'jp': './assets/jp/storage/BOX_AMOUNT_CONFIRM.png', 'tw': './assets/cn/storage/BOX_AMOUNT_CONFIRM.png'}) BOX_AMOUNT_CONFIRM = Button(area={'cn': (804, 614, 875, 644), 'en': (773, 618, 905, 642), 'jp': (802, 617, 877, 647), 'tw': (804, 614, 875, 644)}, color={'cn': (144, 173, 211), 'en': (153, 180, 213), 'jp': (123, 159, 202), 'tw': (144, 173, 211)}, button={'cn': (804, 614, 875, 644), 'en': (773, 618, 905, 642), 'jp': (802, 617, 877, 647), 'tw': (804, 614, 875, 644)}, file={'cn': './assets/cn/storage/BOX_AMOUNT_CONFIRM.png', 'en': './assets/en/storage/BOX_AMOUNT_CONFIRM.png', 'jp': './assets/jp/storage/BOX_AMOUNT_CONFIRM.png', 'tw': './assets/cn/storage/BOX_AMOUNT_CONFIRM.png'})
BOX_AMOUNT_OCR = Button(area={'cn': (591, 298, 688, 326), 'en': (591, 298, 688, 326), 'jp': (591, 298, 688, 326), 'tw': (591, 298, 688, 326)}, color={'cn': (56, 56, 65), 'en': (56, 56, 65), 'jp': (56, 56, 65), 'tw': (56, 56, 65)}, button={'cn': (591, 298, 688, 326), 'en': (591, 298, 688, 326), 'jp': (591, 298, 688, 326), 'tw': (591, 298, 688, 326)}, file={'cn': './assets/cn/storage/BOX_AMOUNT_OCR.png', 'en': './assets/cn/storage/BOX_AMOUNT_OCR.png', 'jp': './assets/cn/storage/BOX_AMOUNT_OCR.png', 'tw': './assets/cn/storage/BOX_AMOUNT_OCR.png'}) BOX_AMOUNT_OCR = Button(area={'cn': (591, 298, 688, 326), 'en': (591, 298, 688, 326), 'jp': (591, 298, 688, 326), 'tw': (591, 298, 688, 326)}, color={'cn': (56, 56, 65), 'en': (56, 56, 65), 'jp': (56, 56, 65), 'tw': (56, 56, 65)}, button={'cn': (591, 298, 688, 326), 'en': (591, 298, 688, 326), 'jp': (591, 298, 688, 326), 'tw': (591, 298, 688, 326)}, file={'cn': './assets/cn/storage/BOX_AMOUNT_OCR.png', 'en': './assets/cn/storage/BOX_AMOUNT_OCR.png', 'jp': './assets/cn/storage/BOX_AMOUNT_OCR.png', 'tw': './assets/cn/storage/BOX_AMOUNT_OCR.png'})
BOX_USE = Button(area={'cn': (750, 493, 819, 524), 'en': (757, 498, 815, 524), 'jp': (748, 495, 818, 527), 'tw': (750, 493, 819, 524)}, color={'cn': (153, 183, 219), 'en': (160, 188, 222), 'jp': (121, 160, 209), 'tw': (153, 183, 219)}, button={'cn': (750, 493, 819, 524), 'en': (757, 498, 815, 524), 'jp': (748, 495, 818, 527), 'tw': (750, 493, 819, 524)}, file={'cn': './assets/cn/storage/BOX_USE.png', 'en': './assets/en/storage/BOX_USE.png', 'jp': './assets/jp/storage/BOX_USE.png', 'tw': './assets/cn/storage/BOX_USE.png'}) BOX_USE = Button(area={'cn': (750, 493, 819, 524), 'en': (757, 498, 815, 524), 'jp': (748, 495, 818, 527), 'tw': (768, 493, 830, 524)}, color={'cn': (153, 183, 219), 'en': (160, 188, 222), 'jp': (121, 160, 209), 'tw': (157, 183, 216)}, button={'cn': (750, 493, 819, 524), 'en': (757, 498, 815, 524), 'jp': (748, 495, 818, 527), 'tw': (768, 493, 830, 524)}, file={'cn': './assets/cn/storage/BOX_USE.png', 'en': './assets/en/storage/BOX_USE.png', 'jp': './assets/jp/storage/BOX_USE.png', 'tw': './assets/tw/storage/BOX_USE.png'})
DISASSEMBLE = Button(area={'cn': (357, 666, 456, 690), 'en': (346, 668, 467, 684), 'jp': (357, 663, 456, 691), 'tw': (357, 666, 456, 690)}, color={'cn': (191, 192, 192), 'en': (193, 193, 194), 'jp': (169, 170, 170), 'tw': (191, 192, 192)}, button={'cn': (348, 661, 466, 696), 'en': (346, 659, 467, 698), 'jp': (349, 657, 468, 700), 'tw': (348, 661, 466, 696)}, file={'cn': './assets/cn/storage/DISASSEMBLE.png', 'en': './assets/en/storage/DISASSEMBLE.png', 'jp': './assets/jp/storage/DISASSEMBLE.png', 'tw': './assets/cn/storage/DISASSEMBLE.png'}) DISASSEMBLE = Button(area={'cn': (357, 666, 456, 690), 'en': (346, 668, 467, 684), 'jp': (357, 663, 456, 691), 'tw': (357, 666, 456, 690)}, color={'cn': (191, 192, 192), 'en': (193, 193, 194), 'jp': (169, 170, 170), 'tw': (191, 192, 192)}, button={'cn': (348, 661, 466, 696), 'en': (346, 659, 467, 698), 'jp': (349, 657, 468, 700), 'tw': (348, 661, 466, 696)}, file={'cn': './assets/cn/storage/DISASSEMBLE.png', 'en': './assets/en/storage/DISASSEMBLE.png', 'jp': './assets/jp/storage/DISASSEMBLE.png', 'tw': './assets/cn/storage/DISASSEMBLE.png'})
DISASSEMBLE_CANCEL = Button(area={'cn': (900, 659, 973, 690), 'en': (881, 659, 993, 684), 'jp': (899, 658, 971, 691), 'tw': (900, 659, 973, 690)}, color={'cn': (186, 186, 187), 'en': (192, 192, 193), 'jp': (167, 167, 168), 'tw': (186, 186, 187)}, button={'cn': (863, 649, 1015, 700), 'en': (854, 649, 1021, 699), 'jp': (860, 647, 1021, 704), 'tw': (863, 649, 1015, 700)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CANCEL.png', 'en': './assets/en/storage/DISASSEMBLE_CANCEL.png', 'jp': './assets/jp/storage/DISASSEMBLE_CANCEL.png', 'tw': './assets/cn/storage/DISASSEMBLE_CANCEL.png'}) DISASSEMBLE_CANCEL = Button(area={'cn': (900, 659, 973, 690), 'en': (881, 659, 993, 684), 'jp': (899, 658, 971, 691), 'tw': (900, 659, 973, 690)}, color={'cn': (186, 186, 187), 'en': (192, 192, 193), 'jp': (167, 167, 168), 'tw': (186, 186, 187)}, button={'cn': (863, 649, 1015, 700), 'en': (854, 649, 1021, 699), 'jp': (860, 647, 1021, 704), 'tw': (863, 649, 1015, 700)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CANCEL.png', 'en': './assets/en/storage/DISASSEMBLE_CANCEL.png', 'jp': './assets/jp/storage/DISASSEMBLE_CANCEL.png', 'tw': './assets/cn/storage/DISASSEMBLE_CANCEL.png'})
DISASSEMBLE_CONFIRM = Button(area={'cn': (1108, 657, 1183, 690), 'en': (1063, 658, 1230, 681), 'jp': (1108, 657, 1185, 691), 'tw': (1108, 657, 1183, 690)}, color={'cn': (202, 149, 143), 'en': (204, 152, 145), 'jp': (198, 134, 126), 'tw': (202, 149, 143)}, button={'cn': (1067, 650, 1225, 698), 'en': (1063, 651, 1230, 697), 'jp': (1070, 645, 1230, 704), 'tw': (1067, 650, 1225, 698)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_CONFIRM.png', 'tw': './assets/cn/storage/DISASSEMBLE_CONFIRM.png'}) DISASSEMBLE_CONFIRM = Button(area={'cn': (1108, 657, 1183, 690), 'en': (1063, 658, 1230, 681), 'jp': (1108, 657, 1185, 691), 'tw': (1108, 657, 1183, 690)}, color={'cn': (202, 149, 143), 'en': (204, 152, 145), 'jp': (198, 134, 126), 'tw': (202, 149, 143)}, button={'cn': (1067, 650, 1225, 698), 'en': (1063, 651, 1230, 697), 'jp': (1070, 645, 1230, 704), 'tw': (1067, 650, 1225, 698)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_CONFIRM.png', 'tw': './assets/cn/storage/DISASSEMBLE_CONFIRM.png'})
DISASSEMBLE_COUNT_OCR = Button(area={'cn': (612, 662, 687, 695), 'en': (625, 664, 685, 694), 'jp': (612, 662, 687, 695), 'tw': (612, 662, 687, 695)}, color={'cn': (60, 63, 81), 'en': (72, 74, 85), 'jp': (60, 63, 81), 'tw': (60, 63, 81)}, button={'cn': (612, 662, 687, 695), 'en': (625, 664, 685, 694), 'jp': (612, 662, 687, 695), 'tw': (612, 662, 687, 695)}, file={'cn': './assets/cn/storage/DISASSEMBLE_COUNT_OCR.png', 'en': './assets/en/storage/DISASSEMBLE_COUNT_OCR.png', 'jp': './assets/jp/storage/DISASSEMBLE_COUNT_OCR.png', 'tw': './assets/tw/storage/DISASSEMBLE_COUNT_OCR.png'}) DISASSEMBLE_COUNT_OCR = Button(area={'cn': (612, 662, 687, 695), 'en': (625, 664, 685, 694), 'jp': (612, 662, 687, 695), 'tw': (612, 662, 687, 695)}, color={'cn': (60, 63, 81), 'en': (72, 74, 85), 'jp': (60, 63, 81), 'tw': (60, 63, 81)}, button={'cn': (612, 662, 687, 695), 'en': (625, 664, 685, 694), 'jp': (612, 662, 687, 695), 'tw': (612, 662, 687, 695)}, file={'cn': './assets/cn/storage/DISASSEMBLE_COUNT_OCR.png', 'en': './assets/en/storage/DISASSEMBLE_COUNT_OCR.png', 'jp': './assets/jp/storage/DISASSEMBLE_COUNT_OCR.png', 'tw': './assets/tw/storage/DISASSEMBLE_COUNT_OCR.png'})
DISASSEMBLE_POPUP_CONFIRM = Button(area={'cn': (746, 564, 815, 594), 'en': (717, 568, 841, 590), 'jp': (743, 564, 818, 596), 'tw': (746, 564, 815, 594)}, color={'cn': (148, 179, 219), 'en': (160, 187, 223), 'jp': (127, 166, 214), 'tw': (148, 179, 219)}, button={'cn': (707, 558, 854, 603), 'en': (708, 558, 851, 601), 'jp': (706, 553, 859, 608), 'tw': (707, 558, 854, 603)}, file={'cn': './assets/cn/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'tw': './assets/cn/storage/DISASSEMBLE_POPUP_CONFIRM.png'}) DISASSEMBLE_POPUP_CONFIRM = Button(area={'cn': (746, 564, 815, 594), 'en': (717, 568, 841, 590), 'jp': (743, 564, 818, 596), 'tw': (746, 565, 814, 594)}, color={'cn': (148, 179, 219), 'en': (160, 187, 223), 'jp': (127, 166, 214), 'tw': (147, 178, 217)}, button={'cn': (707, 558, 854, 603), 'en': (708, 558, 851, 601), 'jp': (706, 553, 859, 608), 'tw': (746, 565, 814, 594)}, file={'cn': './assets/cn/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_POPUP_CONFIRM.png', 'tw': './assets/tw/storage/DISASSEMBLE_POPUP_CONFIRM.png'})
EQUIPMENT_EMPTY = Button(area={'cn': (1127, 353, 1155, 395), 'en': (1127, 353, 1155, 395), 'jp': (1127, 353, 1155, 395), 'tw': (1127, 353, 1155, 395)}, color={'cn': (95, 74, 86), 'en': (95, 74, 86), 'jp': (95, 74, 86), 'tw': (95, 74, 86)}, button={'cn': (1127, 353, 1155, 395), 'en': (1127, 353, 1155, 395), 'jp': (1127, 353, 1155, 395), 'tw': (1127, 353, 1155, 395)}, file={'cn': './assets/cn/storage/EQUIPMENT_EMPTY.png', 'en': './assets/en/storage/EQUIPMENT_EMPTY.png', 'jp': './assets/jp/storage/EQUIPMENT_EMPTY.png', 'tw': './assets/tw/storage/EQUIPMENT_EMPTY.png'}) EQUIPMENT_EMPTY = Button(area={'cn': (1127, 353, 1155, 395), 'en': (1127, 353, 1155, 395), 'jp': (1127, 353, 1155, 395), 'tw': (1127, 353, 1155, 395)}, color={'cn': (95, 74, 86), 'en': (95, 74, 86), 'jp': (95, 74, 86), 'tw': (95, 74, 86)}, button={'cn': (1127, 353, 1155, 395), 'en': (1127, 353, 1155, 395), 'jp': (1127, 353, 1155, 395), 'tw': (1127, 353, 1155, 395)}, file={'cn': './assets/cn/storage/EQUIPMENT_EMPTY.png', 'en': './assets/en/storage/EQUIPMENT_EMPTY.png', 'jp': './assets/jp/storage/EQUIPMENT_EMPTY.png', 'tw': './assets/tw/storage/EQUIPMENT_EMPTY.png'})
EQUIPMENT_ENTER = Button(area={'cn': (1021, 667, 1077, 691), 'en': (1020, 669, 1071, 686), 'jp': (1019, 664, 1079, 692), 'tw': (1021, 667, 1077, 691)}, color={'cn': (222, 187, 122), 'en': (200, 161, 99), 'jp': (220, 182, 118), 'tw': (222, 187, 122)}, button={'cn': (954, 656, 1091, 698), 'en': (954, 659, 1084, 689), 'jp': (949, 652, 1095, 701), 'tw': (954, 656, 1091, 698)}, file={'cn': './assets/cn/storage/EQUIPMENT_ENTER.png', 'en': './assets/en/storage/EQUIPMENT_ENTER.png', 'jp': './assets/jp/storage/EQUIPMENT_ENTER.png', 'tw': './assets/cn/storage/EQUIPMENT_ENTER.png'}) EQUIPMENT_ENTER = Button(area={'cn': (1021, 667, 1077, 691), 'en': (1020, 669, 1071, 686), 'jp': (1019, 664, 1079, 692), 'tw': (1021, 667, 1077, 691)}, color={'cn': (222, 187, 122), 'en': (200, 161, 99), 'jp': (220, 182, 118), 'tw': (222, 187, 122)}, button={'cn': (954, 656, 1091, 698), 'en': (954, 659, 1084, 689), 'jp': (949, 652, 1095, 701), 'tw': (954, 656, 1091, 698)}, file={'cn': './assets/cn/storage/EQUIPMENT_ENTER.png', 'en': './assets/en/storage/EQUIPMENT_ENTER.png', 'jp': './assets/jp/storage/EQUIPMENT_ENTER.png', 'tw': './assets/cn/storage/EQUIPMENT_ENTER.png'})
EQUIPMENT_FILTER = Button(area={'cn': (805, 23, 841, 38), 'en': (746, 23, 781, 36), 'jp': (792, 22, 854, 38), 'tw': (805, 23, 841, 38)}, color={'cn': (155, 171, 210), 'en': (142, 160, 201), 'jp': (96, 112, 160), 'tw': (155, 171, 210)}, button={'cn': (794, 7, 883, 45), 'en': (742, 13, 819, 36), 'jp': (791, 7, 885, 46), 'tw': (794, 7, 883, 45)}, file={'cn': './assets/cn/storage/EQUIPMENT_FILTER.png', 'en': './assets/en/storage/EQUIPMENT_FILTER.png', 'jp': './assets/jp/storage/EQUIPMENT_FILTER.png', 'tw': './assets/cn/storage/EQUIPMENT_FILTER.png'}) EQUIPMENT_FILTER = Button(area={'cn': (805, 23, 841, 38), 'en': (746, 23, 781, 36), 'jp': (792, 22, 854, 38), 'tw': (805, 23, 841, 38)}, color={'cn': (155, 171, 210), 'en': (142, 160, 201), 'jp': (96, 112, 160), 'tw': (155, 171, 210)}, button={'cn': (794, 7, 883, 45), 'en': (742, 13, 819, 36), 'jp': (791, 7, 885, 46), 'tw': (794, 7, 883, 45)}, file={'cn': './assets/cn/storage/EQUIPMENT_FILTER.png', 'en': './assets/en/storage/EQUIPMENT_FILTER.png', 'jp': './assets/jp/storage/EQUIPMENT_FILTER.png', 'tw': './assets/cn/storage/EQUIPMENT_FILTER.png'})

View File

@ -1,6 +1,7 @@
import numpy as np import numpy as np
from module.base.button import ButtonGrid from module.base.button import ButtonGrid
from module.base.decorator import Config
from module.base.timer import Timer from module.base.timer import Timer
from module.base.utils import rgb2gray from module.base.utils import rgb2gray
from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2 from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2
@ -100,6 +101,74 @@ class StorageHandler(StorageUI):
return True return True
@Config.when(SERVER='tw')
def _storage_use_one_box(self, button, amount=1):
"""
Args:
button (Button): Box
amount (int):
Returns:
int: amount of box used, not accurate
Raises:
StorageFull:
Pages:
in: MATERIAL_CHECK
out: MATERIAL_CHECK
"""
logger.hr('Use one box')
success = False
used = 0
self.interval_clear([
MATERIAL_CHECK,
BOX_USE,
GET_ITEMS_1,
GET_ITEMS_2,
EQUIPMENT_FULL,
])
for _ in self.loop():
# Storage full
if self.appear(EQUIPMENT_FULL, offset=(20, 20)):
logger.info('Storage full')
# Close popup
self.ui_click(MATERIAL_ENTER, check_button=self._storage_in_material, appear_button=EQUIPMENT_FULL,
retry_wait=3, skip_first_screenshot=True)
raise StorageFull
# End
if success and self._storage_in_material():
break
if self._storage_in_material(interval=5):
self.device.click(button)
continue
# 75 is a magic number to distinguish `use 1` and `use 10`
# See https://github.com/LmeSzinc/AzurLaneAutoScript/pull/1529#issuecomment-1221315455
if self.appear_then_click(BOX_USE, offset=(-75, -20, 10, 20), interval=5):
used = 10
self.interval_reset(MATERIAL_CHECK)
continue
if self.appear_then_click(BOX_USE, offset=(-330, -20, -75, 20), interval=5):
used = 1
self.interval_reset(MATERIAL_CHECK)
continue
if self.appear(GET_ITEMS_1, offset=(5, 5), interval=5):
self.device.click(MATERIAL_ENTER)
self.interval_reset(MATERIAL_CHECK)
success = True
continue
if self.appear(GET_ITEMS_2, offset=(5, 5), interval=5):
self.device.click(MATERIAL_ENTER)
self.interval_reset(MATERIAL_CHECK)
success = True
continue
logger.info(f'Used {used} box(es)')
return used
@Config.when(SERVER=None)
def _storage_use_one_box(self, button, amount=1): def _storage_use_one_box(self, button, amount=1):
""" """
Args: Args:
@ -338,9 +407,14 @@ class StorageHandler(StorageUI):
logger.warning('Failed to confirm disassemble after 3 trial') logger.warning('Failed to confirm disassemble after 3 trial')
disassembled = 0 disassembled = 0
break break
if success and self.appear(DISASSEMBLE_CANCEL, offset=(20, 20)):
self.wait_until_stable(MATERIAL_STABLE_CHECK)
break
if self.appear_then_click(DISASSEMBLE_CONFIRM, offset=(20, 20), interval=5): if self.appear_then_click(DISASSEMBLE_CONFIRM, offset=(20, 20), interval=5):
click_count += 1 click_count += 1
# since 2025.05.20 disassemble no longer shows GET_ITEMS
success = True
continue continue
if self.appear_then_click(DISASSEMBLE_POPUP_CONFIRM, offset=(-15, -5, 5, 70), interval=5): if self.appear_then_click(DISASSEMBLE_POPUP_CONFIRM, offset=(-15, -5, 5, 70), interval=5):
continue continue
@ -355,10 +429,6 @@ class StorageHandler(StorageUI):
success = True success = True
continue continue
if success and self.appear(DISASSEMBLE_CANCEL, offset=(20, 20)):
self.wait_until_stable(MATERIAL_STABLE_CHECK)
break
return disassembled return disassembled
def _storage_disassemble_equipment_execute(self, rarity=1, amount=40): def _storage_disassemble_equipment_execute(self, rarity=1, amount=40):
@ -398,6 +468,59 @@ class StorageHandler(StorageUI):
self.equipment_filter_set() self.equipment_filter_set()
return disassembled return disassembled
@Config.when(SERVER='tw')
def storage_disassemble_equipment(self, rarity=1, amount=15):
"""
Disassemble target amount of equipment.
If not having enough equipment, use boxes then disassemble.
Args:
rarity (int): 1 for common, 2 for rare, 3 for elite, 4 for super_rare
amount (int): Expected amount to disassemble.
Actual amount >= expected
Returns:
int: Actual amount of equipments disassembled
Pages:
in: Any
out: page_storage, equipment, DISASSEMBLE
"""
logger.hr('Disassemble Equipment', level=2)
self.ui_goto_storage()
# No need, equipping toggle does not effect disassemble
# self.equipping_set()
# Also no need to call _wait_until_storage_stable(), filter confirm will do that
disassembled = 0
while 1:
logger.attr('Total_Disassemble', f'{disassembled}/{amount}')
if disassembled >= amount:
logger.info('Reached total target amount, stop')
break
self._storage_enter_disassemble()
equip = self._storage_disassemble_equipment_execute(rarity=rarity, amount=amount)
disassembled += equip
if equip <= 0:
logger.info('No more equipment to disassemble, going to use boxes')
boxes = 0
try:
self._storage_enter_material()
boxes = self._storage_use_box_execute(rarity=rarity, amount=amount - disassembled)
if boxes <= 0:
logger.warning('No more boxes to use, disassemble equipment end')
self.storage_has_boxes = False
break
except StorageFull:
if boxes <= 0:
logger.warning('Unable to use boxes because storage full, '
'probably because storage is full of rare equipments or above, '
'disassemble equipment end')
logger.warning('Please manually disassemble some equipments to free up storage')
self.storage_has_boxes = False
break
@Config.when(SERVER=None)
def storage_disassemble_equipment(self, rarity=1, amount=15): def storage_disassemble_equipment(self, rarity=1, amount=15):
""" """
Disassemble target amount of equipment. Disassemble target amount of equipment.