@@ -63,6 +63,64 @@ unsafe fn bayonetta_special_s_game(fighter: &mut L2CAgentBase) {
63
63
}
64
64
}
65
65
66
+ #[ acmd_script( agent = "bayonetta" , script = "game_specialsedge" , category = ACMD_GAME , low_priority ) ]
67
+ unsafe fn bayonetta_special_s_edge_game ( fighter : & mut L2CAgentBase ) {
68
+ let lua_state = fighter. lua_state_agent ;
69
+ let boma = fighter. boma ( ) ;
70
+ frame ( lua_state, 1.0 ) ;
71
+ if is_excute ( fighter) {
72
+ fighter. off_flag ( * FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_S_FLAG_WALL_CHECK ) ;
73
+ notify_event_msc_cmd ! ( fighter, Hash40 :: new_raw( 0x2d51fcdb09 ) , * FIGHTER_BAYONETTA_SHOOTING_SLOT_R_LEG , false , false , true , 10 , 0 , 20 , 0 , false ) ;
74
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "footr" ) , 7.0 , 62 , 8 , 0 , 69 , 4.0 , 0.0 , 0.0 , 0.0 , Some ( -8.0 ) , Some ( 0.0 ) , Some ( 0.0 ) , 0.9 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , true , 0 , 0.0 , 0 , false , false , false , false , true , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_FLOOR , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_normal" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_KICK , * ATTACK_REGION_KICK ) ;
75
+ }
76
+ frame ( lua_state, 16.0 ) ;
77
+ if is_excute ( fighter) {
78
+ AttackModule :: clear_all ( boma) ;
79
+ fighter. set_int ( * FIGHTER_BAYONETTA_SHOOTING_STEP_WAIT_END , * FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_SHOOTING_STEP ) ;
80
+ //fighter.off_flag(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_SHOOTING_ACTION);
81
+ }
82
+ frame ( lua_state, 24.0 ) ;
83
+ if is_excute ( fighter) {
84
+ KineticModule :: change_kinetic ( fighter. module_accessor , * FIGHTER_KINETIC_TYPE_FALL ) ;
85
+ }
86
+ }
87
+
88
+ #[ acmd_script( agent = "bayonetta" , script = "effect_specialsedge" , category = ACMD_EFFECT , low_priority ) ]
89
+ unsafe fn bayonetta_special_s_edge_effect ( fighter : & mut L2CAgentBase ) {
90
+ let lua_state = fighter. lua_state_agent ;
91
+ let boma = fighter. boma ( ) ;
92
+ frame ( lua_state, 1.0 ) ;
93
+ if is_excute ( fighter) {
94
+ EFFECT_FOLLOW_NO_STOP ( fighter, Hash40 :: new ( "bayonetta_heelslide_burst" ) , Hash40 :: new ( "kneer" ) , 9.5 , 0 , 0 , 0 , 90 , 0 , 1.1 , true ) ;
95
+ EffectModule :: enable_sync_init_pos_last ( boma) ;
96
+ if fighter. get_int ( * FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_COSTUME_KIND ) != 2 { LAST_PARTICLE_SET_COLOR ( fighter, 0.048 , 0.452 , 1 ) ; }
97
+ }
98
+ frame ( lua_state, 14.0 ) ;
99
+ if is_excute ( fighter) {
100
+ EFFECT_OFF_KIND ( fighter, Hash40 :: new ( "bayonetta_heelslide_burst" ) , false , false ) ;
101
+ }
102
+ }
103
+
104
+ #[ acmd_script( agent = "bayonetta" , script = "sound_specialsedge" , category = ACMD_SOUND , low_priority ) ]
105
+ unsafe fn bayonetta_special_s_edge_sound ( fighter : & mut L2CAgentBase ) {
106
+ }
107
+
108
+ #[ acmd_script( agent = "bayonetta" , script = "expression_specialsedge" , category = ACMD_EXPRESSION , low_priority ) ]
109
+ unsafe fn bayonetta_special_s_edge_expression ( fighter : & mut L2CAgentBase ) {
110
+ let lua_state = fighter. lua_state_agent ;
111
+ let boma = fighter. boma ( ) ;
112
+ frame ( lua_state, 1.0 ) ;
113
+ if is_excute ( fighter) {
114
+ ControlModule :: set_rumble ( boma, Hash40 :: new ( "rbkind_dash" ) , 0 , false , * BATTLE_OBJECT_ID_INVALID as u32 ) ;
115
+ slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_TOP , 2 , true ) ;
116
+ }
117
+ frame ( lua_state, 16.0 ) ;
118
+ if is_excute ( fighter) {
119
+ ControlModule :: set_rumble ( boma, Hash40 :: new ( "rbkind_lands" ) , 0 , false , * BATTLE_OBJECT_ID_INVALID as u32 ) ;
120
+ slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_LR , 6 ) ;
121
+ }
122
+ }
123
+
66
124
#[ acmd_script( agent = "bayonetta" , script = "game_specialsholdend" , category = ACMD_GAME , low_priority ) ]
67
125
unsafe fn bayonetta_special_s_hold_end_game ( fighter : & mut L2CAgentBase ) {
68
126
let lua_state = fighter. lua_state_agent ;
@@ -302,15 +360,14 @@ unsafe fn bayonetta_special_hi_game(fighter: &mut L2CAgentBase) {
302
360
if is_excute ( fighter) {
303
361
AttackModule :: clear_all ( boma) ;
304
362
fighter. on_flag ( * FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLAG_SHOOTING_CHECK_END ) ;
305
- KineticModule :: add_speed_outside ( fighter. module_accessor , * KINETIC_OUTSIDE_ENERGY_TYPE_WIND_NO_ADDITION , & Vector3f :: new ( 0.0 , 4.0 , 0.0 ) ) ;
306
363
if fighter. is_flag ( * FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_HI_FLAG_REUSE ) {
307
364
VarModule :: on_flag ( fighter. battle_object , vars:: common:: instance:: UP_SPECIAL_CANCEL ) ;
308
365
ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 3.5 , 22 , 35 , 0 , 40 , 4.6 , 0.0 , 23.1 , 0.0 , Some ( 0.0 ) , Some ( 18.4 ) , Some ( 0.0 ) , 1.3 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , true , 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_PUNCH ) ;
309
366
} else {
310
367
ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 3.5 , 42 , 55 , 0 , 45 , 4.6 , 0.0 , 23.1 , 0.0 , Some ( 0.0 ) , Some ( 18.4 ) , Some ( 0.0 ) , 1.3 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , true , 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_PUNCH ) ;
311
368
}
312
369
}
313
- frame ( lua_state, 22 .0) ;
370
+ frame ( lua_state, 23 .0) ;
314
371
if is_excute ( fighter) {
315
372
AttackModule :: clear_all ( boma) ;
316
373
notify_event_msc_cmd ! ( fighter, Hash40 :: new_raw( 0x2bfb02b69a ) , true ) ;
@@ -324,14 +381,14 @@ unsafe fn bayonetta_special_hi_game(fighter: &mut L2CAgentBase) {
324
381
CancelModule :: enable_cancel ( fighter. module_accessor ) ;
325
382
}
326
383
}
327
- frame ( lua_state, 35 .0) ;
384
+ frame ( lua_state, 32 .0) ;
328
385
if is_excute ( fighter) {
329
386
notify_event_msc_cmd ! ( fighter, Hash40 :: new_raw( 0x2127e37c07 ) , * GROUND_CLIFF_CHECK_KIND_ALWAYS_BOTH_SIDES ) ;
330
387
KineticModule :: change_kinetic ( fighter. module_accessor , * FIGHTER_KINETIC_TYPE_FALL ) ;
331
388
}
332
389
}
333
390
334
- #[ acmd_script( agent = "bayonetta" , scripts = [ "effect_specialairhi" , " effect_specialhi"] , category = ACMD_EFFECT , low_priority ) ]
391
+ #[ acmd_script( agent = "bayonetta" , script = " effect_specialhi", category = ACMD_EFFECT , low_priority ) ]
335
392
unsafe fn bayonetta_special_hi_effect ( fighter : & mut L2CAgentBase ) {
336
393
frame ( fighter. lua_state_agent , 6.0 ) ;
337
394
if is_excute ( fighter) {
@@ -362,7 +419,7 @@ unsafe fn bayonetta_special_hi_effect(fighter: &mut L2CAgentBase) {
362
419
}
363
420
}
364
421
365
- #[ acmd_script( agent = "bayonetta" , scripts = [ "sound_specialhi" , "sound_specialairhi" ] , category = ACMD_SOUND , low_priority ) ]
422
+ #[ acmd_script( agent = "bayonetta" , script = "sound_specialhi" , category = ACMD_SOUND , low_priority ) ]
366
423
unsafe fn bayonetta_special_hi_sound ( fighter : & mut L2CAgentBase ) {
367
424
let lua_state = fighter. lua_state_agent ;
368
425
let boma = fighter. boma ( ) ;
@@ -430,6 +487,10 @@ pub fn install() {
430
487
bayonetta_special_n_end_game,
431
488
bayonetta_special_n_start_game,
432
489
bayonetta_special_s_game,
490
+ bayonetta_special_s_edge_game,
491
+ bayonetta_special_s_edge_effect,
492
+ bayonetta_special_s_edge_sound,
493
+ bayonetta_special_s_edge_expression,
433
494
bayonetta_special_s_hold_end_game,
434
495
bayonetta_special_air_s_u_game,
435
496
bayonetta_special_air_s_u_effect,
0 commit comments