public void CharacterUsesNonTargetingSense_CharacterCanDetermineGeneralLocationOfOfTarget()
        {
            Hearing.PerceptionModifer = 7;
            LocationPrecision location = Hearing.DetermineLocationOfTarget();

            Assert.AreEqual(LocationPrecision.GeneralLocation, location);
        }
        public void ModifyCombatValuesBasedOnAbilityToSeeTarget()
        {
            if (PerceptionModier == null)
            {
                PerceptionModier = new PerceptionModier();
            }
            else
            {
                PerceptionModier.RemoveModifierFrom(Character);
            }

            Attack attack = Character.ActiveManuever as Attack;

            LocationPrecision precision = DetermineLocationOfTarget(attack?.Defender);

            switch (precision)
            {
            case LocationPrecision.CantPercieveLocation:

                if (attack == null || attack.Ranged)
                {
                    PerceptionModier.OCV.Multiplier    = 0;
                    PerceptionModier.OCV.ModiferAmount = -Character.OCV.CurrentValue;
                    PerceptionModier.DCV.Multiplier    = .5;
                }
                else
                {
                    PerceptionModier.OCV.Multiplier    = .5;
                    PerceptionModier.DCV.Multiplier    = .5;
                    PerceptionModier.OCV.ModiferAmount = 0;
                    PerceptionModier.DCV.ModiferAmount = 0;
                }
                break;

            case LocationPrecision.GeneralLocation:
                if (attack == null || attack.Ranged)
                {
                    PerceptionModier.OCV.Multiplier = 0.5;

                    PerceptionModier.OCV.ModiferAmount = 0;
                    PerceptionModier.DCV.Multiplier    = 0;
                    PerceptionModier.DCV.ModiferAmount = 0;
                }
                else
                {
                    PerceptionModier.OCV.Multiplier    = 0.5;
                    PerceptionModier.OCV.ModiferAmount = 0;
                    PerceptionModier.DCV.Multiplier    = 0;
                    PerceptionModier.DCV.ModiferAmount = -1;
                }
                break;

            case LocationPrecision.ExactLocation:
                PerceptionModier.OCV.Multiplier    = 0;
                PerceptionModier.OCV.ModiferAmount = 0;
                PerceptionModier.DCV.Multiplier    = 0;
                PerceptionModier.DCV.ModiferAmount = 0;

                break;
            }
            PerceptionModier.ApplyModifierTo(Character);
        }
        public void CharacterUsesSensewithNoRange_CharacterCannotDetermineLocationOfTarget()
        {
            LocationPrecision location = Touch.DetermineLocationOfTarget();

            Assert.AreEqual(LocationPrecision.CantPercieveLocation, location);
        }
        public void CharacterUsesTargetingSense_CharacterCanDetermineExactLocationOfOfTarget()
        {
            LocationPrecision location = Sight.DetermineLocationOfTarget();

            Assert.AreEqual(LocationPrecision.ExactLocation, location);
        }