@@ -20,7 +20,8 @@ unsafe fn mewtwo_attack_11_game(fighter: &mut L2CAgentBase) {
20
20
ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "top" ) , 3.0 , 83 , 40 , 0 , 25 , 4.5 , 0.0 , 11.8 , 9.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_d , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
21
21
ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "top" ) , 3.0 , 83 , 40 , 0 , 25 , 4.0 , 0.0 , 9.0 , 13.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_d , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
22
22
//Jab-Lock Hitbox
23
- ATTACK ( fighter, 3 , 0 , Hash40 :: new ( "top" ) , 3.0 , 361 , 20 , 0 , 25 , 2.5 , 1.0 , 3.0 , 0.0 , Some ( 1.0 ) , Some ( 3.0 ) , Some ( 10.0 ) , 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_G , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
23
+ ATTACK ( fighter, 3 , 0 , Hash40 :: new ( "top" ) , 3.0 , 361 , 20 , 0 , 25 , 2.5 , 1.0 , 3.0 , 2.0 , Some ( 1.0 ) , Some ( 3.0 ) , Some ( 14.5 ) , 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_G , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
24
+ AttackModule :: set_down_only ( boma, 3 , true ) ;
24
25
}
25
26
frame ( lua_state, 8.0 ) ;
26
27
if is_excute ( fighter) {
@@ -59,35 +60,55 @@ unsafe fn mewtwo_attack_100_end_game(fighter: &mut L2CAgentBase) {
59
60
unsafe fn mewtwo_attack_dash_game ( fighter : & mut L2CAgentBase ) {
60
61
let lua_state = fighter. lua_state_agent ;
61
62
let boma = fighter. boma ( ) ;
62
- sv_kinetic_energy ! ( set_speed_mul, fighter, FIGHTER_KINETIC_ENERGY_ID_MOTION , 0.85 ) ;
63
+ if is_excute ( fighter) {
64
+ sv_kinetic_energy ! ( set_speed_mul, fighter, FIGHTER_KINETIC_ENERGY_ID_MOTION , 0.85 ) ;
65
+ FighterAreaModuleImpl :: enable_fix_jostle_area ( boma, 8.5 , 3.0 ) ;
66
+ }
63
67
frame ( lua_state, 10.0 ) ;
64
68
if is_excute ( fighter) {
65
- ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 12.0 , 54 , 67 , 0 , 80 , 5.5 , 0.0 , 10.0 , 16.299999 , Some ( 0.0 ) , Some ( 8.5 ) , Some ( 16.299999 ) , 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_purple" ) , * ATTACK_SOUND_LEVEL_L , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
66
- ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "top" ) , 9.0 , 60 , 57 , 0 , 80 , 2.5 , 0.0 , 10.0 , 13.0 , Some ( 0.0 ) , Some ( 10.0 ) , Some ( 6.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_GA , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_purple" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
67
- ATTACK ( fighter, 2 , 0 , Hash40 :: new ( "top" ) , 9.0 , 60 , 57 , 0 , 80 , 5.0 , 0.0 , 6.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_purple" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
69
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 12.0 , 54 , 67 , 0 , 80 , 5.5 , 0.0 , 8.6 , 13.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_purple" ) , * ATTACK_SOUND_LEVEL_L , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
70
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "top" ) , 9.0 , 60 , 57 , 0 , 80 , 4.3 , 0.0 , 8.2 , 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 , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_purple" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
68
71
}
69
72
frame ( lua_state, 13.0 ) ;
73
+ FT_MOTION_RATE_RANGE ( fighter, 13.0 , 21.0 , 9.0 ) ;
70
74
if is_excute ( fighter) {
71
- ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 7.0 , 60 , 60 , 0 , 77 , 4.0 , 0.0 , 10.0 , 16.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_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
72
- ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "top" ) , 6.0 , 70 , 60 , 0 , 77 , 2.5 , 0.0 , 10.0 , 13 .0, Some ( 0.0 ) , Some ( 10.0 ) , Some ( 8.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_GA , * COLLISION_CATEGORY_MASK_ALL , * COLLISION_PART_MASK_ALL , false , Hash40 :: new ( "collision_attr_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
73
- ATTACK ( fighter , 2 , 0 , Hash40 :: new ( "top" ) , 6.0 , 70 , 60 , 0 , 77 , 5.0 , 0.0 , 6.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_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
75
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "top" ) , 7.0 , 60 , 60 , 0 , 77 , 4.5 , 0.0 , 8.6 , 14.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_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
76
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "top" ) , 6.0 , 70 , 60 , 0 , 77 , 3.7 , 0.0 , 8.2 , 6 .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_purple" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_FIRE , * ATTACK_REGION_PUNCH ) ;
77
+ FighterAreaModuleImpl :: enable_fix_jostle_area ( boma , 3.5 , 3.0 ) ;
74
78
}
75
- frame ( lua_state, 21.0 ) ;
79
+ frame ( lua_state, 21.0 ) ; //43
80
+ FT_MOTION_RATE ( fighter, 1.0 ) ;
76
81
if is_excute ( fighter) {
77
82
AttackModule :: clear_all ( boma) ;
78
83
}
79
- frame ( lua_state, 22.0 ) ;
80
- FT_MOTION_RATE ( fighter, 7.0 /( 25.0 -22.0 ) ) ;
81
- frame ( lua_state, 25.0 ) ;
82
- FT_MOTION_RATE ( fighter, 1.0 ) ;
84
+ }
83
85
86
+ #[ acmd_script( agent = "mewtwo" , script = "effect_attackdash" , category = ACMD_EFFECT , low_priority) ]
87
+ unsafe fn mewtwo_attack_dash_effect ( fighter : & mut L2CAgentBase ) {
88
+ let lua_state = fighter. lua_state_agent ;
89
+ let boma = fighter. boma ( ) ;
90
+ frame ( lua_state, 9.0 ) ;
91
+ if is_excute ( fighter) {
92
+ LANDING_EFFECT ( fighter, Hash40 :: new ( "sys_h_smoke_a" ) , Hash40 :: new ( "top" ) , 0 , 0 , 2 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , false ) ;
93
+ }
94
+ frame ( lua_state, 10.0 ) ;
95
+ if is_excute ( fighter) {
96
+ EFFECT_FLW_POS ( fighter, Hash40 :: new ( "mewtwo_pk_attack_e" ) , Hash40 :: new ( "haver" ) , 1.9 * PostureModule :: lr ( boma) , 0 , 0 , 0 , 0 , 0 , 0.9 , true ) ;
97
+ EffectModule :: enable_sync_init_pos_last ( boma) ;
98
+ //LAST_EFFECT_SET_RATE(fighter, 1.5);
99
+ }
100
+ frame ( lua_state, 21.0 ) ;
101
+ if is_excute ( fighter) {
102
+ EffectModule :: kill_kind ( boma, Hash40 :: new ( "mewtwo_pk_attack_e" ) , true , true ) ;
103
+ }
84
104
}
85
105
86
106
pub fn install ( ) {
87
107
install_acmd_scripts ! (
88
108
mewtwo_attack_11_game,
89
109
mewtwo_attack_100_end_game,
90
110
mewtwo_attack_dash_game,
111
+ mewtwo_attack_dash_effect
91
112
) ;
92
113
}
93
114
0 commit comments