summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-08-28 23:29:55 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-08-28 23:29:55 +0200 |
commit | 9b424b11dbea33a41b2129daf232557515de9db1 (patch) | |
tree | 97cbe449c02e4273c79448859ceac722a06524b1 /src/shared/struct/shr_attributes.erl | |
parent | 68d3f1d7fd3703a8aef68bd6e9f89a84eab5e539 (diff) |
Still propagating the changes...
It'll require the attributes and statistics being recalculated every
time a character is used, which isn't great. Can't exactly avoid it
though: moving and changing weapon are both likely to alter them, and
people rarely attack without doing one or the other.
Diffstat (limited to 'src/shared/struct/shr_attributes.erl')
-rw-r--r-- | src/shared/struct/shr_attributes.erl | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/src/shared/struct/shr_attributes.erl b/src/shared/struct/shr_attributes.erl index 23824e4..c402e74 100644 --- a/src/shared/struct/shr_attributes.erl +++ b/src/shared/struct/shr_attributes.erl @@ -46,7 +46,9 @@ set_unsafe_intelligence/2, set_unsafe_mind/2, set_unsafe_speed/2, - set_unsafe_strength/2 + set_unsafe_strength/2, + + apply_mod/3 ] ). @@ -54,7 +56,7 @@ -export ( [ - random/0 + default/0 ] ). @@ -64,6 +66,28 @@ -spec make_safe (integer()) -> non_neg_integer(). make_safe (Val) -> max(0, min(100, Val)). +-spec mod_unsafe_constitution (integer(), type()) -> type(). +mod_unsafe_constitution (Val, Att) -> + set_constitution(make_safe(get_constitution(Att) + Val), Att). + +-spec mod_unsafe_dexterity (integer(), type()) -> type(). +mod_unsafe_dexterity (Val, Att) -> + set_dexterity(make_safe(get_dexterity(Att) + Val), Att). + +-spec mod_unsafe_intelligence (integer(), type()) -> type(). +mod_unsafe_intelligence (Val, Att) -> + set_intelligence(make_safe(get_intelligence(Att) + Val), Att). + +-spec mod_unsafe_mind (integer(), type()) -> type(). +mod_unsafe_mind (Val, Att) -> set_mind(make_safe(get_mind(Att) + Val), Att). + +-spec mod_unsafe_speed (integer(), type()) -> type(). +mod_unsafe_speed (Val, Att) -> set_speed(make_safe(get_speed(Att) + Val), Att). + +-spec mod_unsafe_strength (integer(), type()) -> type(). +mod_unsafe_strength (Val, Att) -> + set_strength(make_safe(get_strength(Att) + Val), Att). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -122,14 +146,22 @@ set_unsafe_speed (Val, Att) -> set_speed(make_safe(Val), Att). -spec set_unsafe_strength (integer(), type()) -> type(). set_unsafe_strength (Val, Att) -> set_strength(make_safe(Val), Att). --spec random () -> type(). -random () -> +-spec default () -> type(). +default () -> #attributes { - constitution = shr_roll:percentage(), - dexterity = shr_roll:percentage(), - intelligence = shr_roll:percentage(), - mind = shr_roll:percentage(), - speed = shr_roll:percentage(), - strength = shr_roll:percentage() + constitution = 50, + dexterity = 50, + intelligence = 50, + mind = 50, + speed = 50, + strength = 50 }. + +-spec apply_mod (atom(), integer(), type()) -> type(). +apply_mod (con, Value, Att) -> mod_unsafe_constitution(Value, Att); +apply_mod (dex, Value, Att) -> mod_unsafe_dexterity(Value, Att); +apply_mod (int, Value, Att) -> mod_unsafe_intelligence(Value, Att); +apply_mod (min, Value, Att) -> mod_unsafe_mind(Value, Att); +apply_mod (spe, Value, Att) -> mod_unsafe_speed(Value, Att); +apply_mod (str, Value, Att) -> mod_unsafe_strength(Value, Att). |