abstracting level requirements
This commit is contained in:
parent
46534f1579
commit
23a6d5e025
1 changed files with 16 additions and 10 deletions
|
|
@ -106,6 +106,21 @@ pub fn bloodstain(ecs: &mut World, target: usize) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Takes a level, and returns the total XP required to reach the next level.
|
||||||
|
fn get_next_level_requirement(level: i32) -> i32 {
|
||||||
|
if level == 0 {
|
||||||
|
return 5;
|
||||||
|
} else if level < 10 {
|
||||||
|
return 20 * 2_i32.pow(level as u32 - 1);
|
||||||
|
} else if level < 20 {
|
||||||
|
return 10000 * 2_i32.pow(level as u32 - 10);
|
||||||
|
} else if level < 30 {
|
||||||
|
return 10000000 * (level - 19);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Handles EntityDeath effects.
|
||||||
pub fn entity_death(ecs: &mut World, effect: &EffectSpawner, target: Entity) {
|
pub fn entity_death(ecs: &mut World, effect: &EffectSpawner, target: Entity) {
|
||||||
let mut xp_gain = 0;
|
let mut xp_gain = 0;
|
||||||
let mut pools = ecs.write_storage::<Pools>();
|
let mut pools = ecs.write_storage::<Pools>();
|
||||||
|
|
@ -128,16 +143,7 @@ pub fn entity_death(ecs: &mut World, effect: &EffectSpawner, target: Entity) {
|
||||||
let mut source_pools = pools.get_mut(source).unwrap();
|
let mut source_pools = pools.get_mut(source).unwrap();
|
||||||
let source_attributes = attributes.get(source).unwrap();
|
let source_attributes = attributes.get(source).unwrap();
|
||||||
source_pools.xp += xp_gain;
|
source_pools.xp += xp_gain;
|
||||||
let mut next_level_requirement = -1;
|
let next_level_requirement = get_next_level_requirement(source_pools.level);
|
||||||
if source_pools.level == 0 {
|
|
||||||
next_level_requirement = 5
|
|
||||||
} else if source_pools.level < 10 {
|
|
||||||
next_level_requirement = 20 * 2_i32.pow(source_pools.level as u32 - 1);
|
|
||||||
} else if source_pools.level < 20 {
|
|
||||||
next_level_requirement = 10000 * 2_i32.pow(source_pools.level as u32 - 10);
|
|
||||||
} else if source_pools.level < 30 {
|
|
||||||
next_level_requirement = 10000000 * (source_pools.level - 19);
|
|
||||||
}
|
|
||||||
if next_level_requirement != -1 && source_pools.xp >= next_level_requirement {
|
if next_level_requirement != -1 && source_pools.xp >= next_level_requirement {
|
||||||
source_pools.level += 1;
|
source_pools.level += 1;
|
||||||
// If it was the PLAYER that levelled up:
|
// If it was the PLAYER that levelled up:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue