1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-09 16:19:03 +08:00

Upd: Coalition 20260122

This commit is contained in:
sui-feng-cb 2026-01-22 17:02:06 +08:00
parent e61cfdeb63
commit 238428f7b9
31 changed files with 150 additions and 110 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -276,3 +276,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf
| 20251218 | event 20251218 cn | A Note Through the Firmament | 响彻于天穹之音 | A Note Through the Firmament | 天穹に響く音謡 | - |
| 20251231 | event 20251218 cn | A Note Through the Firmament | - | - | - | 響徹於天穹之音 |
| 20260115 | event 20231221 cn | Light-Chasing Sea of Stars | 复刻星海逐光 | Light-Chasing Sea of Stars Rerun | 光追う星の海(復刻) | - |
| 20260122 | coalition 20260122 | Light & Shadow Fashion Shoot! | 光影风尚——拍摄进行时! | Light & Shadow Fashion Shoot! | 特集写真――撮影進行中! | - |

View File

@ -734,7 +734,7 @@
"ClearAfterSinking": false
},
"Coalition": {
"Mode": "area1-normal",
"Mode": "hard",
"Fleet": "single"
},
"StopCondition": {
@ -1332,7 +1332,7 @@
"ClearAfterSinking": false
},
"Coalition": {
"Mode": "area1-normal",
"Mode": "sp",
"Fleet": "single"
},
"StopCondition": {

View File

@ -36,6 +36,20 @@ DAL_SWITCH_MULTI = Button(area={'cn': (1060, 473, 1204, 500), 'en': (1061, 474,
DAL_SWITCH_SINGLE = Button(area={'cn': (910, 473, 1055, 500), 'en': (915, 475, 1051, 499), 'jp': (917, 474, 1035, 499), 'tw': (945, 478, 1013, 495)}, color={'cn': (223, 223, 223), 'en': (193, 193, 193), 'jp': (215, 215, 215), 'tw': (168, 168, 168)}, button={'cn': (910, 473, 1055, 500), 'en': (915, 475, 1051, 499), 'jp': (917, 474, 1035, 499), 'tw': (945, 478, 1013, 495)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_SINGLE.png', 'en': './assets/en/coalition/DAL_SWITCH_SINGLE.png', 'jp': './assets/jp/coalition/DAL_SWITCH_SINGLE.png', 'tw': './assets/tw/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_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'})
FASHION_COALITION_CHECK = Button(area={'cn': (100, 17, 261, 53), 'en': (100, 17, 261, 53), 'jp': (100, 17, 261, 53), 'tw': (100, 17, 261, 53)}, color={'cn': (100, 94, 76), 'en': (100, 94, 76), 'jp': (100, 94, 76), 'tw': (100, 94, 76)}, button={'cn': (100, 17, 261, 53), 'en': (100, 17, 261, 53), 'jp': (100, 17, 261, 53), 'tw': (100, 17, 261, 53)}, file={'cn': './assets/cn/coalition/FASHION_COALITION_CHECK.png', 'en': './assets/cn/coalition/FASHION_COALITION_CHECK.png', 'jp': './assets/cn/coalition/FASHION_COALITION_CHECK.png', 'tw': './assets/cn/coalition/FASHION_COALITION_CHECK.png'})
FASHION_EASY = Button(area={'cn': (101, 161, 264, 470), 'en': (101, 161, 264, 470), 'jp': (101, 161, 264, 470), 'tw': (101, 161, 264, 470)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (101, 161, 264, 470), 'en': (101, 161, 264, 470), 'jp': (101, 161, 264, 470), 'tw': (101, 161, 264, 470)}, file={'cn': './assets/cn/coalition/FASHION_EASY.png', 'en': './assets/cn/coalition/FASHION_EASY.png', 'jp': './assets/cn/coalition/FASHION_EASY.png', 'tw': './assets/cn/coalition/FASHION_EASY.png'})
FASHION_EX = Button(area={'cn': (832, 162, 995, 506), 'en': (832, 162, 995, 506), 'jp': (832, 162, 995, 506), 'tw': (832, 162, 995, 506)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (832, 162, 995, 506), 'en': (832, 162, 995, 506), 'jp': (832, 162, 995, 506), 'tw': (832, 162, 995, 506)}, file={'cn': './assets/cn/coalition/FASHION_EX.png', 'en': './assets/cn/coalition/FASHION_EX.png', 'jp': './assets/cn/coalition/FASHION_EX.png', 'tw': './assets/cn/coalition/FASHION_EX.png'})
FASHION_FLEET_PREPARATION = Button(area={'cn': (1021, 519, 1121, 545), 'en': (1021, 519, 1121, 545), 'jp': (1021, 519, 1121, 545), 'tw': (1021, 519, 1121, 545)}, color={'cn': (94, 129, 239), 'en': (94, 129, 239), 'jp': (94, 129, 239), 'tw': (94, 129, 239)}, button={'cn': (1021, 519, 1121, 545), 'en': (1021, 519, 1121, 545), 'jp': (1021, 519, 1121, 545), 'tw': (1021, 519, 1121, 545)}, file={'cn': './assets/cn/coalition/FASHION_FLEET_PREPARATION.png', 'en': './assets/cn/coalition/FASHION_FLEET_PREPARATION.png', 'jp': './assets/cn/coalition/FASHION_FLEET_PREPARATION.png', 'tw': './assets/cn/coalition/FASHION_FLEET_PREPARATION.png'})
FASHION_HARD = Button(area={'cn': (439, 161, 602, 502), 'en': (439, 161, 602, 502), 'jp': (439, 161, 602, 502), 'tw': (439, 161, 602, 502)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (439, 161, 602, 502), 'en': (439, 161, 602, 502), 'jp': (439, 161, 602, 502), 'tw': (439, 161, 602, 502)}, file={'cn': './assets/cn/coalition/FASHION_HARD.png', 'en': './assets/cn/coalition/FASHION_HARD.png', 'jp': './assets/cn/coalition/FASHION_HARD.png', 'tw': './assets/cn/coalition/FASHION_HARD.png'})
FASHION_MODE_BATTLE = Button(area={'cn': (148, 631, 283, 671), 'en': (148, 631, 283, 671), 'jp': (148, 631, 283, 671), 'tw': (148, 631, 283, 671)}, color={'cn': (162, 149, 122), 'en': (162, 149, 122), 'jp': (162, 149, 122), 'tw': (162, 149, 122)}, button={'cn': (148, 631, 283, 671), 'en': (148, 631, 283, 671), 'jp': (148, 631, 283, 671), 'tw': (148, 631, 283, 671)}, file={'cn': './assets/cn/coalition/FASHION_MODE_BATTLE.png', 'en': './assets/cn/coalition/FASHION_MODE_BATTLE.png', 'jp': './assets/cn/coalition/FASHION_MODE_BATTLE.png', 'tw': './assets/cn/coalition/FASHION_MODE_BATTLE.png'})
FASHION_MODE_STORY = Button(area={'cn': (152, 621, 287, 669), 'en': (152, 621, 287, 669), 'jp': (152, 621, 287, 669), 'tw': (152, 621, 287, 669)}, color={'cn': (168, 154, 126), 'en': (168, 154, 126), 'jp': (168, 154, 126), 'tw': (168, 154, 126)}, button={'cn': (152, 621, 287, 669), 'en': (152, 621, 287, 669), 'jp': (152, 621, 287, 669), 'tw': (152, 621, 287, 669)}, file={'cn': './assets/cn/coalition/FASHION_MODE_STORY.png', 'en': './assets/cn/coalition/FASHION_MODE_STORY.png', 'jp': './assets/cn/coalition/FASHION_MODE_STORY.png', 'tw': './assets/cn/coalition/FASHION_MODE_STORY.png'})
FASHION_NORMAL = Button(area={'cn': (270, 161, 433, 470), 'en': (270, 161, 433, 470), 'jp': (270, 161, 433, 470), 'tw': (270, 161, 433, 470)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (270, 161, 433, 470), 'en': (270, 161, 433, 470), 'jp': (270, 161, 433, 470), 'tw': (270, 161, 433, 470)}, file={'cn': './assets/cn/coalition/FASHION_NORMAL.png', 'en': './assets/cn/coalition/FASHION_NORMAL.png', 'jp': './assets/cn/coalition/FASHION_NORMAL.png', 'tw': './assets/cn/coalition/FASHION_NORMAL.png'})
FASHION_PT_OCR = Button(area={'cn': (889, 659, 936, 674), 'en': (889, 659, 936, 674), 'jp': (889, 659, 936, 674), 'tw': (889, 659, 936, 674)}, color={'cn': (132, 124, 120), 'en': (132, 124, 120), 'jp': (132, 124, 120), 'tw': (132, 124, 120)}, button={'cn': (889, 659, 936, 674), 'en': (889, 659, 936, 674), 'jp': (889, 659, 936, 674), 'tw': (889, 659, 936, 674)}, file={'cn': './assets/cn/coalition/FASHION_PT_OCR.png', 'en': './assets/cn/coalition/FASHION_PT_OCR.png', 'jp': './assets/cn/coalition/FASHION_PT_OCR.png', 'tw': './assets/cn/coalition/FASHION_PT_OCR.png'})
FASHION_SP = Button(area={'cn': (664, 166, 826, 507), 'en': (664, 166, 826, 507), 'jp': (664, 166, 826, 507), 'tw': (664, 166, 826, 507)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (664, 166, 826, 507), 'en': (664, 166, 826, 507), 'jp': (664, 166, 826, 507), 'tw': (664, 166, 826, 507)}, file={'cn': './assets/cn/coalition/FASHION_SP.png', 'en': './assets/cn/coalition/FASHION_SP.png', 'jp': './assets/cn/coalition/FASHION_SP.png', 'tw': './assets/cn/coalition/FASHION_SP.png'})
FASHION_SWITCH_MULTI = Button(area={'cn': (1075, 457, 1206, 485), 'en': (1075, 457, 1206, 485), 'jp': (1075, 457, 1206, 485), 'tw': (1075, 457, 1206, 485)}, color={'cn': (233, 183, 63), 'en': (233, 183, 63), 'jp': (233, 183, 63), 'tw': (233, 183, 63)}, button={'cn': (1075, 457, 1206, 485), 'en': (1075, 457, 1206, 485), 'jp': (1075, 457, 1206, 485), 'tw': (1075, 457, 1206, 485)}, file={'cn': './assets/cn/coalition/FASHION_SWITCH_MULTI.png', 'en': './assets/cn/coalition/FASHION_SWITCH_MULTI.png', 'jp': './assets/cn/coalition/FASHION_SWITCH_MULTI.png', 'tw': './assets/cn/coalition/FASHION_SWITCH_MULTI.png'})
FASHION_SWITCH_SINGLE = Button(area={'cn': (929, 457, 1059, 485), 'en': (929, 457, 1059, 485), 'jp': (929, 457, 1059, 485), 'tw': (929, 457, 1059, 485)}, color={'cn': (230, 181, 62), 'en': (230, 181, 62), 'jp': (230, 181, 62), 'tw': (230, 181, 62)}, button={'cn': (929, 457, 1059, 485), 'en': (929, 457, 1059, 485), 'jp': (929, 457, 1059, 485), 'tw': (929, 457, 1059, 485)}, file={'cn': './assets/cn/coalition/FASHION_SWITCH_SINGLE.png', 'en': './assets/cn/coalition/FASHION_SWITCH_SINGLE.png', 'jp': './assets/cn/coalition/FASHION_SWITCH_SINGLE.png', 'tw': './assets/cn/coalition/FASHION_SWITCH_SINGLE.png'})
FASHION_UI_BACK = Button(area={'cn': (29, 28, 45, 45), 'en': (29, 28, 45, 45), 'jp': (29, 28, 45, 45), 'tw': (29, 28, 45, 45)}, color={'cn': (132, 125, 113), 'en': (132, 125, 113), 'jp': (132, 125, 113), 'tw': (132, 125, 113)}, button={'cn': (29, 28, 45, 45), 'en': (29, 28, 45, 45), 'jp': (29, 28, 45, 45), 'tw': (29, 28, 45, 45)}, file={'cn': './assets/cn/coalition/FASHION_UI_BACK.png', 'en': './assets/cn/coalition/FASHION_UI_BACK.png', 'jp': './assets/cn/coalition/FASHION_UI_BACK.png', 'tw': './assets/cn/coalition/FASHION_UI_BACK.png'})
FASHION_UI_HOME = Button(area={'cn': (1210, 23, 1238, 47), 'en': (1210, 23, 1238, 47), 'jp': (1210, 23, 1238, 47), 'tw': (1210, 23, 1238, 47)}, color={'cn': (124, 120, 112), 'en': (124, 120, 112), 'jp': (124, 120, 112), 'tw': (124, 120, 112)}, button={'cn': (1210, 23, 1238, 47), 'en': (1210, 23, 1238, 47), 'jp': (1210, 23, 1238, 47), 'tw': (1210, 23, 1238, 47)}, file={'cn': './assets/cn/coalition/FASHION_UI_HOME.png', 'en': './assets/cn/coalition/FASHION_UI_HOME.png', 'jp': './assets/cn/coalition/FASHION_UI_HOME.png', 'tw': './assets/cn/coalition/FASHION_UI_HOME.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'})
FROSTFALL_COALITION_CHECK = Button(area={'cn': (118, 14, 227, 39), 'en': (118, 16, 221, 36), 'jp': (118, 14, 227, 39), 'tw': (118, 14, 227, 39)}, color={'cn': (145, 161, 200), 'en': (116, 130, 168), 'jp': (150, 166, 204), 'tw': (152, 168, 206)}, button={'cn': (118, 14, 227, 39), 'en': (118, 16, 221, 36), 'jp': (118, 14, 227, 39), 'tw': (118, 14, 227, 39)}, file={'cn': './assets/cn/coalition/FROSTFALL_COALITION_CHECK.png', 'en': './assets/en/coalition/FROSTFALL_COALITION_CHECK.png', 'jp': './assets/jp/coalition/FROSTFALL_COALITION_CHECK.png', 'tw': './assets/tw/coalition/FROSTFALL_COALITION_CHECK.png'})
FROSTFALL_EX = Button(area={'cn': (622, 372, 649, 384), 'en': (622, 372, 649, 384), 'jp': (622, 372, 649, 384), 'tw': (622, 372, 649, 384)}, color={'cn': (198, 152, 252), 'en': (198, 152, 252), 'jp': (198, 152, 252), 'tw': (182, 127, 252)}, button={'cn': (622, 372, 649, 384), 'en': (622, 372, 649, 384), 'jp': (622, 372, 649, 384), 'tw': (622, 372, 649, 384)}, file={'cn': './assets/cn/coalition/FROSTFALL_EX.png', 'en': './assets/en/coalition/FROSTFALL_EX.png', 'jp': './assets/jp/coalition/FROSTFALL_EX.png', 'tw': './assets/tw/coalition/FROSTFALL_EX.png'})

View File

@ -9,6 +9,7 @@ from module.log_res.log_res import LogRes
from module.logger import logger
from module.ocr.ocr import Digit
from module.ui.assets import BACK_ARROW
from module.ui.page import page_campaign_menu
class AcademyPtOcr(Digit):
@ -59,6 +60,8 @@ class Coalition(CoalitionCombat, CampaignEvent):
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)
elif event == 'coalition_20260122':
ocr = Digit(FASHION_PT_OCR, name='OCR_PT', letter=(41, 41, 42), threshold=128)
else:
logger.error(f'ocr object is not defined in event {event}')
raise ScriptError
@ -155,9 +158,9 @@ class Coalition(CoalitionCombat, CampaignEvent):
self.coalition_map_exit(event)
raise
if self.triggered_stop_condition(oil_check=True):
self.coalition_map_exit(event)
raise ScriptEnd
# if self.triggered_stop_condition(oil_check=True):
# self.coalition_map_exit(event)
# raise ScriptEnd
self.enter_map(event=event, stage=stage, mode=fleet)
self.coalition_combat()
@ -195,10 +198,10 @@ class Coalition(CoalitionCombat, CampaignEvent):
logger.info(f'Count: {self.run_count}')
# UI switches
# if self.config.SERVER in ['tw']:
# self.ui_goto(page_campaign_menu)
# if self.triggered_stop_condition(oil_check=True):
# break
self.ui_goto(page_campaign_menu)
if self.triggered_stop_condition(oil_check=True):
break
self.device.stuck_record_clear()
self.device.click_record_clear()
self.ui_goto_coalition()

View File

@ -52,6 +52,10 @@ class CoalitionUI(Combat):
elif event == 'coalition_20251120':
logger.info('Coalition event coalition_20251120 has no mode switch')
return
elif event == 'coalition_20260122':
mode_switch = Switch('CoalitionMode', offset=(20, 20))
mode_switch.add_state('story', FASHION_MODE_STORY)
mode_switch.add_state('battle', FASHION_MODE_BATTLE)
else:
logger.error(f'MODE_SWITCH is not defined in event {event}')
raise ScriptError
@ -85,6 +89,9 @@ class CoalitionUI(Combat):
elif event == 'coalition_20251120':
fleet_switch.add_state('single', DAL_SWITCH_SINGLE)
fleet_switch.add_state('multi', DAL_SWITCH_MULTI)
elif event == 'coalition_20260122':
fleet_switch.add_state('single', FASHION_SWITCH_SINGLE)
fleet_switch.add_state('multi', FASHION_SWITCH_MULTI)
else:
logger.error(f'FLEET_SWITCH is not defined in event {event}')
raise ScriptError
@ -137,6 +144,12 @@ class CoalitionUI(Combat):
('coalition_20251120', 'area4-hard'): DAL_AREA4,
('coalition_20251120', 'area5-hard'): DAL_AREA5,
('coalition_20251120', 'area6-hard'): DAL_AREA6,
('coalition_20260122', 'easy'): FASHION_EASY,
('coalition_20260122', 'normal'): FASHION_NORMAL,
('coalition_20260122', 'hard'): FASHION_HARD,
('coalition_20260122', 'sp'): FASHION_SP,
('coalition_20260122', 'ex'): FASHION_EX,
}
stage = stage.lower()
try:
@ -216,6 +229,12 @@ class CoalitionUI(Combat):
('coalition_20251120', 'area4-hard'): 3,
('coalition_20251120', 'area5-hard'): 3,
('coalition_20251120', 'area6-hard'): 4,
('coalition_20260122', 'easy'): 1,
('coalition_20260122', 'normal'): 2,
('coalition_20260122', 'hard'): 3,
('coalition_20260122', 'sp'): 4,
('coalition_20260122', 'ex'): 5,
}
stage = stage.lower()
try:
@ -241,6 +260,8 @@ class CoalitionUI(Combat):
return NEONCITY_FLEET_PREPARATION
elif event == 'coalition_20251120':
return DAL_FLEET_PREPARATION
elif event == 'coalition_20260122':
return FASHION_FLEET_PREPARATION
else:
logger.error(f'FLEET_PREPARATION is not defined in event {event}')
raise ScriptError
@ -267,6 +288,9 @@ class CoalitionUI(Combat):
if event == 'coalition_20250626':
if stage in ['easy', 'sp', 'ex']:
return False
if event == 'coalition_20260122':
if stage in ['easy', 'sp', 'ex']:
return False
self.coalition_ensure_fleet(event, mode)
return True
@ -406,6 +430,11 @@ class CoalitionUI(Combat):
campaign_timer.reset()
continue
# Fleet import
if self.handle_popup_confirm('FLEET_IMPORT'):
campaign_timer.reset()
continue
# Auto confirm
if self.handle_combat_automation_confirm():
continue

View File

@ -3610,22 +3610,24 @@
"type": "state",
"value": "campaign_main",
"option": [
"coalition_20251120"
"coalition_20251120",
"coalition_20260122"
],
"option_cn": [
"coalition_20251120"
"coalition_20260122"
],
"option_en": [
"coalition_20251120"
"coalition_20260122"
],
"option_jp": [
"coalition_20251120"
"coalition_20260122"
],
"option_tw": [
"coalition_20251120"
],
"option_bold": [
"coalition_20251120"
"coalition_20251120",
"coalition_20260122"
]
},
"Mode": {
@ -3671,20 +3673,12 @@
"Coalition": {
"Mode": {
"type": "select",
"value": "area1-normal",
"value": "hard",
"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"
"easy",
"normal",
"hard",
"ex"
]
},
"Fleet": {
@ -6918,22 +6912,24 @@
"type": "state",
"value": "campaign_main",
"option": [
"coalition_20251120"
"coalition_20251120",
"coalition_20260122"
],
"option_cn": [
"coalition_20251120"
"coalition_20260122"
],
"option_en": [
"coalition_20251120"
"coalition_20260122"
],
"option_jp": [
"coalition_20251120"
"coalition_20260122"
],
"option_tw": [
"coalition_20251120"
],
"option_bold": [
"coalition_20251120"
"coalition_20251120",
"coalition_20260122"
]
},
"Mode": {
@ -6979,21 +6975,15 @@
"Coalition": {
"Mode": {
"type": "select",
"value": "area1-normal",
"value": "sp",
"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"
]
"easy",
"normal",
"hard",
"sp",
"ex"
],
"display": "hide"
},
"Fleet": {
"type": "select",

View File

@ -340,8 +340,8 @@ MaritimeEscort:
Enable: true
Coalition:
Mode:
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 ]
value: hard
option: [ easy, normal, hard, sp, ex ]
Fleet:
value: single
option: [ single, multi ]

View File

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

View File

@ -199,7 +199,7 @@ class GeneratedConfig:
MaritimeEscort_Enable = True
# Group `Coalition`
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_Mode = 'hard' # easy, normal, hard, sp, ex
Coalition_Fleet = 'single' # single, multi
# Group `Commission`

View File

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

View File

@ -83,7 +83,7 @@
"help": ""
},
"Coalition": {
"name": "DATE A LANE",
"name": "Light & Shadow Fashion Shoot!",
"help": ""
},
"MaritimeEscort": {
@ -119,7 +119,7 @@
"help": ""
},
"CoalitionSp": {
"name": "Neon City Investigator SP",
"name": "Light & Shadow Fashion Shoot! SP",
"help": ""
},
"Commission": {
@ -702,6 +702,7 @@
"coalition_20240627": "Welcome to Little Academy",
"coalition_20250626": "The Neon City Investigator",
"coalition_20251120": "DATE A LANE",
"coalition_20260122": "Light & Shadow Fashion Shoot!",
"event_20200227_cn": "Northern Overture",
"event_20200312_cn": "The Solomon Ranger Rerun",
"event_20200326_cn": "Microlayer Medley",
@ -1414,18 +1415,11 @@
"Mode": {
"name": "Mode",
"help": "SP needs to use event daily SP to run",
"area1-normal": "area1-normal",
"area1-hard": "area1-hard",
"area2-normal": "area2-normal",
"area2-hard": "area2-hard",
"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"
"easy": "Easy",
"normal": "Normal",
"hard": "Hard",
"sp": "SP",
"ex": "EX"
},
"Fleet": {
"name": "Fleet",

View File

@ -702,6 +702,7 @@
"coalition_20240627": "リトル学園へようこそ",
"coalition_20250626": "ネオンシティの探索者",
"coalition_20251120": "DATE A LANE",
"coalition_20260122": "特集写真――撮影進行中!",
"event_20200227_cn": "凍絶の北海",
"event_20200312_cn": "南洋に靡く硝煙(復刻)",
"event_20200326_cn": "闇靄払う銀翼",
@ -1414,18 +1415,11 @@
"Mode": {
"name": "Coalition.Mode.name",
"help": "Coalition.Mode.help",
"area1-normal": "area1-normal",
"area1-hard": "area1-hard",
"area2-normal": "area2-normal",
"area2-hard": "area2-hard",
"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"
"easy": "easy",
"normal": "normal",
"hard": "hard",
"sp": "sp",
"ex": "ex"
},
"Fleet": {
"name": "Coalition.Fleet.name",

View File

@ -83,7 +83,7 @@
"help": ""
},
"Coalition": {
"name": "DATE A LANE",
"name": "光影风尚——拍摄进行时!",
"help": ""
},
"MaritimeEscort": {
@ -119,7 +119,7 @@
"help": ""
},
"CoalitionSp": {
"name": "迷彩都市的寻踪者SP",
"name": "光影风尚——拍摄进行时!SP",
"help": ""
},
"Commission": {
@ -702,6 +702,7 @@
"coalition_20240627": "欢迎来到童心学院",
"coalition_20250626": "迷彩都市的寻踪者",
"coalition_20251120": "DATE A LANE",
"coalition_20260122": "光影风尚——拍摄进行时!",
"event_20200227_cn": "北境序曲",
"event_20200312_cn": "复刻斯图尔特的硝烟",
"event_20200326_cn": "微层混合",
@ -1414,18 +1415,11 @@
"Mode": {
"name": "难度",
"help": "SP图需要使用活动每日SP运行",
"area1-normal": "AREA-1 普通",
"area1-hard": "AREA-1 困难",
"area2-normal": "AREA-2 普通",
"area2-hard": "AREA-2 困难",
"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 困难"
"easy": "简单",
"normal": "普通",
"hard": "困难",
"sp": "SP",
"ex": "EX"
},
"Fleet": {
"name": "出击队伍",

View File

@ -702,6 +702,7 @@
"coalition_20240627": "歡迎來到童心學院",
"coalition_20250626": "迷彩都市的尋蹤者",
"coalition_20251120": "DATE A LANE",
"coalition_20260122": "Light & Shadow Fashion Shoot!",
"event_20200227_cn": "Northern Overture",
"event_20200312_cn": "斯圖爾特的硝煙",
"event_20200326_cn": "Microlayer Medley",
@ -1414,18 +1415,11 @@
"Mode": {
"name": "難度",
"help": "SP圖需要使用活動每日SP運行",
"area1-normal": "area1-normal",
"area1-hard": "area1-hard",
"area2-normal": "area2-normal",
"area2-hard": "area2-hard",
"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"
"easy": "easy",
"normal": "normal",
"hard": "hard",
"sp": "sp",
"ex": "ex"
},
"Fleet": {
"name": "出擊隊伍",

View File

@ -130,3 +130,18 @@ def coalition_to_little_academy(value):
return 'hard'
else:
return value
def coalition_to_fashion_shoot(value: str):
"""
Redirect Fashion Shoot stage names to DATE A LANE
"""
value = value.split('-')[0]
if value == 'area1':
return 'easy'
elif value in ['area2', 'area3', 'area4', 'area5']:
return 'normal'
elif value == 'area6':
return 'hard'
else:
return value

View File

@ -150,9 +150,14 @@ page_campaign.link(button=CAMPAIGN_GOTO_EVENT, destination=page_sp)
# 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_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)
# FASHION
page_coalition = Page(FASHION_COALITION_CHECK)
page_coalition.link(button=FASHION_UI_HOME, destination=page_main)
page_coalition.link(button=FASHION_UI_BACK, destination=page_campaign)
page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition)
# Operation Siren

View File

@ -1,7 +1,7 @@
from module.base.button import Button
from module.base.decorator import run_once
from module.base.timer import Timer
from module.coalition.assets import NEONCITY_FLEET_PREPARATION, NEONCITY_PREPARATION_EXIT, DAL_DIFFICULTY_EXIT
from module.coalition.assets import FASHION_FLEET_PREPARATION, NEONCITY_PREPARATION_EXIT
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.exception import (GameNotRunningError, GamePageUnknownError,
@ -564,7 +564,12 @@ class UI(InfoHandler):
# 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):
# if self.appear_then_click(DAL_DIFFICULTY_EXIT, offset=(20, 20), interval=3):
# return True
# Fashion shoot (coalition_20260122)
if self.appear(FASHION_FLEET_PREPARATION, offset=(20, 20), interval=3):
logger.info(f'{FASHION_FLEET_PREPARATION} -> {NEONCITY_PREPARATION_EXIT}')
self.device.click(NEONCITY_PREPARATION_EXIT)
return True
# Idle page