diff --git a/assets/cn/campaign/EVENT_20201126_DETAIL.png b/assets/cn/campaign/EVENT_20201126_DETAIL.png new file mode 100644 index 000000000..e0f1d7c2c Binary files /dev/null and b/assets/cn/campaign/EVENT_20201126_DETAIL.png differ diff --git a/assets/cn/campaign/EVENT_20201126_DETAIL_CHECK.png b/assets/cn/campaign/EVENT_20201126_DETAIL_CHECK.png new file mode 100644 index 000000000..10f9f2916 Binary files /dev/null and b/assets/cn/campaign/EVENT_20201126_DETAIL_CHECK.png differ diff --git a/assets/cn/campaign/EVENT_20201126_DETAIL_WHITE.png b/assets/cn/campaign/EVENT_20201126_DETAIL_WHITE.png new file mode 100644 index 000000000..adbf66b6a Binary files /dev/null and b/assets/cn/campaign/EVENT_20201126_DETAIL_WHITE.png differ diff --git a/assets/cn/campaign/EVENT_20201126_ENTRANCE.png b/assets/cn/campaign/EVENT_20201126_ENTRANCE.png new file mode 100644 index 000000000..7eb3d575d Binary files /dev/null and b/assets/cn/campaign/EVENT_20201126_ENTRANCE.png differ diff --git a/assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png b/assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png deleted file mode 100644 index 4420fac7b..000000000 Binary files a/assets/cn/campaign/EVENT_20201126_ENTRANCE_TEMP.png and /dev/null differ diff --git a/assets/cn/campaign/EVENT_20250424_PT_ICON.png b/assets/cn/campaign/EVENT_20250424_PT_ICON.png new file mode 100644 index 000000000..b3216268a Binary files /dev/null and b/assets/cn/campaign/EVENT_20250424_PT_ICON.png differ diff --git a/assets/cn/campaign/EVENT_20260417_DETAIL.png b/assets/cn/campaign/EVENT_20260417_DETAIL.png new file mode 100644 index 000000000..d357228f5 Binary files /dev/null and b/assets/cn/campaign/EVENT_20260417_DETAIL.png differ diff --git a/assets/cn/campaign/EVENT_20260417_DETAIL_CHECK.png b/assets/cn/campaign/EVENT_20260417_DETAIL_CHECK.png new file mode 100644 index 000000000..ac3e861ef Binary files /dev/null and b/assets/cn/campaign/EVENT_20260417_DETAIL_CHECK.png differ diff --git a/assets/cn/campaign/EVENT_20260417_DETAIL_WHITE.png b/assets/cn/campaign/EVENT_20260417_DETAIL_WHITE.png new file mode 100644 index 000000000..fb7856cb2 Binary files /dev/null and b/assets/cn/campaign/EVENT_20260417_DETAIL_WHITE.png differ diff --git a/assets/cn/campaign/EVENT_20260417_ENTRANCE.png b/assets/cn/campaign/EVENT_20260417_ENTRANCE.png new file mode 100644 index 000000000..ac7ddf357 Binary files /dev/null and b/assets/cn/campaign/EVENT_20260417_ENTRANCE.png differ diff --git a/assets/en/campaign/EVENT_20201126_ENTRANCE_TEMP.png b/assets/en/campaign/EVENT_20201126_ENTRANCE_TEMP.png deleted file mode 100644 index 2bfe678b4..000000000 Binary files a/assets/en/campaign/EVENT_20201126_ENTRANCE_TEMP.png and /dev/null differ diff --git a/assets/jp/campaign/EVENT_20201126_ENTRANCE_TEMP.png b/assets/jp/campaign/EVENT_20201126_ENTRANCE_TEMP.png deleted file mode 100644 index 55497c172..000000000 Binary files a/assets/jp/campaign/EVENT_20201126_ENTRANCE_TEMP.png and /dev/null differ diff --git a/campaign/Readme.md b/campaign/Readme.md index ff86c031b..d439ebb8b 100644 --- a/campaign/Readme.md +++ b/campaign/Readme.md @@ -289,3 +289,5 @@ To add a new event, add a new row in here, and run `python -m module.config.conf | 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 | バケーションレーン(復刻) | - | +| 20260417 | event 20250424 cn | Toward Tulipa’s Seas Rerun | 复刻扬起郁金之旗 | Toward Tulipa’s Seas Rerun | チュリッパの海へ(復刻) | - | +| 20260417 | event 20260417 cn | Vacation Lane – Beachside Brilliance | - | - | - | 假日航線閃耀海濱 | diff --git a/campaign/campaign_main/campaign_14_4.py b/campaign/campaign_main/campaign_14_4.py index 1952906b3..909676df3 100644 --- a/campaign/campaign_main/campaign_14_4.py +++ b/campaign/campaign_main/campaign_14_4.py @@ -107,9 +107,10 @@ class Campaign(CampaignBase): def map_data_init(self, map_): super().map_data_init(map_) - for override_grid in OVERRIDE: - # Set may_enemy, but keep may_ambush - self.map[override_grid.location].may_enemy = override_grid.may_enemy + if not self.map_is_clear_mode: + for override_grid in OVERRIDE: + # Set may_enemy, but keep may_ambush + self.map[override_grid.location].may_enemy = override_grid.may_enemy def battle_0(self): self.pick_up_light_house(A9) diff --git a/campaign/event_20201126_cn/campaign_base.py b/campaign/event_20201126_cn/campaign_base.py index 61f96ca2e..41382e4c2 100644 --- a/campaign/event_20201126_cn/campaign_base.py +++ b/campaign/event_20201126_cn/campaign_base.py @@ -1,9 +1,9 @@ from module.base.button import Button -from module.campaign.assets import EVENT_20201126_ENTRANCE_TEMP, EVENT_20201126_PT_ICON +from module.campaign.assets import EVENT_20201126_PT_ICON, EVENT_20201126_DETAIL, EVENT_20201126_DETAIL_CHECK, EVENT_20201126_DETAIL_WHITE, EVENT_20201126_ENTRANCE 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 +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') @@ -24,11 +24,13 @@ class CampaignBase(CampaignBase_): return True self.ui_ensure(page_campaign_menu) if self.is_event_entrance_available(): - self.ui_ensure(page_main) - self.ui_click(EVENT_20201126_ENTRANCE_TEMP, - check_button=EVENT_20201126_PT_ICON, - appear_button=EVENT_20201126_ENTRANCE_TEMP, - offset=(40, 20)) + self.ui_goto_main() + if self.ui_page_appear(page_main_white): + self.ui_click(EVENT_20201126_DETAIL_WHITE, check_button=EVENT_20201126_DETAIL_CHECK) + else: + self.ui_click(EVENT_20201126_DETAIL, check_button=EVENT_20201126_DETAIL_CHECK) + self.ui_click(EVENT_20201126_ENTRANCE, check_button=EVENT_20201126_PT_ICON, + appear_button=EVENT_20201126_DETAIL_CHECK, offset=(40, 20)) return True diff --git a/campaign/event_20250424_cn/campaign_base.py b/campaign/event_20250424_cn/campaign_base.py index 29a2760cb..c7a4d7a78 100644 --- a/campaign/event_20250424_cn/campaign_base.py +++ b/campaign/event_20250424_cn/campaign_base.py @@ -1,5 +1,7 @@ +from module.campaign.assets import EVENT_20250424_PT_ICON from module.campaign.campaign_base import CampaignBase as CampaignBase_ -from module.ui.page import page_event +from module.logger import logger +from module.ui.page import page_campaign_menu, page_event class CampaignBase(CampaignBase_): @@ -8,3 +10,12 @@ class CampaignBase(CampaignBase_): if self.ui_page_appear(page_event): return False return super().handle_exp_info() + + def ui_goto_event(self): + if self.appear(EVENT_20250424_PT_ICON, offset=(20, 20)) and self.ui_page_appear(page_event): + logger.info('Already at EVENT_20250424') + return True + self.ui_ensure(page_campaign_menu) + if self.is_event_entrance_available(): + self.ui_goto(page_event) + return True diff --git a/campaign/event_20260417_cn/campaign_base.py b/campaign/event_20260417_cn/campaign_base.py index 598566bf9..666a7dcab 100644 --- a/campaign/event_20260417_cn/campaign_base.py +++ b/campaign/event_20260417_cn/campaign_base.py @@ -1,8 +1,8 @@ from module.base.button import Button -from module.campaign.assets import EVENT_20260417_PT_ICON +from module.campaign.assets import EVENT_20260417_PT_ICON, EVENT_20260417_DETAIL, EVENT_20260417_DETAIL_CHECK, EVENT_20260417_DETAIL_WHITE, EVENT_20260417_ENTRANCE from module.campaign.campaign_base import CampaignBase as CampaignBase_ from module.logger import logger -from module.ui.page import page_campaign_menu, page_event +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') @@ -10,12 +10,18 @@ EVENT_ANIMATION = Button(area=(49, 229, 119, 400), color=(118, 215, 240), button 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): + if self.appear(EVENT_20260417_PT_ICON, offset=(40, 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) + self.ui_goto_main() + if self.ui_page_appear(page_main_white): + self.ui_click(EVENT_20260417_DETAIL_WHITE, check_button=EVENT_20260417_DETAIL_CHECK) + else: + self.ui_click(EVENT_20260417_DETAIL, check_button=EVENT_20260417_DETAIL_CHECK) + self.ui_click(EVENT_20260417_ENTRANCE, check_button=EVENT_20260417_PT_ICON, + appear_button=EVENT_20260417_DETAIL_CHECK, offset=(40, 20)) return True @staticmethod diff --git a/deploy/docker/Dockerfile b/deploy/docker/Dockerfile index cc68a0bb6..66d09ad07 100644 --- a/deploy/docker/Dockerfile +++ b/deploy/docker/Dockerfile @@ -1,7 +1,7 @@ # docker build -t hgjazhgj/alas:latest . # docker run -v ${PWD}:/app/AzurLaneAutoScript -p 22267:22267 --name alas -it --rm hgjazhgj/alas -FROM python:3.7-slim +FROM python:3.7-slim-bullseye WORKDIR /app/AzurLaneAutoScript @@ -10,7 +10,12 @@ COPY requirements.txt /tmp/requirements.txt # Initial download of UiAutomator2 is slow outside of China using appetizer mirror, switch to GitHub RUN apt update \ && apt install -y git adb libgomp1 openssh-client \ + && apt install -y build-essential pkg-config \ + && apt install -y libavformat-dev libavcodec-dev libavdevice-dev \ + && apt install -y libavutil-dev libswscale-dev libswresample-dev libavfilter-dev \ && git config --global --add safe.directory '*' \ + && pip install Cython==0.29.37 \ + && pip install av==10.0.0 --no-build-isolation \ && pip install -r /tmp/requirements.txt \ && rm /tmp/requirements.txt \ && rm -r ~/.cache/pip diff --git a/deploy/docker/Dockerfile.cn b/deploy/docker/Dockerfile.cn index 2db750c3a..c7d879d4d 100644 --- a/deploy/docker/Dockerfile.cn +++ b/deploy/docker/Dockerfile.cn @@ -14,16 +14,19 @@ deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib\n\ deb https://mirrors.aliyun.com/debian-security/ bullseye-security main\n\ deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main\n\ deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\n\ -deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\n\ -deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib\n\ -deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" \ +deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" \ > /etc/apt/sources.list \ && apt update \ && apt install -y git adb libgomp1 openssh-client \ + && apt install -y build-essential pkg-config \ + && apt install -y libavformat-dev libavcodec-dev libavdevice-dev \ + && apt install -y libavutil-dev libswscale-dev libswresample-dev libavfilter-dev \ && git config --global --add safe.directory '*' \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' > /etc/timezone \ && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \ + && pip install Cython==0.29.37 \ + && pip install av==10.0.0 --no-build-isolation \ && pip install -r /tmp/requirements.txt \ && rm /tmp/requirements.txt \ && rm -r ~/.cache/pip diff --git a/module/config/argument/args.json b/module/config/argument/args.json index ad7f80ef9..63ad123fa 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -1643,27 +1643,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, @@ -1930,27 +1933,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, @@ -2332,27 +2338,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, @@ -4064,27 +4073,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, @@ -4483,27 +4495,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, @@ -4902,27 +4917,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, @@ -5321,27 +5339,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, @@ -5730,27 +5751,30 @@ "value": "campaign_main", "option": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ], "option_cn": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_en": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_jp": [ + "event_20250424_cn", "event_20201126_cn", "event_20260417_cn" ], "option_tw": [ - "event_20220915_cn" + "event_20260417_cn" ], "option_bold": [ "event_20201126_cn", - "event_20220915_cn", + "event_20250424_cn", "event_20260417_cn" ] }, diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index 55066b755..af6eb61c3 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -760,7 +760,7 @@ "event_20241121_cn": "Dangerous Inventions Incoming", "event_20241219_cn": "Substellar Crepuscule", "event_20250227_cn": "Paradiso of Shackled Light", - "event_20250424_cn": "Toward Tulipa’s Seas", + "event_20250424_cn": "Toward Tulipa’s Seas Rerun", "event_20250520_cn": "A Rose on the High Tower", "event_20250724_cn": "The Alchemist and the Tower of Horizons", "event_20250814_cn": "Secrets of the Abyss", diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index 8bded0e8d..c7b68226d 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -760,7 +760,7 @@ "event_20241121_cn": "危険発明接近中", "event_20241219_cn": "星降る夕影の残光", "event_20250227_cn": "籠檻に囚われし神光", - "event_20250424_cn": "チュリッパの海へ", + "event_20250424_cn": "チュリッパの海へ(復刻)", "event_20250520_cn": "高い塔の薔薇", "event_20250724_cn": "錬金術士と天空邂逅の塔", "event_20250814_cn": "淵層界の秘密", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index a70788868..c48b283dd 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -760,7 +760,7 @@ "event_20241121_cn": "危险发明迫近中", "event_20241219_cn": "星光下的余晖", "event_20250227_cn": "樊笼内的神光", - "event_20250424_cn": "扬起郁金之旗", + "event_20250424_cn": "复刻扬起郁金之旗", "event_20250520_cn": "高塔上的蔷薇", "event_20250724_cn": "优米雅的炼金工房", "event_20250814_cn": "奇渊下的秘密", diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index b6879cfb3..761ad94ee 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -769,7 +769,7 @@ "event_20251218_cn": "響徹於天穹之音", "event_20260226_cn": "春滿客棧Online", "event_20260326_cn": "漫遊者招募計劃", - "event_20260417_cn": "Vacation Lane – Beachside Brilliance", + "event_20260417_cn": "假日航線閃耀海濱", "raid_20200624": "特別演習埃塞克斯級(復刻)", "raid_20210708": "復刻穿越彼方的水線", "raid_20220127": "演習神秘事件調查",