mirror of
https://github.com/TheFunny/ArisuAutoSweeper
synced 2026-06-24 05:14:52 +00:00
feat: auto-mission
This commit is contained in:
@@ -0,0 +1,563 @@
|
||||
from module.base.button import Button, ButtonWrapper
|
||||
|
||||
# This file was auto-generated, do not modify it manually. To generate:
|
||||
# ``` python -m dev_tools.button_extract ```
|
||||
|
||||
ACCELERATE = ButtonWrapper(
|
||||
name='ACCELERATE',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/ACCELERATE.png',
|
||||
area=(1170, 604, 1257, 643),
|
||||
search=(1150, 584, 1277, 663),
|
||||
color=(244, 208, 26),
|
||||
button=(1170, 604, 1257, 643),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/ACCELERATE.png',
|
||||
area=(1176, 607, 1248, 641),
|
||||
search=(1156, 587, 1268, 661),
|
||||
color=(239, 200, 12),
|
||||
button=(1176, 607, 1248, 641),
|
||||
),
|
||||
)
|
||||
AUTO = ButtonWrapper(
|
||||
name='AUTO',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/AUTO.png',
|
||||
area=(1164, 655, 1254, 698),
|
||||
search=(1144, 635, 1274, 718),
|
||||
color=(236, 209, 17),
|
||||
button=(1164, 655, 1254, 698),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/AUTO.png',
|
||||
area=(1170, 660, 1252, 693),
|
||||
search=(1150, 640, 1272, 713),
|
||||
color=(227, 196, 14),
|
||||
button=(1170, 660, 1252, 693),
|
||||
),
|
||||
)
|
||||
AUTO_END_OFF = ButtonWrapper(
|
||||
name='AUTO_END_OFF',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/AUTO_END_OFF.png',
|
||||
area=(1028, 580, 1069, 620),
|
||||
search=(1008, 560, 1089, 640),
|
||||
color=(91, 132, 166),
|
||||
button=(1028, 580, 1069, 620),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/AUTO_END_OFF.png',
|
||||
area=(1040, 578, 1076, 621),
|
||||
search=(1020, 558, 1096, 641),
|
||||
color=(93, 134, 167),
|
||||
button=(1040, 578, 1076, 621),
|
||||
),
|
||||
)
|
||||
AUTO_END_ON = ButtonWrapper(
|
||||
name='AUTO_END_ON',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/AUTO_END_ON.png',
|
||||
area=(1028, 579, 1065, 620),
|
||||
search=(1008, 559, 1085, 640),
|
||||
color=(88, 146, 182),
|
||||
button=(1028, 579, 1065, 620),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/AUTO_END_ON.png',
|
||||
area=(1037, 581, 1078, 618),
|
||||
search=(1017, 561, 1098, 638),
|
||||
color=(89, 146, 181),
|
||||
button=(1037, 581, 1078, 618),
|
||||
),
|
||||
)
|
||||
BATTLE_COMPLETE = ButtonWrapper(
|
||||
name='BATTLE_COMPLETE',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/BATTLE_COMPLETE.png',
|
||||
area=(1115, 638, 1228, 694),
|
||||
search=(1095, 618, 1248, 714),
|
||||
color=(104, 199, 235),
|
||||
button=(1115, 638, 1228, 694),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/BATTLE_COMPLETE.png',
|
||||
area=(1117, 638, 1228, 692),
|
||||
search=(1097, 618, 1248, 712),
|
||||
color=(105, 202, 238),
|
||||
button=(1117, 638, 1228, 692),
|
||||
),
|
||||
)
|
||||
BEGIN_MISSION = ButtonWrapper(
|
||||
name='BEGIN_MISSION',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/BEGIN_MISSION.png',
|
||||
area=(1097, 637, 1244, 694),
|
||||
search=(1077, 617, 1264, 714),
|
||||
color=(241, 216, 65),
|
||||
button=(1097, 637, 1244, 694),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/BEGIN_MISSION.png',
|
||||
area=(1093, 642, 1248, 690),
|
||||
search=(1073, 622, 1268, 710),
|
||||
color=(237, 209, 62),
|
||||
button=(1093, 642, 1248, 690),
|
||||
),
|
||||
)
|
||||
CHEST = ButtonWrapper(
|
||||
name='CHEST',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/CHEST.png',
|
||||
area=(150, 539, 206, 578),
|
||||
search=(130, 519, 226, 598),
|
||||
color=(150, 204, 233),
|
||||
button=(150, 539, 206, 578),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/CHEST.png',
|
||||
area=(150, 539, 206, 578),
|
||||
search=(130, 519, 226, 598),
|
||||
color=(150, 204, 233),
|
||||
button=(150, 539, 206, 578),
|
||||
),
|
||||
)
|
||||
END_PHASE = ButtonWrapper(
|
||||
name='END_PHASE',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/END_PHASE.png',
|
||||
area=(1095, 640, 1251, 696),
|
||||
search=(1075, 620, 1271, 716),
|
||||
color=(228, 207, 64),
|
||||
button=(1095, 640, 1251, 696),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/END_PHASE.png',
|
||||
area=(1093, 642, 1246, 691),
|
||||
search=(1073, 622, 1266, 711),
|
||||
color=(219, 198, 62),
|
||||
button=(1093, 642, 1246, 691),
|
||||
),
|
||||
)
|
||||
END_PHASE_POPUP = ButtonWrapper(
|
||||
name='END_PHASE_POPUP',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/END_PHASE_POPUP.png',
|
||||
area=(433, 335, 842, 401),
|
||||
search=(413, 315, 862, 421),
|
||||
color=(222, 223, 223),
|
||||
button=(663, 473, 875, 535),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/END_PHASE_POPUP.png',
|
||||
area=(488, 298, 785, 371),
|
||||
search=(468, 278, 805, 391),
|
||||
color=(199, 200, 200),
|
||||
button=(663, 470, 876, 533),
|
||||
),
|
||||
)
|
||||
ENTER_SUB = ButtonWrapper(
|
||||
name='ENTER_SUB',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/ENTER_SUB.png',
|
||||
area=(541, 494, 737, 528),
|
||||
search=(521, 474, 757, 548),
|
||||
color=(201, 182, 59),
|
||||
button=(541, 494, 737, 528),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/ENTER_SUB.png',
|
||||
area=(553, 490, 712, 538),
|
||||
search=(533, 470, 732, 558),
|
||||
color=(209, 191, 62),
|
||||
button=(553, 490, 712, 538),
|
||||
),
|
||||
)
|
||||
MISSION_COMPLETE = ButtonWrapper(
|
||||
name='MISSION_COMPLETE',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/MISSION_COMPLETE.png',
|
||||
area=(926, 635, 1116, 696),
|
||||
search=(906, 615, 1136, 716),
|
||||
color=(231, 216, 69),
|
||||
button=(926, 635, 1116, 696),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/MISSION_COMPLETE.png',
|
||||
area=(921, 633, 1140, 696),
|
||||
search=(901, 613, 1160, 716),
|
||||
color=(235, 220, 69),
|
||||
button=(921, 633, 1140, 696),
|
||||
),
|
||||
)
|
||||
MISSION_INFO = ButtonWrapper(
|
||||
name='MISSION_INFO',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/MISSION_INFO.png',
|
||||
area=(928, 637, 1059, 697),
|
||||
search=(908, 617, 1079, 717),
|
||||
color=(106, 202, 238),
|
||||
button=(928, 637, 1059, 697),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/MISSION_INFO.png',
|
||||
area=(926, 642, 1057, 690),
|
||||
search=(906, 622, 1077, 710),
|
||||
color=(101, 191, 226),
|
||||
button=(926, 642, 1057, 690),
|
||||
),
|
||||
)
|
||||
MISSION_INFO_POPUP = ButtonWrapper(
|
||||
name='MISSION_INFO_POPUP',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/MISSION_INFO_POPUP.png',
|
||||
area=(545, 78, 739, 115),
|
||||
search=(525, 58, 759, 135),
|
||||
color=(193, 201, 209),
|
||||
button=(767, 560, 970, 626),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/MISSION_INFO_POPUP.png',
|
||||
area=(575, 82, 704, 115),
|
||||
search=(555, 62, 724, 135),
|
||||
color=(164, 175, 187),
|
||||
button=(770, 562, 963, 622),
|
||||
),
|
||||
)
|
||||
MOBILIZE = ButtonWrapper(
|
||||
name='MOBILIZE',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/MOBILIZE.png',
|
||||
area=(1076, 618, 1239, 697),
|
||||
search=(1056, 598, 1259, 717),
|
||||
color=(226, 208, 67),
|
||||
button=(1076, 618, 1239, 697),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/MOBILIZE.png',
|
||||
area=(1080, 622, 1236, 696),
|
||||
search=(1060, 602, 1256, 716),
|
||||
color=(231, 215, 69),
|
||||
button=(1080, 622, 1236, 696),
|
||||
),
|
||||
)
|
||||
MOVE_UNIT = ButtonWrapper(
|
||||
name='MOVE_UNIT',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/MOVE_UNIT.png',
|
||||
area=(534, 304, 739, 363),
|
||||
search=(514, 284, 759, 383),
|
||||
color=(225, 225, 225),
|
||||
button=(657, 471, 877, 535),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/MOVE_UNIT.png',
|
||||
area=(529, 298, 763, 363),
|
||||
search=(509, 278, 783, 383),
|
||||
color=(215, 216, 216),
|
||||
button=(663, 473, 875, 529),
|
||||
),
|
||||
)
|
||||
OCR_AREA = ButtonWrapper(
|
||||
name='OCR_AREA',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/OCR_AREA.png',
|
||||
area=(119, 194, 166, 243),
|
||||
search=(99, 174, 186, 263),
|
||||
color=(228, 230, 232),
|
||||
button=(119, 194, 166, 243),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/OCR_AREA.png',
|
||||
area=(123, 192, 183, 240),
|
||||
search=(103, 172, 203, 260),
|
||||
color=(223, 225, 228),
|
||||
button=(123, 192, 183, 240),
|
||||
),
|
||||
)
|
||||
OCR_UNIT = ButtonWrapper(
|
||||
name='OCR_UNIT',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/OCR_UNIT.png',
|
||||
area=(114, 535, 141, 576),
|
||||
search=(94, 515, 161, 596),
|
||||
color=(238, 238, 240),
|
||||
button=(114, 535, 141, 576),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/OCR_UNIT.png',
|
||||
area=(55, 540, 92, 573),
|
||||
search=(35, 520, 112, 593),
|
||||
color=(234, 235, 237),
|
||||
button=(55, 540, 92, 573),
|
||||
),
|
||||
)
|
||||
ONE_STAR = ButtonWrapper(
|
||||
name='ONE_STAR',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/ONE_STAR.png',
|
||||
area=(148, 349, 183, 390),
|
||||
search=(128, 329, 203, 410),
|
||||
color=(240, 235, 215),
|
||||
button=(148, 349, 183, 390),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/ONE_STAR.png',
|
||||
area=(148, 349, 183, 390),
|
||||
search=(128, 329, 203, 410),
|
||||
color=(240, 235, 215),
|
||||
button=(148, 349, 183, 390),
|
||||
),
|
||||
)
|
||||
RANK = ButtonWrapper(
|
||||
name='RANK',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/RANK.png',
|
||||
area=(540, 625, 740, 690),
|
||||
search=(520, 605, 760, 710),
|
||||
color=(232, 214, 68),
|
||||
button=(540, 625, 740, 690),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/RANK.png',
|
||||
area=(540, 628, 738, 689),
|
||||
search=(520, 608, 758, 709),
|
||||
color=(233, 216, 69),
|
||||
button=(540, 628, 738, 689),
|
||||
),
|
||||
)
|
||||
REWARD_ACQUIRED = ButtonWrapper(
|
||||
name='REWARD_ACQUIRED',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/REWARD_ACQUIRED.png',
|
||||
area=(529, 133, 562, 183),
|
||||
search=(509, 113, 582, 203),
|
||||
color=(170, 176, 96),
|
||||
button=(682, 628, 871, 693),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/REWARD_ACQUIRED.png',
|
||||
area=(593, 132, 628, 155),
|
||||
search=(573, 112, 648, 175),
|
||||
color=(230, 228, 92),
|
||||
button=(673, 627, 872, 687),
|
||||
),
|
||||
)
|
||||
SKIP_BATTLE_OFF = ButtonWrapper(
|
||||
name='SKIP_BATTLE_OFF',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/SKIP_BATTLE_OFF.png',
|
||||
area=(1076, 525, 1120, 563),
|
||||
search=(1056, 505, 1140, 583),
|
||||
color=(90, 131, 165),
|
||||
button=(1076, 525, 1120, 563),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/SKIP_BATTLE_OFF.png',
|
||||
area=(1097, 523, 1135, 563),
|
||||
search=(1077, 503, 1155, 583),
|
||||
color=(94, 136, 170),
|
||||
button=(1097, 523, 1135, 563),
|
||||
),
|
||||
)
|
||||
SKIP_BATTLE_ON = ButtonWrapper(
|
||||
name='SKIP_BATTLE_ON',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/SKIP_BATTLE_ON.png',
|
||||
area=(1078, 524, 1115, 566),
|
||||
search=(1058, 504, 1135, 586),
|
||||
color=(87, 145, 181),
|
||||
button=(1078, 524, 1115, 566),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/SKIP_BATTLE_ON.png',
|
||||
area=(1100, 528, 1136, 561),
|
||||
search=(1080, 508, 1156, 581),
|
||||
color=(96, 161, 196),
|
||||
button=(1100, 528, 1136, 561),
|
||||
),
|
||||
)
|
||||
THREE_STARS = ButtonWrapper(
|
||||
name='THREE_STARS',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/THREE_STARS.png',
|
||||
area=(158, 357, 177, 441),
|
||||
search=(138, 337, 197, 461),
|
||||
color=(234, 222, 173),
|
||||
button=(158, 357, 177, 441),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/THREE_STARS.png',
|
||||
area=(158, 357, 177, 441),
|
||||
search=(138, 337, 197, 461),
|
||||
color=(234, 222, 173),
|
||||
button=(158, 357, 177, 441),
|
||||
),
|
||||
)
|
||||
UNIT1_OFF = ButtonWrapper(
|
||||
name='UNIT1_OFF',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT1_OFF.png',
|
||||
area=(2, 157, 152, 219),
|
||||
search=(0, 137, 172, 239),
|
||||
color=(248, 249, 249),
|
||||
button=(2, 157, 152, 219),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT1_OFF.png',
|
||||
area=(1, 160, 147, 219),
|
||||
search=(0, 140, 167, 239),
|
||||
color=(240, 242, 243),
|
||||
button=(1, 160, 147, 219),
|
||||
),
|
||||
)
|
||||
UNIT1_ON = ButtonWrapper(
|
||||
name='UNIT1_ON',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT1_ON.png',
|
||||
area=(2, 157, 149, 217),
|
||||
search=(0, 137, 169, 237),
|
||||
color=(53, 75, 97),
|
||||
button=(2, 157, 149, 217),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT1_ON.png',
|
||||
area=(0, 159, 142, 214),
|
||||
search=(0, 139, 162, 234),
|
||||
color=(62, 81, 94),
|
||||
button=(0, 159, 142, 214),
|
||||
),
|
||||
)
|
||||
UNIT2_OFF = ButtonWrapper(
|
||||
name='UNIT2_OFF',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT2_OFF.png',
|
||||
area=(1, 235, 152, 295),
|
||||
search=(0, 215, 172, 315),
|
||||
color=(247, 248, 249),
|
||||
button=(1, 235, 152, 295),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT2_OFF.png',
|
||||
area=(4, 240, 151, 297),
|
||||
search=(0, 220, 171, 317),
|
||||
color=(240, 241, 243),
|
||||
button=(4, 240, 151, 297),
|
||||
),
|
||||
)
|
||||
UNIT2_ON = ButtonWrapper(
|
||||
name='UNIT2_ON',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT2_ON.png',
|
||||
area=(3, 237, 151, 297),
|
||||
search=(0, 217, 171, 317),
|
||||
color=(54, 76, 97),
|
||||
button=(3, 237, 151, 297),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT2_ON.png',
|
||||
area=(4, 240, 154, 291),
|
||||
search=(0, 220, 174, 311),
|
||||
color=(63, 82, 94),
|
||||
button=(4, 240, 154, 291),
|
||||
),
|
||||
)
|
||||
UNIT3_OFF = ButtonWrapper(
|
||||
name='UNIT3_OFF',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT3_OFF.png',
|
||||
area=(0, 317, 153, 373),
|
||||
search=(0, 297, 173, 393),
|
||||
color=(247, 248, 248),
|
||||
button=(0, 317, 153, 373),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT3_OFF.png',
|
||||
area=(5, 320, 149, 374),
|
||||
search=(0, 300, 169, 394),
|
||||
color=(238, 240, 242),
|
||||
button=(5, 320, 149, 374),
|
||||
),
|
||||
)
|
||||
UNIT3_ON = ButtonWrapper(
|
||||
name='UNIT3_ON',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT3_ON.png',
|
||||
area=(4, 313, 149, 375),
|
||||
search=(0, 293, 169, 395),
|
||||
color=(54, 76, 97),
|
||||
button=(4, 313, 149, 375),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT3_ON.png',
|
||||
area=(0, 318, 151, 371),
|
||||
search=(0, 298, 171, 391),
|
||||
color=(63, 82, 94),
|
||||
button=(0, 318, 151, 371),
|
||||
),
|
||||
)
|
||||
UNIT4_OFF = ButtonWrapper(
|
||||
name='UNIT4_OFF',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT4_OFF.png',
|
||||
area=(1, 395, 154, 451),
|
||||
search=(0, 375, 174, 471),
|
||||
color=(247, 247, 248),
|
||||
button=(1, 395, 154, 451),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT4_OFF.png',
|
||||
area=(0, 396, 145, 449),
|
||||
search=(0, 376, 165, 469),
|
||||
color=(238, 240, 241),
|
||||
button=(0, 396, 145, 449),
|
||||
),
|
||||
)
|
||||
UNIT4_ON = ButtonWrapper(
|
||||
name='UNIT4_ON',
|
||||
jp=None,
|
||||
en=Button(
|
||||
file='./assets/en/auto_mission/UNIT4_ON.png',
|
||||
area=(3, 395, 147, 454),
|
||||
search=(0, 375, 167, 474),
|
||||
color=(54, 76, 96),
|
||||
button=(3, 395, 147, 454),
|
||||
),
|
||||
zht=Button(
|
||||
file='./assets/zht/auto_mission/UNIT4_ON.png',
|
||||
area=(3, 396, 153, 451),
|
||||
search=(0, 376, 173, 471),
|
||||
color=(62, 81, 94),
|
||||
button=(3, 396, 153, 451),
|
||||
),
|
||||
)
|
||||
@@ -0,0 +1,181 @@
|
||||
from tasks.mission.mission import Mission
|
||||
from tasks.mission.ui import SWITCH_NORMAL, SWITCH_HARD
|
||||
from tasks.auto_mission.ui import AutoMissionUI
|
||||
from enum import Enum
|
||||
|
||||
from module.base.timer import Timer
|
||||
from module.exception import RequestHumanTakeover
|
||||
from module.logger import logger
|
||||
from tasks.item.data_update import DataUpdate
|
||||
from module.base.decorator import cached_property
|
||||
|
||||
class AutoMissionStatus(Enum):
|
||||
AP = 0 # Calculate AP and decide to terminate Auto-Mission module or not
|
||||
NAVIGATE = 1 # Navigate to the area and select mode
|
||||
ENTER = 2 # Enter the first stage in the stage list
|
||||
CHECK = 3 # Check stages and find a stage that requires to be completed
|
||||
START = 4 # Start the stage
|
||||
FORMATION = 5 # Select units based on the types required by the stage
|
||||
FIGHT = 6 # Fight the stage
|
||||
FINISH = -1 # Indicate termination of Auto-Mission module
|
||||
|
||||
class AutoMission(AutoMissionUI, Mission):
|
||||
@property
|
||||
def mission_info(self) -> list:
|
||||
valid = True
|
||||
mode = ("N", "H")
|
||||
enable = (self.config.Normal_Enable, self.config.Hard_Enable)
|
||||
area = (self.config.Normal_Area, self.config.Hard_Area)
|
||||
stages_data = [None, None]
|
||||
completion_level = (self.config.Normal_Completion, self.config.Hard_Completion)
|
||||
for index in range(2):
|
||||
if enable[index]:
|
||||
stages_data[index] = self.get_stages_data(mode[index], area[index])
|
||||
valid = valid if self.check_formation(mode[index], area[index], stages_data[index]) else False
|
||||
if valid:
|
||||
info = zip(mode, area, stages_data, completion_level)
|
||||
return list(filter(lambda x: x[2], info))
|
||||
raise RequestHumanTakeover
|
||||
|
||||
def check_formation(self, mode, area, stages_data):
|
||||
mode_name = "Normal" if mode == "N" else "Hard"
|
||||
if stages_data:
|
||||
for stage, info in stages_data.items():
|
||||
if "start" in info:
|
||||
types = info["start"]
|
||||
list_unit = []
|
||||
list_type = []
|
||||
for type in types:
|
||||
list_type.append(type)
|
||||
unit = self.type_to_unit[type]
|
||||
if unit in list_unit:
|
||||
logger.error(f"Mission {mode_name} {area} requires {list_type} but they are both set to unit {unit}")
|
||||
return False
|
||||
list_unit.append(unit)
|
||||
if list_unit and list_unit[0] > unit:
|
||||
logger.error(f"Mission {mode_name} {area} requires {list_type} but they are set to units {list_unit} respectively.\
|
||||
Due to Auto-Mission's implementation, the first unit's index must be smaller than the second unit's index.")
|
||||
return False
|
||||
return True
|
||||
return False
|
||||
|
||||
@cached_property
|
||||
def type_to_unit(self):
|
||||
return {
|
||||
"burst1": self.config.Formation_burst1,
|
||||
"burst2": self.config.Formation_burst2,
|
||||
"pierce1": self.config.Formation_pierce1,
|
||||
"pierce2": self.config.Formation_pierce2,
|
||||
"mystic1": self.config.Formation_mystic1,
|
||||
"mystic2": self.config.Formation_mystic2
|
||||
}
|
||||
|
||||
@property
|
||||
def current_mode(self):
|
||||
return self.task[0][0]
|
||||
|
||||
@property
|
||||
def current_area(self):
|
||||
return self.task[0][1]
|
||||
|
||||
@property
|
||||
def current_stage(self):
|
||||
return self._stage
|
||||
|
||||
@current_stage.setter
|
||||
def current_stage(self, value):
|
||||
self._stage = value
|
||||
|
||||
@property
|
||||
def current_stages_data(self):
|
||||
return self.task[0][2]
|
||||
|
||||
@property
|
||||
def current_completion_level(self):
|
||||
return self.task[0][3]
|
||||
|
||||
@property
|
||||
def current_count(self):
|
||||
return 1
|
||||
|
||||
def update_task(self):
|
||||
self.task.pop(0)
|
||||
|
||||
def handle_auto_mission(self, status):
|
||||
match status:
|
||||
case AutoMissionStatus.AP:
|
||||
if self.task:
|
||||
self.realistic_count = self.get_realistic_count()
|
||||
if self.realistic_count != 0:
|
||||
return AutoMissionStatus.NAVIGATE
|
||||
return AutoMissionStatus.FINISH
|
||||
|
||||
case AutoMissionStatus.NAVIGATE:
|
||||
switch = SWITCH_NORMAL if self.current_mode == "N" else SWITCH_HARD
|
||||
self.navigate(self.previous_mode, self.current_mode)
|
||||
if self.select_area(self.current_area) and self.select_mode(switch):
|
||||
return AutoMissionStatus.ENTER
|
||||
raise RequestHumanTakeover
|
||||
|
||||
case AutoMissionStatus.ENTER:
|
||||
if self.wait_mission_info(self.current_mode, open_task=True):
|
||||
return AutoMissionStatus.CHECK
|
||||
raise RequestHumanTakeover
|
||||
|
||||
case AutoMissionStatus.CHECK:
|
||||
self.current_stage = self.check_stages(*self.task[0])
|
||||
if self.current_stage:
|
||||
return AutoMissionStatus.START
|
||||
self.update_task()
|
||||
return AutoMissionStatus.AP
|
||||
|
||||
case AutoMissionStatus.START:
|
||||
self.start_stage(self.current_stage)
|
||||
return AutoMissionStatus.FORMATION
|
||||
|
||||
case AutoMissionStatus.FORMATION:
|
||||
self.formation(self.current_stage, self.type_to_unit)
|
||||
return AutoMissionStatus.FIGHT
|
||||
|
||||
case AutoMissionStatus.FIGHT:
|
||||
self.fight(self.current_stage, manual_boss=self.config.ManualBoss_Enable)
|
||||
# Return to the previous region to prevent map unlock card recognition
|
||||
self.select_area(self.current_area - 1)
|
||||
self.update_ap()
|
||||
self.previous_mode = self.current_mode
|
||||
return AutoMissionStatus.AP
|
||||
|
||||
case AutoMissionStatus.FINISH:
|
||||
return status
|
||||
|
||||
case _:
|
||||
logger.warning(f'Invalid status: {status}')
|
||||
|
||||
return status
|
||||
|
||||
def run(self):
|
||||
self.previous_mode = None
|
||||
self._stage = None
|
||||
self.task = self.valid_task
|
||||
if self.task:
|
||||
action_timer = Timer(0.5, 1)
|
||||
status = AutoMissionStatus.AP
|
||||
|
||||
"""Update the dashboard to accurately calculate AP"""
|
||||
DataUpdate(config=self.config, device=self.device).run()
|
||||
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
|
||||
if self.ui_additional():
|
||||
continue
|
||||
|
||||
if action_timer.reached_and_reset():
|
||||
logger.attr('Status', status)
|
||||
status = self.handle_auto_mission(status)
|
||||
|
||||
if status == AutoMissionStatus.FINISH:
|
||||
break
|
||||
|
||||
self.config.task_delay(server_update=True)
|
||||
|
||||
@@ -0,0 +1,280 @@
|
||||
from module.base.timer import Timer
|
||||
from module.logger import logger
|
||||
from module.ui.switch import Switch
|
||||
from module.ocr.ocr import Digit
|
||||
from tasks.base.ui import UI
|
||||
from tasks.base.assets.assets_base_page import MISSION_CHECK
|
||||
from tasks.auto_mission.assets.assets_auto_mission import *
|
||||
from tasks.auto_mission.stage import StageState
|
||||
|
||||
SWITCH_UNIT1 = Switch('Unit1_Switch')
|
||||
SWITCH_UNIT1.add_state('on', UNIT1_ON)
|
||||
SWITCH_UNIT1.add_state('off', UNIT1_OFF)
|
||||
|
||||
SWITCH_UNIT2 = Switch('Unit2_Switch')
|
||||
SWITCH_UNIT2.add_state('on', UNIT2_ON)
|
||||
SWITCH_UNIT2.add_state('off', UNIT2_OFF)
|
||||
|
||||
SWITCH_UNIT3 = Switch('Unit3_Switch')
|
||||
SWITCH_UNIT3.add_state('on', UNIT3_ON)
|
||||
SWITCH_UNIT3.add_state('off', UNIT3_OFF)
|
||||
|
||||
SWITCH_UNIT4 = Switch('Unit4_Switch')
|
||||
SWITCH_UNIT4.add_state('on', UNIT4_ON)
|
||||
SWITCH_UNIT4.add_state('off', UNIT4_OFF)
|
||||
|
||||
UNIT_SWITCHES = [SWITCH_UNIT1, SWITCH_UNIT2, SWITCH_UNIT3, SWITCH_UNIT4]
|
||||
|
||||
SWITCH_AUTO_END = Switch('Auto_End_Switch')
|
||||
SWITCH_AUTO_END.add_state('on', AUTO_END_ON)
|
||||
SWITCH_AUTO_END.add_state('off', AUTO_END_OFF)
|
||||
|
||||
SWITCH_SKIP_BATTLE = Switch('Skip_Battle_Switch')
|
||||
SWITCH_SKIP_BATTLE.add_state('on', SKIP_BATTLE_ON)
|
||||
SWITCH_SKIP_BATTLE.add_state('off', SKIP_BATTLE_OFF)
|
||||
|
||||
class Copilot(UI):
|
||||
"""A class dedicated to automate fights"""
|
||||
def __init__(self, config, device):
|
||||
super().__init__(config, device)
|
||||
self.ocr_unit = Digit(OCR_UNIT)
|
||||
|
||||
"""Utility methods"""
|
||||
def sleep(self, num):
|
||||
timer = Timer(num).start()
|
||||
while not timer.reached():
|
||||
pass
|
||||
|
||||
def click(self, x, y, interval=1):
|
||||
self.device.click_methods.get(self.config.Emulator_ControlMethod, self.device.click_adb)(x, y)
|
||||
if interval:
|
||||
# sleep because clicks can be too fast when executing actions
|
||||
self.sleep(interval)
|
||||
|
||||
def select_then_check(self, dest_enter: ButtonWrapper, dest_check: ButtonWrapper):
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
self.appear_then_click(dest_enter, interval=1)
|
||||
if self.appear(dest_check):
|
||||
return True
|
||||
self.sleep(2)
|
||||
|
||||
def set_switch(self, switch):
|
||||
"""
|
||||
Set skip switch to on
|
||||
Returns:
|
||||
True if switch is set, False if switch not found
|
||||
"""
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
if not switch.appear(main=self):
|
||||
logger.info(f'{switch.name} not found')
|
||||
continue
|
||||
switch.set('on', main=self)
|
||||
return True
|
||||
|
||||
"""Formation methods"""
|
||||
def choose_unit(self, type, type_to_unit):
|
||||
unit_index = type_to_unit[type] - 1
|
||||
unit_switch = UNIT_SWITCHES[unit_index]
|
||||
self.set_switch(unit_switch)
|
||||
|
||||
def goto_formation_page(self, start_coords):
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
if self.appear(MOBILIZE):
|
||||
return True
|
||||
self.click(*start_coords, interval=2)
|
||||
|
||||
def formation(self, stage, type_to_unit):
|
||||
if stage.state == StageState.SUB:
|
||||
# Select a unit to start the battle
|
||||
self.choose_unit(stage.formation_info, type_to_unit)
|
||||
self.click_with_interval(MOBILIZE, interval=1)
|
||||
else:
|
||||
for type, start_coords in stage.formation_start_info:
|
||||
self.goto_formation_page(start_coords)
|
||||
self.choose_unit(type, type_to_unit)
|
||||
self.select_then_check(MOBILIZE, MISSION_INFO)
|
||||
|
||||
"""Fight methods"""
|
||||
def begin_mission(self):
|
||||
# start the fight after formation. Not needed for SUB mission.
|
||||
self.select_then_check(BEGIN_MISSION, END_PHASE)
|
||||
|
||||
def check_skip_auto_over(self):
|
||||
# set skip battle and auto end when entering the map
|
||||
self.set_switch(SWITCH_SKIP_BATTLE)
|
||||
self.set_switch(SWITCH_AUTO_END)
|
||||
|
||||
def get_force(self):
|
||||
# detect the current active unit in the map
|
||||
self.device.screenshot()
|
||||
current_unit = self.ocr_unit.ocr_single_line(self.device.image)
|
||||
if current_unit == 0:
|
||||
return self.get_force()
|
||||
return current_unit
|
||||
|
||||
def wait_formation_change(self, force_index):
|
||||
logger.info("Wait formation change")
|
||||
origin = force_index
|
||||
while force_index == origin:
|
||||
force_index = self.get_force()
|
||||
self.sleep(1)
|
||||
return force_index
|
||||
|
||||
def handle_mission_popup(self, button, skip_first_screenshot=True):
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
if self.match_color(MISSION_INFO):
|
||||
break
|
||||
if self.appear_then_click(button, interval=2):
|
||||
continue
|
||||
|
||||
def confirm_teleport(self):
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
if self.appear(MOVE_UNIT):
|
||||
self.handle_mission_popup(MOVE_UNIT)
|
||||
break
|
||||
|
||||
def end_turn(self):
|
||||
# Detect and confirm the end of the phase
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
if not self.match_color(END_PHASE):
|
||||
self.handle_mission_popup(END_PHASE_POPUP)
|
||||
break
|
||||
self.appear_then_click(END_PHASE)
|
||||
|
||||
def wait_over(self):
|
||||
#self.sleep(2)
|
||||
self.select_then_check(MISSION_INFO, MISSION_INFO_POPUP)
|
||||
self.handle_mission_popup(MISSION_INFO_POPUP)
|
||||
|
||||
def start_action(self, actions, manual_boss):
|
||||
for i, act in enumerate(actions):
|
||||
if manual_boss and i == len(actions) - 1:
|
||||
logger.warning("Actions completed. Waiting for manual boss...")
|
||||
return
|
||||
desc = "start " + str(i + 1) + " operation : "
|
||||
if 'desc' in act:
|
||||
desc += act['desc']
|
||||
logger.info(desc)
|
||||
force_index = self.get_force()
|
||||
op = act['t']
|
||||
if type(op) is str:
|
||||
op = [op]
|
||||
if 'p' in act:
|
||||
if type(act['p']) is tuple:
|
||||
act['p'] = [act['p']]
|
||||
for j in range(0, len(op)):
|
||||
self.sleep(1)
|
||||
if op[j] == 'click':
|
||||
self.click(act['p'][0][0], act['p'][0][1])
|
||||
act['p'].pop(0)
|
||||
elif op[j] == 'teleport':
|
||||
self.confirm_teleport()
|
||||
elif op[j] == 'exchange':
|
||||
self.click(83, 557)
|
||||
force_index = self.wait_formation_change(force_index)
|
||||
elif op[j] == 'exchange_twice':
|
||||
self.click(83, 557)
|
||||
force_index = self.wait_formation_change(force_index)
|
||||
self.click(83, 557)
|
||||
force_index = self.wait_formation_change(force_index)
|
||||
elif op[j] == 'end-turn':
|
||||
self.end_turn()
|
||||
if i != len(actions) - 1:
|
||||
self.wait_over()
|
||||
elif op[j] == 'click_and_teleport':
|
||||
self.click(act['p'][0][0], act['p'][0][1])
|
||||
act['p'].pop(0)
|
||||
self.confirm_teleport()
|
||||
elif op[j] == 'choose_and_change':
|
||||
self.click(act['p'][0][0], act['p'][0][1])
|
||||
self.click(act['p'][0][0] - 100, act['p'][0][1])
|
||||
act['p'].pop(0)
|
||||
elif op[j] == 'exchange_and_click':
|
||||
self.click(83, 557)
|
||||
force_index = self.wait_formation_change(force_index)
|
||||
#self.sleep(0.5)
|
||||
self.sleep(1)
|
||||
self.click(act['p'][0][0], act['p'][0][1])
|
||||
act['p'].pop(0)
|
||||
elif op[j] == 'exchange_twice_and_click':
|
||||
self.click(83, 557)
|
||||
force_index = self.wait_formation_change(force_index)
|
||||
self.click(83, 557)
|
||||
force_index = self.wait_formation_change(force_index)
|
||||
#self.sleep(0.5)
|
||||
self.sleep(1)
|
||||
self.click(act['p'][0], act['p'][1])
|
||||
act['p'].pop(0)
|
||||
|
||||
if 'ec' in act:
|
||||
self.wait_formation_change(force_index)
|
||||
if 'wait-over' in act:
|
||||
self.wait_over()
|
||||
self.sleep(2)
|
||||
|
||||
logger.warning("Actions completed, waiting to enter the battle...")
|
||||
|
||||
def auto_accelerate(self):
|
||||
# click on the accelerate and auto button during the fight
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
self.device.click_record_clear()
|
||||
self.device.stuck_record_clear()
|
||||
if self.appear(BATTLE_COMPLETE):
|
||||
break
|
||||
elif not self.match_color(AUTO, threshold=50):
|
||||
self.device.click(AUTO)
|
||||
elif not self.match_color(ACCELERATE, threshold=50):
|
||||
self.device.click(ACCELERATE)
|
||||
elif self.match_color(AUTO, threshold=50) and self.match_color(ACCELERATE, threshold=50):
|
||||
break
|
||||
self.sleep(1)
|
||||
|
||||
def auto_fight(self):
|
||||
# Pause for 3 seconds
|
||||
self.sleep(3)
|
||||
# Wait for the game stage to finish loading
|
||||
self.handle_loading()
|
||||
# Change the settings for automatic fighting
|
||||
self.auto_accelerate()
|
||||
# Log a warning message indicating that the check for automatic skill release is completed
|
||||
logger.warning("Check for automatic skill release completed")
|
||||
|
||||
def goto_mission_page(self):
|
||||
# go back to mission page after fight
|
||||
while 1:
|
||||
self.device.screenshot()
|
||||
if self.appear(MISSION_CHECK):
|
||||
break
|
||||
if self.appear_then_click(BATTLE_COMPLETE, interval=1):
|
||||
continue
|
||||
if self.appear_then_click(RANK, interval=1):
|
||||
continue
|
||||
if self.appear_then_click(MISSION_COMPLETE, interval=1):
|
||||
continue
|
||||
if self.appear_then_click(REWARD_ACQUIRED, interval=1):
|
||||
continue
|
||||
self.device.click_record_clear()
|
||||
self.device.stuck_record_clear()
|
||||
|
||||
def fight(self, stage, manual_boss):
|
||||
if stage.state != StageState.SUB:
|
||||
# Click to start the task
|
||||
self.begin_mission()
|
||||
# Check for skip auto over
|
||||
self.check_skip_auto_over()
|
||||
# Start moving through the grid
|
||||
self.start_action(stage.action_info, manual_boss)
|
||||
# Auto battle
|
||||
if not manual_boss or stage.state == StageState.SUB:
|
||||
self.auto_fight()
|
||||
self.goto_mission_page()
|
||||
@@ -0,0 +1,134 @@
|
||||
stage_data = {
|
||||
'10-1-task-present': {
|
||||
'start': {
|
||||
'burst1': (757, 260),
|
||||
'mystic1': (501, 284),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (701, 386), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (463, 384), 'wait-over': True, "desc": "2 lower left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (441, 475), 'ec': True, "desc": "change to 2 and lower left"},
|
||||
{'t': 'click', 'p': (764, 398), 'wait-over': True, "desc": "1 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (825, 476), "desc": "1 lower right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (832, 342), "desc": "1 upper right"},
|
||||
]
|
||||
},
|
||||
'10-1-sss': {
|
||||
'start': {
|
||||
'burst1': (757, 260),
|
||||
'mystic1': (501, 284),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (642, 296), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (460, 386), 'ec': True, "desc": "2 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (739, 396), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (440, 473), 'ec': True, "desc": "2 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (645, 396), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (849, 394), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (901, 388), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
|
||||
'10-2-sss-present': {
|
||||
'start': {
|
||||
'burst1': (463, 260),
|
||||
'mystic1': (637, 305),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (577, 472), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (583, 468), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (640, 555), 'wait-over': True, "desc": "1 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (463, 425), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (743, 424), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (469, 234), 'ec': True, "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (773, 387), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (773, 265), "desc": "1 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (897, 399), "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (721, 490), "desc": "1 lower left"},
|
||||
]
|
||||
},
|
||||
'10-2-task': {
|
||||
'start': {
|
||||
'burst1': (463, 260),
|
||||
'mystic1': (637, 305),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (577, 472), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (583, 468), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (640, 555), 'wait-over': True, "desc": "1 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (463, 425), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (743, 424), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (469, 234), 'ec': True, "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (773, 387), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (833, 349), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
|
||||
'10-3-sss-present': {
|
||||
'start': {
|
||||
'burst1': (697, 473),
|
||||
'mystic1': (328, 460),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (663, 406), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (558, 317), 'wait-over': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (672, 320), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'choose_and_change', 'p': (481, 389), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (554, 306), 'wait-over': True, "desc": "1 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (499, 224), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (742, 505), 'wait-over': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (750, 416), 'ec': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (567, 214), 'wait-over': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (468, 393), "desc": "1 lower left"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (391, 349), "desc": "1 left"},
|
||||
]
|
||||
},
|
||||
'10-3-task': {
|
||||
'start': {
|
||||
'burst1': (697, 473),
|
||||
'mystic1': (328, 460),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (663, 406), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (558, 317), 'wait-over': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (672, 320), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'choose_and_change', 'p': (481, 389), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (554, 306), 'wait-over': True, "desc": "1 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (499, 224), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (742, 505), 'wait-over': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (750, 416), 'ec': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (506, 293), 'wait-over': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (387, 347), "desc": "1 left"},
|
||||
|
||||
]
|
||||
},
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
stage_data = {
|
||||
'11-1-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (795, 470),
|
||||
'mystic1': (865, 445),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (530, 425), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (650, 420), 'ec': True, 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': ['exchange', 'choose_and_change'], 'p': (535, 420), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (475, 340), 'ec': True, 'desc': "2 upper left"},
|
||||
{'t': 'click', 'p': (560, 430), 'wait-over': True, 'desc': "1 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (570, 280), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'click', 'p': (515, 360), 'wait-over': True, 'desc': "1 upper left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (515, 200), 'wait-over': True, 'desc': "2 upper left"},
|
||||
{'t': 'click', 'p': (450, 450), 'desc': "1 left"},
|
||||
]
|
||||
},
|
||||
'11-2-sss-present': {
|
||||
'start': {
|
||||
'pierce1': (395, 390),
|
||||
'mystic1': (620, 560),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (570, 245), 'ec': True, 'desc': "1 upper right"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (705, 415), 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (680, 190), 'ec': True, 'desc': "1 upper right"},
|
||||
{'t': 'click', 'p': (655, 430), 'ec': True, 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': 'click', 'p': (700, 285), 'ec': True, 'wait-over': True, 'desc': "1 right"},
|
||||
{'t': 'click', 'p': (700, 540), 'wait-over': True, 'desc': "2 lower left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (720, 420), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (665, 405), 'ec': True, 'wait-over': True, 'desc': "2 upper left"},
|
||||
{'t': 'click', 'p': (635, 370), 'wait-over': True, 'desc': "1 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (760, 365), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (760, 360), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (875, 375), 'desc': "1 right"},
|
||||
]
|
||||
},
|
||||
'11-2-task': {
|
||||
'start': {
|
||||
'pierce1': (395, 390),
|
||||
'mystic1': (620, 560),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (570, 245), 'ec': True, 'desc': "1 upper right"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (705, 415), 'desc': "2 upper right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (680, 190), 'ec': True, 'desc': "1 upper right"},
|
||||
{'t': 'click', 'p': (655, 430), 'ec': True, 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': 'click', 'p': (700, 285), 'ec': True, 'desc': "1 right"},
|
||||
{'t': 'click', 'p': (700, 375), 'ec': True, 'wait-over': True, 'desc': "2 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (650, 415), 'ec': True, 'desc': "1 right"},
|
||||
{'t': 'click', 'p': (765, 410), 'ec': True, 'wait-over': True, 'desc': "2 upper left"},
|
||||
|
||||
{'t': 'choose_and_change', 'p': (765, 415), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (885, 415), 'desc': "1 right"},
|
||||
]
|
||||
},
|
||||
'11-3-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (790, 305),
|
||||
'mystic1': (530, 490),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (820, 400), 'ec': True, 'desc': "1 lower right"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (470, 370), 'desc': "2 upper left and tp"},
|
||||
|
||||
{'t': 'click', 'p': (715, 505), 'ec': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (630, 335), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (695, 550), 'wait-over': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (670, 295), 'desc': "2 right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
stage_data = {
|
||||
'12-1-sss-present-task': {
|
||||
'start': {
|
||||
'mystic1': (335, 555),
|
||||
'burst1': (1130, 455),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (610, 395), 'wait-over': True, 'desc': "1 right"},
|
||||
{'t': 'click', 'p': (665, 390), 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': 'click', 'p': (550, 310), 'ec': True, 'desc': "1 upper right"},
|
||||
{'t': 'click', 'p': (725, 315), 'ec': True, 'wait-over': True, 'desc': "2 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (560, 345), 'ec': True, 'desc': "1 upper right"},
|
||||
{'t': 'click', 'p': (680, 510), 'ec': True, 'wait-over': True, 'desc': "2 lower left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (555, 505), 'wait-over': True, 'desc': "2 left"},
|
||||
{'t': 'click', 'p': (510, 250), 'desc': "1 upper left"},
|
||||
]
|
||||
},
|
||||
'12-2-sss-present-task': {
|
||||
'start': {
|
||||
'mystic1': (365, 385),
|
||||
'burst1': (620, 390),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (578, 475), 'wait-over': True, 'desc': "1 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (585, 480), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (640, 560), 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (785, 485), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'click', 'p': (685, 235), 'wait-over': True, 'desc': "1 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (745, 270), 'ec': True, 'desc': "1 upper right"},
|
||||
{'t': 'click', 'p': (800, 500), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (640, 415), 'wait-over': True, 'desc': "2 upper left"},
|
||||
{'t': 'click', 'p': (730, 275), 'desc': "1 right"},
|
||||
]
|
||||
},
|
||||
'12-3-sss-present': {
|
||||
'start': {
|
||||
'mystic1': (610, 385),
|
||||
'burst1': (580, 305),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (760, 390), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'choose_and_change', 'p': (760, 390), 'desc': "swap 1 2"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (815, 310), 'desc': "2 upper right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (895, 400), 'wait-over': True, 'desc': "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (730, 310), 'ec': True, 'desc': "1 upper left"},
|
||||
{'t': 'click', 'p': (505, 390), 'ec': True, 'wait-over': True, 'desc': "2 lower left"},
|
||||
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (705, 250), 'desc': "1 upper left"},
|
||||
{'t': 'click', 'p': (725, 595), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (455, 290), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (605, 485), 'ec': True, 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': 'click', 'p': (495, 380), 'desc': "1 lower left"}
|
||||
]
|
||||
},
|
||||
'12-3-task': {
|
||||
'start': {
|
||||
'mystic1': (610, 385),
|
||||
'burst1': (580, 305),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (760, 390), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'choose_and_change', 'p': (760, 390), 'desc': "swap 1 2"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (815, 310), 'desc': "2 upper right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (830, 315), 'desc': "1 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (710, 255), 'desc': "1 upper left and tp"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (400, 335), 'desc': "1 left"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (465, 400), 'desc': "1 lower left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
stage_data = {
|
||||
'13-1-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (730, 260),
|
||||
'pierce2': (845, 440),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (585, 340), 'wait-over': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (645, 420), 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (555, 430), 'ec': True, 'desc': "2 left"},
|
||||
{'t': 'choose_and_change', 'p': (560, 430), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (500, 515), 'wait-over': True, 'desc': "1 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (430, 475), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (840, 290), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (885, 340), 'wait-over': True, 'desc': "2 right"},
|
||||
{'t': 'click', 'p': (400, 465), 'desc': "1 right"},
|
||||
]
|
||||
},
|
||||
'13-2-sss-present': {
|
||||
'start': {
|
||||
'pierce1': (758, 222),
|
||||
'pierce2': (845, 445),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (590, 340), 'ec': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (650, 425), 'ec': True, 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (600, 350), 'ec': True, 'desc': "2 left"},
|
||||
{'t': 'choose_and_change', 'p': (600, 350), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (480, 350), 'wait-over': True, 'desc': "1 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (825, 290), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'click', 'p': (455, 365), 'wait-over': True, 'desc': "1 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (440, 450), 'desc': "1 lower left"},
|
||||
]
|
||||
},
|
||||
'13-2-task': {
|
||||
'start': {
|
||||
'pierce1': (758, 222),
|
||||
'pierce2': (845, 445),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (590, 340), 'ec': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (650, 425), 'ec': True, 'wait-over': True, 'desc': "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (600, 350), 'ec': True, 'desc': "2 left"},
|
||||
{'t': 'choose_and_change', 'p': (600, 350), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (480, 350), 'wait-over': True, 'desc': "1 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (825, 290), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'click', 'p': (395, 445), 'desc': "1 left"},
|
||||
]
|
||||
},
|
||||
'13-3-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (785, 185),
|
||||
'pierce2': (365, 275),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (660, 355), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (615, 370), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (675, 450), 'ec': True, 'desc': "2 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (675, 445), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (615, 535), 'wait-over': True, 'desc': "1 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (590, 535), 'ec': True, 'desc': "1 lower right"},
|
||||
{'t': 'click', 'p': (795, 380), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (840, 435), 'wait-over': True, 'desc': "2 lower right"},
|
||||
{'t': 'click', 'p': (595, 560), 'desc': "1 lower right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
stage_data = {
|
||||
'14-1-sss-present-task': {
|
||||
'start': {
|
||||
'burst1': (550, 305),
|
||||
'mystic1': (581, 686),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (785, 275), 'ec': True, 'desc': "1 right"},
|
||||
{'t': 'click', 'p': (715, 500), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (780, 375), 'ec': True, 'desc': "1 lower right"},
|
||||
{'t': 'click', 'p': (715, 420), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (895, 340), 'ec': True, 'desc': "1 right"},
|
||||
{'t': 'click', 'p': (665, 365), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (412, 322), 'ec': True, 'desc': "2 left"},
|
||||
{'t': 'click', 'p': (760, 405), 'wait-over': True, 'desc': "1 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (450, 420), 'wait-over': True, 'desc': "2 lower left"},
|
||||
{'t': 'click', 'p': (715, 515), 'desc': "1 lower left"},
|
||||
]
|
||||
},
|
||||
'14-2-sss-present-task': {
|
||||
'start': {
|
||||
'burst1': (875, 305),
|
||||
'mystic1': (475, 585),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (690, 390), 'ec': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (605, 395), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (640, 320), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'choose_and_change', 'p': (643, 323), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (580, 235), 'wait-over': True, 'desc': "2 upper left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (520, 275), 'ec': True, 'desc': "2 left"},
|
||||
{'t': 'click', 'p': (565, 445), 'wait-over': True, 'desc': "1 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (620, 200), 'wait-over': True, 'desc': "2 upper left"},
|
||||
{'t': 'click', 'p': (575, 425), 'desc': "1 upper left"},
|
||||
]
|
||||
},
|
||||
'14-3-sss-present-task': {
|
||||
'start': {
|
||||
'burst1': (875, 345),
|
||||
'mystic1': (425, 200),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (655, 430), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (460, 405), 'ec': True, 'wait-over': True, 'desc': "2 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (630, 465), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (550, 465), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (625, 460), 'ec': True, 'desc': "2 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (625, 460), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (565, 545), 'wait-over': True, 'desc': "1 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (390, 435), 'wait-over': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (825, 250), 'desc': "2 upper right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
stage_data = {
|
||||
'15-1-sss-present-task': {
|
||||
'start': {
|
||||
'mystic1': (795, 560),
|
||||
'mystic2': (350, 470),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (900, 410), 'desc': "1 right and tp"},
|
||||
{'t': 'click', 'p': (555, 315), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (685, 230), 'ec': True, 'desc': "1 upper left"},
|
||||
{'t': 'click', 'p': (555, 340), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (565, 355), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (570, 355), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (510, 275), 'wait-over': True, 'desc': "1 upper left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (655, 410), 'wait-over': True, 'desc': "2 lower left"},
|
||||
{'t': 'click', 'p': (450, 290), 'desc': "1 left"},
|
||||
]
|
||||
},
|
||||
'15-2-sss-present-task': {
|
||||
'start': {
|
||||
'mystic1': (400, 475),
|
||||
'mystic2': (700, 515),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (445, 485), 'desc': "1 lower left and tp"},
|
||||
{'t': 'click', 'p': (700, 320), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (790, 475), 'desc': "1 lower right and tp"},
|
||||
{'t': 'click', 'p': (630, 270), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (670, 220), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (670, 275), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (725, 195), 'wait-over': True, 'desc': "1 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (765, 535), 'wait-over': True, 'desc': "2 lower right"},
|
||||
{'t': 'click', 'p': (775, 280), 'desc': "1 right"},
|
||||
]
|
||||
},
|
||||
'15-3-sss-present-task': {
|
||||
'start': {
|
||||
'mystic1': (425, 600),
|
||||
'mystic2': (385, 225),
|
||||
'pierce1': (645, 155),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (545, 505), 'desc': "1 left and tp"},
|
||||
{'t': 'click', 'p': (670, 300), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'p': (765, 270), 'desc': "3 right and tp"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (705, 370), 'ec': True, 'desc': "2 right"},
|
||||
{'t': ['exchange_twice', 'choose_and_change'], 'p': (705, 370), 'desc': "swap 2 3"},
|
||||
{'t': 'click', 'p': (820, 370), 'ec': True, 'desc': "3 right"},
|
||||
{'t': 'choose_and_change', 'p': (785, 375), 'desc': "swap 1 3"},
|
||||
{'t': 'click', 'p': (905, 375), 'wait-over': True, 'desc': "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (905, 380), 'ec': True, 'desc': "1 right"},
|
||||
{'t': 'click_and_teleport', 'p': (500, 425), "wait-over":True ,'desc': "2 tp"},
|
||||
{'t': 'click_and_teleport', 'p': (645, 155), 'wait-over': True, 'desc': "2 upper right and tp"},
|
||||
{'t': 'click', 'p': (695, 595), 'wait-over': True, 'desc': "3 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (815, 405), 'ec': True, 'desc': "1 lower right"},
|
||||
{'t': 'click', 'p': (635, 205), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (675, 355), 'ec': True, 'desc': "2 lower right"},
|
||||
{'t': 'exchange_twice_and_click', 'p': (465, 550), 'wait-over': True, 'desc': "2 lower right"},
|
||||
{'t': 'click', 'p': (715, 425), 'desc': "1 lower left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
stage_data = {
|
||||
'16-1-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (670, 470),
|
||||
'mystic1': (370, 215),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (605, 475), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (590, 385), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (565, 500), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (515, 410), 'ec': True, 'wait-over': True, 'desc': "2 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (508, 580), 'ec': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (630, 410), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (395, 450), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (900, 365), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (725, 450), 'wait-over': True, 'desc': "1 upper left"},
|
||||
{'t': 'click', 'p': (445, 330), 'desc': "2 lower left"},
|
||||
]
|
||||
},
|
||||
'16-2-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (550, 385),
|
||||
'mystic1': (520, 560),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (565, 325), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (505, 410), 'ec': True, 'wait-over': True, 'desc': "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (455, 330), 'ec': True, 'desc': "1 upper left"},
|
||||
{'t': 'choose_and_change', 'p': (510, 345), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (395, 340), 'wait-over': True, 'desc': "1 left"},
|
||||
|
||||
{'t': 'click', 'p': (440, 445), 'ec': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (845, 455), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (728, 468), 'wait-over': True, 'desc': "2 lower left"},
|
||||
{'t': 'click', 'p': (555, 475), 'desc': "1 lower right"},
|
||||
]
|
||||
},
|
||||
'16-3-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (940, 470),
|
||||
'mystic1': (170, 425),
|
||||
'pierce2': (380, 240),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (665, 415), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (550, 315), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'click', 'p': (640, 320), 'ec': True, 'wait-over': True, 'desc': "3 right"},
|
||||
|
||||
{'t': 'click', 'p': (720, 280), 'ec': True, 'desc': "1 upper left"},
|
||||
{'t': 'click', 'p': (565, 265), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (645, 320), 'desc': "swap 2 3"},
|
||||
{'t': 'click', 'p': (760, 315), 'ec': True, 'wait-over': True, 'desc': "3 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (440, 445), 'ec': True, 'desc': "2 lower left"},
|
||||
{'t': 'exchange_twice_and_click', 'p': (835, 430), 'wait-over': True, 'desc': "3 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (665, 410), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (605, 495), 'wait-over': True, 'desc': "1 lower left"},
|
||||
|
||||
{'t': 'exchange_twice_and_click', 'p': (845, 325), 'ec': True, 'desc': "3 upper left"},
|
||||
{'t': 'click', 'p': (435, 490), 'desc': "1 lower left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
stage_data = {
|
||||
'6-1-sss-present': {
|
||||
'start': {
|
||||
'pierce1': (555, 220),
|
||||
'pierce2': (454, 432),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (693, 333), 'ec': True, 'desc': "1 lower right"},
|
||||
{'t': 'click', 'p': (569, 508), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (711, 455), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'click', 'p': (777, 308), 'wait-over': True, 'desc': "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (800, 227), 'wait-over': True, 'desc': "1 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (774, 371), 'desc': "1 lower right"},
|
||||
]
|
||||
},
|
||||
'6-1-task': {
|
||||
'start': {
|
||||
'pierce1': (555, 220),
|
||||
'pierce2': (454, 432),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (693, 333), 'ec': True, 'desc': "1 lower right"},
|
||||
{'t': 'click', 'p': (569, 508), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (711, 455), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'click', 'p': (777, 308), 'wait-over': True, 'desc': "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (860, 305), 'desc': "1 right"},
|
||||
]
|
||||
},
|
||||
'6-2-sss-present': {
|
||||
'start': {
|
||||
'pierce1': (556, 265),
|
||||
'pierce2': (436, 441),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (534, 356), 'ec': True, 'desc': "1 lower left"},
|
||||
{'t': 'click', 'p': (552, 484), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (670, 316), 'ec': True, 'desc': "1 right"},
|
||||
{'t': 'click', 'p': (674, 482), 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (698, 382), 'ec': True, 'desc': "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (696, 387), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (811, 373), 'wait-over': True, 'desc': "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (842, 301), 'wait-over': True, 'desc': "1 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
]
|
||||
},
|
||||
'6-2-task': {
|
||||
'start': {
|
||||
'pierce1': (556, 265),
|
||||
'pierce2': (436, 441),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (694, 343), 'ec': True, 'desc': "1 lower right"},
|
||||
{'t': 'click', 'p': (571, 508), 'ec': True, 'wait-over': True, 'desc': "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (711, 485), 'ec': True, 'desc': "2 right"},
|
||||
{'t': 'click', 'p': (787, 316), 'desc': "1 right"},
|
||||
]
|
||||
},
|
||||
'6-3-sss-present-task': {
|
||||
'start': {
|
||||
'pierce1': (855, 515),
|
||||
'pierce2': (569, 203),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (611, 477), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (741, 271), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (533, 505), 'ec': True, 'desc': "1 left"},
|
||||
{'t': 'click', 'p': (639, 369), 'ec': True, 'wait-over': True, 'desc': "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (643, 408), 'ec': True, 'desc': "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (645, 408), 'desc': "swap 1 2"},
|
||||
{'t': 'click', 'p': (530, 412), 'wait-over': True, 'desc': "1 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (553, 485), 'wait-over': True, 'desc': "2 left"},
|
||||
{'t': 'click', 'p': (560, 321), 'desc': "1 upper left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
stage_data = {
|
||||
'7-1-sss-present': {
|
||||
'start': {
|
||||
'burst1': (697, 473),
|
||||
'mystic1': (328, 460),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (663, 406), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (558, 317), 'wait-over': True, "desc": "2 upper right"},
|
||||
{'t': 'exchange_and_click', 'p': (672, 320), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'choose_and_change', 'p': (481, 389), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (554, 306), 'wait-over': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (499, 224), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (742, 505), 'wait-over': True, "desc": "2 right"},
|
||||
{'t': 'exchange_and_click', 'p': (750, 416), 'ec': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (506, 293), 'wait-over': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (387, 347), "desc": "1 left"},
|
||||
]
|
||||
},
|
||||
'7-2-sss-present': {
|
||||
'start': {
|
||||
'burst1': (469, 229),
|
||||
'burst2': (650, 296),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (583, 474), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (760, 394), 'ec': True, 'wait-over': True, "desc": "2 right"},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (523, 560), "desc": "1 lower left and tp"},
|
||||
{'t': 'click', 'p': (758, 365), 'wait-over': True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (737, 411), "desc": "1 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
]
|
||||
},
|
||||
'7-2-task': {
|
||||
'start': {
|
||||
'burst1': (469, 229),
|
||||
'burst2': (650, 296),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (578, 473), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (578, 473), "desc": "swap 1 2"},
|
||||
{'t': 'click_and_teleport', 'p': (520, 560), 'wait-over': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (716, 378), "desc": "1 upper right"},
|
||||
{'t': 'end-turn'},
|
||||
]
|
||||
},
|
||||
'7-3-sss-present-task': {
|
||||
'start': {
|
||||
'burst1': (943, 471),
|
||||
'burst2': (182, 260),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (659, 433), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (626, 350), 'wait-over': True, 'ec': True, "desc": "2 right"},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (667, 384), "desc": "1 left and tp"},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'wait-over': True, 'p': (596, 382), "desc": "2 lower right and tp"},
|
||||
{'t': 'exchange_and_click', 'p': (451, 494), "wait-over": True, "desc": "2 left"},
|
||||
{'t': 'click', 'p': (841, 294), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
stage_data = {
|
||||
'8-1-sss-present': {
|
||||
'start': {
|
||||
'pierce1': (613, 180),
|
||||
'pierce2': (563, 684),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'p': (712, 351), 'ec': True, "desc": "1 lower right and tp"},
|
||||
{'t': 'click_and_teleport', 'p': (649, 410), 'ec': True, 'wait-over': True, 'desc': "2 upper left and tp"},
|
||||
{'t': 'click', 'p': (613, 389), "ec": True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (850, 474), "ec": True, 'wait-over': True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (556, 495), "ec": True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (896, 423), "wait-over": True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (614, 399), "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
{'t': 'click', 'p': (614, 390), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'8-1-task': {
|
||||
'start': {
|
||||
'pierce1': (613, 180),
|
||||
'pierce2': (563, 684),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (712, 351), "desc": "1 lower right and tp"},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'wait-over': True, 'p': (649, 410), 'desc': "2 upper left and tp"},
|
||||
{'t': 'click', 'p': (613, 389), "ec": True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (850, 474), "ec": True, 'wait-over': True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (556, 495), "ec": True, "desc": "1 lower right"},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'wait-over': True, 'p': (722, 339), "desc": "2 upper left and tp"},
|
||||
{'t': 'exchange_and_click', 'p': (626, 345), "ec": True, "desc": "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (626, 345), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (743, 347), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'8-2-sss-present': {
|
||||
'start': {
|
||||
'pierce1': (1000, 342),
|
||||
'pierce2': (71, 373),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (728, 474), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (553, 477), 'wait-over': True, 'ec': True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (664, 414), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (616, 395), 'ec': True, 'wait-over': True, "desc": "2 right"},
|
||||
{'t': 'exchange_and_click', 'p': (560, 333), "ec": True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (668, 410), 'wait-over': True, "desc": "1 left"},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (692, 553), "desc": "1 lower left and tp"},
|
||||
{'t': 'click', 'p': (592, 232), 'wait-over': True, 'ec': True, "desc": "2 upper right"},
|
||||
{'t': ['exchange_and_click', 'teleport'], 'ec': True, 'p': (613, 236), "desc": "2 upper right and tp"},
|
||||
{'t': 'end-turn'},
|
||||
{'t': 'exchange_and_click', 'p': (433, 297), 'wait-over': True, "desc": "2 left"},
|
||||
{'t': 'click', 'p': (613, 490), "desc": "1 left"},
|
||||
]
|
||||
},
|
||||
'8-2-sss-task': {
|
||||
'start': {
|
||||
'pierce1': (1000, 342),
|
||||
'pierce2': (71, 373),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (728, 474), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (553, 477), 'wait-over': True, 'ec': True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (664, 414), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (616, 395), 'ec': True, 'wait-over': True, "desc": "2 right"},
|
||||
{'t': 'exchange_and_click', 'p': (560, 333), "ec": True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (668, 410), 'wait-over': True, "desc": "1 left"},
|
||||
{'t': 'click_and_teleport', 'p': (692, 553), 'ec': True, "desc": "1 lower left and tp"},
|
||||
{'t': 'end-turn'},
|
||||
{'t': 'click', 'p': (641, 459), "desc": "1 left"},
|
||||
]
|
||||
},
|
||||
'8-3-present': {
|
||||
'start': {
|
||||
'pierce1': (793, 471),
|
||||
'pierce2': (325, 359),
|
||||
},
|
||||
'action': [
|
||||
{'t': ['exchange_and_click', 'teleport'], 'p': (557, 449),'ec':True, "desc": "2 lower right and tp"},
|
||||
{'t': 'choose_and_change', 'p': (713, 336), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (779, 258), 'wait-over': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (722, 446), "desc": "1 lower left"},
|
||||
{'t': 'end-turn'},
|
||||
{'t': 'click', 'p': (560, 398), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (754, 422), 'ec': True, 'wait-over': True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (445, 275), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (889, 435), 'wait-over': True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (460, 249), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'end-turn'},
|
||||
{'t': 'click', 'p': (394, 326), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'end-turn'},
|
||||
]
|
||||
},
|
||||
'8-3-sss-task': {
|
||||
'start': {
|
||||
'pierce1': (793, 471),
|
||||
'pierce2': (325, 359),
|
||||
},
|
||||
'action': [
|
||||
{'t': ['exchange_and_click', 'teleport'], 'ec': True, 'p': (557, 449), "desc": "2 lower right and tp"},
|
||||
{'t': 'choose_and_change', 'p': (713, 336), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (604, 341), 'wait-over': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (466, 249), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (823, 377), 'ec': True, 'wait-over': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (727, 318), "ec": True, "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (518, 283), 'wait-over': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (433, 300), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click_and_teleport', 'p': (724, 474), "desc": "2 lower left and tp"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
stage_data = {
|
||||
'9-1-sss-present-task': {
|
||||
'start': {
|
||||
'burst1': (493, 301),
|
||||
'pierce1': (573, 576),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (688, 278), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (689, 413), 'ec': True, 'wait-over': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (743, 352), "ec": True, "desc": "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (743, 352), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (861, 356), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (404, 319), "wait-over": True, "desc": "2 left"},
|
||||
{'t': 'click', 'p': (903, 416), "desc": "1 right"},
|
||||
|
||||
]
|
||||
},
|
||||
'9-2-sss-present': {
|
||||
'start': {
|
||||
'burst1': (438, 222),
|
||||
'pierce1': (532, 641),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (674, 350), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (688, 420), 'wait-over': True, 'ec': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (744, 356), 'ec': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (798, 275), 'wait-over': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (798, 225), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (726, 459), 'wait-over': True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (789, 541), "wait-over": True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (720, 358), "desc": "1 lower right"},
|
||||
]
|
||||
},
|
||||
'9-2-task': {
|
||||
'start': {
|
||||
'burst1': (438, 222),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (584, 381), 'wait-over': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (707, 381), 'wait-over': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (844, 284), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
|
||||
'9-3-sss-present-task': {
|
||||
'start': {
|
||||
'burst1': (761, 465),
|
||||
'pierce1': (729, 283),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (579, 422), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (579, 422), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (460, 422), 'wait-over': True, "desc": "1 left"},
|
||||
|
||||
{'t': 'click', 'p': (440, 502), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (873, 467), 'wait-over': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (846, 290), 'wait-over': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (378, 392), "desc": "1 left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
stage_data = {
|
||||
'10': {
|
||||
'SUB': "burst1"
|
||||
},
|
||||
'10-1': {
|
||||
'start': {
|
||||
'burst1': (640, 261),
|
||||
'mystic1': (403, 560),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (811, 398), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (586, 546), "wait-over": True, 'ec': True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (779, 386), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (575, 363), 'ec': True, "wait-over": True, "desc": "2 upper left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (487, 284), 'ec': True, "desc": "change to 2 and upper left"},
|
||||
{'t': 'click', 'p': (904, 392), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'10-2': {
|
||||
'start': {
|
||||
'burst1': (704, 558),
|
||||
'mystic1': (554, 480),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (620, 381), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'choose_and_change', 'p': (620, 381), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (688, 303), "wait-over": True, 'ec': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (880, 338), 'ec': True, "desc": "change to 2 and right"},
|
||||
{'t': 'click', 'p': (527, 414), "wait-over": True, "desc": "1 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (455, 497), "desc": "1 left"},
|
||||
]
|
||||
},
|
||||
'10-3': {
|
||||
'start': {
|
||||
'burst1': (821, 344),
|
||||
'mystic1': (656, 351),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (701, 477), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (701, 477), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (764, 556), "wait-over": True, 'ec': True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (713, 522), 'ec': True, "desc": "change to 2 and lower left"},
|
||||
{'t': 'click', 'p': (536, 273), "wait-over": True, "desc": "1 left"},
|
||||
|
||||
{'t': 'click', 'p': (535, 272), "desc": "1 left"},
|
||||
]
|
||||
},
|
||||
'10-4': {
|
||||
'start': {
|
||||
'burst1': (374, 263),
|
||||
'mystic1': (560, 582),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (688, 418), 'ec': True, "desc": "change to 2 and upper left"},
|
||||
{'t': 'click', 'p': (701, 278), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (680, 291), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (616, 543), "ec": True, "wait-over": True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (535, 590), 'ec': True, "desc": "change to 2 and lower left"},
|
||||
{'t': 'click', 'p': (736, 270), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (694, 495), 'ec': True, "desc": "change to 2 and right"},
|
||||
{'t': 'click', 'p': (739, 359), "desc": "1 lower left"},
|
||||
]
|
||||
},
|
||||
'10-5': {
|
||||
'start': {
|
||||
'burst1': (374, 387),
|
||||
'mystic1': (562, 473),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (617, 381), "ec": True, "desc": "1 right"},
|
||||
{'t': 'choose_and_change', 'p': (617, 381), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (680, 300), "wait-over": True, "ec": True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (743, 498), "ec": True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (844, 308), 'ec': True, "wait-over": True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (506, 570), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (827, 290), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (794, 387), 'ec': True, "desc": "change to 2 and lower right"},
|
||||
{'t': 'click', 'p': (626, 439), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
stage_data = {
|
||||
'11': {
|
||||
'SUB': "pierce1"
|
||||
},
|
||||
'11-1': {
|
||||
'start': {
|
||||
'pierce1': (496, 525),
|
||||
'mystic1': (794, 130),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (499, 412), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click_and_teleport', 'p': (775, 368), "wait-over": True, 'ec': True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (556, 317), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (684, 388), "wait-over": True, "desc": "2 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (469, 245), "desc": "1 upper left"},
|
||||
]
|
||||
},
|
||||
'11-2': {
|
||||
'start': {
|
||||
'pierce1': (281, 347),
|
||||
'mystic1': (791, 287),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (553, 478), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True, 'p': (823, 406), "desc": "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (616, 371), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (904, 412), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (553, 469), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True, 'p': (662, 419), "desc": "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (715, 270), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (624, 451), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'11-3': {
|
||||
'start': {
|
||||
'pierce1': (315, 466),
|
||||
'mystic1': (919, 178),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (635, 461), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click_and_teleport', 'ec': True, "wait-over": True, 'p': (693, 397), "desc": "2 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (613, 422), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (672, 365), "ec": True, "wait-over": True, "desc": "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (716, 427), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (555, 511), "desc": "1 lower right"},
|
||||
]
|
||||
},
|
||||
'11-4': {
|
||||
'start': {
|
||||
'pierce1': (940, 350),
|
||||
'mystic1': (841, 285),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'click', 'p': (647, 323), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'choose_and_change', 'p': (648, 318), "desc": "swap 1 2"},
|
||||
{'t': 'click_and_teleport', 'ec': True, "wait-over": True, 'p': (530, 321), "desc": "2 left"},
|
||||
|
||||
{'t': 'click', 'p': (642, 330), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (558, 446), "ec": True, "wait-over": True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'click_and_teleport', 'p': (634, 318), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (434, 422), 'ec': True, "wait-over": True, "desc": "2 left"},
|
||||
|
||||
{'t': 'choose_and_change', 'p': (494, 404), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (433, 489), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (525, 249), "desc": "2 left"},
|
||||
|
||||
]
|
||||
},
|
||||
'11-5': {
|
||||
'start': {
|
||||
'pierce1': (374, 429),
|
||||
'mystic1': (1114, 591),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (719, 351), "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (613, 371), "desc": "1 right", "wait-over": True},
|
||||
|
||||
{'t': 'click', 'p': (729, 377), "ec": True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (616, 216), 'ec': True, "wait-over": True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (868, 437), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (683, 290), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (715, 523), "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (835, 288), 'ec': True, "wait-over": True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (586, 549), 'ec': True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (662, 306), "desc": "1 right"},
|
||||
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
stage_data = {
|
||||
'12': {
|
||||
'SUB': "burst1"
|
||||
},
|
||||
'12-1': {
|
||||
'start': {
|
||||
'mystic1': (370, 428),
|
||||
'burst1': (566, 328),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (640, 560), "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (704, 320), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (778, 373), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'choose_and_change', 'p': (778, 373), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (901, 374), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (547, 556), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (772, 384), "desc": "1 lower right"},
|
||||
]
|
||||
},
|
||||
'12-2': {
|
||||
'start': {
|
||||
'mystic1': (733, 387),
|
||||
'burst1': (574, 474),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (581, 309), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'choose_and_change', 'p': (581, 309), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (464, 306), 'ec': True, "wait-over": True, "desc": "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (526, 453), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (767, 401), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (845, 490), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (617, 383), "desc": "2 right"},
|
||||
]
|
||||
},
|
||||
'12-3': {
|
||||
'start': {
|
||||
'mystic1': (763, 558),
|
||||
'burst1': (586, 147),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (615, 413), 'ec': True},
|
||||
{'t': 'click', 'p': (724, 273), 'wait-over': True},
|
||||
|
||||
{'t': ['exchange_and_click', 'teleport'],'wait-over':True, 'p': (642, 271)},
|
||||
{'t': 'click', 'p': (614, 350), 'ec': True},
|
||||
{'t': 'choose_and_change', 'p': (586, 371)},
|
||||
{'t': 'click', 'p': (471, 360), "wait-over": True},
|
||||
|
||||
{'t': 'click', 'p': (440, 286), 'ec': True},
|
||||
{'t': 'end-turn'},
|
||||
]
|
||||
},
|
||||
'12-4': {
|
||||
'start': {
|
||||
'mystic1': (342, 386),
|
||||
'burst1': (619, 223),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (622, 424), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click_and_teleport', 'ec': True, "wait-over": True, 'p': (746, 264), "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (657, 523), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (654, 501), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (717, 588), "ec": True, "wait-over": True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (808, 496), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'click_and_teleport', 'p': (579, 397), "desc": "1 teleport"},
|
||||
{'t': 'click', 'p': (700, 240), "desc": "1 right", "wait-over": True},
|
||||
|
||||
{'t': 'click_and_teleport', 'p': (824, 291),'ec':True ,"desc": "1 right"},
|
||||
{'t': 'click', 'p': (740, 513), "desc": "2 right"},
|
||||
|
||||
]
|
||||
},
|
||||
'12-5': {
|
||||
'start': {
|
||||
'mystic1': (549, 556),
|
||||
'burst1': (835, 478),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (582, 359), "desc": "1 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (781, 353), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (842, 272), "wait-over": True ,"desc": "2 upper right"},
|
||||
|
||||
{'t': 'click_and_teleport', 'p': (665, 397),'ec':True ,"desc": "1 upper right"},
|
||||
{'t': 'click_and_teleport', 'p': (756, 317), "desc": "2 teleport"},
|
||||
{'t': 'click', 'p': (637, 327), 'ec': True, "wait-over": True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (631, 386), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (701, 248), "desc": "2 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (377, 392), 'ec': True, "desc": "1 left left"},
|
||||
{'t': 'click', 'p': (845, 309), 'ec': True, "desc": "2 upper right", "wait-over": True},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (731, 299), 'ec': True, "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (385, 422), "desc": "1 left"},
|
||||
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
stage_data = {
|
||||
'13': {
|
||||
'SUB': "pierce1"
|
||||
},
|
||||
'13-1': {
|
||||
'start': {
|
||||
'pierce1': (493, 305),
|
||||
'pierce2': (701, 570),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (606, 374), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (574, 495), "wait-over": True, 'ec': True, "desc": "2 left"},
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (699, 344), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (461, 495), "wait-over": True, "desc": "2 left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (851, 300), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
]
|
||||
},
|
||||
'13-2': {
|
||||
'start': {
|
||||
'pierce1': (728, 394),
|
||||
'pierce2': (409, 226),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (630, 463), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (591, 400), 'ec': True, "wait-over": True, "desc": "2 lower right"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (585, 565), 'ec': True, "desc": "lower left"},
|
||||
{'t': 'click', 'p': (666, 418), 'ec': True, "wait-over": True, "desc": "2 lower right"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'exchange_and_click', 'p': (823, 327), 'ec': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (610, 570), "desc": "1 lower right"},
|
||||
]
|
||||
},
|
||||
'13-3': {
|
||||
'start': {
|
||||
'pierce1': (427, 513),
|
||||
'pierce2': (779, 451),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (579, 361), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (702, 354), "wait-over": True, 'ec': True, "desc": "2 upper left"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'choose_and_change', 'p': (782, 458), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (823, 357), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (722, 445), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (826, 282), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (762, 498), 'ec': True, "wait-over": True, "desc": "2 right"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'click', 'p': (890, 365), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'13-4': {
|
||||
'start': {
|
||||
'pierce1': (580, 263),
|
||||
'pierce2': (875, 389),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (604, 473), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (731, 473), 'ec': True, "wait-over": True, "desc": "2 lower left"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'exchange_and_click', 'p': (728, 473), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (728, 473), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (672, 567), "wait-over": True, "desc": "1 lower left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (628, 475), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (738, 198), "desc": "2 upper right"},
|
||||
|
||||
]
|
||||
},
|
||||
'13-5': {
|
||||
'start': {
|
||||
'pierce1': (669, 223),
|
||||
'pierce2': (904, 419),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (625, 355), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (651, 440), 'ec': True, "wait-over": True, "desc": "2 left"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'exchange_and_click', 'p': (503, 371), 'ec': True, "desc": "2 left"},
|
||||
{'t': 'choose_and_change', 'p': (503, 371), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (443, 454), "wait-over": True, "desc": "1 lower left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (454, 473), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (550, 275), 'ec': True, "wait-over": True, "desc": "2 left"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'click', 'p': (476, 498), "desc": "1 lower left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
stage_data = {
|
||||
'14': {
|
||||
'SUB': "burst1" # 支线用爆发1
|
||||
},
|
||||
'14-1': {
|
||||
'start': {
|
||||
'burst1': (460, 383),
|
||||
'mystic1': (572, 303),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'exchange_and_click', 'p': (756, 388), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (636, 555), 'wait-over': True, "desc": "1 lower right"},
|
||||
# 第二回合
|
||||
{'t': 'exchange_and_click', 'p': (867, 316), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (619, 461), 'wait-over': True, "desc": "1 lower right"},
|
||||
# 第三回合
|
||||
{'t': 'exchange_and_click', 'p': (839, 298), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (669, 491), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'14-2': {
|
||||
'start': {
|
||||
'burst1': (611, 299),
|
||||
'mystic1': (880, 559),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (590, 396), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (685, 390), 'ec': True, "wait-over": True, "desc": "2 upper left"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (514, 466), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (580, 380), 'ec': True, "wait-over": True, "desc": "2 left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'exchange_and_click', 'p': (600, 228), 'ec': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (545, 443), "wait-over": True, "desc": "1 left"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'exchange_and_click', 'p': (802, 280), 'ec': True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (493, 402), "desc": "1 upper left"},
|
||||
]
|
||||
},
|
||||
'14-3': {
|
||||
'start': {
|
||||
'burst1': (583, 306),
|
||||
'mystic1': (520, 560),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (745, 410), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (686, 491), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (866, 408), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (677, 396), "wait-over": True, "desc": "2 upper right"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (842, 317), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (412, 339), 'ec': True, "wait-over": True, "desc": "2 left"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'exchange_and_click', 'p': (439, 303), 'ec': True, "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (767, 399), "desc": "1 lower right"},
|
||||
|
||||
]
|
||||
},
|
||||
'14-4': {
|
||||
'start': {
|
||||
'burst1': (818, 302),
|
||||
'mystic1': (535, 498),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (647, 317), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (610, 381), 'ec': True, "wait-over": True, "desc": "2 upper right"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'exchange_and_click', 'p': (547, 302), 'ec': True, "desc": "2 upper left"},
|
||||
{'t': 'choose_and_change', 'p': (547, 302), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (493, 219), "wait-over": True, "desc": "1 upper left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (412, 315), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (763, 408), "wait-over": True, 'ec': True, "desc": "2 lower right"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'click', 'p': (454, 420), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (724, 512), "desc": "2 lower left"},
|
||||
|
||||
]
|
||||
},
|
||||
'14-5': {
|
||||
'start': {
|
||||
'burst1': (880, 388),
|
||||
'mystic1': (246, 302),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (724, 330), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (559, 283), 'ec': True, "wait-over": True, "desc": "2 upper right"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (540, 267), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (630, 336), 'ec': True, "wait-over": True, "desc": "2 right"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'exchange_and_click', 'p': (581, 407), 'ec': True, "desc": "2 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (581, 407), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (517, 494), "wait-over": True, "desc": "1 lower left"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'exchange_and_click', 'p': (727, 483), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (519, 409), "desc": "1 lower left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
stage_data = {
|
||||
'15': {
|
||||
'SUB': "mystic1"
|
||||
},
|
||||
'15-1': {
|
||||
'start': {
|
||||
'mystic1': (376, 344),
|
||||
'mystic2': (1044, 609),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'click', 'p': (629, 329), 'ec': True},
|
||||
{'t': 'click_and_teleport', 'ec': True, "wait-over": True, 'p': (824, 365)},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (678, 357), 'ec': True},
|
||||
{'t': 'choose_and_change', 'p': (679, 347)},
|
||||
{'t': 'click', 'p': (794, 352), 'wait-over': True},
|
||||
|
||||
{'t': 'click', 'p': (823, 413), 'ec': True},
|
||||
{'t': 'click', 'p': (444, 446)},
|
||||
]
|
||||
},
|
||||
'15-2': {
|
||||
'start': {
|
||||
'mystic1': (407, 259),
|
||||
'mystic2': (751, 487),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'click', 'p': (636, 317), 'ec': True},
|
||||
{'t': 'click', 'p': (673, 385), 'ec': True},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (727, 349), 'ec': True},
|
||||
{'t': 'choose_and_change', 'p': (727, 342)},
|
||||
{'t': 'click', 'p': (838, 344), 'wait-over': True},
|
||||
|
||||
{'t': ['exchange_and_click','teleport'], 'ec': True, 'p': (432, 451)},
|
||||
{'t': 'click', 'p': (814, 245)},
|
||||
]
|
||||
},
|
||||
'15-3': {
|
||||
'start': {
|
||||
'mystic1': (757, 144),
|
||||
'mystic2': (407, 188),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'click', 'p': (728, 461), 'ec': True},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (576, 399)},
|
||||
|
||||
{'t': 'choose_and_change', 'p': (680, 452)},
|
||||
{'t': 'click', 'p': (623, 541), 'ec': True},
|
||||
{'t': 'click', 'p': (797, 421), 'ec': True, 'wait-over': True},
|
||||
|
||||
{'t': 'exchange_and_click', 'ec': True, 'p': (835, 425)},
|
||||
{'t': 'choose_and_change', 'p': (610, 459)},
|
||||
{'t': 'click', 'p': (512, 452)},
|
||||
{'t': 'click', 'p': (674, 537)}
|
||||
]
|
||||
},
|
||||
'15-4': {
|
||||
'start': {
|
||||
'mystic1': (824, 554),
|
||||
'mystic2': (665, 66),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'click', 'p': (546, 498), 'ec': True},
|
||||
{'t': 'click', 'p': (687, 343), 'ec': True, 'wait-over': True},
|
||||
|
||||
{'t': 'click', 'p': (547, 419), 'ec': True},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'wait-over': True, 'p': (801, 275)},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (460, 498), 'ec': True},
|
||||
{'t': 'choose_and_change', 'p': (528, 457)},
|
||||
{'t': 'click', 'p': (408, 468), 'wait-over': True},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (897, 416), 'wait-over': True},
|
||||
{'t': 'click', 'p': (435, 446)},
|
||||
]
|
||||
},
|
||||
'15-5': {
|
||||
'start': {
|
||||
'mystic1': (314, 300),
|
||||
'mystic2': (490, 526),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (608, 384), 'ec': True},
|
||||
|
||||
{'t': 'choose_and_change', 'p': (610, 388)},
|
||||
{'t': 'click', 'p': (730, 388), 'wait-over': True},
|
||||
|
||||
{'t': 'click', 'p': (784, 218), 'ec': True},
|
||||
{'t': 'click_and_teleport', 'ec': True, 'wait-over': True, 'p': (579, 234)},
|
||||
|
||||
{'t': 'click_and_teleport', 'ec': True, 'wait-over': True, 'p': (788, 216)},
|
||||
{'t': 'click', 'p': (651, 373), 'wait-over': True},
|
||||
|
||||
{'t': 'click', 'p': (803, 491), 'ec': True},
|
||||
{'t': 'click', 'p': (734, 354), 'wait-over': True},
|
||||
{'t': 'click', 'p': (779, 511)},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
stage_data = {
|
||||
'16': {
|
||||
'SUB': "pierce1"
|
||||
},
|
||||
'16-1': {
|
||||
'start': {
|
||||
'pierce1': (728, 303),
|
||||
'mystic1': (882, 562),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (468, 397), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (637, 461), "wait-over": True, 'ec': True, "desc": "2 left"},
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (433, 463), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (630, 443), "wait-over": True,'ec': True, "desc": "2 left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (453, 525), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (596, 390), "wait-over": True, 'ec': True,"desc": "2 left"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'click', 'p': (421, 480), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click', 'p': (776, 214), "desc": "2 upper right"},
|
||||
]
|
||||
},
|
||||
'16-2': {
|
||||
'start': {
|
||||
'pierce1': (428, 472),
|
||||
'mystic1': (409, 269),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (752, 492), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (637, 318), 'ec': True, "wait-over": True, "desc": "2 right"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (560, 338), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (637, 330), 'ec': True, "wait-over": True, "desc": "2 right"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (775, 361), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (657, 357), 'ec': True, "wait-over": True, "desc": "2 lower right"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'exchange_and_click', 'p': (439, 505), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (890, 348), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'16-3': {
|
||||
'start': {
|
||||
'pierce1': (370, 388),
|
||||
'mystic1': (1102, 562),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (619, 357), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (660, 432), "wait-over": True, 'ec': True, "desc": "2 left"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (624, 336), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (702, 373), "wait-over": True, 'ec': True, "desc": "2 upper left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'exchange_and_click', 'p': (653, 304), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (653, 304), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (718, 223),"wait-over": True, "desc": "1 upper right"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'exchange_and_click', 'p': (433, 487), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (893, 357), "wait-over": True,"desc": "1 right"},
|
||||
|
||||
# 第五回合
|
||||
{'t': 'exchange_and_click', 'p': (439, 321), 'ec': True, "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (839, 303), "desc": "1 upper right"},
|
||||
]
|
||||
},
|
||||
'16-4': {
|
||||
'start': {
|
||||
'pierce1': (343, 473),
|
||||
'mystic1': (812, 510),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (553, 300), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (697, 365), 'ec': True, "wait-over": True, "desc": "2 upper left"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'exchange_and_click', 'p': (660, 292), 'ec': True, "desc": "2 upper left"},
|
||||
{'t': 'choose_and_change', 'p': (660, 292), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (715, 223), "wait-over": True, "desc": "1 upper right"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'click', 'p': (831, 293), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (450, 534), "desc": "2 lower right"},
|
||||
|
||||
]
|
||||
},
|
||||
'16-5': {
|
||||
'start': {
|
||||
'pierce1': (307, 403),
|
||||
'mystic1': (854, 238),
|
||||
},
|
||||
'action': [
|
||||
# 第一回合
|
||||
{'t': 'click', 'p': (566, 530), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (640, 320), "wait-over": True, 'ec': True, "desc": "2 left"},
|
||||
|
||||
# 第二回合
|
||||
{'t': 'click', 'p': (662, 481), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (634, 367), "wait-over": True, 'ec': True, "desc": "2 lower left"},
|
||||
|
||||
# 第三回合
|
||||
{'t': 'exchange_and_click', 'p': (694, 425), 'ec': True, "desc": "2 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (694, 425), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (813, 425), "wait-over": True,"desc": "1 right"},
|
||||
|
||||
# 第四回合
|
||||
{'t': 'click', 'p': (897, 373), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (378, 385), "wait-over": True, 'ec': True,"desc": "2 left"},
|
||||
|
||||
# 第五回合
|
||||
{'t': 'click', 'p': (847, 472), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (560, 301), "desc": "2 upper left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
stage_data = {
|
||||
'4': {
|
||||
'SUB': 'pierce1'
|
||||
},
|
||||
'4-1': {
|
||||
'start': {
|
||||
'pierce1': (370, 470),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'p': (632, 432), "desc": "right and tp"},
|
||||
{'t': 'click', 'p': (831, 414), "wait-over": True, "desc": "right"},
|
||||
{'t': 'click', 'p': (842, 329), "desc": "upper right"},
|
||||
|
||||
]
|
||||
},
|
||||
'4-2': {
|
||||
'start': {
|
||||
'pierce1': (434, 387),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'p': (565, 305), "desc": "upper right and tp"},
|
||||
{'t': 'click', 'p': (794, 330), "wait-over": True, "desc": "upper right"},
|
||||
{'t': 'click', 'p': (838, 432), "desc": "lower right"},
|
||||
|
||||
]
|
||||
},
|
||||
'4-3': {
|
||||
'start': {
|
||||
'pierce1': (400, 468),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'p': (581, 345), "desc": "upper right and tp"},
|
||||
{'t': 'click_and_teleport', 'p': (656, 338), 'wait-over':True,"desc": "tp"},
|
||||
{'t': 'click', 'p': (626, 380), "desc": "lower right"},
|
||||
]
|
||||
},
|
||||
'4-4': {
|
||||
'start': {
|
||||
'pierce1': (460, 470),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (652, 440), "wait-over": True, "desc": "right"},
|
||||
{'t': 'click', 'p': (773, 441), "desc": "right"},
|
||||
{'t': 'nothing'},
|
||||
|
||||
]
|
||||
},
|
||||
'4-5': {
|
||||
'start': {
|
||||
'pierce1': (580, 511),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (719, 474), "wait-over": True, 'desc': "right"},
|
||||
{'t': 'click_and_teleport', 'p': (634, 452),'wait-over':True, "desc": "tp"},
|
||||
{'t': 'click', 'p': (524, 293), "wait-over": True, "desc": 'left'},
|
||||
{'t': 'click', 'p': (419, 305), "desc": "left"}
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
stage_data = {
|
||||
'5': {
|
||||
'SUB': 'burst1'
|
||||
},
|
||||
'5-1': {
|
||||
'start': {
|
||||
'burst1': (523, 305),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (703, 474), "wait-over": True ,"desc": "lower right"},
|
||||
{'t': 'click', 'p': (763, 464), "desc": "lower right"},
|
||||
|
||||
]
|
||||
},
|
||||
'5-2': {
|
||||
'start': {
|
||||
'burst1': (460, 474),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (652, 439), "wait-over": True, "desc": "right"},
|
||||
{'t': 'click', 'p': (772, 439), "desc": "right"},
|
||||
|
||||
]
|
||||
},
|
||||
'5-3': {
|
||||
'start': {
|
||||
'burst1': (524, 348),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (700, 474), "wait-over": True ,"desc": "lower right"},
|
||||
{'t': 'click', 'p': (775, 411), "wait-over": True ,"desc": "right"},
|
||||
{'t': 'click', 'p': (742, 258), "desc": "upper right"},
|
||||
]
|
||||
},
|
||||
'5-4': {
|
||||
'start': {
|
||||
'burst1': (460, 470),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (585, 356), "wait-over": True, 'desc': "upper right"},
|
||||
{'t': 'click', 'p': (619, 408), "wait-over": True, "desc": 'right'},
|
||||
{'t': 'click', 'p': (676, 492), "desc": "lower right"}
|
||||
|
||||
]
|
||||
},
|
||||
'5-5': {
|
||||
'start': {
|
||||
'burst1': (427, 386),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (625, 390), "wait-over": True, "desc": "right"},
|
||||
{'t': 'click', 'p': (568, 511), "wait-over": True, "desc": "lower right"},
|
||||
{'t': 'click', 'p': (700, 490), "wait-over": True, "desc": "right"},
|
||||
{'t': 'click', 'p': (695, 536), "desc": "lower right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
stage_data = {
|
||||
'6': {
|
||||
'SUB': 'pierce1',
|
||||
},
|
||||
'6-1': {
|
||||
'start': {
|
||||
'pierce1': (494, 269),
|
||||
'pierce2': (467, 548),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (682, 348), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (697, 490), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (781, 326), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (844, 328),'ec': True, "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
]
|
||||
},
|
||||
'6-2': {
|
||||
'start': {
|
||||
'pierce1': (460, 556),
|
||||
'pierce2': (499, 216),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (680, 418), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click', 'p': (695, 280), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (815, 447), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (775, 267), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (754, 413), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
]
|
||||
},
|
||||
'6-3': {
|
||||
'start': {
|
||||
'pierce1': (520, 560),
|
||||
'pierce2': (466, 146),
|
||||
},
|
||||
'attr': {
|
||||
'1': 'pierce1',
|
||||
'2': 'pierce2',
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (721, 420), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (647, 362), "wait-over": True, 'ec': True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (761, 408), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (700, 328), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (661, 386), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
'6-4': {
|
||||
'start': {
|
||||
'pierce1': (403, 347),
|
||||
'pierce2': (679, 285),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (629, 447), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (629, 447), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (692, 535), "wait-over": True, "desc": "1 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (625, 432), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
{'t': 'click', 'p': (851, 484),'ec': True, "desc": "1 right"},
|
||||
{'t': ''},
|
||||
]
|
||||
},
|
||||
'6-5': {
|
||||
'start': {
|
||||
'pierce1': (818, 261),
|
||||
'pierce2': (583, 225),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (715, 429), "ec": True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (535, 348), "wait-over": True, "ec": True, "desc": "2 lower left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (653, 352), "ec": True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (713, 446), "wait-over": True, "desc": "1 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (845, 461), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (530, 280), "wait-over": True, 'ec': True, "desc": "2 left"},
|
||||
|
||||
{'t': 'click', 'p': (877, 410), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
stage_data = {
|
||||
'7': {
|
||||
'SUB': 'burst1',
|
||||
},
|
||||
'7-1': {
|
||||
'start': {
|
||||
'burst1': (306, 470),
|
||||
'burst2': (511, 258),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (663, 461), "desc": "1 right and tp"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True, 'p': (622, 342), "desc": "2 right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (657, 309), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (596, 560), "wait-over": True, 'ec': True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (789, 278), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'end-turn'},
|
||||
]
|
||||
},
|
||||
'7-2': {
|
||||
'start': {
|
||||
'burst1': (373, 386),
|
||||
'burst2': (563, 306),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (700, 475), 'ec': True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (700, 475), "desc": "swap 1 2"},
|
||||
{'t': 'click_and_teleport', 'p': (819, 476), 'wait-over': True, "desc": "1 right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (607, 490), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'end-turn'},
|
||||
|
||||
]
|
||||
},
|
||||
'7-3': {
|
||||
'start': {
|
||||
'burst1': (579, 385),
|
||||
'burst2': (938, 476),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'p': (718, 345), 'ec': True, "desc": "2 upper left and tp"},
|
||||
{'t': 'choose_and_change', 'p': (564, 438), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (503, 522), 'wait-over': True, "desc": "1 lower left"},
|
||||
|
||||
{'t': 'click', 'p': (425, 481), 'ec': True, "desc": "1 left"},
|
||||
{'t': 'click_and_teleport', 'p': (682, 354), "desc": "2 lower right"},
|
||||
]
|
||||
},
|
||||
'7-4': {
|
||||
'start': {
|
||||
'burst1': (395, 559),
|
||||
'burst2': (486, 370),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (679, 463), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click_and_teleport', 'p': (619, 379), "wait-over": True, 'ec': True, "desc": "2 right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (715, 403), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (815, 275), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': ['exchange_and_click', 'teleport'], 'p': (770, 417), 'ec': True, "desc": "2 lower right and tp"},
|
||||
{'t': 'choose_and_change', 'p': (644, 455), "desc": "swap 1 2"},
|
||||
{'t': 'click_and_teleport', 'p': (641, 458), "wait-over": True, "desc": "1 teleport and tp"},
|
||||
{'t': 'click', 'p': (880, 300), "desc": "1 right"},
|
||||
|
||||
]
|
||||
},
|
||||
'7-5': {
|
||||
'start': {
|
||||
'burst1': (523, 385),
|
||||
'burst2': (813, 309),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (706, 418), "ec": True, "desc": "2 lower left"},
|
||||
{'t': 'choose_and_change', 'p': (706, 418), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (767, 500), 'wait-over': True, "desc": "1 lower right"},
|
||||
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (685, 565), "desc": "1 lower left and tp"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True, 'p': (555, 472), "desc": "2 lower right and tp"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (378, 423), 'ec': True, "desc": "2 left"},
|
||||
{'t': 'click', 'p': (889, 351), "desc": "1 right"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
stage_data = {
|
||||
'8': {
|
||||
'SUB': 'pierce1',
|
||||
},
|
||||
'8-1': {
|
||||
'start': {
|
||||
'pierce1': (640, 303),
|
||||
'pierce2': (518, 390),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (877, 392), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (431, 390), "wait-over": True, "desc": "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (436, 474), "ec": True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (784, 354), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (841, 443), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'ec': True, 'p': (556, 320), "desc": "2 upper right and tp"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (564, 515), "ec": True, "desc": "2 lower right"},
|
||||
{'t': 'click', 'p': (723, 451), "desc": "1 lower left"},
|
||||
|
||||
]
|
||||
},
|
||||
'8-2': {
|
||||
'start': {
|
||||
'pierce1': (730, 558),
|
||||
'pierce2': (567, 482),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (634, 390), 'ec': True, "desc": "1 upper left"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'ec': True, 'p': (513, 390), "desc": "2 upper left and tp"},
|
||||
|
||||
{'t': 'click', 'p': (838, 326), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (561, 281), "wait-over": True, 'ec': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (640, 319), "ec": True, "desc": "2 right"},
|
||||
{'t': 'click', 'p': (784, 372), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (466, 240), "ec": True, "desc": "2 upper left"},
|
||||
{'t': 'click', 'p': (840, 520), "desc": "1 lower right"},
|
||||
]
|
||||
},
|
||||
'8-3': {
|
||||
'start': {
|
||||
'pierce1': (404, 343),
|
||||
'pierce2': (618, 364),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (582, 474), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (582, 474), "desc": "swap 1 2"},
|
||||
{'t': 'click_and_teleport', 'wait-over': True, 'ec': True, 'p': (640, 559), "desc": "2 lower right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (707, 364), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (798, 229), "wait-over": True, 'ec': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'click', 'p': (647, 337), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (757, 282), "desc": "2 right"},
|
||||
]
|
||||
},
|
||||
'8-4': {
|
||||
'start': {
|
||||
'pierce1': (335, 561),
|
||||
'pierce2': (650, 451),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click_and_teleport', 'ec': True, 'p': (580, 308), "desc": "1 upper right and tp"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True, 'p': (670, 395), "desc": "2 upper right and tp"},
|
||||
|
||||
{'t': 'choose_and_change', 'p': (780, 357), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (899, 360), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True, 'p': (644, 314), "desc": "2 right and tp"},
|
||||
|
||||
{'t': 'click', 'p': (727, 428), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click', 'p': (653, 469), "wait-over": True, 'ec': True, "desc": "2 right"},
|
||||
|
||||
{'t': 'click', 'p': (900, 395), 'ec': True, "desc": "1 right"},
|
||||
|
||||
]
|
||||
},
|
||||
'8-5': {
|
||||
'start': {
|
||||
'pierce1': (396, 469),
|
||||
'pierce2': (577, 351),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'exchange_and_click', 'p': (698, 482), "ec": True, "desc": "2 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (698, 482), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (816, 472), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (889, 448), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True, 'p': (439, 495), "desc": "2 lower left and tp"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (731, 276), 'ec': True, "desc": "2 left"},
|
||||
{'t': 'click', 'p': (743, 428), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (810, 515), 'ec': True, "desc": "1 lower right"},
|
||||
{'t': 'click_and_teleport', "wait-over": True, 'ec': True,'p': (710, 281), "desc": "2 right and tp"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (556, 305), 'ec': True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (711, 542), "desc": "1 lower left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
stage_data = {
|
||||
'9': {
|
||||
'SUB': 'burst1',
|
||||
},
|
||||
'9-1': {
|
||||
'start': {
|
||||
'burst1': (492, 302),
|
||||
'pierce1': (812, 398),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (441, 415), 'ec': True, "desc": "1 lower left"},
|
||||
{'t': 'click', 'p': (664, 407), "wait-over": True, "desc": "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (675, 491), "ec": True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (556, 482), "wait-over": True, "desc": "1 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (838, 279), "ec": True, "desc": "2 upper right"},
|
||||
{'t': 'click', 'p': (570, 532), "desc": "1 lower right"},
|
||||
|
||||
]
|
||||
},
|
||||
'9-2': {
|
||||
'start': {
|
||||
'burst1': (430, 345),
|
||||
'pierce1': (923, 443),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (618, 366), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (725, 500), 'wait-over': True, 'ec': True, "desc": "2 lower left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (608, 485), "ec": True, "desc": "2 left"},
|
||||
{'t': 'click', 'p': (634, 328), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (657, 204), "desc": "1 upper right"},
|
||||
]
|
||||
},
|
||||
'9-3': {
|
||||
'start': {
|
||||
'burst1': (430, 386),
|
||||
'pierce1': (623, 556),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (631, 326), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (688, 407), 'wait-over': True, 'ec': True, "desc": "2 upper right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (682, 421), "ec": True, "desc": "2 upper right"},
|
||||
{'t': 'choose_and_change', 'p': (682, 421), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (807, 422), "wait-over": True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (840, 506), "desc": "1 lower right"},
|
||||
]
|
||||
},
|
||||
'9-4': {
|
||||
'start': {
|
||||
'burst1': (337, 555),
|
||||
'pierce1': (1116, 288),
|
||||
},
|
||||
'action': [
|
||||
{'t': 'click', 'p': (565, 352), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (713, 275), "wait-over": True, 'ec': True, "desc": "2 upper left"},
|
||||
|
||||
{'t': 'click', 'p': (555, 331), 'ec': True, "desc": "1 upper right"},
|
||||
{'t': 'click', 'p': (653, 341), "wait-over": True, 'ec': True, "desc": "2 left"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (707, 418), "ec": True, "desc": "2 lower left"},
|
||||
{'t': 'click', 'p': (591, 396), "wait-over": True, "desc": "1 lower right"},
|
||||
|
||||
{'t': 'click', 'p': (638, 440), 'ec': True, "desc": "1 right"},
|
||||
|
||||
]
|
||||
},
|
||||
'9-5': {
|
||||
'start': {
|
||||
'burst1': (433, 383),
|
||||
'pierce1': (626, 225),
|
||||
},
|
||||
'action': [
|
||||
|
||||
{'t': 'click', 'p': (628, 425), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (695, 335), "wait-over": True, 'ec': True, "desc": "2 lower right"},
|
||||
|
||||
{'t': 'exchange_and_click', 'p': (672, 354), "ec": True, "desc": "2 lower right"},
|
||||
{'t': 'choose_and_change', 'p': (672,354), "desc": "swap 1 2"},
|
||||
{'t': 'click', 'p': (795, 355), 'wait-over': True, "desc": "1 right"},
|
||||
|
||||
{'t': 'click', 'p': (902, 378), 'ec': True, "desc": "1 right"},
|
||||
{'t': 'click', 'p': (440, 303), "desc": "2 upper left"},
|
||||
]
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
from enum import Enum
|
||||
|
||||
class StageState(Enum):
|
||||
SUB = 0
|
||||
UNCLEARED = 1
|
||||
CLEARED = 2
|
||||
SSS = 3
|
||||
CHEST = 4
|
||||
|
||||
class Stage:
|
||||
def __init__(self, name, state, data):
|
||||
self.name = name
|
||||
self.state = state
|
||||
self.data = data
|
||||
|
||||
@property
|
||||
def formation_start_info(self):
|
||||
if self.state == StageState.SUB:
|
||||
return None
|
||||
return self.data["start"].items()
|
||||
|
||||
@property
|
||||
def start_info(self):
|
||||
if self.state == StageState.SUB:
|
||||
return None
|
||||
return self.data["start"].values()
|
||||
|
||||
@property
|
||||
def formation_info(self):
|
||||
if self.state == StageState.SUB:
|
||||
return self.data["SUB"]
|
||||
return self.data["start"].keys()
|
||||
|
||||
@property
|
||||
def action_info(self):
|
||||
if self.state == StageState.SUB:
|
||||
return None
|
||||
return self.data["action"]
|
||||
@@ -0,0 +1,154 @@
|
||||
from module.logger import logger
|
||||
from module.ocr.ocr import Digit
|
||||
from tasks.auto_mission.stage import StageState, Stage
|
||||
from tasks.auto_mission.copilot import Copilot
|
||||
from tasks.stage.assets.assets_stage_sweep import ENTER #SWEEP
|
||||
from tasks.auto_mission.assets.assets_auto_mission import *
|
||||
import importlib
|
||||
|
||||
class AutoMissionUI(Copilot):
|
||||
"""
|
||||
Class dedicated to navigate the mission page and check stages
|
||||
"""
|
||||
def get_stages_data(self, mode, area):
|
||||
# Dynamically generate the complete module path
|
||||
if mode == "N":
|
||||
module_path = f'tasks.auto_mission.normal_task.normal_task_' + str(area)
|
||||
else:
|
||||
module_path = f'tasks.auto_mission.hard_task.hard_task_' + str(area)
|
||||
# Import the specified module
|
||||
try:
|
||||
stage_module = importlib.import_module(module_path)
|
||||
stage_data = getattr(stage_module, 'stage_data', None)
|
||||
# Get stage_data data from the module
|
||||
return stage_data
|
||||
except ModuleNotFoundError:
|
||||
logger.error(f"Exploration not supported for area {area}, under development...")
|
||||
return None
|
||||
|
||||
def wait_mission_info(self, mode, open_task=False, max_retry=99999):
|
||||
"""
|
||||
Wait for the task information popup to load
|
||||
@param self:
|
||||
@return:
|
||||
"""
|
||||
while max_retry > 0:
|
||||
self.device.screenshot()
|
||||
# Main task
|
||||
if self.appear(ENTER):
|
||||
return 'main'
|
||||
# Side quest
|
||||
if mode == "N" and self.appear(ENTER_SUB):
|
||||
return 'side'
|
||||
# Open the task if needed
|
||||
if open_task:
|
||||
if mode == "N":
|
||||
self.device.swipe((917, 220), (917, 552))
|
||||
self.sleep(1)
|
||||
#click enter
|
||||
self.click(1118, 239)
|
||||
#self.sleep(1)
|
||||
max_retry -= 1
|
||||
logger.error("max_retry {0}".format(max_retry))
|
||||
return None
|
||||
|
||||
def check_stage_state(self, mode, completion_level):
|
||||
"""
|
||||
Check the current task type
|
||||
@param self:
|
||||
@return:
|
||||
"""
|
||||
# Wait for the task information popup to load
|
||||
self.wait_mission_info(mode)
|
||||
self.sleep(1)
|
||||
self.device.screenshot()
|
||||
# Side quest
|
||||
if mode == "N" and self.appear(ENTER_SUB):
|
||||
return StageState.SUB
|
||||
# Hard main task - Can collect gifts
|
||||
if completion_level == 'three_stars_chest' and self.appear(CHEST):
|
||||
return StageState.CHEST
|
||||
# Main task - Three stars
|
||||
if self.match_color(THREE_STARS):
|
||||
return StageState.SSS
|
||||
# Not cleared
|
||||
if self.match_color(ONE_STAR):
|
||||
return StageState.CLEARED
|
||||
# Main task - Cleared
|
||||
return StageState.UNCLEARED
|
||||
|
||||
def get_stage_info(self, stage_name, stage_state, stages_data, completion_level):
|
||||
possible_stages = []
|
||||
for stage in stages_data:
|
||||
if stage_name in stage:
|
||||
possible_stages.append(stage)
|
||||
if possible_stages:
|
||||
if stage_state == StageState.CHEST:
|
||||
for stage in possible_stages:
|
||||
if "present" in stage:
|
||||
return stages_data[stage]
|
||||
elif completion_level in ["three_stars", "three_stars_chest"]:
|
||||
for stage in possible_stages:
|
||||
if "sss" in stage:
|
||||
return stages_data[stage]
|
||||
elif completion_level in ["clear"]:
|
||||
for stage in possible_stages:
|
||||
if not "sss" in stage and "present" not in stage:
|
||||
return stages_data[stage]
|
||||
return stages_data[possible_stages[0]]
|
||||
return None
|
||||
|
||||
def check_stages(self, mode, area, stages_data, completion_level):
|
||||
"""
|
||||
Find the stage that needs to be battled
|
||||
@param self:
|
||||
@param region:
|
||||
@return:
|
||||
"""
|
||||
stage_index = 1
|
||||
max_index = 4 if mode == "H" else 6
|
||||
while 1:
|
||||
# Wait for the task information to load
|
||||
stage_state = self.check_stage_state(mode, completion_level)
|
||||
logger.info("Current stage status: {0}".format(stage_state))
|
||||
# Not cleared side quest
|
||||
if stage_state == StageState.SUB:
|
||||
logger.warning("Uncleared SUB stage, starting battle...")
|
||||
#return stage_state
|
||||
return Stage("SUB", stage_state, stages_data[str(area)])
|
||||
# Get the current stage
|
||||
stage_name = f"{area}-{stage_index}"
|
||||
stage_info = self.get_stage_info(stage_name, stage_state, stages_data, completion_level)
|
||||
if not stage_info:
|
||||
logger.error(f"Exploration not supported for the stage {stage_name}, under development...")
|
||||
return None
|
||||
# Not cleared main task
|
||||
if stage_state == StageState.UNCLEARED:
|
||||
logger.warning(f"{stage_name} Not cleared main stage, starting battle...")
|
||||
return Stage(stage_name, stage_state, stage_info)
|
||||
# Mode 2 ⭐️⭐️⭐️ or ⭐️⭐️⭐️ + box gift
|
||||
if completion_level in ["three_stars", "three_stars_chest"]:
|
||||
if stage_state == StageState.CHEST:
|
||||
logger.warning(f"{stage_name} Found chest, starting battle...")
|
||||
return Stage(stage_name, stage_state, stage_info)
|
||||
if stage_state != StageState.SSS:
|
||||
logger.warning(f"{stage_name} Not three-star cleared, starting battle...")
|
||||
return Stage(stage_name, stage_state, stage_info)
|
||||
# Click on the next stage
|
||||
logger.info(f"{stage_name} already meets specified completion level, searching for the next stage")
|
||||
self.click(1172, 358, interval=0)
|
||||
# Check if still in the same region
|
||||
stage_index += 1
|
||||
if stage_index >= max_index:
|
||||
self.sleep(1)
|
||||
self.device.screenshot()
|
||||
if area != Digit(OCR_AREA).ocr_single_line(self.device.image):
|
||||
return None
|
||||
|
||||
def start_stage(self, stage):
|
||||
# Click to start the task
|
||||
if stage.state == StageState.SUB:
|
||||
self.select_then_check(ENTER_SUB, MOBILIZE)
|
||||
else:
|
||||
self.select_then_check(ENTER, MISSION_INFO)
|
||||
# Wait for the map to load
|
||||
Reference in New Issue
Block a user