Skip to content

Commit 0855793

Browse files
committed
Reworked Air Shooter
1 parent da676ee commit 0855793

File tree

6 files changed

+79
-19
lines changed

6 files changed

+79
-19
lines changed

dynamic/src/consts.rs

+7
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,13 @@ pub mod vars {
955955
}
956956
}
957957

958+
pub mod rockman_airshooter {
959+
pub mod status {
960+
// flags
961+
pub const MOVE : i32 = 0x1100;
962+
}
963+
}
964+
958965
pub mod roy {
959966
pub mod instance {
960967
// flags

fighters/rockman/src/acmd/aerials.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ unsafe fn rockman_attack_air_hi_game(fighter: &mut L2CAgentBase) {
195195
let boma = fighter.boma();
196196
frame(lua_state, 1.0);
197197
if is_excute(fighter) {
198-
FT_MOTION_RATE(fighter, 6.0/(9.0 - 1.0));
198+
FT_MOTION_RATE(fighter, 10.0/(9.0 - 1.0));
199199
}
200200
frame(lua_state, 3.0);
201201
if is_excute(fighter) {
@@ -204,9 +204,6 @@ unsafe fn rockman_attack_air_hi_game(fighter: &mut L2CAgentBase) {
204204
frame(lua_state, 9.0);
205205
if is_excute(fighter) {
206206
FT_MOTION_RATE(fighter, 1.0);
207-
ATTACK(fighter, 0, 0, Hash40::new("havel"), 1.0, 368, 100, 80, 0, 2.5, 0.0, -2.0, 0.0, None, None, None, 0.2, 1.0, *ATTACK_SETOFF_KIND_ON, *ATTACK_LR_CHECK_F, false, 0, 0.0, 5, false, false, false, false, true, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_normal"), *ATTACK_SOUND_LEVEL_S, *COLLISION_SOUND_ATTR_PUNCH, *ATTACK_REGION_BODY);
208-
let hit1 = Vector2f { x: 0.0, y: 19.0 };
209-
AttackModule::set_vec_target_pos(boma, 0, Hash40::new("top"), &hit1, 12, false);
210207
}
211208
frame(lua_state, 10.0);
212209
if is_excute(fighter) {

fighters/rockman/src/acmd/other.rs

+7-11
Original file line numberDiff line numberDiff line change
@@ -83,21 +83,17 @@ unsafe fn rockman_airshooter_regular_game(fighter: &mut L2CAgentBase) {
8383
let lua_state = fighter.lua_state_agent;
8484
let boma = fighter.boma();
8585
if is_excute(fighter) {
86-
ATTACK(fighter, 0, 0, Hash40::new("top"), 3.0, 92, 100, 70, 0, 5.0, 0.0, 3.0, 0.0, None, None, None, 0.2, 0.7, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_SPEED, false, 0, 0.0, 3, true, false, false, false, false, *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_PUNCH, *ATTACK_REGION_NONE);
86+
ATTACK(fighter, 0, 0, Hash40::new("top"), 0.75, 366, 100, 50, 0, 5.0, 0.0, 3.0, 0.0, None, None, None, 0.2, 0.7, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_POS, false, 0, 0.0, 6, true, false, false, false, false, *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_PUNCH, *ATTACK_REGION_NONE);
87+
ATK_SET_SHIELD_SETOFF_MUL(fighter, 0, 0.5);
8788
}
88-
frame(lua_state, 8.0);
89+
frame(lua_state, 20.0);
8990
if is_excute(fighter) {
90-
ATTACK(fighter, 0, 0, Hash40::new("top"), 1.0, 92, 100, 70, 0, 7.0, 0.0, 3.0, 0.0, None, None, None, 0.2, 0.7, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_SPEED, false, 0, 0.0, 5, true, false, false, false, false, *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_NONE);
91-
WorkModule::on_flag(boma, *WEAPON_ROCKMAN_AIRSHOOTER_INSTANCE_WORK_ID_FLAG_ATTACK_VECTOR_REVERSE_UD_CHECK);
92-
}
93-
frame(lua_state, 22.0);
94-
if is_excute(fighter) {
95-
ATTACK(fighter, 0, 0, Hash40::new("top"), 1.0, 92, 100, 80, 0, 10.0, 0.0, 0.0, 0.0, None, None, None, 0.2, 0.7, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_SPEED, false, 0, 0.0, 5, true, false, true, false, false, *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_NONE);
96-
WorkModule::on_flag(boma, *WEAPON_ROCKMAN_AIRSHOOTER_INSTANCE_WORK_ID_FLAG_ATTACK_VECTOR_REVERSE_UD_CHECK);
91+
VarModule::on_flag(fighter.battle_object, vars::rockman_airshooter::status::MOVE);
9792
}
98-
frame(lua_state, 45.0);
93+
frame(lua_state, 30.0);
9994
if is_excute(fighter) {
100-
ATTACK(fighter, 0, 0, Hash40::new("top"), 2.0, 92, 250, 0, 5, 9.0, 0.0, 0.0, 0.0, None, None, None, 0.2, 0.7, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_SPEED, false, 0, 0.0, 5, true, false, true, false, false, *COLLISION_SITUATION_MASK_GA, *COLLISION_CATEGORY_MASK_ALL, *COLLISION_PART_MASK_ALL, false, Hash40::new("collision_attr_cutup"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_CUTUP, *ATTACK_REGION_NONE);
95+
ATTACK(fighter, 0, 0, Hash40::new("top"), 4.0, 90, 50, 0, 90, 7.0, 0.0, 3.0, 0.0, None, None, None, 0.2, 0.7, *ATTACK_SETOFF_KIND_OFF, *ATTACK_LR_CHECK_SPEED, false, 0, 0.0, 0, true, false, false, false, false, *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_NONE);
96+
ATK_SET_SHIELD_SETOFF_MUL(fighter, 0, 0.5);
10197
WorkModule::on_flag(boma, *WEAPON_ROCKMAN_AIRSHOOTER_INSTANCE_WORK_ID_FLAG_ATTACK_VECTOR_REVERSE_UD_CHECK);
10298
}
10399
}

fighters/rockman/src/status.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ mod attack_s4;
99

1010
mod attack_air;
1111
mod ladder_attack;
12+
mod airshooter;
1213

1314
mod special_n;
1415
mod rockbuster;
@@ -66,10 +67,11 @@ pub fn install() {
6667

6768
attack_air::install();
6869
ladder_attack::install();
69-
chargeshot::install();
70-
70+
airshooter::install();
71+
7172
special_n::install();
7273
rockbuster::install();
74+
chargeshot::install();
7375

7476
special_s::install();
7577

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
use super::*;
2+
3+
#[status_script(agent = "rockman_airshooter", status = WEAPON_ROCKMAN_AIRSHOOTER_STATUS_KIND_REGULAR, condition = LUA_SCRIPT_STATUS_FUNC_INIT_STATUS)]
4+
unsafe extern "C" fn rockman_airshooter_regular_init(weapon: &mut L2CWeaponCommon) -> L2CValue {
5+
let life = WorkModule::get_param_int(weapon.module_accessor, hash40("param_airshooter"), hash40("life"));
6+
WorkModule::set_int(weapon.module_accessor, life, *WEAPON_INSTANCE_WORK_ID_INT_INIT_LIFE);
7+
WorkModule::set_int(weapon.module_accessor, life, *WEAPON_INSTANCE_WORK_ID_INT_LIFE);
8+
let speed_y = WorkModule::get_param_float(weapon.module_accessor, hash40("param_airshooter"), hash40("speed"));
9+
let accel_y = WorkModule::get_param_float(weapon.module_accessor, hash40("param_airshooter"), hash40("accel"));
10+
let limit_speed_y = WorkModule::get_param_float(weapon.module_accessor, hash40("param_airshooter"), hash40("speed"));
11+
sv_kinetic_energy!(
12+
set_speed,
13+
weapon,
14+
WEAPON_KINETIC_ENERGY_RESERVE_ID_NORMAL,
15+
0.0,
16+
speed_y
17+
);
18+
sv_kinetic_energy!(
19+
set_accel,
20+
weapon,
21+
WEAPON_KINETIC_ENERGY_RESERVE_ID_NORMAL,
22+
0.0,
23+
accel_y
24+
);
25+
sv_kinetic_energy!(
26+
set_limit_speed,
27+
weapon,
28+
WEAPON_KINETIC_ENERGY_RESERVE_ID_NORMAL,
29+
0.0,
30+
limit_speed_y
31+
);
32+
0.into()
33+
}
34+
35+
#[status_script(agent = "rockman_airshooter", status = WEAPON_ROCKMAN_AIRSHOOTER_STATUS_KIND_REGULAR, condition = LUA_SCRIPT_STATUS_FUNC_EXEC_STATUS)]
36+
unsafe extern "C" fn rockman_airshooter_regular_exec(weapon: &mut L2CWeaponCommon) -> L2CValue {
37+
if VarModule::is_flag(weapon.battle_object, vars::rockman_airshooter::status::MOVE) {
38+
let limit_speed_y = WorkModule::get_param_float(weapon.module_accessor, hash40("param_airshooter"), hash40("limit_speed"));
39+
sv_kinetic_energy!(
40+
set_limit_speed,
41+
weapon,
42+
WEAPON_KINETIC_ENERGY_RESERVE_ID_NORMAL,
43+
0.0,
44+
limit_speed_y
45+
);
46+
VarModule::off_flag(weapon.battle_object, vars::rockman_airshooter::status::MOVE);
47+
}
48+
0.into()
49+
}
50+
51+
pub fn install() {
52+
install_status_scripts!(
53+
rockman_airshooter_regular_init,
54+
rockman_airshooter_regular_exec
55+
);
56+
}

romfs/source/fighter/rockman/param/vl.prcxml

+4-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
</list>
2424
<list hash="param_airshooter">
2525
<struct index="0">
26-
<int hash="life">55</int>
27-
<float hash="limit_speed">0.75</float>
26+
<int hash="life">40</int>
27+
<float hash="speed">0.3</float>
28+
<float hash="accel">0.1</float>
29+
<float hash="limit_speed">1.5</float>
2830
</struct>
2931
</list>
3032
<list hash="param_hardknuckle">

0 commit comments

Comments
 (0)