diff --git a/assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png b/assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png new file mode 100644 index 000000000..a040e09df Binary files /dev/null and b/assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png differ diff --git a/assets/cn/campaign/EVENT_20201126_PT_ICON.png b/assets/cn/campaign/EVENT_20201126_PT_ICON.png new file mode 100644 index 000000000..9738e3723 Binary files /dev/null and b/assets/cn/campaign/EVENT_20201126_PT_ICON.png differ diff --git a/assets/cn/campaign/EVENT_20260417_PT_ICON.png b/assets/cn/campaign/EVENT_20260417_PT_ICON.png new file mode 100644 index 000000000..5755ff792 Binary files /dev/null and b/assets/cn/campaign/EVENT_20260417_PT_ICON.png differ diff --git a/campaign/Readme.md b/campaign/Readme.md index 133585698..ff86c031b 100644 --- a/campaign/Readme.md +++ b/campaign/Readme.md @@ -288,3 +288,4 @@ To add a new event, add a new row in here, and run `python -m module.config.conf | 20260402 | event 20260326 cn | The Vagabond’s Recruitment Plan | - | - | - | 漫遊者招募計劃 | | 20260416 | event 20220915 cn | Violet Tempest Blooming Lycoris | - | - | - | 復刻紫絳槿嵐 | | 20260417 | event 20260417 cn | Vacation Lane – Beachside Brilliance | 假日航线闪耀海滨 | Vacation Lane – Beachside Brilliance | バケーションレーン・きらめく砂浜 | - | +| 20260417 | event 20201126 cn | Vacation Lane Rerun | 复刻假日航线 | Vacation Lane Rerun | バケーションレーン(復刻) | - | diff --git a/campaign/event_20201126_cn/campaign_base.py b/campaign/event_20201126_cn/campaign_base.py index 705ee7f5f..4ef11bf88 100644 --- a/campaign/event_20201126_cn/campaign_base.py +++ b/campaign/event_20201126_cn/campaign_base.py @@ -1,7 +1,9 @@ from module.base.button import Button +from module.campaign.assets import EVENT_20201126_ENTRANCE_TEMP, EVENT_20201126_PT_ICON from module.campaign.campaign_base import CampaignBase as CampaignBase_ from module.exception import CampaignNameError from module.logger import logger +from module.ui.page import page_campaign_menu, page_event, page_main_white EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button=(49, 229, 119, 400), name='EVENT_ANIMATION') @@ -16,6 +18,19 @@ class CampaignBase(CampaignBase_): Mode switch is meaningless. """ + def ui_goto_event(self): + if self.appear(EVENT_20201126_PT_ICON, offset=(20, 20)) and self.ui_page_appear(page_event): + logger.info('Already at EVENT_20201126') + return True + self.ui_ensure(page_campaign_menu) + if self.is_event_entrance_available(): + self.ui_ensure(page_main_white) + self.ui_click(EVENT_20201126_ENTRANCE_TEMP, + check_button=EVENT_20201126_PT_ICON, + appear_button=EVENT_20201126_ENTRANCE_TEMP) + return True + + @staticmethod def _campaign_separate_name(name): """ diff --git a/campaign/event_20260417_cn/campaign_base.py b/campaign/event_20260417_cn/campaign_base.py index ab259d729..598566bf9 100644 --- a/campaign/event_20260417_cn/campaign_base.py +++ b/campaign/event_20260417_cn/campaign_base.py @@ -1,12 +1,23 @@ from module.base.button import Button +from module.campaign.assets import EVENT_20260417_PT_ICON from module.campaign.campaign_base import CampaignBase as CampaignBase_ from module.logger import logger +from module.ui.page import page_campaign_menu, page_event EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button=(49, 229, 119, 400), name='EVENT_ANIMATION') class CampaignBase(CampaignBase_): + def ui_goto_event(self): + if self.appear(EVENT_20260417_PT_ICON, offset=(20, 20)) and self.ui_page_appear(page_event): + logger.info('Already at EVENT_20260417') + return True + self.ui_ensure(page_campaign_menu) + if self.is_event_entrance_available(): + self.ui_goto(page_event) + return True + @staticmethod def _campaign_ocr_result_process(result): result = CampaignBase_._campaign_ocr_result_process(result) diff --git a/module/campaign/assets.py b/module/campaign/assets.py index 8eb11c412..ee5c2f516 100644 --- a/module/campaign/assets.py +++ b/module/campaign/assets.py @@ -11,10 +11,13 @@ CHAPTER_20241219_SP = Button(area={'cn': (17, 372, 34, 388), 'en': (17, 372, 34, CHAPTER_NEXT = Button(area={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, color={'cn': (121, 150, 198), 'en': (121, 150, 198), 'jp': (121, 150, 198), 'tw': (121, 150, 198)}, button={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, file={'cn': './assets/cn/campaign/CHAPTER_NEXT.png', 'en': './assets/en/campaign/CHAPTER_NEXT.png', 'jp': './assets/jp/campaign/CHAPTER_NEXT.png', 'tw': './assets/tw/campaign/CHAPTER_NEXT.png'}) CHAPTER_PREV = Button(area={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, color={'cn': (105, 133, 169), 'en': (105, 133, 169), 'jp': (105, 133, 169), 'tw': (105, 133, 169)}, button={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, file={'cn': './assets/cn/campaign/CHAPTER_PREV.png', 'en': './assets/en/campaign/CHAPTER_PREV.png', 'jp': './assets/jp/campaign/CHAPTER_PREV.png', 'tw': './assets/tw/campaign/CHAPTER_PREV.png'}) COMMISSION_NOTICE_AT_CAMPAIGN = Button(area={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, color={'cn': (172, 72, 49), 'en': (172, 72, 49), 'jp': (172, 72, 49), 'tw': (172, 72, 49)}, button={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, file={'cn': './assets/cn/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'en': './assets/en/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'jp': './assets/jp/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'tw': './assets/tw/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png'}) +EVENT_20201126_ENTRANCE_TEMP = Button(area={'cn': (1023, 368, 1100, 407), 'en': (1023, 368, 1100, 407), 'jp': (1023, 368, 1100, 407), 'tw': (1023, 368, 1100, 407)}, color={'cn': (160, 208, 243), 'en': (160, 208, 243), 'jp': (160, 208, 243), 'tw': (160, 208, 243)}, button={'cn': (1023, 368, 1100, 407), 'en': (1023, 368, 1100, 407), 'jp': (1023, 368, 1100, 407), 'tw': (1023, 368, 1100, 407)}, file={'cn': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'en': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'jp': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png', 'tw': './assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png'}) +EVENT_20201126_PT_ICON = Button(area={'cn': (1108, 102, 1133, 127), 'en': (1108, 102, 1133, 127), 'jp': (1108, 102, 1133, 127), 'tw': (1108, 102, 1133, 127)}, color={'cn': (231, 121, 159), 'en': (231, 121, 159), 'jp': (231, 121, 159), 'tw': (231, 121, 159)}, button={'cn': (1108, 102, 1133, 127), 'en': (1108, 102, 1133, 127), 'jp': (1108, 102, 1133, 127), 'tw': (1108, 102, 1133, 127)}, file={'cn': './assets/cn/campaign/EVENT_20201126_PT_ICON.png', 'en': './assets/cn/campaign/EVENT_20201126_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20201126_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20201126_PT_ICON.png'}) EVENT_20221124_ENTRANCE = Button(area={'cn': (1037, 162, 1077, 195), 'en': (1037, 162, 1077, 195), 'jp': (1037, 162, 1077, 195), 'tw': (1037, 162, 1077, 195)}, color={'cn': (207, 168, 148), 'en': (207, 168, 148), 'jp': (207, 168, 148), 'tw': (207, 168, 148)}, button={'cn': (1037, 162, 1077, 195), 'en': (1037, 162, 1077, 195), 'jp': (1037, 162, 1077, 195), 'tw': (1037, 162, 1077, 195)}, file={'cn': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'en': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'jp': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png', 'tw': './assets/cn/campaign/EVENT_20221124_ENTRANCE.png'}) EVENT_20221124_PT_ICON = Button(area={'cn': (1106, 109, 1135, 130), 'en': (1071, 109, 1101, 129), 'jp': (1106, 109, 1135, 130), 'tw': (1106, 109, 1135, 130)}, color={'cn': (151, 116, 139), 'en': (152, 115, 138), 'jp': (151, 116, 139), 'tw': (151, 116, 139)}, button={'cn': (1106, 109, 1135, 130), 'en': (1071, 109, 1101, 129), 'jp': (1106, 109, 1135, 130), 'tw': (1106, 109, 1135, 130)}, file={'cn': './assets/cn/campaign/EVENT_20221124_PT_ICON.png', 'en': './assets/en/campaign/EVENT_20221124_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20221124_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20221124_PT_ICON.png'}) EVENT_20230817_STORY = Button(area={'cn': (610, 320, 670, 380), 'en': (610, 320, 670, 380), 'jp': (610, 320, 670, 380), 'tw': (610, 320, 670, 380)}, color={'cn': (183, 180, 190), 'en': (183, 180, 190), 'jp': (183, 180, 190), 'tw': (183, 180, 190)}, button={'cn': (610, 320, 670, 380), 'en': (610, 320, 670, 380), 'jp': (610, 320, 670, 380), 'tw': (610, 320, 670, 380)}, file={'cn': './assets/cn/campaign/EVENT_20230817_STORY.png', 'en': './assets/en/campaign/EVENT_20230817_STORY.png', 'jp': './assets/jp/campaign/EVENT_20230817_STORY.png', 'tw': './assets/tw/campaign/EVENT_20230817_STORY.png'}) EVENT_20250724_PT_ICON = Button(area={'cn': (1102, 106, 1139, 121), 'en': (1067, 108, 1104, 123), 'jp': (1102, 106, 1139, 121), 'tw': (1102, 106, 1139, 121)}, color={'cn': (95, 103, 93), 'en': (97, 101, 94), 'jp': (95, 103, 93), 'tw': (95, 103, 93)}, button={'cn': (1102, 106, 1139, 121), 'en': (1067, 108, 1104, 123), 'jp': (1102, 106, 1139, 121), 'tw': (1102, 106, 1139, 121)}, file={'cn': './assets/cn/campaign/EVENT_20250724_PT_ICON.png', 'en': './assets/en/campaign/EVENT_20250724_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20250724_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20250724_PT_ICON.png'}) +EVENT_20260417_PT_ICON = Button(area={'cn': (1110, 106, 1133, 130), 'en': (1110, 106, 1133, 130), 'jp': (1110, 106, 1133, 130), 'tw': (1110, 106, 1133, 130)}, color={'cn': (119, 177, 213), 'en': (119, 177, 213), 'jp': (119, 177, 213), 'tw': (119, 177, 213)}, button={'cn': (1110, 106, 1133, 130), 'en': (1110, 106, 1133, 130), 'jp': (1110, 106, 1133, 130), 'tw': (1110, 106, 1133, 130)}, file={'cn': './assets/cn/campaign/EVENT_20260417_PT_ICON.png', 'en': './assets/cn/campaign/EVENT_20260417_PT_ICON.png', 'jp': './assets/cn/campaign/EVENT_20260417_PT_ICON.png', 'tw': './assets/cn/campaign/EVENT_20260417_PT_ICON.png'}) OCR_COIN = Button(area={'cn': (815, 23, 922, 51), 'en': (815, 23, 922, 51), 'jp': (815, 23, 922, 51), 'tw': (815, 23, 922, 51)}, color={'cn': (61, 61, 73), 'en': (61, 61, 73), 'jp': (61, 61, 73), 'tw': (61, 61, 73)}, button={'cn': (815, 23, 922, 51), 'en': (815, 23, 922, 51), 'jp': (815, 23, 922, 51), 'tw': (815, 23, 922, 51)}, file={'cn': './assets/cn/campaign/OCR_COIN.png', 'en': './assets/en/campaign/OCR_COIN.png', 'jp': './assets/jp/campaign/OCR_COIN.png', 'tw': './assets/tw/campaign/OCR_COIN.png'}) OCR_EVENT_PT = Button(area={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, color={'cn': (121, 110, 59), 'en': (88, 78, 51), 'jp': (121, 110, 59), 'tw': (121, 110, 59)}, button={'cn': (1196, 109, 1280, 131), 'en': (1190, 109, 1280, 129), 'jp': (1196, 109, 1280, 131), 'tw': (1196, 109, 1280, 131)}, file={'cn': './assets/cn/campaign/OCR_EVENT_PT.png', 'en': './assets/en/campaign/OCR_EVENT_PT.png', 'jp': './assets/jp/campaign/OCR_EVENT_PT.png', 'tw': './assets/tw/campaign/OCR_EVENT_PT.png'}) OCR_OIL = Button(area={'cn': (614, 23, 714, 51), 'en': (614, 23, 714, 51), 'jp': (614, 23, 714, 51), 'tw': (614, 23, 714, 51)}, color={'cn': (64, 65, 79), 'en': (64, 65, 79), 'jp': (64, 65, 79), 'tw': (64, 65, 79)}, button={'cn': (614, 23, 714, 51), 'en': (614, 23, 714, 51), 'jp': (614, 23, 714, 51), 'tw': (614, 23, 714, 51)}, file={'cn': './assets/cn/campaign/OCR_OIL.png', 'en': './assets/en/campaign/OCR_OIL.png', 'jp': './assets/jp/campaign/OCR_OIL.png', 'tw': './assets/tw/campaign/OCR_OIL.png'}) diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 2dcca6afb..ad7f80ef9 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -1642,22 +1642,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] @@ -1924,22 +1929,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] @@ -2321,22 +2331,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] @@ -4048,22 +4063,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] @@ -4462,22 +4482,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] @@ -4876,22 +4901,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] @@ -5290,22 +5320,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] @@ -5694,22 +5729,27 @@ "type": "select", "value": "campaign_main", "option": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ], "option_cn": [ + "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ "event_20220915_cn" ], "option_bold": [ + "event_20201126_cn", "event_20220915_cn", "event_20260417_cn" ] diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index 93c58789c..55066b755 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -706,7 +706,7 @@ "event_20201002_en": "Counterattack Within the Fjord", "event_20201012_cn": "Sundered Blue Rerun", "event_20201029_cn": "Universe in Unison", - "event_20201126_cn": "Vacation Lane", + "event_20201126_cn": "Vacation Lane Rerun", "event_20201229_cn": "Inverted Orthant Rerun", "event_20210121_cn": "Empyreal Tragicomedy Rerun", "event_20210225_cn": "Khorovod of Dawns Rime Rerun", diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index acf88f7af..8bded0e8d 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -706,7 +706,7 @@ "event_20201002_en": "Counterattack Within the Fjord", "event_20201012_cn": "奔る彩帆の青(復刻)", "event_20201029_cn": "激唱のユニバース", - "event_20201126_cn": "バケーションレーン", + "event_20201126_cn": "バケーションレーン(復刻)", "event_20201229_cn": "虚畳なりし限象(復刻)", "event_20210121_cn": "悲歎せし焔海の詩(復刻)", "event_20210225_cn": "暁射す氷華の嵐(復刻)", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index a38fe95d5..a70788868 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -706,7 +706,7 @@ "event_20201002_en": "Counterattack Within the Fjord", "event_20201012_cn": "复刻划破海空之翼", "event_20201029_cn": "激唱的UNIVERSE", - "event_20201126_cn": "假日航线", + "event_20201126_cn": "复刻假日航线", "event_20201229_cn": "复刻负象限作战", "event_20210121_cn": "复刻神圣的悲喜剧", "event_20210225_cn": "复刻破晓冰华",