| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/shared/struct')
| -rw-r--r-- | src/shared/struct/shr_omnimods.erl | 71 | 
1 files changed, 67 insertions, 4 deletions
| diff --git a/src/shared/struct/shr_omnimods.erl b/src/shared/struct/shr_omnimods.erl index e4993c8..ae8ba44 100644 --- a/src/shared/struct/shr_omnimods.erl +++ b/src/shared/struct/shr_omnimods.erl @@ -54,7 +54,10 @@        apply_coefficient/2,        set_attribute_modifiers/2,        set_attack_modifiers/2, -      set_defense_modifiers/2 +      set_defense_modifiers/2, +      mod_attribute_modifier/3, +      mod_attack_modifier/3, +      mod_defense_modifier/3     ]  ). @@ -173,6 +176,66 @@ set_attack_modifiers (NewAttackModifiers, Omnimods) ->        atkmods = dict:from_list(NewAttackModifiers)     }. +-spec mod_attribute_modifier +   ( +      shr_attributes:enum(), +      integer(), +      type() +   ) +   -> type(). +mod_attribute_modifier (Attribute, Mod, Omnimods) -> +   Omnimods#omnimods +   { +      attmods = +         dict:update +         ( +            Attribute, +            fun (Current) -> (Current + Mod) end, +            Mod, +            Omnimods#omnimods.attmods +         ) +   }. + +-spec mod_attack_modifier +   ( +      shr_damage_type:type(), +      integer(), +      type() +   ) +   -> type(). +mod_attack_modifier (DamageType, Mod, Omnimods) -> +   Omnimods#omnimods +   { +      atkmods = +         dict:update +         ( +            DamageType, +            fun (Current) -> (Current + Mod) end, +            Mod, +            Omnimods#omnimods.atkmods +         ) +   }. + +-spec mod_defense_modifier +   ( +      shr_damage_type:type(), +      integer(), +      type() +   ) +   -> type(). +mod_defense_modifier (DamageType, Mod, Omnimods) -> +   Omnimods#omnimods +   { +      defmods = +         dict:update +         ( +            DamageType, +            fun (Current) -> (Current + Mod) end, +            Mod, +            Omnimods#omnimods.defmods +         ) +   }. +  %%%% Access  -spec apply_to_attributes     ( @@ -269,13 +332,13 @@ get_defense_modifier (DamageType, Omnimods) ->     end.  -spec get_attribute_modifiers (type()) -> list(attribute_entry()). -get_attribute_modifiers (Omnimods) -> lists:to_list(Omnimods#omnimods.attmods). +get_attribute_modifiers (Omnimods) -> dict:to_list(Omnimods#omnimods.attmods).  -spec get_attack_modifiers (type()) -> list(damage_type_entry()). -get_attack_modifiers (Omnimods) -> lists:to_list(Omnimods#omnimods.atkmods). +get_attack_modifiers (Omnimods) -> dict:to_list(Omnimods#omnimods.atkmods).  -spec get_defense_modifiers (type()) -> list(damage_type_entry()). -get_defense_modifiers (Omnimods) -> lists:to_list(Omnimods#omnimods.defmods). +get_defense_modifiers (Omnimods) -> dict:to_list(Omnimods#omnimods.defmods).  %%% Export | 


