public void LearnSpell(AbstractSpell spell)
 {
     if (!KnownSpells.Contains(spell))
     {
         KnownSpells.Add(spell);
     }
 }
 public void ForgetSpell(AbstractSpell spell)
 {
     if (KnownSpells.Contains(spell))
     {
         KnownSpells.Remove(spell);
     }
     else
     {
         Console.WriteLine("Character doesn't know this spell!");
     }
 }
        public void CastSpell(ReceivedSpell receivedSpell, Player player = null, int power = 0)
        {
            if (!KnownSpells.Contains((AbstractSpell)receivedSpell.Target))
            {
                Console.WriteLine("Character doesn't know this spell!");
                return;
            }

            if (power < 0)
            {
                power = 0;
            }

            if (player == null)
            {
                player = this;
            }

            receivedSpell(this, player, power);
        }