@@ -106,10 +106,7 @@ unsafe fn lucina_specials_main(fighter: &mut L2CFighterCommon) -> L2CValue {
106
106
lucina_specials_reset_helper ( fighter) ;
107
107
ControlModule :: reset_trigger ( fighter. module_accessor ) ;
108
108
WorkModule :: set_int ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_KIND_SPECIAL_S2 , * FIGHTER_MARTH_STATUS_SPECIAL_S_WORK_INT_CHANGE_STATUS ) ;
109
- if !StopModule :: is_stop ( fighter. module_accessor ) {
110
- lucina_specials_substatus ( fighter, false . into ( ) ) ;
111
- }
112
- fighter. global_table [ SUB_STATUS ] . assign ( & L2CValue :: Ptr ( lucina_specials_substatus as * const ( ) as _ ) ) ;
109
+
113
110
WorkModule :: set_int64 ( fighter. module_accessor ,
114
111
hash40 ( "special_s1" ) as i64 ,
115
112
* FIGHTER_MARTH_STATUS_SPECIAL_S_WORK_INT_MOTION_KIND
@@ -122,7 +119,37 @@ unsafe fn lucina_specials_main(fighter: &mut L2CFighterCommon) -> L2CValue {
122
119
fighter. sub_shift_status_main ( L2CValue :: Ptr ( lucina_specials_main_loop as * const ( ) as _ ) )
123
120
}
124
121
122
+ pub unsafe fn dancing_blade_transition_check ( fighter : & mut L2CFighterCommon ) {
123
+ if !WorkModule :: is_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_FAILURE ) {
124
+ if WorkModule :: is_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_SUCCESS ) {
125
+ return ;
126
+ }
127
+ if !ControlModule :: check_button_trigger ( fighter. module_accessor , * CONTROL_PAD_BUTTON_SPECIAL ) {
128
+ return ;
129
+ }
130
+ if !WorkModule :: is_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_CHECK ) {
131
+ WorkModule :: on_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_FAILURE ) ;
132
+ }
133
+ else {
134
+ WorkModule :: on_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_SUCCESS ) ;
135
+ let enable_hi_lw = WorkModule :: get_param_int ( fighter. module_accessor , hash40 ( "param_special_s" ) , hash40 ( "enable_input_hi_lw" ) ) ;
136
+ if enable_hi_lw == 0 {
137
+ return ;
138
+ }
139
+ let stick_y = fighter. global_table [ STICK_Y ] . get_f32 ( ) ;
140
+ let squat_stick_y = WorkModule :: get_param_float ( fighter. module_accessor , hash40 ( "common" ) , hash40 ( "squat_stick_y" ) ) ;
141
+ if stick_y > -squat_stick_y {
142
+ WorkModule :: on_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_HI ) ;
143
+ }
144
+ else if stick_y < squat_stick_y {
145
+ WorkModule :: on_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_LW ) ;
146
+ }
147
+ }
148
+ }
149
+ }
150
+
125
151
unsafe extern "C" fn lucina_specials_main_loop ( fighter : & mut L2CFighterCommon ) -> L2CValue {
152
+ dancing_blade_transition_check ( fighter) ;
126
153
if !StatusModule :: is_changing ( fighter. module_accessor ) {
127
154
if StatusModule :: is_situation_changed ( fighter. module_accessor ) {
128
155
lucina_specials_mot_helper ( fighter) ;
@@ -151,10 +178,6 @@ unsafe fn lucina_specials2_main(fighter: &mut L2CFighterCommon) -> L2CValue {
151
178
* FIGHTER_MARTH_STATUS_KIND_SPECIAL_S3 ,
152
179
* FIGHTER_MARTH_STATUS_SPECIAL_S_WORK_INT_CHANGE_STATUS
153
180
) ;
154
- if !StopModule :: is_stop ( fighter. module_accessor ) {
155
- lucina_specials_substatus ( fighter, false . into ( ) ) ;
156
- }
157
- fighter. global_table [ SUB_STATUS ] . assign ( & L2CValue :: Ptr ( lucina_specials_substatus as * const ( ) as _ ) ) ;
158
181
if WorkModule :: is_flag ( fighter. module_accessor , * FIGHTER_MARTH_STATUS_SPECIAL_S_FLAG_INPUT_LW ) {
159
182
WorkModule :: set_int64 (
160
183
fighter. module_accessor ,
0 commit comments