1
0
Fork 0
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:
sidschingis 2020-07-04 00:16:21 +02:00 committed by GitHub
parent ee7a485f11
commit a19245e126
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 44 deletions

@ -1 +1 @@
Subproject commit 99b5ab29e4a2eda39a8f71e10a084418121f0019
Subproject commit 4393224a14cf6cca1cd1ff7f4e8517ca58071505

View file

@ -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;
}