RiftMayhem/Assets/Scripts/AbilitySystem/Effects/DamageOutputModifierEffect.cs

48 lines
1.6 KiB
C#

using Kryz.CharacterStats;
using Kryz.CharacterStats.Examples;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "DamageOutputModifierEffect", menuName = "RiftMayhem/AbilitySystem/Effects/DamageOutputModifier Effect", order = 1)]
public class DamageOutputModifierEffect : StatusEffect
{
public float damageOutputModifierPercentage;
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()
{
DamageOutputModifierRuntimeEffectInstance instance = CObjectPool<DamageOutputModifierRuntimeEffectInstance>.Get();
instance.damageOutputModifierPercentage = damageOutputModifierPercentage;
return instance;
}
}