diff --git a/server/src/cryp.rs b/server/src/cryp.rs index eda5b7f5..f4407fc8 100644 --- a/server/src/cryp.rs +++ b/server/src/cryp.rs @@ -526,20 +526,20 @@ impl Cryp { pub fn evade(&self, skill: Skill) -> Option { let mut rng = thread_rng(); - let hp_pct = self.hp.base as f64 / self.stamina.base as f64; - let evasion_rating = self.evasion.base as f64 * hp_pct; + let hp_pct = (self.hp.base * 100) / self.stamina.base; + let evasion_rating = (self.evasion.base * hp_pct) / 100; - // println!("{:?}", evasion_rating); - if evasion_rating == 0.0 { + println!("{:?}", evasion_rating); + if evasion_rating == 0 { return None; } - let roll = rng.gen_bool(evasion_rating / 100.0); + let roll = rng.gen_range(0, 100); - match roll { + match roll > evasion_rating { true => Some(ResolutionResult::Evasion { skill, - evasion_rating: evasion_rating.round(), + evasion_rating: evasion_rating, }), false => None, } diff --git a/server/src/skill.rs b/server/src/skill.rs index 6be796ab..cc2b46c5 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -70,7 +70,7 @@ pub enum ResolutionResult { Healing { amount: u64, overhealing: u64, category: Category , immunity: Immunity }, Effect { effect: Effect, duration: u8, immunity: Immunity }, Removal { effect: Effect, immunity: Immunity }, - Evasion { skill: Skill, evasion_rating: f64 }, + Evasion { skill: Skill, evasion_rating: u64 }, } #[derive(Debug,Clone,PartialEq,Serialize,Deserialize)]