summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-02-21 11:31:44 +0100 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-02-21 11:31:44 +0100 |
commit | c98c0bfeec263b4362a9e9dc368c837c1675ce2a (patch) | |
tree | 6df65966375ea19054a099fe9517ce7fcc7b886a | |
parent | e1d1d05e72300905b03a787dd83ae62abb64caa8 (diff) |
Now displays active weapon and scale w/ str.
-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) + ) + ) ] ) ] |