summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle')
-rw-r--r--src/battle/src/Struct/Armor.elm32
-rw-r--r--src/battle/src/Struct/Omnimods.elm110
2 files changed, 63 insertions, 79 deletions
diff --git a/src/battle/src/Struct/Armor.elm b/src/battle/src/Struct/Armor.elm
index a086dee..659f2c3 100644
--- a/src/battle/src/Struct/Armor.elm
+++ b/src/battle/src/Struct/Armor.elm
@@ -6,6 +6,7 @@ module Struct.Armor exposing
get_id,
get_name,
get_image_id,
+ get_omnimods,
decoder,
none
)
@@ -14,9 +15,8 @@ module Struct.Armor exposing
import Json.Decode
import Json.Decode.Pipeline
--- Map -------------------------------------------------------------------
-import Struct.Attributes
-import Struct.Weapon
+-- Battle ----------------------------------------------------------------------
+import Struct.Omnimods
--------------------------------------------------------------------------------
-- TYPES -----------------------------------------------------------------------
@@ -24,7 +24,8 @@ import Struct.Weapon
type alias Type =
{
id : Int,
- name : String
+ name : String,
+ omnimods : Struct.Omnimods.Type
}
type alias Ref = Int
@@ -36,11 +37,12 @@ type alias Ref = Int
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
-new : Int -> String -> Type
-new id name =
+new : Int -> String -> Struct.Omnimods.Type -> Type
+new id name omnimods =
{
id = id,
- name = name
+ name = name,
+ omnimods = omnimods
}
get_id : Type -> Ref
@@ -52,17 +54,17 @@ get_name ar = ar.name
get_image_id : Type -> String
get_image_id ar = (toString ar.id)
+get_omnimods : Type -> Struct.Omnimods.Type
+get_omnimods ar = ar.omnimods
decoder : (Json.Decode.Decoder Type)
decoder =
- (Json.Decode.map
- (finish_decoding)
- (Json.Decode.Pipeline.decode
- PartiallyDecoded
- |> (Json.Decode.Pipeline.required "id" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "nam" Json.Decode.string)
- )
+ (Json.Decode.Pipeline.decode
+ Type
+ |> (Json.Decode.Pipeline.required "id" Json.Decode.int)
+ |> (Json.Decode.Pipeline.required "nam" Json.Decode.string)
+ |> (Json.Decode.Pipeline.required "omni" Struct.Omnimods.decoder)
)
none : Type
-none = (new 0 "None")
+none = (new 0 "None" (Struct.Omnimods.new [] [] [] []))
diff --git a/src/battle/src/Struct/Omnimods.elm b/src/battle/src/Struct/Omnimods.elm
index 2b8088f..1420f6b 100644
--- a/src/battle/src/Struct/Omnimods.elm
+++ b/src/battle/src/Struct/Omnimods.elm
@@ -25,10 +25,10 @@ import Struct.DamageType
--------------------------------------------------------------------------------
type alias Type =
{
- attributes : (Dict.Dict Struct.Attributes.Category Int),
- statistics : (Dict.Dict Struct.Statistics.Category Int),
- attack : (Dict.Dict Struct.DamageType.Type Int),
- defense : (Dict.Dict Struct.DamageType.Type Int)
+ attributes : (Dict.Dict String Int),
+ statistics : (Dict.Dict String Int),
+ attack : (Dict.Dict String Int),
+ defense : (Dict.Dict String Int)
}
type alias GenericMod =
@@ -39,67 +39,35 @@ type alias GenericMod =
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
-generic_mod_decoder : (Json.Decode.Decoder GenericMod)
-generic_mod_decoder =
- (Json.Decode.Pipeline.decode
- GenericMod
- |> (Json.Decode.Pipeline.required "t" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "v" Json.Decode.int)
- )
-
-generic_mod_to_attribute_mod : GenericMod -> (Struct.Attributes.Category, Int)
-generic_mod_to_attribute_mod genm =
- ((Struct.Attributes.decode_category genm.t), genm.v)
-
-attribute_mods_decoder : (
- (Json.Decode.Decoder (Dict.Dict Struct.Attributes.Category Int))
- )
-attribute_mods_decoder =
+generic_mods_decoder : (Json.Decode.Decoder (Dict.Dict String Int))
+generic_mods_decoder =
(Json.Decode.map
(Dict.fromList)
(Json.Decode.list
- (Json.Decode.map (generic_mod_to_attribute_mod) generic_mod_decoder)
- )
- )
-
-generic_mod_to_statistic_mod : GenericMod -> (Struct.Attributes.Category, Int)
-generic_mod_to_statistic_mod genm =
- ((Struct.Statistics.decode_category genm.t), genm.v)
-
-statistic_mods_decoder : (
- (Json.Decode.Decoder (Dict.Dict Struct.Statistics.Category Int))
- )
-statistic_mods_decoder =
- (Json.Decode.map
- (Dict.fromList)
- (Json.Decode.list
- (Json.Decode.map (generic_mod_to_statistic_mod) generic_mod_decoder)
+ (Json.Decode.map
+ (\gm -> (gm.t, gm.v))
+ (Json.Decode.Pipeline.decode
+ GenericMod
+ |> (Json.Decode.Pipeline.required "t" Json.Decode.string)
+ |> (Json.Decode.Pipeline.required "v" Json.Decode.int)
+ )
+ )
)
)
-generic_mod_to_damage_mod : GenericMod -> (Struct.DamageType.Type, Int)
-generic_mod_to_damage_mod genm =
- ((Struct.DamageType.decode genm.t), genm.v)
-
-damage_mods_decoder : (
- (Json.Decode.Decoder (Dict.Dict Struct.DamageType.Type Int))
+merge_mods : (
+ (Dict.Dict String Int) ->
+ (Dict.Dict String Int) ->
+ (Dict.Dict String Int)
)
-damage_mods_decoder =
- (Json.Decode.map
- (Dict.fromList)
- (Json.Decode.list
- (Json.Decode.map (generic_mod_to_damage_mod) generic_mod_decoder)
- )
- )
-
-merge_mods : (Dict.Dict a Int) -> (Dict.Dict a Int) -> (Dict.Dict a Int)
merge_mods a_mods b_mods =
(Dict.merge
(Dict.insert)
- (\t -> \v_a -> \v_b -> (Dict.insert t (v_a + v_b)))
+ (\t -> \v_a -> \v_b -> \r -> (Dict.insert t (v_a + v_b) r))
(Dict.insert)
a_mods
b_mods
+ (Dict.empty)
)
--------------------------------------------------------------------------------
@@ -109,17 +77,17 @@ decoder : (Json.Decode.Decoder Type)
decoder =
(Json.Decode.Pipeline.decode
Type
- |> (Json.Decode.Pipeline.required "attm" attribute_mods_decoder)
- |> (Json.Decode.Pipeline.required "stam" statistic_mods_decoder)
- |> (Json.Decode.Pipeline.required "atkm" damage_mods_decoder)
- |> (Json.Decode.Pipeline.required "defm" damage_mods_decoder)
+ |> (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)
)
new : (
- (List (Struct.Attributes.Category, Int)) ->
- (List (Struct.Statistics.Category, Int)) ->
- (List (Struct.DamageType.Type, Int)) ->
- (List (Struct.DamageType.Type, Int)) ->
+ (List (String, Int)) ->
+ (List (String, Int)) ->
+ (List (String, Int)) ->
+ (List (String, Int)) ->
Type
)
new attribute_mods statistic_mods attack_mods defense_mods =
@@ -141,18 +109,31 @@ merge omni_a omni_b =
apply_to_attributes : Type -> Struct.Attributes.Type -> Struct.Attributes.Type
apply_to_attributes omnimods attributes =
- (Dict.foldl (Struct.Attributes.mod) attributes omnimods.attributes)
+ (Dict.foldl
+ ((Struct.Attributes.decode_category) >> (Struct.Attributes.mod))
+ attributes
+ omnimods.attributes
+ )
apply_to_statistics : Type -> Struct.Statistics.Type -> Struct.Statistics.Type
apply_to_statistics omnimods statistics =
- (Dict.foldl (Struct.Statistics.mod) statistics omnimods.statistics)
+ (Dict.foldl
+ ((Struct.Statistics.decode_category) >> (Struct.Statistics.mod))
+ statistics
+ omnimods.statistics
+ )
-get_attack_damage : Int -> Type -> Type -> Int
+get_attack_damage : Float -> Type -> Type -> Int
get_attack_damage dmg_modifier atk_omni def_omni =
let
base_def =
(
- case (Dict.get Struct.DamageType.Base def_omni.defense) of
+ case
+ (Dict.get
+ (Struct.DamageType.encode Struct.DamageType.Base)
+ def_omni.defense
+ )
+ of
(Just v) -> v
Nothing -> 0
)
@@ -173,5 +154,6 @@ get_attack_damage dmg_modifier atk_omni def_omni =
(Just def_v) -> (result + (max 0 (actual_atk - def_v)))
Nothing -> (result + actual_atk)
)
+ 0
atk_omni.attack
)