@@ -49,31 +49,34 @@ unsafe extern "C" fn shulk_special_s_game(agent: &mut L2CAgentBase) {
49
49
if is_excute ( agent) {
50
50
if WorkModule :: is_flag ( boma, * FIGHTER_SHULK_INSTANCE_WORK_ID_FLAG_SPECIAL_N_ACTIVE ) {
51
51
if WorkModule :: get_int ( boma, * FIGHTER_SHULK_INSTANCE_WORK_ID_INT_SPECIAL_N_TYPE ) == * FIGHTER_SHULK_MONAD_TYPE_JUMP {
52
- ATTACK ( agent, 0 , 0 , Hash40 :: new ( "swordr " ) , 10 .0, 100 , 60 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
53
- ATTACK ( agent, 1 , 0 , Hash40 :: new ( "arml " ) , 14 .0, 100 , 60 , 0 , 80 , 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_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_BODY ) ;
52
+ ATTACK ( agent, 0 , 0 , Hash40 :: new ( "arml " ) , 12 .0, 100 , 60 , 0 , 80 , 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_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_BODY ) ;
53
+ ATTACK ( agent, 1 , 0 , Hash40 :: new ( "swordr " ) , 9 .0, 100 , 60 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
54
54
}
55
55
else if WorkModule :: get_int ( boma, * FIGHTER_SHULK_INSTANCE_WORK_ID_INT_SPECIAL_N_TYPE ) == * FIGHTER_SHULK_MONAD_TYPE_BUSTER {
56
- ATTACK ( agent, 0 , 0 , Hash40 :: new ( "swordr " ) , 11 .0, 361 , 90 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
57
- ATTACK ( agent, 1 , 0 , Hash40 :: new ( "arml " ) , 15.1 , 361 , 90 , 0 , 80 , 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_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_BODY ) ;
56
+ ATTACK ( agent, 0 , 0 , Hash40 :: new ( "arml " ) , 13 .0, 361 , 90 , 0 , 80 , 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_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_BODY ) ;
57
+ ATTACK ( agent, 1 , 0 , Hash40 :: new ( "swordr " ) , 9.7 , 361 , 90 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
58
58
}
59
59
else if WorkModule :: get_int ( boma, * FIGHTER_SHULK_INSTANCE_WORK_ID_INT_SPECIAL_N_TYPE ) == * FIGHTER_SHULK_MONAD_TYPE_SMASH {
60
- ATTACK ( agent, 0 , 0 , Hash40 :: new ( "swordr " ) , 8.0 , 361 , 95 , 0 , 85 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
61
- ATTACK ( agent, 1 , 0 , Hash40 :: new ( "arml " ) , 12.0 , 361 , 95 , 0 , 85 , 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_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_BODY ) ;
60
+ ATTACK ( agent, 0 , 0 , Hash40 :: new ( "arml " ) , 10.2 , 361 , 95 , 0 , 85 , 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_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_BODY ) ;
61
+ ATTACK ( agent, 1 , 0 , Hash40 :: new ( "swordr " ) , 7.7 , 361 , 95 , 0 , 85 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
62
62
}
63
63
else {
64
- ATTACK ( agent, 0 , 0 , Hash40 :: new ( "swordr " ) , 10 .0, 361 , 90 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
65
- ATTACK ( agent, 1 , 0 , Hash40 :: new ( "arml " ) , 14 .0, 361 , 90 , 0 , 80 , 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_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_BODY ) ;
64
+ ATTACK ( agent, 0 , 0 , Hash40 :: new ( "arml " ) , 12 .0, 361 , 90 , 0 , 80 , 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_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_BODY ) ;
65
+ ATTACK ( agent, 1 , 0 , Hash40 :: new ( "swordr " ) , 9 .0, 361 , 90 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
66
66
}
67
67
}
68
68
else {
69
- ATTACK ( agent, 0 , 0 , Hash40 :: new ( "swordr " ) , 10 .0, 361 , 90 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
70
- ATTACK ( agent, 1 , 0 , Hash40 :: new ( "arml " ) , 14 .0, 361 , 90 , 0 , 80 , 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_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_BODY ) ;
69
+ ATTACK ( agent, 0 , 0 , Hash40 :: new ( "arml " ) , 12 .0, 361 , 90 , 0 , 80 , 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_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_BODY ) ;
70
+ ATTACK ( agent, 1 , 0 , Hash40 :: new ( "swordr " ) , 9 .0, 361 , 90 , 0 , 80 , 3.5 , 7 .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_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_SWORD ) ;
71
71
}
72
72
}
73
- frame ( lua_state, 30 .0) ;
73
+ frame ( lua_state, 28 .0) ;
74
74
if is_excute ( agent) {
75
75
AttackModule :: clear_all ( boma) ;
76
76
damage ! ( agent, * MA_MSC_DAMAGE_DAMAGE_NO_REACTION , * DAMAGE_NO_REACTION_MODE_NORMAL , 0 ) ;
77
+ }
78
+ wait ( lua_state, 2.0 ) ;
79
+ if is_excute ( agent) {
77
80
VarModule :: set_int ( agent. object ( ) , vars:: shulk:: instance:: SPECIAL_S_STEP , 2 ) ;
78
81
}
79
82
frame ( lua_state, 40.0 ) ;
@@ -158,6 +161,27 @@ unsafe extern "C" fn shulk_special_air_s_effect(agent: &mut L2CAgentBase) {
158
161
}
159
162
}
160
163
164
+ unsafe extern "C" fn shulk_special_s_sound ( agent : & mut L2CAgentBase ) {
165
+ let lua_state = agent. lua_state_agent ;
166
+ let boma = agent. boma ( ) ;
167
+ frame ( lua_state, 3.0 ) ;
168
+ if is_excute ( agent) {
169
+ PLAY_SEQUENCE ( agent, Hash40 :: new ( "seq_shulk_rnd_special_s" ) ) ;
170
+ }
171
+ frame ( lua_state, 10.0 ) ;
172
+ if is_excute ( agent) {
173
+ PLAY_SE ( agent, Hash40 :: new ( "se_shulk_special_s01" ) ) ;
174
+ }
175
+ frame ( lua_state, 14.0 ) ;
176
+ if is_excute ( agent) {
177
+ PLAY_SE ( agent, Hash40 :: new ( "se_shulk_monado_open" ) ) ;
178
+ }
179
+ frame ( lua_state, 21.0 ) ;
180
+ if is_excute ( agent) {
181
+ PLAY_SE ( agent, Hash40 :: new ( "se_shulk_special_s03" ) ) ;
182
+ }
183
+ }
184
+
161
185
unsafe extern "C" fn shulk_special_hi_game ( fighter : & mut L2CAgentBase ) {
162
186
let lua_state = fighter. lua_state_agent ;
163
187
let boma = fighter. boma ( ) ;
@@ -268,6 +292,8 @@ pub fn install() {
268
292
. acmd ( "game_specialairs" , shulk_special_s_game)
269
293
. acmd ( "effect_specials" , shulk_special_s_effect)
270
294
. acmd ( "effect_specialairs" , shulk_special_air_s_effect)
295
+ . acmd ( "sound_specials" , shulk_special_s_sound)
296
+ . acmd ( "sound_specialairs" , shulk_special_s_sound)
271
297
. acmd ( "game_specialhi" , shulk_special_hi_game)
272
298
. acmd ( "game_specialairhi" , shulk_special_hi_game)
273
299
. acmd ( "game_speciallwattack" , shulk_special_lw_attack_game)
0 commit comments