Skip to content

Commit 008f3a6

Browse files
committed
Merge branch 'dev' into megaman-adjustments
2 parents 68f1ca5 + 7ae7508 commit 008f3a6

File tree

18 files changed

+210
-63
lines changed

18 files changed

+210
-63
lines changed

fighters/common/src/opff/floats.rs

+22-45
Original file line numberDiff line numberDiff line change
@@ -32,30 +32,25 @@ pub unsafe fn extra_floats(fighter: &mut L2CFighterCommon, boma: &mut BattleObje
3232
if VarModule::get_int(boma.object(), vars::common::instance::FLOAT_STYLE) == 2 {
3333
VarModule::set_int(boma.object(), vars::common::instance::FLOAT_DURATION, 0);
3434
}
35-
// Activate float_pause aerial flag to prevent floats from being activated during aerials if
36-
// float option isnt 1
37-
if VarModule::get_int(boma.object(), vars::common::instance::FLOAT_STYLE) != 1 {
38-
if status_kind != *FIGHTER_STATUS_KIND_ATTACK_AIR {
39-
VarModule::set_flag(boma.object(), vars::common::instance::FLOAT_PAUSE_AERIAL, WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) == VarModule::get_int(boma.object(), vars::common::instance::FLOAT_DURATION));
40-
} else if WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY) {
41-
VarModule::off_flag(boma.object(), vars::common::instance::FLOAT_PAUSE_AERIAL);
42-
}
43-
}
4435

4536
if situation_kind == *SITUATION_KIND_AIR
4637
&& !boma.is_prev_status(*SITUATION_KIND_GROUND)
47-
//&& !StatusModule::is_changing(boma)
4838
{
39+
// FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME will sometimes erroneously decrement once every 2 frames (effectively allowing for double the max float time); this overrides that
40+
// With SL2 float time is no longer doubled, but forcing the flag to be on is still required?
41+
if WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) > 0
42+
&& WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) < VarModule::get_int(boma.object(), vars::common::instance::FLOAT_DURATION)
43+
{
44+
WorkModule::on_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY);
45+
}
4946
if WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY) {
5047
VarModule::on_flag(fighter.battle_object, vars::common::instance::OMNI_FLOAT);
5148
}
5249
// Prevent float from activating during aerials
5350
if VarModule::get_int(boma.object(), vars::common::instance::FLOAT_STYLE) != 1 && !WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY) {
5451
if status_kind == *FIGHTER_STATUS_KIND_ATTACK_AIR && !CancelModule::is_enable_cancel(boma) {
55-
if VarModule::is_flag(boma.object(), vars::common::instance::FLOAT_PAUSE_AERIAL) {
56-
VarModule::on_flag(boma.object(), vars::common::instance::AERIAL_NO_FLOAT);
57-
WorkModule::set_int(boma, 0, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME);
58-
}
52+
VarModule::on_flag(boma.object(), vars::common::instance::AERIAL_NO_FLOAT);
53+
WorkModule::set_int(boma, 0, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME);
5954
} else {
6055
if VarModule::is_flag(boma.object(), vars::common::instance::AERIAL_NO_FLOAT) {
6156
WorkModule::set_int(boma, VarModule::get_int(boma.object(), vars::common::instance::FLOAT_DURATION), *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME);
@@ -96,47 +91,29 @@ pub unsafe fn extra_floats(fighter: &mut L2CFighterCommon, boma: &mut BattleObje
9691
}
9792
}
9893
// Immediately transition to fall/double jump fall when activating float
99-
if ControlModule::check_button_on(boma, *CONTROL_PAD_BUTTON_JUMP) && boma.left_stick_y() < -0.66 && WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) > 0 {
94+
if !WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY)
95+
&& WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) > 0
96+
&& ControlModule::check_button_on(boma, *CONTROL_PAD_BUTTON_JUMP) && boma.left_stick_y() < -0.66
97+
{
10098
if [*FIGHTER_STATUS_KIND_CLIFF_JUMP1, *FIGHTER_STATUS_KIND_CLIFF_JUMP2, *FIGHTER_STATUS_KIND_CLIFF_JUMP3, *FIGHTER_STATUS_KIND_DAMAGE_FALL, *FIGHTER_STATUS_KIND_PASS].contains(&status_kind) {
101-
VarModule::on_flag(fighter.battle_object, vars::common::instance::OMNI_FLOAT);
102-
ControlModule::reset_trigger(boma);
103-
StatusModule::change_status_request_from_script(boma, *FIGHTER_STATUS_KIND_FALL, true);
99+
StatusModule::change_status_request_from_script(boma, *FIGHTER_STATUS_KIND_FALL, false);
104100
} else if status_kind == *FIGHTER_STATUS_KIND_JUMP_AERIAL {
105-
VarModule::on_flag(fighter.battle_object, vars::common::instance::OMNI_FLOAT);
106-
ControlModule::reset_trigger(boma);
107-
StatusModule::change_status_request_from_script(boma, *FIGHTER_STATUS_KIND_FALL_AERIAL, true);
108-
} else if [hash40("walk_fall_l"), hash40("walk_fall_r"), hash40("run_fall_l"), hash40("run_fall_r")].contains(&MotionModule::motion_kind(boma)) {
109-
MotionModule::change_motion(boma, Hash40::new("fall"), 0.0, 1.0, false, 0.0, false, false);
101+
StatusModule::change_status_request_from_script(boma, *FIGHTER_STATUS_KIND_FALL_AERIAL, false);
110102
} else if status_kind == *FIGHTER_STATUS_KIND_JUMP {
111103
if StatusModule::is_changing(boma) { //peach ground-float mechanic
112-
let pos = Vector3f { x: PostureModule::pos_x(boma), y: PostureModule::pos_y(boma) + 3.5, z: PostureModule::pos_z(boma) };
104+
let pos = Vector3f { x: PostureModule::pos_x(boma), y: PostureModule::pos_y(boma) + 2.5 + motion_value, z: PostureModule::pos_z(boma) };
113105
PostureModule::set_pos(boma, &pos);
114106
}
115-
VarModule::on_flag(fighter.battle_object, vars::common::instance::OMNI_FLOAT);
116-
ControlModule::reset_trigger(boma);
117-
StatusModule::change_status_request_from_script(boma, *FIGHTER_STATUS_KIND_FALL, true);
107+
StatusModule::change_status_request_from_script(boma, *FIGHTER_STATUS_KIND_FALL, false);
118108
}
119109
}
120-
//else {
121-
// // "superjump" bugfix
122-
// if WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY) && status_kind == *FIGHTER_STATUS_KIND_JUMP && boma.status_frame() <= 1 {
123-
// ControlModule::reset_trigger(boma);
124-
// StatusModule::change_status_request_from_script(boma, *FIGHTER_STATUS_KIND_FALL, true);
125-
// }
126-
//}
127-
// FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME will sometimes erroneously decrement once every 2 frames (effectively allowing for double the max float time); this overrides that
128-
if WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) > 0 && WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) < VarModule::get_int(boma.object(), vars::common::instance::FLOAT_DURATION) {
129-
if ([*FIGHTER_STATUS_KIND_JUMP, *FIGHTER_STATUS_KIND_JUMP_AERIAL, *FIGHTER_STATUS_KIND_CLIFF_JUMP1, *FIGHTER_STATUS_KIND_CLIFF_JUMP2, *FIGHTER_STATUS_KIND_CLIFF_JUMP3].contains(&status_kind) || [*FIGHTER_STATUS_KIND_FALL, *FIGHTER_STATUS_KIND_FALL_AERIAL, *FIGHTER_STATUS_KIND_ATTACK_AIR].contains(&status_kind)) && !WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY) {
130-
let fall_slowly_frame = WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME);
131-
WorkModule::on_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY);
132-
VarModule::on_flag(fighter.battle_object, vars::common::instance::OMNI_FLOAT);
133-
WorkModule::set_int(boma, fall_slowly_frame - 1, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME);
134-
}
110+
// Run-off anim cancel
111+
if [hash40("walk_fall_l"), hash40("walk_fall_r"), hash40("run_fall_l"), hash40("run_fall_r")].contains(&MotionModule::motion_kind(boma))
112+
&& WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY) {
113+
MotionModule::change_motion(boma, Hash40::new("fall"), 0.0, 1.0, false, 0.0, false, false);
135114
}
136-
137115
// Omnidirectional float for Dark Samus and Mewtwo
138-
if WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) > 0
139-
&& WorkModule::get_int(boma, *FIGHTER_INSTANCE_WORK_ID_INT_SUPERLEAF_FALL_SLOWLY_FRAME) < VarModule::get_int(boma.object(), vars::common::instance::FLOAT_DURATION)
116+
if WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY)
140117
&& ControlModule::check_button_on(boma, *CONTROL_PAD_BUTTON_JUMP) {
141118
if boma.left_stick_y() != 0.0 && VarModule::get_int(fighter.battle_object, vars::common::instance::FLOAT_TIMER) > 2 {
142119
let mut motion_vec = Vector3f{x: 0.0, y: 0.0, z: 0.0};

fighters/ike/src/status.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ extern "C" fn ike_init(fighter: &mut L2CFighterCommon) {
4040
}
4141
}
4242

43+
unsafe extern "C" fn ike_rebirth_end(fighter: &mut L2CFighterCommon) -> L2CValue {
44+
VisibilityModule::set_int64(fighter.module_accessor, hash40("sword") as i64, hash40("sword_normal") as i64);
45+
if ArticleModule::is_exist(fighter.module_accessor, *FIGHTER_IKE_GENERATE_ARTICLE_SWORD) {
46+
ArticleModule::remove_exist(fighter.module_accessor, *FIGHTER_IKE_GENERATE_ARTICLE_SWORD, ArticleOperationTarget(*ARTICLE_OPE_TARGET_ALL));
47+
}
48+
fighter.status_end_Rebirth();
49+
0.into()
50+
}
51+
4352
pub fn install() {
44-
smashline::Agent::new("ike").on_start(ike_init).install();
53+
smashline::Agent::new("ike")
54+
.on_start(ike_init)
55+
.status(smashline::End, *FIGHTER_STATUS_KIND_REBIRTH, ike_rebirth_end)
56+
.install();
4557
}

fighters/koopajr/src/status.rs

+9
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,20 @@ extern "C" fn koopajr_init(fighter: &mut L2CFighterCommon) {
3434
}
3535
}
3636

37+
unsafe extern "C" fn koopajr_rebirth_end(fighter: &mut L2CFighterCommon) -> L2CValue {
38+
if ArticleModule::is_exist(fighter.module_accessor, *FIGHTER_KOOPAJR_GENERATE_ARTICLE_KART) {
39+
ArticleModule::remove_exist(fighter.module_accessor, *FIGHTER_KOOPAJR_GENERATE_ARTICLE_KART, ArticleOperationTarget(*ARTICLE_OPE_TARGET_ALL));
40+
}
41+
fighter.status_end_Rebirth();
42+
0.into()
43+
}
44+
3745
pub fn install() {
3846
special_s_jump::install();
3947
special_hi_escape::install();
4048
special_hi_damage::install();
4149
smashline::Agent::new("koopajr")
4250
.on_start(koopajr_init)
51+
.status(smashline::End, *FIGHTER_STATUS_KIND_REBIRTH, koopajr_rebirth_end)
4352
.install();
4453
}

fighters/lucas/src/opff.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -450,10 +450,7 @@ pub unsafe fn lucas_frame(fighter: &mut smash::lua2cpp::L2CFighterCommon) {
450450
}
451451

452452
pub extern "C" fn pkthunder_callback(weapon: &mut smash::lua2cpp::L2CFighterBase) {
453-
unsafe {
454-
if weapon.kind() != WEAPON_KIND_LUCAS_PK_THUNDER {
455-
return
456-
}
453+
unsafe {
457454
WorkModule::on_flag(weapon.module_accessor, *WEAPON_INSTANCE_WORK_ID_FLAG_NO_DEAD);
458455
}
459456
}

fighters/lucas/src/status.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,11 @@ pub unsafe extern "C" fn attack_air(fighter: &mut L2CFighterCommon) -> L2CValue
221221

222222
unsafe extern "C" fn move_exec(weapon: &mut L2CFighterCommon) -> L2CValue {
223223
if !VarModule::is_flag(weapon.object(), vars::lucas::status::THUNDER_LOOSE) {
224-
if LinkModule::get_parent_status_kind(weapon.module_accessor, *WEAPON_LINK_NO_CONSTRAINT) as i32 != *FIGHTER_LUCAS_STATUS_KIND_SPECIAL_HI_HOLD {
224+
let parent_id = WorkModule::get_int(weapon.module_accessor, *WEAPON_INSTANCE_WORK_ID_INT_ACTIVATE_FOUNDER_ID);
225+
let parent_object = get_battle_object_from_id(parent_id as u32);
226+
if !parent_object.is_null()
227+
&& sv_battle_object::kind(parent_id as u32) == *FIGHTER_KIND_LUCAS
228+
&& StatusModule::status_kind((*parent_object).module_accessor) != *FIGHTER_LUCAS_STATUS_KIND_SPECIAL_HI_HOLD {
225229
VarModule::on_flag(weapon.object(), vars::lucas::status::THUNDER_LOOSE);
226230
MotionModule::change_motion_force_inherit_frame(weapon.module_accessor, Hash40::new("move"), 0.0, 1.0, 1.0);
227231
return 0.into();

fighters/mario/src/status.rs

+10
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,21 @@ unsafe extern "C" fn special_lw_shoot_pre(fighter: &mut L2CFighterCommon) -> L2C
5353
return 0.into()
5454
}
5555

56+
unsafe extern "C" fn mario_rebirth_end(fighter: &mut L2CFighterCommon) -> L2CValue {
57+
if ArticleModule::is_exist(fighter.module_accessor, *FIGHTER_MARIO_GENERATE_ARTICLE_CAPPY) {
58+
ArticleModule::remove_exist(fighter.module_accessor, *FIGHTER_MARIO_GENERATE_ARTICLE_CAPPY, ArticleOperationTarget(*ARTICLE_OPE_TARGET_ALL));
59+
}
60+
EffectModule::remove_post_effect_line(fighter.module_accessor, 0x1e, true);
61+
fighter.status_end_Rebirth();
62+
0.into()
63+
}
64+
5665
pub fn install() {
5766
special_n::install();
5867
smashline::Agent::new("mario")
5968
.on_start(mario_init)
6069
.status(Pre, *FIGHTER_STATUS_KIND_SPECIAL_LW, special_lw_pre)
6170
.status(Pre, *FIGHTER_MARIO_STATUS_KIND_SPECIAL_LW_SHOOT, special_lw_shoot_pre)
71+
.status(smashline::End, *FIGHTER_STATUS_KIND_REBIRTH, mario_rebirth_end)
6272
.install();
6373
}

fighters/master/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
pub mod acmd;
66

7-
//pub mod status;
7+
pub mod status;
88
pub mod opff;
99

1010
use smash::{
@@ -40,6 +40,6 @@ use smashline::*;
4040

4141
pub fn install() {
4242
acmd::install();
43-
//status::install();
43+
status::install();
4444
opff::install();
4545
}

fighters/master/src/status.rs

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
use super::*;
2+
use globals::*;
3+
4+
unsafe extern "C" fn master_rebirth_end(fighter: &mut L2CFighterCommon) -> L2CValue {
5+
if ArticleModule::is_exist(fighter.module_accessor, *FIGHTER_MASTER_GENERATE_ARTICLE_SWORD) {
6+
ArticleModule::remove_exist(fighter.module_accessor, *FIGHTER_MASTER_GENERATE_ARTICLE_SWORD, ArticleOperationTarget(*ARTICLE_OPE_TARGET_ALL));
7+
}
8+
fighter.status_end_Rebirth();
9+
0.into()
10+
}
11+
12+
pub fn install() {
13+
smashline::Agent::new("master")
14+
.status(smashline::End, *FIGHTER_STATUS_KIND_REBIRTH, master_rebirth_end)
15+
.install();
16+
}

fighters/ness/src/opff.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,7 @@ pub unsafe fn ness_frame(fighter: &mut smash::lua2cpp::L2CFighterCommon) {
214214
}
215215

216216
pub unsafe extern "C" fn pkthunder_callback(weapon: &mut smash::lua2cpp::L2CFighterBase) {
217-
unsafe {
218-
if weapon.kind() != WEAPON_KIND_NESS_PK_THUNDER {
219-
return
220-
}
217+
unsafe {
221218
WorkModule::on_flag(weapon.module_accessor, *WEAPON_INSTANCE_WORK_ID_FLAG_NO_DEAD);
222219
}
223220
}

fighters/ness/src/status.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ utils::import!(common::djc::attack_air_main_status);
77

88
unsafe extern "C" fn move_exec(weapon: &mut L2CFighterCommon) -> L2CValue {
99
if !VarModule::is_flag(weapon.object(), vars::ness::status::THUNDER_LOOSE) {
10-
if LinkModule::get_parent_status_kind(weapon.module_accessor, *WEAPON_LINK_NO_CONSTRAINT) as i32 != *FIGHTER_NESS_STATUS_KIND_SPECIAL_HI_HOLD {
10+
let parent_id = WorkModule::get_int(weapon.module_accessor, *WEAPON_INSTANCE_WORK_ID_INT_ACTIVATE_FOUNDER_ID);
11+
let parent_object = get_battle_object_from_id(parent_id as u32);
12+
if !parent_object.is_null()
13+
&& sv_battle_object::kind(parent_id as u32) == *FIGHTER_KIND_NESS
14+
&& StatusModule::status_kind((*parent_object).module_accessor) != *FIGHTER_NESS_STATUS_KIND_SPECIAL_HI_HOLD {
1115
VarModule::on_flag(weapon.object(), vars::ness::status::THUNDER_LOOSE);
1216
MotionModule::change_motion_force_inherit_frame(weapon.module_accessor, Hash40::new("move"), 0.0, 1.0, 1.0);
1317
return 0.into();

fighters/palutena/src/acmd/other.rs

+50
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,53 @@ unsafe extern "C" fn palutena_autoaimbullet_shot_effect(agent: &mut L2CAgentBase
308308
}
309309
}
310310

311+
unsafe extern "C" fn palutena_explosiveflame_explode_game(fighter: &mut L2CAgentBase) {
312+
let lua_state = fighter.lua_state_agent;
313+
let boma = fighter.boma();
314+
if is_excute(fighter) {
315+
ATTACK(fighter, 0, 0, Hash40::new("top"), 1.5, 160, 100, 50, 0, 4.8, 0.0, 0.0, 0.0, None, None, None, 1.0, 0.4, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -0.7, 0.0, 5, true, true, false, false, false, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_BOMB, *ATTACK_REGION_BOMB);
316+
AttackModule::set_no_damage_fly_smoke_all(boma, true, false);
317+
}
318+
wait(lua_state, 4.0);
319+
if is_excute(fighter) {
320+
AttackModule::set_size(boma, 0, 6.0);
321+
}
322+
wait(lua_state, 4.0);
323+
if is_excute(fighter) {
324+
AttackModule::set_size(boma, 0, 7.2);
325+
}
326+
wait(lua_state, 4.0);
327+
if is_excute(fighter) {
328+
AttackModule::set_size(boma, 0, 8.4);
329+
}
330+
wait(lua_state, 4.0);
331+
if is_excute(fighter) {
332+
AttackModule::set_size(boma, 0, 9.6);
333+
}
334+
wait(lua_state, 4.0);
335+
if is_excute(fighter) {
336+
AttackModule::set_size(boma, 0, 10.8);
337+
}
338+
wait(lua_state, 4.0);
339+
if is_excute(fighter) {
340+
AttackModule::set_size(boma, 0, 12.0);
341+
}
342+
wait(lua_state, 4.0);
343+
if is_excute(fighter) {
344+
AttackModule::clear_all(boma);
345+
//AREA_WIND_2ND_RAD(fighter, 0, 1, 0.02, 1000, 1, 0, 0, 29);
346+
ControlModule::set_rumble(boma, Hash40::new("rbkind_explosion"), 0, false, *BATTLE_OBJECT_ID_INVALID as u32);
347+
}
348+
wait(lua_state, 1.0);
349+
if is_excute(fighter) {
350+
ATTACK(fighter, 0, 1, Hash40::new("top"), 5.5, 84, 141, 0, 60, 15.5, 0.0, 0.0, 0.0, None, None, None, 1.5, 0.4, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_F, false, -2.7, 0.0, 0, true, true, false, false, false, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_BOMB, *ATTACK_REGION_BOMB);
351+
}
352+
wait(lua_state, 2.0);
353+
if is_excute(fighter) {
354+
AttackModule::clear_all(boma);
355+
}
356+
}
357+
311358
unsafe extern "C" fn escape_air_game(fighter: &mut L2CAgentBase) {
312359
let lua_state = fighter.lua_state_agent;
313360
let boma = fighter.boma();
@@ -358,6 +405,9 @@ pub fn install() {
358405
smashline::Agent::new("palutena_reflectionboard")
359406
.acmd("game_shoot", palutena_reflectionboard_shoot_game)
360407
.install();
408+
smashline::Agent::new("palutena_explosiveflame")
409+
.acmd("game_explode", palutena_explosiveflame_explode_game)
410+
.install();
361411
// smashline::Agent::new("palutena_explosiveflame_reserve")
362412
// .acmd("effect_wait", palutena_explosiveflame_reserve_wait_effect)
363413
// .install();

0 commit comments

Comments
 (0)