diff --git a/fighters/bayonetta/src/acmd/specials.rs b/fighters/bayonetta/src/acmd/specials.rs index 47260eac40..9670c04a65 100644 --- a/fighters/bayonetta/src/acmd/specials.rs +++ b/fighters/bayonetta/src/acmd/specials.rs @@ -11,8 +11,12 @@ unsafe extern "C" fn game_specialnstarth(agent: &mut L2CAgentBase) { unsafe extern "C" fn game_specialnendh(agent: &mut L2CAgentBase) { let lua_state = agent.lua_state_agent; let boma = agent.boma(); + let cancel_frame_param = agent.get_param_int("param_special_n", "cancel_frame") as f32; + let special_lag = agent.get_float(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME); frame(lua_state, 1.0); - MotionModule::set_rate(boma, (58.0 - 1.0)/25.0);//32 > 26 + if !agent.is_status(statuses::bayonetta::SPECIAL_N_CANCEL) || special_lag < cancel_frame_param { + MotionModule::set_rate(boma, (58.0 - 1.0)/25.0);//32 > 26 + }//do not change motion rate on special lag cancel anim } unsafe extern "C" fn game_specialnendf(agent: &mut L2CAgentBase) { diff --git a/fighters/bayonetta/src/opff.rs b/fighters/bayonetta/src/opff.rs index 6faa7e7ada..5101532b85 100644 --- a/fighters/bayonetta/src/opff.rs +++ b/fighters/bayonetta/src/opff.rs @@ -93,7 +93,9 @@ unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) { *FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_CHARGE, *FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_FIRE, *FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_END, + statuses::bayonetta::SPECIAL_N_CANCEL, *FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_HI_JUMP, + *FIGHTER_STATUS_KIND_SPECIAL_S, *FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_AIR_S_D_HIT, *FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_AIR_S_WALL_END]) && fighter.is_situation(*SITUATION_KIND_AIR) { diff --git a/fighters/bayonetta/src/status/mod.rs b/fighters/bayonetta/src/status/mod.rs index 88338f6289..fc5b905023 100644 --- a/fighters/bayonetta/src/status/mod.rs +++ b/fighters/bayonetta/src/status/mod.rs @@ -10,6 +10,7 @@ mod specialn; mod specials; mod specialhi; mod jumpaerial; +mod wait; pub fn install(agent: &mut Agent) { attack::install(agent); @@ -21,4 +22,5 @@ pub fn install(agent: &mut Agent) { specials::install(agent); specialhi::install(agent); jumpaerial::install(agent); + wait::install(agent); } \ No newline at end of file diff --git a/fighters/bayonetta/src/status/specialn.rs b/fighters/bayonetta/src/status/specialn.rs index 67db26e977..c73ba73afc 100644 --- a/fighters/bayonetta/src/status/specialn.rs +++ b/fighters/bayonetta/src/status/specialn.rs @@ -39,12 +39,8 @@ unsafe extern "C" fn special_n_charge_main(fighter: &mut L2CFighterCommon) -> L2 } else { fighter.sub_change_motion_by_situation(Hash40::new("special_n_charge_h").into(), Hash40::new("special_air_n_charge_h").into(), false.into()); } - //let cancel_frame = fighter.get_param_int("param_special_n", "cancel_frame"); - //fighter.set_int(cancel_frame, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); fighter.set_float(1.0, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_FLOAT_MOTION_RATE); - //fighter.sub_change_motion_by_situation(Hash40::new("special_n_charge_f").into(), Hash40::new("special_air_n_charge_h").into(), true.into()); motion_handling(fighter); - //fighter.main_shift(special_n_charge_main_loop) fighter.sub_shift_status_main(L2CValue::Ptr(special_n_charge_main_loop as *const () as _)) } @@ -57,12 +53,8 @@ unsafe extern "C" fn special_n_charge_main_loop(fighter: &mut L2CFighterCommon) if MotionModule::is_end(fighter.module_accessor) { if fighter.is_flag(*FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_FLAG_SPECIAL_N_FOOT) { fighter.sub_change_motion_by_situation(Hash40::new("special_n_loop_f").into(), Hash40::new("special_air_n_loop_f").into(), true.into()); - //fighter.set_int64(Hash40::new("special_n_loop_h"), *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_MOTION_KIND_G); - //fighter.set_int64(Hash40::new("special_air_n_loop_h"), *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_MOTION_KIND_A); } else { fighter.sub_change_motion_by_situation(Hash40::new("special_n_loop_h").into(), Hash40::new("special_air_n_loop_h").into(), true.into()); - //fighter.set_int64(Hash40::new("special_n_loop_f"), *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_MOTION_KIND_G); - //fighter.set_int64(Hash40::new("special_air_n_loop_f"), *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_MOTION_KIND_A); } app::FighterUtil::flash_eye_info(fighter.module_accessor); PLAY_SE(fighter, Hash40::new("se_bayonetta_special_n05")); @@ -107,15 +99,20 @@ unsafe extern "C" fn special_n_cancel_pre(fighter: &mut L2CFighterCommon) -> L2C } unsafe extern "C" fn special_n_cancel_main(fighter: &mut L2CFighterCommon) -> L2CValue { + let cancel_frame_param = fighter.get_param_int("param_special_n", "cancel_frame"); + let special_lag = fighter.get_float(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME) as i32; + //cancel frame = iasa + fighter.set_int(cancel_frame_param, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); if fighter.is_flag(*FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_FLAG_SPECIAL_N_FOOT) { fighter.sub_change_motion_by_situation(Hash40::new("special_n_end_f").into(), Hash40::new("special_air_n_end_f").into(), false.into()); - } else { + } else {//cancel lag is the greatest of the param or special lag total fighter.sub_change_motion_by_situation(Hash40::new("special_n_end_h").into(), Hash40::new("special_air_n_end_h").into(), false.into()); + if fighter.is_situation(*SITUATION_KIND_GROUND) { + if special_lag > cancel_frame_param {fighter.set_int(special_lag, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); } + } //if grounded with stored special lag convert to cancel lag } - let cancel_frame = fighter.get_param_int("param_special_n", "cancel_frame"); - fighter.set_int(cancel_frame, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); //fighter.set_float(1.0, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_FLOAT_MOTION_RATE); - motion_handling(fighter); + cancel_motion(fighter); fighter.clear_lua_stack(); lua_args!(fighter, MA_MSC_CMD_EFFECT_EFFECT_OFF_KIND, Hash40::new("bayonetta_bulletclimax_circle"), true, true); sv_module_access::effect(fighter.lua_state_agent); @@ -127,37 +124,49 @@ unsafe extern "C" fn special_n_cancel_main(fighter: &mut L2CFighterCommon) -> L2 } unsafe extern "C" fn special_n_cancel_main_loop(fighter: &mut L2CFighterCommon) -> L2CValue { - if StatusModule::is_situation_changed(fighter.module_accessor) {motion_handling(fighter); } + //set anims and kinetic stuff + if StatusModule::is_situation_changed(fighter.module_accessor) {cancel_motion(fighter); } + //frame counter WorkModule::dec_int(fighter.module_accessor, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); + let cancel_frame_param = fighter.get_param_int("param_special_n", "cancel_frame"); let cancel_frame = fighter.get_int(*FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); - if cancel_frame == 0 { //check cancel frame - //forces a cancel on the ground + let special_lag = fighter.get_float(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME); + //pause if special lag + if fighter.get_int(*FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME) > cancel_frame_param && MotionModule::rate(fighter.module_accessor) >= 0.0 { + let cancel_min_frame = fighter.get_param_int("param_special_n", "cancel_frame") as f32; + MotionModule::set_rate(fighter.module_accessor, (14.0 - 1.0)/cancel_min_frame.max(special_lag - cancel_min_frame as f32)); + } //slow down + //unpause motion if lag frame is over + if cancel_frame == cancel_frame_param && !StatusModule::is_changing(fighter.module_accessor) { + MotionModule::set_rate(fighter.module_accessor, (58.0 - 14.0)/(18.0 + special_lag * 0.2)); + var_reset(fighter);//clears lag and resources after lag has been experienced + } + //cancel frame check + if cancel_frame == 0 { let status = VarModule::get_int(fighter.battle_object, vars::bayonetta::instance::SPECIAL_N_CANCEL_TYPE); if status != 0 { StatusModule::change_status_force(fighter.module_accessor, status, false); return 1.into(); - } else {CancelModule::enable_cancel(fighter.module_accessor); } + } else { + CancelModule::enable_cancel(fighter.module_accessor); + if !fighter.is_situation(*SITUATION_KIND_GROUND) {drift_limits(fighter);} + } //drift when cancel } if CancelModule::is_enable_cancel(fighter.module_accessor) { if fighter.sub_wait_ground_check_common(false.into()).get_bool() || fighter.sub_air_check_fall_common().get_bool() { return 1.into(); } - //enables normal aerial movement once cancellable - if KineticModule::get_kinetic_type(fighter.module_accessor) != *FIGHTER_KINETIC_TYPE_MOTION_FALL {KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_MOTION_FALL); } } if MotionModule::is_end(fighter.module_accessor) { if fighter.is_situation(*SITUATION_KIND_GROUND) {fighter.change_status(FIGHTER_STATUS_KIND_WAIT.into(), false.into()); } else {fighter.change_status(FIGHTER_STATUS_KIND_FALL.into(), false.into()); } } - if cancel_frame > fighter.get_param_int("param_special_n", "cancel_frame") { //if in special lag - let motion_frame = MotionModule::frame(fighter.module_accessor); - MotionModule::set_rate(fighter.module_accessor, (58.0 - motion_frame.min(58.0))/cancel_frame as f32); - }//speed/slow anim to end same frame special lag does - return 0.into(); + 0.into() } unsafe extern "C" fn special_n_cancel_end(fighter: &mut L2CFighterCommon) -> L2CValue { + if fighter.is_situation(*SITUATION_KIND_GROUND) {var_reset(fighter); } 0.into() } @@ -165,36 +174,32 @@ unsafe extern "C" fn motion_handling(fighter: &mut L2CFighterCommon) -> L2CValue if fighter.is_situation(*SITUATION_KIND_GROUND) { KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_GROUND_STOP); GroundModule::set_correct(fighter.module_accessor, GroundCorrectKind(*GROUND_CORRECT_KIND_GROUND_CLIFF_STOP_ATTACK)); - var_reset(fighter); - //motion + //air -> gr if fighter.is_motion(Hash40::new("special_air_n_charge_h")) {MotionModule::change_motion_inherit_frame(fighter.module_accessor, Hash40::new("special_n_charge_h"), -1.0, 1.0, 0.0, true, true); } else if fighter.is_motion(Hash40::new("special_air_n_start_h")) {MotionModule::change_motion_inherit_frame(fighter.module_accessor, Hash40::new("special_n_start_h"), -1.0, 1.0, 0.0, true, true); } else if fighter.is_motion(Hash40::new("special_air_n_loop_h")) {MotionModule::change_motion_inherit_frame(fighter.module_accessor, Hash40::new("special_n_loop_h"), -1.0, 1.0, 0.0, true, true); } - else if fighter.is_motion(Hash40::new("special_air_n_end_h")) {MotionModule::change_motion_inherit_frame(fighter.module_accessor, Hash40::new("special_n_end_h"), -1.0, 1.0, 0.0, true, true); } } else { - let start_y = fighter.get_param_float("param_special_n", "air_start_speed_mul_y"); - let air_accel_y = fighter.get_param_float("param_special_n", "air_start_accel_y"); - let air_stable_y = fighter.get_param_float("param_special_n", "air_start_max_speed_y"); - if fighter.global_table[STATUS_KIND].get_i32() == statuses::bayonetta::SPECIAL_N_CANCEL && StatusModule::is_changing(fighter.module_accessor) { - sv_kinetic_energy!(set_speed_mul, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, start_y); - KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_AIR_STOP); - } - if KineticModule::get_kinetic_type(fighter.module_accessor) != *FIGHTER_KINETIC_TYPE_AIR_STOP { - KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_MOTION_FALL); - sv_kinetic_energy!(controller_set_accel_x_mul, fighter, 0.04); - sv_kinetic_energy!(controller_set_accel_x_add, fighter, 0.009); - sv_kinetic_energy!(set_stable_speed, fighter, FIGHTER_KINETIC_ENERGY_ID_CONTROL, 0.4, 0.0); - } - GroundModule::set_correct(fighter.module_accessor, GroundCorrectKind(*GROUND_CORRECT_KIND_AIR)); - sv_kinetic_energy!(set_accel, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, -air_accel_y); - sv_kinetic_energy!(set_stable_speed, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, air_stable_y); + drift_limits(fighter); } return 0.into(); } +unsafe extern "C" fn drift_limits(fighter: &mut L2CFighterCommon) -> L2CValue { + let start_y = fighter.get_param_float("param_special_n", "air_start_speed_mul_y"); + let air_accel_y = fighter.get_param_float("param_special_n", "air_start_accel_y"); + let air_stable_y = fighter.get_param_float("param_special_n", "air_start_max_speed_y"); + KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_MOTION_FALL); + sv_kinetic_energy!(controller_set_accel_x_mul, fighter, 0.04); + sv_kinetic_energy!(controller_set_accel_x_add, fighter, 0.009); + sv_kinetic_energy!(set_stable_speed, fighter, FIGHTER_KINETIC_ENERGY_ID_CONTROL, 0.4, 0.0); + GroundModule::set_correct(fighter.module_accessor, GroundCorrectKind(*GROUND_CORRECT_KIND_AIR)); + sv_kinetic_energy!(set_accel, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, -air_accel_y); + sv_kinetic_energy!(set_stable_speed, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, air_stable_y); + 0.into() +} + unsafe extern "C" fn cancel_check(fighter: &mut L2CFighterCommon) -> L2CValue { if fighter.is_button_off(Buttons::Special) {fighter.change_status(FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_FIRE.into(), false.into()); } - //if fighter.get_int(*FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME) == 0 { if fighter.is_situation(*SITUATION_KIND_GROUND) { if fighter.is_cat_flag(Cat2::StickEscapeF) { VarModule::set_int(fighter.battle_object, vars::bayonetta::instance::SPECIAL_N_CANCEL_TYPE, *FIGHTER_STATUS_KIND_ESCAPE_F); @@ -218,30 +223,47 @@ unsafe extern "C" fn cancel_check(fighter: &mut L2CFighterCommon) -> L2CValue { return true.into() } } - //} else {WorkModule::dec_int(fighter.module_accessor, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); } return false.into(); } unsafe extern "C" fn var_reset(fighter: &mut L2CFighterCommon) -> L2CValue { - let special_lag = fighter.get_float(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME); - let cancel_frame = fighter.get_int(*FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); - if special_lag > 0.0 { //if you cancel always set special lag as the cancel frame - if fighter.global_table[STATUS_KIND].get_i32() == statuses::bayonetta::SPECIAL_N_CANCEL { - // applies special lag if applicable - let frames_to_cancel = cancel_frame.max(special_lag as i32 - fighter.status_frame()); //frames left before cancel - fighter.set_int(frames_to_cancel, *FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); - fighter.set_float(0.0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME); - lua_args!(fighter, MA_MSC_CMD_CANCEL_UNABLE_CANCEL); - smash::app::sv_module_access::cancel(fighter.lua_state_agent); + fighter.set_float(0.0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME); + fighter.set_int(0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_SPECIAL_AIR_S_USED_COUNT); + fighter.set_int(0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_SPECIAL_AIR_S_REUSE_FRAME); + fighter.off_flag(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_DISABLE_AIR_SPECIAL_S); + fighter.set_int(0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_SPECIAL_HI_USED_COUNT); + fighter.off_flag(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_DISABLE_AIR_SPECIAL_HI); + fighter.off_flag(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_SPECIAL_HI_AFTER_ACTION); + return 0.into(); +} + +unsafe extern "C" fn cancel_motion(fighter: &mut L2CFighterCommon) -> L2CValue { + if fighter.is_situation(*SITUATION_KIND_GROUND) { + let special_lag = fighter.get_float(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME); + let act_frame_param = fighter.get_param_int("param_special_n", "cancel_frame"); + let cancel_frame = fighter.get_int(*FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_N_INT_CANCEL_FRAME); + KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_GROUND_STOP); + GroundModule::set_correct(fighter.module_accessor, GroundCorrectKind(*GROUND_CORRECT_KIND_GROUND_CLIFF_STOP_ATTACK)); + if StatusModule::is_situation_changed(fighter.module_accessor) { + if special_lag > 1.0 { + let remaining_lag = (act_frame_param + cancel_frame) as f32; + fighter.set_float(special_lag - remaining_lag, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME); + fighter.change_status(FIGHTER_STATUS_KIND_LANDING_FALL_SPECIAL.into(), false.into()); + } else { //landing during cancel goes into either special lag anim or normal land cancel anim + fighter.change_status(FIGHTER_STATUS_KIND_LANDING.into(), false.into()); + } } - fighter.set_int(0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_SPECIAL_AIR_S_USED_COUNT); - fighter.set_int(0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_SPECIAL_AIR_S_REUSE_FRAME); - fighter.off_flag(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_DISABLE_AIR_SPECIAL_S); - fighter.set_int(0, *FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_SPECIAL_HI_USED_COUNT); - fighter.off_flag(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_DISABLE_AIR_SPECIAL_HI); - fighter.off_flag(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_SPECIAL_HI_AFTER_ACTION); + } else if StatusModule::is_changing(fighter.module_accessor) { + let start_y = fighter.get_param_float("param_special_n", "air_start_speed_mul_y"); + let air_accel_y = fighter.get_param_float("param_special_n", "air_start_accel_y"); + let air_stable_y = fighter.get_param_float("param_special_n", "air_start_max_speed_y"); + KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_AIR_STOP); + GroundModule::set_correct(fighter.module_accessor, GroundCorrectKind(*GROUND_CORRECT_KIND_AIR)); + sv_kinetic_energy!(set_speed_mul, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, start_y); + sv_kinetic_energy!(set_accel, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, -air_accel_y); + sv_kinetic_energy!(set_stable_speed, fighter, FIGHTER_KINETIC_ENERGY_ID_GRAVITY, air_stable_y); } - return 0.into(); + 0.into() } pub fn install(agent: &mut Agent) { diff --git a/fighters/bayonetta/src/status/wait.rs b/fighters/bayonetta/src/status/wait.rs new file mode 100644 index 0000000000..d305ada3da --- /dev/null +++ b/fighters/bayonetta/src/status/wait.rs @@ -0,0 +1,16 @@ +use super::*; + +// FIGHTER_STATUS_KIND_WAIT +unsafe extern "C" fn wait_main(fighter: &mut L2CFighterCommon) -> L2CValue { + let status = fighter.global_table[PREV_STATUS_KIND].get_i32(); + if status == statuses::bayonetta::SPECIAL_S_KICK { + fighter.global_table[PREV_STATUS_KIND].assign(&L2CValue::I32(*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_S_HOLD_END)); + } else if status == statuses::bayonetta::SPECIAL_N_CANCEL { + fighter.global_table[PREV_STATUS_KIND].assign(&L2CValue::I32(*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_END)); + } //fixes glitched idle without having to rewrite EVERYTHING + smashline::original_status(Main, fighter, *FIGHTER_STATUS_KIND_WAIT)(fighter) +} + +pub fn install(agent: &mut Agent) { + agent.status(Main, *FIGHTER_STATUS_KIND_WAIT, wait_main); +} \ No newline at end of file diff --git a/romfs/source/fighter/bayonetta/param/vl.prcxml b/romfs/source/fighter/bayonetta/param/vl.prcxml index ca028dce53..e8a65fc3a0 100644 --- a/romfs/source/fighter/bayonetta/param/vl.prcxml +++ b/romfs/source/fighter/bayonetta/param/vl.prcxml @@ -24,6 +24,7 @@ 150 7 0.35 + 0.35 dummy dummy