internal virtual EffectOverTimeReport Timeout() { EffectOverTimeInfos effectInfos = new EffectOverTimeInfos(); effectInfos.effectOverTime = this; effectInfos.trigger = EEffectOverTimeTrigger.TimeOut; List <AEffectReport> effectsReport = new List <AEffectReport>(); foreach (EffectWrapper each in effects) { if (each.trigger.OnTimeOut) { effectInfos.doesStack = each.doesStack; effectInfos.perStackModifier = each.perStackModifier; effectInfos.isRevertOnDestroy = each.isRevertOnDestroy; each.effect.effectInfos = effectInfos; effectsReport.Add(each.effect.Apply(target)); } } EffectOverTimeReport report = new EffectOverTimeReport(); report.effectInfos = effectInfos; report.target = target; report.attackInfos = attackInfos; report.effects = effectsReport; report.effect = conf; report.trigger = EEffectOverTimeTrigger.TimeOut; return(report); }
internal virtual EffectOverTimeReport Refresh() { timeElapsedSinceRefresh = 0f; _tickNeeded = 0; _currentStackCount = Mathf.Clamp(_currentStackCount + 1, 0, conf.maxStack); EffectOverTimeInfos effectInfos = new EffectOverTimeInfos(); effectInfos.effectOverTime = this; effectInfos.trigger = EEffectOverTimeTrigger.Refresh; List <AEffectReport> effectsReport = new List <AEffectReport>(); foreach (EffectWrapper each in effects) { if (each.trigger.OnRefresh) { effectInfos.doesStack = each.doesStack; effectInfos.perStackModifier = each.perStackModifier; effectInfos.isRevertOnDestroy = each.isRevertOnDestroy; each.effect.effectInfos = effectInfos; effectsReport.Add(each.effect.Apply(target)); } } EffectOverTimeReport report = new EffectOverTimeReport(); report.effectInfos = effectInfos; report.target = target; report.attackInfos = attackInfos; report.effects = effectsReport; report.effect = conf; report.trigger = EEffectOverTimeTrigger.Refresh; return(report); }