summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.elm18
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)