mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Add combat sfx #647
This commit is contained in:
parent
3a1b4fa516
commit
d316463eb3
@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- New level of detail feature, letting you see all the world's terrain at any view distance.
|
||||
- Point and directional lights now cast realistic shadows, using shadow mapping.
|
||||
- Added leaf and chimney particles
|
||||
- Some more combat sound effects
|
||||
|
||||
### Changed
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
(
|
||||
{
|
||||
//
|
||||
// Character States
|
||||
//
|
||||
Run: (
|
||||
files: [
|
||||
"voxygen.audio.sfx.footsteps.stepgrass_1",
|
||||
@ -11,18 +14,74 @@
|
||||
],
|
||||
threshold: 0.25,
|
||||
),
|
||||
ExperienceGained: (
|
||||
files: [
|
||||
// "voxygen.audio.sfx.character.experience_gained_1",
|
||||
// "voxygen.audio.sfx.character.experience_gained_2",
|
||||
// "voxygen.audio.sfx.character.experience_gained_3",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
LevelUp:(
|
||||
files: [
|
||||
"voxygen.audio.sfx.character.level_up_sound_-_shorter_wind_up",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Jump: (
|
||||
files: [
|
||||
// Event not implemented?
|
||||
],
|
||||
threshold: 0.25,
|
||||
),
|
||||
Fall: (
|
||||
files: [
|
||||
// Event not implemented?
|
||||
],
|
||||
threshold: 0.25,
|
||||
),
|
||||
Roll: (
|
||||
files: [
|
||||
"voxygen.audio.sfx.character.dive_roll_1",
|
||||
"voxygen.audio.sfx.character.dive_roll_2",
|
||||
],
|
||||
threshold: 0.25,
|
||||
),
|
||||
Climb: (
|
||||
files: [
|
||||
// TODO: sync with animation
|
||||
//"voxygen.audio.sfx.footsteps.stepgrass_1",
|
||||
//"voxygen.audio.sfx.footsteps.stepgrass_2",
|
||||
//"voxygen.audio.sfx.footsteps.stepgrass_3",
|
||||
//"voxygen.audio.sfx.footsteps.stepgrass_4",
|
||||
//"voxygen.audio.sfx.footsteps.stepgrass_5",
|
||||
//"voxygen.audio.sfx.footsteps.stepgrass_6",
|
||||
],
|
||||
threshold: 0.25,
|
||||
),
|
||||
GliderOpen: (
|
||||
files: [
|
||||
"voxygen.audio.sfx.glider_open",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Glide: (
|
||||
files: [
|
||||
// Event Missing or not implemented?
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
GliderClose: (
|
||||
files: [
|
||||
// Event Missing or not implemented?
|
||||
"voxygen.audio.sfx.glider_close",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
|
||||
//
|
||||
// Sword
|
||||
//
|
||||
Wield(Sword): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_out",
|
||||
@ -35,11 +94,29 @@
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Inventory(Collected): (
|
||||
Attack(TripleStrike(First), Sword): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.add_item",
|
||||
"voxygen.audio.sfx.abilities.swing_sword",
|
||||
],
|
||||
threshold: 0.3,
|
||||
threshold: 0.7,
|
||||
),
|
||||
Attack(TripleStrike(Second), Sword): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.separated_second_swing",
|
||||
],
|
||||
threshold: 0.7,
|
||||
),
|
||||
Attack(TripleStrike(Third), Sword): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.separated_third_swing",
|
||||
],
|
||||
threshold: 0.7,
|
||||
),
|
||||
Attack(DashMelee, Sword): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.sword_dash",
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Inventory(CollectedTool(Sword)): (
|
||||
files: [
|
||||
@ -47,12 +124,220 @@
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Hammer
|
||||
//
|
||||
Wield(Hammer): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_out",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Unwield(Hammer): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_in",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Attack(BasicMelee, Hammer): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing",
|
||||
],
|
||||
threshold: 0.7,
|
||||
),
|
||||
Attack(LeapMelee, Hammer): (
|
||||
files: [
|
||||
//
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Inventory(CollectedTool(Hammer)): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.pickup_sword",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Axe
|
||||
//
|
||||
Wield(Axe): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_out",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Unwield(Axe): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_in",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Attack(TripleStrike(First), Axe): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing",
|
||||
],
|
||||
threshold: 0.7,
|
||||
),
|
||||
Attack(TripleStrike(Second), Axe): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing",
|
||||
],
|
||||
threshold: 0.7,
|
||||
),
|
||||
Attack(TripleStrike(Third), Axe): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing",
|
||||
],
|
||||
threshold: 0.7,
|
||||
),
|
||||
Attack(SpinMelee, Axe): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing",
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Inventory(CollectedTool(Axe)): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.pickup_sword",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Fire Rod / Regeneration Staff
|
||||
//
|
||||
Wield(Staff): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.staff_out",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Unwield(Staff): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.staff_in",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Attack(BasicMelee, Staff): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing",
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Attack(BasicRanged, Staff): (
|
||||
files: [
|
||||
// "voxygen.audio.sfx.abilities.staff_channeling",
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Inventory(CollectedTool(Staff)): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.pickup_staff",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Bow
|
||||
//
|
||||
Wield(Bow): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_out",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Unwield(Bow): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_in",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Attack(BasicRanged, Bow): (
|
||||
files: [
|
||||
// channeling sound.
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Inventory(CollectedTool(Bow)): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.add_item",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Dagger
|
||||
//
|
||||
Wield(Dagger): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.dagger_out",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Unwield(Dagger): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.dagger_in",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Attack(BasicMelee, Dagger): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing_sword",
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Attack(DashMelee, Dagger): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.sword_dash",
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Inventory(CollectedTool(Dagger)): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.pickup_sword",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Shield
|
||||
//
|
||||
Wield(Shield): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.shield_out",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Unwield(Shield): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.weapon.sword_in",
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
Attack(BasicMelee, Shield): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.abilities.swing",
|
||||
],
|
||||
threshold: 0.8,
|
||||
),
|
||||
Inventory(CollectedTool(Shield)): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.pickup_sword",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Inventory
|
||||
//
|
||||
Inventory(Collected): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.add_item",
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
Inventory(CollectFailed): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.add_failed",
|
||||
@ -77,6 +362,10 @@
|
||||
],
|
||||
threshold: 0.3,
|
||||
),
|
||||
|
||||
//
|
||||
// Consumables
|
||||
//
|
||||
Inventory(Consumed("Potion")): (
|
||||
files: [
|
||||
"voxygen.audio.sfx.inventory.consumable.liquid",
|
||||
@ -109,13 +398,13 @@
|
||||
),
|
||||
Explosion: (
|
||||
files: [
|
||||
"voxygen.audio.sfx.explosion",
|
||||
// in code
|
||||
],
|
||||
threshold: 0.2,
|
||||
),
|
||||
ProjectileShot: (
|
||||
files: [
|
||||
"voxygen.audio.sfx.glider_open",
|
||||
// in code
|
||||
],
|
||||
threshold: 0.5,
|
||||
),
|
||||
|
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_1.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_1.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_2.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_2.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_3.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_3.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_4.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/arrow_shot_4.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/fire_shot_1.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/fire_shot_1.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/fire_shot_2.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/fire_shot_2.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/separated_second_swing.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/separated_second_swing.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/separated_third_swing.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/separated_third_swing.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/staff_channeling.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/staff_channeling.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/swing.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/swing.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/swing_sword.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/swing_sword.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/abilities/sword_dash.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/abilities/sword_dash.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/character/dive_roll_1.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/character/dive_roll_1.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/character/dive_roll_2.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/character/dive_roll_2.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/character/experience_gained_1.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/character/experience_gained_1.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/character/experience_gained_2.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/character/experience_gained_2.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/character/experience_gained_3.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/character/experience_gained_3.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/character/level_up_sound_-_shorter_wind_up.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/character/level_up_sound_-_shorter_wind_up.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/footsteps/snow_step_1.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/footsteps/snow_step_1.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/footsteps/snow_step_2.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/footsteps/snow_step_2.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/footsteps/snow_step_3.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/footsteps/snow_step_3.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_1.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_1.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_2.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_2.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_3.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_3.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_4.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/footsteps/water_splash_4.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/dagger_in.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/dagger_in.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/dagger_out.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/dagger_out.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/shield_out.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/shield_out.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/staff_in.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/staff_in.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/audio/sfx/weapon/staff_out.wav
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/audio/sfx/weapon/staff_out.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -89,7 +89,7 @@ use common::{
|
||||
assets,
|
||||
comp::{
|
||||
item::{ItemKind, ToolCategory},
|
||||
CharacterAbilityType, InventoryUpdateEvent,
|
||||
object, Body, CharacterAbilityType, InventoryUpdateEvent,
|
||||
},
|
||||
event::EventBus,
|
||||
outcome::Outcome,
|
||||
@ -97,10 +97,11 @@ use common::{
|
||||
};
|
||||
use event_mapper::SfxEventMapper;
|
||||
use hashbrown::HashMap;
|
||||
use rand::prelude::*;
|
||||
use serde::Deserialize;
|
||||
use specs::WorldExt;
|
||||
use std::convert::TryFrom;
|
||||
use tracing::warn;
|
||||
use tracing::{debug, warn};
|
||||
use vek::*;
|
||||
|
||||
/// We watch the states of nearby entities in order to emit SFX at their
|
||||
@ -254,6 +255,10 @@ impl SfxMgr {
|
||||
|
||||
if let Some(item) = self.triggers.get_trigger(&event.sfx) {
|
||||
let sfx_file = match item.files.len() {
|
||||
0 => {
|
||||
debug!("Sfx event {:?} is missing audio file.", event.sfx);
|
||||
"voxygen.audio.sfx.placeholder"
|
||||
},
|
||||
1 => item
|
||||
.files
|
||||
.last()
|
||||
@ -265,6 +270,8 @@ impl SfxMgr {
|
||||
};
|
||||
|
||||
audio.play_sfx(sfx_file, position, event.vol);
|
||||
} else {
|
||||
debug!("Missing sfx trigger config for sfx event. {:?}", event.sfx);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -277,19 +284,39 @@ impl SfxMgr {
|
||||
match outcome {
|
||||
Outcome::Explosion { pos, power, .. } => {
|
||||
audio.play_sfx(
|
||||
// TODO: from sfx triggers config
|
||||
// TODO: from sfx config?
|
||||
"voxygen.audio.sfx.explosion",
|
||||
*pos,
|
||||
Some((*power / 2.5).min(1.5)),
|
||||
);
|
||||
},
|
||||
Outcome::ProjectileShot { pos, .. } => {
|
||||
audio.play_sfx(
|
||||
// TODO: from sfx triggers config
|
||||
"voxygen.audio.sfx.glider_open",
|
||||
*pos,
|
||||
None,
|
||||
);
|
||||
Outcome::ProjectileShot { pos, body, .. } => {
|
||||
// TODO: from sfx config?
|
||||
match body {
|
||||
Body::Object(
|
||||
object::Body::Arrow | object::Body::MultiArrow | object::Body::ArrowSnake,
|
||||
) => {
|
||||
let file_ref = vec![
|
||||
"voxygen.audio.sfx.abilities.arrow_shot_1",
|
||||
"voxygen.audio.sfx.abilities.arrow_shot_2",
|
||||
"voxygen.audio.sfx.abilities.arrow_shot_3",
|
||||
"voxygen.audio.sfx.abilities.arrow_shot_4",
|
||||
][rand::thread_rng().gen_range(1, 4)];
|
||||
|
||||
audio.play_sfx(file_ref, *pos, None);
|
||||
},
|
||||
Body::Object(object::Body::BoltFire | object::Body::BoltFireBig) => {
|
||||
let file_ref = vec![
|
||||
"voxygen.audio.sfx.abilities.fire_shot_1",
|
||||
"voxygen.audio.sfx.abilities.fire_shot_2",
|
||||
][rand::thread_rng().gen_range(1, 2)];
|
||||
|
||||
audio.play_sfx(file_ref, *pos, None);
|
||||
},
|
||||
_ => {
|
||||
// not mapped to sfx file
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user