60 lines
1.9 KiB
C#

// ============================================================================
// 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
};
}
}