protected void CastTo(ISpellCastTo spell, ICharacter target) { try { if (Check.IsAlive(this) == true) { SpellLevelUp(spell, this.level); spell.CastTo(this, target); } else { throw new InvalidOperationException(); } } catch (InvalidOperationException) { } }