From c809569f6b0411faf314c93017d17877547ee863 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 9 Jan 2021 11:56:19 -0500 Subject: [PATCH] Added level up sound to skill point gain. Fixed tests. Fixed duplicate roll description. --- assets/voxygen/i18n/en/skills.ron | 2 - common/src/comp/skills.rs | 65 ++++++++++--------- common/src/outcome.rs | 7 +- common/sys/src/stats.rs | 8 ++- .../audio/sfx/event_mapper/movement/tests.rs | 1 + voxygen/src/audio/sfx/mod.rs | 2 +- voxygen/src/hud/mod.rs | 1 + voxygen/src/hud/overhead.rs | 8 +-- 8 files changed, 51 insertions(+), 43 deletions(-) diff --git a/assets/voxygen/i18n/en/skills.ron b/assets/voxygen/i18n/en/skills.ron index d9fc82292a..f79d26928a 100644 --- a/assets/voxygen/i18n/en/skills.ron +++ b/assets/voxygen/i18n/en/skills.ron @@ -27,8 +27,6 @@ "hud.skill.unlck_sceptre": "Unlocks sceptre skill tree{}", "hud.skill.dodge_title": "Dodge", "hud.skill.dodge": "Dodging avoids melee attacks{}", - "hud.skill.dodge_title": "Roll Stamina Cost", - "hud.skill.dodge": "Rolling uses 20% less stamina{}", "hud.skill.roll_stamina_title": "Roll Stamina Cost", "hud.skill.roll_stamina": "Rolling uses 20% less stamina{}", "hud.skill.roll_speed_title": "Rolling Speed", diff --git a/common/src/comp/skills.rs b/common/src/comp/skills.rs index 646b0381d3..79b67dbcd7 100644 --- a/common/src/comp/skills.rs +++ b/common/src/comp/skills.rs @@ -622,69 +622,76 @@ mod tests { #[test] fn test_refund_skill() { - let mut skillset = SkillSet::new(); - skillset.unlock_skill_group(SkillGroupType::Axes); - skillset.add_skill_points(SkillGroupType::Axes, 1); - skillset.unlock_skill(Skill::TestAxeSkill2); + let mut skillset = SkillSet::default(); + skillset.unlock_skill_group(SkillGroupType::Weapon(ToolKind::Axe)); + skillset.add_skill_points(SkillGroupType::Weapon(ToolKind::Axe), 1); + skillset.unlock_skill(Skill::Axe(AxeSkill::LUnlockLeap)); - assert_eq!(skillset.skill_groups[0].available_sp, 0); + assert_eq!(skillset.skill_groups[1].available_sp, 0); assert_eq!(skillset.skills.len(), 1); assert_eq!( - skillset.skills.get(&Skill::TestAxeSkill2), - Some(&Skill::TestAxeSkill2) + skillset + .skills + .contains_key(&Skill::Axe(AxeSkill::LUnlockLeap)), + true ); - skillset.refund_skill(Skill::TestAxeSkill2); + skillset.refund_skill(Skill::Axe(AxeSkill::LUnlockLeap)); - assert_eq!(skillset.skill_groups[0].available_sp, 1); - assert_eq!(skillset.skills.get(&Skill::TestAxeSkill2), None); + assert_eq!(skillset.skill_groups[1].available_sp, 1); + assert_eq!( + skillset.skills.get(&Skill::Axe(AxeSkill::LUnlockLeap)), + None + ); } #[test] fn test_unlock_skillgroup() { - let mut skillset = SkillSet::new(); - skillset.unlock_skill_group(SkillGroupType::Axes); + let mut skillset = SkillSet::default(); + skillset.unlock_skill_group(SkillGroupType::Weapon(ToolKind::Axe)); - assert_eq!(skillset.skill_groups.len(), 1); + assert_eq!(skillset.skill_groups.len(), 2); assert_eq!( - skillset.skill_groups[0], - SkillGroup::new(SkillGroupType::Axes) + skillset.skill_groups[1], + SkillGroup::new(SkillGroupType::Weapon(ToolKind::Axe)) ); } #[test] fn test_unlock_skill() { - let mut skillset = SkillSet::new(); + let mut skillset = SkillSet::default(); - skillset.unlock_skill_group(SkillGroupType::Axes); - skillset.add_skill_points(SkillGroupType::Axes, 1); + skillset.unlock_skill_group(SkillGroupType::Weapon(ToolKind::Axe)); + skillset.add_skill_points(SkillGroupType::Weapon(ToolKind::Axe), 1); - assert_eq!(skillset.skill_groups[0].available_sp, 1); + assert_eq!(skillset.skill_groups[1].available_sp, 1); assert_eq!(skillset.skills.len(), 0); // Try unlocking a skill with enough skill points - skillset.unlock_skill(Skill::TestAxeSkill2); + skillset.unlock_skill(Skill::Axe(AxeSkill::LUnlockLeap)); - assert_eq!(skillset.skill_groups[0].available_sp, 0); + assert_eq!(skillset.skill_groups[1].available_sp, 0); assert_eq!(skillset.skills.len(), 1); assert_eq!( - skillset.skills.get(&Skill::TestAxeSkill2), - Some(&Skill::TestAxeSkill2) + skillset + .skills + .contains_key(&Skill::Axe(AxeSkill::LUnlockLeap)), + true ); // Try unlocking a skill without enough skill points - skillset.unlock_skill(Skill::TestAxeSkill1); + skillset.unlock_skill(Skill::Axe(AxeSkill::DsCombo)); assert_eq!(skillset.skills.len(), 1); - assert_eq!(skillset.skills.get(&Skill::TestAxeSkill1), None); + assert_eq!(skillset.skills.get(&Skill::Axe(AxeSkill::DsCombo)), None); } #[test] fn test_add_skill_points() { - let mut skillset = SkillSet::new(); - skillset.unlock_skill_group(SkillGroupType::Axes); - skillset.add_skill_points(SkillGroupType::Axes, 1); + let mut skillset = SkillSet::default(); + skillset.unlock_skill_group(SkillGroupType::Weapon(ToolKind::Axe)); + skillset.add_skill_points(SkillGroupType::Weapon(ToolKind::Axe), 1); - assert_eq!(skillset.skill_groups[0].available_sp, 1); + assert_eq!(skillset.skill_groups[1].available_sp, 1); } } diff --git a/common/src/outcome.rs b/common/src/outcome.rs index 109ca557c2..a21ea918c6 100644 --- a/common/src/outcome.rs +++ b/common/src/outcome.rs @@ -22,9 +22,6 @@ pub enum Outcome { body: comp::Body, vel: Vec3, }, - LevelUp { - pos: Vec3, - }, Beam { pos: Vec3, heal: bool, @@ -37,6 +34,7 @@ pub enum Outcome { uid: Uid, skill_tree: comp::skills::SkillGroupType, total_points: u16, + pos: Vec3, }, } @@ -45,10 +43,9 @@ impl Outcome { match self { Outcome::Explosion { pos, .. } => Some(*pos), Outcome::ProjectileShot { pos, .. } => Some(*pos), - Outcome::LevelUp { pos } => Some(*pos), Outcome::Beam { pos, .. } => Some(*pos), Outcome::ExpChange { .. } => None, - Outcome::SkillPointGain { .. } => None, + Outcome::SkillPointGain { pos, .. } => Some(*pos), } } } diff --git a/common/sys/src/stats.rs b/common/sys/src/stats.rs index 6a6d3a8c9d..caabaced2a 100644 --- a/common/sys/src/stats.rs +++ b/common/sys/src/stats.rs @@ -1,7 +1,7 @@ use common::{ comp::{ skills::{GeneralSkill, Skill, SkillGroupType}, - CharacterState, Energy, EnergyChange, EnergySource, Health, Stats, + CharacterState, Energy, EnergyChange, EnergySource, Health, Pos, Stats, }, event::{EventBus, ServerEvent}, metrics::SysMetrics, @@ -29,6 +29,7 @@ impl<'a> System<'a> for Sys { WriteStorage<'a, Health>, WriteStorage<'a, Energy>, ReadStorage<'a, Uid>, + ReadStorage<'a, Pos>, Write<'a, Vec>, ); @@ -44,6 +45,7 @@ impl<'a> System<'a> for Sys { mut healths, mut energies, uids, + positions, mut outcomes, ): Self::SystemData, ) { @@ -59,11 +61,12 @@ impl<'a> System<'a> for Sys { healths.set_event_emission(true); // Update stats - for (entity, uid, mut stats, mut health) in ( + for (entity, uid, mut stats, mut health, pos) in ( &entities, &uids, &mut stats.restrict_mut(), &mut healths.restrict_mut(), + &positions, ) .join() { @@ -104,6 +107,7 @@ impl<'a> System<'a> for Sys { uid: *uid, skill_tree: skill_group, total_points: stat.skill_set.get_earned_sp(skill_group), + pos: pos.0, }); } } diff --git a/voxygen/src/audio/sfx/event_mapper/movement/tests.rs b/voxygen/src/audio/sfx/event_mapper/movement/tests.rs index 0b54595453..cbf49f2e4e 100644 --- a/voxygen/src/audio/sfx/event_mapper/movement/tests.rs +++ b/voxygen/src/audio/sfx/event_mapper/movement/tests.rs @@ -170,6 +170,7 @@ fn maps_roll() { movement_duration: Duration::default(), recover_duration: Duration::default(), roll_strength: 0.0, + immune_melee: false, }, timer: Duration::default(), stage_section: states::utils::StageSection::Buildup, diff --git a/voxygen/src/audio/sfx/mod.rs b/voxygen/src/audio/sfx/mod.rs index a93f9afc68..38280e3d30 100644 --- a/voxygen/src/audio/sfx/mod.rs +++ b/voxygen/src/audio/sfx/mod.rs @@ -345,7 +345,7 @@ impl SfxMgr { }, } }, - Outcome::LevelUp { pos } => { + Outcome::SkillPointGain { pos, .. } => { let file_ref = "voxygen.audio.sfx.character.level_up_sound_-_shorter_wind_up"; audio.play_sfx(file_ref, *pos, None); }, diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 636f2f57d0..993604f49b 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -2896,6 +2896,7 @@ impl Hud { uid, skill_tree, total_points, + .. } => self.skill_point_displays.push(SkillPointGain { owner: *uid, skill_tree: *skill_tree, diff --git a/voxygen/src/hud/overhead.rs b/voxygen/src/hud/overhead.rs index bca105d41c..4a30687a21 100644 --- a/voxygen/src/hud/overhead.rs +++ b/voxygen/src/hud/overhead.rs @@ -1,8 +1,8 @@ use super::{ - img_ids::Imgs, DEFAULT_NPC, FACTION_COLOR, GROUP_COLOR, GROUP_MEMBER, HP_COLOR, LOW_HP_COLOR, - QUALITY_ARTIFACT, QUALITY_COMMON, QUALITY_DEBUG, QUALITY_EPIC, QUALITY_HIGH, QUALITY_LEGENDARY, - QUALITY_LOW, QUALITY_MODERATE, REGION_COLOR, SAY_COLOR, STAMINA_COLOR, TELL_COLOR, TEXT_BG, - TEXT_COLOR, XP_COLOR, ENEMY_HP_COLOR + img_ids::Imgs, DEFAULT_NPC, ENEMY_HP_COLOR, FACTION_COLOR, GROUP_COLOR, GROUP_MEMBER, HP_COLOR, + LOW_HP_COLOR, QUALITY_ARTIFACT, QUALITY_COMMON, QUALITY_DEBUG, QUALITY_EPIC, QUALITY_HIGH, + QUALITY_LEGENDARY, QUALITY_LOW, QUALITY_MODERATE, REGION_COLOR, SAY_COLOR, STAMINA_COLOR, + TELL_COLOR, TEXT_BG, TEXT_COLOR, XP_COLOR, }; use crate::{ hud::get_buff_info,