Skip to content

Commit b335240

Browse files
committed
Merge branch 'dev' into feature/smashline-2
2 parents 9c011ab + 9835b20 commit b335240

File tree

6 files changed

+82
-24
lines changed

6 files changed

+82
-24
lines changed

fighters/common/src/opff/floats.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,11 @@ pub unsafe fn extra_floats(fighter: &mut L2CFighterCommon, boma: &mut BattleObje
9090
WorkModule::on_flag(boma, *FIGHTER_INSTANCE_WORK_ID_FLAG_SUPERLEAF);
9191
}
9292
if WorkModule::is_flag(boma, *FIGHTER_INSTANCE_WORK_ID_FLAG_SUPERLEAF)
93-
&& !WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY)
94-
&& (boma.left_stick_y() >= -0.66 && InputModule::get_trigger_count(fighter.battle_object, Buttons::Jump) <= 4)
95-
{ //disables held floats unless jump is held 5f
96-
WorkModule::off_flag(boma, *FIGHTER_INSTANCE_WORK_ID_FLAG_SUPERLEAF);
93+
&& !WorkModule::is_flag(boma, *FIGHTER_STATUS_WORK_ID_FLAG_RESERVE_FALL_SLOWLY) {
94+
if (boma.left_stick_y() >= -0.66 && InputModule::get_trigger_count(fighter.battle_object, Buttons::Jump) <= 4) //disable helf floats for 4f
95+
|| fighter.is_button_off(Buttons::Jump) { //disable 1f float
96+
WorkModule::off_flag(boma, *FIGHTER_INSTANCE_WORK_ID_FLAG_SUPERLEAF);
97+
}
9798
}
9899
// Immediately transition to fall/double jump fall when activating float
99100
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 {

fighters/fox/src/acmd/specials.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,10 @@ unsafe extern "C" fn game_speciallwstart(fighter: &mut L2CAgentBase) {
109109
frame(lua_state, 1.0);
110110
FT_MOTION_RATE_RANGE(fighter, 1.0, 4.0, 4.0);
111111
if is_excute(fighter) {
112-
ATTACK(fighter, 0, 0, Hash40::new("top"), 3.0, 360, 100, 80, 0, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_elec"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_FIRE, *ATTACK_REGION_ENERGY);
113-
ATTACK(fighter, 1, 0, Hash40::new("top"), 3.0, 24, 24, 0, 66, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_elec"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_FIRE, *ATTACK_REGION_ENERGY);
114-
AttackModule::set_add_reaction_frame(boma, 0, 2.0, false);
112+
ATTACK(fighter, 0, 0, Hash40::new("top"), 3.0, 360, 100, 80, 0, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, 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_FIRE, *ATTACK_REGION_ENERGY);
113+
ATTACK(fighter, 1, 0, Hash40::new("top"), 3.0, 24, 24, 0, 66, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, 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_FIRE, *ATTACK_REGION_ENERGY);
114+
AttackModule::set_add_reaction_frame_revised(boma, 0, -3.0, false);
115+
AttackModule::set_add_reaction_frame_revised(boma, 1, 2.0, false);
115116
ReflectorModule::set_status(boma, *FIGHTER_FOX_REFLECTOR_KIND_REFLECTOR, app::ShieldStatus(*SHIELD_STATUS_NORMAL), *FIGHTER_REFLECTOR_GROUP_EXTEND);
116117
// Reflection begins on same frame shine hitbox is active
117118
ATK_SET_SHIELD_SETOFF_MUL_arg3(fighter, 0, 1, 0.54);
@@ -129,8 +130,8 @@ unsafe extern "C" fn game_specialairlwstart(fighter: &mut L2CAgentBase) {
129130
frame(lua_state, 1.0);
130131
FT_MOTION_RATE_RANGE(fighter, 1.0, 4.0, 4.0);
131132
if is_excute(fighter) {
132-
ATTACK(fighter, 0, 0, Hash40::new("top"), 3.0, 10, 32, 0, 62, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_G, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_elec"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_FIRE, *ATTACK_REGION_ENERGY);
133-
ATTACK(fighter, 1, 0, Hash40::new("top"), 3.0, 24, 45, 0, 66, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, false, false, false, false, true, *COLLISION_SITUATION_MASK_A, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_elec"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_FIRE, *ATTACK_REGION_ENERGY);
133+
ATTACK(fighter, 0, 0, Hash40::new("top"), 3.0, 10, 32, 0, 62, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, 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_FIRE, *ATTACK_REGION_ENERGY);
134+
ATTACK(fighter, 1, 0, Hash40::new("top"), 3.0, 24, 45, 0, 66, 8.0, 0.0, 6.5, 0.0, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, -1, 0.0, 0, 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_FIRE, *ATTACK_REGION_ENERGY);
134135
AttackModule::set_add_reaction_frame(boma, 0, 2.0, false);
135136
ReflectorModule::set_status(boma, *FIGHTER_FOX_REFLECTOR_KIND_REFLECTOR, app::ShieldStatus(*SHIELD_STATUS_NORMAL), *FIGHTER_REFLECTOR_GROUP_EXTEND);
136137
// Reflection begins on same frame shine hitbox is active

fighters/pitb/src/acmd/other.rs

+52-1
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,55 @@ unsafe fn escape_air_slide_game(fighter: &mut L2CAgentBase) {
229229
}
230230
}
231231

232+
#[acmd_script( agent = "pitb", script = "effect_appealsl" , category = ACMD_EFFECT , low_priority)]
233+
unsafe fn appeal_sl_effect(fighter: &mut L2CAgentBase) {
234+
let lua_state = fighter.lua_state_agent;
235+
let boma = fighter.boma();
236+
frame(lua_state, 20.0);
237+
if is_excute(fighter) {
238+
EFFECT_FOLLOW_ALPHA(fighter, Hash40::new("pitb_atk_air_n"), Hash40::new("swordr2"), 0, -1, 0, -90, -90, 0, 1, true, 0.3);
239+
EFFECT_FOLLOW(fighter, Hash40::new("pitb_sword"), Hash40::new("swordr1"), 0, 0, 0, 0, -90, 0, 1, true);
240+
EFFECT_FOLLOW(fighter, Hash40::new("pitb_sword"), Hash40::new("swordl"), 0, -0.06, 0, 180, 90, 0, 1, true);
241+
}
242+
frame(lua_state, 30.0);
243+
if is_excute(fighter) {
244+
EFFECT_OFF_KIND(fighter, Hash40::new("pitb_atk_air_n"), false, false);
245+
}
246+
frame(lua_state, 32.0);
247+
if is_excute(fighter) {
248+
EFFECT_OFF_KIND(fighter, Hash40::new("pitb_sword"), false, false);
249+
}
250+
frame(lua_state, 58.0);
251+
if is_excute(fighter) {
252+
EFFECT(fighter, Hash40::new("sys_smash_flash"), Hash40::new("top"), -5, 5, 13, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, false);
253+
}
254+
}
255+
256+
#[acmd_script( agent = "pitb", script = "effect_appealsr" , category = ACMD_EFFECT , low_priority)]
257+
unsafe fn appeal_sr_effect(fighter: &mut L2CAgentBase) {
258+
let lua_state = fighter.lua_state_agent;
259+
let boma = fighter.boma();
260+
frame(lua_state, 20.0);
261+
if is_excute(fighter) {
262+
EFFECT_FOLLOW_ALPHA(fighter, Hash40::new("pitb_atk_air_n"), Hash40::new("swordr2"), 0, -1, 0, -90, -90, 0, 1, true, 0.3);
263+
EFFECT_FOLLOW(fighter, Hash40::new("pitb_sword"), Hash40::new("swordr1"), 0, 0, 0, 0, -90, 0, 1, true);
264+
EFFECT_FOLLOW(fighter, Hash40::new("pitb_sword"), Hash40::new("swordl"), 0, -0.06, 0, 180, 90, 0, 1, true);
265+
}
266+
frame(lua_state, 30.0);
267+
if is_excute(fighter) {
268+
EFFECT_OFF_KIND(fighter, Hash40::new("pitb_atk_air_n"), false, false);
269+
}
270+
frame(lua_state, 32.0);
271+
if is_excute(fighter) {
272+
EFFECT_OFF_KIND(fighter, Hash40::new("pitb_sword"), false, false);
273+
}
274+
frame(lua_state, 58.0);
275+
if is_excute(fighter) {
276+
EFFECT(fighter, Hash40::new("sys_smash_flash"), Hash40::new("top"), 5, 5, 13, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, false);
277+
}
278+
}
279+
280+
232281
pub fn install() {
233282
install_acmd_scripts!(
234283
escape_air_game,
@@ -241,6 +290,8 @@ pub fn install() {
241290
damageflylw_sound,
242291
damageflyn_sound,
243292
damageflyroll_sound,
244-
damageflytop_sound
293+
damageflytop_sound,
294+
appeal_sl_effect,
295+
appeal_sr_effect
245296
);
246297
}

fighters/trail/src/acmd/other.rs

+19-1
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,6 @@ unsafe extern "C" fn escape_air_game(fighter: &mut L2CAgentBase) {
190190
unsafe extern "C" fn escape_air_slide_game(fighter: &mut L2CAgentBase) {
191191
let lua_state = fighter.lua_state_agent;
192192
let boma = fighter.boma();
193-
194193
frame(lua_state, 29.0);
195194
if is_excute(fighter) {
196195
WorkModule::on_flag(boma, *FIGHTER_STATUS_ESCAPE_AIR_FLAG_SLIDE_ENABLE_CONTROL);
@@ -202,6 +201,24 @@ unsafe extern "C" fn escape_air_slide_game(fighter: &mut L2CAgentBase) {
202201
}
203202

204203

204+
unsafe extern "C" fn run_sound(fighter: &mut L2CAgentBase) {
205+
let lua_state = fighter.lua_state_agent;
206+
let boma = fighter.boma();
207+
loop {
208+
frame(lua_state, 1.0);
209+
if is_excute(fighter) {
210+
PLAY_SE(fighter, Hash40::new("se_trail_step_right_l"));
211+
}
212+
frame(lua_state, 16.0);
213+
if is_excute(fighter) {
214+
PLAY_SE(fighter, Hash40::new("se_trail_step_left_l"));
215+
}
216+
fighter.clear_lua_stack();
217+
sv_animcmd::wait_loop_sync_mot(lua_state);
218+
fighter.pop_lua_stack(1);
219+
}
220+
}
221+
205222
pub fn install() {
206223
smashline::Agent::new("trail")
207224
.acmd("sound_damageflyhi", damageflyhi_sound)
@@ -214,5 +231,6 @@ pub fn install() {
214231
.acmd("sound_dash", dash_sound)
215232
.acmd("game_escapeair", escape_air_game)
216233
.acmd("game_escapeairslide", escape_air_slide_game)
234+
.acmd("sound_run", run_sound)
217235
.install();
218236
}

fighters/trail/src/acmd/smashes.rs

-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ unsafe extern "C" fn effect_attacklw4(fighter: &mut L2CAgentBase) {
164164
}
165165
}
166166

167-
168167
pub fn install() {
169168
smashline::Agent::new("trail")
170169
.acmd("game_attacks4", game_attacks4)

fighters/trail/src/opff.rs

-12
Original file line numberDiff line numberDiff line change
@@ -317,17 +317,6 @@ unsafe fn training_cycle(fighter: &mut L2CFighterCommon, boma: &mut BattleObject
317317
}
318318
}
319319

320-
// plays footstep sounds during sora's new run animation (acmd does not seem to work for this, as it will not loop)
321-
unsafe fn run_sfx(fighter: &mut L2CFighterCommon, frame: f32) {
322-
if fighter.is_motion(Hash40::new("run")) {
323-
if frame as i32 == 30 {
324-
PLAY_SE(fighter, Hash40::new("se_trail_step_left_l"));
325-
} else if frame as i32 == 16 {
326-
PLAY_SE(fighter, Hash40::new("se_trail_step_right_l"));
327-
}
328-
}
329-
}
330-
331320
unsafe fn fastfall_specials(fighter: &mut L2CFighterCommon) {
332321
if !fighter.is_in_hitlag()
333322
&& !StatusModule::is_changing(fighter.module_accessor)
@@ -372,7 +361,6 @@ pub unsafe fn moveset(fighter: &mut smash::lua2cpp::L2CFighterCommon, boma: &mut
372361
side_special_walljump(boma, cat[0]);
373362
//aerial_sweep_hit_actionability(boma, frame);
374363
training_cycle(fighter, boma, frame);
375-
run_sfx(fighter, frame);
376364
fastfall_specials(fighter);
377365
}
378366

0 commit comments

Comments
 (0)