@@ -181,36 +181,65 @@ unsafe extern "C" fn sonic_attack_lw3_effect(fighter: &mut L2CAgentBase) {
181
181
}
182
182
}
183
183
184
-
185
184
unsafe extern "C" fn sonic_attack_hi3_game ( fighter : & mut L2CAgentBase ) {
186
185
let lua_state = fighter. lua_state_agent ;
187
186
let boma = fighter. boma ( ) ;
188
- frame ( lua_state, 6.0 ) ;
189
- if is_excute ( fighter) {
190
- ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 2.0 , 96 , 100 , 100 , 0 , 5.2 , 0.0 , 8.0 , 4.0 , None , None , None , 1.0 , 0.5 , * ATTACK_SETOFF_KIND_ON , * ATTACK_LR_CHECK_POS , 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 ) ;
191
- }
192
- frame ( lua_state, 7.0 ) ;
187
+ frame ( lua_state, 8.0 ) ;
193
188
if is_excute ( fighter) {
194
- ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "legr" ) , 2.0 , 90 , 100 , 60 , 0 , 3.0 , 0.0 , 0.0 , 0.0 , None , None , None , 1.0 , 0.5 , * 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 ) ;
195
- ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "kneer" ) , 2.0 , 95 , 100 , 35 , 0 , 4.0 , 2.0 , 0.0 , 0.0 , None , None , None , 1.0 , 0.5 , * 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 ) ;
196
- ATTACK ( fighter, 3 , 0 , Hash40 :: new ( "kneer" ) , 2.0 , 95 , 100 , 12 , 0 , 5.0 , 7.0 , 0.0 , -1.5 , None , None , None , 1.0 , 0.5 , * 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 ) ;
189
+ // ground only
190
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "legr" ) , 2.0 , 80 , 100 , 35 , 0 , 3.0 , 0.0 , 0.0 , 0.0 , None , None , None , 1.0 , 0.5 , * 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 ) ;
191
+ ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "kneer" ) , 2.0 , 80 , 100 , 35 , 0 , 4.0 , 2.0 , 0.0 , 0.0 , None , None , None , 1.0 , 0.5 , * 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 ) ;
192
+ ATTACK ( fighter, 3 , 0 , Hash40 :: new ( "kneer" ) , 2.0 , 361 , 100 , 45 , 0 , 5.0 , 7.0 , 0.0 , -1.5 , None , None , None , 1.0 , 0.5 , * 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 ) ;
193
+ //air only
194
+ ATTACK ( fighter, 4 , 0 , Hash40 :: new ( "legr" ) , 2.0 , 366 , 100 , 35 , 0 , 3.0 , 0.0 , 0.0 , 0.0 , None , None , None , 1.0 , 0.5 , * 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 ) ;
195
+ ATTACK ( fighter, 5 , 0 , Hash40 :: new ( "kneer" ) , 2.0 , 366 , 100 , 35 , 0 , 4.0 , 2.0 , 0.0 , 0.0 , None , None , None , 1.0 , 0.5 , * 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 ) ;
196
+ ATTACK ( fighter, 6 , 0 , Hash40 :: new ( "kneer" ) , 2.0 , 366 , 100 , 45 , 0 , 5.0 , 7.0 , 0.0 , -1.5 , None , None , None , 1.0 , 0.5 , * 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 ) ;
197
197
}
198
- frame ( lua_state, 9 .0) ;
198
+ frame ( lua_state, 13 .0) ;
199
199
if is_excute ( fighter) {
200
200
AttackModule :: clear_all ( boma) ;
201
201
}
202
202
frame ( lua_state, 13.0 ) ;
203
203
if is_excute ( fighter) {
204
- ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "legl" ) , 6.0 , 70 , 120 , 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 ) ;
205
- ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "kneel" ) , 6.0 , 70 , 120 , 0 , 40 , 5 .0, 2.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 ) ;
206
- ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "kneel" ) , 6.0 , 70 , 120 , 0 , 40 , 6.0 , 7.0 , 0.0 , 1.5 , 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 ) ;
204
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "legl" ) , 6.0 , 75 , 120 , 0 , 40 , 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_KICK ) ;
205
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "kneel" ) , 6.0 , 75 , 120 , 0 , 40 , 4 .0, 2.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_KICK ) ;
206
+ ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "kneel" ) , 6.0 , 75 , 120 , 0 , 40 , 4.2 , 7.0 , 0.0 , 1.5 , 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_KICK ) ;
207
207
}
208
- frame ( lua_state, 15 .0) ;
208
+ frame ( lua_state, 22 .0) ;
209
209
if is_excute ( fighter) {
210
210
AttackModule :: clear_all ( boma) ;
211
211
}
212
- frame ( lua_state, 26.0 ) ;
213
- FT_MOTION_RATE ( fighter, 2.0 ) ;
212
+ }
213
+
214
+ unsafe extern "C" fn sonic_attack_hi3_effect ( fighter : & mut L2CAgentBase ) {
215
+ let lua_state = fighter. lua_state_agent ;
216
+ let boma = fighter. boma ( ) ;
217
+ frame ( lua_state, 6.0 ) ;
218
+ if is_excute ( fighter) {
219
+ LANDING_EFFECT ( fighter, Hash40 :: new ( "sys_h_smoke_a" ) , Hash40 :: new ( "top" ) , 2 , 0 , 0 , 0 , 0 , 0 , 0.7 , 0 , 0 , 0 , 0 , 0 , 0 , false ) ;
220
+ }
221
+ frame ( lua_state, 8.0 ) ;
222
+ if is_excute ( fighter) {
223
+ EFFECT_FOLLOW_FLIP ( fighter, Hash40 :: new ( "sys_attack_arc_b" ) , Hash40 :: new ( "sys_attack_arc_b" ) , Hash40 :: new ( "top" ) , 2 , 8 , 4 , 180 , 325 , 90 , 1.2 , true , * EF_FLIP_YZ ) ;
224
+ LAST_EFFECT_SET_RATE ( fighter, 0.55 ) ;
225
+ }
226
+ frame ( lua_state, 14.0 ) ;
227
+ if is_excute ( fighter) {
228
+ EFFECT_FOLLOW_FLIP ( fighter, Hash40 :: new ( "sys_attack_arc" ) , Hash40 :: new ( "sys_attack_arc" ) , Hash40 :: new ( "top" ) , 2 , 8 , -0.2 , 180 , 260 , 90 , 1.1 , true , * EF_FLIP_YZ ) ;
229
+ LAST_EFFECT_SET_RATE ( fighter, 0.7 ) ;
230
+ }
231
+ frame ( lua_state, 16.0 ) ;
232
+ if is_excute ( fighter) {
233
+ EFFECT_OFF_KIND ( fighter, Hash40 :: new ( "sys_attack_arc_b" ) , false , true ) ;
234
+ }
235
+ frame ( lua_state, 24.0 ) ;
236
+ if is_excute ( fighter) {
237
+ EFFECT_OFF_KIND ( fighter, Hash40 :: new ( "sys_attack_arc" ) , false , true ) ;
238
+ }
239
+ frame ( lua_state, 27.0 ) ;
240
+ if is_excute ( fighter) {
241
+ FOOT_EFFECT ( fighter, Hash40 :: new ( "sys_landing_smoke_s" ) , Hash40 :: new ( "top" ) , -1.5 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , false ) ;
242
+ }
214
243
}
215
244
216
245
pub fn install ( ) {
@@ -224,5 +253,6 @@ pub fn install() {
224
253
. acmd ( "game_attacklw3" , sonic_attack_lw3_game)
225
254
. acmd ( "effect_attacklw3" , sonic_attack_lw3_effect)
226
255
. acmd ( "game_attackhi3" , sonic_attack_hi3_game)
256
+ . acmd ( "effect_attackhi3" , sonic_attack_hi3_effect)
227
257
. install ( ) ;
228
258
}
0 commit comments