@@ -63,6 +63,65 @@ 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 WorkModule :: get_int ( boma, * FIGHTER_BAYONETTA_INSTANCE_WORK_ID_INT_COSTUME_KIND ) == 2 { LAST_EFFECT_SET_COLOR ( fighter, 1 , 0.118 , 0.118 ) ; }
97
+ else { LAST_EFFECT_SET_COLOR ( fighter, 0.059 , 0.38 , 1 ) ; }
98
+ }
99
+ frame ( lua_state, 14.0 ) ;
100
+ if is_excute ( fighter) {
101
+ EFFECT_OFF_KIND ( fighter, Hash40 :: new ( "bayonetta_heelslide_burst" ) , false , false ) ;
102
+ }
103
+ }
104
+
105
+ #[ acmd_script( agent = "bayonetta" , script = "sound_specialsedge" , category = ACMD_SOUND , low_priority ) ]
106
+ unsafe fn bayonetta_special_s_edge_sound ( fighter : & mut L2CAgentBase ) {
107
+ }
108
+
109
+ #[ acmd_script( agent = "bayonetta" , script = "expression_specialsedge" , category = ACMD_EXPRESSION , low_priority ) ]
110
+ unsafe fn bayonetta_special_s_edge_expression ( fighter : & mut L2CAgentBase ) {
111
+ let lua_state = fighter. lua_state_agent ;
112
+ let boma = fighter. boma ( ) ;
113
+ frame ( lua_state, 1.0 ) ;
114
+ if is_excute ( fighter) {
115
+ ControlModule :: set_rumble ( boma, Hash40 :: new ( "rbkind_dash" ) , 0 , false , * BATTLE_OBJECT_ID_INVALID as u32 ) ;
116
+ slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_TOP , 2 , true ) ;
117
+ }
118
+ frame ( lua_state, 16.0 ) ;
119
+ if is_excute ( fighter) {
120
+ ControlModule :: set_rumble ( boma, Hash40 :: new ( "rbkind_lands" ) , 0 , false , * BATTLE_OBJECT_ID_INVALID as u32 ) ;
121
+ slope ! ( fighter, * MA_MSC_CMD_SLOPE_SLOPE_INTP , * SLOPE_STATUS_LR , 6 ) ;
122
+ }
123
+ }
124
+
66
125
#[ acmd_script( agent = "bayonetta" , script = "game_specialsholdend" , category = ACMD_GAME , low_priority ) ]
67
126
unsafe fn bayonetta_special_s_hold_end_game ( fighter : & mut L2CAgentBase ) {
68
127
let lua_state = fighter. lua_state_agent ;
@@ -302,15 +361,14 @@ unsafe fn bayonetta_special_hi_game(fighter: &mut L2CAgentBase) {
302
361
if is_excute ( fighter) {
303
362
AttackModule :: clear_all ( boma) ;
304
363
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
364
if fighter. is_flag ( * FIGHTER_BAYONETTA_STATUS_WORK_ID_SPECIAL_HI_FLAG_REUSE ) {
307
365
VarModule :: on_flag ( fighter. battle_object , vars:: common:: instance:: UP_SPECIAL_CANCEL ) ;
308
366
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
367
} else {
310
368
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
369
}
312
370
}
313
- frame ( lua_state, 22 .0) ;
371
+ frame ( lua_state, 23 .0) ;
314
372
if is_excute ( fighter) {
315
373
AttackModule :: clear_all ( boma) ;
316
374
notify_event_msc_cmd ! ( fighter, Hash40 :: new_raw( 0x2bfb02b69a ) , true ) ;
@@ -324,14 +382,14 @@ unsafe fn bayonetta_special_hi_game(fighter: &mut L2CAgentBase) {
324
382
CancelModule :: enable_cancel ( fighter. module_accessor ) ;
325
383
}
326
384
}
327
- frame ( lua_state, 35 .0) ;
385
+ frame ( lua_state, 32 .0) ;
328
386
if is_excute ( fighter) {
329
387
notify_event_msc_cmd ! ( fighter, Hash40 :: new_raw( 0x2127e37c07 ) , * GROUND_CLIFF_CHECK_KIND_ALWAYS_BOTH_SIDES ) ;
330
388
KineticModule :: change_kinetic ( fighter. module_accessor , * FIGHTER_KINETIC_TYPE_FALL ) ;
331
389
}
332
390
}
333
391
334
- #[ acmd_script( agent = "bayonetta" , scripts = [ "effect_specialairhi" , " effect_specialhi"] , category = ACMD_EFFECT , low_priority ) ]
392
+ #[ acmd_script( agent = "bayonetta" , script = " effect_specialhi", category = ACMD_EFFECT , low_priority ) ]
335
393
unsafe fn bayonetta_special_hi_effect ( fighter : & mut L2CAgentBase ) {
336
394
frame ( fighter. lua_state_agent , 6.0 ) ;
337
395
if is_excute ( fighter) {
@@ -362,7 +420,7 @@ unsafe fn bayonetta_special_hi_effect(fighter: &mut L2CAgentBase) {
362
420
}
363
421
}
364
422
365
- #[ acmd_script( agent = "bayonetta" , scripts = [ "sound_specialhi" , "sound_specialairhi" ] , category = ACMD_SOUND , low_priority ) ]
423
+ #[ acmd_script( agent = "bayonetta" , script = "sound_specialhi" , category = ACMD_SOUND , low_priority ) ]
366
424
unsafe fn bayonetta_special_hi_sound ( fighter : & mut L2CAgentBase ) {
367
425
let lua_state = fighter. lua_state_agent ;
368
426
let boma = fighter. boma ( ) ;
@@ -430,6 +488,10 @@ pub fn install() {
430
488
bayonetta_special_n_end_game,
431
489
bayonetta_special_n_start_game,
432
490
bayonetta_special_s_game,
491
+ bayonetta_special_s_edge_game,
492
+ bayonetta_special_s_edge_effect,
493
+ bayonetta_special_s_edge_sound,
494
+ bayonetta_special_s_edge_expression,
433
495
bayonetta_special_s_hold_end_game,
434
496
bayonetta_special_air_s_u_game,
435
497
bayonetta_special_air_s_u_effect,
0 commit comments