} //försöker kasta spellen

    public virtual bool AttackTarget()
    {
        if (!IsActive())
        {
            return(false);
        }

        bool targetAlive = true;

        if (target == null || target.gameObject.activeSelf == false || !targetHealth.IsAlive())
        {
            targetAlive = false;
            return(targetAlive);
        }

        AutoCastSpell();                //släng in lite spells oxå förfan!

        if (isPerformingAttack == true) //appliar skadan två gånger? varför??
        {
            //float modTime = animationH[attackA[lastAttackAnimIndex].name].time / animationH[attackA[lastAttackAnimIndex].name].length; //denna blir felet
            //Debug.Log(animationH[attackA[lastAttackAnimIndex].name].time.ToString());
            if (attack_applyDMG_Time <= (Time.time - attack_Timer_Begun)) //kolla ifall skadan ska applyas
            {                                                             // * 10 så den är i sekunder
                if (hasAppliedDamage == false)
                {
                    if (attackSounds.Length > 0)
                    {
                        int randomSound = Random.Range(0, attackSounds.Length);
                        audioSource.PlayOneShot(attackSounds[randomSound]);
                    }

                    hasAppliedDamage = true;
                    int damageRoll = RollDamage();

                    unitSpellHandler.RegisterAttack();
                    if (targetHealth.AddHealth(-damageRoll, damageType)) //target överlevde attacken
                    {
                        targetAlive = true;
                    }
                    else //target dog
                    {
                        targetAlive = false;
                    }
                    AddFatigue(-attackFatigueCost);
                }

                if (targetBase != null)
                {
                    targetBase.Attacked(thisTransform); //notera att jag attackerat honom!
                }
            }
            if (hasAppliedDamage == true) //kolla ifall animationen nästan är klar och så att den har gjort skada
            {
                //Debug.Log(animationH[attackA[lastAttackAnimIndex].name].time.ToString());
                isPerformingAttack = false; //jag vill inte snubben ska missa damage för att denne är för långsam med sin animation
            }
        }

        bool isFacingTarget = IsFacingTransform(target);

        if (attackRange > (targetDistance - targetHealth.unitSize) && isFacingTarget && isPerformingAttack == false) //kolla så att target står framför mig oxå
        {
            if (attackSpeedTimer <= Time.time)
            {
                isPerformingAttack  = true; //påbörja attacken
                hasAppliedDamage    = false;
                lastAttackAnimIndex = Random.Range(0, attackA.Length);
                //animationH[attackA[lastAttackAnimIndex].name].layer = 1;
                //animationH[attackA[lastAttackAnimIndex].name].weight = 1;
                animationH[attackA[lastAttackAnimIndex].name].time = 0.0f;
                animationH.Play(attackA[lastAttackAnimIndex].name);
                attackSpeedTimer   = attackSpeed + Time.time;
                attack_Timer_Begun = Time.time;
            }
        }
        if (attackRange * 0.8f < (targetDistance - targetHealth.unitSize)) //marginal med jue
        {
            SetDestination(target.position);
        }
        else if (!isFacingTarget)
        {
            RotateTowards(target);
            ResetPath();
        }
        else
        {
            ResetPath();
        }

        return(targetAlive);
    }