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 |