Skip to content

Commit 3b1744c

Browse files
authored
Merge pull request #2203 from HDR-Development/littlemac-rework
Little Mac Rework!!
2 parents b3bbc02 + 90b2ff4 commit 3b1744c

File tree

18 files changed

+1321
-586
lines changed

18 files changed

+1321
-586
lines changed

dynamic/src/consts.rs

+19-12
Original file line numberDiff line numberDiff line change
@@ -1222,23 +1222,30 @@ pub mod vars {
12221222
}
12231223

12241224
pub mod littlemac {
1225-
pub mod status {
1225+
pub mod instance {
12261226
// flags
12271227
pub const IS_DREAMLAND_EXPRESS: i32 = 0x0100;
12281228
pub const IS_LATE_DLE_INPUT: i32 = 0x0101;
12291229

1230+
// floats
1231+
pub const CURRENT_DAMAGE: i32 = 0x0100;
1232+
}
1233+
pub mod status {
1234+
// flags
1235+
pub const LIMIT_METER_GAIN: i32 = 0x102;
1236+
12301237
// ints
1231-
pub const SPECIAL_N_CANCEL_TYPE: i32 = 0x1100;
1238+
pub const SPECIAL_LW_CANCEL_TYPE: i32 = 0x1100;
12321239
}
12331240

1234-
pub const SPECIAL_N_CANCEL_TYPE_NONE: i32 = 0x0;
1235-
pub const SPECIAL_N_CANCEL_TYPE_GROUND_JUMP: i32 = 0x1;
1236-
pub const SPECIAL_N_CANCEL_TYPE_JUMP_AERIAL: i32 = 0x2;
1237-
pub const SPECIAL_N_CANCEL_TYPE_GUARD: i32 = 0x3;
1238-
pub const SPECIAL_N_CANCEL_TYPE_ESCAPE: i32 = 0x4;
1239-
pub const SPECIAL_N_CANCEL_TYPE_ESCAPE_AIR: i32 = 0x5;
1240-
pub const SPECIAL_N_CANCEL_TYPE_ESCAPE_F: i32 = 0x6;
1241-
pub const SPECIAL_N_CANCEL_TYPE_ESCAPE_B: i32 = 0x7;
1241+
pub const SPECIAL_LW_CANCEL_TYPE_NONE: i32 = 0x0;
1242+
pub const SPECIAL_LW_CANCEL_TYPE_GROUND_JUMP: i32 = 0x1;
1243+
pub const SPECIAL_LW_CANCEL_TYPE_JUMP_AERIAL: i32 = 0x2;
1244+
pub const SPECIAL_LW_CANCEL_TYPE_GUARD: i32 = 0x3;
1245+
pub const SPECIAL_LW_CANCEL_TYPE_ESCAPE: i32 = 0x4;
1246+
pub const SPECIAL_LW_CANCEL_TYPE_ESCAPE_AIR: i32 = 0x5;
1247+
pub const SPECIAL_LW_CANCEL_TYPE_ESCAPE_F: i32 = 0x6;
1248+
pub const SPECIAL_LW_CANCEL_TYPE_ESCAPE_B: i32 = 0x7;
12421249
}
12431250

12441251
pub mod pichu {
@@ -1443,8 +1450,8 @@ pub mod statuses {
14431450
}
14441451

14451452
pub mod littlemac {
1446-
pub const SPECIAL_N_CANCEL: i32 = 1;
1447-
pub const SPECIAL_N_CANCEL_JUMP: i32 = 2;
1453+
pub const SPECIAL_LW_CANCEL: i32 = 1;
1454+
pub const SPECIAL_LW_CANCEL_JUMP: i32 = 2;
14481455
}
14491456

14501457
pub mod wolf {

fighters/common/src/misc.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ pub fn install() {
9090
set_team_hook,
9191
set_team_owner_id_hook,
9292
ptrainer_swap_backwards_hook,
93-
ptrainer_stub_death_switch
93+
ptrainer_stub_death_switch,
9494
// shield_damage_analog,
9595
// shield_pushback_analog
9696
);
@@ -228,4 +228,4 @@ unsafe fn ptrainer_swap_backwards_hook(ctx: &mut skyline::hooks::InlineCtx) {
228228
}
229229

230230
#[skyline::hook(offset = 0xf96310)]
231-
unsafe fn ptrainer_stub_death_switch() {}
231+
unsafe fn ptrainer_stub_death_switch() {}

fighters/kirby/src/opff.rs

+14-14
Original file line numberDiff line numberDiff line change
@@ -920,38 +920,38 @@ unsafe fn littlemac_nspecial_cancels(fighter: &mut smash::lua2cpp::L2CFighterCom
920920
if status_kind == *FIGHTER_KIRBY_STATUS_KIND_LITTLEMAC_SPECIAL_N_START {
921921
if fighter.is_situation(*SITUATION_KIND_GROUND) {
922922
if fighter.is_cat_flag(Cat2::StickEscape) {
923-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE);
924-
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_N_CANCEL, true, false);
923+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE);
924+
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_LW_CANCEL, true, false);
925925
}
926926
else if fighter.is_cat_flag(Cat2::StickEscapeF) {
927-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE_F);
928-
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_N_CANCEL, true, false);
927+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE_F);
928+
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_LW_CANCEL, true, false);
929929
}
930930
else if fighter.is_cat_flag(Cat2::StickEscapeB) {
931-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE_B);
932-
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_N_CANCEL, true, false);
931+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE_B);
932+
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_LW_CANCEL, true, false);
933933
}
934934
else if (fighter.is_cat_flag(Cat1::JumpButton) || (ControlModule::is_enable_flick_jump(fighter.module_accessor) && fighter.is_cat_flag(Cat1::Jump) && fighter.sub_check_button_frick().get_bool())) {
935-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_GROUND_JUMP);
936-
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_N_CANCEL, true, false);
935+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_GROUND_JUMP);
936+
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_LW_CANCEL, true, false);
937937
}
938938
if fighter.sub_check_command_guard().get_bool() {
939-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_GUARD);
940-
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_N_CANCEL, true, false);
939+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_GUARD);
940+
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_LW_CANCEL, true, false);
941941
WorkModule::unable_transition_term(fighter.module_accessor, *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_GUARD_ON);
942942
}
943943
}
944944
else {
945945
if fighter.is_cat_flag(Cat1::AirEscape) {
946-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE_AIR);
947-
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_N_CANCEL, true, false);
946+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE_AIR);
947+
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_LW_CANCEL, true, false);
948948
WorkModule::unable_transition_term(fighter.module_accessor, *FIGHTER_STATUS_TRANSITION_TERM_ID_CONT_ESCAPE_AIR);
949949
}
950950
else if (fighter.is_cat_flag(Cat1::JumpButton) || (ControlModule::is_enable_flick_jump(fighter.module_accessor) && fighter.is_cat_flag(Cat1::Jump)))
951951
&& fighter.get_num_used_jumps() < fighter.get_jump_count_max()
952952
{
953-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_JUMP_AERIAL);
954-
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_N_CANCEL_JUMP, true, false);
953+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_JUMP_AERIAL);
954+
fighter.change_to_custom_status(statuses::littlemac::SPECIAL_LW_CANCEL_JUMP, true, false);
955955
}
956956
}
957957
}

fighters/kirby/src/status/littlemac_special_n_cancel.rs

+18-18
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,18 @@ unsafe extern "C" fn special_n_cancel_main_loop(fighter: &mut L2CFighterCommon)
5656
GroundModule::correct(fighter.module_accessor, GroundCorrectKind(*GROUND_CORRECT_KIND_AIR));
5757
KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_AIR_STOP);
5858
MotionModule::change_motion_inherit_frame(fighter.module_accessor, Hash40::new("littlemac_special_air_n_cancel"), -1.0, 1.0, 0.0, false, false);
59-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_NONE);
59+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_NONE);
6060
}
6161
else if fighter.global_table[PREV_SITUATION_KIND] == SITUATION_KIND_AIR && fighter.global_table[SITUATION_KIND] == SITUATION_KIND_GROUND {
6262
GroundModule::correct(fighter.module_accessor, GroundCorrectKind(*GROUND_CORRECT_KIND_GROUND_CLIFF_STOP));
6363
KineticModule::change_kinetic(fighter.module_accessor, *FIGHTER_KINETIC_TYPE_GROUND_STOP);
6464
MotionModule::change_motion_inherit_frame(fighter.module_accessor, Hash40::new("littlemac_special_n_cancel"), -1.0, 1.0, 0.0, false, false);
65-
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE, vars::littlemac::SPECIAL_N_CANCEL_TYPE_NONE);
65+
VarModule::set_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE, vars::littlemac::SPECIAL_LW_CANCEL_TYPE_NONE);
6666
}
67-
if VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE) == vars::littlemac::SPECIAL_N_CANCEL_TYPE_NONE && MotionModule::is_end(fighter.module_accessor) {
67+
if VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE) == vars::littlemac::SPECIAL_LW_CANCEL_TYPE_NONE && MotionModule::is_end(fighter.module_accessor) {
6868
fighter.fastshift(L2CValue::Ptr(special_n_cancel_main_loop_electric_boogaloo as *const () as _))
6969
}
70-
else if VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE) != vars::littlemac::SPECIAL_N_CANCEL_TYPE_NONE
70+
else if VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE) != vars::littlemac::SPECIAL_LW_CANCEL_TYPE_NONE
7171
&& (MotionModule::is_end(fighter.module_accessor) || (!MotionModule::is_end(fighter.module_accessor) && CancelModule::is_enable_cancel(fighter.module_accessor))) {
7272
fighter.fastshift(L2CValue::Ptr(special_n_cancel_main_loop_electric_boogaloo as *const () as _))
7373
}
@@ -83,20 +83,20 @@ unsafe extern "C" fn special_n_cancel_main_loop(fighter: &mut L2CFighterCommon)
8383

8484
unsafe extern "C" fn special_n_cancel_main_loop_electric_boogaloo(fighter: &mut L2CFighterCommon) -> L2CValue {
8585
if fighter.global_table[SITUATION_KIND] == SITUATION_KIND_GROUND {
86-
match VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE) {
87-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE => fighter.change_status(FIGHTER_STATUS_KIND_ESCAPE.into(), true.into()),
88-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE_B => fighter.change_status(FIGHTER_STATUS_KIND_ESCAPE_B.into(), true.into()),
89-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE_F => fighter.change_status(FIGHTER_STATUS_KIND_ESCAPE_F.into(), true.into()),
90-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_GUARD => fighter.change_status(FIGHTER_STATUS_KIND_WAIT.into(), false.into()),
91-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_GROUND_JUMP => fighter.change_status(FIGHTER_STATUS_KIND_JUMP_SQUAT.into(), false.into()),
92-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_NONE => fighter.change_status(FIGHTER_STATUS_KIND_WAIT.into(), false.into()),
86+
match VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE) {
87+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE => fighter.change_status(FIGHTER_STATUS_KIND_ESCAPE.into(), true.into()),
88+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE_B => fighter.change_status(FIGHTER_STATUS_KIND_ESCAPE_B.into(), true.into()),
89+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE_F => fighter.change_status(FIGHTER_STATUS_KIND_ESCAPE_F.into(), true.into()),
90+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_GUARD => fighter.change_status(FIGHTER_STATUS_KIND_WAIT.into(), false.into()),
91+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_GROUND_JUMP => fighter.change_status(FIGHTER_STATUS_KIND_JUMP_SQUAT.into(), false.into()),
92+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_NONE => fighter.change_status(FIGHTER_STATUS_KIND_WAIT.into(), false.into()),
9393
_ => {},
9494
}
9595
}
9696
else {
97-
match VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE) {
98-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_ESCAPE_AIR => fighter.change_status(FIGHTER_STATUS_KIND_FALL.into(), true.into()),
99-
vars::littlemac::SPECIAL_N_CANCEL_TYPE_NONE => fighter.change_status(FIGHTER_STATUS_KIND_FALL.into(), false.into()),
97+
match VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE) {
98+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_ESCAPE_AIR => fighter.change_status(FIGHTER_STATUS_KIND_FALL.into(), true.into()),
99+
vars::littlemac::SPECIAL_LW_CANCEL_TYPE_NONE => fighter.change_status(FIGHTER_STATUS_KIND_FALL.into(), false.into()),
100100
_ => {},
101101
}
102102
}
@@ -154,8 +154,8 @@ unsafe extern "C" fn special_n_jump_cancel_main_loop(fighter: &mut L2CFighterCom
154154
return 1.into();
155155
}
156156
if MotionModule::is_end(fighter.module_accessor) {
157-
let cancel_type = VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_N_CANCEL_TYPE);
158-
if cancel_type == vars::littlemac::SPECIAL_N_CANCEL_TYPE_JUMP_AERIAL {
157+
let cancel_type = VarModule::get_int(fighter.battle_object, vars::littlemac::status::SPECIAL_LW_CANCEL_TYPE);
158+
if cancel_type == vars::littlemac::SPECIAL_LW_CANCEL_TYPE_JUMP_AERIAL {
159159
fighter.change_status(FIGHTER_STATUS_KIND_FLY.into(), false.into());
160160
}
161161
else {
@@ -176,15 +176,15 @@ pub fn install() {
176176
);
177177
CustomStatusManager::add_new_agent_status_script(
178178
Hash40::new("fighter_kind_kirby"),
179-
statuses::littlemac::SPECIAL_N_CANCEL,
179+
statuses::littlemac::SPECIAL_LW_CANCEL,
180180
StatusInfo::new()
181181
.with_pre(special_n_cancel_pre)
182182
.with_main(special_n_cancel_main)
183183
.with_end(special_n_cancel_end)
184184
);
185185
CustomStatusManager::add_new_agent_status_script(
186186
Hash40::new("fighter_kind_kirby"),
187-
statuses::littlemac::SPECIAL_N_CANCEL_JUMP,
187+
statuses::littlemac::SPECIAL_LW_CANCEL_JUMP,
188188
StatusInfo::new()
189189
.with_pre(special_n_jump_cancel_pre)
190190
.with_main(special_n_jump_cancel_main)

0 commit comments

Comments
 (0)