summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-02-21 11:31:44 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-02-21 11:31:44 +0100
commitc98c0bfeec263b4362a9e9dc368c837c1675ce2a (patch)
tree6df65966375ea19054a099fe9517ce7fcc7b886a
parente1d1d05e72300905b03a787dd83ae62abb64caa8 (diff)
Now displays active weapon and scale w/ str.
-rw-r--r--src/battlemap/src/Struct/Statistics.elm114
-rw-r--r--src/battlemap/src/Struct/Weapon.elm28
-rw-r--r--src/battlemap/src/View/SideBar/TabMenu/Status/CharacterInfo.elm66
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)
+ )
+ )
]
)
]