48 lines
1.6 KiB
C#
48 lines
1.6 KiB
C#
using Kryz.CharacterStats;
|
|
using Kryz.CharacterStats.Examples;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
|
|
[CreateAssetMenu(fileName = "DamageIncomeModifierEffect", menuName = "RiftMayhem/AbilitySystem/Effects/DamageIncomeModifier Effect", order = 1)]
|
|
public class DamageIncomeModifierEffect : StatusEffect
|
|
{
|
|
public float damageIncomeModifierPercentage;
|
|
|
|
public bool avoidEnemies = false;
|
|
|
|
StatusEffectHandler effectHandler;
|
|
|
|
public override void ApplyEffect(Taggable user, List<Taggable> targets, BaseAbility source)
|
|
{
|
|
base.ApplyEffect(user, targets, source);
|
|
|
|
if (applyToTargetsHit)
|
|
{
|
|
foreach (Taggable target in targets)
|
|
{
|
|
if (avoidEnemies)
|
|
{
|
|
if (!user.AlliedTagsContains(target.targetTag)) continue;
|
|
}
|
|
effectHandler = target.GetComponent<StatusEffectHandler>();
|
|
effectHandler.ApplyEffect(this, user, target, source, defaultNumberOfStacks);
|
|
}
|
|
}
|
|
if (applyToSelf)
|
|
{
|
|
effectHandler = user.GetComponent<StatusEffectHandler>();
|
|
effectHandler.ApplyEffect(this, user, user, source, defaultNumberOfStacks);
|
|
}
|
|
}
|
|
|
|
public override RuntimeEffectInstance CreateEffectInstance()
|
|
{
|
|
DamageIncomeModifierRuntimeEffectInstance instance = CObjectPool<DamageIncomeModifierRuntimeEffectInstance>.Get();
|
|
instance.damageIncomeModifierPercentage = damageIncomeModifierPercentage;
|
|
return instance;
|
|
}
|
|
|
|
}
|