summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/battle/Battle/Struct/Attributes.elm.m4 (renamed from src/shared/battle/Battle/Struct/Attributes.elm) | 32 | ||||
-rw-r--r-- | src/shared/battle/Battle/Struct/Omnimods.elm | 18 |
2 files changed, 35 insertions, 15 deletions
diff --git a/src/shared/battle/Battle/Struct/Attributes.elm b/src/shared/battle/Battle/Struct/Attributes.elm.m4 index bb6c06e..d008618 100644 --- a/src/shared/battle/Battle/Struct/Attributes.elm +++ b/src/shared/battle/Battle/Struct/Attributes.elm.m4 @@ -168,29 +168,31 @@ default = damage_modifier = 0 } +m4_include(__MAKEFILE_DATA_DIR/names.m4.conf) + decode_category : String -> Category decode_category str = case str of - "mheal" -> MaxHealth - "mpts" -> MovementPoints - "dodg" -> Dodges - "pary" -> Parries - "accu" -> Accuracy - "dhit" -> DoubleHits - "dmgm" -> DamageModifier + "__SN_MAX_HEALTH" -> MaxHealth + "__SN_MOVEMENT_POINTS" -> MovementPoints + "__SN_DODGE" -> Dodges + "__SN_PARRY" -> Parries + "__SN_ACCURACY" -> Accuracy + "__SN_DOUBLE_HITS" -> DoubleHits + "__SN_DAMAGE_MODIFIER" -> DamageModifier _ -> CriticalHits encode_category : Category -> String encode_category cat = case cat of - MaxHealth -> "mheal" - MovementPoints -> "mpts" - Dodges -> "dodg" - Parries -> "pary" - Accuracy -> "accu" - DoubleHits -> "dhit" - CriticalHits -> "crit" - DamageModifier -> "dmgm" + MaxHealth -> "__SN_MAX_HEALTH" + MovementPoints -> "__SN_MOVEMENT_POINTS" + Dodges -> "__SN_DODGE" + Parries -> "__SN_PARRY" + Accuracy -> "__SN_ACCURACY" + DoubleHits -> "__SN_DOUBLE_HITS" + CriticalHits -> "__SN_CRITICAL_HIT" + DamageModifier -> "__SN_DAMAGE_MODIFIER" is_percent : Category -> Bool is_percent cat = ((cat /= MaxHealth) && (cat /= MovementPoints)) diff --git a/src/shared/battle/Battle/Struct/Omnimods.elm b/src/shared/battle/Battle/Struct/Omnimods.elm index 7a61153..2b3c011 100644 --- a/src/shared/battle/Battle/Struct/Omnimods.elm +++ b/src/shared/battle/Battle/Struct/Omnimods.elm @@ -8,9 +8,11 @@ module Battle.Struct.Omnimods exposing get_attack_damage, get_damage_sum, get_attribute_mods, + get_attribute_mod, get_attack_mods, get_defense_mods, get_all_mods, + apply_damage_modifier, scale, decoder ) @@ -174,6 +176,16 @@ get_attack_damage dmg_modifier atk_omni def_omni = atk_omni.attack ) +apply_damage_modifier : Int -> Type -> Type +apply_damage_modifier damage_modifier omnimods = + {omnimods | + attack = + (Dict.map + (scale_dict_value ((toFloat damage_modifier) / 100.0)) + omnimods.attack + ) + } + scale : Float -> Type -> Type scale multiplier omnimods = {omnimods | @@ -183,6 +195,12 @@ scale multiplier omnimods = (Dict.map (scale_dict_value multiplier) omnimods.defense) } +get_attribute_mod : String -> Type -> Int +get_attribute_mod att_name omnimods = + case (Dict.get att_name omnimods.attributes) of + (Just e) -> e + Nothing -> 0 + get_attribute_mods : Type -> (List (String, Int)) get_attribute_mods omnimods = (Dict.toList omnimods.attributes) |