1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-27 20:17:17 +08:00
This commit is contained in:
2025-11-26 15:15:31 +08:00
52 changed files with 565 additions and 398 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -269,3 +269,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
| 20251113 | event 20230914 cn | Effulgence Before Eclipse | 复刻须臾望月抄 | Effulgence Before Eclipse Rerun | 須臾望月抄(復刻) | - | | 20251113 | event 20230914 cn | Effulgence Before Eclipse | 复刻须臾望月抄 | Effulgence Before Eclipse Rerun | 須臾望月抄(復刻) | - |
| 20251120 | coalition 20251120 | DATE A LANE | DATE A LANE | DATE A LANE | DATE A LANE | - | | 20251120 | coalition 20251120 | DATE A LANE | DATE A LANE | DATE A LANE | DATE A LANE | - |
| 20251121 | event 20220428 cn | Rondo at Rainbow's End | - | - | - | 復刻虹彩的終幕曲 | | 20251121 | event 20220428 cn | Rondo at Rainbow's End | - | - | - | 復刻虹彩的終幕曲 |
| 20251120 | coalition 20251120 | DATE A LANE | DATE A LANE | DATE A LANE | DATE A LANE | - |

View File

@@ -11,10 +11,10 @@ MAP.map_data = """
-- ++ ++ ++ -- MB MB MB -- ++ ++ ++ -- MB MB MB
ME -- -- MS -- Me -- ++ ME -- -- MS -- Me -- ++
-- ME ++ -- __ -- ME ++ -- ME ++ -- __ -- ME ++
-- -- -- -- ME ME -- -- -- -- -- Me ME ME -- --
++ SP -- ME -- ++ -- -- ++ SP -- ME -- ++ -- --
++ SP -- -- Me -- MS ME ++ SP -- -- Me -- MS ME
++ ++ -- -- ME -- Me -- ++ ++ Me -- ME -- Me --
""" """
MAP.weight_data = """ MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50

View File

@@ -13,8 +13,8 @@ MAP.map_data = """
-- -- -- -- MS -- MS ++ -- -- -- -- MS -- MS ++
-- -- Me -- -- -- -- ME -- -- Me -- -- -- -- ME
ME __ -- Me -- ++ -- -- ME __ -- Me -- ++ -- --
Me MS ME -- MS -- -- ME Me MS ME -- MS -- Me ME
++ ++ -- -- ++ ME -- -- ++ ++ -- Me ++ ME -- --
++ ++ ME -- ME -- SP SP ++ ++ ME -- ME -- SP SP
""" """
MAP.map_data_loop = """ MAP.map_data_loop = """

View File

@@ -11,10 +11,10 @@ MAP.map_data = """
-- ++ ++ ++ -- MB MB MB -- ++ ++ ++ -- MB MB MB
ME -- -- MS -- Me -- ++ ME -- -- MS -- Me -- ++
-- ME ++ -- __ -- ME ++ -- ME ++ -- __ -- ME ++
-- -- -- -- ME ME -- -- -- -- -- Me ME ME -- --
++ SP -- ME -- ++ -- -- ++ SP -- ME -- ++ -- --
++ SP -- -- Me -- MS ME ++ SP -- -- Me -- MS ME
++ ++ -- -- ME -- Me -- ++ ++ Me -- ME -- Me --
""" """
MAP.weight_data = """ MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50

View File

@@ -13,8 +13,8 @@ MAP.map_data = """
-- -- -- -- MS -- MS ++ -- -- -- -- MS -- MS ++
-- -- Me -- -- -- -- ME -- -- Me -- -- -- -- ME
ME __ -- Me -- ++ -- -- ME __ -- Me -- ++ -- --
Me MS ME -- MS -- -- ME Me MS ME -- MS -- Me ME
++ ++ -- -- ++ ME -- -- ++ ++ -- Me ++ ME -- --
++ ++ ME -- ME -- SP SP ++ ++ ME -- ME -- SP SP
""" """
MAP.map_data_loop = """ MAP.map_data_loop = """

View File

@@ -11,10 +11,10 @@ MAP.map_data = """
-- ++ ++ ++ -- MB MB MB -- ++ ++ ++ -- MB MB MB
ME -- -- MS -- Me -- ++ ME -- -- MS -- Me -- ++
-- ME ++ -- __ -- ME ++ -- ME ++ -- __ -- ME ++
-- -- -- -- ME ME -- -- -- -- -- Me ME ME -- --
++ SP -- ME -- ++ -- -- ++ SP -- ME -- ++ -- --
++ SP -- -- Me -- MS ME ++ SP -- -- Me -- MS ME
++ ++ -- -- ME -- Me -- ++ ++ Me -- ME -- Me --
""" """
MAP.weight_data = """ MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50

View File

@@ -13,8 +13,8 @@ MAP.map_data = """
-- -- -- -- MS -- MS ++ -- -- -- -- MS -- MS ++
-- -- Me -- -- -- -- ME -- -- Me -- -- -- -- ME
ME __ -- Me -- ++ -- -- ME __ -- Me -- ++ -- --
Me MS ME -- MS -- -- ME Me MS ME -- MS -- Me ME
++ ++ -- -- ++ ME -- -- ++ ++ -- Me ++ ME -- --
++ ++ ME -- ME -- SP SP ++ ++ ME -- ME -- SP SP
""" """
MAP.map_data_loop = """ MAP.map_data_loop = """

View File

@@ -11,10 +11,10 @@ MAP.map_data = """
-- ++ ++ ++ -- MB MB MB -- ++ ++ ++ -- MB MB MB
ME -- -- MS -- Me -- ++ ME -- -- MS -- Me -- ++
-- ME ++ -- __ -- ME ++ -- ME ++ -- __ -- ME ++
-- -- -- -- ME ME -- -- -- -- -- Me ME ME -- --
++ SP -- ME -- ++ -- -- ++ SP -- ME -- ++ -- --
++ SP -- -- Me -- MS ME ++ SP -- -- Me -- MS ME
++ ++ -- -- ME -- Me -- ++ ++ Me -- ME -- Me --
""" """
MAP.weight_data = """ MAP.weight_data = """
50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50

View File

@@ -13,8 +13,8 @@ MAP.map_data = """
-- -- -- -- MS -- MS ++ -- -- -- -- MS -- MS ++
-- -- Me -- -- -- -- ME -- -- Me -- -- -- -- ME
ME __ -- Me -- ++ -- -- ME __ -- Me -- ++ -- --
Me MS ME -- MS -- -- ME Me MS ME -- MS -- Me ME
++ ++ -- -- ++ ME -- -- ++ ++ -- Me ++ ME -- --
++ ++ ME -- ME -- SP SP ++ ++ ME -- ME -- SP SP
""" """
MAP.map_data_loop = """ MAP.map_data_loop = """

View File

@@ -465,6 +465,56 @@
"Storage": {} "Storage": {}
} }
}, },
"Coalition": {
"Scheduler": {
"Enable": false,
"NextRun": "2020-01-01 00:00:00",
"Command": "Coalition",
"SuccessInterval": 30,
"FailureInterval": 30,
"ServerUpdate": "00:00"
},
"Campaign": {
"Name": "dynamic",
"Event": "campaign_main",
"Mode": "normal",
"UseClearMode": true,
"UseFleetLock": true,
"UseAutoSearch": false,
"Use2xBook": false,
"AmbushEvade": true
},
"Coalition": {
"Mode": "area1-normal",
"Fleet": "single"
},
"StopCondition": {
"OilLimit": 1000,
"RunCount": 0,
"MapAchievement": "non_stop",
"StageIncrease": false,
"GetNewShip": false,
"ReachLevel": 0
},
"Emotion": {
"Mode": "calculate",
"Fleet1Value": 119,
"Fleet1Record": "2020-01-01 00:00:00",
"Fleet1Control": "prevent_yellow_face",
"Fleet1Recover": "not_in_dormitory",
"Fleet1Oath": false,
"Fleet1Onsen": false,
"Fleet2Value": 119,
"Fleet2Record": "2020-01-01 00:00:00",
"Fleet2Control": "prevent_yellow_face",
"Fleet2Recover": "not_in_dormitory",
"Fleet2Oath": false,
"Fleet2Onsen": false
},
"Storage": {
"Storage": {}
}
},
"Event": { "Event": {
"Scheduler": { "Scheduler": {
"Enable": false, "Enable": false,
@@ -706,56 +756,6 @@
"Storage": {} "Storage": {}
} }
}, },
"Coalition": {
"Scheduler": {
"Enable": false,
"NextRun": "2020-01-01 00:00:00",
"Command": "Coalition",
"SuccessInterval": 30,
"FailureInterval": 30,
"ServerUpdate": "00:00"
},
"Campaign": {
"Name": "dynamic",
"Event": "campaign_main",
"Mode": "normal",
"UseClearMode": true,
"UseFleetLock": true,
"UseAutoSearch": false,
"Use2xBook": false,
"AmbushEvade": true
},
"Coalition": {
"Mode": "hard",
"Fleet": "single"
},
"StopCondition": {
"OilLimit": 1000,
"RunCount": 0,
"MapAchievement": "non_stop",
"StageIncrease": false,
"GetNewShip": false,
"ReachLevel": 0
},
"Emotion": {
"Mode": "calculate",
"Fleet1Value": 119,
"Fleet1Record": "2020-01-01 00:00:00",
"Fleet1Control": "prevent_yellow_face",
"Fleet1Recover": "not_in_dormitory",
"Fleet1Oath": false,
"Fleet1Onsen": false,
"Fleet2Value": 119,
"Fleet2Record": "2020-01-01 00:00:00",
"Fleet2Control": "prevent_yellow_face",
"Fleet2Recover": "not_in_dormitory",
"Fleet2Oath": false,
"Fleet2Onsen": false
},
"Storage": {
"Storage": {}
}
},
"MaritimeEscort": { "MaritimeEscort": {
"Scheduler": { "Scheduler": {
"Enable": false, "Enable": false,
@@ -1313,7 +1313,7 @@
"AmbushEvade": true "AmbushEvade": true
}, },
"Coalition": { "Coalition": {
"Mode": "sp", "Mode": "area1-normal",
"Fleet": "single" "Fleet": "single"
}, },
"StopCondition": { "StopCondition": {

View File

@@ -21,6 +21,19 @@ COALITION_ACADEMY_GOTO_CAMPAIGN = Button(area={'cn': (1123, 615, 1159, 651), 'en
COALITION_ACADEMY_HOME = Button(area={'cn': (1221, 48, 1244, 73), 'en': (1221, 48, 1244, 73), 'jp': (1221, 48, 1244, 73), 'tw': (1221, 48, 1244, 73)}, color={'cn': (182, 197, 203), 'en': (182, 197, 203), 'jp': (182, 197, 203), 'tw': (182, 197, 203)}, button={'cn': (1221, 48, 1244, 73), 'en': (1221, 48, 1244, 73), 'jp': (1221, 48, 1244, 73), 'tw': (1221, 48, 1244, 73)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_HOME.png', 'en': './assets/en/coalition/COALITION_ACADEMY_HOME.png', 'jp': './assets/jp/coalition/COALITION_ACADEMY_HOME.png', 'tw': './assets/tw/coalition/COALITION_ACADEMY_HOME.png'}) COALITION_ACADEMY_HOME = Button(area={'cn': (1221, 48, 1244, 73), 'en': (1221, 48, 1244, 73), 'jp': (1221, 48, 1244, 73), 'tw': (1221, 48, 1244, 73)}, color={'cn': (182, 197, 203), 'en': (182, 197, 203), 'jp': (182, 197, 203), 'tw': (182, 197, 203)}, button={'cn': (1221, 48, 1244, 73), 'en': (1221, 48, 1244, 73), 'jp': (1221, 48, 1244, 73), 'tw': (1221, 48, 1244, 73)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_HOME.png', 'en': './assets/en/coalition/COALITION_ACADEMY_HOME.png', 'jp': './assets/jp/coalition/COALITION_ACADEMY_HOME.png', 'tw': './assets/tw/coalition/COALITION_ACADEMY_HOME.png'})
COALITION_ACADEMY_MAIN_CHECK = Button(area={'cn': (132, 57, 163, 92), 'en': (164, 57, 221, 78), 'jp': (112, 44, 145, 86), 'tw': (346, 48, 427, 89)}, color={'cn': (143, 202, 205), 'en': (205, 189, 166), 'jp': (142, 155, 153), 'tw': (178, 145, 124)}, button={'cn': (132, 57, 163, 92), 'en': (164, 57, 221, 78), 'jp': (112, 44, 145, 86), 'tw': (346, 48, 427, 89)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'en': './assets/en/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'jp': './assets/jp/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'tw': './assets/tw/coalition/COALITION_ACADEMY_MAIN_CHECK.png'}) COALITION_ACADEMY_MAIN_CHECK = Button(area={'cn': (132, 57, 163, 92), 'en': (164, 57, 221, 78), 'jp': (112, 44, 145, 86), 'tw': (346, 48, 427, 89)}, color={'cn': (143, 202, 205), 'en': (205, 189, 166), 'jp': (142, 155, 153), 'tw': (178, 145, 124)}, button={'cn': (132, 57, 163, 92), 'en': (164, 57, 221, 78), 'jp': (112, 44, 145, 86), 'tw': (346, 48, 427, 89)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'en': './assets/en/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'jp': './assets/jp/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'tw': './assets/tw/coalition/COALITION_ACADEMY_MAIN_CHECK.png'})
COALITION_REWARD_CONFIRM = Button(area={'cn': (814, 611, 877, 637), 'en': (788, 612, 902, 634), 'jp': (814, 611, 876, 637), 'tw': (814, 611, 877, 637)}, color={'cn': (155, 186, 227), 'en': (162, 189, 226), 'jp': (143, 176, 219), 'tw': (150, 181, 221)}, button={'cn': (814, 611, 877, 637), 'en': (788, 612, 902, 634), 'jp': (814, 611, 876, 637), 'tw': (814, 611, 877, 637)}, file={'cn': './assets/cn/coalition/COALITION_REWARD_CONFIRM.png', 'en': './assets/en/coalition/COALITION_REWARD_CONFIRM.png', 'jp': './assets/jp/coalition/COALITION_REWARD_CONFIRM.png', 'tw': './assets/tw/coalition/COALITION_REWARD_CONFIRM.png'}) COALITION_REWARD_CONFIRM = Button(area={'cn': (814, 611, 877, 637), 'en': (788, 612, 902, 634), 'jp': (814, 611, 876, 637), 'tw': (814, 611, 877, 637)}, color={'cn': (155, 186, 227), 'en': (162, 189, 226), 'jp': (143, 176, 219), 'tw': (150, 181, 221)}, button={'cn': (814, 611, 877, 637), 'en': (788, 612, 902, 634), 'jp': (814, 611, 876, 637), 'tw': (814, 611, 877, 637)}, file={'cn': './assets/cn/coalition/COALITION_REWARD_CONFIRM.png', 'en': './assets/en/coalition/COALITION_REWARD_CONFIRM.png', 'jp': './assets/jp/coalition/COALITION_REWARD_CONFIRM.png', 'tw': './assets/tw/coalition/COALITION_REWARD_CONFIRM.png'})
DAL_AREA1 = Button(area={'cn': (167, 494, 227, 554), 'en': (167, 494, 227, 554), 'jp': (167, 494, 227, 554), 'tw': (167, 494, 227, 554)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (167, 494, 227, 554), 'en': (167, 494, 227, 554), 'jp': (167, 494, 227, 554), 'tw': (167, 494, 227, 554)}, file={'cn': './assets/cn/coalition/DAL_AREA1.png', 'en': './assets/cn/coalition/DAL_AREA1.png', 'jp': './assets/jp/coalition/DAL_AREA1.png', 'tw': './assets/cn/coalition/DAL_AREA1.png'})
DAL_AREA2 = Button(area={'cn': (407, 378, 467, 438), 'en': (407, 378, 467, 438), 'jp': (407, 378, 467, 438), 'tw': (407, 378, 467, 438)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (407, 378, 467, 438), 'en': (407, 378, 467, 438), 'jp': (407, 378, 467, 438), 'tw': (407, 378, 467, 438)}, file={'cn': './assets/cn/coalition/DAL_AREA2.png', 'en': './assets/cn/coalition/DAL_AREA2.png', 'jp': './assets/jp/coalition/DAL_AREA2.png', 'tw': './assets/cn/coalition/DAL_AREA2.png'})
DAL_AREA3 = Button(area={'cn': (787, 488, 847, 548), 'en': (787, 488, 847, 548), 'jp': (787, 488, 847, 548), 'tw': (787, 488, 847, 548)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (787, 488, 847, 548), 'en': (787, 488, 847, 548), 'jp': (787, 488, 847, 548), 'tw': (787, 488, 847, 548)}, file={'cn': './assets/cn/coalition/DAL_AREA3.png', 'en': './assets/cn/coalition/DAL_AREA3.png', 'jp': './assets/jp/coalition/DAL_AREA3.png', 'tw': './assets/cn/coalition/DAL_AREA3.png'})
DAL_AREA4 = Button(area={'cn': (904, 245, 964, 305), 'en': (904, 245, 964, 305), 'jp': (904, 245, 964, 305), 'tw': (904, 245, 964, 305)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (904, 245, 964, 305), 'en': (904, 245, 964, 305), 'jp': (904, 245, 964, 305), 'tw': (904, 245, 964, 305)}, file={'cn': './assets/cn/coalition/DAL_AREA4.png', 'en': './assets/cn/coalition/DAL_AREA4.png', 'jp': './assets/jp/coalition/DAL_AREA4.png', 'tw': './assets/cn/coalition/DAL_AREA4.png'})
DAL_AREA5 = Button(area={'cn': (552, 130, 612, 190), 'en': (552, 130, 612, 190), 'jp': (552, 130, 612, 190), 'tw': (552, 130, 612, 190)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (552, 130, 612, 190), 'en': (552, 130, 612, 190), 'jp': (552, 130, 612, 190), 'tw': (552, 130, 612, 190)}, file={'cn': './assets/cn/coalition/DAL_AREA5.png', 'en': './assets/cn/coalition/DAL_AREA5.png', 'jp': './assets/jp/coalition/DAL_AREA5.png', 'tw': './assets/cn/coalition/DAL_AREA5.png'})
DAL_AREA6 = Button(area={'cn': (656, 303, 716, 363), 'en': (656, 303, 716, 363), 'jp': (656, 303, 716, 363), 'tw': (656, 303, 716, 363)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (656, 303, 716, 363), 'en': (656, 303, 716, 363), 'jp': (656, 303, 716, 363), 'tw': (656, 303, 716, 363)}, file={'cn': './assets/cn/coalition/DAL_AREA6.png', 'en': './assets/cn/coalition/DAL_AREA6.png', 'jp': './assets/jp/coalition/DAL_AREA6.png', 'tw': './assets/cn/coalition/DAL_AREA6.png'})
DAL_DIFFICULTY_EXIT = Button(area={'cn': (1208, 70, 1244, 107), 'en': (1208, 70, 1244, 107), 'jp': (1208, 70, 1244, 107), 'tw': (1208, 70, 1244, 107)}, color={'cn': (122, 158, 172), 'en': (122, 158, 172), 'jp': (122, 158, 172), 'tw': (122, 158, 172)}, button={'cn': (1208, 70, 1244, 107), 'en': (1208, 70, 1244, 107), 'jp': (1208, 70, 1244, 107), 'tw': (1208, 70, 1244, 107)}, file={'cn': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png', 'en': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png', 'jp': './assets/jp/coalition/DAL_DIFFICULTY_EXIT.png', 'tw': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png'})
DAL_FLEET_PREPARATION = Button(area={'cn': (1016, 529, 1100, 550), 'en': (1016, 529, 1100, 550), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1100, 550)}, color={'cn': (135, 215, 236), 'en': (135, 215, 236), 'jp': (85, 198, 228), 'tw': (135, 215, 236)}, button={'cn': (1016, 529, 1100, 550), 'en': (1016, 529, 1100, 550), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1100, 550)}, file={'cn': './assets/cn/coalition/DAL_FLEET_PREPARATION.png', 'en': './assets/cn/coalition/DAL_FLEET_PREPARATION.png', 'jp': './assets/jp/coalition/DAL_FLEET_PREPARATION.png', 'tw': './assets/cn/coalition/DAL_FLEET_PREPARATION.png'})
DAL_HARD = Button(area={'cn': (893, 582, 1109, 611), 'en': (893, 582, 1109, 611), 'jp': (893, 582, 1109, 611), 'tw': (893, 582, 1109, 611)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (893, 582, 1109, 611), 'en': (893, 582, 1109, 611), 'jp': (893, 582, 1109, 611), 'tw': (893, 582, 1109, 611)}, file={'cn': './assets/cn/coalition/DAL_HARD.png', 'en': './assets/cn/coalition/DAL_HARD.png', 'jp': './assets/jp/coalition/DAL_HARD.png', 'tw': './assets/cn/coalition/DAL_HARD.png'})
DAL_NORMAL = Button(area={'cn': (600, 583, 818, 610), 'en': (600, 583, 818, 610), 'jp': (600, 583, 818, 610), 'tw': (600, 583, 818, 610)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (600, 583, 818, 610), 'en': (600, 583, 818, 610), 'jp': (600, 583, 818, 610), 'tw': (600, 583, 818, 610)}, file={'cn': './assets/cn/coalition/DAL_NORMAL.png', 'en': './assets/cn/coalition/DAL_NORMAL.png', 'jp': './assets/jp/coalition/DAL_NORMAL.png', 'tw': './assets/cn/coalition/DAL_NORMAL.png'})
DAL_PT_OCR = Button(area={'cn': (1190, 130, 1274, 161), 'en': (1190, 130, 1274, 161), 'jp': (1190, 130, 1274, 161), 'tw': (1190, 130, 1274, 161)}, color={'cn': (79, 86, 72), 'en': (79, 86, 72), 'jp': (79, 86, 72), 'tw': (79, 86, 72)}, button={'cn': (1190, 130, 1274, 161), 'en': (1190, 130, 1274, 161), 'jp': (1190, 130, 1274, 161), 'tw': (1190, 130, 1274, 161)}, file={'cn': './assets/cn/coalition/DAL_PT_OCR.png', 'en': './assets/cn/coalition/DAL_PT_OCR.png', 'jp': './assets/jp/coalition/DAL_PT_OCR.png', 'tw': './assets/cn/coalition/DAL_PT_OCR.png'})
DAL_SWITCH_MULTI = Button(area={'cn': (1060, 473, 1204, 500), 'en': (1060, 473, 1204, 500), 'jp': (1081, 475, 1187, 499), 'tw': (1060, 473, 1204, 500)}, color={'cn': (225, 225, 225), 'en': (225, 225, 225), 'jp': (207, 207, 207), 'tw': (225, 225, 225)}, button={'cn': (1060, 473, 1204, 500), 'en': (1060, 473, 1204, 500), 'jp': (1081, 475, 1187, 499), 'tw': (1060, 473, 1204, 500)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_MULTI.png', 'en': './assets/cn/coalition/DAL_SWITCH_MULTI.png', 'jp': './assets/jp/coalition/DAL_SWITCH_MULTI.png', 'tw': './assets/cn/coalition/DAL_SWITCH_MULTI.png'})
DAL_SWITCH_SINGLE = Button(area={'cn': (910, 473, 1055, 500), 'en': (910, 473, 1055, 500), 'jp': (917, 474, 1035, 499), 'tw': (910, 473, 1055, 500)}, color={'cn': (223, 223, 223), 'en': (223, 223, 223), 'jp': (215, 215, 215), 'tw': (223, 223, 223)}, button={'cn': (910, 473, 1055, 500), 'en': (910, 473, 1055, 500), 'jp': (917, 474, 1035, 499), 'tw': (910, 473, 1055, 500)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_SINGLE.png', 'en': './assets/cn/coalition/DAL_SWITCH_SINGLE.png', 'jp': './assets/jp/coalition/DAL_SWITCH_SINGLE.png', 'tw': './assets/cn/coalition/DAL_SWITCH_SINGLE.png'})
EMPTY_FLAGSHIP = Button(area={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, color={'cn': (76, 64, 56), 'en': (76, 64, 56), 'jp': (76, 64, 56), 'tw': (76, 64, 56)}, button={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, file={'cn': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'en': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'jp': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'tw': './assets/cn/coalition/EMPTY_FLAGSHIP.png'}) EMPTY_FLAGSHIP = Button(area={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, color={'cn': (76, 64, 56), 'en': (76, 64, 56), 'jp': (76, 64, 56), 'tw': (76, 64, 56)}, button={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, file={'cn': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'en': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'jp': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'tw': './assets/cn/coalition/EMPTY_FLAGSHIP.png'})
EMPTY_VANGUARD = Button(area={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, color={'cn': (52, 52, 53), 'en': (52, 52, 53), 'jp': (52, 52, 53), 'tw': (52, 52, 53)}, button={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, file={'cn': './assets/cn/coalition/EMPTY_VANGUARD.png', 'en': './assets/cn/coalition/EMPTY_VANGUARD.png', 'jp': './assets/cn/coalition/EMPTY_VANGUARD.png', 'tw': './assets/cn/coalition/EMPTY_VANGUARD.png'}) EMPTY_VANGUARD = Button(area={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, color={'cn': (52, 52, 53), 'en': (52, 52, 53), 'jp': (52, 52, 53), 'tw': (52, 52, 53)}, button={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, file={'cn': './assets/cn/coalition/EMPTY_VANGUARD.png', 'en': './assets/cn/coalition/EMPTY_VANGUARD.png', 'jp': './assets/cn/coalition/EMPTY_VANGUARD.png', 'tw': './assets/cn/coalition/EMPTY_VANGUARD.png'})
FLEET_NOT_PREPARED = Button(area={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, color={'cn': (106, 106, 112), 'en': (106, 106, 112), 'jp': (106, 106, 112), 'tw': (108, 107, 112)}, button={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, file={'cn': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'en': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'jp': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'tw': './assets/tw/coalition/FLEET_NOT_PREPARED.png'}) FLEET_NOT_PREPARED = Button(area={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, color={'cn': (106, 106, 112), 'en': (106, 106, 112), 'jp': (106, 106, 112), 'tw': (108, 107, 112)}, button={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, file={'cn': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'en': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'jp': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'tw': './assets/tw/coalition/FLEET_NOT_PREPARED.png'})

View File

@@ -26,6 +26,20 @@ class AcademyPtOcr(Digit):
pass pass
return super().after_process(result) return super().after_process(result)
class DALPtOcr(Digit):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.alphabet += 'X'
def after_process(self, result):
logger.attr(self.name, result)
try:
# X9100
result = result.rsplit('X')[1]
except IndexError:
pass
return super().after_process(result)
class Coalition(CoalitionCombat, CampaignEvent): class Coalition(CoalitionCombat, CampaignEvent):
run_count: int run_count: int
@@ -44,6 +58,8 @@ class Coalition(CoalitionCombat, CampaignEvent):
elif event == 'coalition_20250626': elif event == 'coalition_20250626':
# use generic ocr model # use generic ocr model
ocr = Digit(NEONCITY_PT_OCR, name='OCR_PT', lang='cnocr', letter=(208, 208, 208), threshold=128) ocr = Digit(NEONCITY_PT_OCR, name='OCR_PT', lang='cnocr', letter=(208, 208, 208), threshold=128)
elif event == 'coalition_20251120':
ocr = DALPtOcr(DAL_PT_OCR, name='OCR_PT' ,letter=(255, 213, 69), threshold=128)
else: else:
logger.error(f'ocr object is not defined in event {event}') logger.error(f'ocr object is not defined in event {event}')
raise ScriptError raise ScriptError
@@ -132,11 +148,11 @@ class Coalition(CoalitionCombat, CampaignEvent):
self.coalition_map_exit(event) self.coalition_map_exit(event)
raise raise
self.enter_map(event=event, stage=stage, mode=fleet) if self.triggered_stop_condition(oil_check=True):
oil_check_boolean=True if self.config.SERVER not in ['tw'] else False
if self.triggered_stop_condition(oil_check=oil_check_boolean):
self.coalition_map_exit(event) self.coalition_map_exit(event)
raise ScriptEnd raise ScriptEnd
self.enter_map(event=event, stage=stage, mode=fleet)
self.coalition_combat() self.coalition_combat()
@staticmethod @staticmethod
@@ -172,10 +188,10 @@ class Coalition(CoalitionCombat, CampaignEvent):
logger.info(f'Count: {self.run_count}') logger.info(f'Count: {self.run_count}')
# UI switches # UI switches
if self.config.SERVER in ['tw']: # if self.config.SERVER in ['tw']:
self.ui_goto(page_campaign_menu) # self.ui_goto(page_campaign_menu)
if self.triggered_stop_condition(oil_check=True): # if self.triggered_stop_condition(oil_check=True):
break # break
self.device.stuck_record_clear() self.device.stuck_record_clear()
self.device.click_record_clear() self.device.click_record_clear()
self.ui_goto_coalition() self.ui_goto_coalition()

View File

@@ -24,6 +24,9 @@ class CoalitionUI(Combat):
# The same as raid # The same as raid
return self.ui_page_appear(page_coalition, offset=(20, 20)) return self.ui_page_appear(page_coalition, offset=(20, 20))
def in_coalition_20251120_difficulty_selection(self):
return self.appear(DAL_DIFFICULTY_EXIT, offset=(20, 20))
def coalition_ensure_mode(self, event, mode): def coalition_ensure_mode(self, event, mode):
""" """
Args: Args:
@@ -46,6 +49,9 @@ class CoalitionUI(Combat):
mode_switch = NeoncitySwitch('CoalitionMode', offset=(20, 20)) mode_switch = NeoncitySwitch('CoalitionMode', offset=(20, 20))
mode_switch.add_state('story', NEONCITY_MODE_STORY) mode_switch.add_state('story', NEONCITY_MODE_STORY)
mode_switch.add_state('battle', NEONCITY_MODE_BATTLE) mode_switch.add_state('battle', NEONCITY_MODE_BATTLE)
elif event == 'coalition_20251120':
logger.info('Coalition event coalition_20251120 has no mode switch')
return
else: else:
logger.error(f'MODE_SWITCH is not defined in event {event}') logger.error(f'MODE_SWITCH is not defined in event {event}')
raise ScriptError raise ScriptError
@@ -76,6 +82,9 @@ class CoalitionUI(Combat):
elif event == 'coalition_20250626': elif event == 'coalition_20250626':
fleet_switch.add_state('single', NEONCITY_SWITCH_SINGLE) fleet_switch.add_state('single', NEONCITY_SWITCH_SINGLE)
fleet_switch.add_state('multi', NEONCITY_SWITCH_MULTI) fleet_switch.add_state('multi', NEONCITY_SWITCH_MULTI)
elif event == 'coalition_20251120':
fleet_switch.add_state('single', DAL_SWITCH_SINGLE)
fleet_switch.add_state('multi', DAL_SWITCH_MULTI)
else: else:
logger.error(f'FLEET_SWITCH is not defined in event {event}') logger.error(f'FLEET_SWITCH is not defined in event {event}')
raise ScriptError raise ScriptError
@@ -115,6 +124,49 @@ class CoalitionUI(Combat):
('coalition_20250626', 'hard'): NEONCITY_HARD, ('coalition_20250626', 'hard'): NEONCITY_HARD,
('coalition_20250626', 'sp'): NEONCITY_SP, ('coalition_20250626', 'sp'): NEONCITY_SP,
('coalition_20250626', 'ex'): NEONCITY_EX, ('coalition_20250626', 'ex'): NEONCITY_EX,
('coalition_20251120', 'area1-normal'): DAL_AREA1,
('coalition_20251120', 'area2-normal'): DAL_AREA2,
('coalition_20251120', 'area3-normal'): DAL_AREA3,
('coalition_20251120', 'area4-normal'): DAL_AREA4,
('coalition_20251120', 'area5-normal'): DAL_AREA5,
('coalition_20251120', 'area6-normal'): DAL_AREA6,
('coalition_20251120', 'area1-hard'): DAL_AREA1,
('coalition_20251120', 'area2-hard'): DAL_AREA2,
('coalition_20251120', 'area3-hard'): DAL_AREA3,
('coalition_20251120', 'area4-hard'): DAL_AREA4,
('coalition_20251120', 'area5-hard'): DAL_AREA5,
('coalition_20251120', 'area6-hard'): DAL_AREA6,
}
stage = stage.lower()
try:
return dic[(event, stage)]
except KeyError as e:
logger.error(e)
raise CampaignNameError
@staticmethod
def coalition_20251120_get_entrance_difficulty(event, stage):
"""
Args:
stage (str): Stage name.
Returns:
Button: Entrance difficulty button
"""
dic = {
('coalition_20251120', 'area1-normal'): DAL_NORMAL,
('coalition_20251120', 'area2-normal'): DAL_NORMAL,
('coalition_20251120', 'area3-normal'): DAL_NORMAL,
('coalition_20251120', 'area4-normal'): DAL_NORMAL,
('coalition_20251120', 'area5-normal'): DAL_NORMAL,
('coalition_20251120', 'area6-normal'): DAL_NORMAL,
('coalition_20251120', 'area1-hard'): DAL_HARD,
('coalition_20251120', 'area2-hard'): DAL_HARD,
('coalition_20251120', 'area3-hard'): DAL_HARD,
('coalition_20251120', 'area4-hard'): DAL_HARD,
('coalition_20251120', 'area5-hard'): DAL_HARD,
('coalition_20251120', 'area6-hard'): DAL_HARD,
} }
stage = stage.lower() stage = stage.lower()
try: try:
@@ -151,6 +203,19 @@ class CoalitionUI(Combat):
('coalition_20250626', 'hard'): 3, ('coalition_20250626', 'hard'): 3,
('coalition_20250626', 'sp'): 4, ('coalition_20250626', 'sp'): 4,
('coalition_20250626', 'ex'): 5, ('coalition_20250626', 'ex'): 5,
('coalition_20251120', 'area1-normal'): 2,
('coalition_20251120', 'area2-normal'): 3,
('coalition_20251120', 'area3-normal'): 3,
('coalition_20251120', 'area4-normal'): 3,
('coalition_20251120', 'area5-normal'): 3,
('coalition_20251120', 'area6-normal'): 4,
('coalition_20251120', 'area1-hard'): 2,
('coalition_20251120', 'area2-hard'): 3,
('coalition_20251120', 'area3-hard'): 3,
('coalition_20251120', 'area4-hard'): 3,
('coalition_20251120', 'area5-hard'): 3,
('coalition_20251120', 'area6-hard'): 4,
} }
stage = stage.lower() stage = stage.lower()
try: try:
@@ -174,6 +239,8 @@ class CoalitionUI(Combat):
return ACEDEMY_FLEET_PREPARATION return ACEDEMY_FLEET_PREPARATION
elif event == 'coalition_20250626': elif event == 'coalition_20250626':
return NEONCITY_FLEET_PREPARATION return NEONCITY_FLEET_PREPARATION
elif event == 'coalition_20251120':
return DAL_FLEET_PREPARATION
else: else:
logger.error(f'FLEET_PREPARATION is not defined in event {event}') logger.error(f'FLEET_PREPARATION is not defined in event {event}')
raise ScriptError raise ScriptError
@@ -226,6 +293,9 @@ class CoalitionUI(Combat):
logger.info(f'{fleet_preparation} -> {NEONCITY_PREPARATION_EXIT}') logger.info(f'{fleet_preparation} -> {NEONCITY_PREPARATION_EXIT}')
self.device.click(NEONCITY_PREPARATION_EXIT) self.device.click(NEONCITY_PREPARATION_EXIT)
continue continue
if self.appear_then_click(DAL_DIFFICULTY_EXIT, offset=(20, 20), interval=3):
logger.info(f'{DAL_DIFFICULTY_EXIT} -> {DAL_DIFFICULTY_EXIT}')
continue
def enter_map(self, event, stage, mode, skip_first_screenshot=True): def enter_map(self, event, stage, mode, skip_first_screenshot=True):
""" """
@@ -240,10 +310,16 @@ class CoalitionUI(Combat):
out: BATTLE_PREPARATION out: BATTLE_PREPARATION
""" """
button = self.coalition_get_entrance(event, stage) button = self.coalition_get_entrance(event, stage)
if event in ['coalition_20251120']:
button_difficulty = self.coalition_20251120_get_entrance_difficulty(event, stage)
else:
button_difficulty = None
fleet_preparation = self.coalition_get_fleet_preparation(event) fleet_preparation = self.coalition_get_fleet_preparation(event)
campaign_timer = Timer(5) campaign_timer = Timer(5)
campaign_difficulty_timer = Timer(5)
fleet_timer = Timer(5) fleet_timer = Timer(5)
campaign_click = 0 campaign_click = 0
campaign_difficulty_click = 0
fleet_click = 0 fleet_click = 0
while 1: while 1:
if skip_first_screenshot: if skip_first_screenshot:
@@ -256,6 +332,10 @@ class CoalitionUI(Combat):
logger.critical(f"Failed to enter {button}, too many click on {button}") logger.critical(f"Failed to enter {button}, too many click on {button}")
logger.critical("Possible reason #1: You haven't cleared previous stage to unlock the stage.") logger.critical("Possible reason #1: You haven't cleared previous stage to unlock the stage.")
raise RequestHumanTakeover raise RequestHumanTakeover
if campaign_difficulty_click > 5:
logger.critical(f"Failed to enter {button_difficulty}, too many click on {button_difficulty}")
logger.critical("Possible reason #1: The difficulty asset is not correct.")
raise RequestHumanTakeover
if fleet_click > 5: if fleet_click > 5:
logger.critical(f"Failed to enter {button}, too many click on FLEET_PREPARATION") logger.critical(f"Failed to enter {button}, too many click on FLEET_PREPARATION")
logger.critical("Possible reason #1: " logger.critical("Possible reason #1: "
@@ -288,6 +368,12 @@ class CoalitionUI(Combat):
campaign_click += 1 campaign_click += 1
campaign_timer.reset() campaign_timer.reset()
continue continue
if event in ['coalition_20251120']:
if campaign_difficulty_timer.reached() and self.in_coalition_20251120_difficulty_selection() and button_difficulty:
self.device.click(button_difficulty)
campaign_difficulty_click += 1
campaign_difficulty_timer.reset()
continue
# Fleet preparation # Fleet preparation
if fleet_timer.reached() and self.appear(fleet_preparation, offset=(20, 50)): if fleet_timer.reached() and self.appear(fleet_preparation, offset=(20, 50)):

View File

@@ -2290,6 +2290,272 @@
} }
} }
}, },
"Coalition": {
"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": "Coalition",
"display": "hide"
},
"SuccessInterval": {
"type": "input",
"value": 30,
"display": "hide"
},
"FailureInterval": {
"type": "input",
"value": 30,
"display": "hide"
},
"ServerUpdate": {
"type": "input",
"value": "00:00",
"display": "hide"
}
},
"Campaign": {
"Name": {
"type": "input",
"value": "dynamic",
"display": "hide"
},
"Event": {
"type": "state",
"value": "campaign_main",
"option": [
"coalition_20250626",
"coalition_20251120"
],
"option_cn": [
"coalition_20251120"
],
"option_en": [
"coalition_20251120"
],
"option_jp": [
"coalition_20251120"
],
"option_tw": [
"coalition_20250626"
],
"option_bold": [
"coalition_20250626",
"coalition_20251120"
]
},
"Mode": {
"type": "select",
"value": "normal",
"option": [
"normal",
"hard"
],
"display": "hide"
},
"UseClearMode": {
"type": "checkbox",
"value": true,
"display": "hide"
},
"UseFleetLock": {
"type": "checkbox",
"value": true,
"display": "hide"
},
"UseAutoSearch": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"Use2xBook": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"AmbushEvade": {
"type": "checkbox",
"value": true,
"display": "hide"
}
},
"Coalition": {
"Mode": {
"type": "select",
"value": "area1-normal",
"option": [
"area1-normal",
"area1-hard",
"area2-normal",
"area2-hard",
"area3-normal",
"area3-hard",
"area4-normal",
"area4-hard",
"area5-normal",
"area5-hard",
"area6-normal",
"area6-hard"
]
},
"Fleet": {
"type": "select",
"value": "single",
"option": [
"single",
"multi"
]
}
},
"StopCondition": {
"OilLimit": {
"type": "input",
"value": 1000
},
"RunCount": {
"type": "input",
"value": 0
},
"MapAchievement": {
"type": "select",
"value": "non_stop",
"option": [
"non_stop",
"non_stop_clear_all",
"100_percent_clear",
"map_3_stars",
"threat_safe",
"threat_safe_without_3_stars"
],
"display": "hide"
},
"StageIncrease": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"GetNewShip": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"ReachLevel": {
"type": "input",
"value": 0,
"display": "hide"
}
},
"Emotion": {
"Mode": {
"type": "select",
"value": "calculate",
"option": [
"calculate",
"ignore",
"calculate_ignore"
]
},
"Fleet1Value": {
"type": "input",
"value": 119
},
"Fleet1Record": {
"type": "datetime",
"value": "2020-01-01 00:00:00",
"validate": "datetime",
"display": "disabled"
},
"Fleet1Control": {
"type": "select",
"value": "prevent_yellow_face",
"option": [
"keep_exp_bonus",
"prevent_green_face",
"prevent_yellow_face",
"prevent_red_face"
]
},
"Fleet1Recover": {
"type": "select",
"value": "not_in_dormitory",
"option": [
"not_in_dormitory",
"dormitory_floor_1",
"dormitory_floor_2"
]
},
"Fleet1Oath": {
"type": "checkbox",
"value": false
},
"Fleet1Onsen": {
"type": "checkbox",
"value": false
},
"Fleet2Value": {
"type": "input",
"value": 119,
"display": "hide"
},
"Fleet2Record": {
"type": "datetime",
"value": "2020-01-01 00:00:00",
"validate": "datetime",
"display": "hide"
},
"Fleet2Control": {
"type": "select",
"value": "prevent_yellow_face",
"option": [
"keep_exp_bonus",
"prevent_green_face",
"prevent_yellow_face",
"prevent_red_face"
],
"display": "hide"
},
"Fleet2Recover": {
"type": "select",
"value": "not_in_dormitory",
"option": [
"not_in_dormitory",
"dormitory_floor_1",
"dormitory_floor_2"
],
"display": "hide"
},
"Fleet2Oath": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"Fleet2Onsen": {
"type": "checkbox",
"value": false,
"display": "hide"
}
},
"Storage": {
"Storage": {
"type": "storage",
"value": {},
"valuetype": "ignore",
"display": "disabled"
}
}
},
"Event": { "Event": {
"Scheduler": { "Scheduler": {
"Enable": { "Enable": {
@@ -3534,264 +3800,6 @@
} }
} }
}, },
"Coalition": {
"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": "Coalition",
"display": "hide"
},
"SuccessInterval": {
"type": "input",
"value": 30,
"display": "hide"
},
"FailureInterval": {
"type": "input",
"value": 30,
"display": "hide"
},
"ServerUpdate": {
"type": "input",
"value": "00:00",
"display": "hide"
}
},
"Campaign": {
"Name": {
"type": "input",
"value": "dynamic",
"display": "hide"
},
"Event": {
"type": "state",
"value": "campaign_main",
"option": [
"coalition_20250626",
"coalition_20251120"
],
"option_cn": [
"coalition_20251120"
],
"option_en": [
"coalition_20251120"
],
"option_jp": [
"coalition_20251120"
],
"option_tw": [
"coalition_20250626"
],
"option_bold": [
"coalition_20250626",
"coalition_20251120"
]
},
"Mode": {
"type": "select",
"value": "normal",
"option": [
"normal",
"hard"
],
"display": "hide"
},
"UseClearMode": {
"type": "checkbox",
"value": true,
"display": "hide"
},
"UseFleetLock": {
"type": "checkbox",
"value": true,
"display": "hide"
},
"UseAutoSearch": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"Use2xBook": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"AmbushEvade": {
"type": "checkbox",
"value": true,
"display": "hide"
}
},
"Coalition": {
"Mode": {
"type": "select",
"value": "hard",
"option": [
"easy",
"normal",
"hard",
"ex"
]
},
"Fleet": {
"type": "select",
"value": "single",
"option": [
"single",
"multi"
]
}
},
"StopCondition": {
"OilLimit": {
"type": "input",
"value": 1000
},
"RunCount": {
"type": "input",
"value": 0
},
"MapAchievement": {
"type": "select",
"value": "non_stop",
"option": [
"non_stop",
"non_stop_clear_all",
"100_percent_clear",
"map_3_stars",
"threat_safe",
"threat_safe_without_3_stars"
],
"display": "hide"
},
"StageIncrease": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"GetNewShip": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"ReachLevel": {
"type": "input",
"value": 0,
"display": "hide"
}
},
"Emotion": {
"Mode": {
"type": "select",
"value": "calculate",
"option": [
"calculate",
"ignore",
"calculate_ignore"
]
},
"Fleet1Value": {
"type": "input",
"value": 119
},
"Fleet1Record": {
"type": "datetime",
"value": "2020-01-01 00:00:00",
"validate": "datetime",
"display": "disabled"
},
"Fleet1Control": {
"type": "select",
"value": "prevent_yellow_face",
"option": [
"keep_exp_bonus",
"prevent_green_face",
"prevent_yellow_face",
"prevent_red_face"
]
},
"Fleet1Recover": {
"type": "select",
"value": "not_in_dormitory",
"option": [
"not_in_dormitory",
"dormitory_floor_1",
"dormitory_floor_2"
]
},
"Fleet1Oath": {
"type": "checkbox",
"value": false
},
"Fleet1Onsen": {
"type": "checkbox",
"value": false
},
"Fleet2Value": {
"type": "input",
"value": 119,
"display": "hide"
},
"Fleet2Record": {
"type": "datetime",
"value": "2020-01-01 00:00:00",
"validate": "datetime",
"display": "hide"
},
"Fleet2Control": {
"type": "select",
"value": "prevent_yellow_face",
"option": [
"keep_exp_bonus",
"prevent_green_face",
"prevent_yellow_face",
"prevent_red_face"
],
"display": "hide"
},
"Fleet2Recover": {
"type": "select",
"value": "not_in_dormitory",
"option": [
"not_in_dormitory",
"dormitory_floor_1",
"dormitory_floor_2"
],
"display": "hide"
},
"Fleet2Oath": {
"type": "checkbox",
"value": false,
"display": "hide"
},
"Fleet2Onsen": {
"type": "checkbox",
"value": false,
"display": "hide"
}
},
"Storage": {
"Storage": {
"type": "storage",
"value": {},
"valuetype": "ignore",
"display": "disabled"
}
}
},
"MaritimeEscort": { "MaritimeEscort": {
"Scheduler": { "Scheduler": {
"Enable": { "Enable": {
@@ -6890,15 +6898,21 @@
"Coalition": { "Coalition": {
"Mode": { "Mode": {
"type": "select", "type": "select",
"value": "sp", "value": "area1-normal",
"option": [ "option": [
"easy", "area1-normal",
"normal", "area1-hard",
"hard", "area2-normal",
"sp", "area2-hard",
"ex" "area3-normal",
], "area3-hard",
"display": "hide" "area4-normal",
"area4-hard",
"area5-normal",
"area5-hard",
"area6-normal",
"area6-hard"
]
}, },
"Fleet": { "Fleet": {
"type": "select", "type": "select",

View File

@@ -337,8 +337,8 @@ MaritimeEscort:
Enable: true Enable: true
Coalition: Coalition:
Mode: Mode:
value: hard value: area1-normal
option: [ easy, normal, hard, sp, ex ] option: [ area1-normal, area1-hard, area2-normal, area2-hard, area3-normal, area3-hard, area4-normal, area4-hard, area5-normal, area5-hard, area6-normal, area6-hard ]
Fleet: Fleet:
value: single value: single
option: [ single, multi ] option: [ single, multi ]

View File

@@ -23,11 +23,11 @@
"page": "setting", "page": "setting",
"tasks": [ "tasks": [
"EventGeneral", "EventGeneral",
"Coalition",
"Event", "Event",
"Event2", "Event2",
"Raid", "Raid",
"Hospital", "Hospital",
"Coalition",
"MaritimeEscort", "MaritimeEscort",
"WarArchives" "WarArchives"
] ]

View File

@@ -261,9 +261,9 @@ Coalition:
UseAutoSearch: false UseAutoSearch: false
Use2xBook: false Use2xBook: false
AmbushEvade: true AmbushEvade: true
Coalition: # Coalition:
Mode: # Mode:
option: [ easy, normal, hard, ex ] # option: [ easy, normal, hard, ex ]
StopCondition: StopCondition:
MapAchievement: non_stop MapAchievement: non_stop
StageIncrease: false StageIncrease: false

View File

@@ -73,6 +73,12 @@ Event:
EventGeneral: EventGeneral:
- EventGeneral - EventGeneral
- TaskBalancer - TaskBalancer
Coalition:
- Scheduler
- Campaign
- Coalition
- StopCondition
- Emotion
Event: Event:
- Scheduler - Scheduler
- Campaign - Campaign
@@ -102,12 +108,7 @@ Event:
- Hospital - Hospital
- StopCondition - StopCondition
- Emotion - Emotion
Coalition:
- Scheduler
- Campaign
- Coalition
- StopCondition
- Emotion
MaritimeEscort: MaritimeEscort:
- Scheduler - Scheduler
- MaritimeEscort - MaritimeEscort

View File

@@ -195,7 +195,7 @@ class GeneratedConfig:
MaritimeEscort_Enable = True MaritimeEscort_Enable = True
# Group `Coalition` # Group `Coalition`
Coalition_Mode = 'hard' # easy, normal, hard, sp, ex Coalition_Mode = 'area1-normal' # area1-normal, area1-hard, area2-normal, area2-hard, area3-normal, area3-hard, area4-normal, area4-hard, area5-normal, area5-hard, area6-normal, area6-hard
Coalition_Fleet = 'single' # single, multi Coalition_Fleet = 'single' # single, multi
# Group `Commission` # Group `Commission`

View File

@@ -615,7 +615,7 @@ class ConfigUpdater:
# 2025.04.17 # 2025.04.17
# ('Coalition.Coalition.Mode', 'Coalition.Coalition.Mode', coalition_to_frostfall), # ('Coalition.Coalition.Mode', 'Coalition.Coalition.Mode', coalition_to_frostfall),
# 2025.06.26 # 2025.06.26
('Coalition.Coalition.Mode', 'Coalition.Coalition.Mode', coalition_to_little_academy), # ('Coalition.Coalition.Mode', 'Coalition.Coalition.Mode', coalition_to_little_academy),
] ]
# redirection += [ # redirection += [
@@ -685,7 +685,7 @@ class ConfigUpdater:
for task in EVENTS + WAR_ARCHIVES: for task in EVENTS + WAR_ARCHIVES:
default_stage(task, 'D3') default_stage(task, 'D3')
for task in COALITIONS: for task in COALITIONS:
default_stage(task, 'hard') default_stage(task, 'area1-normal')
if not is_template: if not is_template:
new = self.config_redirect(old, new) new = self.config_redirect(old, new)

View File

@@ -66,6 +66,10 @@
"name": "Event General", "name": "Event General",
"help": "" "help": ""
}, },
"Coalition": {
"name": "DATE A LANE",
"help": ""
},
"Event": { "Event": {
"name": "Event", "name": "Event",
"help": "" "help": ""
@@ -82,10 +86,6 @@
"name": "Valley Hospital Story", "name": "Valley Hospital Story",
"help": "" "help": ""
}, },
"Coalition": {
"name": "Neon City Investigator",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "Maritime Escort", "name": "Maritime Escort",
"help": "" "help": ""
@@ -1398,11 +1398,18 @@
"Mode": { "Mode": {
"name": "Mode", "name": "Mode",
"help": "SP needs to use event daily SP to run", "help": "SP needs to use event daily SP to run",
"easy": "Easy", "area1-normal": "area1-normal",
"normal": "Normal", "area1-hard": "area1-hard",
"hard": "Hard", "area2-normal": "area2-normal",
"sp": "SP", "area2-hard": "area2-hard",
"ex": "EX" "area3-normal": "area3-normal",
"area3-hard": "area3-hard",
"area4-normal": "area4-normal",
"area4-hard": "area4-hard",
"area5-normal": "area5-normal",
"area5-hard": "area5-hard",
"area6-normal": "area6-normal",
"area6-hard": "area6-hard"
}, },
"Fleet": { "Fleet": {
"name": "Fleet", "name": "Fleet",

View File

@@ -66,6 +66,10 @@
"name": "イベント共通設定", "name": "イベント共通設定",
"help": "" "help": ""
}, },
"Coalition": {
"name": "ネオンシティの探索者",
"help": ""
},
"Event": { "Event": {
"name": "イベント海域", "name": "イベント海域",
"help": "" "help": ""
@@ -82,10 +86,6 @@
"name": "病院探訪ストーリー", "name": "病院探訪ストーリー",
"help": "" "help": ""
}, },
"Coalition": {
"name": "ネオンシティの探索者",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "Maritime Escort", "name": "Maritime Escort",
"help": "" "help": ""
@@ -1398,11 +1398,18 @@
"Mode": { "Mode": {
"name": "Coalition.Mode.name", "name": "Coalition.Mode.name",
"help": "Coalition.Mode.help", "help": "Coalition.Mode.help",
"easy": "easy", "area1-normal": "area1-normal",
"normal": "normal", "area1-hard": "area1-hard",
"hard": "hard", "area2-normal": "area2-normal",
"sp": "sp", "area2-hard": "area2-hard",
"ex": "ex" "area3-normal": "area3-normal",
"area3-hard": "area3-hard",
"area4-normal": "area4-normal",
"area4-hard": "area4-hard",
"area5-normal": "area5-normal",
"area5-hard": "area5-hard",
"area6-normal": "area6-normal",
"area6-hard": "area6-hard"
}, },
"Fleet": { "Fleet": {
"name": "Coalition.Fleet.name", "name": "Coalition.Fleet.name",

View File

@@ -66,6 +66,10 @@
"name": "活动通用设置", "name": "活动通用设置",
"help": "" "help": ""
}, },
"Coalition": {
"name": "DATE A LANE",
"help": ""
},
"Event": { "Event": {
"name": "活动图", "name": "活动图",
"help": "" "help": ""
@@ -82,10 +86,6 @@
"name": "深谷来信", "name": "深谷来信",
"help": "" "help": ""
}, },
"Coalition": {
"name": "迷彩都市的寻踪者",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "商船护航", "name": "商船护航",
"help": "" "help": ""
@@ -1398,11 +1398,18 @@
"Mode": { "Mode": {
"name": "难度", "name": "难度",
"help": "SP图需要使用活动每日SP运行", "help": "SP图需要使用活动每日SP运行",
"easy": "简单", "area1-normal": "AREA-1 普通",
"normal": "普通", "area1-hard": "AREA-1 困难",
"hard": "困难", "area2-normal": "AREA-2 普通",
"sp": "SP", "area2-hard": "AREA-2 困难",
"ex": "EX" "area3-normal": "AREA-3 普通",
"area3-hard": "AREA-3 困难",
"area4-normal": "AREA-4 普通",
"area4-hard": "AREA-4 困难",
"area5-normal": "AREA-5 普通",
"area5-hard": "AREA-5 困难",
"area6-normal": "AREA-6 普通",
"area6-hard": "AREA-6 困难"
}, },
"Fleet": { "Fleet": {
"name": "出击队伍", "name": "出击队伍",

View File

@@ -66,6 +66,10 @@
"name": "活動通用", "name": "活動通用",
"help": "" "help": ""
}, },
"Coalition": {
"name": "極地風暴",
"help": ""
},
"Event": { "Event": {
"name": "活動圖", "name": "活動圖",
"help": "" "help": ""
@@ -82,10 +86,6 @@
"name": "深谷来信", "name": "深谷来信",
"help": "" "help": ""
}, },
"Coalition": {
"name": "極地風暴",
"help": ""
},
"MaritimeEscort": { "MaritimeEscort": {
"name": "商船護航", "name": "商船護航",
"help": "" "help": ""
@@ -1398,11 +1398,18 @@
"Mode": { "Mode": {
"name": "難度", "name": "難度",
"help": "SP圖需要使用活動每日SP運行", "help": "SP圖需要使用活動每日SP運行",
"easy": "簡單", "area1-normal": "area1-normal",
"normal": "普通", "area1-hard": "area1-hard",
"hard": "困難", "area2-normal": "area2-normal",
"sp": "sp", "area2-hard": "area2-hard",
"ex": "EX" "area3-normal": "area3-normal",
"area3-hard": "area3-hard",
"area4-normal": "area4-normal",
"area4-hard": "area4-hard",
"area5-normal": "area5-normal",
"area5-hard": "area5-hard",
"area6-normal": "area6-normal",
"area6-hard": "area6-hard"
}, },
"Fleet": { "Fleet": {
"name": "出擊隊伍", "name": "出擊隊伍",

View File

@@ -145,9 +145,14 @@ page_campaign.link(button=CAMPAIGN_GOTO_EVENT, destination=page_sp)
# page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition) # page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition)
# page_coalition_menu.link(button=COALITION_ACADEMY_GOTO_CAMPAIGN, destination=page_coalition) # page_coalition_menu.link(button=COALITION_ACADEMY_GOTO_CAMPAIGN, destination=page_coalition)
# NEONCITY # NEONCITY
page_coalition = Page(NEONCITY_COALITION_CHECK) # page_coalition = Page(NEONCITY_COALITION_CHECK)
page_coalition.link(button=NEONCITY_UI_HOME, destination=page_main) # page_coalition.link(button=NEONCITY_UI_HOME, destination=page_main)
page_coalition.link(button=NEONCITY_UI_BACK, destination=page_campaign) # page_coalition.link(button=NEONCITY_UI_BACK, destination=page_campaign)
# page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition)
# DAL
page_coalition = Page(FROSTFALL_COALITION_CHECK)
page_coalition.link(button=GOTO_MAIN, destination=page_main)
page_coalition.link(button=BACK_ARROW, destination=page_campaign)
page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition) page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition)
# Operation Siren # Operation Siren

View File

@@ -1,7 +1,7 @@
from module.base.button import Button from module.base.button import Button
from module.base.decorator import run_once from module.base.decorator import run_once
from module.base.timer import Timer from module.base.timer import Timer
from module.coalition.assets import NEONCITY_FLEET_PREPARATION, NEONCITY_PREPARATION_EXIT from module.coalition.assets import NEONCITY_FLEET_PREPARATION, NEONCITY_PREPARATION_EXIT, DAL_DIFFICULTY_EXIT
from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2, GET_SHIP from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2, GET_SHIP
from module.event_hospital.assets import HOSIPITAL_CLUE_CHECK, HOSPITAL_BATTLE_EXIT from module.event_hospital.assets import HOSIPITAL_CLUE_CHECK, HOSPITAL_BATTLE_EXIT
from module.exception import (GameNotRunningError, GamePageUnknownError, from module.exception import (GameNotRunningError, GamePageUnknownError,
@@ -559,9 +559,12 @@ class UI(InfoHandler):
# if self.appear_then_click(HOSPITAL_BATTLE_EXIT, offset=(20, 20), interval=2): # if self.appear_then_click(HOSPITAL_BATTLE_EXIT, offset=(20, 20), interval=2):
# return True # return True
# Neon city (coalition_20250626) # Neon city (coalition_20250626)
if self.appear(NEONCITY_FLEET_PREPARATION, offset=(20, 20), interval=3): # if self.appear(NEONCITY_FLEET_PREPARATION, offset=(20, 20), interval=3):
logger.info(f'{NEONCITY_FLEET_PREPARATION} -> {NEONCITY_PREPARATION_EXIT}') # logger.info(f'{NEONCITY_FLEET_PREPARATION} -> {NEONCITY_PREPARATION_EXIT}')
self.device.click(NEONCITY_PREPARATION_EXIT) # self.device.click(NEONCITY_PREPARATION_EXIT)
# return True
# DATE A LANE (coalition_20251120)
if self.appear_then_click(DAL_DIFFICULTY_EXIT, offset=(20, 20), interval=3):
return True return True
# Idle page # Idle page