Skip to content

Commit d1abf3e

Browse files
authored
Merge pull request #2222 from HDR-Development/arsene-rework
Revert Joker Grappling Hook
2 parents a96587a + 5be6ad6 commit d1abf3e

File tree

1 file changed

+80
-98
lines changed

1 file changed

+80
-98
lines changed

fighters/jack/src/acmd/specials.rs

+80-98
Original file line numberDiff line numberDiff line change
@@ -67,48 +67,48 @@ unsafe fn jack_special_hi_game(fighter: &mut L2CAgentBase) {
6767
if is_excute(fighter) {
6868
ArticleModule::generate_article(boma, *FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE, false, 0);
6969
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+
}
112112
}
113113

114114
#[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) {
139139
frame(lua_state, 19.0);
140140
if is_excute(fighter) {
141141
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);
146146
}
147147
frame(lua_state, 20.0);
148148
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+
152152
}
153153
frame(lua_state, 21.0);
154154
if is_excute(fighter) {
155155
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);
157158
}
158159
frame(lua_state, 22.0);
159160
if is_excute(fighter) {
160161
SET_SEARCH_SIZE_EXIST(fighter, 2, 8);
161162
}
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+
}
166167
frame(lua_state, 24.0);
167168
if is_excute(fighter) {
168169
AttackModule::clear_all(boma);
@@ -171,59 +172,41 @@ unsafe fn jack_special_air_hi_game(fighter: &mut L2CAgentBase) {
171172
if is_excute(fighter) {
172173
notify_event_msc_cmd!(fighter, Hash40::new_raw(0x2127e37c07), *GROUND_CLIFF_CHECK_KIND_ALWAYS);
173174
}
175+
frame(lua_state, 26.0);
176+
if is_excute(fighter) {
177+
AttackModule::clear_all(boma);
178+
}
174179
frame(lua_state, 27.0);
175180
if is_excute(fighter) {
176181
ArticleModule::change_status(boma, *FIGHTER_JACK_GENERATE_ARTICLE_WIREROPE, *WEAPON_JACK_WIREROPE_STATUS_KIND_BACK, app::ArticleOperationTarget(*ARTICLE_OPE_TARGET_ALL));
177182
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);
179184
}
180-
181185
}
182186

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) {
185189
let lua_state = fighter.lua_state_agent;
186190
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+
}
211196
}
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+
}
215201
}
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);
223205
}
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);
227210
}
228211
}
229212

@@ -246,11 +229,10 @@ unsafe fn jack_special_air_hi_f_game(fighter: &mut L2CAgentBase) {
246229
pub fn install() {
247230
install_acmd_scripts!(
248231
jack_special_airn_down_game,
232+
jack_special_hi_game,
249233
jack_special_air_hi_game,
234+
jack_special_air_hi_effect,
250235
jack_special_air_hi_f_game,
251-
jack_specialairhithrow,
252-
jack_specialairhithrow_sound,
253-
jack_special_hi_game,
254236
);
255237
}
256238

0 commit comments

Comments
 (0)