From bcd0ca5a286a5f02f10fb2a3096adfd2f8d73fb2 Mon Sep 17 00:00:00 2001 From: jugeeya Date: Sat, 16 May 2020 17:55:59 -0700 Subject: [PATCH] fix footstool/trump hitstun options --- src/common/mod.rs | 20 ++++++++++---------- src/training/ledge.rs | 9 --------- src/training/mash.rs | 4 +++- src/training/mod.rs | 2 +- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/common/mod.rs b/src/common/mod.rs index 189a4b2..fc2034f 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -49,29 +49,29 @@ pub unsafe fn is_operation_cpu(module_accessor: &mut app::BattleObjectModuleAcce } pub unsafe fn is_in_hitstun(module_accessor: &mut app::BattleObjectModuleAccessor) -> bool { - let status_kind = StatusModule::status_kind(module_accessor) as i32; + let status_kind = StatusModule::status_kind(module_accessor); (*FIGHTER_STATUS_KIND_DAMAGE..=*FIGHTER_STATUS_KIND_DAMAGE_FALL).contains(&status_kind) } pub unsafe fn is_in_shieldstun(module_accessor: &mut app::BattleObjectModuleAccessor) -> bool { - let status_kind = StatusModule::status_kind(module_accessor) as i32; - let prev_status = StatusModule::prev_status_kind(module_accessor, 0) as i32; + let status_kind = StatusModule::status_kind(module_accessor); + let prev_status = StatusModule::prev_status_kind(module_accessor, 0); // If we are taking shield damage or we are droping shield from taking shield damage we are in hitstun - if status_kind == FIGHTER_STATUS_KIND_GUARD_DAMAGE + status_kind == FIGHTER_STATUS_KIND_GUARD_DAMAGE || (prev_status == FIGHTER_STATUS_KIND_GUARD_DAMAGE && status_kind == FIGHTER_STATUS_KIND_GUARD_OFF) - { - return true; - } - - false } pub unsafe fn is_in_landing(module_accessor: &mut app::BattleObjectModuleAccessor) -> bool { - let status_kind = StatusModule::status_kind(module_accessor) as i32; + let status_kind = StatusModule::status_kind(module_accessor); (*FIGHTER_STATUS_KIND_LANDING..=*FIGHTER_STATUS_KIND_LANDING_DAMAGE_LIGHT).contains(&status_kind) } +pub unsafe fn is_in_footstool(module_accessor: &mut app::BattleObjectModuleAccessor) -> bool { + let status_kind = StatusModule::status_kind(module_accessor); + (*FIGHTER_STATUS_KIND_TREAD_DAMAGE..=*FIGHTER_STATUS_KIND_TREAD_FALL).contains(&status_kind) +} + pub unsafe fn perform_defensive_option( _module_accessor: &mut app::BattleObjectModuleAccessor, flag: &mut i32, diff --git a/src/training/ledge.rs b/src/training/ledge.rs index d60e1ac..b3483a9 100644 --- a/src/training/ledge.rs +++ b/src/training/ledge.rs @@ -61,15 +61,6 @@ pub unsafe fn defensive_option( ) { let status = StatusModule::status_kind(module_accessor) as i32; let prev_status = StatusModule::prev_status_kind(module_accessor, 0) as i32; - // if [ - // *FIGHTER_STATUS_KIND_CLIFF_JUMP3, - // *FIGHTER_STATUS_KIND_CLIFF_JUMP2, - // *FIGHTER_STATUS_KIND_CLIFF_JUMP1, - // ] - // .contains(&status) - // { - // *flag |= *FIGHTER_PAD_CMD_CAT1_FLAG_AIR_ESCAPE; - // } if should_perform_defensive_option(module_accessor, prev_status, status) { perform_defensive_option(module_accessor, flag); diff --git a/src/training/mash.rs b/src/training/mash.rs index e479721..e7fde90 100644 --- a/src/training/mash.rs +++ b/src/training/mash.rs @@ -29,6 +29,8 @@ pub unsafe fn get_command_flag_cat( if is_in_hitstun(module_accessor) || is_in_landing(module_accessor) || is_in_shieldstun(module_accessor) + || is_in_footstool(module_accessor) + || StatusModule::status_kind(module_accessor) == FIGHTER_STATUS_KIND_CLIFF_ROBBED { match MENU.mash_state { Mash::Airdodge => { @@ -134,7 +136,7 @@ pub unsafe fn check_button_on( if [*CONTROL_PAD_BUTTON_GUARD_HOLD, *CONTROL_PAD_BUTTON_GUARD].contains(&button) { if is_training_mode() && is_operation_cpu(module_accessor) { if MENU.mash_state == Mash::Airdodge - && (is_in_hitstun(module_accessor) || is_in_landing(module_accessor)) + && (is_in_hitstun(module_accessor) || is_in_landing(module_accessor) || is_in_footstool(module_accessor)) { return Some(true); } diff --git a/src/training/mod.rs b/src/training/mod.rs index 02358a7..6d7b58c 100644 --- a/src/training/mod.rs +++ b/src/training/mod.rs @@ -125,7 +125,7 @@ pub unsafe fn handle_init_settings( unk6: i32, unk7: i32, ) { - let status_kind = StatusModule::status_kind(module_accessor) as i32; + let status_kind = StatusModule::status_kind(module_accessor); tech::init_settings(module_accessor, status_kind).unwrap_or_else(|| { original!()( module_accessor,