From f54b39e206ab2506365504bf947b823e0f62f697 Mon Sep 17 00:00:00 2001 From: xTheft Date: Tue, 21 Apr 2026 10:12:12 -0500 Subject: [PATCH 1/3] taunt input and effects --- dynamic/src/consts.rs | 6 +++++- fighters/szerosuit/src/acmd/aerials.rs | 22 +++++++++++----------- fighters/szerosuit/src/acmd/smashes.rs | 24 ++++++++++++++++++++++++ fighters/szerosuit/src/acmd/throws.rs | 2 +- fighters/szerosuit/src/acmd/tilts.rs | 2 +- fighters/szerosuit/src/opff.rs | 11 +++++++++++ 6 files changed, 53 insertions(+), 14 deletions(-) diff --git a/dynamic/src/consts.rs b/dynamic/src/consts.rs index ab0b67d53b..fe2d56c67a 100644 --- a/dynamic/src/consts.rs +++ b/dynamic/src/consts.rs @@ -919,7 +919,10 @@ pub mod vars { } pub mod link { - + pub mod status { + // flags + pub const ENABLE_SPECIAL_LW_CANCEL: i32 = 0x1000; + } } pub mod littlemac { @@ -1831,6 +1834,7 @@ pub mod vars { // flags pub const ATTACK_AIR_LW_REBOUND: i32 = 0x1100; pub const SPECIAL_LW_ENABLE_MANUAL_FOOTSTOOL: i32 = 0x1101; + pub const YOURE_MINE: i32 = 0x1102; } } diff --git a/fighters/szerosuit/src/acmd/aerials.rs b/fighters/szerosuit/src/acmd/aerials.rs index 530add9b51..71d9b53584 100644 --- a/fighters/szerosuit/src/acmd/aerials.rs +++ b/fighters/szerosuit/src/acmd/aerials.rs @@ -77,13 +77,13 @@ unsafe extern "C" fn game_attackairf(agent: &mut L2CAgentBase) { FT_MOTION_RATE_RANGE(agent, 6.0, 8.0, 4.0); if is_excute(agent) { // Air-only - ATTACK(agent, 0, 0, Hash40::new("legl"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 1, 0, Hash40::new("kneel"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 2, 0, Hash40::new("footl"), 5.0, 365, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("legl"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 1, 0, Hash40::new("kneel"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 2, 0, Hash40::new("footl"), 5.0, 365, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); // Ground-only - ATTACK(agent, 5, 0, Hash40::new("legl"), 5.0, 70, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 4, 0, Hash40::new("kneel"), 5.0, 75, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 3, 0, Hash40::new("footl"), 5.0, 80, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 5, 0, Hash40::new("legl"), 5.0, 70, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 4, 0, Hash40::new("kneel"), 5.0, 75, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 3, 0, Hash40::new("footl"), 5.0, 80, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } frame(lua_state, 8.0); FT_MOTION_RATE(agent, 1.0); @@ -92,9 +92,9 @@ unsafe extern "C" fn game_attackairf(agent: &mut L2CAgentBase) { } frame(lua_state, 13.0); if is_excute(agent) { - ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 40, 100, 0, 40, 3.7, 1.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 40, 100, 0, 40, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 2, 0, Hash40::new("footr"), 10.0, 40, 100, 0, 40, 4.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 40, 100, 0, 40, 3.7, 1.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 40, 100, 0, 40, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 2, 0, Hash40::new("footr"), 10.0, 40, 100, 0, 40, 4.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } frame(lua_state, 17.0); FT_MOTION_RATE_RANGE(agent, 17.0, 40.0, 21.0); @@ -120,8 +120,8 @@ unsafe extern "C" fn game_attackairb(agent: &mut L2CAgentBase) { frame(lua_state, 8.0); FT_MOTION_RATE(agent, 1.0); if is_excute(agent) { - ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 361, 110, 0, 20, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 361, 110, 0, 20, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 361, 110, 0, 20, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 361, 110, 0, 20, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); ATTACK(agent, 2, 0, Hash40::new("footr"), 13.0, 361, 100, 0, 33, 4.5, 0.0, -1.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } wait(lua_state, 5.0); diff --git a/fighters/szerosuit/src/acmd/smashes.rs b/fighters/szerosuit/src/acmd/smashes.rs index 7eff766a18..adf952c01c 100644 --- a/fighters/szerosuit/src/acmd/smashes.rs +++ b/fighters/szerosuit/src/acmd/smashes.rs @@ -136,6 +136,28 @@ unsafe extern "C" fn game_attacklw4(agent: &mut L2CAgentBase) { } } +unsafe extern "C" fn sound_attacklw4(agent: &mut L2CAgentBase) { + let lua_state = agent.lua_state_agent; + let boma = agent.boma(); + frame(lua_state, 17.0); + if is_excute(agent) { + STOP_SE(agent, Hash40::new("se_common_smash_start_03")); + } + wait(lua_state, 1.0); + if is_excute(agent) { + PLAY_SE(agent, Hash40::new("se_szerosuit_smash_l01")); + } +} + +unsafe extern "C" fn sound_attacklw4charge(agent: &mut L2CAgentBase) { + let lua_state = agent.lua_state_agent; + let boma = agent.boma(); + frame(lua_state, 1.0); + if is_excute(agent) { + PLAY_SE(agent, Hash40::new("se_common_smash_start_03")); + } +} + pub fn install(agent: &mut Agent) { agent.acmd("game_attacks4", game_attacks4, Priority::Low); agent.acmd("game_attacks4hi", game_attacks4, Priority::Low); @@ -144,4 +166,6 @@ pub fn install(agent: &mut Agent) { agent.acmd("game_attackhi4", game_attackhi4, Priority::Low); agent.acmd("game_attacklw4", game_attacklw4, Priority::Low); + agent.acmd("sound_attacklw4", sound_attacklw4, Priority::Low); + agent.acmd("sound_attacklw4", sound_attacklw4charge, Priority::Low); } \ No newline at end of file diff --git a/fighters/szerosuit/src/acmd/throws.rs b/fighters/szerosuit/src/acmd/throws.rs index 625c0ea845..0edd36fa86 100644 --- a/fighters/szerosuit/src/acmd/throws.rs +++ b/fighters/szerosuit/src/acmd/throws.rs @@ -209,7 +209,7 @@ unsafe extern "C" fn game_throwlw(agent: &mut L2CAgentBase) { let boma = agent.boma(); FT_MOTION_RATE_RANGE(agent, 1.0, 12.0, 7.0); if is_excute(agent) { - ATTACK_ABS(agent, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 2.0, 70, 78, 0, 68, 0.0, 1.0, *ATTACK_LR_CHECK_F, 0.0, true, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_NONE, *ATTACK_REGION_THROW); + ATTACK_ABS(agent, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 2.0, 70, 78, 0, 68, 0.0, 1.0, *ATTACK_LR_CHECK_F, 0.0, true, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_THROW); ATTACK_ABS(agent, *FIGHTER_ATTACK_ABSOLUTE_KIND_CATCH, 0, 3.0, 361, 100, 0, 60, 0.0, 1.0, *ATTACK_LR_CHECK_F, 0.0, true, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_NONE, *ATTACK_REGION_THROW); } frame(lua_state, 12.0); diff --git a/fighters/szerosuit/src/acmd/tilts.rs b/fighters/szerosuit/src/acmd/tilts.rs index 3f5499fe52..4ff64f6bae 100644 --- a/fighters/szerosuit/src/acmd/tilts.rs +++ b/fighters/szerosuit/src/acmd/tilts.rs @@ -133,7 +133,7 @@ unsafe extern "C" fn game_attackhi3(agent: &mut L2CAgentBase) { } frame(lua_state, 8.0); if is_excute(agent) { - ATTACK(agent, 0, 0, Hash40::new("top"), 8.0, 90, 100, 0, 50, 6.0, 0.0, 20.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("top"), 8.0, 90, 100, 0, 50, 6.0, 0.0, 20.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_KICK); ATTACK(agent, 1, 0, Hash40::new("top"), 8.0, 90, 100, 0, 50, 5.0, 0.0, 14.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_KICK); } frame(lua_state, 13.0); diff --git a/fighters/szerosuit/src/opff.rs b/fighters/szerosuit/src/opff.rs index 2fcd437f69..cae70b66b3 100644 --- a/fighters/szerosuit/src/opff.rs +++ b/fighters/szerosuit/src/opff.rs @@ -39,6 +39,16 @@ unsafe fn dair_rebound(fighter: &mut L2CFighterCommon) { } } +// Down Smash taunt input +unsafe fn youre_mine(fighter: &mut L2CFighterCommon) { + if fighter.is_motion(Hash40::new("attack_lw4")) && (20..24).contains(&(fighter.motion_frame() as u32)) { + if !VarModule::is_flag(fighter.object(), vars::szerosuit::status::YOURE_MINE) && fighter.is_button_on(Buttons::AppealAll) && AttackModule::is_infliction_status(fighter.module_accessor, *COLLISION_KIND_MASK_HIT) { + PLAY_SE(fighter, Hash40::new("vc_szerosuit_appeal03")); + VarModule::on_flag(fighter.object(), vars::szerosuit::status::YOURE_MINE); + } + } +} + unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) { if !fighter.is_in_hitlag() && !StatusModule::is_changing(fighter.module_accessor) @@ -57,6 +67,7 @@ unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) { pub unsafe fn moveset(fighter: &mut smash::lua2cpp::L2CFighterCommon, boma: &mut BattleObjectModuleAccessor) { flip_jump_jc_flipstool(boma); dair_rebound(fighter); + youre_mine(fighter); fastfall_specials(fighter); } From b010af82225e5a2245078ced7c6565df15910059 Mon Sep 17 00:00:00 2001 From: xTheft Date: Tue, 21 Apr 2026 10:49:11 -0500 Subject: [PATCH 2/3] dair, remove link code --- dynamic/src/consts.rs | 5 +---- fighters/szerosuit/src/acmd/aerials.rs | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/dynamic/src/consts.rs b/dynamic/src/consts.rs index fe2d56c67a..dab357922d 100644 --- a/dynamic/src/consts.rs +++ b/dynamic/src/consts.rs @@ -919,10 +919,7 @@ pub mod vars { } pub mod link { - pub mod status { - // flags - pub const ENABLE_SPECIAL_LW_CANCEL: i32 = 0x1000; - } + } pub mod littlemac { diff --git a/fighters/szerosuit/src/acmd/aerials.rs b/fighters/szerosuit/src/acmd/aerials.rs index 71d9b53584..e8186dc068 100644 --- a/fighters/szerosuit/src/acmd/aerials.rs +++ b/fighters/szerosuit/src/acmd/aerials.rs @@ -224,7 +224,7 @@ unsafe extern "C" fn game_attackairlw(agent: &mut L2CAgentBase) { if is_excute(agent) { ATTACK(agent, 0, 0, Hash40::new("legl"), 12.0, 100, 45, 0, 70, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); ATTACK(agent, 1, 0, Hash40::new("kneel"), 12.0, 100, 45, 0, 70, 4.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 2, 0, Hash40::new("kneel"), 12.0, 100, 45, 0, 70, 4.5, 6.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 2, 0, Hash40::new("kneel"), 12.0, 100, 45, 0, 70, 4.5, 6.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } frame(lua_state, 19.0); if is_excute(agent) { From eab268f679183439677ee3e67adbdbd262e14464 Mon Sep 17 00:00:00 2001 From: xTheft Date: Tue, 21 Apr 2026 14:46:25 -0500 Subject: [PATCH 3/3] taunt input to acmd, revert everything else --- fighters/szerosuit/src/acmd/aerials.rs | 24 ++++++++++++------------ fighters/szerosuit/src/acmd/smashes.rs | 9 +++++++++ fighters/szerosuit/src/acmd/throws.rs | 2 +- fighters/szerosuit/src/acmd/tilts.rs | 2 +- fighters/szerosuit/src/opff.rs | 11 ----------- 5 files changed, 23 insertions(+), 25 deletions(-) diff --git a/fighters/szerosuit/src/acmd/aerials.rs b/fighters/szerosuit/src/acmd/aerials.rs index e8186dc068..530add9b51 100644 --- a/fighters/szerosuit/src/acmd/aerials.rs +++ b/fighters/szerosuit/src/acmd/aerials.rs @@ -77,13 +77,13 @@ unsafe extern "C" fn game_attackairf(agent: &mut L2CAgentBase) { FT_MOTION_RATE_RANGE(agent, 6.0, 8.0, 4.0); if is_excute(agent) { // Air-only - ATTACK(agent, 0, 0, Hash40::new("legl"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 1, 0, Hash40::new("kneel"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 2, 0, Hash40::new("footl"), 5.0, 365, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("legl"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 1, 0, Hash40::new("kneel"), 5.0, 365, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 2, 0, Hash40::new("footl"), 5.0, 365, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); // Ground-only - ATTACK(agent, 5, 0, Hash40::new("legl"), 5.0, 70, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 4, 0, Hash40::new("kneel"), 5.0, 75, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 3, 0, Hash40::new("footl"), 5.0, 80, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 5, 0, Hash40::new("legl"), 5.0, 70, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 4, 0, Hash40::new("kneel"), 5.0, 75, 100, 30, 0, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 3, 0, Hash40::new("footl"), 5.0, 80, 100, 30, 0, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } frame(lua_state, 8.0); FT_MOTION_RATE(agent, 1.0); @@ -92,9 +92,9 @@ unsafe extern "C" fn game_attackairf(agent: &mut L2CAgentBase) { } frame(lua_state, 13.0); if is_excute(agent) { - ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 40, 100, 0, 40, 3.7, 1.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 40, 100, 0, 40, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 2, 0, Hash40::new("footr"), 10.0, 40, 100, 0, 40, 4.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 40, 100, 0, 40, 3.7, 1.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 40, 100, 0, 40, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 2, 0, Hash40::new("footr"), 10.0, 40, 100, 0, 40, 4.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } frame(lua_state, 17.0); FT_MOTION_RATE_RANGE(agent, 17.0, 40.0, 21.0); @@ -120,8 +120,8 @@ unsafe extern "C" fn game_attackairb(agent: &mut L2CAgentBase) { frame(lua_state, 8.0); FT_MOTION_RATE(agent, 1.0); if is_excute(agent) { - ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 361, 110, 0, 20, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 361, 110, 0, 20, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("legr"), 10.0, 361, 110, 0, 20, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 1, 0, Hash40::new("kneer"), 10.0, 361, 110, 0, 20, 3.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); ATTACK(agent, 2, 0, Hash40::new("footr"), 13.0, 361, 100, 0, 33, 4.5, 0.0, -1.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } wait(lua_state, 5.0); @@ -224,7 +224,7 @@ unsafe extern "C" fn game_attackairlw(agent: &mut L2CAgentBase) { if is_excute(agent) { ATTACK(agent, 0, 0, Hash40::new("legl"), 12.0, 100, 45, 0, 70, 4.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); ATTACK(agent, 1, 0, Hash40::new("kneel"), 12.0, 100, 45, 0, 70, 4.5, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); - ATTACK(agent, 2, 0, Hash40::new("kneel"), 12.0, 100, 45, 0, 70, 4.5, 6.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); + ATTACK(agent, 2, 0, Hash40::new("kneel"), 12.0, 100, 45, 0, 70, 4.5, 6.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK); } frame(lua_state, 19.0); if is_excute(agent) { diff --git a/fighters/szerosuit/src/acmd/smashes.rs b/fighters/szerosuit/src/acmd/smashes.rs index adf952c01c..65e5caa541 100644 --- a/fighters/szerosuit/src/acmd/smashes.rs +++ b/fighters/szerosuit/src/acmd/smashes.rs @@ -130,6 +130,15 @@ unsafe extern "C" fn game_attacklw4(agent: &mut L2CAgentBase) { ATTACK(agent, 0, 0, Hash40::new("top"), 8.0, 60, 90, 0, 0, 4.0, 0.0, 3.0, 13.0, Some(0.0), Some(3.0), Some(8.0), 0.6, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, 10, 0.0, 0, false, true, false, false, false, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_paralyze"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ELEC, *ATTACK_REGION_ENERGY); ATTACK(agent, 1, 0, Hash40::new("top"), 6.0, 60, 85, 0, 0, 7.0, 0.0, 3.0, 17.0, Some(0.0), Some(3.0), Some(10.0), 0.6, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, 10, 0.0, 0, false, true, false, false, false, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_paralyze"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ELEC, *ATTACK_REGION_ENERGY); } + frame(lua_state, 20.0); // Down Smash taunt input + if is_excute(agent) { + if agent.is_motion(Hash40::new("attack_lw4")) && (20..24).contains(&(agent.motion_frame() as u32)) { + if !VarModule::is_flag(agent.object(), vars::szerosuit::status::YOURE_MINE) && agent.is_button_on(Buttons::AppealAll) && AttackModule::is_infliction_status(agent.module_accessor, *COLLISION_KIND_MASK_HIT) { + PLAY_SE(agent, Hash40::new("vc_szerosuit_appeal03")); + VarModule::on_flag(agent.object(), vars::szerosuit::status::YOURE_MINE); + } + } + } wait(lua_state, 5.0); if is_excute(agent) { AttackModule::clear_all(boma); diff --git a/fighters/szerosuit/src/acmd/throws.rs b/fighters/szerosuit/src/acmd/throws.rs index 0edd36fa86..625c0ea845 100644 --- a/fighters/szerosuit/src/acmd/throws.rs +++ b/fighters/szerosuit/src/acmd/throws.rs @@ -209,7 +209,7 @@ unsafe extern "C" fn game_throwlw(agent: &mut L2CAgentBase) { let boma = agent.boma(); FT_MOTION_RATE_RANGE(agent, 1.0, 12.0, 7.0); if is_excute(agent) { - ATTACK_ABS(agent, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 2.0, 70, 78, 0, 68, 0.0, 1.0, *ATTACK_LR_CHECK_F, 0.0, true, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_THROW); + ATTACK_ABS(agent, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 2.0, 70, 78, 0, 68, 0.0, 1.0, *ATTACK_LR_CHECK_F, 0.0, true, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_NONE, *ATTACK_REGION_THROW); ATTACK_ABS(agent, *FIGHTER_ATTACK_ABSOLUTE_KIND_CATCH, 0, 3.0, 361, 100, 0, 60, 0.0, 1.0, *ATTACK_LR_CHECK_F, 0.0, true, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_NONE, *ATTACK_REGION_THROW); } frame(lua_state, 12.0); diff --git a/fighters/szerosuit/src/acmd/tilts.rs b/fighters/szerosuit/src/acmd/tilts.rs index 4ff64f6bae..3f5499fe52 100644 --- a/fighters/szerosuit/src/acmd/tilts.rs +++ b/fighters/szerosuit/src/acmd/tilts.rs @@ -133,7 +133,7 @@ unsafe extern "C" fn game_attackhi3(agent: &mut L2CAgentBase) { } frame(lua_state, 8.0); if is_excute(agent) { - ATTACK(agent, 0, 0, Hash40::new("top"), 8.0, 90, 100, 0, 50, 6.0, 0.0, 20.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_aura"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_KICK); + ATTACK(agent, 0, 0, Hash40::new("top"), 8.0, 90, 100, 0, 50, 6.0, 0.0, 20.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_KICK); ATTACK(agent, 1, 0, Hash40::new("top"), 8.0, 90, 100, 0, 50, 5.0, 0.0, 14.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_KICK); } frame(lua_state, 13.0); diff --git a/fighters/szerosuit/src/opff.rs b/fighters/szerosuit/src/opff.rs index cae70b66b3..2fcd437f69 100644 --- a/fighters/szerosuit/src/opff.rs +++ b/fighters/szerosuit/src/opff.rs @@ -39,16 +39,6 @@ unsafe fn dair_rebound(fighter: &mut L2CFighterCommon) { } } -// Down Smash taunt input -unsafe fn youre_mine(fighter: &mut L2CFighterCommon) { - if fighter.is_motion(Hash40::new("attack_lw4")) && (20..24).contains(&(fighter.motion_frame() as u32)) { - if !VarModule::is_flag(fighter.object(), vars::szerosuit::status::YOURE_MINE) && fighter.is_button_on(Buttons::AppealAll) && AttackModule::is_infliction_status(fighter.module_accessor, *COLLISION_KIND_MASK_HIT) { - PLAY_SE(fighter, Hash40::new("vc_szerosuit_appeal03")); - VarModule::on_flag(fighter.object(), vars::szerosuit::status::YOURE_MINE); - } - } -} - unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) { if !fighter.is_in_hitlag() && !StatusModule::is_changing(fighter.module_accessor) @@ -67,7 +57,6 @@ unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) { pub unsafe fn moveset(fighter: &mut smash::lua2cpp::L2CFighterCommon, boma: &mut BattleObjectModuleAccessor) { flip_jump_jc_flipstool(boma); dair_rebound(fighter); - youre_mine(fighter); fastfall_specials(fighter); }