@@ -67,48 +67,48 @@ unsafe fn jack_special_hi_game(fighter: &mut L2CAgentBase) {
67
67
if is_excute ( fighter) {
68
68
ArticleModule :: generate_article ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , false , 0 ) ;
69
69
ArticleModule :: change_motion ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , Hash40 :: new ( "special_hi" ) , false , 0.0 ) ;
70
- }
71
- frame ( lua_state, 8.0 ) ;
72
- if is_excute ( fighter) {
73
- WorkModule :: on_flag ( boma, /*Flag*/ * FIGHTER_JACK_STATUS_SPECIAL_HI_FLAG_REVERSE_LR ) ;
74
- }
75
- frame ( lua_state, 19.0 ) ;
76
- if is_excute ( fighter) {
77
- ArticleModule :: change_status ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , * WEAPON_JACK_WIREROPE_STATUS_KIND_EXTEND , app:: ArticleOperationTarget ( * ARTICLE_OPE_TARGET_ALL ) ) ;
78
- AreaModule :: reset_area ( boma, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH ) ;
79
- ENABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH ) ;
80
- AreaModule :: reset_area ( boma, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD ) ;
81
- ENABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD ) ;
82
- }
83
- frame ( lua_state, 20.0 ) ;
84
- if is_excute ( fighter) {
85
- SEARCH ( fighter, 0 , 0 , Hash40 :: new ( "throw" ) , 3.0 , 1.5 , 1.5 , 0.7 , Some ( 1.5 ) , Some ( -15.0 ) , Some ( -6.4 ) , * COLLISION_KIND_MASK_HSR , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
86
- SEARCH ( fighter, 1 , 0 , Hash40 :: new ( "throw" ) , 5.5 , 1.5 , 1.5 , 0.7 , None , None , None , * COLLISION_KIND_MASK_HSR , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
87
- SEARCH ( fighter, 2 , 0 , Hash40 :: new ( "throw" ) , 5.5 , 1.2 , 1.5 , 0.7 , None , None , None , * COLLISION_KIND_MASK_HSR , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
88
- }
89
- frame ( lua_state, 21.0 ) ;
90
- if is_excute ( fighter) {
91
- AttackModule :: clear ( boma, 1 , false ) ;
92
- search ! ( fighter, * MA_MSC_CMD_SEARCH_SEARCH_SCH_CLR , 0 ) ;
93
- }
94
- frame ( lua_state, 22.0 ) ;
95
- if is_excute ( fighter) {
96
- SET_SEARCH_SIZE_EXIST ( fighter, 2 , 8 ) ;
97
- }
98
- frame ( lua_state, 23.0 ) ;
99
- if is_excute ( fighter) {
100
- UNABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD ) ;
101
- }
102
- frame ( lua_state, 24.0 ) ;
103
- if is_excute ( fighter) {
104
- AttackModule :: clear_all ( boma) ;
105
- }
106
- frame ( lua_state, 27.0 ) ;
107
- if is_excute ( fighter) {
108
- ArticleModule :: change_status ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , * WEAPON_JACK_WIREROPE_STATUS_KIND_BACK , app:: ArticleOperationTarget ( * ARTICLE_OPE_TARGET_ALL ) ) ;
109
- search ! ( fighter, * MA_MSC_CMD_SEARCH_SEARCH_SCH_CLR_ALL ) ;
110
- UNABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH ) ;
111
- }
70
+ }
71
+ frame ( lua_state, 8.0 ) ;
72
+ if is_excute ( fighter) {
73
+ WorkModule :: on_flag ( boma, /*Flag*/ * FIGHTER_JACK_STATUS_SPECIAL_HI_FLAG_REVERSE_LR ) ;
74
+ }
75
+ frame ( lua_state, 19.0 ) ;
76
+ if is_excute ( fighter) {
77
+ ArticleModule :: change_status ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , * WEAPON_JACK_WIREROPE_STATUS_KIND_EXTEND , app:: ArticleOperationTarget ( * ARTICLE_OPE_TARGET_ALL ) ) ;
78
+ AreaModule :: reset_area ( boma, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH ) ;
79
+ ENABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH ) ;
80
+ AreaModule :: reset_area ( boma, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD ) ;
81
+ ENABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD ) ;
82
+ }
83
+ frame ( lua_state, 20.0 ) ;
84
+ if is_excute ( fighter) {
85
+ SEARCH ( fighter, 0 , 0 , Hash40 :: new ( "throw" ) , 3.0 , 1.5 , 1.5 , 0.7 , Some ( 1.5 ) , Some ( -15.0 ) , Some ( -6.4 ) , * COLLISION_KIND_MASK_HSR , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
86
+ SEARCH ( fighter, 1 , 0 , Hash40 :: new ( "throw" ) , 5.5 , 1.5 , 1.5 , 0.7 , None , None , None , * COLLISION_KIND_MASK_HSR , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
87
+ SEARCH ( fighter, 2 , 0 , Hash40 :: new ( "throw" ) , 5.5 , 1.2 , 1.5 , 0.7 , None , None , None , * COLLISION_KIND_MASK_HSR , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
88
+ }
89
+ frame ( lua_state, 21.0 ) ;
90
+ if is_excute ( fighter) {
91
+ AttackModule :: clear ( boma, 1 , false ) ;
92
+ search ! ( fighter, * MA_MSC_CMD_SEARCH_SEARCH_SCH_CLR , 0 ) ;
93
+ }
94
+ frame ( lua_state, 22.0 ) ;
95
+ if is_excute ( fighter) {
96
+ SET_SEARCH_SIZE_EXIST ( fighter, 2 , 8 ) ;
97
+ }
98
+ frame ( lua_state, 23.0 ) ;
99
+ if is_excute ( fighter) {
100
+ UNABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD ) ;
101
+ }
102
+ frame ( lua_state, 24.0 ) ;
103
+ if is_excute ( fighter) {
104
+ AttackModule :: clear_all ( boma) ;
105
+ }
106
+ frame ( lua_state, 27.0 ) ;
107
+ if is_excute ( fighter) {
108
+ ArticleModule :: change_status ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , * WEAPON_JACK_WIREROPE_STATUS_KIND_BACK , app:: ArticleOperationTarget ( * ARTICLE_OPE_TARGET_ALL ) ) ;
109
+ search ! ( fighter, * MA_MSC_CMD_SEARCH_SEARCH_SCH_CLR_ALL ) ;
110
+ UNABLE_AREA ( fighter, * FIGHTER_JACK_AREA_KIND_ITEM_CATCH ) ;
111
+ }
112
112
}
113
113
114
114
#[ acmd_script( agent = "jack" , script = "game_specialairhi" , category = ACMD_GAME , low_priority) ]
@@ -139,30 +139,31 @@ unsafe fn jack_special_air_hi_game(fighter: &mut L2CAgentBase) {
139
139
frame ( lua_state, 19.0 ) ;
140
140
if is_excute ( fighter) {
141
141
ArticleModule :: change_status ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , * WEAPON_JACK_WIREROPE_STATUS_KIND_EXTEND , app:: ArticleOperationTarget ( * ARTICLE_OPE_TARGET_ALL ) ) ;
142
- //AreaModule::reset_area(boma, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH);
143
- //ENABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH);
144
- //AreaModule::reset_area(boma, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD);
145
- //ENABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD);
142
+ // AreaModule::reset_area(boma, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH);
143
+ // ENABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH);
144
+ // AreaModule::reset_area(boma, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD);
145
+ // ENABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD);
146
146
}
147
147
frame ( lua_state, 20.0 ) ;
148
148
if is_excute ( fighter) {
149
- SEARCH ( fighter, 0 , 0 , Hash40 :: new ( "throw" ) , 3 .0, 1 .5, 1.5 , 0.7 , Some ( 1.5 ) , Some ( - 15.0 ) , Some ( - 6.4 ) , * COLLISION_KIND_MASK_HS , * HIT_STATUS_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
150
- SEARCH ( fighter, 1 , 0 , Hash40 :: new ( "throw " ) , 5.5 , 1 .5, 1.5 , 0.7 , None , None , None , * COLLISION_KIND_MASK_HS , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
151
- SEARCH ( fighter , 2 , 0 , Hash40 :: new ( "throw" ) , 5.5 , 1.2 , 1.5 , 0.7 , None , None , None , * COLLISION_KIND_MASK_HS , * HIT_STATUS_MASK_NORMAL , 0 , * COLLISION_SITUATION_MASK_GA , * COLLISION_CATEGORY_MASK_NO_STAGE_GIMMICK , * COLLISION_PART_MASK_BODY , false ) ;
149
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "throw" ) , 10 .0, 70 , 60 , 0 , 60 , 6 .5, 1.5 , 2.0 , 2.0 , None , None , None , 1.2 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , false , 1 , 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_cutup" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_OBJECT ) ;
150
+ ATTACK ( fighter, 1 , 0 , Hash40 :: new ( "top " ) , 10.0 , 70 , 60 , 0 , 60 , 6 .5, 0.0 , 22.0 , 3.2 , Some ( 0.0 ) , Some ( 38.0 ) , Some ( 10.6 ) , 1.2 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , false , 1 , 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_cutup" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_OBJECT ) ;
151
+
152
152
}
153
153
frame ( lua_state, 21.0 ) ;
154
154
if is_excute ( fighter) {
155
155
AttackModule :: clear ( boma, 1 , false ) ;
156
- search ! ( fighter, MA_MSC_CMD_SEARCH_SEARCH_SCH_CLR , 0 ) ;
156
+ ATTACK ( fighter, 0 , 0 , Hash40 :: new ( "throw" ) , 10.0 , 255 , 15 , 0 , 70 , 6.5 , 1.5 , 2.0 , 2.0 , None , None , None , 1.2 , 1.0 , * ATTACK_SETOFF_KIND_OFF , * ATTACK_LR_CHECK_F , false , 1 , 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_cutup" ) , * ATTACK_SOUND_LEVEL_M , * COLLISION_SOUND_ATTR_CUTUP , * ATTACK_REGION_OBJECT ) ;
157
+ search ! ( fighter, * MA_MSC_CMD_SEARCH_SEARCH_SCH_CLR , 0 ) ;
157
158
}
158
159
frame ( lua_state, 22.0 ) ;
159
160
if is_excute ( fighter) {
160
161
SET_SEARCH_SIZE_EXIST ( fighter, 2 , 8 ) ;
161
162
}
162
- // frame(lua_state, 23.0);
163
- // if is_excute(fighter) {
164
- //UNABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD);
165
- // }
163
+ frame ( lua_state, 23.0 ) ;
164
+ if is_excute ( fighter) {
165
+ // UNABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH_ADD);
166
+ }
166
167
frame ( lua_state, 24.0 ) ;
167
168
if is_excute ( fighter) {
168
169
AttackModule :: clear_all ( boma) ;
@@ -171,59 +172,41 @@ unsafe fn jack_special_air_hi_game(fighter: &mut L2CAgentBase) {
171
172
if is_excute ( fighter) {
172
173
notify_event_msc_cmd ! ( fighter, Hash40 :: new_raw( 0x2127e37c07 ) , * GROUND_CLIFF_CHECK_KIND_ALWAYS ) ;
173
174
}
175
+ frame ( lua_state, 26.0 ) ;
176
+ if is_excute ( fighter) {
177
+ AttackModule :: clear_all ( boma) ;
178
+ }
174
179
frame ( lua_state, 27.0 ) ;
175
180
if is_excute ( fighter) {
176
181
ArticleModule :: change_status ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , * WEAPON_JACK_WIREROPE_STATUS_KIND_BACK , app:: ArticleOperationTarget ( * ARTICLE_OPE_TARGET_ALL ) ) ;
177
182
search ! ( fighter, * MA_MSC_CMD_SEARCH_SEARCH_SCH_CLR_ALL ) ;
178
- //UNABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH);
183
+ // UNABLE_AREA(fighter, *FIGHTER_JACK_AREA_KIND_ITEM_CATCH);
179
184
}
180
-
181
185
}
182
186
183
- #[ acmd_script( agent = "jack" , script = "game_specialairhithrow" , category = ACMD_GAME , low_priority) ]
184
- unsafe fn jack_specialairhithrow ( fighter : & mut L2CAgentBase ) {
187
+ #[ acmd_script( agent = "jack" , script = "effect_specialairhi" , category = ACMD_EFFECT , low_priority) ]
188
+ unsafe fn jack_special_air_hi_effect ( fighter : & mut L2CAgentBase ) {
185
189
let lua_state = fighter. lua_state_agent ;
186
190
let boma = fighter. boma ( ) ;
187
- if is_excute ( fighter) {
188
- SET_SPEED_EX ( fighter, 0.0 , 0.0 , * KINETIC_ENERGY_RESERVE_ATTRIBUTE_MAIN ) ;
189
- sv_kinetic_energy ! (
190
- set_accel,
191
- fighter,
192
- FIGHTER_KINETIC_ENERGY_ID_GRAVITY ,
193
- -0.05
194
- ) ;
195
- ArticleModule :: generate_article ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , false , -1 ) ;
196
- ArticleModule :: change_motion (
197
- boma,
198
- * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE ,
199
- Hash40 :: new ( "special_hi_throw" ) ,
200
- false ,
201
- -1.0
202
- ) ;
203
- ATTACK_ABS ( fighter, * FIGHTER_ATTACK_ABSOLUTE_KIND_THROW , 0 , 6.0 , 78 , 40 , 10 , 75 , 0.0 , 1.0 , * ATTACK_LR_CHECK_F , 0.0 , true , Hash40 :: new ( "collision_attr_normal" ) , * ATTACK_SOUND_LEVEL_S , * COLLISION_SOUND_ATTR_NONE , * ATTACK_REGION_THROW ) ;
204
- }
205
- frame ( lua_state, 6.0 ) ;
206
- if is_excute ( fighter) {
207
- let target = WorkModule :: get_int64 ( boma, * FIGHTER_STATUS_THROW_WORK_INT_TARGET_OBJECT ) ;
208
- let target_group = WorkModule :: get_int64 ( boma, * FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_GROUP ) ;
209
- let target_no = WorkModule :: get_int64 ( boma, * FIGHTER_STATUS_THROW_WORK_INT_TARGET_HIT_NO ) ;
210
- ATK_HIT_ABS ( fighter, * FIGHTER_ATTACK_ABSOLUTE_KIND_THROW , Hash40 :: new ( "throw" ) , target, target_group, target_no) ;
191
+ frame ( lua_state, 20.0 ) ;
192
+ if sv_animcmd:: get_value_float ( lua_state, * SO_VAR_FLOAT_LR ) < 0.0 {
193
+ if is_excute ( fighter) {
194
+ EFFECT_FOLLOW ( fighter, Hash40 :: new ( "jack_wire_line" ) , Hash40 :: new ( "throw" ) , 0 , 0 , 0 , 115.5 , 0 , -1 , 0.6 , true ) ;
195
+ }
211
196
}
212
- frame ( lua_state, 8.0 ) ;
213
- if is_excute ( fighter) {
214
- ArticleModule :: remove_exist ( boma, * FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE , ArticleOperationTarget ( * ARTICLE_OPE_TARGET_ALL ) ) ;
197
+ else {
198
+ if is_excute ( fighter) {
199
+ EFFECT_FOLLOW ( fighter, Hash40 :: new ( "jack_wire_line" ) , Hash40 :: new ( "throw" ) , 0 , 0 , 0 , 115.5 , 0 , 1 , 0.6 , true ) ;
200
+ }
215
201
}
216
- }
217
-
218
- #[ acmd_script( agent = "jack" , script = "sound_specialairhithrow" , category = ACMD_SOUND , low_priority) ]
219
- unsafe extern "C" fn jack_specialairhithrow_sound ( agent : & mut L2CAgentBase ) {
220
- frame ( agent. lua_state_agent , 1.0 ) ;
221
- if macros:: is_excute ( agent) {
222
- macros:: PLAY_SE ( agent, Hash40 :: new ( "se_jack_special_h04" ) ) ;
202
+ frame ( lua_state, 21.0 ) ;
203
+ if macros:: is_excute ( fighter) {
204
+ EFFECT_FOLLOW ( fighter, Hash40 :: new ( "sys_smash_flash" ) , Hash40 :: new ( "throw" ) , 0 , 0 , 0 , 0 , 0 , 0 , 1 , true ) ;
223
205
}
224
- frame ( agent. lua_state_agent , 2.0 ) ;
225
- if macros:: is_excute ( agent) {
226
- macros:: PLAY_SE ( agent, Hash40 :: new ( "se_common_kick_hit_m" ) ) ;
206
+ frame ( lua_state, 26.0 ) ;
207
+ if is_excute ( fighter) {
208
+ EFFECT_DETACH_KIND ( fighter, Hash40 :: new ( "sys_smash_flash" ) , -1 ) ;
209
+ EFFECT_OFF_KIND ( fighter, Hash40 :: new ( "jack_wire_line" ) , false , true ) ;
227
210
}
228
211
}
229
212
@@ -246,11 +229,10 @@ unsafe fn jack_special_air_hi_f_game(fighter: &mut L2CAgentBase) {
246
229
pub fn install ( ) {
247
230
install_acmd_scripts ! (
248
231
jack_special_airn_down_game,
232
+ jack_special_hi_game,
249
233
jack_special_air_hi_game,
234
+ jack_special_air_hi_effect,
250
235
jack_special_air_hi_f_game,
251
- jack_specialairhithrow,
252
- jack_specialairhithrow_sound,
253
- jack_special_hi_game,
254
236
) ;
255
237
}
256
238
0 commit comments