Skip to content

Commit cdbb2e9

Browse files
authored
Merge pull request HDR-Development#2332 from HDR-Development/swordfighter
Mii Swordfighter adjustments
2 parents 02b519f + e813f09 commit cdbb2e9

File tree

6 files changed

+137
-174
lines changed

6 files changed

+137
-174
lines changed

fighters/miiswordsman/src/acmd/aerials.rs

+50-70
Large diffs are not rendered by default.

fighters/miiswordsman/src/acmd/ground.rs

+27-37
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,27 @@ unsafe extern "C" fn game_attack11(agent: &mut L2CAgentBase) {
55
let boma = agent.boma();
66
frame(lua_state, 6.0);
77
if is_excute(agent) {
8-
ATTACK(agent, 0, 0, Hash40::new("top"), 3.5, 361, 25, 0, 27, 2.5, 0.0, 5.5, 7.8, Some(0.0), Some(5.5), Some(8.8), 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_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
9-
ATTACK(agent, 1, 0, Hash40::new("top"), 3.5, 180, 15, 0, 25, 2.5, 0.0, 5.5, 7.8, Some(0.0), Some(5.5), Some(18.0), 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_GA, *COLLISION_CATEGORY_MASK_FIGHTER, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
10-
ATTACK(agent, 2, 0, Hash40::new("top"), 3.5, 361, 15, 0, 25, 2.5, 0.0, 5.5, 7.8, Some(0.0), Some(5.5), Some(18.0), 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_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
11-
AttackModule::set_add_reaction_frame(boma, 0, 3.0, false);
12-
AttackModule::set_add_reaction_frame(boma, 1, 3.0, false);
13-
AttackModule::set_add_reaction_frame(boma, 2, 3.0, false);
8+
ATTACK(agent, 0, 0, Hash40::new("top"), 3.5, 361, 25, 0, 27, 2.5, 0.0, 5.5, 7.8, Some(0.0), Some(5.5), Some(16.0), 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_GA_d, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
9+
ATTACK(agent, 1, 0, Hash40::new("top"), 3.5, 361, 15, 0, 25, 2.5, 0.0, 5.5, 7.8, Some(0.0), Some(5.5), Some(16.0), 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_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
10+
AttackModule::set_add_reaction_frame_revised(boma, 0, 3.0, false);
11+
AttackModule::set_down_only(boma, 1, false);
1412
}
1513
wait(lua_state, 2.0);
1614
if is_excute(agent) {
1715
AttackModule::clear_all(boma);
1816
WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_ENABLE_COMBO);
1917
}
20-
frame(lua_state, 14.0);
21-
if is_excute(agent) {
22-
//WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_ENABLE_NO_HIT_COMBO);
23-
}
2418
}
2519

2620
unsafe extern "C" fn game_attack12(agent: &mut L2CAgentBase) {
2721
let lua_state = agent.lua_state_agent;
2822
let boma = agent.boma();
2923
frame(lua_state, 6.0);
3024
if is_excute(agent) {
31-
// Launching hitboxes
32-
ATTACK(agent, 0, 0, Hash40::new("top"), 3.5, 78, 20, 0, 30, 3.5, 0.0, 6.2, 10.0, Some(0.0), Some(6.2), Some(18.0), 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_GA_d, *COLLISION_CATEGORY_MASK_FIGHTER, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
33-
// Locking hitboxes
34-
ATTACK(agent, 1, 0, Hash40::new("top"), 3.5, 361, 25, 0, 30, 3.5, 0.0, 4.2, 10.0, Some(0.0), Some(4.2), Some(11.0), 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_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
35-
ATTACK(agent, 2, 0, Hash40::new("top"), 3.5, 180, 15, 0, 25, 3.5, 0.0, 4.2, 10.0, Some(0.0), Some(4.2), Some(18.0), 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_FIGHTER, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
36-
ATTACK(agent, 3, 0, Hash40::new("top"), 3.5, 361, 15, 0, 25, 3.5, 0.0, 4.2, 10.0, Some(0.0), Some(4.2), Some(18.0), 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_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
37-
AttackModule::set_add_reaction_frame(boma, 0, 4.0, false);
25+
ATTACK(agent, 0, 0, Hash40::new("top"), 3.5, 78, 20, 0, 30, 3.5, 0.0, 6.2, 10.0, Some(0.0), Some(6.2), Some(16.0), 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_GA_d, *COLLISION_CATEGORY_MASK_FIGHTER, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
26+
ATTACK(agent, 1, 0, Hash40::new("top"), 3.5, 361, 15, 0, 25, 3.5, 0.0, 4.2, 10.0, Some(0.0), Some(4.2), Some(16.0), 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_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
27+
AttackModule::set_add_reaction_frame_revised(boma, 0, 4.0, false);
28+
AttackModule::set_down_only(boma, 1, true);
3829
}
3930
frame(lua_state, 8.0);
4031
if is_excute(agent) {
@@ -45,21 +36,17 @@ unsafe extern "C" fn game_attack12(agent: &mut L2CAgentBase) {
4536
AttackModule::clear_all(boma);
4637
WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_ENABLE_COMBO);
4738
}
48-
frame(lua_state, 14.0);
49-
if is_excute(agent) {
50-
//WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_ENABLE_NO_HIT_COMBO);
51-
}
5239
}
5340

5441
unsafe extern "C" fn game_attack13(agent: &mut L2CAgentBase) {
5542
let lua_state = agent.lua_state_agent;
5643
let boma = agent.boma();
5744
frame(lua_state, 5.0);
5845
if is_excute(agent) {
59-
ATTACK(agent, 0, 0, Hash40::new("armr"), 5.0, 30, 70, 0, 75, 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_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
60-
ATTACK(agent, 1, 0, Hash40::new("haver"), 5.0, 30, 70, 0, 70, 3.0, 0.0, 2.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_SWORD);
61-
ATTACK(agent, 2, 0, Hash40::new("haver"), 5.0, 30, 70, 0, 70, 3.0, 0.0, 6.75, 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_SWORD);
62-
ATTACK(agent, 3, 0, Hash40::new("haver"), 6.0, 30, 70, 0, 70, 3.0, 0.0, 11.5, 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_SWORD);
46+
ATTACK(agent, 0, 0, Hash40::new("armr"), 4.0, 30, 70, 0, 70, 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_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
47+
ATTACK(agent, 1, 0, Hash40::new("haver"), 5.0, 30, 70, 0, 70, 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_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
48+
ATTACK(agent, 2, 0, Hash40::new("haver"), 5.0, 30, 70, 0, 70, 3.0, 0.0, 3.5, 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_SWORD);
49+
ATTACK(agent, 3, 0, Hash40::new("haver"), 6.0, 30, 70, 0, 70, 3.0, 0.0, 9.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_SWORD);
6350
}
6451
wait(lua_state, 3.0);
6552
if is_excute(agent) {
@@ -70,23 +57,26 @@ unsafe extern "C" fn game_attack13(agent: &mut L2CAgentBase) {
7057
unsafe extern "C" fn game_attackdash(agent: &mut L2CAgentBase) {
7158
let lua_state = agent.lua_state_agent;
7259
let boma = agent.boma();
73-
frame(lua_state, 8.0);
60+
frame(lua_state, 7.0);
61+
FT_MOTION_RATE_RANGE(agent, 7.0, 8.5, 1.0);
62+
frame(lua_state, 8.5);
63+
FT_MOTION_RATE_RANGE(agent, 8.5, 10.0, 4.0);
7464
if is_excute(agent) {
75-
// Body/Sword Hitboxes
76-
ATTACK(agent, 0, 0, Hash40::new("shoulderr"), 10.0, 361, 80, 0, 50, 3.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_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_SWORD);
77-
ATTACK(agent, 1, 0, Hash40::new("armr"), 10.0, 361, 80, 0, 50, 3.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_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_SWORD);
78-
ATTACK(agent, 2, 0, Hash40::new("haver"), 10.0, 361, 80, 0, 50, 3.25, 0.0, 2.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_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_SWORD);
79-
ATTACK(agent, 3, 0, Hash40::new("haver"), 10.0, 361, 80, 0, 50, 3.25, 0.0, 6.75, 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_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_SWORD);
80-
ATTACK(agent, 4, 0, Hash40::new("haver"), 14.5, 361, 80, 0, 50, 3.25, 0.0, 11.5, 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_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
65+
ATTACK(agent, 0, 0, Hash40::new("armr"), 10.0, 361, 75, 0, 50, 3.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_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_SWORD);
66+
ATTACK(agent, 1, 0, Hash40::new("haver"), 12.0, 361, 75, 0, 50, 3.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_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_SWORD);
67+
ATTACK(agent, 2, 0, Hash40::new("haver"), 12.0, 361, 75, 0, 50, 3.0, 0.0, 3.5, 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_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_SWORD);
68+
ATTACK(agent, 3, 0, Hash40::new("haver"), 15.0, 361, 75, 0, 50, 3.0, 0.0, 9.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_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
8169
}
82-
frame(lua_state, 12.0);
70+
frame(lua_state, 10.0);
71+
FT_MOTION_RATE(agent, 1.0);
8372
if is_excute(agent) {
8473
AttackModule::clear_all(boma);
8574
}
8675
frame(lua_state, 28.0);
87-
if is_excute(agent) {
88-
FT_MOTION_RATE(agent, 0.75);
89-
}
76+
FT_MOTION_RATE_RANGE(agent, 28.0, 46.0, 12.0);
77+
frame(lua_state, 46.0);
78+
FT_MOTION_RATE(agent, 1.0);
79+
9080
}
9181

9282
unsafe extern "C" fn expression_attackdash(agent: &mut L2CAgentBase) {
@@ -100,7 +90,7 @@ unsafe extern "C" fn expression_attackdash(agent: &mut L2CAgentBase) {
10090
if is_excute(agent) {
10191
ControlModule::set_rumble(boma, Hash40::new("rbkind_nohitm"), 0, false, *BATTLE_OBJECT_ID_INVALID as u32);
10292
}
103-
frame(lua_state, 8.0);
93+
frame(lua_state, 8.5);
10494
if is_excute(agent) {
10595
RUMBLE_HIT(agent, Hash40::new("rbkind_slashm"), 0);
10696
}

0 commit comments

Comments
 (0)