| summaryrefslogtreecommitdiff | 
diff options
| -rw-r--r-- | src/battlemap/src/Struct/Statistics.elm | 114 | ||||
| -rw-r--r-- | src/battlemap/src/Struct/Weapon.elm | 28 | ||||
| -rw-r--r-- | src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm | 66 | 
3 files changed, 158 insertions, 50 deletions
| diff --git a/src/battlemap/src/Struct/Statistics.elm b/src/battlemap/src/Struct/Statistics.elm index 99bcd8d..88c64bc 100644 --- a/src/battlemap/src/Struct/Statistics.elm +++ b/src/battlemap/src/Struct/Statistics.elm @@ -18,6 +18,7 @@ import List  -- Battlemap -------------------------------------------------------------------  import Struct.Attributes +import Struct.Weapon  import Struct.WeaponSet  -------------------------------------------------------------------------------- @@ -64,6 +65,14 @@ already_high_slow_growth v =        (30.0 * (logBase 10.0 (((toFloat v) + 5.0)/4.0)))     ) +-- FIXME: Bad scaling. +damage_base_mod : Float -> Float +damage_base_mod str = ((str - 50.0)/75.0) + +apply_damage_base_mod : Float -> Float -> Int +apply_damage_base_mod bmod dmg = +   (max 0 (float_to_int (dmg + (bmod * dmg)))) +  --------------------------------------------------------------------------------  -- EXPORTED --------------------------------------------------------------------  -------------------------------------------------------------------------------- @@ -100,53 +109,66 @@ new : (        Type     )  new att wp_set = -   { -      movement_points = -         (gentle_squared_growth (Struct.Attributes.get_speed att)), -      max_health = -         (gentle_squared_growth (Struct.Attributes.get_constitution att)), -      dodges = -         (clamp -            5 -            75 -            (sudden_exp_growth_f -               (average -                  [ -                     (Struct.Attributes.get_dexterity att), -                     (Struct.Attributes.get_mind att), -                     (Struct.Attributes.get_speed att) -                  ] +   let +      active_weapon = (Struct.WeaponSet.get_active_weapon wp_set) +      dmg_bmod = +         (damage_base_mod (toFloat (Struct.Attributes.get_strength att))) +   in +      { +         movement_points = +            (gentle_squared_growth (Struct.Attributes.get_speed att)), +         max_health = +            (gentle_squared_growth (Struct.Attributes.get_constitution att)), +         dodges = +            (clamp +               5 +               75 +               (sudden_exp_growth_f +                  (average +                     [ +                        (Struct.Attributes.get_dexterity att), +                        (Struct.Attributes.get_mind att), +                        (Struct.Attributes.get_speed att) +                     ] +                  )                 ) -            ) -         ), -      parries = -         (clamp -            0 -            75 -            (sudden_exp_growth_f -               (average -                  [ -                     (Struct.Attributes.get_dexterity att), -                     (Struct.Attributes.get_speed att), -                     (Struct.Attributes.get_strength att) -                  ] +            ), +         parries = +            (clamp +               0 +               75 +               (sudden_exp_growth_f +                  (average +                     [ +                        (Struct.Attributes.get_dexterity att), +                        (Struct.Attributes.get_speed att), +                        (Struct.Attributes.get_strength att) +                     ] +                  )                 ) +            ), +         damage_min = +            (apply_damage_base_mod +               dmg_bmod +               (toFloat (Struct.Weapon.get_min_damage active_weapon)) +            ), +         damage_max = +            (apply_damage_base_mod +               dmg_bmod +               (toFloat (Struct.Weapon.get_max_damage active_weapon)) +            ), +         accuracy = +            (already_high_slow_growth (Struct.Attributes.get_dexterity att)), +         double_hits = +            (clamp +               0 +               100 +               (sudden_squared_growth (Struct.Attributes.get_speed att)) +            ), +         critical_hits = +            (clamp +               0 +               100 +               (sudden_squared_growth (Struct.Attributes.get_intelligence att))              ) -         ), -      damage_min = 0, -      damage_max = 100, -      accuracy = -         (already_high_slow_growth (Struct.Attributes.get_dexterity att)), -      double_hits = -         (clamp -            0 -            100 -            (sudden_squared_growth (Struct.Attributes.get_speed att)) -         ), -      critical_hits = -         (clamp -            0 -            100 -            (sudden_squared_growth (Struct.Attributes.get_intelligence att)) -         )     } diff --git a/src/battlemap/src/Struct/Weapon.elm b/src/battlemap/src/Struct/Weapon.elm index 5fcd03e..02afb22 100644 --- a/src/battlemap/src/Struct/Weapon.elm +++ b/src/battlemap/src/Struct/Weapon.elm @@ -6,8 +6,15 @@ module Struct.Weapon exposing        DamageType(..),        DamageModifier(..),        new, +      get_name, +      get_range_type, +      get_range_modifier, +      get_damage_type, +      get_damage_modifier,        get_max_range,        get_min_range, +      get_max_damage, +      get_min_damage,        apply_to_attributes     ) @@ -97,12 +104,33 @@ new        dmg_max = dmg_max     } +get_name : Type -> String +get_name wp = wp.name + +get_range_type : Type -> RangeType +get_range_type wp = wp.range_type + +get_range_modifier : Type -> RangeModifier +get_range_modifier wp = wp.range_mod + +get_damage_type : Type -> DamageType +get_damage_type wp = wp.dmg_type + +get_damage_modifier : Type -> DamageModifier +get_damage_modifier wp = wp.dmg_mod +  get_max_range : Type -> Int  get_max_range wp = wp.range_max  get_min_range : Type -> Int  get_min_range wp = wp.range_min +get_max_damage : Type -> Int +get_max_damage wp = wp.dmg_max + +get_min_damage : Type -> Int +get_min_damage wp = wp.dmg_min +  apply_to_attributes : Type -> Struct.Attributes.Type -> Struct.Attributes.Type  apply_to_attributes wp atts =     case (wp.range_mod, wp.dmg_mod) of diff --git a/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm b/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm index 3509e3c..ed9e381 100644 --- a/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm +++ b/src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm @@ -11,6 +11,7 @@ import Struct.Event  import Struct.Model  import Struct.Statistics  import Struct.Weapon +import Struct.WeaponSet  --------------------------------------------------------------------------------  -- LOCAL ----------------------------------------------------------------------- @@ -131,7 +132,7 @@ get_statistics_html stats =              [                 (Html.text                    ( -                     "Damage: [" +                     "Actual Damage: ["                       ++ (toString (Struct.Statistics.get_damage_min stats))                       ++ ", "                       ++ (toString (Struct.Statistics.get_damage_max stats)) @@ -193,7 +194,60 @@ get_weapon_html wp =              [                 (Html.text                    ( -                     "" +                     (Struct.Weapon.get_name wp) +                     ++ " (" +                     ++ +                     (case (Struct.Weapon.get_range_modifier wp) of +                        Struct.Weapon.Short -> "Short" +                        Struct.Weapon.Long -> "Long" +                     ) +                     ++ " " +                     ++ +                     (case (Struct.Weapon.get_damage_modifier wp) of +                        Struct.Weapon.Heavy -> "Heavy" +                        Struct.Weapon.Light -> "Light" +                     ) +                     ++ " " +                     ++ +                     (case (Struct.Weapon.get_range_type wp) of +                        Struct.Weapon.Ranged -> "Ranged" +                        Struct.Weapon.Melee -> "Melee" +                     ) +                     ++ ")" +                  ) +               ) +            ] +         ), +         (Html.li +            [] +            [ +               (Html.text +                  ( +                     "Damage: [" +                     ++ (toString (Struct.Weapon.get_min_damage wp)) +                     ++ ", " +                     ++ (toString (Struct.Weapon.get_max_damage wp)) +                     ++ "] " +                     ++ +                     (case (Struct.Weapon.get_damage_type wp) of +                        Struct.Weapon.Slash -> "Slashing" +                        Struct.Weapon.Pierce -> "Piercing" +                        Struct.Weapon.Blunt -> "Bludgeoning" +                     ) +                  ) +               ) +            ] +         ), +         (Html.li +            [] +            [ +               (Html.text +                  ( +                     "Range: [" +                     ++ (toString (Struct.Weapon.get_min_range wp)) +                     ++ ", " +                     ++ (toString (Struct.Weapon.get_max_range wp)) +                     ++ "]"                    )                 )              ] @@ -264,11 +318,15 @@ get_html model char =                       )                    ]                 ), -               (Html.dt [] [(Html.text "Attack Range")]), +               (Html.dt [] [(Html.text "Active Weapon:")]),                 (Html.dd                    []                    [ -                     (Html.text "???") +                     (get_weapon_html +                        (Struct.WeaponSet.get_active_weapon +                           (Struct.Character.get_weapons char) +                        ) +                     )                    ]                 )              ] | 


