Skip to content

Commit 7ae7508

Browse files
authored
Merge pull request #2290 from jaccob101/athing
Small Fixes
2 parents d873e9b + 9c6b8cf commit 7ae7508

File tree

4 files changed

+81
-48
lines changed

4 files changed

+81
-48
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/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();

fighters/pzenigame/src/acmd/aerials.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ unsafe extern "C" fn pzenigame_attack_air_b_game(fighter: &mut L2CAgentBase) {
5656
frame(lua_state, 5.0);
5757
if is_excute(fighter) {
5858
WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_AIR_FLAG_ENABLE_LANDING);
59-
ATTACK(fighter, 0, 0, Hash40::new("top"), 1.0, 367, 80, 0, 35, 4.2, 0.0, 5.0, -5.0, None, None, None, 0.75, 0.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_B, true, 0, 0.0, 2, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_TAIL);
60-
ATTACK(fighter, 1, 0, Hash40::new("top"), 1.0, 367, 80, 0, 35, 4.2, 0.0, 5.0, -9.0, None, None, None, 0.75, 0.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_B, true, 0, 0.0, 2, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_TAIL);
59+
ATTACK(fighter, 0, 0, Hash40::new("top"), 1.0, 367, 80, 0, 35, 4.2, 0.0, 5.0, -5.0, None, None, None, 0.75, 0.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, true, 0, 0.0, 2, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_TAIL);
60+
ATTACK(fighter, 1, 0, Hash40::new("top"), 1.0, 367, 80, 0, 35, 4.2, 0.0, 5.0, -9.0, None, None, None, 0.75, 0.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, true, 0, 0.0, 2, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_TAIL);
6161
ATTACK(fighter, 2, 0, Hash40::new("top"), 1.0, 65, 15, 0, 60, 4.2, 0.0, 5.0, -5.0, None, None, None, 0.75, 0.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_B, true, 0, 0.0, 2, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_TAIL);
6262
ATTACK(fighter, 3, 0, Hash40::new("top"), 1.0, 65, 15, 0, 60, 4.2, 0.0, 5.0, -9.0, None, None, None, 0.75, 0.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_B, true, 0, 0.0, 2, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_TAIL);
6363
}

romfs/source/fighter/palutena/motion/body/motion_patch.yaml

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
landing_fall_special:
2+
animations:
3+
- name: a05landingheavy.nuanmb
4+
landing_heavy:
5+
animations:
6+
- name: a04landingfallspecial.nuanmb
17
jump_squat:
28
blend_frames: 0
39
animations:
4-
- name: a05landingheavy.nuanmb
10+
- name: a04landingfallspecial.nuanmb
511
fall:
612
blend_frames: 5
713
fall_aerial:

0 commit comments

Comments
 (0)