Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Robin Fixes + Thoron Conceptual #2495

Merged
merged 14 commits into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion fighters/bayonetta/src/acmd/specials.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@ unsafe extern "C" fn game_specialnstarth(agent: &mut L2CAgentBase) {
unsafe extern "C" fn game_specialnendh(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
let cancel_frame_param = agent.get_param_int("param_special_n", "cancel_frame") as f32;
let special_lag = agent.get_float(*FIGHTER_BAYONETTA_INSTANCE_WORK_ID_FLOAT_SPECIAL_LANDING_FRAME);
frame(lua_state, 1.0);
MotionModule::set_rate(boma, (58.0 - 1.0)/25.0);//32 > 26
if !agent.is_status(statuses::bayonetta::SPECIAL_N_CANCEL) || special_lag < cancel_frame_param {
MotionModule::set_rate(boma, (58.0 - 1.0)/25.0);//32 > 26
}//do not change motion rate on special lag cancel anim
}

unsafe extern "C" fn game_specialnendf(agent: &mut L2CAgentBase) {
Expand Down
2 changes: 2 additions & 0 deletions fighters/bayonetta/src/opff.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,9 @@ unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) {
*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_CHARGE,
*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_FIRE,
*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_END,
statuses::bayonetta::SPECIAL_N_CANCEL,
*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_HI_JUMP,
*FIGHTER_STATUS_KIND_SPECIAL_S,
*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_AIR_S_D_HIT,
*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_AIR_S_WALL_END])
&& fighter.is_situation(*SITUATION_KIND_AIR) {
Expand Down
2 changes: 2 additions & 0 deletions fighters/bayonetta/src/status/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ mod specialn;
mod specials;
mod specialhi;
mod jumpaerial;
mod wait;

pub fn install(agent: &mut Agent) {
attack::install(agent);
Expand All @@ -21,4 +22,5 @@ pub fn install(agent: &mut Agent) {
specials::install(agent);
specialhi::install(agent);
jumpaerial::install(agent);
wait::install(agent);
}
144 changes: 83 additions & 61 deletions fighters/bayonetta/src/status/specialn.rs

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions fighters/bayonetta/src/status/wait.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use super::*;

// FIGHTER_STATUS_KIND_WAIT
unsafe extern "C" fn wait_main(fighter: &mut L2CFighterCommon) -> L2CValue {
let status = fighter.global_table[PREV_STATUS_KIND].get_i32();
if status == statuses::bayonetta::SPECIAL_S_KICK {
fighter.global_table[PREV_STATUS_KIND].assign(&L2CValue::I32(*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_S_HOLD_END));
} else if status == statuses::bayonetta::SPECIAL_N_CANCEL {
fighter.global_table[PREV_STATUS_KIND].assign(&L2CValue::I32(*FIGHTER_BAYONETTA_STATUS_KIND_SPECIAL_N_END));
} //fixes glitched idle without having to rewrite EVERYTHING
smashline::original_status(Main, fighter, *FIGHTER_STATUS_KIND_WAIT)(fighter)
}

pub fn install(agent: &mut Agent) {
agent.status(Main, *FIGHTER_STATUS_KIND_WAIT, wait_main);
}
28 changes: 10 additions & 18 deletions fighters/reflet/src/acmd/ground.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,22 @@ use super::*;
unsafe extern "C" fn game_attack11(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
if is_excute(agent) {
FT_MOTION_RATE(agent, 1.5);
}
FT_MOTION_RATE_RANGE(agent, 1.0, 3.0, 3.0);
frame(lua_state, 2.5);
if is_excute(agent) {
ATTACK(agent, 0, 0, Hash40::new("armr"), 3.0, 361, 25, 0, 30, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.1, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
ATTACK(agent, 1, 0, Hash40::new("sword"), 3.0, 361, 25, 0, 30, 3.0, -2.0, 2.0, 0.0, None, None, None, 1.1, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
ATTACK(agent, 2, 0, Hash40::new("sword"), 3.0, 361, 25, 0, 30, 3.5, -3.0, 6.0, 0.0, None, None, None, 1.1, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
}
frame(lua_state, 3.0);
FT_MOTION_RATE_RANGE(agent, 3.0, 4.0, 2.5);
if is_excute(agent) {
FT_MOTION_RATE(agent, 2.5);
ATTACK(agent, 1, 0, Hash40::new("sword"), 3.0, 361, 25, 0, 30, 3.0, 0.0, 2.0, 0.0, None, None, None, 1.1, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
ATTACK(agent, 2, 0, Hash40::new("sword"), 3.0, 361, 25, 0, 30, 3.5, 0.0, 6.0, 0.0, None, None, None, 1.1, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
}
frame(lua_state, 4.0);
FT_MOTION_RATE_RANGE(agent, 4.0, 22.0, 14.5);
if is_excute(agent) {
FT_MOTION_RATE(agent, 12.0/(22.0-7.0));
AttackModule::clear_all(boma);
}
frame(lua_state, 5.0);
Expand Down Expand Up @@ -55,9 +53,7 @@ unsafe extern "C" fn game_attack12(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 3.0);
if is_excute(agent) {
FT_MOTION_RATE(agent, 2.0);
}
FT_MOTION_RATE_RANGE(agent, 3.0, 5.0, 4.0);
frame(lua_state, 4.5);
if is_excute(agent) {
ATTACK(agent, 1, 0, Hash40::new("top"), 3.0, 361, 25, 0, 25, 3.0, 0.0, 8.5, 8.0, None, None, None, 1.1, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
Expand All @@ -66,24 +62,20 @@ unsafe extern "C" fn game_attack12(agent: &mut L2CAgentBase) {
ATTACK(agent, 3, 0, Hash40::new("top"), 3.0, 361, 20, 0, 20, 3.5, 0.0, 8.5, 16.5, None, None, None, 1.1, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
}
frame(lua_state, 5.0);
FT_MOTION_RATE(agent, 1.0);
if is_excute(agent) {
FT_MOTION_RATE(agent, 1.0);
AttackModule::clear_all(boma);
}
if WorkModule::get_int(boma, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT) > 1 {
if is_excute(agent) {
WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_ENABLE_100);
if agent.get_int(*FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT) > 0 {
agent.on_flag(*FIGHTER_STATUS_ATTACK_FLAG_ENABLE_100);
}
}
frame(lua_state, 7.0);
if WorkModule::get_float(boma, *FIGHTER_REFLET_INSTANCE_WORK_ID_FLOAT_SPECIAL_S_CURRENT_POINT) > 0.1 {
if is_excute(agent) {
WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_ENABLE_COMBO);
}
if agent.get_float(*FIGHTER_REFLET_INSTANCE_WORK_ID_FLOAT_SPECIAL_S_CURRENT_POINT) > 0.0 {
agent.on_flag(*FIGHTER_STATUS_ATTACK_FLAG_ENABLE_COMBO);
}
frame(lua_state, 9.0);
if is_excute(agent) {
WorkModule::off_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_ENABLE_100);
agent.off_flag(*FIGHTER_STATUS_ATTACK_FLAG_ENABLE_100);
}
}

Expand Down
60 changes: 17 additions & 43 deletions fighters/reflet/src/acmd/specials.rs
Original file line number Diff line number Diff line change
@@ -1,40 +1,34 @@
use super::*;

unsafe extern "C" fn game_specialntronstart(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 1.0);
FT_MOTION_RATE(agent, 15.0/(19.0-1.0));
frame(lua_state, 19.0);
FT_MOTION_RATE(agent, 1.0);
//let lua_state = agent.lua_state_agent;
//let boma = agent.boma();
//17 -> 20
}

unsafe extern "C" fn game_specialairntronstart(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 1.0);
FT_MOTION_RATE(agent, 15.0/(19.0-1.0));
frame(lua_state, 19.0);
FT_MOTION_RATE(agent, 1.0);
//let lua_state = agent.lua_state_agent;
//let boma = agent.boma();
//17 -> 20
}

unsafe extern "C" fn game_specialntronend(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
FT_MOTION_RATE(agent, 0.7); //FAF is frame 61
//let lua_state = agent.lua_state_agent;
//let boma = agent.boma();
//FAF is frame 80/84
}

unsafe extern "C" fn game_specialairntronend(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
FT_MOTION_RATE(agent, 0.35); //FAF is frame 63
FT_MOTION_RATE_RANGE(agent, 1.0, 65.0, 47.0); //FAF is frame 80/84
}

unsafe extern "C" fn game_specialhi(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 1.0);
FT_MOTION_RATE(agent, 8.0 / 7.0);
FT_MOTION_RATE_RANGE(agent, 1.0, 8.0, 8.0);
frame(lua_state, 8.0);
FT_MOTION_RATE(agent, 1.0);
if is_excute(agent) {
Expand All @@ -46,20 +40,10 @@ unsafe extern "C" fn game_specialhi(agent: &mut L2CAgentBase) {
VarModule::on_flag(agent.battle_object, vars::common::instance::UP_SPECIAL_CANCEL);
}
frame(lua_state, 12.0);
if is_excute(agent) {
if (ControlModule::check_button_on_trriger(boma, *CONTROL_PAD_BUTTON_SPECIAL) || ControlModule::check_button_on_trriger(boma, *CONTROL_PAD_BUTTON_SPECIAL_RAW)) {
WorkModule::on_flag(boma, *FIGHTER_REFLET_STATUS_SPECIAL_HI_FLAG_TRY_2ND);
}
else{
MotionModule::set_rate(boma, 2.0);
}
}
wait(lua_state, 1.0);
MotionModule::set_rate(boma, 2.0);
for _ in 0..30 {
if is_excute(agent) {
if (ControlModule::check_button_on_trriger(boma, *CONTROL_PAD_BUTTON_SPECIAL) || ControlModule::check_button_on_trriger(boma, *CONTROL_PAD_BUTTON_SPECIAL_RAW)) {
WorkModule::on_flag(boma, *FIGHTER_REFLET_STATUS_SPECIAL_HI_FLAG_TRY_2ND);
}
if agent.is_button_trigger(Buttons::Special) {
agent.on_flag(*FIGHTER_REFLET_STATUS_SPECIAL_HI_FLAG_TRY_2ND);
}
wait(lua_state, 1.0);
}
Expand All @@ -78,20 +62,10 @@ unsafe extern "C" fn game_specialairhi(agent: &mut L2CAgentBase) {
VarModule::on_flag(agent.battle_object, vars::common::instance::UP_SPECIAL_CANCEL);
}
frame(lua_state, 12.0);
if is_excute(agent) {
if (ControlModule::check_button_on_trriger(boma, *CONTROL_PAD_BUTTON_SPECIAL) || ControlModule::check_button_on(boma, *CONTROL_PAD_BUTTON_SPECIAL_RAW)) {
WorkModule::on_flag(boma, *FIGHTER_REFLET_STATUS_SPECIAL_HI_FLAG_TRY_2ND);
}
else{
MotionModule::set_rate(boma, 2.0);
}
}
wait(lua_state, 1.0);
MotionModule::set_rate(boma, 2.0);
for _ in 0..30 {
if is_excute(agent) {
if (ControlModule::check_button_on_trriger(boma, *CONTROL_PAD_BUTTON_SPECIAL) || ControlModule::check_button_on(boma, *CONTROL_PAD_BUTTON_SPECIAL_RAW)) {
WorkModule::on_flag(boma, *FIGHTER_REFLET_STATUS_SPECIAL_HI_FLAG_TRY_2ND);
}
if agent.is_button_on(Buttons::Special) {
agent.on_flag(*FIGHTER_REFLET_STATUS_SPECIAL_HI_FLAG_TRY_2ND);
}
wait(lua_state, 1.0);
}
Expand Down
4 changes: 2 additions & 2 deletions fighters/reflet/src/acmd/tilts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ unsafe extern "C" fn game_attacks3(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 7.0);
FT_MOTION_RATE(agent, 2.0);
FT_MOTION_RATE_RANGE(agent, 7.0, 10.0, 6.0);
frame(lua_state, 8.0);
if is_excute(agent) {
ATTACK(agent, 0, 0, Hash40::new("top"), 11.0, 35, 59, 0, 67, 3.5, 0.0, 19.0, 4.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
Expand All @@ -30,7 +30,7 @@ unsafe extern "C" fn game_attacks3(agent: &mut L2CAgentBase) {
ATTACK(agent, 2, 0, Hash40::new("top"), 11.0, 35, 59, 0, 67, 3.5, 0.0, 9.0, 7.5, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_SWORD);
}
frame(lua_state, 10.0);
FT_MOTION_RATE(agent, 17.0/(33.0-13.0));
FT_MOTION_RATE_RANGE(agent, 10.0, 33.0, 20.0);
if is_excute(agent) {
AttackModule::clear_all(boma);
}
Expand Down
18 changes: 10 additions & 8 deletions fighters/reflet/src/opff.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@ unsafe fn nspecial_cancels(boma: &mut BattleObjectModuleAccessor, status_kind: i
}
}

unsafe fn elwind1_burn(fighter: &mut L2CFighterCommon) {
if fighter.is_status(*FIGHTER_STATUS_KIND_SPECIAL_HI) {
if fighter.global_table[CURRENT_FRAME].get_i32() == 1 {
// burn an extra bar of Elwind on upB1 (totals 2 bars)
WorkModule::dec_int(fighter.module_accessor, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT);
unsafe fn elwind_cost(fighter: &mut L2CFighterCommon) {
//cost of each elwind 1 -> 2
//if fighter.is_status_one_of(&[*FIGHTER_STATUS_KIND_SPECIAL_HI, *FIGHTER_REFLET_STATUS_KIND_SPECIAL_HI_2])
if fighter.is_status(*FIGHTER_STATUS_KIND_SPECIAL_HI)
&& StatusModule::is_changing(fighter.module_accessor) {
fighter.dec_int(*FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT);
if fighter.get_int(*FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT) <= 0 {
FighterSpecializer_Reflet::set_flag_to_table(fighter.module_accessor as *mut app::FighterModuleAccessor, *FIGHTER_REFLET_MAGIC_KIND_EL_WIND, true, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_THROWAWAY_TABLE);
}
}
}
Expand All @@ -41,8 +44,7 @@ unsafe fn levin_leniency(fighter: &mut L2CFighterCommon, boma: &mut BattleObject
])
&& VarModule::get_int(fighter.battle_object, vars::reflet::instance::LEVIN_AERIAL_LENIENCY) > 0 {
VarModule::dec_int(fighter.battle_object, vars::reflet::instance::LEVIN_AERIAL_LENIENCY);
if VarModule::get_int(fighter.battle_object, vars::reflet::instance::LEVIN_AERIAL_LENIENCY) > 0
&& !fighter.is_flag(*FIGHTER_REFLET_INSTANCE_WORK_ID_FLAG_THUNDER_SWORD_ON)
if !fighter.is_flag(*FIGHTER_REFLET_INSTANCE_WORK_ID_FLAG_THUNDER_SWORD_ON)
&& boma.is_button_on(Buttons::Smash | Buttons::SpecialRaw | Buttons::Guard)
&& !StatusModule::is_changing(boma) {
let levin = *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_THUNDER_SWORD_CURRENT_POINT;
Expand Down Expand Up @@ -124,7 +126,7 @@ unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) {

pub unsafe fn moveset(fighter: &mut L2CFighterCommon, boma: &mut BattleObjectModuleAccessor, id: usize, cat: [i32 ; 4], status_kind: i32, situation_kind: i32, motion_kind: u64, stick_x: f32, stick_y: f32, facing: f32, frame: f32) {
nspecial_cancels(boma, status_kind, situation_kind);
elwind1_burn(fighter);
elwind_cost(fighter);
levin_leniency(fighter, boma);
sword_length(boma);
up_special_freefall(fighter);
Expand Down
14 changes: 5 additions & 9 deletions fighters/reflet/src/status/float.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ unsafe extern "C" fn float_pre(fighter: &mut L2CFighterCommon) -> L2CValue {
}

unsafe extern "C" fn float_main(fighter: &mut L2CFighterCommon) -> L2CValue {
WorkModule::dec_int(fighter.module_accessor, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT);

let eff_handle = EffectModule::req_follow(fighter.module_accessor, Hash40::new("reflet_catch"), Hash40::new("top"), &Vector3f{x: 0.0, y: -6.0, z: -5.3}, &Vector3f::zero(), 0.7, true, 0, 0, 0, 0, 0, false, false);
EffectModule::set_rgb(fighter.module_accessor, eff_handle as u32, 0.0, 1.0, 0.0); // elwind green
let eff_handle = EffectModule::req_follow(fighter.module_accessor, Hash40::new("sys_aura_light"), Hash40::new("bookc"), &Vector3f::zero(), &Vector3f::zero(), 1.5, true, 0, 0, 0, 0, 0, false, false);
Expand Down Expand Up @@ -146,20 +144,15 @@ unsafe extern "C" fn reflet_float_main_loop(fighter: &mut L2CFighterCommon) -> L
WorkModule::set_int(fighter.module_accessor, *FIGHTER_REFLET_MAGIC_KIND_EL_WIND, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_LAST_USED_MAGIC_KIND);
}

VarModule::dec_int(fighter.battle_object, vars::common::status::FLOAT_FRAME);

if VarModule::get_int(fighter.battle_object, vars::common::status::FLOAT_FRAME) % 10 == 0 {
WorkModule::dec_int(fighter.module_accessor, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT);
}

VarModule::dec_int(fighter.battle_object, vars::common::status::FLOAT_FRAME);

if VarModule::get_int(fighter.battle_object, vars::common::status::FLOAT_FRAME) == 0 {
VarModule::set_int(fighter.battle_object, vars::common::status::FLOAT_FRAME, 30);
}

if WorkModule::get_int(fighter.module_accessor, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT) <= 0 {
FighterSpecializer_Reflet::set_flag_to_table(fighter.module_accessor as *mut app::FighterModuleAccessor, *FIGHTER_REFLET_MAGIC_KIND_EL_WIND, true, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_THROWAWAY_TABLE);
VarModule::set_int(fighter.battle_object, vars::common::status::FLOAT_ENABLE_UNIQ, 0);
}
}
if WorkModule::is_enable_transition_term_group(fighter.module_accessor, *FIGHTER_STATUS_TRANSITION_GROUP_CHK_AIR_LANDING) {
fighter.sub_transition_group_check_air_landing();
Expand Down Expand Up @@ -212,6 +205,9 @@ unsafe extern "C" fn reflet_float_main_loop(fighter: &mut L2CFighterCommon) -> L
unsafe extern "C" fn float_end(fighter: &mut L2CFighterCommon) -> L2CValue {
EffectModule::kill_kind(fighter.module_accessor, Hash40::new("reflet_catch"), false, true);
EffectModule::kill_kind(fighter.module_accessor, Hash40::new("sys_aura_light"), false, true);
if WorkModule::get_int(fighter.module_accessor, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_SPECIAL_HI_CURRENT_POINT) <= 0 {
FighterSpecializer_Reflet::set_flag_to_table(fighter.module_accessor as *mut app::FighterModuleAccessor, *FIGHTER_REFLET_MAGIC_KIND_EL_WIND, true, *FIGHTER_REFLET_INSTANCE_WORK_ID_INT_THROWAWAY_TABLE);
}
float_end_common(fighter)
}

Expand Down
Loading