//----------------------------------------------------------------------------
        //            TakeDamage
        //----------------------------------------------------------------------------

        #region TakeDamage
        public IEnumerator TakeDamage(AttackRoll attackRoll)
        {
            int damage = attackRoll.MyDamageData.GetDamage();

            MyHasHealth.TakeDamage(attackRoll.MyDamageData.GetDamage());

            if (MyHasHealth.GetHealth() != 0)
            {
                yield return(StartCoroutine(MyNarrator.Damage()));
            }
            else
            {
                yield return(StartCoroutine(MyCanDie.TakeAttack(attackRoll)));
            }
        }
        //----------------------------------------------------------------------------
        //                    RollForAttack
        //----------------------------------------------------------------------------

        #region RollForAttack

        public IEnumerator RollForAttack()
        {
            MyAttackRoll = new AttackRoll();
            if (Advantage && !Disadvantage)
            {
                MyAttackRoll.Roll = RollWithAdvantage();
            }
            else if (Disadvantage && !Advantage)
            {
                MyAttackRoll.Roll = RollWithDisadvantage();
            }
            else
            {
                MyAttackRoll.Roll = Random.Range(1, 21);
            }

            MyAttackRoll.PureRoll = MyAttackRoll.Roll;
            MyAttackRoll.Roll    += SumOfModifiers;
            yield break;
        }
        //----------------------------------------------------------------------------
        //             RollDamage
        //----------------------------------------------------------------------------

        #region RollDamage

        public IEnumerator RollDamage(AttackRoll attackRoll)
        {
            attackRoll.MyDamageData.AddDamage(MyWeapon.RollDamage(), MyWeapon.MyDamageType, DamageSource.Roll);
            yield break;
        }
        //----------------------------------------------------------------------------
        //            DoesAttackRollHit
        //----------------------------------------------------------------------------

        #region DoesAttackRollHit

        public IEnumerator DoesAttackRollHit(AttackRoll attackRoll)
        {
            attackRoll.DidHit = attackRoll.Roll > MyACAlterer.GetAC(this);
            yield break;
        }