diff --git a/assets/cn/coalition/DAL_AREA1.png b/assets/cn/coalition/DAL_AREA1.png new file mode 100644 index 000000000..fe4128263 Binary files /dev/null and b/assets/cn/coalition/DAL_AREA1.png differ diff --git a/assets/cn/coalition/DAL_AREA2.png b/assets/cn/coalition/DAL_AREA2.png new file mode 100644 index 000000000..a1cbc3c0e Binary files /dev/null and b/assets/cn/coalition/DAL_AREA2.png differ diff --git a/assets/cn/coalition/DAL_AREA3.png b/assets/cn/coalition/DAL_AREA3.png new file mode 100644 index 000000000..8dd32dc6f Binary files /dev/null and b/assets/cn/coalition/DAL_AREA3.png differ diff --git a/assets/cn/coalition/DAL_AREA4.png b/assets/cn/coalition/DAL_AREA4.png new file mode 100644 index 000000000..bf9f7d000 Binary files /dev/null and b/assets/cn/coalition/DAL_AREA4.png differ diff --git a/assets/cn/coalition/DAL_AREA5.png b/assets/cn/coalition/DAL_AREA5.png new file mode 100644 index 000000000..43d929cba Binary files /dev/null and b/assets/cn/coalition/DAL_AREA5.png differ diff --git a/assets/cn/coalition/DAL_AREA6.png b/assets/cn/coalition/DAL_AREA6.png new file mode 100644 index 000000000..84b18da72 Binary files /dev/null and b/assets/cn/coalition/DAL_AREA6.png differ diff --git a/assets/cn/coalition/DAL_DIFFICULTY_EXIT.png b/assets/cn/coalition/DAL_DIFFICULTY_EXIT.png new file mode 100644 index 000000000..afd6aee08 Binary files /dev/null and b/assets/cn/coalition/DAL_DIFFICULTY_EXIT.png differ diff --git a/assets/cn/coalition/DAL_FLEET_PREPARATION.png b/assets/cn/coalition/DAL_FLEET_PREPARATION.png new file mode 100644 index 000000000..40ff8512e Binary files /dev/null and b/assets/cn/coalition/DAL_FLEET_PREPARATION.png differ diff --git a/assets/cn/coalition/DAL_HARD.png b/assets/cn/coalition/DAL_HARD.png new file mode 100644 index 000000000..2458a11db Binary files /dev/null and b/assets/cn/coalition/DAL_HARD.png differ diff --git a/assets/cn/coalition/DAL_NORMAL.png b/assets/cn/coalition/DAL_NORMAL.png new file mode 100644 index 000000000..05da5ef19 Binary files /dev/null and b/assets/cn/coalition/DAL_NORMAL.png differ diff --git a/assets/cn/coalition/DAL_PT_OCR.png b/assets/cn/coalition/DAL_PT_OCR.png new file mode 100644 index 000000000..733cc1564 Binary files /dev/null and b/assets/cn/coalition/DAL_PT_OCR.png differ diff --git a/assets/cn/coalition/DAL_SWITCH_MULTI.png b/assets/cn/coalition/DAL_SWITCH_MULTI.png new file mode 100644 index 000000000..a9cd328d9 Binary files /dev/null and b/assets/cn/coalition/DAL_SWITCH_MULTI.png differ diff --git a/assets/cn/coalition/DAL_SWITCH_SINGLE.png b/assets/cn/coalition/DAL_SWITCH_SINGLE.png new file mode 100644 index 000000000..9621d109c Binary files /dev/null and b/assets/cn/coalition/DAL_SWITCH_SINGLE.png differ diff --git a/assets/jp/coalition/DAL_AREA1.png b/assets/jp/coalition/DAL_AREA1.png new file mode 100644 index 000000000..fe4128263 Binary files /dev/null and b/assets/jp/coalition/DAL_AREA1.png differ diff --git a/assets/jp/coalition/DAL_AREA2.png b/assets/jp/coalition/DAL_AREA2.png new file mode 100644 index 000000000..a1cbc3c0e Binary files /dev/null and b/assets/jp/coalition/DAL_AREA2.png differ diff --git a/assets/jp/coalition/DAL_AREA3.png b/assets/jp/coalition/DAL_AREA3.png new file mode 100644 index 000000000..8dd32dc6f Binary files /dev/null and b/assets/jp/coalition/DAL_AREA3.png differ diff --git a/assets/jp/coalition/DAL_AREA4.png b/assets/jp/coalition/DAL_AREA4.png new file mode 100644 index 000000000..bf9f7d000 Binary files /dev/null and b/assets/jp/coalition/DAL_AREA4.png differ diff --git a/assets/jp/coalition/DAL_AREA5.png b/assets/jp/coalition/DAL_AREA5.png new file mode 100644 index 000000000..43d929cba Binary files /dev/null and b/assets/jp/coalition/DAL_AREA5.png differ diff --git a/assets/jp/coalition/DAL_AREA6.png b/assets/jp/coalition/DAL_AREA6.png new file mode 100644 index 000000000..84b18da72 Binary files /dev/null and b/assets/jp/coalition/DAL_AREA6.png differ diff --git a/assets/jp/coalition/DAL_DIFFICULTY_EXIT.png b/assets/jp/coalition/DAL_DIFFICULTY_EXIT.png new file mode 100644 index 000000000..afd6aee08 Binary files /dev/null and b/assets/jp/coalition/DAL_DIFFICULTY_EXIT.png differ diff --git a/assets/jp/coalition/DAL_FLEET_PREPARATION.png b/assets/jp/coalition/DAL_FLEET_PREPARATION.png new file mode 100644 index 000000000..b4deb8f19 Binary files /dev/null and b/assets/jp/coalition/DAL_FLEET_PREPARATION.png differ diff --git a/assets/jp/coalition/DAL_HARD.png b/assets/jp/coalition/DAL_HARD.png new file mode 100644 index 000000000..2458a11db Binary files /dev/null and b/assets/jp/coalition/DAL_HARD.png differ diff --git a/assets/jp/coalition/DAL_NORMAL.png b/assets/jp/coalition/DAL_NORMAL.png new file mode 100644 index 000000000..05da5ef19 Binary files /dev/null and b/assets/jp/coalition/DAL_NORMAL.png differ diff --git a/assets/jp/coalition/DAL_PT_OCR.png b/assets/jp/coalition/DAL_PT_OCR.png new file mode 100644 index 000000000..733cc1564 Binary files /dev/null and b/assets/jp/coalition/DAL_PT_OCR.png differ diff --git a/assets/jp/coalition/DAL_SWITCH_MULTI.png b/assets/jp/coalition/DAL_SWITCH_MULTI.png new file mode 100644 index 000000000..b1876c021 Binary files /dev/null and b/assets/jp/coalition/DAL_SWITCH_MULTI.png differ diff --git a/assets/jp/coalition/DAL_SWITCH_SINGLE.png b/assets/jp/coalition/DAL_SWITCH_SINGLE.png new file mode 100644 index 000000000..6bf3f2651 Binary files /dev/null and b/assets/jp/coalition/DAL_SWITCH_SINGLE.png differ diff --git a/assets/shop/cost/GuildCoins_5.png b/assets/shop/cost/GuildCoins_5.png new file mode 100644 index 000000000..cf7fddadc Binary files /dev/null and b/assets/shop/cost/GuildCoins_5.png differ diff --git a/assets/shop/guild/BookT3_4.png b/assets/shop/guild/BookT3_4.png index 3e55c6590..484a2a3a8 100644 Binary files a/assets/shop/guild/BookT3_4.png and b/assets/shop/guild/BookT3_4.png differ diff --git a/assets/shop/guild/CatT1_3.png b/assets/shop/guild/CatT1_3.png new file mode 100644 index 000000000..55b3cb4bf Binary files /dev/null and b/assets/shop/guild/CatT1_3.png differ diff --git a/assets/shop/guild/PlateT3_3.png b/assets/shop/guild/PlateT3_3.png new file mode 100644 index 000000000..385b79431 Binary files /dev/null and b/assets/shop/guild/PlateT3_3.png differ diff --git a/assets/shop/guild/RetrofitT3_3.png b/assets/shop/guild/RetrofitT3_3.png new file mode 100644 index 000000000..833f98a40 Binary files /dev/null and b/assets/shop/guild/RetrofitT3_3.png differ diff --git a/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png b/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png index 9ca0a26f8..896b92a54 100644 Binary files a/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png and b/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png differ diff --git a/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png b/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png index 3257d80b8..5a786f44b 100644 Binary files a/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png and b/assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png differ diff --git a/assets/tw/ui/PRIVATE_QUARTERS_CHECK.png b/assets/tw/ui/PRIVATE_QUARTERS_CHECK.png index 83c572bf7..350bbb409 100644 Binary files a/assets/tw/ui/PRIVATE_QUARTERS_CHECK.png and b/assets/tw/ui/PRIVATE_QUARTERS_CHECK.png differ diff --git a/campaign/Readme.md b/campaign/Readme.md index c35252bf2..028731679 100644 --- a/campaign/Readme.md +++ b/campaign/Readme.md @@ -190,7 +190,7 @@ To add a new event, add a new row in here, and run `python -m module.config.conf | 20221222 | event 20221222 cn | Parallel Superimposition | - | - | - | 定向折疊 | | 20231221 | event 20231221 cn | Light-Chasing Sea of Stars | 星海逐光 | Light-Chasing Sea of Stars | 光追う星の海 | - | | 20240104 | event 20210225 cn | Khorovod of Dawn's Rime | - | - | - | 復刻破曉冰華 | -| 20240111 | event 20211229 cn | Tower of Transcendence Rerun | 复刻逆转彩虹之塔 | Tower of Transcendence Rerun | 遡望せし虹彩の塔(復刻) | - | +| 20240111 | event 20211229 cn | Tower of Transcendence | 复刻逆转彩虹之塔 | Tower of Transcendence Rerun | 遡望せし虹彩の塔(復刻) | - | | 20240111 | event 20230803 cn | Anthem of Remembrance | - | - | - | 奏響鳶尾之歌 | | 20240125 | event 20210527 cn | Mirror Involution Rerun | - | - | - | 復刻鏡位螺旋 | | 20240130 | raid 20240130 | Spring Festive Fiasco | 寰昌宇定家事忙 | Spring Festive Fiasco | 新春宴会狂騒曲 | - | @@ -202,18 +202,18 @@ To add a new event, add a new row in here, and run `python -m module.config.conf | 20240321 | raid 20230629 | Reflections of the Oasis | - | - | - | 綠洲往事 | | 20240328 | raid 20240328 | From Zero to Hero | 从零开始的魔王讨伐之旅 | From Zero to Hero | ゼロから頑張る魔王討伐 | - | | 20240403 | event 20211111 cn | The Flame-Touched Dagger | - | - | - | 復刻杰諾瓦的焰火 | -| 20240411 | event 20220224 cn | Abyssal Refrain Rerun | 复刻深度回音 | Abyssal Refrain Rerun | 鳴動せし星霜の淵(復刻) | - | +| 20240411 | event 20220224 cn | Abyssal Refrain | 复刻深度回音 | Abyssal Refrain Rerun | 鳴動せし星霜の淵(復刻) | - | | 20240425 | event 20230817 cn | The Fool's Scales | - | - | - | 愚者的天平 | | 20240425 | event 20240425 cn | Heart-Linking Harmony | 共鸣的PASSION | Heart-Linking Harmony | 共鳴のパッション | - | | 20240509 | event 20210916 cn | Upon the Shimmering Blue | - | - | - | 復刻碧海光粼 | | 20240521 | event 20240521 cn | Light of the Martyrium | 绽放于辉光之城 | Light of the Martyrium | 赫輝のマルティリウム | - | | 20240523 | event 20230525 cn | Confluence of Nothingness | - | - | - | 空相交會點 | | 20240613 | event 20201012 cn | Sundered Blue | - | - | - | 復刻劃破海空之翼 | -| 20240620 | event 20220428 cn | Rondo at Rainbow's End Rerun | 复刻虹彩的终幕曲 | Rondo at Rainbow's End Rerun | 吟ずる瑠璃の楽章(復刻) | - | +| 20240620 | event 20220428 cn | Rondo at Rainbow's End | 复刻虹彩的终幕曲 | Rondo at Rainbow's End Rerun | 吟ずる瑠璃の楽章(復刻) | - | | 20240627 | event 20231026 cn | Tempesta and the Fountain of Youth | - | - | - | 飓風與青春之泉 | | 20240627 | coalition 20240627 | Welcome to Little Academy | 欢迎来到童心学院 | Welcome to Little Academy | リトル学園へようこそ | - | -| 20240711 | event 20211229 cn | Tower of Transcendence Rerun | - | - | - | 復刻逆轉彩虹之塔 | -| 20240718 | event 20220526 cn | Pledge of the Radiant Court Rerun | 复刻泠誓光庭 | Pledge of the Radiant Court Rerun | 復刻诚閃の剣 搖光の城 | - | +| 20240711 | event 20211229 cn | Tower of Transcendence | - | - | - | 復刻逆轉彩虹之塔 | +| 20240718 | event 20220526 cn | Pledge of the Radiant Court | 复刻泠誓光庭 | Pledge of the Radiant Court Rerun | 復刻诚閃の剣 搖光の城 | - | | 20240725 | event 20240725 cn | Interlude of Illusions | 幻梦间奏曲 | Interlude of Illusions | 夢幻の間奏曲 | - | | 20240725 | raid 20240328 | From Zero to Hero | - | - | - | 從零開始的魔王討伐之旅 | | 20240815 | event 20240815 cn | Windborne Steel Wings | 铁翼擎风 | Windborne Steel Wings | 錬翼空翔 | - | @@ -222,21 +222,21 @@ To add a new event, add a new row in here, and run `python -m module.config.conf | 20240829 | event 20220324 cn | Virtual Tower | - | - | - | 復刻虛像構築之塔 | | 20240912 | event 20240912 cn | Ode of Everblooming Crimson | 唤醒苍红之炎 | Ode of Everblooming Crimson | 絳染む丹華の詠歌 | - | | 20240919 | event 20230914 cn | Effulgence Before Eclipse | - | - | - | 須臾望月抄 | -| 20241017 | event 20220728 cn | Aquilifer's Ballade Rerun | 复刻雄鹰的叙事歌 | Aquilifer's Ballade Rerun | 鋼鷲の冒険譚(復刻) | - | +| 20241017 | event 20220728 cn | Aquilifer's Ballade | 复刻雄鹰的叙事歌 | Aquilifer's Ballade Rerun | 鋼鷲の冒険譚(復刻) | - | | 20241017 | coalition 20240627 | Welcome to Little Academy | - | - | - | 歡迎來到童心學院 | | 20241024 | event 20241024 cn | Tempesta and the Sleeping Sea | 飓风与沉眠之海 | Tempesta and the Sleeping Sea | テンペスタと眠りし海 | - | | 20241031 | event 20240829 cn | Whence Flowers Bear No Fruit | - | - | - | 埋葬於彼岸之花 | -| 20241114 | event 20220915 cn | Violet Tempest Blooming Lycoris Rerun | 复刻紫绛槿岚 | Violet Tempest Blooming Lycoris Rerun | 赫の涙月 菫の暁風(復刻) | - | +| 20241114 | event 20220915 cn | Violet Tempest Blooming Lycoris | 复刻紫绛槿岚 | Violet Tempest Blooming Lycoris Rerun | 赫の涙月 菫の暁風(復刻) | - | | 20241114 | event 20240229 cn | Snowrealm Peregrination | - | - | - | 雪境迷蹤 | | 20241121 | event 20241121 cn | Dangerous Inventions Incoming | 危险发明迫近中 | Dangerous Inventions Incoming | 危険発明接近中 | - | | 20241128 | event 20241121 cn | Dangerous Inventions | - | - | - | 危險發明逼近中 | | 20241219 | event 20241219 cn | Substellar Crepuscule | 星光下的余晖 | Substellar Crepuscule | 星降る夕影の残光 | - | | 20241219 | event 20231221 cn | Light-Chasing Sea of Stars | - | - | - | 星海逐光 | | 20250102 | raid 20240130 | Spring Festive Fiasco | - | - | - | 寰昌宇定家事忙 | -| 20250109 | event 20221222 cn | Parallel Superimposition Rerun | 复刻定向折叠 | Parallel Superimposition Rerun | 積重なる事象の幻界(復刻) | - | +| 20250109 | event 20221222 cn | Parallel Superimposition | 复刻定向折叠 | Parallel Superimposition Rerun | 積重なる事象の幻界(復刻) | - | | 20250116 | raid 20250116 | Spring Fashion Festa | 华裳巧展喜事长 | Spring Fashion Festa | 新春華裳協奏曲 | - | | 20250123 | raid 20250116 | Spring Fashion Festa | - | - | - | 華裳巧展喜事長 | -| 20250206 | event 20220818 cn | Operation Convergence Rerun | 复刻远汇点作战 | Operation Convergence Return | 結像点作戦(復刻) | - | +| 20250206 | event 20220818 cn | Operation Convergence | 复刻远汇点作战 | Operation Convergence Return | 結像点作戦(復刻) | - | | 20250213 | event 20240815 cn | Windborne Steel Wings | - | - | - | 鐵翼擎風 | | 20250227 | event 20250227 cn | Paradiso of Shackled Light | 樊笼内的神光 | Paradiso of Shackled Light | 籠檻に囚われし神光 | - | | 20250227 | event 20240725 cn | Interlude of Illusions | - | - | - | 幻夢間奏曲 | @@ -267,3 +267,5 @@ To add a new event, add a new row in here, and run `python -m module.config.conf | 20251106 | event 20230803 cn | Anthem of Remembrance | 复刻奏响鸢尾之歌 | Anthem of Remembrance Rerun | 燃ゆる聖都の回想曲(復刻) | - | | 20251106 | event 20250227 cn | Paradiso of Shackled Light | - | - | - | 樊籠內的神光 | | 20251113 | event 20230914 cn | Effulgence Before Eclipse | 复刻须臾望月抄 | Effulgence Before Eclipse Rerun | 須臾望月抄(復刻) | - | +| 20251121 | event 20220428 cn | Rondo at Rainbow's End | - | - | - | 復刻虹彩的終幕曲 | +| 20251120 | coalition 20251120 | DATE A LANE | DATE A LANE | DATE A LANE | DATE A LANE | - | diff --git a/campaign/event_20220428_cn/a1.py b/campaign/event_20220428_cn/a1.py index 9adef92ab..da608828b 100644 --- a/campaign/event_20220428_cn/a1.py +++ b/campaign/event_20220428_cn/a1.py @@ -11,10 +11,10 @@ MAP.map_data = """ -- ++ ++ ++ -- MB MB MB ME -- -- MS -- Me -- ++ -- ME ++ -- __ -- ME ++ - -- -- -- -- ME ME -- -- + -- -- -- Me ME ME -- -- ++ SP -- ME -- ++ -- -- ++ SP -- -- Me -- MS ME - ++ ++ -- -- ME -- Me -- + ++ ++ Me -- ME -- Me -- """ MAP.weight_data = """ 50 50 50 50 50 50 50 50 diff --git a/campaign/event_20220428_cn/b1.py b/campaign/event_20220428_cn/b1.py index 5219b6b19..4322b2af1 100644 --- a/campaign/event_20220428_cn/b1.py +++ b/campaign/event_20220428_cn/b1.py @@ -13,8 +13,8 @@ MAP.map_data = """ -- -- -- -- MS -- MS ++ -- -- Me -- -- -- -- ME ME __ -- Me -- ++ -- -- - Me MS ME -- MS -- -- ME - ++ ++ -- -- ++ ME -- -- + Me MS ME -- MS -- Me ME + ++ ++ -- Me ++ ME -- -- ++ ++ ME -- ME -- SP SP """ MAP.map_data_loop = """ diff --git a/campaign/event_20220428_cn/c1.py b/campaign/event_20220428_cn/c1.py index 9389652b0..f9839699f 100644 --- a/campaign/event_20220428_cn/c1.py +++ b/campaign/event_20220428_cn/c1.py @@ -11,10 +11,10 @@ MAP.map_data = """ -- ++ ++ ++ -- MB MB MB ME -- -- MS -- Me -- ++ -- ME ++ -- __ -- ME ++ - -- -- -- -- ME ME -- -- + -- -- -- Me ME ME -- -- ++ SP -- ME -- ++ -- -- ++ SP -- -- Me -- MS ME - ++ ++ -- -- ME -- Me -- + ++ ++ Me -- ME -- Me -- """ MAP.weight_data = """ 50 50 50 50 50 50 50 50 diff --git a/campaign/event_20220428_cn/d1.py b/campaign/event_20220428_cn/d1.py index b038eeccd..43158f810 100644 --- a/campaign/event_20220428_cn/d1.py +++ b/campaign/event_20220428_cn/d1.py @@ -13,8 +13,8 @@ MAP.map_data = """ -- -- -- -- MS -- MS ++ -- -- Me -- -- -- -- ME ME __ -- Me -- ++ -- -- - Me MS ME -- MS -- -- ME - ++ ++ -- -- ++ ME -- -- + Me MS ME -- MS -- Me ME + ++ ++ -- Me ++ ME -- -- ++ ++ ME -- ME -- SP SP """ MAP.map_data_loop = """ diff --git a/campaign/event_20230914_cn/a1.py b/campaign/event_20230914_cn/a1.py index 447dcae3a..33d57db2c 100644 --- a/campaign/event_20230914_cn/a1.py +++ b/campaign/event_20230914_cn/a1.py @@ -1,4 +1,4 @@ -from module.campaign.campaign_base import CampaignBase +from .campaign_base import CampaignBase from module.map.map_base import CampaignMap from module.map.map_grids import SelectedGrids, RoadGrids from module.logger import logger diff --git a/campaign/event_20230914_cn/a2.py b/campaign/event_20230914_cn/a2.py index e857bc467..a9e34e506 100644 --- a/campaign/event_20230914_cn/a2.py +++ b/campaign/event_20230914_cn/a2.py @@ -1,4 +1,4 @@ -from module.campaign.campaign_base import CampaignBase +from .campaign_base import CampaignBase from module.map.map_base import CampaignMap from module.map.map_grids import SelectedGrids, RoadGrids from module.logger import logger diff --git a/campaign/event_20230914_cn/a3.py b/campaign/event_20230914_cn/a3.py index edd733576..1ce732539 100644 --- a/campaign/event_20230914_cn/a3.py +++ b/campaign/event_20230914_cn/a3.py @@ -1,4 +1,4 @@ -from module.campaign.campaign_base import CampaignBase +from .campaign_base import CampaignBase from module.map.map_base import CampaignMap from module.map.map_grids import SelectedGrids, RoadGrids from module.logger import logger diff --git a/campaign/event_20230914_cn/campaign_base.py b/campaign/event_20230914_cn/campaign_base.py new file mode 100644 index 000000000..e1522a3f5 --- /dev/null +++ b/campaign/event_20230914_cn/campaign_base.py @@ -0,0 +1,11 @@ +from module.ui.page import page_event +from module.campaign.campaign_base import CampaignBase as CampaignBase_ + + +class CampaignBase(CampaignBase_): + + def handle_exp_info(self): + # Random background hits EXP_INFO_B + if self.ui_page_appear(page_event): + return False + return super().handle_exp_info() diff --git a/campaign/war_archives_20220428_cn/a1.py b/campaign/war_archives_20220428_cn/a1.py index 9adef92ab..da608828b 100644 --- a/campaign/war_archives_20220428_cn/a1.py +++ b/campaign/war_archives_20220428_cn/a1.py @@ -11,10 +11,10 @@ MAP.map_data = """ -- ++ ++ ++ -- MB MB MB ME -- -- MS -- Me -- ++ -- ME ++ -- __ -- ME ++ - -- -- -- -- ME ME -- -- + -- -- -- Me ME ME -- -- ++ SP -- ME -- ++ -- -- ++ SP -- -- Me -- MS ME - ++ ++ -- -- ME -- Me -- + ++ ++ Me -- ME -- Me -- """ MAP.weight_data = """ 50 50 50 50 50 50 50 50 diff --git a/campaign/war_archives_20220428_cn/b1.py b/campaign/war_archives_20220428_cn/b1.py index fb00241ae..cf99694f1 100644 --- a/campaign/war_archives_20220428_cn/b1.py +++ b/campaign/war_archives_20220428_cn/b1.py @@ -13,8 +13,8 @@ MAP.map_data = """ -- -- -- -- MS -- MS ++ -- -- Me -- -- -- -- ME ME __ -- Me -- ++ -- -- - Me MS ME -- MS -- -- ME - ++ ++ -- -- ++ ME -- -- + Me MS ME -- MS -- Me ME + ++ ++ -- Me ++ ME -- -- ++ ++ ME -- ME -- SP SP """ MAP.map_data_loop = """ diff --git a/campaign/war_archives_20220428_cn/c1.py b/campaign/war_archives_20220428_cn/c1.py index 4d464dadc..1a2563beb 100644 --- a/campaign/war_archives_20220428_cn/c1.py +++ b/campaign/war_archives_20220428_cn/c1.py @@ -11,10 +11,10 @@ MAP.map_data = """ -- ++ ++ ++ -- MB MB MB ME -- -- MS -- Me -- ++ -- ME ++ -- __ -- ME ++ - -- -- -- -- ME ME -- -- + -- -- -- Me ME ME -- -- ++ SP -- ME -- ++ -- -- ++ SP -- -- Me -- MS ME - ++ ++ -- -- ME -- Me -- + ++ ++ Me -- ME -- Me -- """ MAP.weight_data = """ 50 50 50 50 50 50 50 50 diff --git a/campaign/war_archives_20220428_cn/d1.py b/campaign/war_archives_20220428_cn/d1.py index 6f0b11ae8..09ec0a7dd 100644 --- a/campaign/war_archives_20220428_cn/d1.py +++ b/campaign/war_archives_20220428_cn/d1.py @@ -13,8 +13,8 @@ MAP.map_data = """ -- -- -- -- MS -- MS ++ -- -- Me -- -- -- -- ME ME __ -- Me -- ++ -- -- - Me MS ME -- MS -- -- ME - ++ ++ -- -- ++ ME -- -- + Me MS ME -- MS -- Me ME + ++ ++ -- Me ++ ME -- -- ++ ++ ME -- ME -- SP SP """ MAP.map_data_loop = """ diff --git a/config/template.json b/config/template.json index 3008b3939..f7ada6909 100644 --- a/config/template.json +++ b/config/template.json @@ -789,6 +789,54 @@ "Storage": {} } }, + "Coalition": { + "Scheduler": { + "Enable": false, + "NextRun": "2020-01-01 00:00:00", + "Command": "Coalition", + "SuccessInterval": 30, + "FailureInterval": 30, + "ServerUpdate": "00:00" + }, + "Campaign": { + "Name": "dynamic", + "Event": "campaign_main", + "Mode": "normal", + "UseClearMode": true, + "UseFleetLock": true, + "UseAutoSearch": false, + "Use2xBook": false, + "AmbushEvade": true + }, + "Coalition": { + "Mode": "area1-normal", + "Fleet": "single" + }, + "StopCondition": { + "OilLimit": 1000, + "RunCount": 0, + "MapAchievement": "non_stop", + "StageIncrease": false, + "GetNewShip": false, + "ReachLevel": 0 + }, + "Emotion": { + "Mode": "calculate", + "Fleet1Value": 119, + "Fleet1Record": "2020-01-01 00:00:00", + "Fleet1Control": "prevent_yellow_face", + "Fleet1Recover": "not_in_dormitory", + "Fleet1Oath": false, + "Fleet2Value": 119, + "Fleet2Record": "2020-01-01 00:00:00", + "Fleet2Control": "prevent_yellow_face", + "Fleet2Recover": "not_in_dormitory", + "Fleet2Oath": false + }, + "Storage": { + "Storage": {} + } + }, "Event": { "Scheduler": { "Enable": false, @@ -1318,54 +1366,6 @@ "Storage": {} } }, - "Coalition": { - "Scheduler": { - "Enable": false, - "NextRun": "2020-01-01 00:00:00", - "Command": "Coalition", - "SuccessInterval": 30, - "FailureInterval": 30, - "ServerUpdate": "00:00" - }, - "Campaign": { - "Name": "dynamic", - "Event": "campaign_main", - "Mode": "normal", - "UseClearMode": true, - "UseFleetLock": true, - "UseAutoSearch": false, - "Use2xBook": false, - "AmbushEvade": true - }, - "Coalition": { - "Mode": "hard", - "Fleet": "single" - }, - "StopCondition": { - "OilLimit": 1000, - "RunCount": 0, - "MapAchievement": "non_stop", - "StageIncrease": false, - "GetNewShip": false, - "ReachLevel": 0 - }, - "Emotion": { - "Mode": "calculate", - "Fleet1Value": 119, - "Fleet1Record": "2020-01-01 00:00:00", - "Fleet1Control": "prevent_yellow_face", - "Fleet1Recover": "not_in_dormitory", - "Fleet1Oath": false, - "Fleet2Value": 119, - "Fleet2Record": "2020-01-01 00:00:00", - "Fleet2Control": "prevent_yellow_face", - "Fleet2Recover": "not_in_dormitory", - "Fleet2Oath": false - }, - "Storage": { - "Storage": {} - } - }, "MaritimeEscort": { "Scheduler": { "Enable": false, @@ -1928,7 +1928,7 @@ "AmbushEvade": true }, "Coalition": { - "Mode": "sp", + "Mode": "area1-normal", "Fleet": "single" }, "StopCondition": { diff --git a/module/coalition/assets.py b/module/coalition/assets.py index 28c8f5325..4a1049ae7 100644 --- a/module/coalition/assets.py +++ b/module/coalition/assets.py @@ -21,6 +21,19 @@ COALITION_ACADEMY_GOTO_CAMPAIGN = Button(area={'cn': (1123, 615, 1159, 651), 'en COALITION_ACADEMY_HOME = Button(area={'cn': (1221, 48, 1244, 73), 'en': (1221, 48, 1244, 73), 'jp': (1221, 48, 1244, 73), 'tw': (1221, 48, 1244, 73)}, color={'cn': (182, 197, 203), 'en': (182, 197, 203), 'jp': (182, 197, 203), 'tw': (182, 197, 203)}, button={'cn': (1221, 48, 1244, 73), 'en': (1221, 48, 1244, 73), 'jp': (1221, 48, 1244, 73), 'tw': (1221, 48, 1244, 73)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_HOME.png', 'en': './assets/en/coalition/COALITION_ACADEMY_HOME.png', 'jp': './assets/jp/coalition/COALITION_ACADEMY_HOME.png', 'tw': './assets/tw/coalition/COALITION_ACADEMY_HOME.png'}) COALITION_ACADEMY_MAIN_CHECK = Button(area={'cn': (132, 57, 163, 92), 'en': (164, 57, 221, 78), 'jp': (112, 44, 145, 86), 'tw': (346, 48, 427, 89)}, color={'cn': (143, 202, 205), 'en': (205, 189, 166), 'jp': (142, 155, 153), 'tw': (178, 145, 124)}, button={'cn': (132, 57, 163, 92), 'en': (164, 57, 221, 78), 'jp': (112, 44, 145, 86), 'tw': (346, 48, 427, 89)}, file={'cn': './assets/cn/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'en': './assets/en/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'jp': './assets/jp/coalition/COALITION_ACADEMY_MAIN_CHECK.png', 'tw': './assets/tw/coalition/COALITION_ACADEMY_MAIN_CHECK.png'}) COALITION_REWARD_CONFIRM = Button(area={'cn': (814, 611, 877, 637), 'en': (788, 612, 902, 634), 'jp': (814, 611, 876, 637), 'tw': (814, 611, 877, 637)}, color={'cn': (155, 186, 227), 'en': (162, 189, 226), 'jp': (143, 176, 219), 'tw': (150, 181, 221)}, button={'cn': (814, 611, 877, 637), 'en': (788, 612, 902, 634), 'jp': (814, 611, 876, 637), 'tw': (814, 611, 877, 637)}, file={'cn': './assets/cn/coalition/COALITION_REWARD_CONFIRM.png', 'en': './assets/en/coalition/COALITION_REWARD_CONFIRM.png', 'jp': './assets/jp/coalition/COALITION_REWARD_CONFIRM.png', 'tw': './assets/tw/coalition/COALITION_REWARD_CONFIRM.png'}) +DAL_AREA1 = Button(area={'cn': (167, 494, 227, 554), 'en': (167, 494, 227, 554), 'jp': (167, 494, 227, 554), 'tw': (167, 494, 227, 554)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (167, 494, 227, 554), 'en': (167, 494, 227, 554), 'jp': (167, 494, 227, 554), 'tw': (167, 494, 227, 554)}, file={'cn': './assets/cn/coalition/DAL_AREA1.png', 'en': './assets/cn/coalition/DAL_AREA1.png', 'jp': './assets/jp/coalition/DAL_AREA1.png', 'tw': './assets/cn/coalition/DAL_AREA1.png'}) +DAL_AREA2 = Button(area={'cn': (407, 378, 467, 438), 'en': (407, 378, 467, 438), 'jp': (407, 378, 467, 438), 'tw': (407, 378, 467, 438)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (407, 378, 467, 438), 'en': (407, 378, 467, 438), 'jp': (407, 378, 467, 438), 'tw': (407, 378, 467, 438)}, file={'cn': './assets/cn/coalition/DAL_AREA2.png', 'en': './assets/cn/coalition/DAL_AREA2.png', 'jp': './assets/jp/coalition/DAL_AREA2.png', 'tw': './assets/cn/coalition/DAL_AREA2.png'}) +DAL_AREA3 = Button(area={'cn': (787, 488, 847, 548), 'en': (787, 488, 847, 548), 'jp': (787, 488, 847, 548), 'tw': (787, 488, 847, 548)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (787, 488, 847, 548), 'en': (787, 488, 847, 548), 'jp': (787, 488, 847, 548), 'tw': (787, 488, 847, 548)}, file={'cn': './assets/cn/coalition/DAL_AREA3.png', 'en': './assets/cn/coalition/DAL_AREA3.png', 'jp': './assets/jp/coalition/DAL_AREA3.png', 'tw': './assets/cn/coalition/DAL_AREA3.png'}) +DAL_AREA4 = Button(area={'cn': (904, 245, 964, 305), 'en': (904, 245, 964, 305), 'jp': (904, 245, 964, 305), 'tw': (904, 245, 964, 305)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (904, 245, 964, 305), 'en': (904, 245, 964, 305), 'jp': (904, 245, 964, 305), 'tw': (904, 245, 964, 305)}, file={'cn': './assets/cn/coalition/DAL_AREA4.png', 'en': './assets/cn/coalition/DAL_AREA4.png', 'jp': './assets/jp/coalition/DAL_AREA4.png', 'tw': './assets/cn/coalition/DAL_AREA4.png'}) +DAL_AREA5 = Button(area={'cn': (552, 130, 612, 190), 'en': (552, 130, 612, 190), 'jp': (552, 130, 612, 190), 'tw': (552, 130, 612, 190)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (552, 130, 612, 190), 'en': (552, 130, 612, 190), 'jp': (552, 130, 612, 190), 'tw': (552, 130, 612, 190)}, file={'cn': './assets/cn/coalition/DAL_AREA5.png', 'en': './assets/cn/coalition/DAL_AREA5.png', 'jp': './assets/jp/coalition/DAL_AREA5.png', 'tw': './assets/cn/coalition/DAL_AREA5.png'}) +DAL_AREA6 = Button(area={'cn': (656, 303, 716, 363), 'en': (656, 303, 716, 363), 'jp': (656, 303, 716, 363), 'tw': (656, 303, 716, 363)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (656, 303, 716, 363), 'en': (656, 303, 716, 363), 'jp': (656, 303, 716, 363), 'tw': (656, 303, 716, 363)}, file={'cn': './assets/cn/coalition/DAL_AREA6.png', 'en': './assets/cn/coalition/DAL_AREA6.png', 'jp': './assets/jp/coalition/DAL_AREA6.png', 'tw': './assets/cn/coalition/DAL_AREA6.png'}) +DAL_DIFFICULTY_EXIT = Button(area={'cn': (1208, 70, 1244, 107), 'en': (1208, 70, 1244, 107), 'jp': (1208, 70, 1244, 107), 'tw': (1208, 70, 1244, 107)}, color={'cn': (122, 158, 172), 'en': (122, 158, 172), 'jp': (122, 158, 172), 'tw': (122, 158, 172)}, button={'cn': (1208, 70, 1244, 107), 'en': (1208, 70, 1244, 107), 'jp': (1208, 70, 1244, 107), 'tw': (1208, 70, 1244, 107)}, file={'cn': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png', 'en': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png', 'jp': './assets/jp/coalition/DAL_DIFFICULTY_EXIT.png', 'tw': './assets/cn/coalition/DAL_DIFFICULTY_EXIT.png'}) +DAL_FLEET_PREPARATION = Button(area={'cn': (1016, 529, 1100, 550), 'en': (1016, 529, 1100, 550), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1100, 550)}, color={'cn': (135, 215, 236), 'en': (135, 215, 236), 'jp': (85, 198, 228), 'tw': (135, 215, 236)}, button={'cn': (1016, 529, 1100, 550), 'en': (1016, 529, 1100, 550), 'jp': (1004, 527, 1107, 554), 'tw': (1016, 529, 1100, 550)}, file={'cn': './assets/cn/coalition/DAL_FLEET_PREPARATION.png', 'en': './assets/cn/coalition/DAL_FLEET_PREPARATION.png', 'jp': './assets/jp/coalition/DAL_FLEET_PREPARATION.png', 'tw': './assets/cn/coalition/DAL_FLEET_PREPARATION.png'}) +DAL_HARD = Button(area={'cn': (893, 582, 1109, 611), 'en': (893, 582, 1109, 611), 'jp': (893, 582, 1109, 611), 'tw': (893, 582, 1109, 611)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (893, 582, 1109, 611), 'en': (893, 582, 1109, 611), 'jp': (893, 582, 1109, 611), 'tw': (893, 582, 1109, 611)}, file={'cn': './assets/cn/coalition/DAL_HARD.png', 'en': './assets/cn/coalition/DAL_HARD.png', 'jp': './assets/jp/coalition/DAL_HARD.png', 'tw': './assets/cn/coalition/DAL_HARD.png'}) +DAL_NORMAL = Button(area={'cn': (600, 583, 818, 610), 'en': (600, 583, 818, 610), 'jp': (600, 583, 818, 610), 'tw': (600, 583, 818, 610)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (600, 583, 818, 610), 'en': (600, 583, 818, 610), 'jp': (600, 583, 818, 610), 'tw': (600, 583, 818, 610)}, file={'cn': './assets/cn/coalition/DAL_NORMAL.png', 'en': './assets/cn/coalition/DAL_NORMAL.png', 'jp': './assets/jp/coalition/DAL_NORMAL.png', 'tw': './assets/cn/coalition/DAL_NORMAL.png'}) +DAL_PT_OCR = Button(area={'cn': (1190, 130, 1274, 161), 'en': (1190, 130, 1274, 161), 'jp': (1190, 130, 1274, 161), 'tw': (1190, 130, 1274, 161)}, color={'cn': (79, 86, 72), 'en': (79, 86, 72), 'jp': (79, 86, 72), 'tw': (79, 86, 72)}, button={'cn': (1190, 130, 1274, 161), 'en': (1190, 130, 1274, 161), 'jp': (1190, 130, 1274, 161), 'tw': (1190, 130, 1274, 161)}, file={'cn': './assets/cn/coalition/DAL_PT_OCR.png', 'en': './assets/cn/coalition/DAL_PT_OCR.png', 'jp': './assets/jp/coalition/DAL_PT_OCR.png', 'tw': './assets/cn/coalition/DAL_PT_OCR.png'}) +DAL_SWITCH_MULTI = Button(area={'cn': (1060, 473, 1204, 500), 'en': (1060, 473, 1204, 500), 'jp': (1081, 475, 1187, 499), 'tw': (1060, 473, 1204, 500)}, color={'cn': (225, 225, 225), 'en': (225, 225, 225), 'jp': (207, 207, 207), 'tw': (225, 225, 225)}, button={'cn': (1060, 473, 1204, 500), 'en': (1060, 473, 1204, 500), 'jp': (1081, 475, 1187, 499), 'tw': (1060, 473, 1204, 500)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_MULTI.png', 'en': './assets/cn/coalition/DAL_SWITCH_MULTI.png', 'jp': './assets/jp/coalition/DAL_SWITCH_MULTI.png', 'tw': './assets/cn/coalition/DAL_SWITCH_MULTI.png'}) +DAL_SWITCH_SINGLE = Button(area={'cn': (910, 473, 1055, 500), 'en': (910, 473, 1055, 500), 'jp': (917, 474, 1035, 499), 'tw': (910, 473, 1055, 500)}, color={'cn': (223, 223, 223), 'en': (223, 223, 223), 'jp': (215, 215, 215), 'tw': (223, 223, 223)}, button={'cn': (910, 473, 1055, 500), 'en': (910, 473, 1055, 500), 'jp': (917, 474, 1035, 499), 'tw': (910, 473, 1055, 500)}, file={'cn': './assets/cn/coalition/DAL_SWITCH_SINGLE.png', 'en': './assets/cn/coalition/DAL_SWITCH_SINGLE.png', 'jp': './assets/jp/coalition/DAL_SWITCH_SINGLE.png', 'tw': './assets/cn/coalition/DAL_SWITCH_SINGLE.png'}) EMPTY_FLAGSHIP = Button(area={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, color={'cn': (76, 64, 56), 'en': (76, 64, 56), 'jp': (76, 64, 56), 'tw': (76, 64, 56)}, button={'cn': (247, 237, 277, 267), 'en': (247, 237, 277, 267), 'jp': (247, 237, 277, 267), 'tw': (247, 237, 277, 267)}, file={'cn': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'en': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'jp': './assets/cn/coalition/EMPTY_FLAGSHIP.png', 'tw': './assets/cn/coalition/EMPTY_FLAGSHIP.png'}) EMPTY_VANGUARD = Button(area={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, color={'cn': (52, 52, 53), 'en': (52, 52, 53), 'jp': (52, 52, 53), 'tw': (52, 52, 53)}, button={'cn': (515, 237, 545, 267), 'en': (515, 237, 545, 267), 'jp': (515, 237, 545, 267), 'tw': (515, 237, 545, 267)}, file={'cn': './assets/cn/coalition/EMPTY_VANGUARD.png', 'en': './assets/cn/coalition/EMPTY_VANGUARD.png', 'jp': './assets/cn/coalition/EMPTY_VANGUARD.png', 'tw': './assets/cn/coalition/EMPTY_VANGUARD.png'}) FLEET_NOT_PREPARED = Button(area={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, color={'cn': (106, 106, 112), 'en': (106, 106, 112), 'jp': (106, 106, 112), 'tw': (108, 107, 112)}, button={'cn': (1008, 310, 1110, 334), 'en': (1008, 310, 1110, 334), 'jp': (1008, 310, 1110, 334), 'tw': (1008, 310, 1110, 334)}, file={'cn': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'en': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'jp': './assets/cn/coalition/FLEET_NOT_PREPARED.png', 'tw': './assets/tw/coalition/FLEET_NOT_PREPARED.png'}) diff --git a/module/coalition/coalition.py b/module/coalition/coalition.py index 606117ff9..670e15721 100644 --- a/module/coalition/coalition.py +++ b/module/coalition/coalition.py @@ -23,6 +23,20 @@ class AcademyPtOcr(Digit): pass return super().after_process(result) +class DALPtOcr(Digit): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.alphabet += 'X' + + def after_process(self, result): + logger.attr(self.name, result) + try: + # X9100 + result = result.rsplit('X')[1] + except IndexError: + pass + return super().after_process(result) + class Coalition(CoalitionCombat, CampaignEvent): run_count: int @@ -41,6 +55,8 @@ class Coalition(CoalitionCombat, CampaignEvent): elif event == 'coalition_20250626': # use generic ocr model ocr = Digit(NEONCITY_PT_OCR, name='OCR_PT', lang='cnocr', letter=(208, 208, 208), threshold=128) + elif event == 'coalition_20251120': + ocr = DALPtOcr(DAL_PT_OCR, name='OCR_PT' ,letter=(255, 213, 69), threshold=128) else: logger.error(f'ocr object is not defined in event {event}') raise ScriptError @@ -110,11 +126,11 @@ class Coalition(CoalitionCombat, CampaignEvent): self.coalition_map_exit(event) raise - self.enter_map(event=event, stage=stage, mode=fleet) - oil_check_boolean=True if self.config.SERVER not in ['tw'] else False - if self.triggered_stop_condition(oil_check=oil_check_boolean): + 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() @staticmethod @@ -150,10 +166,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 + # if self.config.SERVER in ['tw']: + # 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() diff --git a/module/coalition/ui.py b/module/coalition/ui.py index 5570735a0..d612e5a62 100644 --- a/module/coalition/ui.py +++ b/module/coalition/ui.py @@ -24,6 +24,9 @@ class CoalitionUI(Combat): # The same as raid return self.ui_page_appear(page_coalition, offset=(20, 20)) + def in_coalition_20251120_difficulty_selection(self): + return self.appear(DAL_DIFFICULTY_EXIT, offset=(20, 20)) + def coalition_ensure_mode(self, event, mode): """ Args: @@ -46,6 +49,9 @@ class CoalitionUI(Combat): mode_switch = NeoncitySwitch('CoalitionMode', offset=(20, 20)) mode_switch.add_state('story', NEONCITY_MODE_STORY) mode_switch.add_state('battle', NEONCITY_MODE_BATTLE) + elif event == 'coalition_20251120': + logger.info('Coalition event coalition_20251120 has no mode switch') + return else: logger.error(f'MODE_SWITCH is not defined in event {event}') raise ScriptError @@ -76,6 +82,9 @@ class CoalitionUI(Combat): elif event == 'coalition_20250626': fleet_switch.add_state('single', NEONCITY_SWITCH_SINGLE) fleet_switch.add_state('multi', NEONCITY_SWITCH_MULTI) + elif event == 'coalition_20251120': + fleet_switch.add_state('single', DAL_SWITCH_SINGLE) + fleet_switch.add_state('multi', DAL_SWITCH_MULTI) else: logger.error(f'FLEET_SWITCH is not defined in event {event}') raise ScriptError @@ -115,6 +124,49 @@ class CoalitionUI(Combat): ('coalition_20250626', 'hard'): NEONCITY_HARD, ('coalition_20250626', 'sp'): NEONCITY_SP, ('coalition_20250626', 'ex'): NEONCITY_EX, + + ('coalition_20251120', 'area1-normal'): DAL_AREA1, + ('coalition_20251120', 'area2-normal'): DAL_AREA2, + ('coalition_20251120', 'area3-normal'): DAL_AREA3, + ('coalition_20251120', 'area4-normal'): DAL_AREA4, + ('coalition_20251120', 'area5-normal'): DAL_AREA5, + ('coalition_20251120', 'area6-normal'): DAL_AREA6, + ('coalition_20251120', 'area1-hard'): DAL_AREA1, + ('coalition_20251120', 'area2-hard'): DAL_AREA2, + ('coalition_20251120', 'area3-hard'): DAL_AREA3, + ('coalition_20251120', 'area4-hard'): DAL_AREA4, + ('coalition_20251120', 'area5-hard'): DAL_AREA5, + ('coalition_20251120', 'area6-hard'): DAL_AREA6, + } + stage = stage.lower() + try: + return dic[(event, stage)] + except KeyError as e: + logger.error(e) + raise CampaignNameError + + @staticmethod + def coalition_20251120_get_entrance_difficulty(event, stage): + """ + Args: + stage (str): Stage name. + + Returns: + Button: Entrance difficulty button + """ + dic = { + ('coalition_20251120', 'area1-normal'): DAL_NORMAL, + ('coalition_20251120', 'area2-normal'): DAL_NORMAL, + ('coalition_20251120', 'area3-normal'): DAL_NORMAL, + ('coalition_20251120', 'area4-normal'): DAL_NORMAL, + ('coalition_20251120', 'area5-normal'): DAL_NORMAL, + ('coalition_20251120', 'area6-normal'): DAL_NORMAL, + ('coalition_20251120', 'area1-hard'): DAL_HARD, + ('coalition_20251120', 'area2-hard'): DAL_HARD, + ('coalition_20251120', 'area3-hard'): DAL_HARD, + ('coalition_20251120', 'area4-hard'): DAL_HARD, + ('coalition_20251120', 'area5-hard'): DAL_HARD, + ('coalition_20251120', 'area6-hard'): DAL_HARD, } stage = stage.lower() try: @@ -151,6 +203,19 @@ class CoalitionUI(Combat): ('coalition_20250626', 'hard'): 3, ('coalition_20250626', 'sp'): 4, ('coalition_20250626', 'ex'): 5, + + ('coalition_20251120', 'area1-normal'): 2, + ('coalition_20251120', 'area2-normal'): 3, + ('coalition_20251120', 'area3-normal'): 3, + ('coalition_20251120', 'area4-normal'): 3, + ('coalition_20251120', 'area5-normal'): 3, + ('coalition_20251120', 'area6-normal'): 4, + ('coalition_20251120', 'area1-hard'): 2, + ('coalition_20251120', 'area2-hard'): 3, + ('coalition_20251120', 'area3-hard'): 3, + ('coalition_20251120', 'area4-hard'): 3, + ('coalition_20251120', 'area5-hard'): 3, + ('coalition_20251120', 'area6-hard'): 4, } stage = stage.lower() try: @@ -174,6 +239,8 @@ class CoalitionUI(Combat): return ACEDEMY_FLEET_PREPARATION elif event == 'coalition_20250626': return NEONCITY_FLEET_PREPARATION + elif event == 'coalition_20251120': + return DAL_FLEET_PREPARATION else: logger.error(f'FLEET_PREPARATION is not defined in event {event}') raise ScriptError @@ -226,6 +293,9 @@ class CoalitionUI(Combat): logger.info(f'{fleet_preparation} -> {NEONCITY_PREPARATION_EXIT}') self.device.click(NEONCITY_PREPARATION_EXIT) continue + if self.appear_then_click(DAL_DIFFICULTY_EXIT, offset=(20, 20), interval=3): + logger.info(f'{DAL_DIFFICULTY_EXIT} -> {DAL_DIFFICULTY_EXIT}') + continue def enter_map(self, event, stage, mode, skip_first_screenshot=True): """ @@ -240,10 +310,16 @@ class CoalitionUI(Combat): out: BATTLE_PREPARATION """ button = self.coalition_get_entrance(event, stage) + if event in ['coalition_20251120']: + button_difficulty = self.coalition_20251120_get_entrance_difficulty(event, stage) + else: + button_difficulty = None fleet_preparation = self.coalition_get_fleet_preparation(event) campaign_timer = Timer(5) + campaign_difficulty_timer = Timer(5) fleet_timer = Timer(5) campaign_click = 0 + campaign_difficulty_click = 0 fleet_click = 0 while 1: if skip_first_screenshot: @@ -256,6 +332,10 @@ class CoalitionUI(Combat): logger.critical(f"Failed to enter {button}, too many click on {button}") logger.critical("Possible reason #1: You haven't cleared previous stage to unlock the stage.") raise RequestHumanTakeover + if campaign_difficulty_click > 5: + logger.critical(f"Failed to enter {button_difficulty}, too many click on {button_difficulty}") + logger.critical("Possible reason #1: The difficulty asset is not correct.") + raise RequestHumanTakeover if fleet_click > 5: logger.critical(f"Failed to enter {button}, too many click on FLEET_PREPARATION") logger.critical("Possible reason #1: " @@ -288,6 +368,12 @@ class CoalitionUI(Combat): campaign_click += 1 campaign_timer.reset() continue + if event in ['coalition_20251120']: + if campaign_difficulty_timer.reached() and self.in_coalition_20251120_difficulty_selection() and button_difficulty: + self.device.click(button_difficulty) + campaign_difficulty_click += 1 + campaign_difficulty_timer.reset() + continue # Fleet preparation if fleet_timer.reached() and self.appear(fleet_preparation, offset=(20, 50)): diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 41f9c0941..d0d5dfae2 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -3688,6 +3688,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -3731,7 +3732,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -4141,6 +4141,271 @@ } } }, + "Coalition": { + "Scheduler": { + "Enable": { + "type": "checkbox", + "value": false, + "option": [ + true, + false + ] + }, + "NextRun": { + "type": "datetime", + "value": "2020-01-01 00:00:00", + "validate": "datetime" + }, + "Command": { + "type": "input", + "value": "Coalition", + "display": "hide" + }, + "SuccessInterval": { + "type": "input", + "value": 30, + "display": "hide" + }, + "FailureInterval": { + "type": "input", + "value": 30, + "display": "hide" + }, + "ServerUpdate": { + "type": "input", + "value": "00:00", + "display": "hide" + } + }, + "Campaign": { + "Name": { + "type": "input", + "value": "dynamic", + "display": "hide" + }, + "Event": { + "type": "state", + "value": "campaign_main", + "option": [ + "coalition_20230323", + "coalition_20240627", + "coalition_20250626", + "coalition_20251120" + ], + "option_cn": [ + "coalition_20251120", + "coalition_20250626", + "coalition_20230323", + "coalition_20240627" + ], + "option_en": [ + "coalition_20251120", + "coalition_20250626", + "coalition_20230323", + "coalition_20240627" + ], + "option_jp": [ + "coalition_20251120", + "coalition_20250626", + "coalition_20230323", + "coalition_20240627" + ], + "option_tw": [ + "coalition_20250626", + "coalition_20240627", + "coalition_20230323" + ] + }, + "Mode": { + "type": "select", + "value": "normal", + "option": [ + "normal", + "hard" + ], + "display": "hide" + }, + "UseClearMode": { + "type": "checkbox", + "value": true, + "display": "hide" + }, + "UseFleetLock": { + "type": "checkbox", + "value": true, + "display": "hide" + }, + "UseAutoSearch": { + "type": "checkbox", + "value": false, + "display": "hide" + }, + "Use2xBook": { + "type": "checkbox", + "value": false, + "display": "hide" + }, + "AmbushEvade": { + "type": "checkbox", + "value": true, + "display": "hide" + } + }, + "Coalition": { + "Mode": { + "type": "select", + "value": "area1-normal", + "option": [ + "area1-normal", + "area1-hard", + "area2-normal", + "area2-hard", + "area3-normal", + "area3-hard", + "area4-normal", + "area4-hard", + "area5-normal", + "area5-hard", + "area6-normal", + "area6-hard" + ] + }, + "Fleet": { + "type": "select", + "value": "single", + "option": [ + "single", + "multi" + ] + } + }, + "StopCondition": { + "OilLimit": { + "type": "input", + "value": 1000 + }, + "RunCount": { + "type": "input", + "value": 0 + }, + "MapAchievement": { + "type": "select", + "value": "non_stop", + "option": [ + "non_stop", + "100_percent_clear", + "map_3_stars", + "threat_safe", + "threat_safe_without_3_stars" + ], + "display": "hide" + }, + "StageIncrease": { + "type": "checkbox", + "value": false, + "display": "hide" + }, + "GetNewShip": { + "type": "checkbox", + "value": false, + "display": "hide" + }, + "ReachLevel": { + "type": "input", + "value": 0, + "display": "hide" + } + }, + "Emotion": { + "Mode": { + "type": "select", + "value": "calculate", + "option": [ + "calculate", + "ignore", + "calculate_ignore" + ] + }, + "Fleet1Value": { + "type": "input", + "value": 119 + }, + "Fleet1Record": { + "type": "datetime", + "value": "2020-01-01 00:00:00", + "validate": "datetime", + "display": "disabled" + }, + "Fleet1Control": { + "type": "select", + "value": "prevent_yellow_face", + "option": [ + "keep_exp_bonus", + "prevent_green_face", + "prevent_yellow_face", + "prevent_red_face" + ] + }, + "Fleet1Recover": { + "type": "select", + "value": "not_in_dormitory", + "option": [ + "not_in_dormitory", + "dormitory_floor_1", + "dormitory_floor_2" + ] + }, + "Fleet1Oath": { + "type": "checkbox", + "value": false + }, + "Fleet2Value": { + "type": "input", + "value": 119, + "display": "hide" + }, + "Fleet2Record": { + "type": "datetime", + "value": "2020-01-01 00:00:00", + "validate": "datetime", + "display": "hide" + }, + "Fleet2Control": { + "type": "select", + "value": "prevent_yellow_face", + "option": [ + "keep_exp_bonus", + "prevent_green_face", + "prevent_yellow_face", + "prevent_red_face" + ], + "display": "hide" + }, + "Fleet2Recover": { + "type": "select", + "value": "not_in_dormitory", + "option": [ + "not_in_dormitory", + "dormitory_floor_1", + "dormitory_floor_2" + ], + "display": "hide" + }, + "Fleet2Oath": { + "type": "checkbox", + "value": false, + "display": "hide" + } + }, + "Storage": { + "Storage": { + "type": "storage", + "value": {}, + "valuetype": "ignore", + "display": "disabled" + } + } + }, "Event": { "Scheduler": { "Enable": { @@ -4472,6 +4737,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -4515,7 +4781,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -5203,6 +5468,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -5246,7 +5512,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -5934,6 +6199,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -5977,7 +6243,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -6665,6 +6930,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -6708,7 +6974,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -7396,6 +7661,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -7439,7 +7705,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -8127,6 +8392,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -8170,7 +8436,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -8984,259 +9249,6 @@ } } }, - "Coalition": { - "Scheduler": { - "Enable": { - "type": "checkbox", - "value": false, - "option": [ - true, - false - ] - }, - "NextRun": { - "type": "datetime", - "value": "2020-01-01 00:00:00", - "validate": "datetime" - }, - "Command": { - "type": "input", - "value": "Coalition", - "display": "hide" - }, - "SuccessInterval": { - "type": "input", - "value": 30, - "display": "hide" - }, - "FailureInterval": { - "type": "input", - "value": 30, - "display": "hide" - }, - "ServerUpdate": { - "type": "input", - "value": "00:00", - "display": "hide" - } - }, - "Campaign": { - "Name": { - "type": "input", - "value": "dynamic", - "display": "hide" - }, - "Event": { - "type": "state", - "value": "campaign_main", - "option": [ - "coalition_20230323", - "coalition_20240627", - "coalition_20250626" - ], - "option_cn": [ - "coalition_20250626", - "coalition_20230323", - "coalition_20240627" - ], - "option_en": [ - "coalition_20250626", - "coalition_20230323", - "coalition_20240627" - ], - "option_jp": [ - "coalition_20250626", - "coalition_20230323", - "coalition_20240627" - ], - "option_tw": [ - "coalition_20250626", - "coalition_20240627", - "coalition_20230323" - ] - }, - "Mode": { - "type": "select", - "value": "normal", - "option": [ - "normal", - "hard" - ], - "display": "hide" - }, - "UseClearMode": { - "type": "checkbox", - "value": true, - "display": "hide" - }, - "UseFleetLock": { - "type": "checkbox", - "value": true, - "display": "hide" - }, - "UseAutoSearch": { - "type": "checkbox", - "value": false, - "display": "hide" - }, - "Use2xBook": { - "type": "checkbox", - "value": false, - "display": "hide" - }, - "AmbushEvade": { - "type": "checkbox", - "value": true, - "display": "hide" - } - }, - "Coalition": { - "Mode": { - "type": "select", - "value": "hard", - "option": [ - "easy", - "normal", - "hard", - "ex" - ] - }, - "Fleet": { - "type": "select", - "value": "single", - "option": [ - "single", - "multi" - ] - } - }, - "StopCondition": { - "OilLimit": { - "type": "input", - "value": 1000 - }, - "RunCount": { - "type": "input", - "value": 0 - }, - "MapAchievement": { - "type": "select", - "value": "non_stop", - "option": [ - "non_stop", - "100_percent_clear", - "map_3_stars", - "threat_safe", - "threat_safe_without_3_stars" - ], - "display": "hide" - }, - "StageIncrease": { - "type": "checkbox", - "value": false, - "display": "hide" - }, - "GetNewShip": { - "type": "checkbox", - "value": false, - "display": "hide" - }, - "ReachLevel": { - "type": "input", - "value": 0, - "display": "hide" - } - }, - "Emotion": { - "Mode": { - "type": "select", - "value": "calculate", - "option": [ - "calculate", - "ignore", - "calculate_ignore" - ] - }, - "Fleet1Value": { - "type": "input", - "value": 119 - }, - "Fleet1Record": { - "type": "datetime", - "value": "2020-01-01 00:00:00", - "validate": "datetime", - "display": "disabled" - }, - "Fleet1Control": { - "type": "select", - "value": "prevent_yellow_face", - "option": [ - "keep_exp_bonus", - "prevent_green_face", - "prevent_yellow_face", - "prevent_red_face" - ] - }, - "Fleet1Recover": { - "type": "select", - "value": "not_in_dormitory", - "option": [ - "not_in_dormitory", - "dormitory_floor_1", - "dormitory_floor_2" - ] - }, - "Fleet1Oath": { - "type": "checkbox", - "value": false - }, - "Fleet2Value": { - "type": "input", - "value": 119, - "display": "hide" - }, - "Fleet2Record": { - "type": "datetime", - "value": "2020-01-01 00:00:00", - "validate": "datetime", - "display": "hide" - }, - "Fleet2Control": { - "type": "select", - "value": "prevent_yellow_face", - "option": [ - "keep_exp_bonus", - "prevent_green_face", - "prevent_yellow_face", - "prevent_red_face" - ], - "display": "hide" - }, - "Fleet2Recover": { - "type": "select", - "value": "not_in_dormitory", - "option": [ - "not_in_dormitory", - "dormitory_floor_1", - "dormitory_floor_2" - ], - "display": "hide" - }, - "Fleet2Oath": { - "type": "checkbox", - "value": false, - "display": "hide" - } - }, - "Storage": { - "Storage": { - "type": "storage", - "value": {}, - "valuetype": "ignore", - "display": "disabled" - } - } - }, "MaritimeEscort": { "Scheduler": { "Enable": { @@ -10297,6 +10309,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -10340,7 +10353,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -11045,6 +11057,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -11088,7 +11101,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -11793,6 +11805,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -11836,7 +11849,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -12541,6 +12553,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -12584,7 +12597,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -13279,6 +13291,7 @@ "event_20200227_cn" ], "option_tw": [ + "event_20220428_cn", "event_20250227_cn", "event_20250912_cn", "event_20250814_cn", @@ -13322,7 +13335,6 @@ "event_20211125_cn", "event_20200917_cn", "event_20220818_cn", - "event_20220428_cn", "event_20200603_cn", "event_20220526_cn", "event_20201126_cn", @@ -14009,19 +14021,23 @@ "option": [ "coalition_20230323", "coalition_20240627", - "coalition_20250626" + "coalition_20250626", + "coalition_20251120" ], "option_cn": [ + "coalition_20251120", "coalition_20250626", "coalition_20230323", "coalition_20240627" ], "option_en": [ + "coalition_20251120", "coalition_20250626", "coalition_20230323", "coalition_20240627" ], "option_jp": [ + "coalition_20251120", "coalition_20250626", "coalition_20230323", "coalition_20240627" @@ -14070,15 +14086,21 @@ "Coalition": { "Mode": { "type": "select", - "value": "sp", + "value": "area1-normal", "option": [ - "easy", - "normal", - "hard", - "sp", - "ex" - ], - "display": "hide" + "area1-normal", + "area1-hard", + "area2-normal", + "area2-hard", + "area3-normal", + "area3-hard", + "area4-normal", + "area4-hard", + "area5-normal", + "area5-hard", + "area6-normal", + "area6-hard" + ] }, "Fleet": { "type": "select", diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 03c591864..605ba160f 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -310,8 +310,8 @@ MaritimeEscort: Enable: true Coalition: Mode: - value: hard - option: [ easy, normal, hard, sp, ex ] + value: area1-normal + option: [ area1-normal, area1-hard, area2-normal, area2-hard, area3-normal, area3-hard, area4-normal, area4-hard, area5-normal, area5-hard, area6-normal, area6-hard ] Fleet: value: single option: [ single, multi ] diff --git a/module/config/argument/menu.json b/module/config/argument/menu.json index 2cf2cd49f..cd5607142 100644 --- a/module/config/argument/menu.json +++ b/module/config/argument/menu.json @@ -35,6 +35,7 @@ "page": "setting", "tasks": [ "EventGeneral", + "Coalition", "Event", "Event2", "Event3", @@ -43,7 +44,6 @@ "Event6", "Raid", "Hospital", - "Coalition", "MaritimeEscort", "EventShop", "WarArchives" diff --git a/module/config/argument/override.yaml b/module/config/argument/override.yaml index 85ed8596c..5c69573e4 100644 --- a/module/config/argument/override.yaml +++ b/module/config/argument/override.yaml @@ -257,9 +257,9 @@ Coalition: UseAutoSearch: false Use2xBook: false AmbushEvade: true - Coalition: - Mode: - option: [ easy, normal, hard, ex ] +# Coalition: +# Mode: +# option: [ easy, normal, hard, ex ] StopCondition: MapAchievement: non_stop StageIncrease: false diff --git a/module/config/argument/task.yaml b/module/config/argument/task.yaml index c29122b15..653f6b602 100644 --- a/module/config/argument/task.yaml +++ b/module/config/argument/task.yaml @@ -123,6 +123,12 @@ Event: EventGeneral: - EventGeneral - TaskBalancer + Coalition: + - Scheduler + - Campaign + - Coalition + - StopCondition + - Emotion Event: - Scheduler - Campaign @@ -188,12 +194,7 @@ Event: - Hospital - StopCondition - Emotion - Coalition: - - Scheduler - - Campaign - - Coalition - - StopCondition - - Emotion + MaritimeEscort: - Scheduler - MaritimeEscort diff --git a/module/config/config_generated.py b/module/config/config_generated.py index b66dc00d3..3a1ea58b9 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -183,7 +183,7 @@ class GeneratedConfig: MaritimeEscort_Enable = True # Group `Coalition` - Coalition_Mode = 'hard' # easy, normal, hard, sp, ex + Coalition_Mode = 'area1-normal' # area1-normal, area1-hard, area2-normal, area2-hard, area3-normal, area3-hard, area4-normal, area4-hard, area5-normal, area5-hard, area6-normal, area6-hard Coalition_Fleet = 'single' # single, multi # Group `Commission` diff --git a/module/config/config_updater.py b/module/config/config_updater.py index 2bd7d3255..59e0ecf6b 100644 --- a/module/config/config_updater.py +++ b/module/config/config_updater.py @@ -595,7 +595,7 @@ class ConfigUpdater: # 2025.04.17 # ('Coalition.Coalition.Mode', 'Coalition.Coalition.Mode', coalition_to_frostfall), # 2025.06.26 - ('Coalition.Coalition.Mode', 'Coalition.Coalition.Mode', coalition_to_little_academy), + # ('Coalition.Coalition.Mode', 'Coalition.Coalition.Mode', coalition_to_little_academy), ] # redirection += [ @@ -670,7 +670,7 @@ class ConfigUpdater: for task in EVENTS + WAR_ARCHIVES: default_stage(task, 'D3') for task in COALITIONS: - default_stage(task, 'hard') + default_stage(task, 'area1-normal') if not is_template: new = self.config_redirect(old, new) diff --git a/module/config/full_config_generated.py b/module/config/full_config_generated.py index bff6228c6..d4ee4acd5 100644 --- a/module/config/full_config_generated.py +++ b/module/config/full_config_generated.py @@ -585,6 +585,42 @@ class FullGeneratedConfig: EventGeneral_TaskBalancer_TaskCall = None EventGeneral_Storage_Storage = None + # Task `Coalition` + Coalition_Scheduler_Enable = None + Coalition_Scheduler_NextRun = None + Coalition_Scheduler_Command = None + Coalition_Scheduler_SuccessInterval = None + Coalition_Scheduler_FailureInterval = None + Coalition_Scheduler_ServerUpdate = None + Coalition_Campaign_Name = None + Coalition_Campaign_Event = None + Coalition_Campaign_Mode = None + Coalition_Campaign_UseClearMode = None + Coalition_Campaign_UseFleetLock = None + Coalition_Campaign_UseAutoSearch = None + Coalition_Campaign_Use2xBook = None + Coalition_Campaign_AmbushEvade = None + Coalition_Coalition_Mode = None + Coalition_Coalition_Fleet = None + Coalition_StopCondition_OilLimit = None + Coalition_StopCondition_RunCount = None + Coalition_StopCondition_MapAchievement = None + Coalition_StopCondition_StageIncrease = None + Coalition_StopCondition_GetNewShip = None + Coalition_StopCondition_ReachLevel = None + Coalition_Emotion_Mode = None + Coalition_Emotion_Fleet1Value = None + Coalition_Emotion_Fleet1Record = None + Coalition_Emotion_Fleet1Control = None + Coalition_Emotion_Fleet1Recover = None + Coalition_Emotion_Fleet1Oath = None + Coalition_Emotion_Fleet2Value = None + Coalition_Emotion_Fleet2Record = None + Coalition_Emotion_Fleet2Control = None + Coalition_Emotion_Fleet2Recover = None + Coalition_Emotion_Fleet2Oath = None + Coalition_Storage_Storage = None + # Task `Event` Event_Scheduler_Enable = None Event_Scheduler_NextRun = None @@ -984,42 +1020,6 @@ class FullGeneratedConfig: Hospital_Emotion_Fleet2Oath = None Hospital_Storage_Storage = None - # Task `Coalition` - Coalition_Scheduler_Enable = None - Coalition_Scheduler_NextRun = None - Coalition_Scheduler_Command = None - Coalition_Scheduler_SuccessInterval = None - Coalition_Scheduler_FailureInterval = None - Coalition_Scheduler_ServerUpdate = None - Coalition_Campaign_Name = None - Coalition_Campaign_Event = None - Coalition_Campaign_Mode = None - Coalition_Campaign_UseClearMode = None - Coalition_Campaign_UseFleetLock = None - Coalition_Campaign_UseAutoSearch = None - Coalition_Campaign_Use2xBook = None - Coalition_Campaign_AmbushEvade = None - Coalition_Coalition_Mode = None - Coalition_Coalition_Fleet = None - Coalition_StopCondition_OilLimit = None - Coalition_StopCondition_RunCount = None - Coalition_StopCondition_MapAchievement = None - Coalition_StopCondition_StageIncrease = None - Coalition_StopCondition_GetNewShip = None - Coalition_StopCondition_ReachLevel = None - Coalition_Emotion_Mode = None - Coalition_Emotion_Fleet1Value = None - Coalition_Emotion_Fleet1Record = None - Coalition_Emotion_Fleet1Control = None - Coalition_Emotion_Fleet1Recover = None - Coalition_Emotion_Fleet1Oath = None - Coalition_Emotion_Fleet2Value = None - Coalition_Emotion_Fleet2Record = None - Coalition_Emotion_Fleet2Control = None - Coalition_Emotion_Fleet2Recover = None - Coalition_Emotion_Fleet2Oath = None - Coalition_Storage_Storage = None - # Task `MaritimeEscort` MaritimeEscort_Scheduler_Enable = None MaritimeEscort_Scheduler_NextRun = None diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index c55e4e356..af42e7da9 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -94,6 +94,10 @@ "name": "Event General", "help": "" }, + "Coalition": { + "name": "DATE A LANE", + "help": "" + }, "Event": { "name": "Event", "help": "" @@ -126,10 +130,6 @@ "name": "Valley Hospital", "help": "" }, - "Coalition": { - "name": "Neon City Investigator", - "help": "" - }, "MaritimeEscort": { "name": "Maritime Escort", "help": "" @@ -735,6 +735,7 @@ "coalition_20230323": "Frostfall", "coalition_20240627": "Welcome to Little Academy", "coalition_20250626": "The Neon City Investigator", + "coalition_20251120": "DATE A LANE", "event_20200227_cn": "Northern Overture", "event_20200312_cn": "The Solomon Ranger Rerun", "event_20200326_cn": "Microlayer Medley", @@ -1380,11 +1381,18 @@ "Mode": { "name": "Mode", "help": "SP needs to use event daily SP to run", - "easy": "Easy", - "normal": "Normal", - "hard": "Hard", - "sp": "SP", - "ex": "EX" + "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" }, "Fleet": { "name": "Fleet", diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index 9fcaffbcc..cb2cd43ab 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -94,6 +94,10 @@ "name": "イベント共通設定", "help": "" }, + "Coalition": { + "name": "ネオンシティの探索者", + "help": "" + }, "Event": { "name": "イベント海域", "help": "" @@ -126,10 +130,6 @@ "name": "病院探訪", "help": "" }, - "Coalition": { - "name": "ネオンシティの探索者", - "help": "" - }, "MaritimeEscort": { "name": "Maritime Escort", "help": "" @@ -735,6 +735,7 @@ "coalition_20230323": "星霜海嵐", "coalition_20240627": "リトル学園へようこそ", "coalition_20250626": "ネオンシティの探索者", + "coalition_20251120": "DATE A LANE", "event_20200227_cn": "凍絶の北海", "event_20200312_cn": "南洋に靡く硝煙(復刻)", "event_20200326_cn": "闇靄払う銀翼", @@ -1380,11 +1381,18 @@ "Mode": { "name": "Coalition.Mode.name", "help": "Coalition.Mode.help", - "easy": "easy", - "normal": "normal", - "hard": "hard", - "sp": "sp", - "ex": "ex" + "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" }, "Fleet": { "name": "Coalition.Fleet.name", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 5b49c1acd..3bada9399 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -94,6 +94,10 @@ "name": "活动通用设置", "help": "" }, + "Coalition": { + "name": "DATE A LANE", + "help": "" + }, "Event": { "name": "活动图-1", "help": "" @@ -126,10 +130,6 @@ "name": "深谷来信", "help": "" }, - "Coalition": { - "name": "迷彩都市的寻踪者", - "help": "" - }, "MaritimeEscort": { "name": "商船护航", "help": "" @@ -735,6 +735,7 @@ "coalition_20230323": "极地风暴", "coalition_20240627": "欢迎来到童心学院", "coalition_20250626": "迷彩都市的寻踪者", + "coalition_20251120": "DATE A LANE", "event_20200227_cn": "北境序曲", "event_20200312_cn": "复刻斯图尔特的硝烟", "event_20200326_cn": "微层混合", @@ -1380,11 +1381,18 @@ "Mode": { "name": "难度", "help": "SP图需要使用活动每日SP运行", - "easy": "简单", - "normal": "普通", - "hard": "困难", - "sp": "SP", - "ex": "EX" + "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" }, "Fleet": { "name": "出击队伍", diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index bfdcbeeaf..fe0973790 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -94,6 +94,10 @@ "name": "活動通用", "help": "" }, + "Coalition": { + "name": "極地風暴", + "help": "" + }, "Event": { "name": "活動圖", "help": "" @@ -126,10 +130,6 @@ "name": "深谷来信", "help": "" }, - "Coalition": { - "name": "極地風暴", - "help": "" - }, "MaritimeEscort": { "name": "商船護航", "help": "" @@ -735,6 +735,7 @@ "coalition_20230323": "極地風暴", "coalition_20240627": "歡迎來到童心學院", "coalition_20250626": "迷彩都市的尋蹤者", + "coalition_20251120": "DATE A LANE", "event_20200227_cn": "Northern Overture", "event_20200312_cn": "斯圖爾特的硝煙", "event_20200326_cn": "Microlayer Medley", @@ -782,7 +783,7 @@ "event_20220324_cn": "復刻虛像構築之塔", "event_20220407_tw": "蒼紅的迴響(復刻)", "event_20220414_cn": "復刻-永夜幻光", - "event_20220428_cn": "虹彩的終幕曲", + "event_20220428_cn": "復刻虹彩的終幕曲", "event_20220526_cn": "泠誓光庭", "event_20220728_cn": "雄鷹的敘事歌", "event_20220818_cn": "遠匯點作戰", @@ -1380,11 +1381,18 @@ "Mode": { "name": "難度", "help": "SP圖需要使用活動每日SP運行", - "easy": "簡單", - "normal": "普通", - "hard": "困難", - "sp": "sp", - "ex": "EX" + "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" }, "Fleet": { "name": "出擊隊伍", @@ -2166,7 +2174,7 @@ }, "TargetShip": { "name": "選擇每日互動的艦娘", - "help": "選擇需要與之每日互動的艦娘\n台服將跳過紐澤西與大鳳", + "help": "選擇需要與之每日互動的艦娘\n台服將跳過大鳳", "anchorage": "安克拉治", "noshiro": "能代", "sirius": "天狼星", diff --git a/module/private_quarters/assets.py b/module/private_quarters/assets.py index 6623e53e0..8b9c64571 100644 --- a/module/private_quarters/assets.py +++ b/module/private_quarters/assets.py @@ -10,8 +10,8 @@ PRIVATE_QUARTERS_INTERACT_CHECK = Button(area={'cn': (1223, 653, 1245, 675), 'en PRIVATE_QUARTERS_LOADING_CHECK = Button(area={'cn': (582, 376, 702, 391), 'en': (582, 376, 702, 391), 'jp': (582, 376, 702, 391), 'tw': (582, 376, 702, 391)}, color={'cn': (200, 232, 255), 'en': (200, 232, 255), 'jp': (200, 232, 255), 'tw': (200, 232, 255)}, button={'cn': (582, 376, 702, 391), 'en': (582, 376, 702, 391), 'jp': (582, 376, 702, 391), 'tw': (582, 376, 702, 391)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_LOADING_CHECK.png'}) PRIVATE_QUARTERS_PAGE_LEFT = Button(area={'cn': (20, 329, 40, 359), 'en': (20, 329, 40, 359), 'jp': (20, 329, 40, 359), 'tw': (20, 329, 40, 359)}, color={'cn': (231, 234, 238), 'en': (231, 234, 238), 'jp': (231, 234, 238), 'tw': (231, 234, 238)}, button={'cn': (20, 329, 40, 359), 'en': (20, 329, 40, 359), 'jp': (20, 329, 40, 359), 'tw': (20, 329, 40, 359)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LEFT.png'}) PRIVATE_QUARTERS_PAGE_LOCALE_BEACH = Button(area={'cn': (24, 504, 99, 527), 'en': (38, 509, 86, 522), 'jp': (36, 506, 87, 525), 'tw': (25, 506, 93, 526)}, color={'cn': (198, 198, 198), 'en': (154, 154, 154), 'jp': (221, 221, 221), 'tw': (200, 200, 200)}, button={'cn': (24, 504, 99, 527), 'en': (38, 509, 86, 522), 'jp': (36, 506, 87, 525), 'tw': (25, 506, 93, 526)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_BEACH.png'}) -PRIVATE_QUARTERS_PAGE_LOCALE_LOFT = Button(area={'cn': (23, 502, 99, 528), 'en': (41, 505, 81, 525), 'jp': (35, 507, 86, 525), 'tw': (41, 505, 81, 525)}, color={'cn': (206, 206, 207), 'en': (196, 196, 197), 'jp': (211, 212, 212), 'tw': (196, 196, 197)}, button={'cn': (23, 502, 99, 528), 'en': (41, 505, 81, 525), 'jp': (35, 507, 86, 525), 'tw': (41, 505, 81, 525)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png'}) -PRIVATE_QUARTERS_PAGE_RIGHT = Button(area={'cn': (1240, 329, 1260, 359), 'en': (1240, 329, 1260, 359), 'jp': (1240, 329, 1260, 359), 'tw': (1240, 329, 1260, 359)}, color={'cn': (232, 234, 237), 'en': (232, 234, 237), 'jp': (232, 234, 237), 'tw': (232, 234, 237)}, button={'cn': (1240, 329, 1260, 359), 'en': (1240, 329, 1260, 359), 'jp': (1240, 329, 1260, 359), 'tw': (1240, 329, 1260, 359)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png'}) +PRIVATE_QUARTERS_PAGE_LOCALE_LOFT = Button(area={'cn': (23, 502, 99, 528), 'en': (41, 505, 81, 525), 'jp': (35, 507, 86, 525), 'tw': (27, 506, 95, 526)}, color={'cn': (206, 206, 207), 'en': (196, 196, 197), 'jp': (211, 212, 212), 'tw': (204, 204, 205)}, button={'cn': (23, 502, 99, 528), 'en': (41, 505, 81, 525), 'jp': (35, 507, 86, 525), 'tw': (27, 506, 95, 526)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_LOCALE_LOFT.png'}) +PRIVATE_QUARTERS_PAGE_RIGHT = Button(area={'cn': (1240, 329, 1260, 359), 'en': (1240, 329, 1260, 359), 'jp': (1240, 329, 1260, 359), 'tw': (1240, 344, 1260, 359)}, color={'cn': (232, 234, 237), 'en': (232, 234, 237), 'jp': (232, 234, 237), 'tw': (232, 233, 236)}, button={'cn': (1240, 329, 1260, 359), 'en': (1240, 329, 1260, 359), 'jp': (1240, 329, 1260, 359), 'tw': (1240, 344, 1260, 359)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_PAGE_RIGHT.png'}) PRIVATE_QUARTERS_ROOM_BACK = Button(area={'cn': (28, 40, 43, 60), 'en': (28, 40, 43, 60), 'jp': (28, 40, 43, 60), 'tw': (28, 40, 43, 60)}, color={'cn': (185, 184, 186), 'en': (185, 184, 186), 'jp': (185, 184, 186), 'tw': (185, 184, 186)}, button={'cn': (16, 31, 139, 69), 'en': (27, 30, 147, 70), 'jp': (27, 30, 147, 70), 'tw': (21, 31, 126, 68)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_BACK.png'}) PRIVATE_QUARTERS_ROOM_CHECK = Button(area={'cn': (1218, 651, 1238, 666), 'en': (1218, 651, 1238, 666), 'jp': (1218, 651, 1238, 666), 'tw': (1218, 651, 1238, 666)}, color={'cn': (68, 98, 113), 'en': (68, 98, 113), 'jp': (68, 98, 113), 'tw': (68, 98, 113)}, button={'cn': (1218, 651, 1238, 666), 'en': (1218, 651, 1238, 666), 'jp': (1218, 651, 1238, 666), 'tw': (1218, 651, 1238, 666)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_CHECK.png'}) PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA = Button(area={'cn': (950, 95, 1275, 595), 'en': (950, 95, 1275, 595), 'jp': (950, 95, 1275, 595), 'tw': (950, 95, 1275, 595)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (950, 95, 1275, 595), 'en': (950, 95, 1275, 595), 'jp': (950, 95, 1275, 595), 'tw': (950, 95, 1275, 595)}, file={'cn': './assets/cn/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png', 'en': './assets/en/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png', 'jp': './assets/jp/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png', 'tw': './assets/tw/private_quarters/PRIVATE_QUARTERS_ROOM_SAFE_CLICK_AREA.png'}) diff --git a/module/private_quarters/private_quarters.py b/module/private_quarters/private_quarters.py index 31e15bba0..7dac27365 100644 --- a/module/private_quarters/private_quarters.py +++ b/module/private_quarters/private_quarters.py @@ -149,7 +149,7 @@ class PrivateQuarters(PQInteract, PQShop): if count == 0: logger.info('Daily intimacy count exhausted, exit subtask') return - if server.server in ['tw'] and target_ship not in ['anchorage', 'noshiro', 'sirius']: + if server.server in ['tw'] and target_ship in ['taihou']: logger.info(f'Target ship:{target_ship} not supported for {server.server} server.') return # Able to interact with target, execute diff --git a/module/ui/assets.py b/module/ui/assets.py index d899d9779..9bdf14a57 100644 --- a/module/ui/assets.py +++ b/module/ui/assets.py @@ -70,7 +70,7 @@ MUNITIONS_CHECK = Button(area={'cn': (60, 361, 104, 395), 'en': (60, 361, 104, 3 OS_CHECK = Button(area={'cn': (613, 17, 627, 34), 'en': (613, 17, 627, 34), 'jp': (613, 17, 627, 34), 'tw': (613, 17, 627, 34)}, color={'cn': (58, 117, 146), 'en': (58, 117, 146), 'jp': (58, 117, 146), 'tw': (58, 117, 146)}, button={'cn': (613, 17, 627, 34), 'en': (613, 17, 627, 34), 'jp': (613, 17, 627, 34), 'tw': (613, 17, 627, 34)}, file={'cn': './assets/cn/ui/OS_CHECK.png', 'en': './assets/en/ui/OS_CHECK.png', 'jp': './assets/jp/ui/OS_CHECK.png', 'tw': './assets/tw/ui/OS_CHECK.png'}) PLAYER_CHECK = Button(area={'cn': (28, 668, 139, 688), 'en': (11, 649, 157, 705), 'jp': (26, 668, 139, 689), 'tw': (28, 668, 139, 688)}, color={'cn': (237, 204, 127), 'en': (197, 156, 97), 'jp': (237, 205, 128), 'tw': (237, 204, 127)}, button={'cn': (28, 668, 139, 688), 'en': (11, 649, 157, 705), 'jp': (26, 668, 139, 689), 'tw': (28, 668, 139, 688)}, file={'cn': './assets/cn/ui/PLAYER_CHECK.png', 'en': './assets/en/ui/PLAYER_CHECK.png', 'jp': './assets/jp/ui/PLAYER_CHECK.png', 'tw': './assets/tw/ui/PLAYER_CHECK.png'}) PQ_GOTO_MAIN = Button(area={'cn': (1107, 19, 1143, 51), 'en': (1107, 19, 1143, 51), 'jp': (1107, 19, 1143, 51), 'tw': (1107, 19, 1143, 51)}, color={'cn': (199, 199, 199), 'en': (199, 199, 199), 'jp': (199, 199, 199), 'tw': (199, 199, 199)}, button={'cn': (1107, 19, 1143, 51), 'en': (1107, 19, 1143, 51), 'jp': (1107, 19, 1143, 51), 'tw': (1107, 19, 1143, 51)}, file={'cn': './assets/cn/ui/PQ_GOTO_MAIN.png', 'en': './assets/en/ui/PQ_GOTO_MAIN.png', 'jp': './assets/jp/ui/PQ_GOTO_MAIN.png', 'tw': './assets/tw/ui/PQ_GOTO_MAIN.png'}) -PRIVATE_QUARTERS_CHECK = Button(area={'cn': (123, 18, 218, 47), 'en': (130, 25, 278, 41), 'jp': (128, 21, 216, 45), 'tw': (130, 25, 278, 41)}, color={'cn': (106, 109, 113), 'en': (149, 153, 159), 'jp': (122, 126, 130), 'tw': (149, 153, 159)}, button={'cn': (123, 18, 218, 47), 'en': (130, 25, 278, 41), 'jp': (128, 21, 216, 45), 'tw': (130, 25, 278, 41)}, file={'cn': './assets/cn/ui/PRIVATE_QUARTERS_CHECK.png', 'en': './assets/en/ui/PRIVATE_QUARTERS_CHECK.png', 'jp': './assets/jp/ui/PRIVATE_QUARTERS_CHECK.png', 'tw': './assets/tw/ui/PRIVATE_QUARTERS_CHECK.png'}) +PRIVATE_QUARTERS_CHECK = Button(area={'cn': (123, 18, 218, 47), 'en': (130, 25, 278, 41), 'jp': (128, 21, 216, 45), 'tw': (126, 18, 217, 46)}, color={'cn': (106, 109, 113), 'en': (149, 153, 159), 'jp': (122, 126, 130), 'tw': (111, 113, 118)}, button={'cn': (123, 18, 218, 47), 'en': (130, 25, 278, 41), 'jp': (128, 21, 216, 45), 'tw': (126, 18, 217, 46)}, file={'cn': './assets/cn/ui/PRIVATE_QUARTERS_CHECK.png', 'en': './assets/en/ui/PRIVATE_QUARTERS_CHECK.png', 'jp': './assets/jp/ui/PRIVATE_QUARTERS_CHECK.png', 'tw': './assets/tw/ui/PRIVATE_QUARTERS_CHECK.png'}) RAID_CHECK = Button(area={'cn': (107, 13, 216, 38), 'en': (116, 18, 174, 35), 'jp': (107, 13, 217, 40), 'tw': (111, 9, 228, 42)}, color={'cn': (129, 131, 129), 'en': (133, 118, 117), 'jp': (127, 129, 127), 'tw': (132, 154, 140)}, button={'cn': (107, 13, 216, 38), 'en': (116, 18, 174, 35), 'jp': (107, 13, 217, 40), 'tw': (111, 9, 228, 42)}, file={'cn': './assets/cn/ui/RAID_CHECK.png', 'en': './assets/en/ui/RAID_CHECK.png', 'jp': './assets/jp/ui/RAID_CHECK.png', 'tw': './assets/tw/ui/RAID_CHECK.png'}) RESEARCH_CHECK = Button(area={'cn': (118, 15, 170, 39), 'en': (119, 14, 259, 36), 'jp': (117, 14, 171, 40), 'tw': (117, 13, 172, 40)}, color={'cn': (165, 179, 215), 'en': (118, 133, 174), 'jp': (135, 154, 195), 'tw': (148, 165, 205)}, button={'cn': (118, 15, 170, 39), 'en': (119, 14, 259, 36), 'jp': (117, 14, 171, 40), 'tw': (117, 13, 172, 40)}, file={'cn': './assets/cn/ui/RESEARCH_CHECK.png', 'en': './assets/en/ui/RESEARCH_CHECK.png', 'jp': './assets/jp/ui/RESEARCH_CHECK.png', 'tw': './assets/tw/ui/RESEARCH_CHECK.png'}) RESHMENU_CHECK = Button(area={'cn': (121, 15, 174, 39), 'en': (118, 14, 279, 35), 'jp': (116, 13, 174, 42), 'tw': (121, 14, 175, 40)}, color={'cn': (156, 171, 209), 'en': (100, 113, 152), 'jp': (136, 149, 186), 'tw': (147, 162, 201)}, button={'cn': (121, 15, 174, 39), 'en': (118, 14, 279, 35), 'jp': (116, 13, 174, 42), 'tw': (121, 14, 175, 40)}, file={'cn': './assets/cn/ui/RESHMENU_CHECK.png', 'en': './assets/en/ui/RESHMENU_CHECK.png', 'jp': './assets/jp/ui/RESHMENU_CHECK.png', 'tw': './assets/tw/ui/RESHMENU_CHECK.png'}) diff --git a/module/ui/page.py b/module/ui/page.py index 061fb8edd..8ec495673 100644 --- a/module/ui/page.py +++ b/module/ui/page.py @@ -145,9 +145,14 @@ page_campaign.link(button=CAMPAIGN_GOTO_EVENT, destination=page_sp) # page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition) # page_coalition_menu.link(button=COALITION_ACADEMY_GOTO_CAMPAIGN, destination=page_coalition) # NEONCITY -page_coalition = Page(NEONCITY_COALITION_CHECK) -page_coalition.link(button=NEONCITY_UI_HOME, destination=page_main) -page_coalition.link(button=NEONCITY_UI_BACK, destination=page_campaign) +# page_coalition = Page(NEONCITY_COALITION_CHECK) +# page_coalition.link(button=NEONCITY_UI_HOME, destination=page_main) +# page_coalition.link(button=NEONCITY_UI_BACK, destination=page_campaign) +# page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition) +# DAL +page_coalition = Page(FROSTFALL_COALITION_CHECK) +page_coalition.link(button=GOTO_MAIN, destination=page_main) +page_coalition.link(button=BACK_ARROW, destination=page_campaign) page_campaign_menu.link(button=CAMPAIGN_MENU_GOTO_EVENT, destination=page_coalition) # Operation Siren diff --git a/module/ui/ui.py b/module/ui/ui.py index 7a38821e8..6964901d3 100644 --- a/module/ui/ui.py +++ b/module/ui/ui.py @@ -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 +from module.coalition.assets import NEONCITY_FLEET_PREPARATION, NEONCITY_PREPARATION_EXIT, DAL_DIFFICULTY_EXIT from module.combat.assets import GET_ITEMS_1, GET_ITEMS_2, GET_SHIP from module.event_hospital.assets import HOSIPITAL_CLUE_CHECK, HOSPITAL_BATTLE_EXIT from module.exception import (GameNotRunningError, GamePageUnknownError, @@ -559,9 +559,12 @@ class UI(InfoHandler): # if self.appear_then_click(HOSPITAL_BATTLE_EXIT, offset=(20, 20), interval=2): # return True # Neon city (coalition_20250626) - if self.appear(NEONCITY_FLEET_PREPARATION, offset=(20, 20), interval=3): - logger.info(f'{NEONCITY_FLEET_PREPARATION} -> {NEONCITY_PREPARATION_EXIT}') - self.device.click(NEONCITY_PREPARATION_EXIT) + # if self.appear(NEONCITY_FLEET_PREPARATION, offset=(20, 20), interval=3): + # logger.info(f'{NEONCITY_FLEET_PREPARATION} -> {NEONCITY_PREPARATION_EXIT}') + # self.device.click(NEONCITY_PREPARATION_EXIT) + # return True + # DATE A LANE (coalition_20251120) + if self.appear_then_click(DAL_DIFFICULTY_EXIT, offset=(20, 20), interval=3): return True # Idle page