// ============================================================================ // 2. ABILITY MODIFIER SYSTEM // ============================================================================ using UnityEngine; [System.Serializable] public class AbilityModifier { [Header("Resource Cost Modifiers")] public float manaCostMultiplier = 1f; public float manaCostFlat = 0f; public float healthCostMultiplier = 1f; public float healthCostFlat = 0f; public float classResourceCostMultiplier = 1f; public float classResourceCostFlat = 0f; [Header("Timing Modifiers")] public float castTimeMultiplier = 1f; public float cooldownMultiplier = 1f; [Header("Effect Modifiers")] public float damageMultiplier = 1f; public float healingMultiplier = 1f; public float durationMultiplier = 1f; public float rangeMultiplier = 1f; [Header("Meta Info")] public string modifierName = "Unnamed Modifier"; public string description = ""; public float duration = -1f; // -1 = permanent // Factory methods for common modifiers public static AbilityModifier CreateDamageBoost(float multiplier, string name = "Damage Boost") { return new AbilityModifier { damageMultiplier = multiplier, modifierName = name }; } public static AbilityModifier CreateCooldownReduction(float reductionPercent, string name = "Cooldown Reduction") { return new AbilityModifier { cooldownMultiplier = 1f - (reductionPercent / 100f), modifierName = name }; } public static AbilityModifier CreateManaCostReduction(float reductionPercent, string name = "Mana Cost Reduction") { return new AbilityModifier { manaCostMultiplier = 1f - (reductionPercent / 100f), modifierName = name }; } }