Skip to content

Commit 6e2e471

Browse files
Cleaned up Smash Attack Code + Sound Fix
1 parent ce6eb95 commit 6e2e471

File tree

1 file changed

+60
-216
lines changed

1 file changed

+60
-216
lines changed

fighters/duckhunt/src/acmd/smashes.rs

+60-216
Original file line numberDiff line numberDiff line change
@@ -13,52 +13,39 @@ unsafe fn duckhunt_attack_hi4_game(fighter: &mut L2CAgentBase) {
1313
WorkModule::set_int( boma, 5, *FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_DELAY_FRAME);
1414
WorkModule::set_int( boma, 6, *FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_RETICLE_DISPLAY_FRAME);
1515
FT_MOTION_RATE_RANGE(fighter, 17.0, 57.0, 28.0);
16-
ATTACK( fighter, /*ID*/ 0, /*Part*/ 0, /*Bone*/ Hash40::new("top"), /*Damage*/ 5.0, /*Angle*/ 127, /*KBG*/ 0, /*FKB*/ 0, /*BKB*/ 110, /*Size*/ 5.3, /*X*/ 0.0, /*Y*/ 6.0, /*Z*/ 9.0, /*X2*/ None, /*Y2*/ None, /*Z2*/ None, /*Hitlag*/ 1.0, /*SDI*/ 0.5, /*Clang_Rebound*/ *ATTACK_SETOFF_KIND_THRU, /*FacingRestrict*/ *ATTACK_LR_CHECK_POS, /*SetWeight*/ false, /*ShieldDamage*/ 0, /*Trip*/ 0.0, /*Rehit*/ 0, /*Reflectable*/ false, /*Absorbable*/ false, /*Flinchless*/ false, /*DisableHitlag*/ false, /*Direct_Hitbox*/ true, /*Ground_or_Air*/ *COLLISION_SITUATION_MASK_GA, /*Hitbits*/ *COLLISION_CATEGORY_MASK_ALL, /*CollisionPart*/ *COLLISION_PART_MASK_ALL, /*FriendlyFire*/ false, /*Effect*/ Hash40::new("collision_attr_fire"), /*SFXLevel*/ *ATTACK_SOUND_LEVEL_M, /*SFXType*/ *COLLISION_SOUND_ATTR_PUNCH, /*Type*/ *ATTACK_REGION_NONE);
16+
ATTACK(fighter, /*ID*/ 0, /*Part*/ 0, /*Bone*/ Hash40::new("top"), /*Damage*/ 5.0, /*Angle*/ 127, /*KBG*/ 0, /*FKB*/ 0, /*BKB*/ 110, /*Size*/ 5.3, /*X*/ 0.0, /*Y*/ 6.0, /*Z*/ 9.0, /*X2*/ None, /*Y2*/ None, /*Z2*/ None, /*Hitlag*/ 1.0, /*SDI*/ 0.5, /*Clang_Rebound*/ *ATTACK_SETOFF_KIND_THRU, /*FacingRestrict*/ *ATTACK_LR_CHECK_POS, /*SetWeight*/ false, /*ShieldDamage*/ 0, /*Trip*/ 0.0, /*Rehit*/ 0, /*Reflectable*/ false, /*Absorbable*/ false, /*Flinchless*/ false, /*DisableHitlag*/ false, /*Direct_Hitbox*/ true, /*Ground_or_Air*/ *COLLISION_SITUATION_MASK_GA, /*Hitbits*/ *COLLISION_CATEGORY_MASK_ALL, /*CollisionPart*/ *COLLISION_PART_MASK_ALL, /*FriendlyFire*/ false, /*Effect*/ Hash40::new("collision_attr_fire"), /*SFXLevel*/ *ATTACK_SOUND_LEVEL_M, /*SFXType*/ *COLLISION_SOUND_ATTR_PUNCH, /*Type*/ *ATTACK_REGION_NONE);
1717
}
1818
frame(lua_state, 15.0);
1919
if is_excute(fighter) {
20-
ATTACK(
21-
fighter,
22-
/*ID*/ 1,
23-
/*Part*/ 0,
24-
/*Bone*/ Hash40::new("top"),
25-
/*Damage*/ 11.5,
26-
/*Angle*/ 85,
27-
/*KBG*/ 120,
28-
/*FKB*/ 0,
29-
/*BKB*/ 50,
30-
/*Size*/ 9.3,
31-
/*X*/ 0.0,
32-
/*Y*/ 16.0,
33-
/*Z*/ 0.0,
34-
/*X2*/ None,
35-
/*Y2*/ None,
36-
/*Z2*/ None,
37-
/*Hitlag*/ 1.0,
38-
/*SDI*/ 1.0,
39-
/*Clang_Rebound*/ *ATTACK_SETOFF_KIND_THRU,
40-
/*FacingRestrict*/ *ATTACK_LR_CHECK_POS,
41-
/*SetWeight*/ false,
42-
/*ShieldDamage*/ 0,
43-
/*Trip*/ 0.0,
44-
/*Rehit*/ 0,
45-
/*Reflectable*/ false,
46-
/*Absorbable*/ false,
47-
/*Flinchless*/ false,
48-
/*DisableHitlag*/ false,
49-
/*Direct_Hitbox*/ true,
50-
/*Ground_or_Air*/ *COLLISION_SITUATION_MASK_GA,
51-
/*Hitbits*/ *COLLISION_CATEGORY_MASK_ALL,
52-
/*CollisionPart*/ *COLLISION_PART_MASK_ALL,
53-
/*FriendlyFire*/ false,
54-
/*Effect*/ Hash40::new("collision_attr_fire"),
55-
/*SFXLevel*/ *ATTACK_SOUND_LEVEL_L,
56-
/*SFXType*/ *COLLISION_SOUND_ATTR_KICK,
57-
/*Type*/ *ATTACK_REGION_NONE,
20+
ATTACK(fighter, /*ID*/ 1, /*Part*/ 0, /*Bone*/ Hash40::new("top"), /*Damage*/ 11.5, /*Angle*/ 85, /*KBG*/ 120, /*FKB*/ 0, /*BKB*/ 50, /*Size*/ 9.3, /*X*/ 0.0, /*Y*/ 16.0, /*Z*/ 0.0, /*X2*/ None, /*Y2*/ None, /*Z2*/ None, /*Hitlag*/ 1.0, /*SDI*/ 1.0, /*Clang_Rebound*/ *ATTACK_SETOFF_KIND_THRU, /*FacingRestrict*/ *ATTACK_LR_CHECK_POS, /*SetWeight*/ false, /*ShieldDamage*/ 0, /*Trip*/ 0.0, /*Rehit*/ 0, /*Reflectable*/ false, /*Absorbable*/ false, /*Flinchless*/ false, /*DisableHitlag*/ false, /*Direct_Hitbox*/ true, /*Ground_or_Air*/ *COLLISION_SITUATION_MASK_GA, /*Hitbits*/ *COLLISION_CATEGORY_MASK_ALL, /*CollisionPart*/ *COLLISION_PART_MASK_ALL, /*FriendlyFire*/ false, /*Effect*/ Hash40::new("collision_attr_fire"), /*SFXLevel*/ *ATTACK_SOUND_LEVEL_L, /*SFXType*/ *COLLISION_SOUND_ATTR_KICK, /*Type*/ *ATTACK_REGION_NONE,
5821
);
5922
}
6023
}
6124

25+
#[acmd_script( agent = "duckhunt" , script = "sound_attackhi4" , category = ACMD_SOUND , low_priority)]
26+
unsafe fn duckhunt_attackhi4_sound(agent: &mut L2CAgentBase) {
27+
let lua_state = agent.lua_state_agent;
28+
let boma = agent.boma();
29+
frame(lua_state, 7.0);
30+
if is_excute(agent) {
31+
STOP_SE(agent, Hash40::new("se_common_smash_start"));
32+
}
33+
frame(lua_state, 12.0);
34+
if is_excute(agent) {
35+
PLAY_SE(agent, Hash40::new("se_duckhunt_smash_h01"));
36+
PLAY_SE(agent, Hash40::new("se_duckhunt_special_l03"));
37+
}
38+
frame(lua_state, 20.0);
39+
if is_excute(agent) {
40+
PLAY_SE(agent, Hash40::new("se_duckhunt_smash_h02"));
41+
PLAY_SE(agent, Hash40::new("se_duckhunt_special_l03"));
42+
}
43+
frame(lua_state, 22.0);
44+
if is_excute(agent) {
45+
PLAY_SEQUENCE(agent, Hash40::new("seq_duckhunt_rnd_attack_dog"));
46+
}
47+
}
48+
6249
#[acmd_script( agent = "duckhunt" , script = "game_attacks4" , category = ACMD_GAME , low_priority)]
6350
unsafe fn duckhunt_attack_s4_s_game(fighter: &mut L2CAgentBase) {
6451
let lua_state = fighter.lua_state_agent;
@@ -70,103 +57,19 @@ unsafe fn duckhunt_attack_s4_s_game(fighter: &mut L2CAgentBase) {
7057
frame(lua_state, 12.0);
7158
FT_MOTION_RATE_RANGE(fighter, 12.0, 18.0, 4.0);
7259
if is_excute(fighter) {
73-
WorkModule::set_int(
74-
boma,
75-
5,
76-
*FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_DELAY_FRAME,
77-
);
78-
WorkModule::set_int(
79-
boma,
80-
6,
81-
*FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_RETICLE_DISPLAY_FRAME,
82-
);
83-
ATTACK(
84-
fighter,
85-
0,
86-
0,
87-
Hash40::new("top"),
88-
4.0,
89-
45,
90-
100,
91-
66,
92-
0,
93-
6.0,
94-
0.0,
95-
6.0,
96-
10.0,
97-
None,
98-
None,
99-
None,
100-
1.0,
101-
1.0,
102-
*ATTACK_SETOFF_KIND_THRU,
103-
*ATTACK_LR_CHECK_F,
104-
false,
105-
0,
106-
0.0,
107-
0,
108-
false,
109-
false,
110-
false,
111-
false,
112-
true,
113-
*COLLISION_SITUATION_MASK_GA,
114-
*COLLISION_CATEGORY_MASK_ALL,
115-
*COLLISION_PART_MASK_ALL,
116-
false,
117-
Hash40::new("collision_attr_fire"),
118-
*ATTACK_SOUND_LEVEL_M,
119-
*COLLISION_SOUND_ATTR_PUNCH,
120-
*ATTACK_REGION_NONE,
121-
);
60+
WorkModule::set_int(boma, 5, *FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_DELAY_FRAME);
61+
WorkModule::set_int(boma, 6, *FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_RETICLE_DISPLAY_FRAME);
62+
ATTACK(fighter, 0, 0, Hash40::new("top"), 4.0, 45, 100, 66, 0, 6.0, 0.0, 6.0, 10.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_THRU, *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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_PUNCH, *ATTACK_REGION_NONE);
12263
}
12364
frame(lua_state, 18.0);
12465
FT_MOTION_RATE_RANGE(fighter, 18.0, 24.0, 4.0);
12566
if is_excute(fighter) {
126-
ATTACK(fighter, 1, 0, Hash40::new("top"), 4.0, 45, 100, 70, 0, 7.0, 0.0, 6.0, 18.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_THRU, *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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_PUNCH, *ATTACK_REGION_NONE,);
67+
ATTACK(fighter, 1, 0, Hash40::new("top"), 4.0, 45, 100, 70, 0, 7.0, 0.0, 6.0, 18.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_THRU, *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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_PUNCH, *ATTACK_REGION_NONE);
12768
}
12869
frame(lua_state, 24.0);
12970
FT_MOTION_RATE(fighter, 1.0);
13071
if is_excute(fighter) {
131-
ATTACK(
132-
fighter,
133-
2,
134-
0,
135-
Hash40::new("top"),
136-
9.0,
137-
361,
138-
131,
139-
0,
140-
50,
141-
9.0,
142-
0.0,
143-
6.0,
144-
26.0,
145-
None,
146-
None,
147-
None,
148-
1.0,
149-
1.0,
150-
*ATTACK_SETOFF_KIND_THRU,
151-
*ATTACK_LR_CHECK_F,
152-
false,
153-
0,
154-
0.0,
155-
0,
156-
false,
157-
false,
158-
false,
159-
false,
160-
true,
161-
*COLLISION_SITUATION_MASK_GA,
162-
*COLLISION_CATEGORY_MASK_ALL,
163-
*COLLISION_PART_MASK_ALL,
164-
false,
165-
Hash40::new("collision_attr_fire"),
166-
*ATTACK_SOUND_LEVEL_L,
167-
*COLLISION_SOUND_ATTR_KICK,
168-
*ATTACK_REGION_NONE,
169-
);
72+
ATTACK(fighter, 2, 0, Hash40::new("top"), 9.0, 361, 131, 0, 50, 9.0, 0.0, 6.0, 26.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_THRU, *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_fire"), *ATTACK_SOUND_LEVEL_L, *COLLISION_SOUND_ATTR_KICK, *ATTACK_REGION_NONE);
17073
}
17174
}
17275

@@ -181,105 +84,46 @@ unsafe fn duckhunt_attack_lw4_game(fighter: &mut L2CAgentBase) {
18184
frame(lua_state, 8.0);
18285
FT_MOTION_RATE_RANGE(fighter, 21.0, 57.0, 24.0);
18386
if is_excute(fighter) {
184-
WorkModule::set_int(
185-
boma,
186-
5,
187-
*FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_DELAY_FRAME,
188-
);
189-
WorkModule::set_int(
190-
boma,
191-
6,
192-
*FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_RETICLE_DISPLAY_FRAME,
193-
);
194-
ATTACK(
195-
fighter,
196-
0,
197-
0,
198-
Hash40::new("top"),
199-
5.0,
200-
170,
201-
0,
202-
0,
203-
120,
204-
6.0,
205-
0.0,
206-
4.0,
207-
10.0,
208-
None,
209-
None,
210-
None,
211-
1.0,
212-
1.0,
213-
*ATTACK_SETOFF_KIND_THRU,
214-
*ATTACK_LR_CHECK_POS,
215-
false,
216-
0,
217-
0.0,
218-
0,
219-
false,
220-
false,
221-
false,
222-
false,
223-
true,
224-
*COLLISION_SITUATION_MASK_GA,
225-
*COLLISION_CATEGORY_MASK_ALL,
226-
*COLLISION_PART_MASK_ALL,
227-
false,
228-
Hash40::new("collision_attr_fire"),
229-
*ATTACK_SOUND_LEVEL_M,
230-
*COLLISION_SOUND_ATTR_PUNCH,
231-
*ATTACK_REGION_NONE,
232-
);
87+
WorkModule::set_int( boma, 5, *FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_DELAY_FRAME);
88+
WorkModule::set_int( boma, 6, *FIGHTER_DUCKHUNT_STATUS_ATTACK_INT_SMASH_RETICLE_DISPLAY_FRAME);
89+
ATTACK( fighter, 0, 0, Hash40::new("top"), 5.0, 170, 0, 0, 120, 6.0, 0.0, 4.0, 10.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_THRU, *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_PUNCH, *ATTACK_REGION_NONE);
23390
}
23491
frame(lua_state, 16.0);
23592
if is_excute(fighter) {
236-
ATTACK(
237-
fighter,
238-
1,
239-
0,
240-
Hash40::new("top"),
241-
5.0,
242-
35,
243-
70,
244-
0,
245-
70,
246-
7.0,
247-
0.0,
248-
8.0,
249-
-10.0,
250-
None,
251-
None,
252-
None,
253-
1.0,
254-
1.0,
255-
*ATTACK_SETOFF_KIND_THRU,
256-
*ATTACK_LR_CHECK_F,
257-
false,
258-
0,
259-
0.0,
260-
0,
261-
false,
262-
false,
263-
false,
264-
false,
265-
true,
266-
*COLLISION_SITUATION_MASK_GA,
267-
*COLLISION_CATEGORY_MASK_ALL,
268-
*COLLISION_PART_MASK_ALL,
269-
false,
270-
Hash40::new("collision_attr_fire"),
271-
*ATTACK_SOUND_LEVEL_M,
272-
*COLLISION_SOUND_ATTR_PUNCH,
273-
*ATTACK_REGION_NONE,
274-
);
93+
ATTACK(fighter, 1, 0, Hash40::new("top"), 5.0, 35, 70, 0, 70, 7.0, 0.0, 8.0, -10.0, None, None, None, 1.0, 1.0, *ATTACK_SETOFF_KIND_THRU, *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_fire"), *ATTACK_SOUND_LEVEL_M, *COLLISION_SOUND_ATTR_PUNCH, *ATTACK_REGION_NONE);
94+
}
95+
}
96+
97+
#[acmd_script( agent = "duckhunt" , script = "sound_attacklw4" , category = ACMD_SOUND , low_priority)]
98+
unsafe fn duckhunt_attacklw4_sound(agent: &mut L2CAgentBase) {
99+
let lua_state = agent.lua_state_agent;
100+
let boma = agent.boma();
101+
frame(lua_state, 4.0);
102+
if is_excute(agent) {
103+
STOP_SE(agent, Hash40::new("se_common_smash_start"));
104+
}
105+
frame(lua_state, 7.0);
106+
if is_excute(agent) {
107+
PLAY_SE(agent, Hash40::new("se_duckhunt_smash_l01"));
108+
}
109+
frame(lua_state, 12.0);
110+
if is_excute(agent) {
111+
PLAY_SE(agent, Hash40::new("se_duckhunt_smash_l02"));
112+
PLAY_SE(agent, Hash40::new("se_duckhunt_special_l03"));
113+
}
114+
frame(lua_state, 14.0);
115+
if is_excute(agent) {
116+
PLAY_SEQUENCE(agent, Hash40::new("seq_duckhunt_rnd_attack_dog"));
275117
}
276118
}
277119

278120

279121
pub fn install() {
280122
install_acmd_scripts!(
281123
duckhunt_attack_hi4_game,
124+
duckhunt_attackhi4_sound,
282125
duckhunt_attack_s4_s_game,
283126
duckhunt_attack_lw4_game,
127+
duckhunt_attack_lw4_sound
284128
);
285129
}

0 commit comments

Comments
 (0)