| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/struct/weapon.erl')
| -rw-r--r-- | src/struct/weapon.erl | 27 | 
1 files changed, 25 insertions, 2 deletions
| diff --git a/src/struct/weapon.erl b/src/struct/weapon.erl index add445a..ca74ada 100644 --- a/src/struct/weapon.erl +++ b/src/struct/weapon.erl @@ -23,7 +23,8 @@  -export  (     [ -      get_id/1 +      get_id/1, +      random_id/0     ]  ). @@ -32,7 +33,8 @@     [        from_id/1,        get_ranges/1, -      get_damages/1 +      get_damages/1, +      apply_to_attributes/2     ]  ). @@ -285,3 +287,24 @@ from_id (24) ->        damage_type = pierce,        damage_mod = heavy     }. + +random_id () -> +   roll:between(0, 24). + +apply_to_attributes (Attributes, Weapon) -> +   Dexterity = attributes:get_dexterity(Attributes), +   Speed = attributes:get_dexterity(Attributes), +   RangeModifier = Weapon#weapon.range_mod, +   DamageModifier = Weapon#weapon.damage_mod, +   WithRangeModifier = +      case RangeModifier of +         long -> +            attributes:set_dexterity(max(0, (Dexterity - 20)), Attributes); +         _ -> Attributes +      end, +   case DamageModifier of +      heavy -> +         attributes:set_speed(max(0, (Speed - 20)), WithRangeModifier); +      _ -> WithRangeModifier +   end. + | 


