2022-01-03 16:30:14 -05:00
|
|
|
use crate::{Skill, Skills};
|
|
|
|
|
2022-01-03 15:21:12 -05:00
|
|
|
pub fn attr_bonus(value: i32) -> i32 {
|
|
|
|
(value - 10) / 2 // See: https://roll20.net/compendium/dnd5e/Ability%20Scores#content
|
|
|
|
}
|
2022-01-03 16:30:14 -05:00
|
|
|
|
|
|
|
pub fn player_hp_per_level(fitness: i32) -> i32 {
|
|
|
|
10 + attr_bonus(fitness)
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn player_hp_at_level(fitness: i32, level: i32) -> i32 {
|
2022-01-04 15:34:07 -05:00
|
|
|
10 + player_hp_per_level(fitness) * level
|
2022-01-03 16:30:14 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn npc_hp(fitness: i32, level: i32) -> i32 {
|
|
|
|
let mut total = 1;
|
|
|
|
for _i in 0..level {
|
|
|
|
total += i32::max(1, 8 + attr_bonus(fitness));
|
|
|
|
}
|
|
|
|
|
|
|
|
total
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn mana_per_level(intelligence: i32) -> i32 {
|
|
|
|
i32::max(1, 4 + attr_bonus(intelligence))
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn mana_at_level(intelligence: i32, level: i32) -> i32 {
|
|
|
|
mana_per_level(intelligence) * level
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn skill_bonus(skill: Skill, skills: &Skills) -> i32 {
|
|
|
|
if skills.skills.contains_key(&skill) {
|
|
|
|
skills.skills[&skill]
|
|
|
|
} else {
|
|
|
|
-4
|
|
|
|
}
|
|
|
|
}
|