Skip to content
Open
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
28 changes: 28 additions & 0 deletions fighters/kirby/src/acmd/copy/roy.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
use super::*;

unsafe extern "C" fn sound_specialnstart(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 2.0);
if is_excute(agent) {
PLAY_SE(agent, Hash40::new("se_roy_appeal_s02"));
}
frame(lua_state, 7.0);
if is_excute(agent) {
PLAY_STATUS(agent, Hash40::new("se_roy_special_n06"));
}
}

unsafe extern "C" fn sound_specialairnstart(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 2.0);
if is_excute(agent) {
PLAY_SE(agent, Hash40::new("se_roy_appeal_h01"));
}
frame(lua_state, 7.0);
if is_excute(agent) {
PLAY_STATUS(agent, Hash40::new("se_roy_special_n06"));
}
}

unsafe extern "C" fn effect_royspecialnend(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
Expand Down Expand Up @@ -172,7 +198,9 @@ unsafe extern "C" fn effect_royspecialnendmax(agent: &mut L2CAgentBase) {
pub fn install(agent: &mut Agent) {
agent.acmd("effect_royspecialnend", effect_royspecialnend, Priority::Low);
agent.acmd("effect_royspecialairnend", effect_royspecialnend, Priority::Low);
agent.acmd("sound_specialnstart", sound_specialnstart, Priority::Low);
agent.acmd("sound_royspecialnend", sound_royspecialnend, Priority::Low);
agent.acmd("sound_specialairnstart", sound_specialairnstart, Priority::Low);
agent.acmd("sound_royspecialairnend", sound_royspecialnend, Priority::Low);
agent.acmd("expression_royspecialnend", expression_royspecialnend, Priority::Low);
agent.acmd("expression_royspecialairnend", expression_royspecialnend, Priority::Low);
Expand Down
41 changes: 32 additions & 9 deletions fighters/roy/src/acmd/smashes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,27 +127,50 @@ unsafe extern "C" fn game_attackhi4(agent: &mut L2CAgentBase) {
unsafe extern "C" fn game_attacklw4(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 1.0);
FT_MOTION_RATE_RANGE(agent, 1.0, 4.0, 6.0);
frame(lua_state, 4.0);
FT_MOTION_RATE(agent, 1.0);
if is_excute(agent) {
WorkModule::on_flag(boma, *FIGHTER_STATUS_ATTACK_FLAG_START_SMASH_HOLD);
}
frame(lua_state, 6.0);
if is_excute(agent) {
ATTACK(agent, 0, 0, Hash40::new("sword1"), 18.0, 75, 81, 0, 42, 4.3, 0.0, 0.0, 2.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 1, 0, Hash40::new("armr"), 18.0, 75, 81, 0, 42, 3.1, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 2, 0, Hash40::new("colonells"), 18.0, 75, 81, 0, 42, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 3, 0, Hash40::new("sword1"), 11.0, 63, 80, 0, 20, 3.5, 0.0, 0.0, 8.5, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_PUNCH, *ATTACK_REGION_SWORD);
ATTACK(agent, 0, 0, Hash40::new("sword1"), 3.0, 170, 105, 30, 0, 4.3, 0.0, 0.0, 2.0, None, None, None, 1.3, 1.5, *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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 1, 0, Hash40::new("armr"), 3.0, 170, 93, 25, 0, 3.1, 0.0, 0.0, 0.0, None, None, None, 1.3, 1.5, *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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 2, 0, Hash40::new("colonells"), 3.0, 259, 60, 25, 0, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.3, 1.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 3, 0, Hash40::new("colonells"), 3.0, 170, 93, 25, 0, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.3, 1.5, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 4, 0, Hash40::new("sword1"), 2.0, 40, 45, 0, 60, 3.5, 0.0, 0.0, 8.5, None, None, None, 0.9, 1.5, *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_PUNCH, *ATTACK_REGION_SWORD);
AttackModule::set_attack_height_all(boma, app::AttackHeight(*ATTACK_HEIGHT_LOW), false);
}
wait(lua_state, 3.0);
if is_excute(agent) {
AttackModule::clear_all(boma);
}
frame(lua_state, 10.0);
if is_excute(agent) {
ATTACK(agent, 0, 0, Hash40::new("sword1"), 14.0, 75, 80, 0, 42, 3.9, 0.0, 0.0, 2.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 1, 0, Hash40::new("armr"), 14.0, 75, 80, 0, 42, 3.1, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 2, 0, Hash40::new("colonells"), 14.0, 75, 80, 0, 42, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 3, 0, Hash40::new("sword1"), 10.0, 63, 70, 0, 20, 3.5, 0.0, 0.0, 8.5, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 10, 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_PUNCH, *ATTACK_REGION_SWORD);
ATTACK(agent, 0, 0, Hash40::new("legl"), 3.0, 170, 100, 30, 0, 3.0, 3.0, 4.0, -6.0, None, None, None, 1.3, 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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 1, 0, Hash40::new("sword1"), 3.0, 170, 125, 40, 0, 4.3, 0.0, 0.0, 2.0, None, None, None, 1.3, 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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 2, 0, Hash40::new("armr"), 3.0, 170, 102, 35, 0, 3.1, 0.0, 0.0, 0.0, None, None, None, 1.3, 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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 3, 0, Hash40::new("colonells"), 3.0, 259, 60, 25, 0, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.3, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 4, 0, Hash40::new("colonells"), 3.0, 170, 102, 35, 0, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.3, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_POS, false, 0, 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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 5, 0, Hash40::new("sword1"), 2.0, 40, 45, 0, 60, 3.5, 0.0, 0.0, 8.5, None, None, None, 0.9, 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_PUNCH, *ATTACK_REGION_SWORD);
AttackModule::set_attack_height_all(boma, app::AttackHeight(*ATTACK_HEIGHT_LOW), false);
}
frame(lua_state, 18.0);
wait(lua_state, 3.0);
if is_excute(agent) {
AttackModule::clear_all(boma);
}
frame(lua_state, 15.0);
if is_excute(agent) {
ATTACK(agent, 0, 0, Hash40::new("legl"), 9.0, 84, 93, 0, 71, 3.0, 3.0, 4.0, 0.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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 1, 0, Hash40::new("sword1"), 9.0, 84, 93, 0, 71, 3.9, 0.0, 0.0, 2.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 2, 0, Hash40::new("armr"), 9.0, 84, 93, 0, 71, 3.1, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 3, 0, Hash40::new("colonells"), 9.0, 84, 93, 0, 71, 3.0, 0.0, 0.0, 0.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 10, 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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_ROY_HIT, *ATTACK_REGION_SWORD);
ATTACK(agent, 4, 0, Hash40::new("sword1"), 5.0, 55, 62, 0, 23, 3.5, 0.0, 0.0, 8.5, None, None, None, 0.9, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 10, 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_PUNCH, *ATTACK_REGION_SWORD);
AttackModule::set_attack_height_all(boma, app::AttackHeight(*ATTACK_HEIGHT_LOW), false);
}
frame(lua_state, 19.0);
if is_excute(agent) {
AttackModule::clear_all(boma);
}
Expand Down
29 changes: 29 additions & 0 deletions fighters/roy/src/acmd/specials/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,32 @@ mod special_s2;
mod special_s3;
mod special_s4;

unsafe extern "C" fn sound_specialnstart(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 2.0);
if is_excute(agent) {
PLAY_SE(agent, Hash40::new("se_roy_appeal_s02"));
}
frame(lua_state, 7.0);
if is_excute(agent) {
PLAY_STATUS(agent, Hash40::new("se_roy_special_n06"));
}
}

unsafe extern "C" fn sound_specialairnstart(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
frame(lua_state, 2.0);
if is_excute(agent) {
PLAY_SE(agent, Hash40::new("se_roy_appeal_h01"));
}
frame(lua_state, 7.0);
if is_excute(agent) {
PLAY_STATUS(agent, Hash40::new("se_roy_special_n06"));
}
}

unsafe extern "C" fn game_specialnend(agent: &mut L2CAgentBase) {
let lua_state = agent.lua_state_agent;
let boma = agent.boma();
Expand Down Expand Up @@ -537,12 +563,15 @@ unsafe extern "C" fn effect_specialairlwhit(agent: &mut L2CAgentBase) {
}

pub fn install(agent: &mut Agent) {

agent.acmd("game_specialnend", game_specialnend, Priority::Low);
agent.acmd("effect_specialnend", effect_specialnend, Priority::Low);
agent.acmd("sound_specialnstart", sound_specialnstart, Priority::Low);
agent.acmd("sound_specialnend", sound_specialnend, Priority::Low);
agent.acmd("expression_specialnend", expression_specialnend, Priority::Low);
agent.acmd("game_specialairnend", game_specialnend, Priority::Low);
agent.acmd("effect_specialairnend", effect_specialnend, Priority::Low);
agent.acmd("sound_specialairnstart", sound_specialairnstart, Priority::Low);
agent.acmd("sound_specialairnend", sound_specialnend, Priority::Low);
agent.acmd("expression_specialairnend", expression_specialnend, Priority::Low);

Expand Down
2 changes: 1 addition & 1 deletion romfs/source/fighter/roy/motion/body/motion_patch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ attack_air_n:
cancel_frame: 49
attack_lw4:
extra:
cancel_frame: 64
cancel_frame: 46
special_s4_back:
game_script: game_specials4back
flags:
Expand Down
Loading