60 lines
1.9 KiB
C#
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
|
|
};
|
|
}
|
|
} |