HDR-Development / smashline

31 stars 7 forks source link

Issues regarding status changes and fighter resets #5

Closed Armasher5872 closed 11 months ago

Armasher5872 commented 1 year ago

So, I've found a couple issues whenever I've tried to change from certain statuses into other status kinds, or assign statuses in a fighter reset. Whenever assigning Donkey Kong's Forward Throw to his Up Throw and vice versa, it doesn't properly transition into the statuses, which for forward throw, it does the throw animation, but doesn't actually perform the throw.

//The below code is for handling the changes into their other status kinds if fighter_kind == *FIGHTER_KIND_DONKEY { fighter.global_table[THROW_F_STATUS_KIND].assign(&FIGHTER_STATUS_KIND_THROW.into()); fighter.global_table[THROW_HI_STATUS_KIND].assign(&FIGHTER_DONKEY_STATUS_KIND_SHOULDER_START.into()); } ... //Later on in the file pub fn install(agent: &mut smashline::Agent) { agent.on_start(fighter_reset); ... }

Whenever trying to change from catch_pull to another status, like Throw or Cargo, it causes the game to freeze right as the grab connects:

[skyline::hook(replace = L2CFighterCommon_status_pre_CatchPull_common)]

unsafe fn status_pre_catchpull_common(fighter: &mut L2CFighterCommon, param_1: i32) { let fighter_kind = fighter.global_table[FIGHTER_KIND].get_i32(); let entry_id = WorkModule::get_int(fighter.module_accessor, FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID) as usize; if fighter_kind == FIGHTER_KIND_DONKEY && HAS_CATCH[entry_id] { StatusModule::change_status_request_from_script(fighter.module_accessor, FIGHTER_DONKEY_STATUS_KIND_SHOULDER_START, false); HAS_CATCH[entry_id] = false; } else { StatusModule::init_settings(fighter.module_accessor, smash::app::SituationKind(SITUATION_KIND_GROUND), FIGHTER_KINETIC_TYPE_MOTION, GROUND_CORRECT_KIND_GROUND_CLIFF_STOP as u32, smash::app::GroundCliffCheckKind(GROUND_CLIFF_CHECK_KIND_NONE), true, FIGHTER_STATUS_WORK_KEEP_FLAG_NONE_FLAG, FIGHTER_STATUS_WORK_KEEP_FLAG_NONE_INT, FIGHTER_STATUS_WORK_KEEP_FLAG_NONE_FLOAT, 0); FighterStatusModuleImpl::set_fighter_status_data(fighter.module_accessor, false, FIGHTER_TREADED_KIND_ENABLE, false, true, false, 0, (FIGHTER_STATUS_ATTR_DISABLE_JUMP_BOARD_EFFECT | *FIGHTER_STATUS_ATTR_DISABLE_TURN_DAMAGE | param_1) as u32, 0, 0); } }

All of these were working as intended in Smashline 1, but don't seem to work in Smashline 2 for some reason (I'm not sure if it's due to being installed incorrectly, or if it's something else).

Armasher5872 commented 11 months ago

After further testing, I may upload this as a new issue.