Adjust mining xp numbers and add SkillGroupKind information to Outcome::ExpChange.

This commit is contained in:
Avi Weinstock 2021-06-09 16:03:25 -04:00
parent 01a04a80fa
commit 9d4a65e8ac
5 changed files with 31 additions and 23 deletions

View File

@ -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,
})

View File

@ -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<SkillGroupKind>,
},
SkillPointGain {
uid: Uid,

View File

@ -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,
});
}

View File

@ -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};

View File

@ -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,