void DealDamage()
        {
            Random rng = new Random();

            if (Roll(FEMath.Accuracy(this)))
            {
                FEMath.DealDamage(this);
            }
        }
        public void UseStaff(Staff staff)
        {
            Random rng = new Random();

            if (Roll(FEMath.StaffAccuracy(this)))
            {
                Target.Status = staff.Effect;
            }
        }
        bool[] Rounds()
        {
            // determines who is attacking and how long combat runs

            List <bool> result = new List <bool>();

            // initiator's attack
            result.Add(true);
            if (Initiator.EquippedWeapon.SpecialEffect == WSpecialEffect.Brave)
            {
                result.Add(true);
            }

            // determine counterattack
            if (Target.EquippedWeapon.MaxRange >= Distance && Target.EquippedWeapon.MinRange <= Distance)
            {
                result.Add(false);
                if (Target.EquippedWeapon.SpecialEffect == WSpecialEffect.Brave)
                {
                    result.Add(false);
                }
            }

            // determine follow-up attack
            if (FEMath.DoubleAttack(Initiator.CombatSpeed, Target.CombatSpeed))
            {
                result.Add(true);
                if (Initiator.EquippedWeapon.SpecialEffect == WSpecialEffect.Brave)
                {
                    result.Add(true);
                }
            }
            else if (FEMath.DoubleAttack(Target.CombatSpeed, Initiator.CombatSpeed))
            {
                if (Target.EquippedWeapon.MaxRange >= Distance && Target.EquippedWeapon.MinRange <= Distance)
                {
                    result.Add(false);
                    if (Target.EquippedWeapon.SpecialEffect == WSpecialEffect.Brave)
                    {
                        result.Add(false);
                    }
                }
            }

            return(result.ToArray());
        }