diff --git a/src/hitbox_visualizer/mod.rs b/src/hitbox_visualizer/mod.rs index ec67617..3062096 100644 --- a/src/hitbox_visualizer/mod.rs +++ b/src/hitbox_visualizer/mod.rs @@ -184,7 +184,8 @@ pub unsafe fn get_command_flag_cat( } // Pause Effect AnimCMD if hitbox visualization is active - MotionAnimcmdModule::set_sleep_effect(module_accessor, true); + // Keep effects on for missed tech effect + MotionAnimcmdModule::set_sleep_effect(module_accessor, status_kind != FIGHTER_STATUS_KIND_DOWN); EffectModule::set_visible_kind(module_accessor, Hash40::new("sys_shield"), false); EffectModule::kill_kind(module_accessor, Hash40::new("sys_shield"), false, true); diff --git a/src/training/mash.rs b/src/training/mash.rs index dc7547c..9e285a5 100644 --- a/src/training/mash.rs +++ b/src/training/mash.rs @@ -386,14 +386,32 @@ unsafe fn get_flag( status: i32, action_flag: i32, ) -> i32 { - if StatusModule::status_kind(module_accessor) == status { + let current_status = StatusModule::status_kind(module_accessor); + if current_status == status { // Reset Buffer reset(); } + // Workaround for Bowser upB + check_bowser_up_b(current_status); + return action_flag; } +fn check_bowser_up_b(current_status: i32) { + // Grounded up B + if current_status == *FIGHTER_KOOPA_STATUS_KIND_SPECIAL_HI_G { + reset(); + return; + } + + // Aerial up B + if current_status == *FIGHTER_KOOPA_STATUS_KIND_SPECIAL_HI_A { + reset(); + return; + } +} + pub unsafe fn perform_defensive_option() { reset();