From 8b41bbc9db590c63c3b27975ef18ab0644e3c573 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Thu, 25 Jun 2026 22:08:50 +0800 Subject: [PATCH] Add: Chapter T --- .../TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif | Bin 0 -> 5217 bytes .../TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif | Bin 0 -> 5217 bytes .../TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif | Bin 0 -> 5217 bytes .../TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif | Bin 0 -> 5217 bytes campaign/event_20260625_cn/t1.py | 78 +++++++++++++++++ campaign/event_20260625_cn/t2.py | 76 +++++++++++++++++ campaign/event_20260625_cn/t3.py | 80 ++++++++++++++++++ module/campaign/run.py | 2 + module/template/assets.py | 1 + 9 files changed, 237 insertions(+) create mode 100644 assets/cn/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif create mode 100644 assets/en/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif create mode 100644 assets/jp/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif create mode 100644 assets/tw/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif create mode 100644 campaign/event_20260625_cn/t1.py create mode 100644 campaign/event_20260625_cn/t2.py create mode 100644 campaign/event_20260625_cn/t3.py diff --git a/assets/cn/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif b/assets/cn/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif new file mode 100644 index 0000000000000000000000000000000000000000..80cbceb5ca9c090358cd515a2e667a4f7387a083 GIT binary patch literal 5217 zcmeI0Yfw{H0>|%7E_smGO$ZVmYOba>%cO3C+6m}%ZxUX0kh$8&V3%ryc9*tpC$#Pi z>+m7T4df~)v8Y5uy&;G}P=cbOqTakTXw;}Ehz|l~x?MZF1KW0Ib$7Zhg=iJ}?{-@yWd~Nmy2_ORO0C4Bdo!hr>4-O9Ax^?U3&6_uF+=xb_*RNl{ zcJ12Lt5+kD$dxNsE?>SpFfefG(xrCgV0NyiI_ikOWHj3N6tTtwO!>(6xA`WmBmj^`)DM0 z?FK!>&RR}lh`VN>F*&o)Ov!Z&LAu&A7-fW3arrRuJ5(P?5Gu7E!i7A-6UvtmB|SGo z+tM_8xMnh@v+@@e52|~{@(E#@3M0*59)!e6Ya`wr`pU~K&ey86njN@Zl)l0Qznz2I zlT{^73_($l$r8#7y=EQG5-%;vBTatkWbeh)nn`OxL$ZFQ14jHf zTa!;vQ@(|@O-T6~0sw<{sdim`%mf-DiBj4FVyJ;7dj0)~ajKC~~bf=Im* z5~S)tE0YEH4jX$7H4=3e^m}vcJ4+(6vC0E4WDC<3i!kRTX&K@x3jbMwl-arBkU<|{DFuKD91iENhD-buWpQD*^4#W-`8gbj#bUG*Jb3UR4uokMOc#qd6XJa$ z4uoJZ_#%BGUM8lSMBEbE+S>jXQE)gM4Gj&`G}yXzD@}vVn>W7_7k74(KWhS<$G|6H z0x380t;~-j-qm=1ASLTlX-gIC@}=@BCo#loD-g?dHehNDXA4(gec>q!enps(RS|Z8 zcuk_z=s{fpsHkblCuN?sE;_0=%tQ{xiBaEjr?qYNKw7dFW%v@SO95KodJ zlbhM~lDX<42kgrE@sU`GIbirXG@!e|zgfZm`^NBsSeW_D@L$O=Qx$&J3o<*|E0h4| zAHZkBUY()VhjWtt@^{1?;-xJ9pw|ex%R(t{RQG!--8fq`mo5or*F-|1^wTcmQ~+X& z=D%gjIBikXN){NQF{Iqah8Glk5yo_W`lHy>w>n^mHm53c&6BZj3q;69igOrb+E~Jj z73QhR;1=;48_iL#g;BzWQHt=5`GxXdZ6b}GE=CPkSlDOu1@aQ*%F?o762Z&)sdW3e zQN|L^nWHMDOfKvCL|Jjsy2p&#;DGzRF0;#B&>(vgfMB%|_%owVpeTV|ItC*_rqCKG i%JOx>ruj4#bj-13rirMlocu9u*>9qxrrd}E%l`#qscs7Z literal 0 HcmV?d00001 diff --git a/assets/en/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif b/assets/en/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif new file mode 100644 index 0000000000000000000000000000000000000000..80cbceb5ca9c090358cd515a2e667a4f7387a083 GIT binary patch literal 5217 zcmeI0Yfw{H0>|%7E_smGO$ZVmYOba>%cO3C+6m}%ZxUX0kh$8&V3%ryc9*tpC$#Pi z>+m7T4df~)v8Y5uy&;G}P=cbOqTakTXw;}Ehz|l~x?MZF1KW0Ib$7Zhg=iJ}?{-@yWd~Nmy2_ORO0C4Bdo!hr>4-O9Ax^?U3&6_uF+=xb_*RNl{ zcJ12Lt5+kD$dxNsE?>SpFfefG(xrCgV0NyiI_ikOWHj3N6tTtwO!>(6xA`WmBmj^`)DM0 z?FK!>&RR}lh`VN>F*&o)Ov!Z&LAu&A7-fW3arrRuJ5(P?5Gu7E!i7A-6UvtmB|SGo z+tM_8xMnh@v+@@e52|~{@(E#@3M0*59)!e6Ya`wr`pU~K&ey86njN@Zl)l0Qznz2I zlT{^73_($l$r8#7y=EQG5-%;vBTatkWbeh)nn`OxL$ZFQ14jHf zTa!;vQ@(|@O-T6~0sw<{sdim`%mf-DiBj4FVyJ;7dj0)~ajKC~~bf=Im* z5~S)tE0YEH4jX$7H4=3e^m}vcJ4+(6vC0E4WDC<3i!kRTX&K@x3jbMwl-arBkU<|{DFuKD91iENhD-buWpQD*^4#W-`8gbj#bUG*Jb3UR4uokMOc#qd6XJa$ z4uoJZ_#%BGUM8lSMBEbE+S>jXQE)gM4Gj&`G}yXzD@}vVn>W7_7k74(KWhS<$G|6H z0x380t;~-j-qm=1ASLTlX-gIC@}=@BCo#loD-g?dHehNDXA4(gec>q!enps(RS|Z8 zcuk_z=s{fpsHkblCuN?sE;_0=%tQ{xiBaEjr?qYNKw7dFW%v@SO95KodJ zlbhM~lDX<42kgrE@sU`GIbirXG@!e|zgfZm`^NBsSeW_D@L$O=Qx$&J3o<*|E0h4| zAHZkBUY()VhjWtt@^{1?;-xJ9pw|ex%R(t{RQG!--8fq`mo5or*F-|1^wTcmQ~+X& z=D%gjIBikXN){NQF{Iqah8Glk5yo_W`lHy>w>n^mHm53c&6BZj3q;69igOrb+E~Jj z73QhR;1=;48_iL#g;BzWQHt=5`GxXdZ6b}GE=CPkSlDOu1@aQ*%F?o762Z&)sdW3e zQN|L^nWHMDOfKvCL|Jjsy2p&#;DGzRF0;#B&>(vgfMB%|_%owVpeTV|ItC*_rqCKG i%JOx>ruj4#bj-13rirMlocu9u*>9qxrrd}E%l`#qscs7Z literal 0 HcmV?d00001 diff --git a/assets/jp/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif b/assets/jp/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif new file mode 100644 index 0000000000000000000000000000000000000000..80cbceb5ca9c090358cd515a2e667a4f7387a083 GIT binary patch literal 5217 zcmeI0Yfw{H0>|%7E_smGO$ZVmYOba>%cO3C+6m}%ZxUX0kh$8&V3%ryc9*tpC$#Pi z>+m7T4df~)v8Y5uy&;G}P=cbOqTakTXw;}Ehz|l~x?MZF1KW0Ib$7Zhg=iJ}?{-@yWd~Nmy2_ORO0C4Bdo!hr>4-O9Ax^?U3&6_uF+=xb_*RNl{ zcJ12Lt5+kD$dxNsE?>SpFfefG(xrCgV0NyiI_ikOWHj3N6tTtwO!>(6xA`WmBmj^`)DM0 z?FK!>&RR}lh`VN>F*&o)Ov!Z&LAu&A7-fW3arrRuJ5(P?5Gu7E!i7A-6UvtmB|SGo z+tM_8xMnh@v+@@e52|~{@(E#@3M0*59)!e6Ya`wr`pU~K&ey86njN@Zl)l0Qznz2I zlT{^73_($l$r8#7y=EQG5-%;vBTatkWbeh)nn`OxL$ZFQ14jHf zTa!;vQ@(|@O-T6~0sw<{sdim`%mf-DiBj4FVyJ;7dj0)~ajKC~~bf=Im* z5~S)tE0YEH4jX$7H4=3e^m}vcJ4+(6vC0E4WDC<3i!kRTX&K@x3jbMwl-arBkU<|{DFuKD91iENhD-buWpQD*^4#W-`8gbj#bUG*Jb3UR4uokMOc#qd6XJa$ z4uoJZ_#%BGUM8lSMBEbE+S>jXQE)gM4Gj&`G}yXzD@}vVn>W7_7k74(KWhS<$G|6H z0x380t;~-j-qm=1ASLTlX-gIC@}=@BCo#loD-g?dHehNDXA4(gec>q!enps(RS|Z8 zcuk_z=s{fpsHkblCuN?sE;_0=%tQ{xiBaEjr?qYNKw7dFW%v@SO95KodJ zlbhM~lDX<42kgrE@sU`GIbirXG@!e|zgfZm`^NBsSeW_D@L$O=Qx$&J3o<*|E0h4| zAHZkBUY()VhjWtt@^{1?;-xJ9pw|ex%R(t{RQG!--8fq`mo5or*F-|1^wTcmQ~+X& z=D%gjIBikXN){NQF{Iqah8Glk5yo_W`lHy>w>n^mHm53c&6BZj3q;69igOrb+E~Jj z73QhR;1=;48_iL#g;BzWQHt=5`GxXdZ6b}GE=CPkSlDOu1@aQ*%F?o762Z&)sdW3e zQN|L^nWHMDOfKvCL|Jjsy2p&#;DGzRF0;#B&>(vgfMB%|_%owVpeTV|ItC*_rqCKG i%JOx>ruj4#bj-13rirMlocu9u*>9qxrrd}E%l`#qscs7Z literal 0 HcmV?d00001 diff --git a/assets/tw/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif b/assets/tw/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif new file mode 100644 index 0000000000000000000000000000000000000000..80cbceb5ca9c090358cd515a2e667a4f7387a083 GIT binary patch literal 5217 zcmeI0Yfw{H0>|%7E_smGO$ZVmYOba>%cO3C+6m}%ZxUX0kh$8&V3%ryc9*tpC$#Pi z>+m7T4df~)v8Y5uy&;G}P=cbOqTakTXw;}Ehz|l~x?MZF1KW0Ib$7Zhg=iJ}?{-@yWd~Nmy2_ORO0C4Bdo!hr>4-O9Ax^?U3&6_uF+=xb_*RNl{ zcJ12Lt5+kD$dxNsE?>SpFfefG(xrCgV0NyiI_ikOWHj3N6tTtwO!>(6xA`WmBmj^`)DM0 z?FK!>&RR}lh`VN>F*&o)Ov!Z&LAu&A7-fW3arrRuJ5(P?5Gu7E!i7A-6UvtmB|SGo z+tM_8xMnh@v+@@e52|~{@(E#@3M0*59)!e6Ya`wr`pU~K&ey86njN@Zl)l0Qznz2I zlT{^73_($l$r8#7y=EQG5-%;vBTatkWbeh)nn`OxL$ZFQ14jHf zTa!;vQ@(|@O-T6~0sw<{sdim`%mf-DiBj4FVyJ;7dj0)~ajKC~~bf=Im* z5~S)tE0YEH4jX$7H4=3e^m}vcJ4+(6vC0E4WDC<3i!kRTX&K@x3jbMwl-arBkU<|{DFuKD91iENhD-buWpQD*^4#W-`8gbj#bUG*Jb3UR4uokMOc#qd6XJa$ z4uoJZ_#%BGUM8lSMBEbE+S>jXQE)gM4Gj&`G}yXzD@}vVn>W7_7k74(KWhS<$G|6H z0x380t;~-j-qm=1ASLTlX-gIC@}=@BCo#loD-g?dHehNDXA4(gec>q!enps(RS|Z8 zcuk_z=s{fpsHkblCuN?sE;_0=%tQ{xiBaEjr?qYNKw7dFW%v@SO95KodJ zlbhM~lDX<42kgrE@sU`GIbirXG@!e|zgfZm`^NBsSeW_D@L$O=Qx$&J3o<*|E0h4| zAHZkBUY()VhjWtt@^{1?;-xJ9pw|ex%R(t{RQG!--8fq`mo5or*F-|1^wTcmQ~+X& z=D%gjIBikXN){NQF{Iqah8Glk5yo_W`lHy>w>n^mHm53c&6BZj3q;69igOrb+E~Jj z73QhR;1=;48_iL#g;BzWQHt=5`GxXdZ6b}GE=CPkSlDOu1@aQ*%F?o762Z&)sdW3e zQN|L^nWHMDOfKvCL|Jjsy2p&#;DGzRF0;#B&>(vgfMB%|_%owVpeTV|ItC*_rqCKG i%JOx>ruj4#bj-13rirMlocu9u*>9qxrrd}E%l`#qscs7Z literal 0 HcmV?d00001 diff --git a/campaign/event_20260625_cn/t1.py b/campaign/event_20260625_cn/t1.py new file mode 100644 index 000000000..07f9cd3a6 --- /dev/null +++ b/campaign/event_20260625_cn/t1.py @@ -0,0 +1,78 @@ +from module.campaign.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('T1') +MAP.shape = 'I7' +MAP.camera_data = ['F2', 'F5'] +MAP.camera_data_spawn_point = ['D5'] +MAP.map_data = """ + -- -- ME -- ME -- -- ++ MB + -- -- ++ ME -- ME ++ ME -- + SP -- -- MS -- -- Me -- -- + -- -- __ -- ++ -- -- -- ME + SP -- -- MS ++ 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 +""" +MAP.spawn_data = [ + {'battle': 0, 'enemy': 2, 'siren': 1}, + {'battle': 1, 'enemy': 2}, + {'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, \ +A7, B7, C7, D7, E7, F7, G7, H7, I7, \ + = MAP.flatten() + + +class Config: + # ===== Start of generated config ===== + MAP_SIREN_TEMPLATE = ['MeowfficerBust_Hobbies'] + 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_CHAPTER_SWITCH_20241219_SP = True + STAGE_ENTRANCE = ['half', '20240725'] + MAP_HAS_MODE_SWITCH = True + MAP_SWIPE_MULTIPLY = (1.144, 1.165) + MAP_SWIPE_MULTIPLY_MINITOUCH = (1.106, 1.126) + MAP_SWIPE_MULTIPLY_MAATOUCH = (1.074, 1.093) + + +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.clear_siren(): + return True + if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0): + return True + + return self.battle_default() + + def battle_4(self): + return self.clear_boss() diff --git a/campaign/event_20260625_cn/t2.py b/campaign/event_20260625_cn/t2.py new file mode 100644 index 000000000..76d9a348d --- /dev/null +++ b/campaign/event_20260625_cn/t2.py @@ -0,0 +1,76 @@ +from module.campaign.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 .t1 import Config as ConfigBase + +MAP = CampaignMap('T2') +MAP.shape = 'I7' +MAP.camera_data = ['D2', 'D5', 'F5'] +MAP.camera_data_spawn_point = ['F2'] +MAP.map_data = """ + ME -- ME ++ ME -- -- ++ ++ + -- -- -- -- -- -- SP -- ++ + -- Me ++ ++ ++ -- -- SP -- + -- -- -- Me -- MS -- -- -- + ME -- ME ++ -- MS MS ++ Me + -- MB -- ++ __ -- -- ++ -- + 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 +""" +MAP.spawn_data = [ + {'battle': 0, 'enemy': 3, 'siren': 1}, + {'battle': 1, 'enemy': 2}, + {'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, \ +A7, B7, C7, D7, E7, F7, G7, H7, I7, \ + = MAP.flatten() + + +class Config(ConfigBase): + # ===== Start of generated config ===== + MAP_SIREN_TEMPLATE = ['MeowfficerBust_Hobbies'] + 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_SWIPE_MULTIPLY = (1.224, 1.247) + MAP_SWIPE_MULTIPLY_MINITOUCH = (1.184, 1.206) + MAP_SWIPE_MULTIPLY_MAATOUCH = (1.149, 1.170) + + +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.clear_siren(): + return True + if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0): + return True + + return self.battle_default() + + def battle_4(self): + return self.clear_boss() diff --git a/campaign/event_20260625_cn/t3.py b/campaign/event_20260625_cn/t3.py new file mode 100644 index 000000000..57738dd2a --- /dev/null +++ b/campaign/event_20260625_cn/t3.py @@ -0,0 +1,80 @@ +from module.campaign.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 .t1 import Config as ConfigBase + +MAP = CampaignMap('T3') +MAP.shape = 'I8' +MAP.camera_data = ['D2', 'D5', 'F2', 'F5'] +MAP.camera_data_spawn_point = ['F5'] +MAP.map_data = """ + ++ ++ ++ ++ MB ++ ++ ++ ++ + ++ -- Me Me -- Me Me -- ++ + -- ME -- -- __ -- -- ME -- + ME -- -- SP ++ SP -- -- ME + -- ME -- -- -- -- -- ME -- + ++ ++ ME -- MS -- ME ++ ++ + ++ ++ -- MS -- MS -- ++ ++ + -- -- ++ ++ ++ ++ ++ -- -- +""" +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': 3, 'siren': 2}, + {'battle': 1, 'enemy': 2}, + {'battle': 2, 'enemy': 1}, + {'battle': 3, 'enemy': 1}, + {'battle': 4}, + {'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 = ['MeowfficerBust_Hobbies'] + 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_SWIPE_MULTIPLY = (1.115, 1.136) + MAP_SWIPE_MULTIPLY_MINITOUCH = (1.078, 1.098) + MAP_SWIPE_MULTIPLY_MAATOUCH = (1.047, 1.065) + + +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.clear_siren(): + return True + if self.clear_filter_enemy(self.ENEMY_FILTER, preserve=0): + return True + + return self.battle_default() + + def battle_5(self): + return self.fleet_boss.clear_boss() diff --git a/module/campaign/run.py b/module/campaign/run.py index f244c36ce..15d121687 100644 --- a/module/campaign/run.py +++ b/module/campaign/run.py @@ -220,6 +220,7 @@ class CampaignRun(CampaignEvent): 'event_20250814_cn', 'event_20251023_cn', 'event_20260326_cn', + 'event_20260625_cn', 'war_archives_20230525_cn', 'war_archives_20231026_cn', 'war_archives_20240725_cn', @@ -258,6 +259,7 @@ class CampaignRun(CampaignEvent): 'event_20250814_cn', 'event_20251023_cn', 'event_20260326_cn', + 'event_20260625_cn', 'war_archives_20230525_cn', 'war_archives_20231026_cn', 'war_archives_20240725_cn', diff --git a/module/template/assets.py b/module/template/assets.py index cefe72137..c24692c7e 100644 --- a/module/template/assets.py +++ b/module/template/assets.py @@ -176,6 +176,7 @@ TEMPLATE_SIREN_Mainz = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN TEMPLATE_SIREN_MarieRoseDOA = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_MarieRoseDOA.gif', 'en': './assets/en/template/TEMPLATE_SIREN_MarieRoseDOA.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_MarieRoseDOA.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_MarieRoseDOA.gif'}) TEMPLATE_SIREN_MaryCeleste = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_MaryCeleste.gif', 'en': './assets/en/template/TEMPLATE_SIREN_MaryCeleste.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_MaryCeleste.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_MaryCeleste.gif'}) TEMPLATE_SIREN_Maya = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Maya.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Maya.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Maya.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Maya.gif'}) +TEMPLATE_SIREN_MeowfficerBust_Hobbies = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif', 'en': './assets/en/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_MeowfficerBust_Hobbies.gif'}) TEMPLATE_SIREN_Mikasa = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Mikasa.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Mikasa.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Mikasa.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Mikasa.gif'}) TEMPLATE_SIREN_MisakiDOA = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_MisakiDOA.gif', 'en': './assets/en/template/TEMPLATE_SIREN_MisakiDOA.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_MisakiDOA.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_MisakiDOA.gif'}) TEMPLATE_SIREN_Miyuki = Template(file={'cn': './assets/cn/template/TEMPLATE_SIREN_Miyuki.gif', 'en': './assets/en/template/TEMPLATE_SIREN_Miyuki.gif', 'jp': './assets/jp/template/TEMPLATE_SIREN_Miyuki.gif', 'tw': './assets/tw/template/TEMPLATE_SIREN_Miyuki.gif'})