public AuraState AddAura(Aura aura, ICaster source, object referenceObject) { var activeAura = GetAura(aura, referenceObject); if (activeAura != null) { activeAura.AddStack(); return(activeAura); } var newAura = aura.CreateState(source, System, referenceObject); _activeAuras.Add(newAura); newAura.Apply(); OnAuraAdded?.Invoke(newAura); return(newAura); }