@@ -77,6 +77,9 @@ def campaign_ensure_mode(self, mode='normal'):
7777 Returns:
7878 bool: If mode changed.
7979 """
80+ if mode == 'hard' :
81+ self .config .override (Campaign_Mode = 'hard' )
82+
8083 switch_2 = MODE_SWITCH_2 .get (main = self )
8184
8285 if switch_2 == 'unknown' :
@@ -100,6 +103,29 @@ def campaign_ensure_mode(self, mode='normal'):
100103 else :
101104 logger .warning (f'Unknown campaign mode: { mode } ' )
102105
106+ def campaign_get_mode_names (self , name ):
107+ """
108+ Get stage names in both 'normal' and 'hard'
109+ t1 -> [t1, ht1]
110+ ht1 -> [t1, ht1]
111+ a1 -> [a1, c1]
112+
113+ Args:
114+ name (str):
115+
116+ Returns:
117+ list[str]:
118+ """
119+ if name .startswith ('t' ):
120+ return [f't{ name [1 :]} ' , f'ht{ name [1 :]} ' ]
121+ if name .startswith ('ht' ):
122+ return [f't{ name [2 :]} ' , f'ht{ name [2 :]} ' ]
123+ if name .startswith ('a' ) or name .startswith ('c' ):
124+ return [f'a{ name [1 :]} ' , f'c{ name [1 :]} ' ]
125+ if name .startswith ('b' ) or name .startswith ('d' ):
126+ return [f'b{ name [1 :]} ' , f'd{ name [1 :]} ' ]
127+ return [name ]
128+
103129 def campaign_get_entrance (self , name ):
104130 """
105131 Args:
@@ -108,12 +134,18 @@ def campaign_get_entrance(self, name):
108134 Returns:
109135 Button:
110136 """
137+ entrance_name = name
138+ if self .config .MAP_HAS_MODE_SWITCH :
139+ for mode_name in self .campaign_get_mode_names (name ):
140+ if mode_name in self .stage_entrance :
141+ name = mode_name
142+
111143 if name not in self .stage_entrance :
112144 logger .warning (f'Stage not found: { name } ' )
113145 raise CampaignNameError
114146
115147 entrance = self .stage_entrance [name ]
116- entrance .name = name
148+ entrance .name = entrance_name
117149 return entrance
118150
119151 def campaign_set_chapter_main (self , chapter , mode = 'normal' ):
@@ -132,11 +164,11 @@ def campaign_set_chapter_main(self, chapter, mode='normal'):
132164 return False
133165
134166 def campaign_set_chapter_event (self , chapter , mode = 'normal' ):
135- if chapter in ['a' , 'b' , 'c' , 'd' , 'ex_sp' , 'as' , 'bs' , 'cs' , 'ds' , 't' , 'ts' , 'tss' , 'hts' ]:
167+ if chapter in ['a' , 'b' , 'c' , 'd' , 'ex_sp' , 'as' , 'bs' , 'cs' , 'ds' , 't' , 'ts' , 'tss' , 'ht' , ' hts' ]:
136168 self .ui_goto_event ()
137169 if chapter in ['a' , 'b' , 'as' , 'bs' , 't' , 'ts' , 'tss' ]:
138170 self .campaign_ensure_mode ('normal' )
139- elif chapter in ['c' , 'd' , 'cs' , 'ds' , 'hts' ]:
171+ elif chapter in ['c' , 'd' , 'cs' , 'ds' , 'ht' , ' hts' ]:
140172 self .campaign_ensure_mode ('hard' )
141173 elif chapter == 'ex_sp' :
142174 self .campaign_ensure_mode ('ex' )
0 commit comments