private void DoAttack()
    {
        bool  isSuperNova = false;
        Color c           = new Color();

        //0-attack 1-heal 2-shield 3-buff 4-gold 5-debuff
        if (destroyedGemCount[3] > 0)//buff
        {
            ColorUtility.TryParseHtmlString("#FF8E00FF", out c);
            int value = destroyedGemCount[3] - 2;
            player.CurrBuff += value;

            PopoutCreator.CreatePopoutText("+" + value.ToString(), playerImageTransform, c);
            isSuperNova         = isSuperNova ? true : (destroyedGemCount[3] >= superNovaCounter ? true : false);
            audioSource[0].clip = audioClips[3];
        }
        if (destroyedGemCount[5] > 0)//debuff
        {
            ColorUtility.TryParseHtmlString("#FF8E00FF", out c);
            int value = destroyedGemCount[5];
            monster.CurrBuff -= value;
            PopoutCreator.CreatePopoutText("+" + value.ToString(), enemyImageTransform, c);
            isSuperNova         = isSuperNova ? true : (destroyedGemCount[5] >= superNovaCounter ? true : false);
            audioSource[0].clip = audioClips[4];
        }
        if (destroyedGemCount[4] > 0)//gold
        {
            ColorUtility.TryParseHtmlString("#F1FF00FF", out c);
            int value = ((destroyedGemCount[4] - 3) * 20) + 30;
            player.gold += value;
            PopoutCreator.CreatePopoutText("+" + value.ToString(), playerImageTransform, c);
            isSuperNova         = isSuperNova ? true : (destroyedGemCount[4] >= superNovaCounter ? true : false);
            audioSource[0].clip = audioClips[5];
        }
        if (destroyedGemCount[1] > 0)//heal
        {
            ColorUtility.TryParseHtmlString("#00FF00FF", out c);
            int value = ((destroyedGemCount[1] - 3) * 2) + 3;
            player.HitPoint += value;
            PopoutCreator.CreatePopoutText("+" + value.ToString(), playerImageTransform, c);
            isSuperNova         = isSuperNova ? true : (destroyedGemCount[1] >= superNovaCounter ? true : false);
            audioSource[0].clip = audioClips[2];
        }
        if (destroyedGemCount[2] > 0)//shield
        {
            ColorUtility.TryParseHtmlString("#1697C5FF", out c);
            int value = ((destroyedGemCount[2] - 3) * 2) + 3 + player.CurrBuff;
            value              = value > 0 ? value : 0;
            player.CurrShield += value;
            PopoutCreator.CreatePopoutText("+" + value.ToString(), playerImageTransform, c);
            isSuperNova         = isSuperNova ? true : (destroyedGemCount[2] >= superNovaCounter ? true : false);
            audioSource[0].clip = audioClips[1];
        }
        if (destroyedGemCount[0] > 0)//attack
        {
            ColorUtility.TryParseHtmlString("#B60101FF", out c);
            //destroyedGemCount[0] += player.currBuff;
            //destroyedGemCount[0] = destroyedGemCount[0] >= 0 ? destroyedGemCount[0] : 0;
            //int value = ((destroyedGemCount[0] - 3) * 2) + 3;
            int value = 3;
            for (int a = 1; a <= (destroyedGemCount[0] - 3); a++)
            {
                value += a * 2;
            }
            value += player.CurrBuff;
            value  = value >= 0 ? value : 0;
            PopoutCreator.CreatePopoutText("-" + value.ToString(), enemyImageTransform, c);
            int temp = monster.CurrShield;
            monster.CurrShield -= value;
            value -= temp;
            if (value > 0)
            {
                monster.CurrHp -= value;
            }
            isSuperNova         = isSuperNova ? true : (destroyedGemCount[0] >= superNovaCounter ? true : false);
            audioSource[0].clip = audioClips[0];
        }
        int i = Random.Range(0, 2);

        audioSource[0].Play();
        if (superNova)
        {
            GameObject nova = Instantiate(superNovaAnim);
            nova.transform.SetParent(novaPosition.transform);
            nova.GetComponent <RectTransform>().localPosition = Vector3.zero;
            Destroy(nova, superNovaAnim.GetComponent <Animator>().runtimeAnimatorController.animationClips[0].length - 0.1f);
            audioSource[1].clip = audioClips[6];
            audioSource[1].Play();
            player.currShipEnergy += 1;
            superNova              = false;
        }

        Array.Clear(destroyedGemCount, 0, destroyedGemCount.Length);
        if (monster.CurrHp <= 0)
        {
            battleState = BattleState.win;
            monster.Kill();
        }
    }