@Override
 public void affectCharStats(MOB E, CharStats stats) {
   super.affectCharStats(E, stats);
   if ((E != null) && (E != invoker()) && (stats.getCurrentClass().baseClass().equals("Bard"))) {
     int lvl = adjustedLevel(invoker(), 0) / 10;
     if (lvl < 1) lvl = 1;
     stats.setClassLevel(stats.getCurrentClass(), stats.getCurrentClassLevel() + lvl);
   }
 }
 @Override
 public void affectCharStats(MOB affected, CharStats affectableStats) {
   super.affectCharStats(affected, affectableStats);
   int increase = 1;
   if (affectableStats.getCurrentClass().baseClass().equals("Fighter")) increase = 1;
   else if (affectableStats.getCurrentClass().baseClass().equals("Mage")) increase = 2;
   else if (affectableStats.getCurrentClass().baseClass().equals("Thief")) increase = 1;
   else if (affectableStats.getCurrentClass().baseClass().equals("Bard")) increase = 1;
   else if (affectableStats.getCurrentClass().baseClass().equals("Cleric")) increase = 3;
   else if (affectableStats.getCurrentClass().baseClass().equals("Druid")) increase = 3;
   increase += (super.getXLEVELLevel(invoker()) + 2) / 3;
   affectableStats.setStat(
       CharStats.STAT_WISDOM, affectableStats.getStat(CharStats.STAT_WISDOM) + increase);
 }
 @Override
 public void affectCharStats(MOB affected, CharStats affectableStats) {
   super.affectCharStats(affected, affectableStats);
   if (affected == null) return;
   int newLevel =
       affected.basePhyStats().level()
           - (direction * (levelsDown - affectableStats.combinedSubLevels()));
   if (newLevel < 0) newLevel = 0;
   affectableStats.setClassLevel(affectableStats.getCurrentClass(), newLevel);
 }