From 720b70097b9797f9cc4a2829d0d5fef4eec132ab Mon Sep 17 00:00:00 2001 From: ntr Date: Fri, 11 Jan 2019 17:06:51 +1100 Subject: [PATCH] spell dmg --- server/src/cryp.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/server/src/cryp.rs b/server/src/cryp.rs index 7ccb4531..4fcc6323 100644 --- a/server/src/cryp.rs +++ b/server/src/cryp.rs @@ -433,6 +433,7 @@ impl Cryp { if immune { return ResolutionResult::Damage { amount: 0, + mitigation: 0, category: Category::PhysDmg, immunity, }; @@ -474,6 +475,7 @@ impl Cryp { if immune { return ResolutionResult::Damage { amount: 0, + mitigation: 0, category: Category::SpellDmg, immunity, }; @@ -488,17 +490,21 @@ impl Cryp { let modified_spell_dmg = spell_dmg_mods.iter().fold(amount, |acc, m| m.apply(acc)); - // reduce spell_shield by damage amount - self.spell_shield.reduce(modified_spell_dmg); + // calculate amount of damage armour will not absorb + // eg 50 armour 25 dmg -> 25 remainder + // 50 armour 100 dmg -> 0 remainder + let remainder = self.spell_shield.base.saturating_sub(modified_spell_dmg); + let mitigation = modified_spell_dmg.saturating_sub(remainder); - // reduce amount by the amount absorbed by spell_shield - let remainder = amount.saturating_sub(modified_spell_dmg); + // reduce armour by damage amount + self.armour.reduce(modified_spell_dmg); // deal remainder to hp self.hp.reduce(remainder); return ResolutionResult::Damage { amount: modified_spell_dmg, + mitigation, category: Category::SpellDmg, immunity, };