RiftMayhem/Assets/Scripts/AbilitySystem/Effects/DamageIncomeModifierEffectInstance.cs
Pedro Gomes 888171a4a9 New spell & status & instant effect updates
- burst of hope (second priest ability) added
- instant value effect with modifiers based on targets
- damage income modifier effect added
- status effect option to apply to targets hit
- status effect option to apply to self
2024-07-07 11:44:12 +01:00

90 lines
2.4 KiB
C#

using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DamageIncomeModifierEffectInstance : StatusEffectInstance
{
public float startingIncomeModifierPercent;
public float currentIncomeModifierPercent;
public float ModifyDamageIncome(float income)
{
return income = income * (1 + currentIncomeModifierPercent);
}
public float GetHighestAmount()
{
float highestAmount = 0;
for (int i = 0; i < activeStacks.Count; i++)
{
if (((DamageIncomeModifierEffect)activeStacks[i]).damageIncomeModifierPercentage > highestAmount)
highestAmount = ((DamageIncomeModifierEffect)activeStacks[i]).damageIncomeModifierPercentage;
}
return highestAmount;
}
[PunRPC]
public void RPC_ApplyDamageIncomeModifierEffect(int effectIndex)
{
ApplyEffect(StatusEffectIndexer.Instance.StatusEffects[effectIndex]);
}
public override void ApplyEffect(StatusEffect effect)
{
base.ApplyEffect(effect);
}
protected override void AddStack(StatusEffect addedEffect)
{
if (activeStacks.Count <= 0)
{
startingIncomeModifierPercent = ((DamageIncomeModifierEffect)addedEffect).damageIncomeModifierPercentage;
currentIncomeModifierPercent = startingIncomeModifierPercent;
}
else if (canStack && !activeStacks.Contains(addedEffect))
{
currentIncomeModifierPercent += ((DamageIncomeModifierEffect)addedEffect).damageIncomeModifierPercentage;
}
else
{
OnEffectStackAdded();
return;
}
base.AddStack(addedEffect);
}
protected override void RefreshEffect(StatusEffect effect)
{
base.RefreshEffect(effect);
startingIncomeModifierPercent = GetHighestAmount();
currentIncomeModifierPercent = startingIncomeModifierPercent;
OnEffectStackAdded();
}
protected override IEnumerator EffectStateCoroutine()
{
return base.EffectStateCoroutine();
}
protected override void EffectStateStarted()
{
base.EffectStateStarted();
}
protected override void EffectStateEnded()
{
startingIncomeModifierPercent = 0;
currentIncomeModifierPercent = startingIncomeModifierPercent;
base.EffectStateEnded();
}
}