1
0
mirror of https://github.com/TheFunny/ArisuAutoSweeper synced 2025-12-16 22:05:12 +00:00

feat: auto-mission

This commit is contained in:
RedDeadDepresso 2024-01-19 22:59:55 +00:00
parent a5d478ce56
commit 16453898d1
111 changed files with 3853 additions and 1 deletions

4
aas.py
View File

@ -66,6 +66,10 @@ class ArisuAutoSweeper(AzurLaneAutoScript):
from tasks.schedule.schedule import Schedule
Schedule(config=self.config, device=self.device).run()
def auto_mission(self):
from tasks.auto_mission.auto_mission import AutoMission
AutoMission(config=self.config, device=self.device).run()
def data_update(self):
from tasks.item.data_update import DataUpdate
DataUpdate(config=self.config, device=self.device).run()

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -49,6 +49,35 @@
"TacticalChallengeTicket": {}
}
},
"Auto_Mission": {
"Scheduler": {
"Enable": false,
"NextRun": "2020-01-01 00:00:00",
"Command": "Auto_Mission",
"ServerUpdate": "04:00"
},
"Formation": {
"burst1": 1,
"burst2": 1,
"pierce1": 1,
"pierce2": 1,
"mystic1": 1,
"mystic2": 1
},
"ManualBoss": {
"Enable": false
},
"Normal": {
"Enable": false,
"Area": 2,
"Completion": "clear"
},
"Hard": {
"Enable": false,
"Area": 2,
"Completion": "clear"
}
},
"Cafe": {
"Scheduler": {
"Enable": true,

View File

@ -246,6 +246,138 @@
}
}
},
"Auto_Mission": {
"Scheduler": {
"Enable": {
"type": "checkbox",
"value": false,
"option": [
true,
false
]
},
"NextRun": {
"type": "datetime",
"value": "2020-01-01 00:00:00",
"validate": "datetime"
},
"Command": {
"type": "input",
"value": "Auto_Mission",
"display": "hide"
},
"ServerUpdate": {
"type": "input",
"value": "04:00",
"display": "hide"
}
},
"Formation": {
"burst1": {
"type": "select",
"value": 1,
"option": [
1,
2,
3,
4
]
},
"burst2": {
"type": "select",
"value": 1,
"option": [
1,
2,
3,
4
]
},
"pierce1": {
"type": "select",
"value": 1,
"option": [
1,
2,
3,
4
]
},
"pierce2": {
"type": "select",
"value": 1,
"option": [
1,
2,
3,
4
]
},
"mystic1": {
"type": "select",
"value": 1,
"option": [
1,
2,
3,
4
]
},
"mystic2": {
"type": "select",
"value": 1,
"option": [
1,
2,
3,
4
]
}
},
"ManualBoss": {
"Enable": {
"type": "checkbox",
"value": false
}
},
"Normal": {
"Enable": {
"type": "checkbox",
"value": false
},
"Area": {
"type": "input",
"value": 2
},
"Completion": {
"type": "select",
"value": "clear",
"option": [
"clear",
"three_stars"
]
}
},
"Hard": {
"Enable": {
"type": "checkbox",
"value": false
},
"Area": {
"type": "input",
"value": 2
},
"Completion": {
"type": "select",
"value": "clear",
"option": [
"clear",
"three_stars",
"three_stars_chest"
]
}
}
},
"Cafe": {
"Scheduler": {
"Enable": {

View File

@ -242,6 +242,43 @@ TacticalChallengeShop:
"14": false
"15": false
Formation:
burst1:
value: 1
option: [ 1, 2, 3, 4 ]
burst2:
value: 1
option: [ 1, 2, 3, 4 ]
pierce1:
value: 1
option: [ 1, 2, 3, 4 ]
pierce2:
value: 1
option: [ 1, 2, 3, 4 ]
mystic1:
value: 1
option: [ 1, 2, 3, 4 ]
mystic2:
value: 1
option: [ 1, 2, 3, 4 ]
ManualBoss:
Enable: false
Normal:
Enable: false
Area: 2
Completion:
value: clear
option: [ clear, three_stars]
Hard:
Enable: false
Area: 2
Completion:
value: clear
option: [ clear, three_stars, three_stars_chest]
ItemStorage:
AP:
stored: StoredAP

View File

@ -8,6 +8,13 @@
"DataUpdate"
]
},
"Copilot": {
"menu": "collapse",
"page": "setting",
"tasks": [
"Auto_Mission"
]
},
"Daily": {
"menu": "collapse",
"page": "setting",

View File

@ -19,6 +19,19 @@ Alas:
- Scheduler
- ItemStorage
# ==================== Copilot ====================
Copilot:
menu: 'collapse'
page: 'setting'
tasks:
Auto_Mission:
- Scheduler
- Formation
- ManualBoss
- Normal
- Hard
# ==================== Daily ====================
Daily:

View File

@ -159,6 +159,27 @@ class GeneratedConfig:
TacticalChallengeShop_14 = False
TacticalChallengeShop_15 = False
# Group `Formation`
Formation_burst1 = 1 # 1, 2, 3, 4
Formation_burst2 = 1 # 1, 2, 3, 4
Formation_pierce1 = 1 # 1, 2, 3, 4
Formation_pierce2 = 1 # 1, 2, 3, 4
Formation_mystic1 = 1 # 1, 2, 3, 4
Formation_mystic2 = 1 # 1, 2, 3, 4
# Group `ManualBoss`
ManualBoss_Enable = False
# Group `Normal`
Normal_Enable = False
Normal_Area = 2
Normal_Completion = 'clear' # clear, three_stars
# Group `Hard`
Hard_Enable = False
Hard_Area = 2
Hard_Completion = 'clear' # clear, three_stars, three_stars_chest
# Group `ItemStorage`
ItemStorage_AP = {}
ItemStorage_Credit = {}

View File

@ -9,7 +9,7 @@ class ManualConfig:
SCHEDULER_PRIORITY = """
Restart
> Cafe > TacticalChallenge > Circle > Mail
> DataUpdate > Bounty > Scrimmage > Schedule > Task > Shop > Mission > Momotalk
> DataUpdate > Bounty > Scrimmage > Schedule > Task > Shop > Mission > Momotalk > Auto_Mission
"""
"""

View File

@ -4,6 +4,10 @@
"name": "AAS",
"help": ""
},
"Copilot": {
"name": "Copilot",
"help": ""
},
"Daily": {
"name": "Daily",
"help": ""
@ -30,6 +34,10 @@
"name": "Dashboard Upd",
"help": ""
},
"Auto_Mission": {
"name": "Auto-Mission",
"help": ""
},
"Cafe": {
"name": "Cafe",
"help": ""
@ -816,6 +824,111 @@
"help": "x125k Credits - 100 Coins"
}
},
"Formation": {
"_info": {
"name": "Formation",
"help": "Select the unit for each type"
},
"burst1": {
"name": "Explosive 1",
"help": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"burst2": {
"name": "Explosive 2",
"help": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"pierce1": {
"name": "Piercing 1",
"help": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"pierce2": {
"name": "Piercing 2",
"help": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"mystic1": {
"name": "Mystic 1",
"help": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"mystic2": {
"name": "Mystic 2",
"help": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
}
},
"ManualBoss": {
"_info": {
"name": "Manual Boss",
"help": "AAS will wait for the user to take over when encountering the boss"
},
"Enable": {
"name": "Enable",
"help": ""
}
},
"Normal": {
"_info": {
"name": "Normal",
"help": ""
},
"Enable": {
"name": "Enable",
"help": ""
},
"Area": {
"name": "Area",
"help": ""
},
"Completion": {
"name": "Completion level",
"help": "",
"clear": "Clear",
"three_stars": "3 Stars"
}
},
"Hard": {
"_info": {
"name": "Hard",
"help": ""
},
"Enable": {
"name": "Enable",
"help": ""
},
"Area": {
"name": "Area",
"help": ""
},
"Completion": {
"name": "Completion level",
"help": "",
"clear": "Clear",
"three_stars": "3 Stars",
"three_stars_chest": "3 Stars + Chest"
}
},
"ItemStorage": {
"_info": {
"name": "ItemStorage._info.name",

View File

@ -4,6 +4,10 @@
"name": "AAS",
"help": ""
},
"Copilot": {
"name": "Menu.Copilot.name",
"help": "Menu.Copilot.help"
},
"Daily": {
"name": "每日",
"help": ""
@ -30,6 +34,10 @@
"name": "仪表盘更新",
"help": ""
},
"Auto_Mission": {
"name": "Task.Auto_Mission.name",
"help": "Task.Auto_Mission.help"
},
"Cafe": {
"name": "咖啡厅",
"help": ""
@ -816,6 +824,111 @@
"help": "x125k 信用点 - 100 战术硬币"
}
},
"Formation": {
"_info": {
"name": "Formation._info.name",
"help": "Formation._info.help"
},
"burst1": {
"name": "Formation.burst1.name",
"help": "Formation.burst1.help",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"burst2": {
"name": "Formation.burst2.name",
"help": "Formation.burst2.help",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"pierce1": {
"name": "Formation.pierce1.name",
"help": "Formation.pierce1.help",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"pierce2": {
"name": "Formation.pierce2.name",
"help": "Formation.pierce2.help",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"mystic1": {
"name": "Formation.mystic1.name",
"help": "Formation.mystic1.help",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
},
"mystic2": {
"name": "Formation.mystic2.name",
"help": "Formation.mystic2.help",
"1": "1",
"2": "2",
"3": "3",
"4": "4"
}
},
"ManualBoss": {
"_info": {
"name": "ManualBoss._info.name",
"help": "ManualBoss._info.help"
},
"Enable": {
"name": "ManualBoss.Enable.name",
"help": "ManualBoss.Enable.help"
}
},
"Normal": {
"_info": {
"name": "Normal._info.name",
"help": "Normal._info.help"
},
"Enable": {
"name": "Normal.Enable.name",
"help": "Normal.Enable.help"
},
"Area": {
"name": "Normal.Area.name",
"help": "Normal.Area.help"
},
"Completion": {
"name": "Normal.Completion.name",
"help": "Normal.Completion.help",
"clear": "clear",
"three_stars": "three_stars"
}
},
"Hard": {
"_info": {
"name": "Hard._info.name",
"help": "Hard._info.help"
},
"Enable": {
"name": "Hard.Enable.name",
"help": "Hard.Enable.help"
},
"Area": {
"name": "Hard.Area.name",
"help": "Hard.Area.help"
},
"Completion": {
"name": "Hard.Completion.name",
"help": "Hard.Completion.help",
"clear": "clear",
"three_stars": "three_stars",
"three_stars_chest": "three_stars_chest"
}
},
"ItemStorage": {
"_info": {
"name": "ItemStorage._info.name",

View File

@ -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),
),
)

View File

@ -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)

View File

@ -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()

View File

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

View File

@ -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"},
]
},
}

Some files were not shown because too many files have changed in this diff Show More