From 139811457f195a6b92c41a1e86c3e17e34ca1045 Mon Sep 17 00:00:00 2001 From: sui-feng-cb <2518179942@qq.com> Date: Sun, 10 May 2026 05:28:43 +0800 Subject: [PATCH] Add: war_archives_20220818_cn and war_archives_20230803_cn --- .../TEMPLATE_ANTHEM_OF_REMEMBRANCE.png | Bin 0 -> 6412 bytes .../TEMPLATE_OPERATION_CONVERGENCE.png | Bin 0 -> 6644 bytes campaign/Readme.md | 2 + .../war_archives_20220818_cn/campaign_base.py | 35 ++++++ campaign/war_archives_20220818_cn/sp1.py | 77 +++++++++++++ campaign/war_archives_20220818_cn/sp2.py | 76 +++++++++++++ campaign/war_archives_20220818_cn/sp3.py | 81 ++++++++++++++ campaign/war_archives_20220818_cn/sp4.py | 84 ++++++++++++++ .../war_archives_20230803_cn/campaign_base.py | 7 ++ campaign/war_archives_20230803_cn/sp1.py | 104 ++++++++++++++++++ campaign/war_archives_20230803_cn/sp2.py | 80 ++++++++++++++ campaign/war_archives_20230803_cn/sp3.py | 86 +++++++++++++++ config/template.json | 2 +- module/config/argument/args.json | 10 ++ module/config/i18n/en-US.json | 2 + module/config/i18n/ja-JP.json | 2 + module/config/i18n/zh-CN.json | 8 ++ module/config/i18n/zh-TW.json | 2 + module/war_archives/assets.py | 2 + module/war_archives/dictionary.py | 2 + 20 files changed, 661 insertions(+), 1 deletion(-) create mode 100644 assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png create mode 100644 assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png create mode 100644 campaign/war_archives_20220818_cn/campaign_base.py create mode 100644 campaign/war_archives_20220818_cn/sp1.py create mode 100644 campaign/war_archives_20220818_cn/sp2.py create mode 100644 campaign/war_archives_20220818_cn/sp3.py create mode 100644 campaign/war_archives_20220818_cn/sp4.py create mode 100644 campaign/war_archives_20230803_cn/campaign_base.py create mode 100644 campaign/war_archives_20230803_cn/sp1.py create mode 100644 campaign/war_archives_20230803_cn/sp2.py create mode 100644 campaign/war_archives_20230803_cn/sp3.py diff --git a/assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png b/assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png new file mode 100644 index 0000000000000000000000000000000000000000..1a004fcc1de94f25cbd1544bc3b6249e15c52faf GIT binary patch literal 6412 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 SP2 > SP3', + ] diff --git a/campaign/war_archives_20230803_cn/sp1.py b/campaign/war_archives_20230803_cn/sp1.py new file mode 100644 index 000000000..2c92e5099 --- /dev/null +++ b/campaign/war_archives_20230803_cn/sp1.py @@ -0,0 +1,104 @@ +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 + +MAP = CampaignMap('SP1') +MAP.shape = 'I6' +MAP.camera_data = ['F2', 'F4'] +MAP.camera_data_spawn_point = ['D2', 'D4'] +MAP.map_data = """ + ++ ++ ++ -- -- ME -- -- -- + -- -- Me -- Me -- Me ++ ++ + SP -- -- -- -- ME -- MB ++ + -- -- -- MS -- -- __ -- ME + SP -- -- -- ++ ME -- ME -- + -- ++ ME -- Me -- ME ++ -- +""" +MAP.weight_data = """ + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 +""" +MAP.spawn_data = [ + {'battle': 0, 'enemy': 1, 'siren': 1}, + {'battle': 1, 'enemy': 1}, + {'battle': 2, 'enemy': 1}, + {'battle': 3, 'enemy': 1}, + {'battle': 4, 'boss': 1}, +] +A1, B1, C1, D1, E1, F1, G1, H1, I1, \ +A2, B2, C2, D2, E2, F2, G2, H2, I2, \ +A3, B3, C3, D3, E3, F3, G3, H3, I3, \ +A4, B4, C4, D4, E4, F4, G4, H4, I4, \ +A5, B5, C5, D5, E5, F5, G5, H5, I5, \ +A6, B6, C6, D6, E6, F6, G6, H6, I6, \ + = MAP.flatten() + + +class Config: + # ===== Start of generated config ===== + MAP_SIREN_TEMPLATE = ['DD'] + MOVABLE_ENEMY_TURN = (2,) + MAP_HAS_SIREN = True + MAP_HAS_MOVABLE_ENEMY = True + MAP_HAS_MAP_STORY = False + MAP_HAS_FLEET_STEP = True + MAP_HAS_AMBUSH = False + MAP_HAS_MYSTERY = False + # ===== End of generated config ===== + + MAP_HAS_WALK_SPEEDUP = True + MAP_HAS_MOVABLE_NORMAL_ENEMY = True + MOVABLE_NORMAL_ENEMY_TURN = (2,) + MAP_SIREN_MOVE_WAIT = 0.5 + + MAP_WALK_USE_CURRENT_FLEET = True + INTERNAL_LINES_FIND_PEAKS_PARAMETERS = { + 'height': (80, 255 - 24), + 'width': (0.9, 10), + 'prominence': 10, + 'distance': 35, + } + EDGE_LINES_FIND_PEAKS_PARAMETERS = { + 'height': (255 - 24, 255), + 'prominence': 10, + 'distance': 50, + 'wlen': 1000 + } + HOMO_EDGE_COLOR_RANGE = (0, 24) + MAP_ENSURE_EDGE_INSIGHT_CORNER = 'bottom' + MAP_ENEMY_GENRE_DETECTION_SCALING = { + 'DD': 1.111, + 'CL': 1.111, + 'CAred': 1.111, + 'BBred': 1.111, + 'CV': 1.111, + } + + MAP_SWIPE_MULTIPLY = (1.179, 1.201) + MAP_SWIPE_MULTIPLY_MINITOUCH = (1.140, 1.161) + MAP_SWIPE_MULTIPLY_MAATOUCH = (1.107, 1.127) + + +class Campaign(CampaignBase): + MAP = MAP + ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C' + + def battle_0(self): + if self.map_is_clear_mode: + if self.clear_siren(): + return True + if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1): + return True + else: + if self.clear_any_enemy(sort=('cost_2',)): + return True + + return self.battle_default() + + def battle_4(self): + return self.clear_boss() diff --git a/campaign/war_archives_20230803_cn/sp2.py b/campaign/war_archives_20230803_cn/sp2.py new file mode 100644 index 000000000..93656d57c --- /dev/null +++ b/campaign/war_archives_20230803_cn/sp2.py @@ -0,0 +1,80 @@ +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 +from .sp1 import Config as ConfigBase + +MAP = CampaignMap('SP2') +MAP.shape = 'H7' +MAP.camera_data = ['D2', 'D5', 'E2', 'E5'] +MAP.camera_data_spawn_point = ['E5', 'D5'] +MAP.map_data = """ + ++ ME -- -- -- -- ME -- + ME -- -- Me Me -- ++ -- + ME -- Me ++ ++ ME ++ ME + -- __ -- ++ ++ -- Me -- + ME -- MS MB MB MS __ ME + ++ -- -- -- -- -- -- ME + ++ ME -- SP SP -- ME ++ +""" +MAP.weight_data = """ + 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 +""" +MAP.spawn_data = [ + {'battle': 0, 'enemy': 2, 'siren': 2}, + {'battle': 1, 'enemy': 2}, + {'battle': 2, 'enemy': 1}, + {'battle': 3, 'enemy': 1}, + {'battle': 4, 'boss': 1}, +] +A1, B1, C1, D1, E1, F1, G1, H1, \ +A2, B2, C2, D2, E2, F2, G2, H2, \ +A3, B3, C3, D3, E3, F3, G3, H3, \ +A4, B4, C4, D4, E4, F4, G4, H4, \ +A5, B5, C5, D5, E5, F5, G5, H5, \ +A6, B6, C6, D6, E6, F6, G6, H6, \ +A7, B7, C7, D7, E7, F7, G7, H7, \ + = MAP.flatten() + + +class Config(ConfigBase): + # ===== Start of generated config ===== + MAP_SIREN_TEMPLATE = ['CL', 'CAred'] + MOVABLE_ENEMY_TURN = (2,) + MAP_HAS_SIREN = True + MAP_HAS_MOVABLE_ENEMY = True + MAP_HAS_MAP_STORY = True + MAP_HAS_FLEET_STEP = True + MAP_HAS_AMBUSH = False + MAP_HAS_MYSTERY = False + # ===== End of generated config ===== + + MAP_SWIPE_MULTIPLY = (1.133, 1.155) + MAP_SWIPE_MULTIPLY_MINITOUCH = (1.096, 1.116) + MAP_SWIPE_MULTIPLY_MAATOUCH = (1.064, 1.083) + + +class Campaign(CampaignBase): + MAP = MAP + ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C' + + def battle_0(self): + if self.map_is_clear_mode: + if self.clear_siren(): + return True + if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1): + return True + else: + if self.clear_any_enemy(sort=('cost_2',)): + return True + + return self.battle_default() + + def battle_4(self): + return self.clear_boss() diff --git a/campaign/war_archives_20230803_cn/sp3.py b/campaign/war_archives_20230803_cn/sp3.py new file mode 100644 index 000000000..477c67f57 --- /dev/null +++ b/campaign/war_archives_20230803_cn/sp3.py @@ -0,0 +1,86 @@ +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 +from .sp1 import Config as ConfigBase + +MAP = CampaignMap('SP3') +MAP.shape = 'I8' +MAP.camera_data = ['D2', 'D4', 'D6', 'F2', 'F4', 'F6'] +MAP.camera_data_spawn_point = ['F2', 'D2'] +MAP.map_data = """ + -- -- ME ++ ++ ++ ME -- -- + ++ Me -- -- MB -- -- Me ++ + ME -- -- SP -- SP -- -- ME + -- MS -- -- __ -- -- MS -- + ME -- ++ -- ++ -- ++ -- ME + -- Me ++ MS -- MS ++ Me -- + ME -- Me -- -- -- Me -- ME + ++ ME -- ++ ++ ++ -- ME ++ +""" +MAP.weight_data = """ + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 + 50 50 50 50 50 50 50 50 50 +""" +MAP.spawn_data = [ + {'battle': 0, 'enemy': 2, 'siren': 2}, + {'battle': 1, 'enemy': 2, 'siren': 1}, + {'battle': 2, 'enemy': 2}, + {'battle': 3, 'enemy': 1}, + {'battle': 4, 'enemy': 1}, + {'battle': 5, 'boss': 1}, +] +A1, B1, C1, D1, E1, F1, G1, H1, I1, \ +A2, B2, C2, D2, E2, F2, G2, H2, I2, \ +A3, B3, C3, D3, E3, F3, G3, H3, I3, \ +A4, B4, C4, D4, E4, F4, G4, H4, I4, \ +A5, B5, C5, D5, E5, F5, G5, H5, I5, \ +A6, B6, C6, D6, E6, F6, G6, H6, I6, \ +A7, B7, C7, D7, E7, F7, G7, H7, I7, \ +A8, B8, C8, D8, E8, F8, G8, H8, I8, \ + = MAP.flatten() + + +class Config(ConfigBase): + # ===== Start of generated config ===== + MAP_SIREN_TEMPLATE = ['SirenBoss15'] + MOVABLE_ENEMY_TURN = (2,) + MAP_HAS_SIREN = True + MAP_HAS_MOVABLE_ENEMY = True + MAP_HAS_MAP_STORY = False + MAP_HAS_FLEET_STEP = True + MAP_HAS_AMBUSH = False + MAP_HAS_MYSTERY = False + # ===== End of generated config ===== + + HOMO_EDGE_HOUGHLINES_THRESHOLD = 210 + + MAP_SWIPE_MULTIPLY = (1.205, 1.227) + MAP_SWIPE_MULTIPLY_MINITOUCH = (1.165, 1.187) + MAP_SWIPE_MULTIPLY_MAATOUCH = (1.131, 1.151) + + +class Campaign(CampaignBase): + MAP = MAP + ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C' + + def battle_0(self): + if self.map_is_clear_mode: + if self.clear_siren(): + return True + if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=1): + return True + else: + if self.clear_any_enemy(sort=('cost_2',)): + return True + + return self.battle_default() + + def battle_5(self): + return self.fleet_boss.clear_boss() diff --git a/config/template.json b/config/template.json index 8fd8a1558..aef804051 100644 --- a/config/template.json +++ b/config/template.json @@ -669,7 +669,7 @@ }, "Campaign": { "Name": "D3", - "Event": "war_archives_20230223_cn", + "Event": "war_archives_20230803_cn", "Mode": "normal", "UseClearMode": true, "UseFleetLock": true, diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 63ad123fa..ceaf1c111 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -3494,12 +3494,16 @@ "war_archives_20220428_cn", "war_archives_20220526_cn", "war_archives_20220728_cn", + "war_archives_20220818_cn", "war_archives_20220915_cn", "war_archives_20221222_cn", "war_archives_20230223_cn", + "war_archives_20230803_cn", "war_archives_20231026_cn" ], "option_cn": [ + "war_archives_20230803_cn", + "war_archives_20220818_cn", "war_archives_20230223_cn", "war_archives_20221222_cn", "war_archives_20220915_cn", @@ -3546,6 +3550,8 @@ "war_archives_20181020_en" ], "option_en": [ + "war_archives_20230803_cn", + "war_archives_20220818_cn", "war_archives_20230223_cn", "war_archives_20221222_cn", "war_archives_20220915_cn", @@ -3592,6 +3598,8 @@ "war_archives_20181020_en" ], "option_jp": [ + "war_archives_20230803_cn", + "war_archives_20220818_cn", "war_archives_20230223_cn", "war_archives_20221222_cn", "war_archives_20220915_cn", @@ -3638,6 +3646,8 @@ "war_archives_20181020_en" ], "option_tw": [ + "war_archives_20230803_cn", + "war_archives_20220818_cn", "war_archives_20230223_cn", "war_archives_20221222_cn", "war_archives_20220915_cn", diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index af6eb61c3..690eb97f5 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -821,9 +821,11 @@ "war_archives_20220428_cn": "archives Rondo at Rainbows End", "war_archives_20220526_cn": "archives Pledge of the Radiant Court", "war_archives_20220728_cn": "archives Aquilifers Ballade", + "war_archives_20220818_cn": "archives Operation Convergence", "war_archives_20220915_cn": "archives Violet Tempest Blooming Lycoris", "war_archives_20221222_cn": "archives Parallel Superimposition", "war_archives_20230223_cn": "archives Revelations of Dust", + "war_archives_20230803_cn": "archives Anthem of Remembrance", "war_archives_20231026_cn": "archives Tempesta and the Fountain of Youth" }, "Mode": { diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index c7b68226d..b98863229 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -821,9 +821,11 @@ "war_archives_20220428_cn": "檔案 吟ずる瑠璃の楽章", "war_archives_20220526_cn": "檔案 诚閃の剣 搖光の城", "war_archives_20220728_cn": "檔案 鋼鷲の冒険譚", + "war_archives_20220818_cn": "檔案 結像点作戦", "war_archives_20220915_cn": "檔案 赫の涙月 菫の暁風", "war_archives_20221222_cn": "檔案 積重なる事象の幻界", "war_archives_20230223_cn": "檔案 黙示の遺構", + "war_archives_20230803_cn": "檔案 燃ゆる聖都の回想曲", "war_archives_20231026_cn": "檔案 テンペスタと若返りの泉" }, "Mode": { diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index c48b283dd..c2292a364 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -551,6 +551,12 @@ "default": "默认 (Cloudflare)", "cn_gz_reverse_proxy": "国内反向代理 (广州)" }, + "DailyRecord": { + "name": "每日挑战截图", + "help": "", + "do_not": "无操作", + "save": "保存" + }, "ResearchRecord": { "name": "科研截图", "help": "", @@ -821,9 +827,11 @@ "war_archives_20220428_cn": "档案 虹彩的终幕曲", "war_archives_20220526_cn": "档案 泠誓光庭", "war_archives_20220728_cn": "档案 雄鹰的叙事歌", + "war_archives_20220818_cn": "档案 远汇点作战", "war_archives_20220915_cn": "档案 紫绛槿岚", "war_archives_20221222_cn": "档案 定向折叠", "war_archives_20230223_cn": "档案 湮烬尘墟", + "war_archives_20230803_cn": "档案 奏响鸢尾之歌", "war_archives_20231026_cn": "档案 飓风与青春之泉" }, "Mode": { diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index 761ad94ee..7460cd98a 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -821,9 +821,11 @@ "war_archives_20220428_cn": "檔案 虹彩的終幕曲", "war_archives_20220526_cn": "檔案 泠誓光庭", "war_archives_20220728_cn": "檔案 雄鷹的敘事歌", + "war_archives_20220818_cn": "檔案 遠匯點作戰", "war_archives_20220915_cn": "檔案 紫絳槿嵐", "war_archives_20221222_cn": "檔案 定向折疊", "war_archives_20230223_cn": "檔案 湮燼塵墟", + "war_archives_20230803_cn": "檔案 奏響鳶尾之歌", "war_archives_20231026_cn": "檔案 飓風與青春之泉" }, "Mode": { diff --git a/module/war_archives/assets.py b/module/war_archives/assets.py index b95de8d8c..b1c41af68 100644 --- a/module/war_archives/assets.py +++ b/module/war_archives/assets.py @@ -6,6 +6,7 @@ from module.base.template import Template OCR_DATA_KEY_CAMPAIGN = Button(area={'cn': (1188, 107, 1272, 131), 'en': (1188, 107, 1272, 131), 'jp': (1188, 107, 1272, 131), 'tw': (1188, 107, 1272, 131)}, color={'cn': (104, 101, 107), 'en': (104, 101, 107), 'jp': (104, 101, 107), 'tw': (104, 101, 107)}, button={'cn': (1188, 107, 1272, 131), 'en': (1188, 107, 1272, 131), 'jp': (1188, 107, 1272, 131), 'tw': (1188, 107, 1272, 131)}, file={'cn': './assets/cn/war_archives/OCR_DATA_KEY_CAMPAIGN.png', 'en': './assets/en/war_archives/OCR_DATA_KEY_CAMPAIGN.png', 'jp': './assets/jp/war_archives/OCR_DATA_KEY_CAMPAIGN.png', 'tw': './assets/tw/war_archives/OCR_DATA_KEY_CAMPAIGN.png'}) TEMPLATE_ABYSSAL_REFRAIN = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png', 'en': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png', 'jp': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png', 'tw': './assets/cn/war_archives/TEMPLATE_ABYSSAL_REFRAIN.png'}) +TEMPLATE_ANTHEM_OF_REMEMBRANCE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png', 'en': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png', 'jp': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png', 'tw': './assets/cn/war_archives/TEMPLATE_ANTHEM_OF_REMEMBRANCE.png'}) TEMPLATE_AQUILIFERS_BALLADE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png', 'en': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png', 'jp': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png', 'tw': './assets/cn/war_archives/TEMPLATE_AQUILIFERS_BALLADE.png'}) TEMPLATE_ASHEN_SIMULACRUM = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png', 'en': './assets/en/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png', 'jp': './assets/cn/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png', 'tw': './assets/cn/war_archives/TEMPLATE_ASHEN_SIMULACRUM.png'}) TEMPLATE_AURORA_NOCTIS = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_AURORA_NOCTIS.png', 'en': './assets/en/war_archives/TEMPLATE_AURORA_NOCTIS.png', 'jp': './assets/cn/war_archives/TEMPLATE_AURORA_NOCTIS.png', 'tw': './assets/cn/war_archives/TEMPLATE_AURORA_NOCTIS.png'}) @@ -27,6 +28,7 @@ TEMPLATE_MICROLAYER_MEDLEY = Template(file={'cn': './assets/cn/war_archives/TEMP TEMPLATE_MIRROR_INVOLUTION = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png', 'en': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png', 'jp': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png', 'tw': './assets/cn/war_archives/TEMPLATE_MIRROR_INVOLUTION.png'}) TEMPLATE_MOONLIT_OVERTURE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png', 'en': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png', 'jp': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png', 'tw': './assets/cn/war_archives/TEMPLATE_MOONLIT_OVERTURE.png'}) TEMPLATE_NORTHERN_OVERTURE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'en': './assets/en/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'jp': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png', 'tw': './assets/cn/war_archives/TEMPLATE_NORTHERN_OVERTURE.png'}) +TEMPLATE_OPERATION_CONVERGENCE = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png', 'en': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png', 'jp': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png', 'tw': './assets/cn/war_archives/TEMPLATE_OPERATION_CONVERGENCE.png'}) TEMPLATE_PARALLEL_SUPERIMPOSITION = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png', 'en': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png', 'jp': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png', 'tw': './assets/cn/war_archives/TEMPLATE_PARALLEL_SUPERIMPOSITION.png'}) TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png', 'en': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png', 'jp': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png', 'tw': './assets/cn/war_archives/TEMPLATE_PLEDGE_OF_THE_RADIANT_COURT.png'}) TEMPLATE_PRELUDE_UNDER_THE_MOON = Template(file={'cn': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png', 'en': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png', 'jp': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png', 'tw': './assets/cn/war_archives/TEMPLATE_PRELUDE_UNDER_THE_MOON.png'}) diff --git a/module/war_archives/dictionary.py b/module/war_archives/dictionary.py index d7cce3888..6c965187e 100644 --- a/module/war_archives/dictionary.py +++ b/module/war_archives/dictionary.py @@ -45,4 +45,6 @@ dic_archives_template = { 'war_archives_20220915_cn': TEMPLATE_VIOLET_TEMPEST_BLOOMING_LYCORIS, 'war_archives_20221222_cn': TEMPLATE_PARALLEL_SUPERIMPOSITION, 'war_archives_20230223_cn': TEMPLATE_REVELATIONS_OF_DUST, + 'war_archives_20220818_cn': TEMPLATE_OPERATION_CONVERGENCE, + 'war_archives_20230803_cn': TEMPLATE_ANTHEM_OF_REMEMBRANCE, }