summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-06-14 10:25:55 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-06-14 10:25:55 +0200 |
commit | 182462aaf6b2b02c5feabb86810402368149cfcf (patch) | |
tree | 0e560d5c634ab9c937d315db6e0ce76d94c3efc0 /src/shared/battle/Battle/Struct | |
parent | 158c04ad2ece69aeeb5bf812ec81bd85c3a8128e (diff) |
Removes all references to attributes.
Diffstat (limited to 'src/shared/battle/Battle/Struct')
-rw-r--r-- | src/shared/battle/Battle/Struct/Attributes.elm | 204 | ||||
-rw-r--r-- | src/shared/battle/Battle/Struct/Omnimods.elm | 33 | ||||
-rw-r--r-- | src/shared/battle/Battle/Struct/Statistics.elm | 146 |
3 files changed, 43 insertions, 340 deletions
diff --git a/src/shared/battle/Battle/Struct/Attributes.elm b/src/shared/battle/Battle/Struct/Attributes.elm deleted file mode 100644 index 9d83bef..0000000 --- a/src/shared/battle/Battle/Struct/Attributes.elm +++ /dev/null @@ -1,204 +0,0 @@ -module Battle.Struct.Attributes exposing - ( - Type, - Category(..), - get_constitution, - get_dexterity, - get_intelligence, - get_mind, - get_speed, - get_strength, - get_effective_constitution, - get_effective_dexterity, - get_effective_intelligence, - get_effective_mind, - get_effective_speed, - get_effective_strength, - mod_constitution, - mod_dexterity, - mod_intelligence, - mod_mind, - mod_speed, - mod_strength, - mod, - get, - new, - decode_category, - encode_category, - default - ) - --------------------------------------------------------------------------------- --- TYPES ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -type Category = - Constitution - | Dexterity - | Intelligence - | Mind - | Speed - | Strength - -type alias Type = - { - constitution : Int, - dexterity : Int, - intelligence : Int, - mind : Int, - speed : Int, - strength : Int - } - --------------------------------------------------------------------------------- --- LOCAL ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -get_within_range : Int -> Int -> Int -> Int -get_within_range vmin vmax v = (min vmax (max vmin v)) - -get_within_att_range : Int -> Int -get_within_att_range v = (get_within_range 0 100 v) - --------------------------------------------------------------------------------- --- EXPORTED -------------------------------------------------------------------- --------------------------------------------------------------------------------- -get_constitution : Type -> Int -get_constitution t = t.constitution - -get_dexterity : Type -> Int -get_dexterity t = t.dexterity - -get_intelligence : Type -> Int -get_intelligence t = t.intelligence - -get_mind : Type -> Int -get_mind t = t.mind - -get_speed : Type -> Int -get_speed t = t.speed - -get_strength : Type -> Int -get_strength t = t.strength - -get_effective_constitution : Type -> Int -get_effective_constitution t = (get_within_att_range t.constitution) - -get_effective_dexterity : Type -> Int -get_effective_dexterity t = (get_within_att_range t.dexterity) - -get_effective_intelligence : Type -> Int -get_effective_intelligence t = (get_within_att_range t.intelligence) - -get_effective_mind : Type -> Int -get_effective_mind t = (get_within_att_range t.mind) - -get_effective_speed : Type -> Int -get_effective_speed t = (get_within_att_range t.speed) - -get_effective_strength : Type -> Int -get_effective_strength t = (get_within_att_range t.strength) - -mod_constitution : Int -> Type -> Type -mod_constitution i t = - {t | - constitution = (i + t.constitution) - } - -mod_dexterity : Int -> Type -> Type -mod_dexterity i t = - {t | - dexterity = (i + t.dexterity) - } - -mod_intelligence : Int -> Type -> Type -mod_intelligence i t = - {t | - intelligence = (i + t.intelligence) - } - -mod_mind : Int -> Type -> Type -mod_mind i t = - {t | - mind = (i + t.mind) - } - -mod_speed : Int -> Type -> Type -mod_speed i t = - {t | - speed = (i + t.speed) - } - -mod_strength : Int -> Type -> Type -mod_strength i t = - {t | - strength = (i + t.strength) - } - -mod : Category -> Int -> Type -> Type -mod cat i t = - case cat of - Constitution -> (mod_constitution i t) - Dexterity -> (mod_dexterity i t) - Intelligence -> (mod_intelligence i t) - Mind -> (mod_mind i t) - Speed -> (mod_speed i t) - Strength -> (mod_strength i t) - -get : Category -> Type -> Int -get cat t = - case cat of - Constitution -> (get_constitution t) - Dexterity -> (get_dexterity t) - Intelligence -> (get_intelligence t) - Mind -> (get_mind t) - Speed -> (get_speed t) - Strength -> (get_strength t) - -new : ( - Int -> -- constitution - Int -> -- dexterity - Int -> -- intelligence - Int -> -- mind - Int -> -- speed - Int -> -- strength - Type - ) -new con dex int min spe str = - { - constitution = con, - dexterity = dex, - intelligence = int, - mind = min, - speed = spe, - strength = str - } - -default : Type -default = - { - constitution = 50, - dexterity = 50, - intelligence = 50, - mind = 50, - speed = 50, - strength = 50 - } - -decode_category : String -> Category -decode_category str = - case str of - "con" -> Constitution - "dex" -> Dexterity - "int" -> Intelligence - "min" -> Mind - "spe" -> Speed - _ -> Strength - -encode_category : Category -> String -encode_category cat = - case cat of - Constitution -> "con" - Dexterity -> "dex" - Intelligence -> "int" - Mind -> "min" - Speed -> "spe" - Strength -> "str" diff --git a/src/shared/battle/Battle/Struct/Omnimods.elm b/src/shared/battle/Battle/Struct/Omnimods.elm index fd0088b..92bf636 100644 --- a/src/shared/battle/Battle/Struct/Omnimods.elm +++ b/src/shared/battle/Battle/Struct/Omnimods.elm @@ -4,11 +4,9 @@ module Battle.Struct.Omnimods exposing new, merge, none, - apply_to_attributes, apply_to_statistics, get_attack_damage, get_damage_sum, - get_attributes_mods, get_statistics_mods, get_attack_mods, get_defense_mods, @@ -24,7 +22,6 @@ import Json.Decode import Json.Decode.Pipeline -- Battle ---------------------------------------------------------------------- -import Battle.Struct.Attributes import Battle.Struct.Statistics import Battle.Struct.DamageType @@ -33,7 +30,6 @@ import Battle.Struct.DamageType -------------------------------------------------------------------------------- type alias Type = { - attributes : (Dict.Dict String Int), statistics : (Dict.Dict String Int), attack : (Dict.Dict String Int), defense : (Dict.Dict String Int) @@ -88,7 +84,6 @@ decoder : (Json.Decode.Decoder Type) decoder = (Json.Decode.succeed Type - |> (Json.Decode.Pipeline.required "attm" generic_mods_decoder) |> (Json.Decode.Pipeline.required "stam" generic_mods_decoder) |> (Json.Decode.Pipeline.required "atkm" generic_mods_decoder) |> (Json.Decode.Pipeline.required "defm" generic_mods_decoder) @@ -98,12 +93,10 @@ new : ( (List (String, Int)) -> (List (String, Int)) -> (List (String, Int)) -> - (List (String, Int)) -> Type ) -new attribute_mods statistic_mods attack_mods defense_mods = +new statistic_mods attack_mods defense_mods = { - attributes = (Dict.fromList attribute_mods), statistics = (Dict.fromList statistic_mods), attack = (Dict.fromList attack_mods), defense = (Dict.fromList defense_mods) @@ -112,7 +105,6 @@ new attribute_mods statistic_mods attack_mods defense_mods = none : Type none = { - attributes = (Dict.empty), statistics = (Dict.empty), attack = (Dict.empty), defense = (Dict.empty) @@ -121,27 +113,11 @@ none = merge : Type -> Type -> Type merge omni_a omni_b = { - attributes = (merge_mods omni_a.attributes omni_b.attributes), statistics = (merge_mods omni_a.statistics omni_b.statistics), attack = (merge_mods omni_a.attack omni_b.attack), defense = (merge_mods omni_a.defense omni_b.defense) } -apply_to_attributes : ( - Type -> - Battle.Struct.Attributes.Type - -> Battle.Struct.Attributes.Type - ) -apply_to_attributes omnimods attributes = - (Dict.foldl - ( - (Battle.Struct.Attributes.decode_category) - >> (Battle.Struct.Attributes.mod) - ) - attributes - omnimods.attributes - ) - apply_to_statistics : ( Type -> Battle.Struct.Statistics.Type -> @@ -201,16 +177,12 @@ get_attack_damage dmg_modifier atk_omni def_omni = scale : Float -> Type -> Type scale multiplier omnimods = {omnimods | - attributes = (Dict.map (scale_dict_value multiplier) omnimods.attributes), statistics = (Dict.map (scale_dict_value multiplier) omnimods.statistics), attack = (Dict.map (scale_dict_value multiplier) omnimods.attack), defense = (Dict.map (scale_dict_value multiplier) omnimods.defense) } -get_attributes_mods : Type -> (List (String, Int)) -get_attributes_mods omnimods = (Dict.toList omnimods.attributes) - get_statistics_mods : Type -> (List (String, Int)) get_statistics_mods omnimods = (Dict.toList omnimods.statistics) @@ -223,8 +195,7 @@ get_defense_mods omnimods = (Dict.toList omnimods.defense) get_all_mods : Type -> (List (String, Int)) get_all_mods omnimods = ( - (get_attributes_mods omnimods) - ++ (get_statistics_mods omnimods) + (get_statistics_mods omnimods) ++ (get_attack_mods omnimods) ++ (get_defense_mods omnimods) ) diff --git a/src/shared/battle/Battle/Struct/Statistics.elm b/src/shared/battle/Battle/Struct/Statistics.elm index 9847f1c..74eea8d 100644 --- a/src/shared/battle/Battle/Struct/Statistics.elm +++ b/src/shared/battle/Battle/Struct/Statistics.elm @@ -10,19 +10,17 @@ module Battle.Struct.Statistics exposing get_double_hits, get_critical_hits, get_damage_modifier, + get_damage_multiplier, decode_category, encode_category, mod, - new_raw, + default, is_percent ) -- Elm ------------------------------------------------------------------------- import List --- Battle ---------------------------------------------------------------------- -import Battle.Struct.Attributes - -------------------------------------------------------------------------------- -- TYPES ----------------------------------------------------------------------- -------------------------------------------------------------------------------- @@ -34,6 +32,7 @@ type Category = | Accuracy | DoubleHits | CriticalHits + | DamageModifier type alias Type = { @@ -44,120 +43,71 @@ type alias Type = accuracy : Int, double_hits : Int, critical_hits : Int, - damage_modifier : Float + damage_modifier : Int } -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- -average : (List Int) -> Float -average l = ((toFloat (List.sum l)) / (toFloat (List.length l))) - -float_to_int : Float -> Int -float_to_int f = - (ceiling f) - -gentle_squared_growth : Int -> Int -gentle_squared_growth v = (float_to_int (((toFloat v)^1.8)/20.0)) - -gentle_squared_growth_f : Float -> Int -gentle_squared_growth_f v = (float_to_int ((v^1.8)/20.0)) - -sudden_squared_growth : Int -> Int -sudden_squared_growth v = (float_to_int (((toFloat v)^2.5)/1000.0)) - -sudden_squared_growth_f : Float -> Int -sudden_squared_growth_f v = (float_to_int ((v^2.5)/1000.0)) - -sudden_exp_growth : Int -> Int -sudden_exp_growth v = (float_to_int (4.0^((toFloat v)/25.0))) - -sudden_exp_growth_f : Float -> Int -sudden_exp_growth_f f = (float_to_int (4.0^(f/25.0))) - -damage_base_mod : Float -> Float -damage_base_mod str = ((((str + 10) * 4)^1.5)/3000.0) - -make_movement_points_safe : Int -> Int -make_movement_points_safe val = (clamp 0 200 val) - -make_max_health_safe : Int -> Int -make_max_health_safe val = (max 1 val) - -make_dodges_safe : Int -> Int -make_dodges_safe val = (clamp 0 100 val) - -make_parries_safe : Int -> Int -make_parries_safe val = (clamp 0 75 val) - -make_accuracy_safe : Int -> Int -make_accuracy_safe val = (clamp 0 100 val) - -make_double_hits_safe : Int -> Int -make_double_hits_safe val = (clamp 0 100 val) - -make_critical_hits_safe : Int -> Int -make_critical_hits_safe val = (clamp 0 100 val) - mod_movement_points : Int -> Type -> Type mod_movement_points v t = {t | - movement_points = (make_movement_points_safe (t.movement_points + v)) + movement_points = (t.movement_points + v) } mod_max_health : Int -> Type -> Type mod_max_health v t = {t | - max_health = (make_max_health_safe (t.max_health + v)) + max_health = (t.max_health + v) } mod_dodges : Int -> Type -> Type -mod_dodges v t = {t | dodges = (make_dodges_safe (t.dodges + v))} +mod_dodges v t = {t | dodges = (t.dodges + v)} mod_parries : Int -> Type -> Type -mod_parries v t = {t | parries = (make_parries_safe (t.parries + v))} +mod_parries v t = {t | parries = (t.parries + v)} mod_accuracy : Int -> Type -> Type -mod_accuracy v t = {t | accuracy = (make_accuracy_safe (t.accuracy + v))} +mod_accuracy v t = {t | accuracy = (t.accuracy + v)} mod_double_hits : Int -> Type -> Type -mod_double_hits v t = - {t | - double_hits = (make_double_hits_safe (t.double_hits + v)) - } +mod_double_hits v t = {t | double_hits = (t.double_hits + v)} mod_critical_hits : Int -> Type -> Type -mod_critical_hits v t = - {t | - critical_hits = (make_critical_hits_safe (t.critical_hits + v)) - } +mod_critical_hits v t = {t | critical_hits = (t.critical_hits + v)} + +mod_damage_modifier : Int -> Type -> Type +mod_damage_modifier v t = {t | damage_modifier = (t.damage_modifier + v)} -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- get_movement_points : Type -> Int -get_movement_points t = t.movement_points +get_movement_points t = (max 0 t.movement_points) get_max_health : Type -> Int -get_max_health t = t.max_health +get_max_health t = (max 1 t.max_health) get_dodges : Type -> Int -get_dodges t = t.dodges +get_dodges t = (max 0 t.dodges) get_parries : Type -> Int -get_parries t = t.parries +get_parries t = (max 0 t.parries) get_accuracy : Type -> Int -get_accuracy t = t.accuracy +get_accuracy t = (max 0 t.accuracy) get_double_hits : Type -> Int -get_double_hits t = t.double_hits +get_double_hits t = (max 0 t.double_hits) get_critical_hits : Type -> Int -get_critical_hits t = t.critical_hits +get_critical_hits t = (max 0 t.critical_hits) -get_damage_modifier : Type -> Float -get_damage_modifier t = t.damage_modifier +get_damage_modifier : Type -> Int +get_damage_modifier t = (max 0 t.damage_modifier) + +get_damage_multiplier : Type -> Float +get_damage_multiplier t = ((toFloat (max 0 t.damage_modifier)) / 100.0) mod : Category -> Int -> Type -> Type mod cat v t = @@ -169,36 +119,20 @@ mod cat v t = Accuracy -> (mod_accuracy v t) DoubleHits -> (mod_double_hits v t) CriticalHits -> (mod_critical_hits v t) + DamageModifier -> (mod_damage_modifier v t) -new_raw : (Battle.Struct.Attributes.Type -> Type) -new_raw att = - let - constitution = (Battle.Struct.Attributes.get_effective_constitution att) - dexterity = (Battle.Struct.Attributes.get_effective_dexterity att) - intelligence = (Battle.Struct.Attributes.get_effective_intelligence att) - mind = (Battle.Struct.Attributes.get_effective_mind att) - speed = (Battle.Struct.Attributes.get_effective_speed att) - strength = (Battle.Struct.Attributes.get_effective_strength att) - in - { - movement_points = - (gentle_squared_growth_f - (average [mind, constitution, constitution, speed, speed, speed]) - ), - max_health = - (gentle_squared_growth_f - (average [constitution, constitution, constitution, mind]) - ), - dodges = (sudden_exp_growth_f (average [dexterity, mind, speed])), - parries = - (sudden_exp_growth_f - (average [dexterity, intelligence, speed, strength]) - ), - accuracy = (sudden_squared_growth dexterity), - double_hits = (sudden_squared_growth_f (average [mind, speed])), - critical_hits = (sudden_squared_growth intelligence), - damage_modifier = (damage_base_mod (toFloat strength)) - } +default : Type +default = + { + movement_points = 0, + max_health = 1, + dodges = 0, + parries = 0, + accuracy = 0, + double_hits = 0, + critical_hits = 0, + damage_modifier = 0 + } decode_category : String -> Category decode_category str = @@ -209,6 +143,7 @@ decode_category str = "pary" -> Parries "accu" -> Accuracy "dhit" -> DoubleHits + "dmgm" -> DamageModifier _ -> CriticalHits encode_category : Category -> String @@ -221,6 +156,7 @@ encode_category cat = Accuracy -> "accu" DoubleHits -> "dhit" CriticalHits -> "crit" + DamageModifier -> "dmgm" is_percent : Category -> Bool is_percent cat = ((cat /= MaxHealth) && (cat /= MovementPoints)) |