mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Added level up sound to skill point gain. Fixed tests.
Fixed duplicate roll description.
This commit is contained in:
parent
3d44ac2c35
commit
c809569f6b
@ -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",
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -22,9 +22,6 @@ pub enum Outcome {
|
||||
body: comp::Body,
|
||||
vel: Vec3<f32>,
|
||||
},
|
||||
LevelUp {
|
||||
pos: Vec3<f32>,
|
||||
},
|
||||
Beam {
|
||||
pos: Vec3<f32>,
|
||||
heal: bool,
|
||||
@ -37,6 +34,7 @@ pub enum Outcome {
|
||||
uid: Uid,
|
||||
skill_tree: comp::skills::SkillGroupType,
|
||||
total_points: u16,
|
||||
pos: Vec3<f32>,
|
||||
},
|
||||
}
|
||||
|
||||
@ -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),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<Outcome>>,
|
||||
);
|
||||
|
||||
@ -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,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
},
|
||||
|
@ -2896,6 +2896,7 @@ impl Hud {
|
||||
uid,
|
||||
skill_tree,
|
||||
total_points,
|
||||
..
|
||||
} => self.skill_point_displays.push(SkillPointGain {
|
||||
owner: *uid,
|
||||
skill_tree: *skill_tree,
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user