/// <summary> /// Adds an affect. /// </summary> /// <param name="effect">The effect to add.</param> public virtual void AddEffect(IEffect <T> effect) { if (EffectTimes.Any(x => x.Effect == effect)) { return; } if (!effect.CanBeAppliedTo(EffectTarget)) { throw new WrapperException($"Failed to add effect.\r\nThe effect of type '{effect.GetType()}' can't be applied to the target of type '{EffectTarget.GetType()}'."); } effect.OnAttach(EffectTarget); EffectTimes.Add(new EffectTimeContainer(effect, -1)); }