Skip to content
This repository was archived by the owner on Jul 8, 2025. It is now read-only.

Commit 9637267

Browse files
authored
Merge pull request #822 from LmeSzinc/master
[pull] master from LmeSzinc:master
2 parents 3edeaaa + 9dbaa39 commit 9637267

6 files changed

Lines changed: 12 additions & 6 deletions

File tree

assets/cn/combat_ui/PAUSE_Star.png

3.6 KB
Loading

module/combat/combat.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ def is_combat_executing(self):
106106
# PAUSE_Pharaoh has random animation, assets should avoid the area in the middle and use match_luma
107107
if PAUSE_Pharaoh.match_luma(self.device.image, offset=(10, 10)):
108108
return PAUSE_Pharaoh
109+
# PAUSE_Star may get detected as PAUSE_Nurse, should before it
110+
if PAUSE_Star.match_luma(self.device.image, offset=(10, 10)):
111+
return PAUSE_Star
109112
if PAUSE_Nurse.match_luma(self.device.image, offset=(10, 10)):
110113
return PAUSE_Nurse
111114
# PAUSE_Devil is in red

module/combat_ui/assets.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
PAUSE_Nurse = Button(area={'cn': (1236, 33, 1251, 50), 'en': (1236, 33, 1251, 50), 'jp': (1236, 33, 1251, 50), 'tw': (1236, 33, 1251, 50)}, color={'cn': (200, 206, 209), 'en': (200, 206, 209), 'jp': (200, 206, 209), 'tw': (200, 206, 209)}, button={'cn': (1236, 33, 1251, 50), 'en': (1236, 33, 1251, 50), 'jp': (1236, 33, 1251, 50), 'tw': (1236, 33, 1251, 50)}, file={'cn': './assets/cn/combat_ui/PAUSE_Nurse.png', 'en': './assets/cn/combat_ui/PAUSE_Nurse.png', 'jp': './assets/cn/combat_ui/PAUSE_Nurse.png', 'tw': './assets/cn/combat_ui/PAUSE_Nurse.png'})
1717
PAUSE_Pharaoh = Button(area={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, color={'cn': (164, 119, 78), 'en': (164, 119, 78), 'jp': (164, 119, 78), 'tw': (164, 119, 78)}, button={'cn': (1229, 55, 1259, 62), 'en': (1229, 55, 1259, 62), 'jp': (1229, 55, 1259, 62), 'tw': (1229, 55, 1259, 62)}, file={'cn': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'en': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'jp': './assets/cn/combat_ui/PAUSE_Pharaoh.png', 'tw': './assets/cn/combat_ui/PAUSE_Pharaoh.png'})
1818
PAUSE_Seaside = Button(area={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, color={'cn': (172, 196, 212), 'en': (172, 196, 212), 'jp': (172, 196, 212), 'tw': (172, 196, 212)}, button={'cn': (1214, 31, 1239, 59), 'en': (1214, 31, 1239, 59), 'jp': (1214, 31, 1239, 59), 'tw': (1214, 31, 1239, 59)}, file={'cn': './assets/cn/combat_ui/PAUSE_Seaside.png', 'en': './assets/cn/combat_ui/PAUSE_Seaside.png', 'jp': './assets/cn/combat_ui/PAUSE_Seaside.png', 'tw': './assets/cn/combat_ui/PAUSE_Seaside.png'})
19+
PAUSE_Star = Button(area={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, color={'cn': (169, 179, 179), 'en': (169, 179, 179), 'jp': (169, 179, 179), 'tw': (169, 179, 179)}, button={'cn': (1234, 36, 1250, 57), 'en': (1234, 36, 1250, 57), 'jp': (1234, 36, 1250, 57), 'tw': (1234, 36, 1250, 57)}, file={'cn': './assets/cn/combat_ui/PAUSE_Star.png', 'en': './assets/cn/combat_ui/PAUSE_Star.png', 'jp': './assets/cn/combat_ui/PAUSE_Star.png', 'tw': './assets/cn/combat_ui/PAUSE_Star.png'})
1920
QUIT = Button(area={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, color={'cn': (199, 122, 114), 'en': (216, 168, 164), 'jp': (196, 120, 113), 'tw': (200, 126, 118)}, button={'cn': (420, 490, 593, 548), 'en': (473, 508, 567, 532), 'jp': (433, 490, 606, 547), 'tw': (433, 490, 606, 547)}, file={'cn': './assets/cn/combat_ui/QUIT.png', 'en': './assets/en/combat_ui/QUIT.png', 'jp': './assets/jp/combat_ui/QUIT.png', 'tw': './assets/tw/combat_ui/QUIT.png'})
2021
QUIT_Christmas = Button(area={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, color={'cn': (195, 139, 166), 'en': (207, 166, 185), 'jp': (195, 139, 166), 'tw': (195, 139, 166)}, button={'cn': (400, 506, 477, 525), 'en': (410, 507, 469, 524), 'jp': (400, 506, 477, 525), 'tw': (400, 506, 477, 525)}, file={'cn': './assets/cn/combat_ui/QUIT_Christmas.png', 'en': './assets/en/combat_ui/QUIT_Christmas.png', 'jp': './assets/cn/combat_ui/QUIT_Christmas.png', 'tw': './assets/cn/combat_ui/QUIT_Christmas.png'})
2122
QUIT_Cyber = Button(area={'cn': (393, 506, 470, 524), 'en': (393, 506, 470, 524), 'jp': (393, 506, 470, 524), 'tw': (393, 506, 470, 524)}, color={'cn': (255, 198, 190), 'en': (255, 198, 190), 'jp': (255, 198, 190), 'tw': (255, 198, 190)}, button={'cn': (393, 506, 470, 524), 'en': (393, 506, 470, 524), 'jp': (393, 506, 470, 524), 'tw': (393, 506, 470, 524)}, file={'cn': './assets/cn/combat_ui/QUIT_Cyber.png', 'en': './assets/cn/combat_ui/QUIT_Cyber.png', 'jp': './assets/cn/combat_ui/QUIT_Cyber.png', 'tw': './assets/tw/combat_ui/QUIT_Cyber.png'})

module/device/method/ascreencap.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import time
33
from functools import wraps
44

5-
import lz4.block
65
from adbutils.errors import AdbError
76

87
from module.base.utils import *
@@ -157,7 +156,8 @@ def __uncompress(self, screenshot):
157156

158157
_, uncompressed_size, _, width, height = compressed_data_header
159158
channel = 3
160-
data = lz4.block.decompress(raw_compressed_data[20:], uncompressed_size=uncompressed_size)
159+
from lz4.block import decompress
160+
data = decompress(raw_compressed_data[20:], uncompressed_size=uncompressed_size)
161161

162162
image = np.frombuffer(data, dtype=np.uint8)
163163
if image is None:
@@ -183,20 +183,21 @@ def __uncompress(self, screenshot):
183183
return image
184184

185185
def __process_screenshot(self, screenshot):
186+
from lz4.block import LZ4BlockError
186187
for method in self.__screenshot_method_fixed:
187188
try:
188189
result = self.__load_screenshot(screenshot, method=method)
189190
result = self.__uncompress(result)
190191
self.__screenshot_method_fixed = [method] + self.__screenshot_method
191192
return result
192-
except lz4.block.LZ4BlockError:
193+
except LZ4BlockError:
193194
self.__bytepointer = 0
194195
continue
195196

196197
self.__screenshot_method_fixed = self.__screenshot_method
197198
if len(screenshot) < 500:
198199
logger.warning(f'Unexpected screenshot: {screenshot}')
199-
raise OSError(f'cannot load screenshot')
200+
raise ImageTruncated(f'cannot load screenshot')
200201

201202
@retry
202203
def screenshot_ascreencap(self):

module/device/method/nemu_ipc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ def __init__(self, nemu_folder: str, instance_id: int, display_id: int = 0):
226226
# MuMuPlayer12 5.0
227227
os.path.abspath(os.path.join(nemu_folder, './nx_device/12.0/shell/sdk/external_renderer_ipc.dll')),
228228
]
229-
ipc_dll = ''
229+
self.lib = None
230230
for ipc_dll in list_dll:
231231
if not os.path.exists(ipc_dll):
232232
continue
@@ -237,7 +237,7 @@ def __init__(self, nemu_folder: str, instance_id: int, display_id: int = 0):
237237
logger.error(e)
238238
logger.error(f'ipc_dll={ipc_dll} exists, but cannot be loaded')
239239
continue
240-
if not ipc_dll:
240+
if self.lib is None:
241241
# not found
242242
raise NemuIpcIncompatible(
243243
f'NemuIpc requires MuMu12 version >= 3.8.13, please check your version. '

module/exercise/hp_daemon.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def _at_low_hp(self, image, pause=PAUSE):
7272
PAUSE_Nurse,
7373
PAUSE_Devil,
7474
PAUSE_Seaside,
75+
PAUSE_Star,
7576
]:
7677
self.attacker_hp = self._calculate_hp(image, area=ATTACKER_HP_AREA_New.area, reverse=True)
7778
self.defender_hp = self._calculate_hp(image, area=DEFENDER_HP_AREA_New.area, reverse=True)

0 commit comments

Comments
 (0)