mirror of
https://github.com/jugeeya/UltimateTrainingModpack.git
synced 2025-01-31 22:47:25 +00:00
Fix Mash Options (#107)
* Fix Late Mash Fixed being a frame late Flag is now immediately returned until the action is performed Also restore Airdodge => Shield when grounded behavior * Update TrainingModpackOverlay
This commit is contained in:
parent
ee7a485f11
commit
a19245e126
2 changed files with 48 additions and 44 deletions
|
@ -1 +1 @@
|
|||
Subproject commit 99b5ab29e4a2eda39a8f71e10a084418121f0019
|
||||
Subproject commit 4393224a14cf6cca1cd1ff7f4e8517ca58071505
|
|
@ -119,9 +119,16 @@ unsafe fn check_buffer(module_accessor: &mut app::BattleObjectModuleAccessor) {
|
|||
unsafe fn perform_action(module_accessor: &mut app::BattleObjectModuleAccessor) -> i32 {
|
||||
match BUFFERED_ACTION {
|
||||
Mash::Airdodge => {
|
||||
// Shield if grounded instead
|
||||
if is_grounded(module_accessor) {
|
||||
reset();
|
||||
buffer_action(Mash::Shield);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return get_flag(
|
||||
module_accessor,
|
||||
*FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ESCAPE_AIR,
|
||||
*FIGHTER_STATUS_KIND_ESCAPE_AIR,
|
||||
*FIGHTER_PAD_CMD_CAT1_FLAG_AIR_ESCAPE,
|
||||
);
|
||||
}
|
||||
|
@ -131,21 +138,21 @@ unsafe fn perform_action(module_accessor: &mut app::BattleObjectModuleAccessor)
|
|||
Mash::Spotdodge => {
|
||||
return get_flag(
|
||||
module_accessor,
|
||||
*FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ESCAPE,
|
||||
*FIGHTER_STATUS_KIND_ESCAPE,
|
||||
*FIGHTER_PAD_CMD_CAT1_FLAG_ESCAPE,
|
||||
);
|
||||
}
|
||||
Mash::RollForward => {
|
||||
return get_flag(
|
||||
module_accessor,
|
||||
*FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ESCAPE_F,
|
||||
*FIGHTER_STATUS_KIND_ESCAPE_F,
|
||||
*FIGHTER_PAD_CMD_CAT1_FLAG_ESCAPE_F,
|
||||
);
|
||||
}
|
||||
Mash::RollBack => {
|
||||
return get_flag(
|
||||
module_accessor,
|
||||
*FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ESCAPE_B,
|
||||
*FIGHTER_STATUS_KIND_ESCAPE_B,
|
||||
*FIGHTER_PAD_CMD_CAT1_FLAG_ESCAPE_B,
|
||||
);
|
||||
}
|
||||
|
@ -159,14 +166,14 @@ unsafe fn perform_action(module_accessor: &mut app::BattleObjectModuleAccessor)
|
|||
*/
|
||||
// return get_flag(
|
||||
// module_accessor,
|
||||
// *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_GUARD_ON,
|
||||
// *FIGHTER_STATUS_KIND_GUARD_ON,
|
||||
// *FIGHTER_PAD_CMD_CAT1_FLAG_AIR_ESCAPE,
|
||||
// );
|
||||
if is_shielding(module_accessor) {
|
||||
reset();
|
||||
}
|
||||
|
||||
return 0;
|
||||
return get_flag(
|
||||
module_accessor,
|
||||
*FIGHTER_STATUS_KIND_GUARD_ON,
|
||||
*FIGHTER_PAD_CMD_CAT1_FLAG_AIR_ESCAPE,
|
||||
);
|
||||
}
|
||||
_ => return 0,
|
||||
}
|
||||
|
@ -176,11 +183,11 @@ unsafe fn update_jump_flag(module_accessor: &mut app::BattleObjectModuleAccessor
|
|||
let check_flag: i32;
|
||||
|
||||
if is_grounded(module_accessor) {
|
||||
check_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_JUMP_SQUAT_BUTTON;
|
||||
check_flag = *FIGHTER_STATUS_KIND_JUMP_SQUAT;
|
||||
} else if is_airborne(module_accessor) {
|
||||
check_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_JUMP_AERIAL_BUTTON;
|
||||
check_flag = *FIGHTER_STATUS_KIND_JUMP_AERIAL;
|
||||
} else {
|
||||
check_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_CLIFF_JUMP_BUTTON;
|
||||
check_flag = *FIGHTER_STATUS_KIND_JUMP;
|
||||
}
|
||||
|
||||
return get_flag(
|
||||
|
@ -194,7 +201,7 @@ unsafe fn get_attack_flag(module_accessor: &mut app::BattleObjectModuleAccessor)
|
|||
use Attack::*;
|
||||
|
||||
let action_flag: i32;
|
||||
let transition_flag: i32;
|
||||
let status: i32;
|
||||
|
||||
match BUFFERED_ATTACK {
|
||||
Nair | Fair | Bair | UpAir | Dair => {
|
||||
|
@ -202,56 +209,61 @@ unsafe fn get_attack_flag(module_accessor: &mut app::BattleObjectModuleAccessor)
|
|||
}
|
||||
NeutralB => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_N;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_SPECIAL_N;
|
||||
status = *FIGHTER_STATUS_KIND_SPECIAL_N;
|
||||
}
|
||||
SideB => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_S;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_SPECIAL_S;
|
||||
status = *FIGHTER_STATUS_KIND_SPECIAL_S;
|
||||
}
|
||||
UpB => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_HI;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_SPECIAL_HI;
|
||||
status = *FIGHTER_STATUS_KIND_SPECIAL_HI;
|
||||
}
|
||||
DownB => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_SPECIAL_LW;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_SPECIAL_LW;
|
||||
status = *FIGHTER_STATUS_KIND_SPECIAL_LW;
|
||||
}
|
||||
UpSmash => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_HI4;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK_HI4_START;
|
||||
status = *FIGHTER_STATUS_KIND_ATTACK_HI4_START;
|
||||
}
|
||||
FSmash => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_S4;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK_S4_START;
|
||||
status = *FIGHTER_STATUS_KIND_ATTACK_S4_START;
|
||||
}
|
||||
DSmash => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_LW4;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK_LW4_START;
|
||||
status = *FIGHTER_STATUS_KIND_ATTACK_LW4_START;
|
||||
}
|
||||
Grab => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_CATCH;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_CATCH;
|
||||
status = *FIGHTER_STATUS_KIND_CATCH;
|
||||
}
|
||||
Jab => {
|
||||
// Prevent nair when airborne
|
||||
if !is_grounded(module_accessor) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_N;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK;
|
||||
status = *FIGHTER_STATUS_KIND_ATTACK;
|
||||
}
|
||||
Ftilt => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_S3;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK_S3;
|
||||
status = *FIGHTER_STATUS_KIND_ATTACK_S3;
|
||||
}
|
||||
Utilt => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_HI3;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK_HI3;
|
||||
status = *FIGHTER_STATUS_KIND_ATTACK_HI3;
|
||||
}
|
||||
Dtilt => {
|
||||
action_flag = *FIGHTER_PAD_CMD_CAT1_FLAG_ATTACK_LW3;
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK_LW3;
|
||||
status = *FIGHTER_STATUS_KIND_ATTACK_LW3;
|
||||
}
|
||||
_ => return 0,
|
||||
}
|
||||
|
||||
return get_flag(module_accessor, transition_flag, action_flag);
|
||||
return get_flag(module_accessor, status, action_flag);
|
||||
}
|
||||
|
||||
unsafe fn get_aerial_flag(
|
||||
|
@ -260,7 +272,6 @@ unsafe fn get_aerial_flag(
|
|||
) -> i32 {
|
||||
let mut flag: i32 = 0;
|
||||
|
||||
let transition_flag: i32;
|
||||
// If we are grounded we also need to jump
|
||||
if is_grounded(module_accessor) {
|
||||
flag += update_jump_flag(module_accessor);
|
||||
|
@ -275,12 +286,10 @@ unsafe fn get_aerial_flag(
|
|||
buffer_action(Mash::Attack);
|
||||
return flag;
|
||||
}
|
||||
|
||||
transition_flag = 0;
|
||||
} else {
|
||||
transition_flag = *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ATTACK_AIR;
|
||||
}
|
||||
|
||||
let status = *FIGHTER_STATUS_KIND_ATTACK_AIR;
|
||||
|
||||
if MENU.falling_aerials == OnOff::On && !fast_fall::is_falling(module_accessor) {
|
||||
// Keep Buffering until we are falling
|
||||
buffer_action(Mash::Attack);
|
||||
|
@ -314,29 +323,24 @@ unsafe fn get_aerial_flag(
|
|||
}
|
||||
}
|
||||
|
||||
flag |= get_flag(module_accessor, transition_flag, action_flag);
|
||||
flag |= get_flag(module_accessor, status, action_flag);
|
||||
|
||||
flag
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the flag if the transition is valid
|
||||
*
|
||||
* Returns the flag and resets, once the action is performed
|
||||
*/
|
||||
unsafe fn get_flag(
|
||||
module_accessor: &mut app::BattleObjectModuleAccessor,
|
||||
transition_flag: i32,
|
||||
status: i32,
|
||||
action_flag: i32,
|
||||
) -> i32 {
|
||||
if transition_flag > 0
|
||||
&& !WorkModule::is_enable_transition_term(module_accessor, transition_flag)
|
||||
{
|
||||
return 0;
|
||||
if StatusModule::status_kind(module_accessor) == status {
|
||||
// Reset Buffer
|
||||
reset();
|
||||
}
|
||||
|
||||
// Reset Buffer
|
||||
reset();
|
||||
|
||||
return action_flag;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue