mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Target the specific attack types, to handle TripeStrike etc...
Removed the Axe sfx until the animations show the swing
This commit is contained in:
parent
0516af8c57
commit
802bce1698
@ -23,45 +23,44 @@
|
|||||||
],
|
],
|
||||||
threshold: 0.5,
|
threshold: 0.5,
|
||||||
),
|
),
|
||||||
Attack(Bow(BasicBow)): (
|
Attack(DashMelee, Sword(BasicSword)): (
|
||||||
|
files: [
|
||||||
|
"voxygen.audio.sfx.weapon.whoosh_normal_01",
|
||||||
|
"voxygen.audio.sfx.weapon.whoosh_normal_02",
|
||||||
|
"voxygen.audio.sfx.weapon.whoosh_normal_03",
|
||||||
|
"voxygen.audio.sfx.weapon.whoosh_normal_04",
|
||||||
|
],
|
||||||
|
threshold: 1.2,
|
||||||
|
),
|
||||||
|
Attack(TripleStrike, Sword(BasicSword)): (
|
||||||
|
files: [
|
||||||
|
"voxygen.audio.sfx.weapon.sword_triple_strike_01",
|
||||||
|
"voxygen.audio.sfx.weapon.sword_triple_strike_02",
|
||||||
|
"voxygen.audio.sfx.weapon.sword_triple_strike_03",
|
||||||
|
],
|
||||||
|
threshold: 0.8,
|
||||||
|
),
|
||||||
|
Attack(BasicRanged, Bow(BasicBow)): (
|
||||||
files: [
|
files: [
|
||||||
"voxygen.audio.sfx.weapon.bow_attack_01",
|
"voxygen.audio.sfx.weapon.bow_attack_01",
|
||||||
"voxygen.audio.sfx.weapon.bow_attack_02",
|
"voxygen.audio.sfx.weapon.bow_attack_02",
|
||||||
"voxygen.audio.sfx.weapon.bow_attack_03",
|
|
||||||
"voxygen.audio.sfx.weapon.bow_attack_04",
|
|
||||||
],
|
],
|
||||||
threshold: 0.5,
|
threshold: 0.5,
|
||||||
),
|
),
|
||||||
Attack(Sword(BasicSword)): (
|
Attack(BasicMelee, Hammer(BasicHammer)): (
|
||||||
files: [
|
files: [
|
||||||
"voxygen.audio.sfx.weapon.sword_attack_01",
|
"voxygen.audio.sfx.weapon.whoosh_low_01",
|
||||||
"voxygen.audio.sfx.weapon.sword_attack_02",
|
"voxygen.audio.sfx.weapon.whoosh_low_02",
|
||||||
"voxygen.audio.sfx.weapon.sword_attack_03",
|
"voxygen.audio.sfx.weapon.whoosh_low_03",
|
||||||
"voxygen.audio.sfx.weapon.sword_attack_04",
|
|
||||||
],
|
],
|
||||||
threshold: 0.5,
|
threshold: 0.5,
|
||||||
),
|
),
|
||||||
Attack(Hammer(BasicHammer)): (
|
Attack(BasicMelee, Staff(BasicStaff)): (
|
||||||
files: [
|
files: [
|
||||||
"voxygen.audio.sfx.weapon.hammer_attack_01",
|
"voxygen.audio.sfx.weapon.whoosh_normal_01",
|
||||||
"voxygen.audio.sfx.weapon.hammer_attack_02",
|
"voxygen.audio.sfx.weapon.whoosh_normal_02",
|
||||||
"voxygen.audio.sfx.weapon.hammer_attack_03",
|
"voxygen.audio.sfx.weapon.whoosh_normal_03",
|
||||||
],
|
"voxygen.audio.sfx.weapon.whoosh_normal_04",
|
||||||
threshold: 0.5,
|
|
||||||
),
|
|
||||||
Attack(Staff(BasicStaff)): (
|
|
||||||
files: [
|
|
||||||
"voxygen.audio.sfx.weapon.staff_attack_01",
|
|
||||||
"voxygen.audio.sfx.weapon.staff_attack_02",
|
|
||||||
"voxygen.audio.sfx.weapon.staff_attack_03",
|
|
||||||
],
|
|
||||||
threshold: 0.5,
|
|
||||||
),
|
|
||||||
Attack(Axe(BasicAxe)): (
|
|
||||||
files: [
|
|
||||||
"voxygen.audio.sfx.weapon.hammer_attack_01",
|
|
||||||
"voxygen.audio.sfx.weapon.hammer_attack_02",
|
|
||||||
"voxygen.audio.sfx.weapon.hammer_attack_03",
|
|
||||||
],
|
],
|
||||||
threshold: 0.5,
|
threshold: 0.5,
|
||||||
),
|
),
|
||||||
|
BIN
assets/voxygen/audio/sfx/weapon/bow_attack_03.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/bow_attack_03.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/bow_attack_04.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/bow_attack_04.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/staff_attack_01.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/staff_attack_01.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/staff_attack_02.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/staff_attack_02.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/staff_attack_03.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/staff_attack_03.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_01.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_01.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_02.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_02.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_03.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_03.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_04.wav
(Stored with Git LFS)
BIN
assets/voxygen/audio/sfx/weapon/sword_attack_04.wav
(Stored with Git LFS)
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/sword_triple_strike_01.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/sword_triple_strike_01.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/sword_triple_strike_02.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/sword_triple_strike_02.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/sword_triple_strike_03.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/sword_triple_strike_03.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_01.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_01.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_02.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_02.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_03.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_03.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_04.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/whoosh_normal_04.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -10,6 +10,30 @@ use specs::{Component, FlaggedStorage};
|
|||||||
use specs_idvs::IDVStorage;
|
use specs_idvs::IDVStorage;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Hash, Eq, PartialEq, Debug, Serialize, Deserialize)]
|
||||||
|
pub enum CharacterAbilityType {
|
||||||
|
BasicMelee,
|
||||||
|
BasicRanged,
|
||||||
|
Boost,
|
||||||
|
DashMelee,
|
||||||
|
BasicBlock,
|
||||||
|
TripleStrike,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&CharacterState> for CharacterAbilityType {
|
||||||
|
fn from(state: &CharacterState) -> Self {
|
||||||
|
match state {
|
||||||
|
CharacterState::BasicMelee(_) => Self::BasicMelee,
|
||||||
|
CharacterState::BasicRanged(_) => Self::BasicRanged,
|
||||||
|
CharacterState::Boost(_) => Self::Boost,
|
||||||
|
CharacterState::DashMelee(_) => Self::DashMelee,
|
||||||
|
CharacterState::BasicBlock => Self::BasicBlock,
|
||||||
|
CharacterState::TripleStrike(_) => Self::TripleStrike,
|
||||||
|
_ => Self::BasicMelee,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
|
#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
|
||||||
pub enum CharacterAbility {
|
pub enum CharacterAbility {
|
||||||
BasicMelee {
|
BasicMelee {
|
||||||
|
@ -16,7 +16,7 @@ mod stats;
|
|||||||
mod visual;
|
mod visual;
|
||||||
|
|
||||||
// Reexports
|
// Reexports
|
||||||
pub use ability::{CharacterAbility, ItemConfig, Loadout};
|
pub use ability::{CharacterAbility, CharacterAbilityType, ItemConfig, Loadout};
|
||||||
pub use admin::Admin;
|
pub use admin::Admin;
|
||||||
pub use agent::{Agent, Alignment, SpeechBubble, SPEECH_BUBBLE_DURATION};
|
pub use agent::{Agent, Alignment, SpeechBubble, SPEECH_BUBBLE_DURATION};
|
||||||
pub use body::{
|
pub use body::{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::{comp, sync::Uid, util::Dir};
|
use crate::{comp, sync::Uid, util::Dir};
|
||||||
use comp::{item::ToolKind, InventoryUpdateEvent, Item};
|
use comp::{item::ToolKind, CharacterAbilityType, InventoryUpdateEvent};
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use specs::Entity as EcsEntity;
|
use specs::Entity as EcsEntity;
|
||||||
@ -39,7 +39,7 @@ pub enum SfxEvent {
|
|||||||
Fall,
|
Fall,
|
||||||
ExperienceGained,
|
ExperienceGained,
|
||||||
LevelUp,
|
LevelUp,
|
||||||
Attack(ToolKind),
|
Attack(CharacterAbilityType, ToolKind),
|
||||||
Wield(ToolKind),
|
Wield(ToolKind),
|
||||||
Unwield(ToolKind),
|
Unwield(ToolKind),
|
||||||
Inventory(InventoryUpdateEvent),
|
Inventory(InventoryUpdateEvent),
|
||||||
|
@ -5,7 +5,7 @@ use crate::audio::sfx::{SfxTriggerItem, SfxTriggers};
|
|||||||
use common::{
|
use common::{
|
||||||
comp::{
|
comp::{
|
||||||
item::{Item, ItemKind},
|
item::{Item, ItemKind},
|
||||||
CharacterState, ItemConfig, Loadout, Pos,
|
CharacterAbilityType, CharacterState, ItemConfig, Loadout, Pos,
|
||||||
},
|
},
|
||||||
event::{EventBus, SfxEvent, SfxEventItem},
|
event::{EventBus, SfxEvent, SfxEventItem},
|
||||||
state::State,
|
state::State,
|
||||||
@ -143,7 +143,10 @@ impl CombatEventMapper {
|
|||||||
{
|
{
|
||||||
// Check for attacking states
|
// Check for attacking states
|
||||||
if character_state.is_attack() {
|
if character_state.is_attack() {
|
||||||
return SfxEvent::Attack(data.kind);
|
return SfxEvent::Attack(
|
||||||
|
CharacterAbilityType::from(character_state),
|
||||||
|
data.kind,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
if let Some(wield_event) = match (
|
if let Some(wield_event) = match (
|
||||||
previous_state.weapon_drawn,
|
previous_state.weapon_drawn,
|
||||||
|
@ -2,8 +2,8 @@ use super::*;
|
|||||||
use common::{
|
use common::{
|
||||||
assets,
|
assets,
|
||||||
comp::{
|
comp::{
|
||||||
item::tool::{AxeKind, BowKind, ToolKind},
|
item::tool::{AxeKind, BowKind, SwordKind, ToolKind},
|
||||||
CharacterState, ItemConfig, Loadout,
|
CharacterAbilityType, CharacterState, ItemConfig, Loadout,
|
||||||
},
|
},
|
||||||
event::SfxEvent,
|
event::SfxEvent,
|
||||||
states,
|
states,
|
||||||
@ -94,5 +94,52 @@ fn maps_basic_melee() {
|
|||||||
Some(&loadout),
|
Some(&loadout),
|
||||||
);
|
);
|
||||||
|
|
||||||
assert_eq!(result, SfxEvent::Attack(ToolKind::Axe(AxeKind::BasicAxe)));
|
assert_eq!(
|
||||||
|
result,
|
||||||
|
SfxEvent::Attack(
|
||||||
|
CharacterAbilityType::BasicMelee,
|
||||||
|
ToolKind::Axe(AxeKind::BasicAxe)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn maps_triple_strike() {
|
||||||
|
let mut loadout = Loadout::default();
|
||||||
|
|
||||||
|
loadout.active_item = Some(ItemConfig {
|
||||||
|
item: assets::load_expect_cloned("common.items.weapons.starter_sword"),
|
||||||
|
ability1: None,
|
||||||
|
ability2: None,
|
||||||
|
ability3: None,
|
||||||
|
block_ability: None,
|
||||||
|
dodge_ability: None,
|
||||||
|
});
|
||||||
|
|
||||||
|
let result = CombatEventMapper::map_event(
|
||||||
|
&CharacterState::TripleStrike(states::triple_strike::Data {
|
||||||
|
base_damage: 10,
|
||||||
|
stage: states::triple_strike::Stage::First,
|
||||||
|
stage_time_active: Duration::default(),
|
||||||
|
stage_exhausted: false,
|
||||||
|
initialized: true,
|
||||||
|
transition_style: states::triple_strike::TransitionStyle::Hold(
|
||||||
|
states::triple_strike::HoldingState::Released,
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
&PreviousEntityState {
|
||||||
|
event: SfxEvent::Idle,
|
||||||
|
time: Instant::now(),
|
||||||
|
weapon_drawn: true,
|
||||||
|
},
|
||||||
|
Some(&loadout),
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
result,
|
||||||
|
SfxEvent::Attack(
|
||||||
|
CharacterAbilityType::TripleStrike,
|
||||||
|
ToolKind::Sword(SwordKind::BasicSword)
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user