diff --git a/server/src/cryp.rs b/server/src/cryp.rs index 3def79bd..46d03b38 100644 --- a/server/src/cryp.rs +++ b/server/src/cryp.rs @@ -504,10 +504,12 @@ impl Cryp { }, true => { // there is no green shield (yet) + let current_hp = self.hp(); self.reduce_hp(modified_healing); + let delta = current_hp - self.hp(); return ResolutionResult::Inversion { - damage: modified_healing, + damage: delta, healing: 0, recharge: 0, category: Category::GreenDamage, @@ -552,10 +554,12 @@ impl Cryp { self.red_shield.reduce(mitigation); // deal remainder to hp + let current_hp = self.hp(); self.reduce_hp(remainder); + let delta = current_hp - self.hp(); return ResolutionResult::Damage { - amount: remainder, + amount: delta, mitigation, category: Category::RedDamage, immunity, @@ -610,10 +614,13 @@ impl Cryp { let mitigation = modified_damage.saturating_sub(remainder); self.blue_shield.reduce(mitigation); + + let current_hp = self.hp(); self.reduce_hp(remainder); + let delta = current_hp - self.hp(); return ResolutionResult::Damage { - amount: remainder, + amount: delta, mitigation, category: Category::BlueDamage, immunity, @@ -811,6 +818,4 @@ mod tests { return; } - - } diff --git a/server/src/skill.rs b/server/src/skill.rs index 5588709a..de873634 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -984,9 +984,13 @@ mod tests { clutch(&mut y.clone(), &mut y, Resolution::new(Skill::Clutch)); assert!(y.is_clutch()); - attack(&mut x, &mut y, Resolution::new(Skill::Attack)); - + let res = attack(&mut x, &mut y, Resolution::new(Skill::Attack)); assert!(y.hp() == 1); + + match res.results[0] { + ResolutionResult::Damage { amount, mitigation: _, category: _, immunity: _ } => assert_eq!(amount, 1023), + _ => panic!("not damage"), + }; } #[test]