diff --git a/assets/server/manifests/resource_experience_manifest.ron b/assets/server/manifests/resource_experience_manifest.ron index c597adef8f..829cea21c8 100644 --- a/assets/server/manifests/resource_experience_manifest.ron +++ b/assets/server/manifests/resource_experience_manifest.ron @@ -1,19 +1,19 @@ ResourceExperienceManifest({ - "common.items.mineral.gem.amethyst": 20, - "common.items.mineral.gem.sapphire": 50, - "common.items.mineral.gem.topaz": 20, - "common.items.mineral.gem.diamond": 100, - "common.items.mineral.gem.emerald": 50, - "common.items.mineral.gem.ruby": 75, + "common.items.mineral.gem.amethyst": 4, + "common.items.mineral.gem.sapphire": 8, + "common.items.mineral.gem.topaz": 4, + "common.items.mineral.gem.diamond": 25, + "common.items.mineral.gem.emerald": 10, + "common.items.mineral.gem.ruby": 12, - "common.items.mineral.ore.coal": 25, - "common.items.mineral.ore.gold": 100, - "common.items.mineral.ore.iron": 20, - "common.items.mineral.ore.silver": 90, - "common.items.mineral.ore.velorite": 30, - "common.items.mineral.ore.veloritefrag": 20, - "common.items.mineral.ore.bloodstone": 80, - "common.items.mineral.ore.cobalt": 60, - "common.items.mineral.ore.copper": 10, - "common.items.mineral.ore.tin": 10, + "common.items.mineral.ore.coal": 6, + "common.items.mineral.ore.gold": 25, + "common.items.mineral.ore.iron": 4, + "common.items.mineral.ore.silver": 22, + "common.items.mineral.ore.velorite": 8, + "common.items.mineral.ore.veloritefrag": 4, + "common.items.mineral.ore.bloodstone": 20, + "common.items.mineral.ore.cobalt": 15, + "common.items.mineral.ore.copper": 3, + "common.items.mineral.ore.tin": 3, }) diff --git a/common/src/outcome.rs b/common/src/outcome.rs index 559139d23a..d1ec35e15c 100644 --- a/common/src/outcome.rs +++ b/common/src/outcome.rs @@ -1,5 +1,6 @@ use crate::{comp, uid::Uid}; -use comp::{beam, item::Reagent, poise::PoiseState}; +use comp::{beam, item::Reagent, poise::PoiseState, skills::SkillGroupKind}; +use hashbrown::HashSet; use serde::{Deserialize, Serialize}; use vek::*; @@ -36,6 +37,7 @@ pub enum Outcome { ExpChange { uid: Uid, exp: i32, + xp_pools: HashSet, }, SkillPointGain { uid: Uid, diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index c559ba19b6..15dd48bae3 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -1011,12 +1011,13 @@ fn handle_exp_gain( add_tool_from_slot(EquipSlot::InactiveMainhand); add_tool_from_slot(EquipSlot::InactiveOffhand); let num_pools = xp_pools.len() as f32; - for pool in xp_pools { - skill_set.change_experience(pool, (exp_reward / num_pools).ceil() as i32); + for pool in xp_pools.iter() { + skill_set.change_experience(*pool, (exp_reward / num_pools).ceil() as i32); } outcomes.push(Outcome::ExpChange { uid: *uid, exp: exp_reward as i32, + xp_pools, }); } diff --git a/server/src/events/interaction.rs b/server/src/events/interaction.rs index 9653ef4fc1..03b5fe992a 100644 --- a/server/src/events/interaction.rs +++ b/server/src/events/interaction.rs @@ -28,9 +28,10 @@ use crate::{ Server, }; -use hashbrown::HashMap; +use hashbrown::{HashMap, HashSet}; use lazy_static::lazy_static; use serde::Deserialize; +use std::iter::FromIterator; pub fn handle_lantern(server: &mut Server, entity: EcsEntity, enable: bool) { let ecs = server.state_mut().ecs(); @@ -332,6 +333,7 @@ pub fn handle_mine_block( .push(Outcome::ExpChange { uid, exp: *exp_reward, + xp_pools: HashSet::from_iter(vec![SkillGroupKind::Weapon(tool)]), }); } use common::comp::skills::{MiningSkill, Skill}; diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 605833dd5f..b2944c0f39 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -1353,7 +1353,7 @@ impl Hud { Weapon(ToolKind::Sceptre) => &i18n.get("common.weapons.sceptre"), Weapon(ToolKind::Bow) => &i18n.get("common.weapons.bow"), Weapon(ToolKind::Staff) => &i18n.get("common.weapons.staff"), - Weapon(ToolKind::Pick) => &i18n.get("common.tool.mining"), + Weapon(ToolKind::Pick) => &i18n.get("common.tool.pick"), _ => "Unknown", }; Text::new(skill) @@ -1378,7 +1378,6 @@ impl Hud { Weapon(ToolKind::Sceptre) => self.imgs.sceptre, Weapon(ToolKind::Bow) => self.imgs.bow, Weapon(ToolKind::Staff) => self.imgs.staff, - Weapon(ToolKind::Pick) => self.imgs.mining, _ => self.imgs.swords_crossed, }) .w_h(20.0, 20.0) @@ -3659,7 +3658,11 @@ impl Hud { pub fn handle_outcome(&mut self, outcome: &Outcome) { match outcome { - Outcome::ExpChange { uid, exp } => self.floaters.exp_floaters.push(ExpFloater { + Outcome::ExpChange { + uid, + exp, + xp_pools: _, + } => self.floaters.exp_floaters.push(ExpFloater { owner: *uid, exp_change: *exp, timer: 4.0,