summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-08 16:18:40 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-08 16:18:40 +0200
commite10b050d9224f52031e3a24521f2c63c33d3b2de (patch)
treeba4466b8082cc3a1576afe10561e33c859666bdc /src/shared
parent0416d506aa9d20f2b65ce0123e9c54798a00411e (diff)
Takes armor benefits into account.
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/struct/sh_armor.erl27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/shared/struct/sh_armor.erl b/src/shared/struct/sh_armor.erl
index 04b82d6..f328fdf 100644
--- a/src/shared/struct/sh_armor.erl
+++ b/src/shared/struct/sh_armor.erl
@@ -42,7 +42,8 @@
[
random_id/0,
from_id/1,
- apply_to_attributes/2
+ apply_to_attributes/2,
+ get_resistance_to/2
]
).
@@ -142,3 +143,27 @@ apply_to_attributes (Ar, Att) ->
)
)
end.
+
+-spec get_resistance_to (sh_weapon:damage_type(), type()) -> non_neg_integer().
+get_resistance_to (DamageType, Armor) ->
+ ArmorCategory = Armor#armor.category,
+ BaseResistance =
+ case {DamageType, ArmorCategory} of
+ {slash, kinetic} -> 0.0;
+ {slash, leather} -> 5.0;
+ {slash, chain} -> 10.0;
+ {slash, plate} -> 10.0;
+ {blunt, kinetic} -> 10.0;
+ {blunt, leather} -> 5.0;
+ {blunt, chain} -> 5.0;
+ {blunt, plate} -> 5.0;
+ {pierce, kinetic} -> 5.0;
+ {pierce, leather} -> 5.0;
+ {pierce, chain} -> 5.0;
+ {pierce, plate} -> 10.0
+ end,
+
+ ArmorCoefficient = Armor#armor.coef,
+ ActualResistance = (ArmorCoefficient * BaseResistance),
+
+ erlang:ceil(ActualResistance).