1
-
2
1
use super :: * ;
3
2
4
- #[ acmd_script( agent = "edge" , script = "game_attack11" , category = ACMD_GAME , low_priority) ]
3
+ #[ acmd_script( agent = "edge" , script = "game_attack11" , category = ACMD_GAME , low_priority ) ]
5
4
unsafe fn sephiroth_attack_11_game ( fighter : & mut L2CAgentBase ) {
5
+ let lua_state = fighter. lua_state_agent ;
6
+ let boma = fighter. boma ( ) ;
7
+ if is_excute ( fighter) {
8
+ FighterAreaModuleImpl :: enable_fix_jostle_area ( boma, 2.0 , 3.0 ) ;
9
+ }
10
+ frame ( lua_state, 5.0 ) ;
11
+ if is_excute ( fighter) {
12
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "legl" ) , 2.5 , 60 , 100 , 30 , 1 , 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_d , * 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 ) ;
13
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "kneel" ) , 2.5 , 82 , 100 , 30 , 1 , 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_d , * 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 ) ;
14
+ ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "kneel" ) , 2.5 , 82 , 100 , 30 , 1 , 3.5 , 4.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_d , * COLLISION_CATEGORY_MASK_FIGHTER , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
15
+ ATTACK ( fighter, 3 , 0 , Hash40 :: new ( "top" ) , 2.5 , 82 , 100 , 30 , 1 , 3.5 , 0.0 , 6.0 , 8.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_d , * COLLISION_CATEGORY_MASK_FIGHTER , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
16
+ ATTACK ( fighter, 4 , 0 , Hash40 :: new ( "top" ) , 2.5 , 361 , 15 , 0 , 25 , 3.0 , 0.0 , 3.0 , 4.0 , Some ( 0.0 ) , Some ( 3.0 ) , Some ( 12.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_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
17
+ AttackModule :: set_down_only ( boma, 4 , false ) ;
18
+ }
19
+ wait ( lua_state, 3.0 ) ;
20
+ if is_excute ( fighter) {
21
+ AttackModule :: clear_all ( boma) ;
22
+ }
23
+ frame ( lua_state, 9.0 ) ;
24
+ if is_excute ( fighter) {
25
+ WorkModule :: on_flag ( boma, * FIGHTER_STATUS_ATTACK_FLAG_ENABLE_COMBO ) ;
26
+ }
27
+ frame ( lua_state, 18.0 ) ;
28
+ if is_excute ( fighter) {
29
+ WorkModule :: on_flag ( boma, * FIGHTER_STATUS_ATTACK_FLAG_ENABLE_NO_HIT_COMBO ) ;
30
+ }
31
+ }
32
+
33
+ #[ acmd_script( agent = "edge" , script = "expression_attack11" , category = ACMD_EXPRESSION , low_priority ) ]
34
+ unsafe fn sephiroth_attack_11_expression ( fighter : & mut L2CAgentBase ) {
35
+ let lua_state = fighter. lua_state_agent ;
36
+ let boma = fighter. boma ( ) ;
37
+ if is_excute ( fighter) {
38
+ slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE , * SLOPE_STATUS_LR ) ;
39
+ }
40
+ frame ( lua_state, 3.0 ) ;
41
+ if is_excute ( fighter) {
42
+ slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_R , 4 ) ;
43
+ }
44
+ frame ( lua_state, 4.5 ) ;
45
+ if is_excute ( fighter) {
46
+ ControlModule :: set_rumble ( boma, Hash40 :: new ( "rbkind_nohitm" ) , 0 , false , * BATTLE_OBJECT_ID_INVALID as u32 ) ;
47
+ }
48
+ frame ( lua_state, 6.5 ) ;
49
+ if is_excute ( fighter) {
50
+ macros:: RUMBLE_HIT ( fighter, Hash40 :: new ( "rbkind_attackm" ) , 0 ) ;
51
+ }
52
+ frame ( lua_state, 35.0 ) ;
53
+ if is_excute ( fighter) {
54
+ slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_LR , 13 ) ;
55
+ }
56
+ }
57
+
58
+ #[ acmd_script( agent = "edge" , script = "game_attack12" , category = ACMD_GAME , low_priority ) ]
59
+ unsafe fn sephiroth_attack_12_game ( fighter : & mut L2CAgentBase ) {
60
+ let lua_state = fighter. lua_state_agent ;
61
+ let boma = fighter. boma ( ) ;
62
+ if is_excute ( fighter) {
63
+ FighterAreaModuleImpl :: enable_fix_jostle_area ( boma, 4.0 , 3.0 ) ;
64
+ }
65
+ frame ( lua_state, 5.0 ) ;
66
+ if is_excute ( fighter) {
67
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "legr" ) , 3.0 , 60 , 100 , 30 , 1 , 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_d , * 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 ) ;
68
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "kneer" ) , 3.0 , 75 , 100 , 30 , 1 , 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_d , * 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 ) ;
69
+ ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "kneer" ) , 3.0 , 75 , 100 , 30 , 1 , 3.5 , 4.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_d , * COLLISION_CATEGORY_MASK_FIGHTER , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
70
+ ATTACK ( fighter, 3 , 0 , Hash40 :: new ( "top" ) , 3.0 , 75 , 100 , 30 , 1 , 3.5 , 0.0 , 6.0 , 5.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_d , * COLLISION_CATEGORY_MASK_FIGHTER , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
71
+ ATTACK ( fighter, 4 , 0 , Hash40 :: new ( "top" ) , 3.0 , 75 , 100 , 30 , 1 , 3.5 , 0.0 , 6.0 , 11.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_d , * COLLISION_CATEGORY_MASK_FIGHTER , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
72
+ ATTACK ( fighter, 5 , 0 , Hash40 :: new ( "top" ) , 3.0 , 361 , 15 , 0 , 25 , 3.0 , 0.0 , 3.0 , 4.0 , Some ( 0.0 ) , Some ( 3.0 ) , Some ( 14.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_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
73
+ AttackModule :: set_down_only ( boma, 5 , false ) ;
74
+ }
75
+ wait ( lua_state, 3.0 ) ;
76
+ if is_excute ( fighter) {
77
+ AttackModule :: clear_all ( boma) ;
78
+ }
79
+ frame ( lua_state, 9.0 ) ;
80
+ if is_excute ( fighter) {
81
+ WorkModule :: on_flag ( boma, * FIGHTER_STATUS_ATTACK_FLAG_ENABLE_COMBO ) ;
82
+ }
83
+ frame ( lua_state, 18.0 ) ;
84
+ if is_excute ( fighter) {
85
+ WorkModule :: on_flag ( boma, * FIGHTER_STATUS_ATTACK_FLAG_ENABLE_NO_HIT_COMBO ) ;
86
+ }
87
+ }
88
+
89
+ #[ acmd_script( agent = "edge" , script = "game_attack13" , category = ACMD_GAME , low_priority) ]
90
+ unsafe fn sephiroth_attack_13_game ( fighter : & mut L2CAgentBase ) {
6
91
let lua_state = fighter. lua_state_agent ;
7
92
let boma = fighter. boma ( ) ;
8
93
frame ( lua_state, 1.0 ) ;
@@ -37,8 +122,8 @@ unsafe fn sephiroth_attack_11_game(fighter: &mut L2CAgentBase) {
37
122
}
38
123
}
39
124
40
- #[ acmd_script( agent = "edge" , script = "effect_attack11 " , category = ACMD_EFFECT , low_priority) ]
41
- unsafe fn sephiroth_attack_11_effect ( fighter : & mut L2CAgentBase ) {
125
+ #[ acmd_script( agent = "edge" , script = "effect_attack13 " , category = ACMD_EFFECT , low_priority) ]
126
+ unsafe fn sephiroth_attack_13_effect ( fighter : & mut L2CAgentBase ) {
42
127
let lua_state = fighter. lua_state_agent ;
43
128
let boma = fighter. boma ( ) ;
44
129
frame ( lua_state, 2.0 ) ;
@@ -73,31 +158,6 @@ unsafe fn sephiroth_attack_11_effect(fighter: &mut L2CAgentBase) {
73
158
74
159
}
75
160
76
- #[ acmd_script( agent = "edge" , script = "expression_attack11" , category = ACMD_EXPRESSION , low_priority ) ]
77
- unsafe fn sephiroth_attack_11_expression ( fighter : & mut L2CAgentBase ) {
78
- let lua_state = fighter. lua_state_agent ;
79
- let boma = fighter. boma ( ) ;
80
- if is_excute ( fighter) {
81
- slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE , * SLOPE_STATUS_LR ) ;
82
- }
83
- frame ( lua_state, 3.0 ) ;
84
- if is_excute ( fighter) {
85
- slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_R , 4 ) ;
86
- }
87
- frame ( lua_state, 4.5 ) ;
88
- if is_excute ( fighter) {
89
- ControlModule :: set_rumble ( boma, Hash40 :: new ( "rbkind_nohitm" ) , 0 , false , * BATTLE_OBJECT_ID_INVALID as u32 ) ;
90
- }
91
- frame ( lua_state, 6.5 ) ;
92
- if is_excute ( fighter) {
93
- macros:: RUMBLE_HIT ( fighter, Hash40 :: new ( "rbkind_attackm" ) , 0 ) ;
94
- }
95
- frame ( lua_state, 35.0 ) ;
96
- if is_excute ( fighter) {
97
- slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_LR , 13 ) ;
98
- }
99
- }
100
-
101
161
#[ acmd_script( agent = "edge" , script = "game_attackdash" , category = ACMD_GAME , low_priority) ]
102
162
unsafe fn sephiroth_attack_dash_game ( fighter : & mut L2CAgentBase ) {
103
163
let lua_state = fighter. lua_state_agent ;
@@ -129,9 +189,10 @@ unsafe fn sephiroth_attack_dash_game(fighter: &mut L2CAgentBase) {
129
189
pub fn install ( ) {
130
190
install_acmd_scripts ! (
131
191
sephiroth_attack_11_game,
132
- sephiroth_attack_11_effect,
133
192
sephiroth_attack_11_expression,
193
+ sephiroth_attack_12_game,
194
+ sephiroth_attack_13_game,
195
+ sephiroth_attack_13_effect,
134
196
sephiroth_attack_dash_game,
135
197
) ;
136
- }
137
-
198
+ }
0 commit comments