public List<Interfaces.ICommand> getClassCommands(LiveImplementation.FullCombatCharacter source, LiveImplementation.CombatData combatData)
        {
            List<ICommand> commands = new List<ICommand>();

            int level = source.classLevel;
            commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Magic Dart", false, 0, true, isDisabled("Magic Dart", source, combatData)));
            if (level >= 3)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Magic Missile", true, 1, true, isDisabled("Magic Missile", source, combatData)));
            }
            if (level >= 7)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Arcane Prison", false, 0, true, isDisabled("Arcane Prison", source, combatData)));
            }

            return commands;
        }
 public bool isDisabled(string abilityName, LiveImplementation.FullCombatCharacter source, LiveImplementation.CombatData combatData)
 {
     if (abilityName == "Magic Missile" && source.mp == 0)
     {
         return true;
     }
     else if (combatData.hasCooldown(source.name, abilityName))
     {
         return true;
     }
     return false;
 }
 public bool isDisabled(string abilityName, LiveImplementation.FullCombatCharacter source, LiveImplementation.CombatData combatData)
 {
     if (abilityName == "Disarming Blow")
     {
         if(combatData.hasCooldown(source.name, "Disarming Blow"))
         {
             return true;
         }
     }
     else if (abilityName == "One-Two Punch")
     {
         if (combatData.hasCooldown(source.name, "One-Two Punch"))
         {
             return true;
         }
     }
     else if (abilityName == "Sweep")
     {
         if (combatData.hasCooldown(source.name, "Sweep"))
         {
             return true;
         }
     }
     else if (abilityName == "Preemptive Strike")
     {
         if (combatData.hasCooldown(source.name, "Preemptive Strike"))
         {
             return true;
         }
     }
     else if (abilityName == "Vicious Blow")
     {
         if (combatData.hasCooldown(source.name, "Vicious Blow"))
         {
             return true;
         }
     }
     else if (abilityName == "Adrenaline")
     {
         if (source.usedAbilities.Contains("Adrenaline"))
         {
             return true;
         }
     }
     return false;
 }
        public Func<List<LiveImplementation.FullCombatCharacter>, List<LiveImplementation.FullCombatCharacter>, LiveImplementation.CombatData, List<Interfaces.IEffect>> initialExecute(LiveImplementation.FullCombatCharacter source)
        {
            return ((List<FullCombatCharacter> allies, List<FullCombatCharacter> enemies, CombatData combatData) =>
            {
                List<IEffect> effects = new List<IEffect>();

                return effects;
            });
        }
        public List<Interfaces.ICommand> getClassCommands(LiveImplementation.FullCombatCharacter source, LiveImplementation.CombatData combatData)
        {
            List<ICommand> commands = new List<ICommand>();

            int level = source.classLevel;
            if (level >= 3)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Disarming Blow", false, 0, true, isDisabled("Disarming Blow", source, combatData)));
            }
            if (level >= 7)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "One-Two Punch", false, 0, true, isDisabled("One-Two Punch", source, combatData)));
            }
            if (level >= 9)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Sweep", false, 0, false, isDisabled("Sweep", source, combatData)));
            }
            if (level >= 13)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Preemptive Strike", false, 0, false, isDisabled("Preemptive Strike", source, combatData)));
            }
            if (level >= 15)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Vicious Blow", false, 0, true, isDisabled("Vicious Blow", source, combatData)));
            }
            if (level >= 17)
            {
                commands.Add(new Command(false, new List<ICommand>(), false, 0, 0, "Adrenaline", false, 0, false, isDisabled("Adrenaline", source, combatData)));
            }

            return commands;
        }