public SpellPreparedFeature(SpellPoolElement spellElement, FeatureBundle parent = null) : base()
 {
     this.spellElement = spellElement;
     ups.Add((character) => {
         spellElement.IsPrepared = true;
     });
     downs.Add((character) => {
         spellElement.IsPrepared = false;
     });
 }
 public SpellKnownFeature(SpellLibrary.SpellName spellName, ClassType classType, FeatureBundle parent = null) : base()
 {
     this.spellName = spellName;
     this.classType = classType;
     ups.Add((character) => {
         SpellPoolElement elem = cached = new SpellPoolElement();
         elem.ClassType        = classType;
         elem.SpellName        = spellName;
         elem.IsPrepared       = false;
         character.spellPool.Add(elem);
     });
     downs.Add((character) => {
         character.spellPool.Remove(cached);
     });
 }