using UnityEngine; public class TickingRuntimeEffectInstance : RuntimeEffectInstance { public float timeSinceLastTick = 0f; public virtual void Tick(float deltaTime) { timeSinceLastTick += deltaTime; if (timeSinceLastTick >= GameConstants.GameBalancing.EffectsTickingRate) { PerformTick(); timeSinceLastTick = 0f; // Reset timer after ticking } } protected virtual void PerformTick() { // Override in specific effect types (DOT, HealOT, etc.) // Example: Apply damage based on numberOfStacks } public override void OnEffectFirstApplied(int numberOfStacksApplied) { base.OnEffectFirstApplied(numberOfStacksApplied); timeSinceLastTick = 0f; } public override void OnEffectRefreshed(int numberOfStacksAdded) { base.OnEffectRefreshed(numberOfStacksAdded); // Optionally reset tick timer on refresh // timeSinceLastTick = 0f; } public new void Reset() { base.Reset(); timeSinceLastTick = 0f; } }