Add: [CN] Assets for coalition_20240627
BIN
assets/cn/coalition/ACADEMY_EASY.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
assets/cn/coalition/ACADEMY_EX.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
assets/cn/coalition/ACADEMY_HARD.png
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
assets/cn/coalition/ACADEMY_MODE_BATTLE.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
assets/cn/coalition/ACADEMY_MODE_STORY.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/cn/coalition/ACADEMY_NORMAL.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
assets/cn/coalition/ACADEMY_PT_OCR.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
assets/cn/coalition/ACADEMY_SP.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
assets/cn/coalition/ACADEMY_SWITCH_MULTI.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
assets/cn/coalition/ACADEMY_SWITCH_SINGLE.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
assets/cn/coalition/ACEDEMY_FLEET_PREPARATION.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -568,7 +568,7 @@
|
||||
"ServerUpdate": "00:00"
|
||||
},
|
||||
"Campaign": {
|
||||
"Name": "TC-3",
|
||||
"Name": "dynamic",
|
||||
"Event": "campaign_main",
|
||||
"Mode": "normal",
|
||||
"UseClearMode": true,
|
||||
@ -578,6 +578,7 @@
|
||||
"AmbushEvade": true
|
||||
},
|
||||
"Coalition": {
|
||||
"Mode": "hard",
|
||||
"Fleet": "single"
|
||||
},
|
||||
"StopCondition": {
|
||||
@ -1148,6 +1149,7 @@
|
||||
"AmbushEvade": true
|
||||
},
|
||||
"Coalition": {
|
||||
"Mode": "hard",
|
||||
"Fleet": "single"
|
||||
},
|
||||
"StopCondition": {
|
||||
|
@ -4,6 +4,17 @@ from module.base.template import Template
|
||||
# This file was automatically generated by dev_tools/button_extract.py.
|
||||
# Don't modify it manually.
|
||||
|
||||
ACADEMY_EASY = Button(area={'cn': (201, 290, 243, 311), 'en': (201, 290, 243, 311), 'jp': (201, 290, 243, 311), 'tw': (201, 290, 243, 311)}, color={'cn': (172, 141, 121), 'en': (172, 141, 121), 'jp': (172, 141, 121), 'tw': (172, 141, 121)}, button={'cn': (201, 290, 243, 311), 'en': (201, 290, 243, 311), 'jp': (201, 290, 243, 311), 'tw': (201, 290, 243, 311)}, file={'cn': './assets/cn/coalition/ACADEMY_EASY.png', 'en': './assets/cn/coalition/ACADEMY_EASY.png', 'jp': './assets/cn/coalition/ACADEMY_EASY.png', 'tw': './assets/cn/coalition/ACADEMY_EASY.png'})
|
||||
ACADEMY_EX = Button(area={'cn': (712, 178, 744, 196), 'en': (712, 178, 744, 196), 'jp': (712, 178, 744, 196), 'tw': (712, 178, 744, 196)}, color={'cn': (151, 200, 191), 'en': (151, 200, 191), 'jp': (151, 200, 191), 'tw': (151, 200, 191)}, button={'cn': (712, 178, 744, 196), 'en': (712, 178, 744, 196), 'jp': (712, 178, 744, 196), 'tw': (712, 178, 744, 196)}, file={'cn': './assets/cn/coalition/ACADEMY_EX.png', 'en': './assets/cn/coalition/ACADEMY_EX.png', 'jp': './assets/cn/coalition/ACADEMY_EX.png', 'tw': './assets/cn/coalition/ACADEMY_EX.png'})
|
||||
ACADEMY_HARD = Button(area={'cn': (956, 503, 1000, 524), 'en': (956, 503, 1000, 524), 'jp': (956, 503, 1000, 524), 'tw': (956, 503, 1000, 524)}, color={'cn': (169, 137, 118), 'en': (169, 137, 118), 'jp': (169, 137, 118), 'tw': (169, 137, 118)}, button={'cn': (956, 503, 1000, 524), 'en': (956, 503, 1000, 524), 'jp': (956, 503, 1000, 524), 'tw': (956, 503, 1000, 524)}, file={'cn': './assets/cn/coalition/ACADEMY_HARD.png', 'en': './assets/cn/coalition/ACADEMY_HARD.png', 'jp': './assets/cn/coalition/ACADEMY_HARD.png', 'tw': './assets/cn/coalition/ACADEMY_HARD.png'})
|
||||
ACADEMY_MODE_BATTLE = Button(area={'cn': (105, 654, 182, 675), 'en': (105, 654, 182, 675), 'jp': (105, 654, 182, 675), 'tw': (105, 654, 182, 675)}, color={'cn': (207, 169, 129), 'en': (207, 169, 129), 'jp': (207, 169, 129), 'tw': (207, 169, 129)}, button={'cn': (105, 654, 182, 675), 'en': (105, 654, 182, 675), 'jp': (105, 654, 182, 675), 'tw': (105, 654, 182, 675)}, file={'cn': './assets/cn/coalition/ACADEMY_MODE_BATTLE.png', 'en': './assets/cn/coalition/ACADEMY_MODE_BATTLE.png', 'jp': './assets/cn/coalition/ACADEMY_MODE_BATTLE.png', 'tw': './assets/cn/coalition/ACADEMY_MODE_BATTLE.png'})
|
||||
ACADEMY_MODE_STORY = Button(area={'cn': (224, 654, 302, 675), 'en': (224, 654, 302, 675), 'jp': (224, 654, 302, 675), 'tw': (224, 654, 302, 675)}, color={'cn': (210, 175, 139), 'en': (210, 175, 139), 'jp': (210, 175, 139), 'tw': (210, 175, 139)}, button={'cn': (224, 654, 302, 675), 'en': (224, 654, 302, 675), 'jp': (224, 654, 302, 675), 'tw': (224, 654, 302, 675)}, file={'cn': './assets/cn/coalition/ACADEMY_MODE_STORY.png', 'en': './assets/cn/coalition/ACADEMY_MODE_STORY.png', 'jp': './assets/cn/coalition/ACADEMY_MODE_STORY.png', 'tw': './assets/cn/coalition/ACADEMY_MODE_STORY.png'})
|
||||
ACADEMY_NORMAL = Button(area={'cn': (604, 411, 646, 433), 'en': (604, 411, 646, 433), 'jp': (604, 411, 646, 433), 'tw': (604, 411, 646, 433)}, color={'cn': (169, 137, 118), 'en': (169, 137, 118), 'jp': (169, 137, 118), 'tw': (169, 137, 118)}, button={'cn': (604, 411, 646, 433), 'en': (604, 411, 646, 433), 'jp': (604, 411, 646, 433), 'tw': (604, 411, 646, 433)}, file={'cn': './assets/cn/coalition/ACADEMY_NORMAL.png', 'en': './assets/cn/coalition/ACADEMY_NORMAL.png', 'jp': './assets/cn/coalition/ACADEMY_NORMAL.png', 'tw': './assets/cn/coalition/ACADEMY_NORMAL.png'})
|
||||
ACADEMY_PT_OCR = Button(area={'cn': (1125, 208, 1265, 225), 'en': (1125, 208, 1265, 225), 'jp': (1125, 208, 1265, 225), 'tw': (1125, 208, 1265, 225)}, color={'cn': (124, 105, 88), 'en': (124, 105, 88), 'jp': (124, 105, 88), 'tw': (124, 105, 88)}, button={'cn': (1125, 208, 1265, 225), 'en': (1125, 208, 1265, 225), 'jp': (1125, 208, 1265, 225), 'tw': (1125, 208, 1265, 225)}, file={'cn': './assets/cn/coalition/ACADEMY_PT_OCR.png', 'en': './assets/cn/coalition/ACADEMY_PT_OCR.png', 'jp': './assets/cn/coalition/ACADEMY_PT_OCR.png', 'tw': './assets/cn/coalition/ACADEMY_PT_OCR.png'})
|
||||
ACADEMY_SP = Button(area={'cn': (333, 580, 362, 597), 'en': (333, 580, 362, 597), 'jp': (333, 580, 362, 597), 'tw': (333, 580, 362, 597)}, color={'cn': (176, 146, 126), 'en': (176, 146, 126), 'jp': (176, 146, 126), 'tw': (176, 146, 126)}, button={'cn': (333, 580, 362, 597), 'en': (333, 580, 362, 597), 'jp': (333, 580, 362, 597), 'tw': (333, 580, 362, 597)}, file={'cn': './assets/cn/coalition/ACADEMY_SP.png', 'en': './assets/cn/coalition/ACADEMY_SP.png', 'jp': './assets/cn/coalition/ACADEMY_SP.png', 'tw': './assets/cn/coalition/ACADEMY_SP.png'})
|
||||
ACADEMY_SWITCH_MULTI = Button(area={'cn': (1088, 458, 1216, 486), 'en': (1088, 458, 1216, 486), 'jp': (1088, 458, 1216, 486), 'tw': (1088, 458, 1216, 486)}, color={'cn': (234, 184, 61), 'en': (234, 184, 61), 'jp': (234, 184, 61), 'tw': (234, 184, 61)}, button={'cn': (1088, 458, 1216, 486), 'en': (1088, 458, 1216, 486), 'jp': (1088, 458, 1216, 486), 'tw': (1088, 458, 1216, 486)}, file={'cn': './assets/cn/coalition/ACADEMY_SWITCH_MULTI.png', 'en': './assets/cn/coalition/ACADEMY_SWITCH_MULTI.png', 'jp': './assets/cn/coalition/ACADEMY_SWITCH_MULTI.png', 'tw': './assets/cn/coalition/ACADEMY_SWITCH_MULTI.png'})
|
||||
ACADEMY_SWITCH_SINGLE = Button(area={'cn': (941, 458, 1070, 486), 'en': (941, 458, 1070, 486), 'jp': (941, 458, 1070, 486), 'tw': (941, 458, 1070, 486)}, color={'cn': (232, 182, 60), 'en': (232, 182, 60), 'jp': (232, 182, 60), 'tw': (232, 182, 60)}, button={'cn': (941, 458, 1070, 486), 'en': (941, 458, 1070, 486), 'jp': (941, 458, 1070, 486), 'tw': (941, 458, 1070, 486)}, file={'cn': './assets/cn/coalition/ACADEMY_SWITCH_SINGLE.png', 'en': './assets/cn/coalition/ACADEMY_SWITCH_SINGLE.png', 'jp': './assets/cn/coalition/ACADEMY_SWITCH_SINGLE.png', 'tw': './assets/cn/coalition/ACADEMY_SWITCH_SINGLE.png'})
|
||||
ACEDEMY_FLEET_PREPARATION = Button(area={'cn': (1025, 537, 1132, 562), 'en': (1025, 537, 1132, 562), 'jp': (1025, 537, 1132, 562), 'tw': (1025, 537, 1132, 562)}, color={'cn': (106, 149, 226), 'en': (106, 149, 226), 'jp': (106, 149, 226), 'tw': (106, 149, 226)}, button={'cn': (1025, 537, 1132, 562), 'en': (1025, 537, 1132, 562), 'jp': (1025, 537, 1132, 562), 'tw': (1025, 537, 1132, 562)}, file={'cn': './assets/cn/coalition/ACEDEMY_FLEET_PREPARATION.png', 'en': './assets/cn/coalition/ACEDEMY_FLEET_PREPARATION.png', 'jp': './assets/cn/coalition/ACEDEMY_FLEET_PREPARATION.png', 'tw': './assets/cn/coalition/ACEDEMY_FLEET_PREPARATION.png'})
|
||||
COALITION_ACADEMY_BACK = Button(area={'cn': (44, 48, 62, 74), 'en': (44, 48, 62, 74), 'jp': (44, 48, 62, 74), 'tw': (44, 48, 62, 74)}, color={'cn': (162, 188, 194), 'en': (162, 188, 194), 'jp': (162, 188, 194), 'tw': (162, 188, 194)}, button={'cn': (44, 48, 62, 74), 'en': (44, 48, 62, 74), 'jp': (44, 48, 62, 74), 'tw': (44, 48, 62, 74)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_BACK.png', 'en': './assets/cn/coalition/COALITION_ACADEMY_BACK.png', 'jp': './assets/cn/coalition/COALITION_ACADEMY_BACK.png', 'tw': './assets/cn/coalition/COALITION_ACADEMY_BACK.png'})
|
||||
COALITION_ACADEMY_CAMPAIGN_CHECK = Button(area={'cn': (131, 50, 168, 83), 'en': (131, 50, 168, 83), 'jp': (131, 50, 168, 83), 'tw': (131, 50, 168, 83)}, color={'cn': (165, 210, 212), 'en': (165, 210, 212), 'jp': (165, 210, 212), 'tw': (165, 210, 212)}, button={'cn': (131, 50, 168, 83), 'en': (131, 50, 168, 83), 'jp': (131, 50, 168, 83), 'tw': (131, 50, 168, 83)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_CAMPAIGN_CHECK.png', 'en': './assets/cn/coalition/COALITION_ACADEMY_CAMPAIGN_CHECK.png', 'jp': './assets/cn/coalition/COALITION_ACADEMY_CAMPAIGN_CHECK.png', 'tw': './assets/cn/coalition/COALITION_ACADEMY_CAMPAIGN_CHECK.png'})
|
||||
COALITION_ACADEMY_GOTO_CAMPAIGN = Button(area={'cn': (962, 645, 1009, 669), 'en': (962, 645, 1009, 669), 'jp': (962, 645, 1009, 669), 'tw': (962, 645, 1009, 669)}, color={'cn': (198, 166, 156), 'en': (198, 166, 156), 'jp': (198, 166, 156), 'tw': (198, 166, 156)}, button={'cn': (962, 645, 1009, 669), 'en': (962, 645, 1009, 669), 'jp': (962, 645, 1009, 669), 'tw': (962, 645, 1009, 669)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_GOTO_CAMPAIGN.png', 'en': './assets/cn/coalition/COALITION_ACADEMY_GOTO_CAMPAIGN.png', 'jp': './assets/cn/coalition/COALITION_ACADEMY_GOTO_CAMPAIGN.png', 'tw': './assets/cn/coalition/COALITION_ACADEMY_GOTO_CAMPAIGN.png'})
|
||||
@ -11,14 +22,14 @@ COALITION_ACADEMY_HOME = Button(area={'cn': (1221, 48, 1244, 73), 'en': (1221, 4
|
||||
COALITION_ACADEMY_MAIN_CHECK = Button(area={'cn': (132, 57, 163, 92), 'en': (132, 57, 163, 92), 'jp': (132, 57, 163, 92), 'tw': (132, 57, 163, 92)}, color={'cn': (143, 202, 205), 'en': (143, 202, 205), 'jp': (143, 202, 205), 'tw': (143, 202, 205)}, button={'cn': (132, 57, 163, 92), 'en': (132, 57, 163, 92), 'jp': (132, 57, 163, 92), 'tw': (132, 57, 163, 92)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'en': './assets/cn/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'jp': './assets/cn/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'tw': './assets/cn/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'})
|
||||
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_PREPARATION = Button(area={'cn': (1057, 527, 1155, 548), 'en': (1114, 527, 1200, 545), 'jp': (1056, 525, 1157, 550), 'tw': (1057, 527, 1155, 548)}, color={'cn': (122, 146, 222), 'en': (106, 135, 228), 'jp': (115, 141, 222), 'tw': (110, 136, 224)}, button={'cn': (968, 511, 1245, 563), 'en': (968, 511, 1245, 563), 'jp': (968, 511, 1245, 563), 'tw': (968, 511, 1245, 563)}, file={'cn': './assets/cn/coalition/FLEET_PREPARATION.png', 'en': './assets/en/coalition/FLEET_PREPARATION.png', 'jp': './assets/jp/coalition/FLEET_PREPARATION.png', 'tw': './assets/tw/coalition/FLEET_PREPARATION.png'})
|
||||
FLEET_SWITCH_MULTI = Button(area={'cn': (1106, 449, 1237, 478), 'en': (1106, 449, 1237, 478), 'jp': (1106, 449, 1237, 478), 'tw': (1106, 449, 1237, 478)}, color={'cn': (232, 175, 58), 'en': (197, 147, 49), 'jp': (220, 165, 55), 'tw': (225, 170, 59)}, button={'cn': (1106, 449, 1237, 478), 'en': (1106, 449, 1237, 478), 'jp': (1106, 449, 1237, 478), 'tw': (1106, 449, 1237, 478)}, file={'cn': './assets/cn/coalition/FLEET_SWITCH_MULTI.png', 'en': './assets/en/coalition/FLEET_SWITCH_MULTI.png', 'jp': './assets/jp/coalition/FLEET_SWITCH_MULTI.png', 'tw': './assets/tw/coalition/FLEET_SWITCH_MULTI.png'})
|
||||
FLEET_SWITCH_SINGLE = Button(area={'cn': (968, 449, 1098, 478), 'en': (968, 449, 1098, 478), 'jp': (968, 449, 1098, 478), 'tw': (968, 449, 1098, 478)}, color={'cn': (230, 173, 57), 'en': (199, 148, 49), 'jp': (221, 166, 55), 'tw': (220, 166, 58)}, button={'cn': (968, 449, 1098, 478), 'en': (968, 449, 1098, 478), 'jp': (968, 449, 1098, 478), 'tw': (968, 449, 1098, 478)}, file={'cn': './assets/cn/coalition/FLEET_SWITCH_SINGLE.png', 'en': './assets/en/coalition/FLEET_SWITCH_SINGLE.png', 'jp': './assets/jp/coalition/FLEET_SWITCH_SINGLE.png', 'tw': './assets/tw/coalition/FLEET_SWITCH_SINGLE.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'})
|
||||
FROSTFALL_FLEET_PREPARATION = Button(area={'cn': (1057, 527, 1155, 548), 'en': (1057, 527, 1155, 548), 'jp': (1057, 527, 1155, 548), 'tw': (1057, 527, 1155, 548)}, color={'cn': (122, 146, 222), 'en': (122, 146, 222), 'jp': (122, 146, 222), 'tw': (122, 146, 222)}, button={'cn': (1057, 527, 1155, 548), 'en': (1057, 527, 1155, 548), 'jp': (1057, 527, 1155, 548), 'tw': (1057, 527, 1155, 548)}, file={'cn': './assets/cn/coalition/FROSTFALL_FLEET_PREPARATION.png', 'en': './assets/cn/coalition/FROSTFALL_FLEET_PREPARATION.png', 'jp': './assets/cn/coalition/FROSTFALL_FLEET_PREPARATION.png', 'tw': './assets/cn/coalition/FROSTFALL_FLEET_PREPARATION.png'})
|
||||
FROSTFALL_MODE_BATTLE = Button(area={'cn': (71, 608, 137, 653), 'en': (71, 608, 137, 653), 'jp': (71, 608, 137, 653), 'tw': (71, 608, 137, 653)}, color={'cn': (63, 106, 122), 'en': (63, 106, 122), 'jp': (63, 106, 122), 'tw': (63, 106, 122)}, button={'cn': (71, 608, 137, 653), 'en': (71, 608, 137, 653), 'jp': (71, 608, 137, 653), 'tw': (71, 608, 137, 653)}, file={'cn': './assets/cn/coalition/FROSTFALL_MODE_BATTLE.png', 'en': './assets/cn/coalition/FROSTFALL_MODE_BATTLE.png', 'jp': './assets/cn/coalition/FROSTFALL_MODE_BATTLE.png', 'tw': './assets/cn/coalition/FROSTFALL_MODE_BATTLE.png'})
|
||||
FROSTFALL_MODE_STORY = Button(area={'cn': (73, 610, 134, 652), 'en': (73, 610, 134, 652), 'jp': (73, 610, 134, 652), 'tw': (73, 610, 134, 652)}, color={'cn': (119, 44, 32), 'en': (119, 44, 32), 'jp': (119, 44, 32), 'tw': (119, 44, 32)}, button={'cn': (73, 610, 134, 652), 'en': (73, 610, 134, 652), 'jp': (73, 610, 134, 652), 'tw': (73, 610, 134, 652)}, file={'cn': './assets/cn/coalition/FROSTFALL_MODE_STORY.png', 'en': './assets/cn/coalition/FROSTFALL_MODE_STORY.png', 'jp': './assets/cn/coalition/FROSTFALL_MODE_STORY.png', 'tw': './assets/cn/coalition/FROSTFALL_MODE_STORY.png'})
|
||||
FROSTFALL_OCR_PT = Button(area={'cn': (1181, 641, 1254, 663), 'en': (1181, 641, 1254, 663), 'jp': (1181, 641, 1254, 663), 'tw': (1181, 641, 1254, 663)}, color={'cn': (93, 100, 106), 'en': (93, 100, 106), 'jp': (93, 100, 106), 'tw': (93, 100, 106)}, button={'cn': (1181, 641, 1254, 663), 'en': (1181, 641, 1254, 663), 'jp': (1181, 641, 1254, 663), 'tw': (1181, 641, 1254, 663)}, file={'cn': './assets/cn/coalition/FROSTFALL_OCR_PT.png', 'en': './assets/en/coalition/FROSTFALL_OCR_PT.png', 'jp': './assets/jp/coalition/FROSTFALL_OCR_PT.png', 'tw': './assets/tw/coalition/FROSTFALL_OCR_PT.png'})
|
||||
FROSTFALL_SP = Button(area={'cn': (631, 160, 658, 173), 'en': (631, 160, 658, 173), 'jp': (631, 160, 658, 173), 'tw': (505, 290, 532, 302)}, color={'cn': (194, 145, 252), 'en': (194, 145, 252), 'jp': (194, 145, 252), 'tw': (183, 128, 253)}, button={'cn': (631, 160, 658, 173), 'en': (631, 160, 658, 173), 'jp': (631, 160, 658, 173), 'tw': (505, 290, 532, 302)}, file={'cn': './assets/cn/coalition/FROSTFALL_SP.png', 'en': './assets/en/coalition/FROSTFALL_SP.png', 'jp': './assets/jp/coalition/FROSTFALL_SP.png', 'tw': './assets/tw/coalition/FROSTFALL_SP.png'})
|
||||
FROSTFALL_SWITCH_MULTI = Button(area={'cn': (1106, 449, 1237, 478), 'en': (1106, 449, 1237, 478), 'jp': (1106, 449, 1237, 478), 'tw': (1106, 449, 1237, 478)}, color={'cn': (232, 175, 58), 'en': (232, 175, 58), 'jp': (232, 175, 58), 'tw': (232, 175, 58)}, button={'cn': (1106, 449, 1237, 478), 'en': (1106, 449, 1237, 478), 'jp': (1106, 449, 1237, 478), 'tw': (1106, 449, 1237, 478)}, file={'cn': './assets/cn/coalition/FROSTFALL_SWITCH_MULTI.png', 'en': './assets/cn/coalition/FROSTFALL_SWITCH_MULTI.png', 'jp': './assets/cn/coalition/FROSTFALL_SWITCH_MULTI.png', 'tw': './assets/cn/coalition/FROSTFALL_SWITCH_MULTI.png'})
|
||||
FROSTFALL_SWITCH_SINGLE = Button(area={'cn': (968, 449, 1098, 478), 'en': (968, 449, 1098, 478), 'jp': (968, 449, 1098, 478), 'tw': (968, 449, 1098, 478)}, color={'cn': (230, 173, 57), 'en': (230, 173, 57), 'jp': (230, 173, 57), 'tw': (230, 173, 57)}, button={'cn': (968, 449, 1098, 478), 'en': (968, 449, 1098, 478), 'jp': (968, 449, 1098, 478), 'tw': (968, 449, 1098, 478)}, file={'cn': './assets/cn/coalition/FROSTFALL_SWITCH_SINGLE.png', 'en': './assets/cn/coalition/FROSTFALL_SWITCH_SINGLE.png', 'jp': './assets/cn/coalition/FROSTFALL_SWITCH_SINGLE.png', 'tw': './assets/cn/coalition/FROSTFALL_SWITCH_SINGLE.png'})
|
||||
FROSTFALL_TC1 = Button(area={'cn': (304, 320, 330, 332), 'en': (304, 320, 330, 332), 'jp': (304, 320, 330, 332), 'tw': (304, 320, 330, 332)}, color={'cn': (204, 162, 254), 'en': (204, 162, 254), 'jp': (204, 162, 254), 'tw': (188, 137, 254)}, button={'cn': (304, 320, 330, 332), 'en': (304, 320, 330, 332), 'jp': (304, 320, 330, 332), 'tw': (304, 320, 330, 332)}, file={'cn': './assets/cn/coalition/FROSTFALL_TC1.png', 'en': './assets/en/coalition/FROSTFALL_TC1.png', 'jp': './assets/jp/coalition/FROSTFALL_TC1.png', 'tw': './assets/tw/coalition/FROSTFALL_TC1.png'})
|
||||
FROSTFALL_TC2 = Button(area={'cn': (810, 362, 835, 373), 'en': (810, 362, 835, 373), 'jp': (810, 362, 835, 373), 'tw': (631, 160, 658, 173)}, color={'cn': (214, 178, 254), 'en': (214, 178, 254), 'jp': (214, 178, 254), 'tw': (186, 136, 252)}, button={'cn': (810, 362, 835, 373), 'en': (810, 362, 835, 373), 'jp': (810, 362, 835, 373), 'tw': (631, 160, 658, 173)}, file={'cn': './assets/cn/coalition/FROSTFALL_TC2.png', 'en': './assets/en/coalition/FROSTFALL_TC2.png', 'jp': './assets/jp/coalition/FROSTFALL_TC2.png', 'tw': './assets/tw/coalition/FROSTFALL_TC2.png'})
|
||||
FROSTFALL_TC3 = Button(area={'cn': (505, 290, 532, 302), 'en': (505, 290, 532, 302), 'jp': (505, 290, 532, 302), 'tw': (810, 362, 835, 373)}, color={'cn': (210, 172, 252), 'en': (210, 172, 252), 'jp': (210, 172, 252), 'tw': (197, 153, 255)}, button={'cn': (505, 290, 532, 302), 'en': (505, 290, 532, 302), 'jp': (505, 290, 532, 302), 'tw': (810, 362, 835, 373)}, file={'cn': './assets/cn/coalition/FROSTFALL_TC3.png', 'en': './assets/en/coalition/FROSTFALL_TC3.png', 'jp': './assets/jp/coalition/FROSTFALL_TC3.png', 'tw': './assets/tw/coalition/FROSTFALL_TC3.png'})
|
||||
MODE_SWITCH_BATTLE = Button(area={'cn': (71, 608, 137, 653), 'en': (71, 608, 137, 653), 'jp': (71, 608, 137, 653), 'tw': (71, 608, 137, 653)}, color={'cn': (63, 106, 122), 'en': (63, 106, 122), 'jp': (63, 106, 122), 'tw': (63, 106, 122)}, button={'cn': (71, 608, 137, 653), 'en': (71, 608, 137, 653), 'jp': (71, 608, 137, 653), 'tw': (71, 608, 137, 653)}, file={'cn': './assets/cn/coalition/MODE_SWITCH_BATTLE.png', 'en': './assets/en/coalition/MODE_SWITCH_BATTLE.png', 'jp': './assets/jp/coalition/MODE_SWITCH_BATTLE.png', 'tw': './assets/tw/coalition/MODE_SWITCH_BATTLE.png'})
|
||||
MODE_SWITCH_STORY = Button(area={'cn': (73, 610, 134, 652), 'en': (73, 610, 134, 652), 'jp': (73, 610, 134, 652), 'tw': (73, 610, 134, 652)}, color={'cn': (119, 44, 32), 'en': (119, 44, 32), 'jp': (119, 44, 32), 'tw': (119, 44, 32)}, button={'cn': (73, 610, 134, 652), 'en': (73, 610, 134, 652), 'jp': (73, 610, 134, 652), 'tw': (73, 610, 134, 652)}, file={'cn': './assets/cn/coalition/MODE_SWITCH_STORY.png', 'en': './assets/en/coalition/MODE_SWITCH_STORY.png', 'jp': './assets/jp/coalition/MODE_SWITCH_STORY.png', 'tw': './assets/tw/coalition/MODE_SWITCH_STORY.png'})
|
||||
|
@ -7,7 +7,20 @@ from module.exception import ScriptError, ScriptEnd
|
||||
from module.logger import logger
|
||||
from module.ocr.ocr import Digit
|
||||
|
||||
OCR_PT = Digit(FROSTFALL_OCR_PT, name='OCR_PT', letter=(198, 158, 82), threshold=128)
|
||||
|
||||
class AcademyPtOcr(Digit):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.alphabet += ':'
|
||||
|
||||
def after_process(self, result):
|
||||
logger.attr(self.name, result)
|
||||
try:
|
||||
# 累计: 840
|
||||
result = result.rsplit(':')[1]
|
||||
except IndexError:
|
||||
pass
|
||||
return super().after_process(result)
|
||||
|
||||
|
||||
class Coalition(CoalitionCombat, CampaignEvent):
|
||||
@ -19,10 +32,19 @@ class Coalition(CoalitionCombat, CampaignEvent):
|
||||
Returns:
|
||||
int: PT amount, or 0 if unable to parse
|
||||
"""
|
||||
pt = OCR_PT.ocr(self.device.image)
|
||||
event = self.config.Campaign_Event
|
||||
if event == 'coalition_20230323':
|
||||
ocr = Digit(FROSTFALL_OCR_PT, name='OCR_PT', letter=(198, 158, 82), threshold=128)
|
||||
elif event == 'coalition_20240627':
|
||||
ocr = AcademyPtOcr(ACADEMY_PT_OCR, name='OCR_PT', letter=(255, 255, 255), threshold=128)
|
||||
else:
|
||||
logger.error(f'ocr object is not defined in event {event}')
|
||||
raise ScriptError
|
||||
|
||||
pt = ocr.ocr(self.device.image)
|
||||
return pt
|
||||
|
||||
def triggered_stop_condition(self):
|
||||
def triggered_stop_condition(self, oil_check=True):
|
||||
"""
|
||||
Returns:
|
||||
bool: If triggered a stop condition.
|
||||
@ -34,10 +56,11 @@ class Coalition(CoalitionCombat, CampaignEvent):
|
||||
self.config.Scheduler_Enable = False
|
||||
return True
|
||||
# Oil limit
|
||||
if self.get_oil() < max(500, self.config.StopCondition_OilLimit):
|
||||
logger.hr('Triggered stop condition: Oil limit')
|
||||
self.config.task_delay(minute=(120, 240))
|
||||
return True
|
||||
if oil_check:
|
||||
if self.get_oil() < max(500, self.config.StopCondition_OilLimit):
|
||||
logger.hr('Triggered stop condition: Oil limit')
|
||||
self.config.task_delay(minute=(120, 240))
|
||||
return True
|
||||
# Event limit
|
||||
if self.event_pt_limit_triggered():
|
||||
logger.hr('Triggered stop condition: Event PT limit')
|
||||
@ -76,9 +99,11 @@ class Coalition(CoalitionCombat, CampaignEvent):
|
||||
self.config.override(
|
||||
Coalition_Fleet='multi',
|
||||
)
|
||||
self.emotion.check_reduce(battle=self.coalition_get_battles(stage))
|
||||
self.emotion.check_reduce(battle=self.coalition_get_battles(event, stage))
|
||||
|
||||
self.enter_map(stage=stage, fleet=fleet)
|
||||
self.enter_map(event=event, stage=stage, mode=fleet)
|
||||
if self.triggered_stop_condition(oil_check=True):
|
||||
raise ScriptEnd
|
||||
self.coalition_combat()
|
||||
|
||||
@staticmethod
|
||||
@ -89,14 +114,14 @@ class Coalition(CoalitionCombat, CampaignEvent):
|
||||
|
||||
return event, stage
|
||||
|
||||
def run(self, name='', stage='', fleet='', total=0):
|
||||
name = name if name else self.config.Campaign_Event
|
||||
stage = stage if stage else self.config.Campaign_Name
|
||||
def run(self, event='', stage='', fleet='', total=0):
|
||||
event = event if event else self.config.Campaign_Event
|
||||
stage = stage if stage else self.config.Coalition_Mode
|
||||
fleet = fleet if fleet else self.config.Coalition_Fleet
|
||||
if not name or not stage or not fleet:
|
||||
raise ScriptError(f'RaidRun arguments unfilled. name={name}, stage={stage}, fleet={fleet}')
|
||||
if not event or not stage or not fleet:
|
||||
raise ScriptError(f'RaidRun arguments unfilled. name={event}, stage={stage}, fleet={fleet}')
|
||||
|
||||
name, stage = self.handle_stage_name(name, stage)
|
||||
event, stage = self.handle_stage_name(event, stage)
|
||||
self.run_count = 0
|
||||
self.run_limit = self.config.StopCondition_RunCount
|
||||
while 1:
|
||||
@ -107,7 +132,7 @@ class Coalition(CoalitionCombat, CampaignEvent):
|
||||
self.config.task_stop()
|
||||
|
||||
# Log
|
||||
logger.hr(f'{name}_{stage}', level=2)
|
||||
logger.hr(f'{event}_{stage}', level=2)
|
||||
if self.config.StopCondition_RunCount > 0:
|
||||
logger.info(f'Count remain: {self.config.StopCondition_RunCount}')
|
||||
else:
|
||||
@ -117,17 +142,17 @@ class Coalition(CoalitionCombat, CampaignEvent):
|
||||
self.device.stuck_record_clear()
|
||||
self.device.click_record_clear()
|
||||
self.ui_goto_coalition()
|
||||
self.coalition_ensure_mode('battle')
|
||||
self.coalition_ensure_mode(event, 'battle')
|
||||
|
||||
# End
|
||||
if self.triggered_stop_condition():
|
||||
if self.triggered_stop_condition(oil_check=False):
|
||||
break
|
||||
|
||||
# Run
|
||||
self.device.stuck_record_clear()
|
||||
self.device.click_record_clear()
|
||||
try:
|
||||
self.coalition_execute_once(event=name, stage=stage, fleet=fleet)
|
||||
self.coalition_execute_once(event=event, stage=stage, fleet=fleet)
|
||||
except ScriptEnd as e:
|
||||
logger.hr('Script end')
|
||||
logger.info(str(e))
|
||||
@ -138,7 +163,7 @@ class Coalition(CoalitionCombat, CampaignEvent):
|
||||
if self.config.StopCondition_RunCount:
|
||||
self.config.StopCondition_RunCount -= 1
|
||||
# End
|
||||
if self.triggered_stop_condition():
|
||||
if self.triggered_stop_condition(oil_check=False):
|
||||
break
|
||||
# Scheduler
|
||||
if self.config.task_switched():
|
||||
|
@ -2,33 +2,38 @@ from module.base.timer import Timer
|
||||
from module.coalition.assets import *
|
||||
from module.combat.assets import BATTLE_PREPARATION
|
||||
from module.combat.combat import Combat
|
||||
from module.exception import CampaignNameError, RequestHumanTakeover
|
||||
from module.exception import CampaignNameError, RequestHumanTakeover, ScriptError
|
||||
from module.logger import logger
|
||||
from module.ui.assets import COALITION_CHECK
|
||||
from module.ui.page import page_coalition
|
||||
from module.ui.switch import Switch
|
||||
|
||||
MODE_SWITCH = Switch('CoalitionMode', offset=(20, 20))
|
||||
MODE_SWITCH.add_status('story', MODE_SWITCH_STORY)
|
||||
MODE_SWITCH.add_status('battle', MODE_SWITCH_BATTLE)
|
||||
|
||||
FLEET_SWITCH = Switch('FleetMode', is_selector=True, offset=0) # No offset for color match
|
||||
FLEET_SWITCH.add_status('single', FLEET_SWITCH_SINGLE)
|
||||
FLEET_SWITCH.add_status('multi', FLEET_SWITCH_MULTI)
|
||||
|
||||
|
||||
class CoalitionUI(Combat):
|
||||
def in_coalition(self):
|
||||
# The same as raid
|
||||
return self.appear(COALITION_CHECK, offset=(20, 20))
|
||||
return self.ui_page_appear(page_coalition, offset=(20, 20))
|
||||
|
||||
def coalition_ensure_mode(self, mode):
|
||||
def coalition_ensure_mode(self, event, mode):
|
||||
"""
|
||||
Args:
|
||||
event (str): Event name.
|
||||
mode (str): 'story' or 'battle'
|
||||
|
||||
Pages:
|
||||
in: in_coalition
|
||||
"""
|
||||
MODE_SWITCH = Switch('CoalitionMode', offset=(20, 20))
|
||||
if event == 'coalition_20230323':
|
||||
MODE_SWITCH.add_status('story', FROSTFALL_MODE_STORY)
|
||||
MODE_SWITCH.add_status('battle', FROSTFALL_MODE_BATTLE)
|
||||
elif event == 'coalition_20240627':
|
||||
# Note that switch button are reversed
|
||||
MODE_SWITCH.add_status('story', ACADEMY_MODE_BATTLE)
|
||||
MODE_SWITCH.add_status('battle', ACADEMY_MODE_STORY)
|
||||
else:
|
||||
logger.error(f'MODE_SWITCH is not defined in event {event}')
|
||||
raise ScriptError
|
||||
|
||||
if mode == 'story':
|
||||
MODE_SWITCH.set('battle', main=self)
|
||||
elif mode == 'battle':
|
||||
@ -36,14 +41,26 @@ class CoalitionUI(Combat):
|
||||
else:
|
||||
logger.warning(f'Unknown coalition campaign mode: {mode}')
|
||||
|
||||
def coalition_ensure_fleet(self, mode):
|
||||
def coalition_ensure_fleet(self, event, mode):
|
||||
"""
|
||||
Args:
|
||||
event (str): Event name.
|
||||
mode (str): 'single' or 'multi'
|
||||
|
||||
Pages:
|
||||
in: FLEET_PREPARATION
|
||||
"""
|
||||
FLEET_SWITCH = Switch('FleetMode', is_selector=True, offset=0) # No offset for color match
|
||||
if event == 'coalition_20230323':
|
||||
FLEET_SWITCH.add_status('single', FROSTFALL_SWITCH_SINGLE)
|
||||
FLEET_SWITCH.add_status('multi', FROSTFALL_SWITCH_MULTI)
|
||||
elif event == 'coalition_20240627':
|
||||
FLEET_SWITCH.add_status('single', ACADEMY_SWITCH_SINGLE)
|
||||
FLEET_SWITCH.add_status('multi', ACADEMY_SWITCH_MULTI)
|
||||
else:
|
||||
logger.error(f'FLEET_SWITCH is not defined in event {event}')
|
||||
raise ScriptError
|
||||
|
||||
if mode == 'single':
|
||||
FLEET_SWITCH.set('single', main=self)
|
||||
elif mode == 'multi':
|
||||
@ -52,68 +69,119 @@ class CoalitionUI(Combat):
|
||||
logger.warning(f'Unknown coalition fleet mode: {mode}')
|
||||
|
||||
@staticmethod
|
||||
def coalition_get_entrance(stage):
|
||||
def coalition_get_entrance(event, stage):
|
||||
"""
|
||||
Args:
|
||||
event (str): Event name.
|
||||
stage (str): Stage name.
|
||||
|
||||
Returns:
|
||||
Button: Entrance button
|
||||
"""
|
||||
stage = stage.lower()
|
||||
if stage == 'tc1':
|
||||
return FROSTFALL_TC1
|
||||
if stage == 'tc2':
|
||||
return FROSTFALL_TC2
|
||||
if stage == 'tc3':
|
||||
return FROSTFALL_TC3
|
||||
if stage == 'sp':
|
||||
return FROSTFALL_SP
|
||||
if stage == 'ex':
|
||||
return FROSTFALL_EX
|
||||
dic = {
|
||||
('coalition_20230323', 'tc1'): FROSTFALL_TC1,
|
||||
('coalition_20230323', 'tc2'): FROSTFALL_TC2,
|
||||
('coalition_20230323', 'tc3'): FROSTFALL_TC3,
|
||||
('coalition_20230323', 'sp'): FROSTFALL_SP,
|
||||
('coalition_20230323', 'ex'): FROSTFALL_EX,
|
||||
|
||||
raise CampaignNameError
|
||||
('coalition_20240627', 'easy'): ACADEMY_EASY,
|
||||
('coalition_20240627', 'normal'): ACADEMY_NORMAL,
|
||||
('coalition_20240627', 'hard'): ACADEMY_HARD,
|
||||
('coalition_20240627', 'sp'): ACADEMY_SP,
|
||||
('coalition_20240627', 'ex'): ACADEMY_EX,
|
||||
}
|
||||
stage = stage.lower()
|
||||
try:
|
||||
return dic[(event, stage)]
|
||||
except KeyError as e:
|
||||
logger.error(e)
|
||||
raise CampaignNameError
|
||||
|
||||
@staticmethod
|
||||
def coalition_get_battles(stage):
|
||||
def coalition_get_battles(event, stage):
|
||||
"""
|
||||
Args:
|
||||
event (str): Event name.
|
||||
stage (str): Stage name.
|
||||
|
||||
Returns:
|
||||
int: Number of battles
|
||||
"""
|
||||
if stage == 'tc1':
|
||||
return 1
|
||||
if stage == 'tc2':
|
||||
return 2
|
||||
if stage == 'tc3':
|
||||
return 3
|
||||
dic = {
|
||||
('coalition_20230323', 'tc1'): 1,
|
||||
('coalition_20230323', 'tc2'): 2,
|
||||
('coalition_20230323', 'tc3'): 3,
|
||||
('coalition_20230323', 'sp'): 1,
|
||||
('coalition_20230323', 'ex'): 1,
|
||||
|
||||
return 1
|
||||
|
||||
def handle_fleet_preparation(self, stage, fleet):
|
||||
('coalition_20240627', 'easy'): 1,
|
||||
('coalition_20240627', 'normal'): 2,
|
||||
('coalition_20240627', 'hard'): 3,
|
||||
('coalition_20240627', 'sp'): 4,
|
||||
('coalition_20240627', 'ex'): 5,
|
||||
}
|
||||
stage = stage.lower()
|
||||
try:
|
||||
return dic[(event, stage)]
|
||||
except KeyError as e:
|
||||
logger.error(e)
|
||||
raise CampaignNameError
|
||||
|
||||
# No fleet switch in TC1
|
||||
if stage in ['tc1', 'sp']:
|
||||
return False
|
||||
|
||||
self.coalition_ensure_fleet(fleet)
|
||||
return True
|
||||
|
||||
def enter_map(self, stage, fleet, skip_first_screenshot=True):
|
||||
@staticmethod
|
||||
def coalition_get_fleet_preparation(event):
|
||||
"""
|
||||
Args:
|
||||
event (str): Event name.
|
||||
|
||||
Returns:
|
||||
Button:
|
||||
"""
|
||||
if event == 'coalition_20230323':
|
||||
return FROSTFALL_FLEET_PREPARATION
|
||||
elif event == 'coalition_20240627':
|
||||
return ACEDEMY_FLEET_PREPARATION
|
||||
else:
|
||||
logger.error(f'FLEET_PREPARATION is not defined in event {event}')
|
||||
raise ScriptError
|
||||
|
||||
def handle_fleet_preparation(self, event, stage, mode):
|
||||
"""
|
||||
Args:
|
||||
event (str): Event name.
|
||||
stage (str): Stage name.
|
||||
mode (str): 'single' or 'multi'
|
||||
|
||||
Returns:
|
||||
bool: If success
|
||||
"""
|
||||
stage = stage.lower()
|
||||
|
||||
if event == 'coalition_20230323':
|
||||
# No fleet switch in TC1
|
||||
if stage in ['tc1', 'sp']:
|
||||
return False
|
||||
if event == 'coalition_20240627':
|
||||
if stage in ['sp', 'ex']:
|
||||
return False
|
||||
|
||||
self.coalition_ensure_fleet(event, mode)
|
||||
return True
|
||||
|
||||
def enter_map(self, event, stage, mode, skip_first_screenshot=True):
|
||||
"""
|
||||
Args:
|
||||
event (str): Event name such as 'coalition_20230323'
|
||||
stage (str): Stage name such as 'TC3'
|
||||
fleet (str): 'single' or 'multi'
|
||||
mode (str): 'single' or 'multi'
|
||||
skip_first_screenshot:
|
||||
|
||||
Pages:
|
||||
in: in_coalition
|
||||
out: BATTLE_PREPARATION
|
||||
"""
|
||||
button = self.coalition_get_entrance(stage)
|
||||
button = self.coalition_get_entrance(event, stage)
|
||||
fleet_preparation = self.coalition_get_fleet_preparation(event)
|
||||
campaign_timer = Timer(5)
|
||||
fleet_timer = Timer(5)
|
||||
campaign_click = 0
|
||||
@ -154,9 +222,9 @@ class CoalitionUI(Combat):
|
||||
continue
|
||||
|
||||
# Fleet preparation
|
||||
if fleet_timer.reached() and self.appear(FLEET_PREPARATION, offset=(20, 50)):
|
||||
self.handle_fleet_preparation(stage, fleet)
|
||||
self.device.click(FLEET_PREPARATION)
|
||||
if fleet_timer.reached() and self.appear(fleet_preparation, offset=(20, 50)):
|
||||
self.handle_fleet_preparation(event, stage, mode)
|
||||
self.device.click(fleet_preparation)
|
||||
fleet_click += 1
|
||||
fleet_timer.reset()
|
||||
campaign_timer.reset()
|
||||
|
@ -3111,7 +3111,8 @@
|
||||
"Campaign": {
|
||||
"Name": {
|
||||
"type": "input",
|
||||
"value": "12-4"
|
||||
"value": "dynamic",
|
||||
"display": "hide"
|
||||
},
|
||||
"Event": {
|
||||
"type": "state",
|
||||
@ -3165,6 +3166,16 @@
|
||||
}
|
||||
},
|
||||
"Coalition": {
|
||||
"Mode": {
|
||||
"type": "select",
|
||||
"value": "hard",
|
||||
"option": [
|
||||
"easy",
|
||||
"normal",
|
||||
"hard",
|
||||
"ex"
|
||||
]
|
||||
},
|
||||
"Fleet": {
|
||||
"type": "select",
|
||||
"value": "single",
|
||||
@ -6420,6 +6431,16 @@
|
||||
}
|
||||
},
|
||||
"Coalition": {
|
||||
"Mode": {
|
||||
"type": "select",
|
||||
"value": "hard",
|
||||
"option": [
|
||||
"easy",
|
||||
"normal",
|
||||
"hard",
|
||||
"ex"
|
||||
]
|
||||
},
|
||||
"Fleet": {
|
||||
"type": "select",
|
||||
"value": "single",
|
||||
|
@ -305,6 +305,9 @@ RaidDaily:
|
||||
MaritimeEscort:
|
||||
Enable: true
|
||||
Coalition:
|
||||
Mode:
|
||||
value: hard
|
||||
option: [ easy, normal, hard, ex ]
|
||||
Fleet:
|
||||
value: single
|
||||
option: [ single, multi ]
|
||||
|
@ -215,6 +215,7 @@ Coalition:
|
||||
Campaign:
|
||||
Event:
|
||||
type: state
|
||||
Name: dynamic
|
||||
Mode: normal
|
||||
UseClearMode: true
|
||||
UseFleetLock: true
|
||||
|
@ -178,6 +178,7 @@ class GeneratedConfig:
|
||||
MaritimeEscort_Enable = True
|
||||
|
||||
# Group `Coalition`
|
||||
Coalition_Mode = 'hard' # easy, normal, hard, ex
|
||||
Coalition_Fleet = 'single' # single, multi
|
||||
|
||||
# Group `Commission`
|
||||
|
@ -115,7 +115,7 @@
|
||||
"help": ""
|
||||
},
|
||||
"CoalitionSp": {
|
||||
"name": "Frostfall Daily SP",
|
||||
"name": "Little Academy SP",
|
||||
"help": ""
|
||||
},
|
||||
"Commission": {
|
||||
@ -1258,6 +1258,14 @@
|
||||
"name": "Event Settings",
|
||||
"help": "Fleets must be prepared manually in game before running"
|
||||
},
|
||||
"Mode": {
|
||||
"name": "Mode",
|
||||
"help": "SP needs to use event daily SP to run",
|
||||
"easy": "Easy",
|
||||
"normal": "Normal",
|
||||
"hard": "Hard",
|
||||
"ex": "EX"
|
||||
},
|
||||
"Fleet": {
|
||||
"name": "Fleet",
|
||||
"help": "",
|
||||
|
@ -1258,6 +1258,14 @@
|
||||
"name": "Coalition._info.name",
|
||||
"help": "Coalition._info.help"
|
||||
},
|
||||
"Mode": {
|
||||
"name": "Coalition.Mode.name",
|
||||
"help": "Coalition.Mode.help",
|
||||
"easy": "easy",
|
||||
"normal": "normal",
|
||||
"hard": "hard",
|
||||
"ex": "ex"
|
||||
},
|
||||
"Fleet": {
|
||||
"name": "Coalition.Fleet.name",
|
||||
"help": "Coalition.Fleet.help",
|
||||
|
@ -115,7 +115,7 @@
|
||||
"help": ""
|
||||
},
|
||||
"CoalitionSp": {
|
||||
"name": "极地风暴每日SP",
|
||||
"name": "童心学院每日SP",
|
||||
"help": ""
|
||||
},
|
||||
"Commission": {
|
||||
@ -1258,6 +1258,14 @@
|
||||
"name": "活动设置",
|
||||
"help": "出击前必须在游戏内手动配队"
|
||||
},
|
||||
"Mode": {
|
||||
"name": "难度",
|
||||
"help": "SP图需要使用活动每日SP运行",
|
||||
"easy": "简单",
|
||||
"normal": "普通",
|
||||
"hard": "困难",
|
||||
"ex": "EX"
|
||||
},
|
||||
"Fleet": {
|
||||
"name": "出击队伍",
|
||||
"help": "",
|
||||
|
@ -1258,6 +1258,14 @@
|
||||
"name": "活動設定",
|
||||
"help": "出擊前必須在遊戲內手動配隊"
|
||||
},
|
||||
"Mode": {
|
||||
"name": "難度",
|
||||
"help": "SP圖需要使用活動每日SP運行",
|
||||
"easy": "簡單",
|
||||
"normal": "普通",
|
||||
"hard": "困難",
|
||||
"ex": "EX"
|
||||
},
|
||||
"Fleet": {
|
||||
"name": "出擊隊伍",
|
||||
"help": "",
|
||||
|
@ -1,7 +1,6 @@
|
||||
from module.base.button import Button
|
||||
from module.base.decorator import run_once
|
||||
from module.base.timer import Timer
|
||||
from module.coalition.assets import FLEET_PREPARATION as COALITION_FLEET_PREPARATION
|
||||
from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2, GET_SHIP
|
||||
from module.exception import (GameNotRunningError, GamePageUnknownError,
|
||||
RequestHumanTakeover)
|
||||
@ -19,7 +18,7 @@ from module.ocr.ocr import Ocr
|
||||
from module.os_handler.assets import (AUTO_SEARCH_REWARD, EXCHANGE_CHECK, RESET_FLEET_PREPARATION, RESET_TICKET_POPUP)
|
||||
from module.raid.assets import *
|
||||
from module.ui.assets import *
|
||||
from module.ui.page import (Page, page_campaign, page_event, page_main, page_sp, page_main_white)
|
||||
from module.ui.page import (Page, page_campaign, page_event, page_main, page_main_white, page_sp)
|
||||
from module.ui_white.assets import *
|
||||
|
||||
|
||||
@ -495,8 +494,7 @@ class UI(InfoHandler):
|
||||
# Campaign preparation
|
||||
if self.appear(MAP_PREPARATION, offset=(30, 30), interval=3) \
|
||||
or self.appear(FLEET_PREPARATION, offset=(20, 50), interval=3) \
|
||||
or self.appear(RAID_FLEET_PREPARATION, offset=(30, 30), interval=3) \
|
||||
or self.appear(COALITION_FLEET_PREPARATION, offset=(30, 30), interval=3):
|
||||
or self.appear(RAID_FLEET_PREPARATION, offset=(30, 30), interval=3):
|
||||
self.device.click(MAP_PREPARATION_CANCEL)
|
||||
return True
|
||||
if self.appear_then_click(AUTO_SEARCH_MENU_EXIT, offset=(200, 30), interval=3):
|
||||
|