using Characters; using UnityEngine; using System; using System.Collections; using Mirror; namespace Debuffs { public class DebuffBase { public event Action OnDebuffStart; public event Action OnDebuffEnd; protected float duration = 5f; public float Duration => duration; public virtual void Enable(Pawn pawn) { } public virtual void Disable(Pawn pawn) { } public virtual IEnumerator Act(Pawn pawn) { OnDebuffStart?.Invoke(this, pawn); yield return new WaitForSeconds(duration); OnDebuffEnd?.Invoke(this, pawn); } public DebuffBase() { } public DebuffBase(float duration) { this.duration = duration; } } public static class DebuffSerializer { public static void WriteDebuff(this NetworkWriter writer, DebuffBase value) { writer.WriteFloat(value.Duration); } public static DebuffBase ReadDebuff(this NetworkReader reader) { return new TaserDebuff(reader.ReadFloat()); } } }