Skip to content

Commit 2d620d9

Browse files
authored
Merge pull request #2149 from HDR-Development/throw-sweep
Throw Sweep
2 parents 8e3eb7a + 1883705 commit 2d620d9

File tree

78 files changed

+1998
-701
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1998
-701
lines changed

fighters/bayonetta/src/acmd/throws.rs

+36-30
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,39 @@
1-
21
use super::*;
32

3+
#[acmd_script( agent = "bayonetta", script = "game_throwf", category = ACMD_GAME, low_priority )]
4+
unsafe fn bayonetta_throw_f_game(fighter: &mut L2CAgentBase) {
5+
let lua_state = fighter.lua_state_agent;
6+
let boma = fighter.boma();
7+
if is_excute(fighter) {
8+
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 4.0, 45, 165, 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);
9+
ATTACK_ABS(fighter, *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);
10+
}
11+
frame(lua_state, 14.0);
12+
if is_excute(fighter) {
13+
ATTACK(fighter, 0, 0, Hash40::new("top"), 6.0, 55, 160, 0, 30, 6.0, 0.0, 10.0, 5.0, None, None, None, 1.4, 1.0, *ATTACK_SETOFF_KIND_OFF, *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_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_NONE, *ATTACK_REGION_BODY);
14+
AttackModule::set_catch_only_all(boma, true, false);
15+
CHECK_FINISH_CAMERA(fighter, 14, 7);
16+
}
17+
frame(lua_state, 15.0);
18+
FT_MOTION_RATE_RANGE(fighter, 15.0, 50.0, 28.0);
19+
if is_excute(fighter) {
20+
let target = WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_OBJECT);
21+
let target_group = WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_GROUP);
22+
let target_no = WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_NO);
23+
ATK_HIT_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, Hash40::new("throw"), target, target_group, target_no);
24+
AttackModule::clear_all(boma);
25+
}
26+
frame(lua_state, 50.0);
27+
FT_MOTION_RATE(fighter, 1.0);
28+
29+
}
30+
431
#[acmd_script( agent = "bayonetta", script = "game_throwhi" , category = ACMD_GAME , low_priority)]
532
unsafe fn bayonetta_throw_hi_game(fighter: &mut L2CAgentBase) {
633
let lua_state = fighter.lua_state_agent;
734
let boma = fighter.boma();
835
if is_excute(fighter) {
9-
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 4.5, 84, 108, 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);
36+
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 4.5, 85, 78, 0, 55, 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);
1037
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_CATCH, 0, 3.0, 361, 100, 0, 40, 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);
1138
}
1239
frame(lua_state, 9.0);
@@ -15,7 +42,6 @@ unsafe fn bayonetta_throw_hi_game(fighter: &mut L2CAgentBase) {
1542
ATTACK(fighter, 1, 0, Hash40::new("kneel"), 3.0, 80, 170, 0, 60, 5.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_OFF, *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);
1643
AttackModule::set_catch_only_all(boma, true, false);
1744
CHECK_FINISH_CAMERA(fighter, 8, 18);
18-
//FighterCutInManager::set_throw_finish_zoom_rate(boma, 1.3);
1945
}
2046
frame(lua_state, 10.0);
2147
if is_excute(fighter) {
@@ -26,14 +52,16 @@ unsafe fn bayonetta_throw_hi_game(fighter: &mut L2CAgentBase) {
2652
if is_excute(fighter) {
2753
AttackModule::clear_all(boma);
2854
}
55+
frame(lua_state, 35.0);
56+
FT_MOTION_RATE(fighter, 1.0);
2957
}
3058

3159
#[acmd_script( agent = "bayonetta", script = "game_throwlw" , category = ACMD_GAME , low_priority)]
3260
unsafe fn bayonetta_throw_lw_game(fighter: &mut L2CAgentBase) {
3361
let lua_state = fighter.lua_state_agent;
3462
let boma = fighter.boma();
3563
if is_excute(fighter) {
36-
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 5.0, 78, 156, 0, 26, 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);
64+
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 5.0, 81, 170, 0, 26, 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);
3765
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_CATCH, 0, 3.0, 361, 100, 0, 40, 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);
3866
}
3967
frame(lua_state, 20.0);
@@ -48,36 +76,14 @@ unsafe fn bayonetta_throw_lw_game(fighter: &mut L2CAgentBase) {
4876
ATK_HIT_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, Hash40::new("throw"), WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_OBJECT), WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_GROUP), WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_NO));
4977
AttackModule::clear_all(boma);
5078
}
51-
}
52-
53-
#[acmd_script( agent = "bayonetta", script = "game_throwf", category = ACMD_GAME, low_priority )]
54-
unsafe fn bayonetta_throw_f_game(fighter: &mut L2CAgentBase) {
55-
if is_excute(fighter) {
56-
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 4.0, 45, 140, 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);
57-
ATTACK_ABS(fighter, *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);
58-
}
59-
frame(fighter.lua_state_agent, 14.0);
60-
if is_excute(fighter) {
61-
ATTACK(fighter, 0, 0, Hash40::new("top"), 6.0, 55, 160, 0, 30, 6.0, 0.0, 10.0, 5.0, None, None, None, 1.4, 1.0, *ATTACK_SETOFF_KIND_OFF, *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_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_NONE, *ATTACK_REGION_BODY);
62-
AttackModule::set_catch_only_all(fighter.module_accessor, true, false);
63-
CHECK_FINISH_CAMERA(fighter, 14, 7);
64-
}
65-
frame(fighter.lua_state_agent, 15.0);
66-
if is_excute(fighter) {
67-
let target = WorkModule::get_int64(fighter.module_accessor, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_OBJECT);
68-
let target_group = WorkModule::get_int64(fighter.module_accessor, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_GROUP);
69-
let target_no = WorkModule::get_int64(fighter.module_accessor, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_NO);
70-
ATK_HIT_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, Hash40::new("throw"), target, target_group, target_no);
71-
AttackModule::clear_all(fighter.module_accessor);
72-
}
73-
FT_MOTION_RATE_RANGE(fighter, 15.0, 50.0, 28.0);
79+
frame(lua_state, 41.0);
80+
FT_MOTION_RATE(fighter, 1.0);
7481
}
7582

7683
pub fn install() {
7784
install_acmd_scripts!(
85+
bayonetta_throw_f_game,
7886
bayonetta_throw_hi_game,
7987
bayonetta_throw_lw_game,
80-
bayonetta_throw_f_game,
8188
);
82-
}
83-
89+
}

fighters/brave/src/acmd/throws.rs

+8-14
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ unsafe fn brave_throw_f_game(fighter: &mut L2CAgentBase) {
55
let lua_state = fighter.lua_state_agent;
66
let boma = fighter.boma();
77
if is_excute(fighter) {
8-
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 7.0, 36, 55, 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);
8+
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 7.0, 35, 55, 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);
99
ATTACK_ABS(fighter, *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);
1010
}
1111
frame(lua_state, 15.0);
1212
if is_excute(fighter) {
13-
//CHECK_FINISH_CAMERA(fighter, 14, 3);
14-
//lua_bind::FighterCutInManager::set_throw_finish_offset(singletons::FighterCutInManager(), Vector3f{x: 7.5, y: 1.0, z: 0.0});
13+
CHECK_FINISH_CAMERA(fighter, 14, 3);
1514
}
1615
frame(lua_state, 16.0);
1716
if is_excute(fighter) {
@@ -21,7 +20,7 @@ unsafe fn brave_throw_f_game(fighter: &mut L2CAgentBase) {
2120
ATK_HIT_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, Hash40::new("throw"), target, target_group, target_no);
2221
}
2322
frame(lua_state, 23.0);
24-
FT_MOTION_RATE(fighter, 11.0/(44.0 - 23.0));
23+
FT_MOTION_RATE_RANGE(fighter, 23.0, 44.0, 11.0);
2524
frame(lua_state, 44.0);
2625
FT_MOTION_RATE(fighter, 1.0);
2726
}
@@ -37,8 +36,7 @@ unsafe fn brave_throw_b_game(fighter: &mut L2CAgentBase) {
3736
frame(lua_state, 17.0);
3837
if is_excute(fighter) {
3938
REVERSE_LR(fighter);
40-
//CHECK_FINISH_CAMERA(fighter, 11, 6);
41-
//lua_bind::FighterCutInManager::set_throw_finish_offset(singletons::FighterCutInManager(), Vector3f{x: 9.5, y: 0.5, z: 0.0});
39+
CHECK_FINISH_CAMERA(fighter, 11, 6);
4240
}
4341
frame(lua_state, 18.0);
4442
if is_excute(fighter) {
@@ -48,8 +46,8 @@ unsafe fn brave_throw_b_game(fighter: &mut L2CAgentBase) {
4846
ATK_HIT_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, Hash40::new("throw"), target, target_group, target_no);
4947
}
5048
frame(lua_state, 26.0);
51-
FT_MOTION_RATE(fighter, 13.0/(43.0 - 26.0));
52-
frame(lua_state, 43.0);
49+
FT_MOTION_RATE_RANGE(fighter, 26.0, 42.0, 12.0);
50+
frame(lua_state, 42.0);
5351
FT_MOTION_RATE(fighter, 1.0);
5452
}
5553

@@ -63,9 +61,7 @@ unsafe fn brave_throw_hi_game(fighter: &mut L2CAgentBase) {
6361
}
6462
frame(lua_state, 16.0);
6563
if is_excute(fighter) {
66-
//CHECK_FINISH_CAMERA(fighter, 0, 31);
67-
//lua_bind::FighterCutInManager::set_throw_finish_zoom_rate(singletons::FighterCutInManager(), 1.6);
68-
//lua_bind::FighterCutInManager::set_throw_finish_offset(singletons::FighterCutInManager(), Vector3f{x: 2.0, y: 8.5, z: 0.0});
64+
CHECK_FINISH_CAMERA(fighter, 0, 31);
6965
}
7066
frame(lua_state, 17.0);
7167
if is_excute(fighter) {
@@ -87,9 +83,7 @@ unsafe fn brave_throw_lw_game(fighter: &mut L2CAgentBase) {
8783
frame(lua_state, 18.0);
8884
if is_excute(fighter) {
8985
FT_CATCH_STOP(fighter, 9, 1);
90-
//CHECK_FINISH_CAMERA(fighter, 3, 0);
91-
//lua_bind::FighterCutInManager::set_throw_finish_zoom_rate(singletons::FighterCutInManager(), 1.2);
92-
//lua_bind::FighterCutInManager::set_throw_finish_offset(singletons::FighterCutInManager(), Vector3f{x: 2.5, y: 0.5, z: 0.0});
86+
CHECK_FINISH_CAMERA(fighter, 3, 0);
9387
}
9488
frame(lua_state, 19.0);
9589
if is_excute(fighter) {

fighters/buddy/src/acmd/throws.rs

+49-24
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
21
use super::*;
32

4-
53
#[acmd_script( agent = "buddy", script = "game_throwf" , category = ACMD_GAME , low_priority)]
6-
unsafe fn game_throwf(fighter: &mut L2CAgentBase) {
4+
unsafe fn buddy_throw_f_game(fighter: &mut L2CAgentBase) {
75
let lua_state = fighter.lua_state_agent;
86
let boma = fighter.boma();
97
if is_excute(fighter) {
10-
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 4.0, 45, 70, 0, 65, 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);
8+
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 4.0, 52, 70, 0, 65, 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);
119
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_CATCH, 0, 4.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);
1210
}
1311
frame(lua_state, 9.0);
1412
if is_excute(fighter) {
15-
ATTACK(fighter, 0, 0, Hash40::new("k_footr"), 6.0, 64, 34, 0, 82, 4.6, 2.8, 2.8, 0.0, None, None, None, 1.25, 1.0, *ATTACK_SETOFF_KIND_OFF, *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_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK);
13+
ATTACK(fighter, 0, 0, Hash40::new("k_footr"), 6.0, 64, 34, 0, 82, 4.6, 2.8, 2.8, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_OFF, *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_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_KICK);
1614
AttackModule::set_catch_only_all(boma, true, false);
1715
}
1816
frame(lua_state, 10.0);
@@ -28,7 +26,7 @@ unsafe fn game_throwf(fighter: &mut L2CAgentBase) {
2826
}
2927

3028
#[acmd_script( agent = "buddy", script = "game_throwb" , category = ACMD_GAME , low_priority)]
31-
unsafe fn game_throwb(fighter: &mut L2CAgentBase) {
29+
unsafe fn buddy_throw_b_game(fighter: &mut L2CAgentBase) {
3230
let lua_state = fighter.lua_state_agent;
3331
let boma = fighter.boma();
3432
if is_excute(fighter) {
@@ -55,34 +53,61 @@ unsafe fn game_throwb(fighter: &mut L2CAgentBase) {
5553

5654
}
5755

58-
#[acmd_script( agent = "buddy", script = "game_throwlw" , category = ACMD_GAME , low_priority)]
59-
unsafe fn game_throwlw(fighter: &mut L2CAgentBase) {
56+
#[acmd_script( agent = "buddy", script = "game_throwhi" , category = ACMD_GAME , low_priority)]
57+
unsafe fn buddy_throw_hi_game(fighter: &mut L2CAgentBase) {
6058
let lua_state = fighter.lua_state_agent;
6159
let boma = fighter.boma();
6260
if is_excute(fighter) {
63-
FT_MOTION_RATE(fighter, 7.0/(10.0-1.0));
64-
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 8.0, 75, 80, 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);
61+
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 3.0, 104, 64, 0, 78, 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);
6562
ATTACK_ABS(fighter, *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);
6663
}
67-
frame(lua_state, 10.0);
64+
frame(lua_state, 13.0);
65+
if is_excute(fighter) {
66+
ATTACK(fighter, 0, 0, Hash40::new("top"), 5.4, 361, 100, 0, 10, 4.0, 0.0, 24.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_OFF, *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_normal"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_HEAD);
67+
AttackModule::set_catch_only_all(boma, true, false);
68+
}
69+
frame(lua_state, 14.0);
6870
if is_excute(fighter) {
69-
FT_MOTION_RATE(fighter, 10.0/(25.0-10.0));
71+
CHECK_FINISH_CAMERA(fighter, -1, 18);
7072
}
71-
frame(lua_state, 25.0);
73+
frame(lua_state, 15.0);
7274
if is_excute(fighter) {
73-
FT_MOTION_RATE(fighter, 1.0);
75+
let target = WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_OBJECT);
76+
let target_group = WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_GROUP);
77+
let target_no = WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_NO);
78+
ATK_HIT_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, Hash40::new("throw"), target, target_group, target_no);
79+
AttackModule::clear_all(boma);
7480
}
81+
frame(lua_state, 16.0);
82+
FT_MOTION_RATE(fighter, 0.6);
83+
frame(lua_state, 56.0);
84+
FT_MOTION_RATE(fighter, 1.0);
85+
}
86+
87+
#[acmd_script( agent = "buddy", script = "game_throwlw" , category = ACMD_GAME , low_priority)]
88+
unsafe fn buddy_throw_lw_game(fighter: &mut L2CAgentBase) {
89+
let lua_state = fighter.lua_state_agent;
90+
let boma = fighter.boma();
91+
FT_MOTION_RATE_RANGE(fighter, 1.0, 10.0, 7.0);
92+
if is_excute(fighter) {
93+
ATTACK_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, 0, 6.0, 75, 80, 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);
94+
ATTACK_ABS(fighter, *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);
95+
}
96+
frame(lua_state, 10.0);
97+
FT_MOTION_RATE_RANGE(fighter, 10.0, 25.0, 10.0);
98+
frame(lua_state, 25.0);
99+
FT_MOTION_RATE(fighter, 1.0);
75100
frame(lua_state, 34.0);
101+
FT_MOTION_RATE(fighter, 1.25);
76102
if is_excute(fighter) {
77103
ATK_HIT_ABS(fighter, *FIGHTER_ATTACK_ABSOLUTE_KIND_THROW, Hash40::new("throw"), WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_OBJECT), WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_GROUP), WorkModule::get_int64(boma, *FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_NO));
78-
FT_MOTION_RATE(fighter, 1.25);
79104
AttackModule::clear_all(boma);
80105
}
81106

82107
}
83108

84109
#[acmd_script( agent = "buddy", script = "effect_throwlw" , category = ACMD_EFFECT , low_priority)]
85-
unsafe fn effect_throwlw(fighter: &mut L2CAgentBase) {
110+
unsafe fn buddy_throw_lw_effect(fighter: &mut L2CAgentBase) {
86111
let lua_state = fighter.lua_state_agent;
87112
let boma = fighter.boma();
88113
frame(lua_state, 13.0);
@@ -105,7 +130,7 @@ unsafe fn effect_throwlw(fighter: &mut L2CAgentBase) {
105130
}
106131

107132
#[acmd_script( agent = "buddy", script = "sound_throwlw" , category = ACMD_SOUND , low_priority)]
108-
unsafe fn sound_throwlw(fighter: &mut L2CAgentBase) {
133+
unsafe fn buddy_throw_lw_sound(fighter: &mut L2CAgentBase) {
109134
let lua_state = fighter.lua_state_agent;
110135
let boma = fighter.boma();
111136
frame(lua_state, 13.0);
@@ -129,11 +154,11 @@ unsafe fn sound_throwlw(fighter: &mut L2CAgentBase) {
129154

130155
pub fn install() {
131156
install_acmd_scripts!(
132-
game_throwf,
133-
game_throwb,
134-
game_throwlw,
135-
effect_throwlw,
136-
sound_throwlw,
157+
buddy_throw_f_game,
158+
buddy_throw_b_game,
159+
buddy_throw_hi_game,
160+
buddy_throw_lw_game,
161+
buddy_throw_lw_effect,
162+
buddy_throw_lw_sound,
137163
);
138-
}
139-
164+
}

fighters/chrom/src/acmd/throws.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
21
use super::*;
32

43

4+
55
pub fn install() {
66
install_acmd_scripts!(
7-
);
8-
}
97

8+
);
9+
}

0 commit comments

Comments
 (0)