Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use smash::hash40;
- use smash::app::*;
- use smash::app::lua_bind::*;
- use smash::lib::lua_const::*;
- use crate::FIGHTER_CUTIN_MANAGER_ADDR;
- use smash::app::utility::get_kind;
- use smashline::*;
- use smash_script::*;
- use smash::lua2cpp::*;
- use smash::Vector2f;
- use smash::app::BattleObjectModuleAccessor;
- use smash::phx::*;
- use smash::app::sv_battle_object;
- use skyline::nn::ro::LookupSymbol;
- use smash::app::FighterSpecializer_Demon::*;
- static mut FIGHTER_POS_X:[f32;8] = [0.0; 8];
- static mut FIGHTER_POS_Y:[f32;8] = [0.0; 8];
- static mut GROUND_CONTROL:[f32;8] = [0.0; 8];
- static mut STALL_CONTROL:[f32;8] = [0.0; 8];
- static mut IS_GLOCK: [bool;8] = [false; 8];
- pub unsafe fn is_damage_check(module_accessor : *mut BattleObjectModuleAccessor) -> bool {
- if WorkModule::is_flag(module_accessor, *FIGHTER_INSTANCE_WORK_ID_FLAG_CAPTURE_YOSHI)
- || [
- *FIGHTER_STATUS_KIND_DAMAGE,
- *FIGHTER_STATUS_KIND_DAMAGE_AIR,
- *FIGHTER_STATUS_KIND_SAVING_DAMAGE,
- *FIGHTER_STATUS_KIND_SAVING_DAMAGE_AIR,
- *FIGHTER_STATUS_KIND_THROWN,
- *FIGHTER_STATUS_KIND_CAPTURE_WAIT,
- *FIGHTER_STATUS_KIND_CAPTURE_DAMAGE,
- *FIGHTER_STATUS_KIND_CAPTURE_PULLED,
- *FIGHTER_STATUS_KIND_DAMAGE_FLY,
- *FIGHTER_STATUS_KIND_SAVING_DAMAGE_FLY,
- *FIGHTER_STATUS_KIND_DAMAGE_FLY_ROLL,
- *FIGHTER_STATUS_KIND_DAMAGE_FLY_METEOR,
- *FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_LR,
- *FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_U,
- *FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_D,
- *FIGHTER_STATUS_KIND_FINAL,
- *FIGHTER_STATUS_KIND_SLEEP,
- *FIGHTER_STATUS_KIND_ESCAPE_B,
- *FIGHTER_STATUS_KIND_ESCAPE_F,
- *FIGHTER_STATUS_KIND_ESCAPE,
- *FIGHTER_STATUS_KIND_CLIFF_ESCAPE,
- *FIGHTER_STATUS_KIND_ESCAPE_AIR_SLIDE,
- *FIGHTER_STATUS_KIND_CAPTURE_JACK_WIRE,
- *FIGHTER_STATUS_KIND_CAPTURE_MASTERHAND,
- *FIGHTER_STATUS_KIND_CAPTURE_MASTER_SWORD,
- *FIGHTER_STATUS_KIND_CAPTURE_PULLED_FISHINGROD,
- *FIGHTER_STATUS_KIND_CAPTURE_PULLED_PICKEL,
- *FIGHTER_STATUS_KIND_SWALLOWED,
- *FIGHTER_STATUS_KIND_AIR_LASSO,
- *FIGHTER_STATUS_KIND_CATCHED_GANON,
- *FIGHTER_STATUS_KIND_CATCHED_AIR_GANON,
- *FIGHTER_STATUS_KIND_CATCHED_AIR_END_GANON,
- *FIGHTER_STATUS_KIND_CATCHED_AIR_FALL_GANON,
- *FIGHTER_STATUS_KIND_CATCHED_REFLET,
- *FIGHTER_STATUS_KIND_CATCHED_RIDLEY,
- *FIGHTER_STATUS_KIND_CATCHED_PICKEL_TROLLEY,
- *FIGHTER_STATUS_KIND_DEMON_DIVED,
- *FIGHTER_STATUS_KIND_TRAIL_REBOUND,
- *FIGHTER_STATUS_KIND_MISS_FOOT,
- *FIGHTER_STATUS_KIND_DEAD,
- *FIGHTER_STATUS_KIND_REBIRTH,
- *FIGHTER_STATUS_KIND_BURY,
- *FIGHTER_STATUS_KIND_BURY_WAIT,
- *FIGHTER_STATUS_KIND_ICE,
- *FIGHTER_STATUS_KIND_DOWN_DAMAGE,
- *FIGHTER_STATUS_KIND_DOWN_STAND_FB,
- *FIGHTER_STATUS_KIND_DOWN_STAND,
- *FIGHTER_STATUS_KIND_DOWN_WAIT,
- *FIGHTER_STATUS_KIND_DOWN_EAT,
- *FIGHTER_STATUS_KIND_LAY_DOWN,
- *FIGHTER_STATUS_KIND_DOWN,
- *FIGHTER_STATUS_KIND_DOWN_SPOT,
- *FIGHTER_STATUS_KIND_PASSIVE,
- *FIGHTER_STATUS_KIND_PASSIVE_WALL,
- *FIGHTER_STATUS_KIND_PASSIVE_CEIL,
- *FIGHTER_STATUS_KIND_PASSIVE_FB //Extra checking idk
- ].contains(&StatusModule::status_kind(module_accessor)) || FighterStopModuleImpl::is_damage_stop(module_accessor) {
- return true;
- }
- else {
- return false;
- }
- }
- #[fighter_frame( agent = FIGHTER_KIND_DEMON )]
- fn igotaglockinmyrari(fighter : &mut L2CFighterCommon) {
- unsafe {
- let module_accessor = smash::app::sv_system::battle_object_module_accessor(fighter.lua_state_agent);
- let kind = smash::app::utility::get_kind(module_accessor);
- let status_kind = StatusModule::status_kind(module_accessor);
- let motion_kind = MotionModule::motion_kind(module_accessor);
- let entry_id = WorkModule::get_int(module_accessor, *FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID) as usize;
- FIGHTER_POS_Y[entry_id] = PostureModule::pos_y(module_accessor);
- FIGHTER_POS_X[entry_id] = PostureModule::pos_x(module_accessor);
- if kind == *FIGHTER_KIND_DEMON {
- if status_kind == *FIGHTER_STATUS_KIND_JUMP_SQUAT || status_kind == *FIGHTER_STATUS_KIND_JUMP || status_kind == *FIGHTER_STATUS_KIND_JUMP_AERIAL || status_kind == *FIGHTER_STATUS_KIND_ATTACK_S3 || status_kind == *FIGHTER_STATUS_KIND_SPECIAL_N || status_kind == *FIGHTER_STATUS_KIND_SPECIAL_S || status_kind == *FIGHTER_STATUS_KIND_SPECIAL_HI || status_kind == *FIGHTER_STATUS_KIND_SPECIAL_LW {
- IS_GLOCK[entry_id] = true;
- }
- else if status_kind == *FIGHTER_STATUS_KIND_DEAD || status_kind == *FIGHTER_STATUS_KIND_ENTRY || motion_kind == smash::hash40("win_1") || motion_kind == smash::hash40("win_2") || motion_kind == smash::hash40("win_3") || motion_kind == smash::hash40("lose") {
- IS_GLOCK[entry_id] = false;
- }
- if !is_damage_check(module_accessor) && IS_GLOCK[entry_id] && StatusModule::situation_kind(module_accessor) == *SITUATION_KIND_AIR {
- STALL_CONTROL[entry_id] += 1.0;
- if STALL_CONTROL[entry_id] == 300.0 {
- GROUND_CONTROL[entry_id] = 155.0;
- }
- if STALL_CONTROL[entry_id] > 300.0 {
- GROUND_CONTROL[entry_id] += 2.0;
- }
- if ControlModule::get_stick_x(module_accessor) <= -0.8{
- FIGHTER_POS_X[entry_id] -= 1.55;
- }
- else if ControlModule::get_stick_x(module_accessor) <= -0.6928 && ControlModule::get_stick_x(module_accessor) > -0.8 {
- FIGHTER_POS_X[entry_id] -= 1.34;
- }
- else if ControlModule::get_stick_x(module_accessor) <= -0.5657 && ControlModule::get_stick_x(module_accessor) > -0.6928 {
- FIGHTER_POS_X[entry_id] -= 1.1;
- }
- else if ControlModule::get_stick_x(module_accessor) <= -0.4 && ControlModule::get_stick_x(module_accessor) > -0.5657 {
- FIGHTER_POS_X[entry_id] -= 0.78;
- }
- else if ControlModule::get_stick_x(module_accessor) <= -0.25 && ControlModule::get_stick_x(module_accessor) > -0.4 {
- FIGHTER_POS_X[entry_id] -= 0.48;
- }
- else if ControlModule::get_stick_x(module_accessor) >= 0.8{
- FIGHTER_POS_X[entry_id] += 1.55;
- }
- else if ControlModule::get_stick_x(module_accessor) >= 0.6928 && ControlModule::get_stick_x(module_accessor) < 0.8 {
- FIGHTER_POS_X[entry_id] += 1.34;
- }
- else if ControlModule::get_stick_x(module_accessor) >= 0.5657 && ControlModule::get_stick_x(module_accessor) < 0.6928 {
- FIGHTER_POS_X[entry_id] += 1.1;
- }
- else if ControlModule::get_stick_x(module_accessor) >= 0.4 && ControlModule::get_stick_x(module_accessor) < 0.5657 {
- FIGHTER_POS_X[entry_id] += 0.78;
- }
- else if ControlModule::get_stick_x(module_accessor) >= 0.25 && ControlModule::get_stick_x(module_accessor) < 0.4 {
- FIGHTER_POS_X[entry_id] += 0.48;
- }
- if ControlModule::get_stick_y(module_accessor) > 0.24 {
- GROUND_CONTROL[entry_id] += 1.0;
- }
- if ControlModule::get_stick_y(module_accessor) <= -0.8{
- if GROUND_CONTROL[entry_id] > 310.0 {
- FIGHTER_POS_Y[entry_id] -= 1.55 + (0.01*(GROUND_CONTROL[entry_id] - 310.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= 1.55;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) <= -0.6928 && ControlModule::get_stick_y(module_accessor) > -0.8 {
- if GROUND_CONTROL[entry_id] > 289.0 {
- FIGHTER_POS_Y[entry_id] -= 1.34 + (0.01*(GROUND_CONTROL[entry_id] - 289.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= 1.34;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) <= -0.5657 && ControlModule::get_stick_y(module_accessor) > -0.6928 {
- if GROUND_CONTROL[entry_id] > 265.0 {
- FIGHTER_POS_Y[entry_id] -= 1.1 + (0.01*(GROUND_CONTROL[entry_id] - 265.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= 1.1;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) <= -0.4 && ControlModule::get_stick_y(module_accessor) > -0.5657 {
- if GROUND_CONTROL[entry_id] > 233.0 {
- FIGHTER_POS_Y[entry_id] -= 0.78 + (0.01*(GROUND_CONTROL[entry_id] - 233.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= 0.78;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) <= -0.25 && ControlModule::get_stick_y(module_accessor) > -0.4 {
- if GROUND_CONTROL[entry_id] > 203.0 {
- FIGHTER_POS_Y[entry_id] -= 0.48 + (0.01*(GROUND_CONTROL[entry_id] - 203.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= 0.48;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) < 0.25 && ControlModule::get_stick_y(module_accessor) > -0.25 {
- if GROUND_CONTROL[entry_id] > 155.0 {
- FIGHTER_POS_Y[entry_id] -= 0.0 + (0.01*(GROUND_CONTROL[entry_id] - 155.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= 0.0;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) >= 0.8{
- FIGHTER_POS_Y[entry_id] += 1.55 - (0.01*GROUND_CONTROL[entry_id]);
- }
- else if ControlModule::get_stick_y(module_accessor) >= 0.6928 && ControlModule::get_stick_y(module_accessor) < 0.8 {
- if GROUND_CONTROL[entry_id] > 21.0 {
- FIGHTER_POS_Y[entry_id] -= -1.34 + (0.01*(GROUND_CONTROL[entry_id] - 21.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= -1.34;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) >= 0.5657 && ControlModule::get_stick_y(module_accessor) < 0.6928 {
- if GROUND_CONTROL[entry_id] > 45.0 {
- FIGHTER_POS_Y[entry_id] -= -1.1 + (0.01*(GROUND_CONTROL[entry_id] - 45.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= -1.1;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) >= 0.4 && ControlModule::get_stick_y(module_accessor) < 0.5657 {
- if GROUND_CONTROL[entry_id] > 77.0 {
- FIGHTER_POS_Y[entry_id] -= -0.78 + (0.01*(GROUND_CONTROL[entry_id] - 77.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= -0.78;
- }
- }
- else if ControlModule::get_stick_y(module_accessor) >= 0.25 && ControlModule::get_stick_y(module_accessor) < 0.4 {
- if GROUND_CONTROL[entry_id] > 107.0 {
- FIGHTER_POS_Y[entry_id] -= -0.48 + (0.01*(GROUND_CONTROL[entry_id] - 107.0));
- }
- else {
- FIGHTER_POS_Y[entry_id] -= -0.48;
- }
- }
- PostureModule::set_pos_2d(module_accessor, &smash::phx::Vector2f{
- x: FIGHTER_POS_X[entry_id], y: FIGHTER_POS_Y[entry_id]
- });
- KineticModule::unable_energy(module_accessor, *FIGHTER_KINETIC_ENERGY_ID_GRAVITY);
- }
- else{
- STALL_CONTROL[entry_id] = 0.0;
- GROUND_CONTROL[entry_id] = 0.0;
- if status_kind == *FIGHTER_STATUS_KIND_REBIRTH || status_kind == *FIGHTER_STATUS_KIND_WIN || status_kind == *FIGHTER_STATUS_KIND_LOSE || status_kind == *FIGHTER_STATUS_KIND_ENTRY || motion_kind == smash::hash40("win_1") || motion_kind == smash::hash40("win_2") || motion_kind == smash::hash40("win_3") || motion_kind == smash::hash40("win_1_wait") || motion_kind == smash::hash40("win_2_wait") || motion_kind == smash::hash40("win_3_wait") || motion_kind == smash::hash40("lose") || (status_kind == *FIGHTER_STATUS_KIND_DEAD && motion_kind == smash::hash40("fall_damage")) {
- KineticModule::unable_energy(module_accessor, *FIGHTER_KINETIC_ENERGY_ID_GRAVITY);
- }
- else {
- KineticModule::enable_energy(module_accessor, *FIGHTER_KINETIC_ENERGY_ID_GRAVITY);
- }
- }
- }
- }
- }
- #[fighter_frame( agent = FIGHTER_KIND_DEMON )]
- fn kazuya_air_specials(fighter: &mut L2CFighterCommon) {
- unsafe {
- let module_accessor = smash::app::sv_system::battle_object_module_accessor(fighter.lua_state_agent);
- let motion_kind = MotionModule::motion_kind(module_accessor);
- let status_kind = StatusModule::status_kind(module_accessor);
- let entry_id = WorkModule::get_int(module_accessor, *FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID) as usize;
- let kind = smash::app::utility::get_kind(module_accessor);
- if kind == *FIGHTER_KIND_DEMON {
- if StatusModule::situation_kind(module_accessor) == SITUATION_KIND_GROUND
- || StatusModule::situation_kind(module_accessor) == SITUATION_KIND_CLIFF
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_AIR
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_FLY
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_FLY_ROLL
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_FLY_METEOR
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_LR
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_U
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_FLY_REFLECT_D
- || status_kind == *FIGHTER_STATUS_KIND_DAMAGE_FALL {
- UP_B[entry_id] = true;
- SIDE_B[entry_id] = true;
- }
- if status_kind == FIGHTER_STATUS_KIND_SPECIAL_HI {
- UP_B[entry_id] = false;
- }
- if status_kind == FIGHTER_STATUS_KIND_SPECIAL_S {
- SIDE_B[entry_id] = false;
- }
- if ControlModule::get_stick_x(module_accessor) <= -0.7 && ControlModule::check_button_on(module_accessor, *CONTROL_PAD_BUTTON_SPECIAL) && StatusModule::situation_kind(module_accessor) == *SITUATION_KIND_AIR && !is_damage_check(module_accessor)
- || ControlModule::get_stick_x(module_accessor) >= 0.7 && ControlModule::check_button_on(module_accessor, *CONTROL_PAD_BUTTON_SPECIAL) && StatusModule::situation_kind(module_accessor) == *SITUATION_KIND_AIR && !is_damage_check(module_accessor) {
- if SIDE_B[entry_id] == true && status_kind != *FIGHTER_STATUS_KIND_SPECIAL_LW && status_kind != *FIGHTER_STATUS_KIND_SPECIAL_HI && status_kind != *FIGHTER_STATUS_KIND_SPECIAL_N && motion_kind != smash::hash40("special_lw_catch") && motion_kind != smash::hash40("special_lw_fall") && motion_kind != smash::hash40("special_lw_ground") {
- StatusModule::change_status_request_from_script(module_accessor, *FIGHTER_STATUS_KIND_SPECIAL_S, true);
- }
- }
- if ControlModule::get_stick_y(module_accessor) >= 0.7 && ControlModule::check_button_on(module_accessor, *CONTROL_PAD_BUTTON_SPECIAL) && !is_damage_check(module_accessor) && status_kind != *FIGHTER_STATUS_KIND_ESCAPE_AIR {
- if UP_B[entry_id] == true && status_kind != *FIGHTER_STATUS_KIND_SPECIAL_LW && status_kind != *FIGHTER_STATUS_KIND_SPECIAL_S && status_kind != *FIGHTER_STATUS_KIND_SPECIAL_N && motion_kind != smash::hash40("special_lw_catch") && motion_kind != smash::hash40("special_lw_ground") {
- StatusModule::change_status_request_from_script(module_accessor, *FIGHTER_STATUS_KIND_SPECIAL_HI, true);
- }
- }
- if ControlModule::get_stick_y(module_accessor) > -0.69 && ControlModule::get_stick_y(module_accessor) <= 0.69 && ControlModule::check_button_on(module_accessor, *CONTROL_PAD_BUTTON_SPECIAL) && StatusModule::situation_kind(module_accessor) == *SITUATION_KIND_AIR && status_kind == *FIGHTER_STATUS_KIND_FALL
- || ControlModule::get_stick_y(module_accessor) > -0.69 && ControlModule::get_stick_y(module_accessor) <= 0.69 && ControlModule::check_button_on(module_accessor, *CONTROL_PAD_BUTTON_SPECIAL) && StatusModule::situation_kind(module_accessor) == *SITUATION_KIND_AIR && status_kind == *FIGHTER_STATUS_KIND_FALL_AERIAL {
- StatusModule::change_status_request_from_script(module_accessor, *FIGHTER_STATUS_KIND_SPECIAL_N, true);
- }
- }
- }
- }
- pub fn install() {
- smashline::install_agent_frames!(
- igotaglockinmyrari,
- kazuya_air_specials
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment