summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/struct/shr_omnimods.erl11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/shared/struct/shr_omnimods.erl b/src/shared/struct/shr_omnimods.erl
index 4abfef2..03ec5af 100644
--- a/src/shared/struct/shr_omnimods.erl
+++ b/src/shared/struct/shr_omnimods.erl
@@ -63,7 +63,7 @@ cleanup_entry_list (ModList) ->
-spec apply_coefficient_to_mods (float(), mods()) -> mods().
apply_coefficient_to_mods (Coef, Mods) ->
- dict:map(fun ({_Name, Val}) -> shr_util:ceil(Coef * Val) end, Mods).
+ dict:map(fun (_Name, Val) -> shr_math_util:ceil(Coef * Val) end, Mods).
-spec merge_mods (mods(), mods()) -> mods().
merge_mods (ModsA, ModsB) ->
@@ -164,11 +164,18 @@ get_attack_damage (AttackModifier, AttackerOmnimods, DefenderOmnimods) ->
AttackerOmnimodsAttmods = AttackerOmnimods#omnimods.atkmods,
DefenderOmnimodsDefmods = DefenderOmnimods#omnimods.defmods,
+ BaseDefense =
+ case dict:find(base, DefenderOmnimodsDefmods) of
+ {ok, BaseDefValue} -> BaseDefValue;
+ _ -> 0
+ end,
+
Result =
dict:fold
(
fun (Name, BaseDmg, CurrentResult) ->
- ModifiedDmg = shr_math:ceil(BaseDmg * AttackModifier),
+ ModifiedDmg =
+ (shr_math_util:ceil(BaseDmg * AttackModifier) - BaseDefense),
case dict:find(Name, DefenderOmnimodsDefmods) of
{ok, Def} when (Def >= ModifiedDmg) -> CurrentResult;
{ok, Def} -> (CurrentResult + (ModifiedDmg - Def));