Example #1
0
        public void AttemptToApplyDamage_ReturnsInformationAboutPlay_ForEvade()
        {
            var character = CreateTestCharacter();

            character.SetAbilityScoreMultiplier(AbilityScore.Defense, 1);             // Ensure no defense

            var testRandom = new TestRandomWrapper();

            Character.Random = testRandom;

            // Evade 1 is 2.5% chance of miss
            character.SetAbilityScoreMultiplier(AbilityScore.Evade, 1);

            character.SetCurrentHealth(20);
            testRandom.Double = 0.025d;               // 0.025 roll > 0.025 evade is false, so no damage
            var playStatus = character.AttemptToApplyDamage(20);

            Assert.That(playStatus.CardType, Is.EqualTo(CardType.Damage));
            Assert.That(playStatus.PlayCancelled, Is.EqualTo(false));
            Assert.That(playStatus.Status, Is.EqualTo(PlayStatusDetails.FailedEvaded));
            Assert.That(playStatus.ActualDamageOrHealingDone, Is.EqualTo(0));

            character.SetCurrentHealth(20);
            testRandom.Double = 0.0251d;               // 0.0251 roll > 0.025 evade is true, so damage
            playStatus        = character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(0));
            Assert.That(playStatus.CardType, Is.EqualTo(CardType.Damage));
            Assert.That(playStatus.PlayCancelled, Is.EqualTo(false));
            Assert.That(playStatus.Status, Is.EqualTo(PlayStatusDetails.Success));
            Assert.That(playStatus.ActualDamageOrHealingDone, Is.EqualTo(20));
        }
Example #2
0
        public void AttemptToApplyDamage_AccountsForEvade()
        {
            var character = CreateTestCharacter();

            character.SetAbilityScoreMultiplier(AbilityScore.Defense, 1);             // Ensure no defense

            var testRandom = new TestRandomWrapper();

            Character.Random = testRandom;

            // Evade 1 is 2.5% chance of miss
            character.SetAbilityScoreMultiplier(AbilityScore.Evade, 1);

            character.SetCurrentHealth(20);
            testRandom.Double = 0.025d;               // 0.025 roll > 0.025 evade is false, so no damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(20));

            character.SetCurrentHealth(20);
            testRandom.Double = 0.0251d;               // 0.0251 roll > 0.025 evade is true, so damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(0));

            // Evade 2 is 10% chance of miss
            character.SetAbilityScoreMultiplier(AbilityScore.Evade, 2);

            character.SetCurrentHealth(20);
            testRandom.Double = 0.1d;               // 0.1 roll > 0.1 evade is false, so no damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(20));

            character.SetCurrentHealth(20);
            testRandom.Double = 0.11d;               // 0.11 roll > 0.1 evade is true, so damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(0));


            // Evade 3 is 22.5% chance of miss
            character.SetAbilityScoreMultiplier(AbilityScore.Evade, 3);

            character.SetCurrentHealth(20);
            testRandom.Double = 0.225d;               // 0.225 roll > 0.225 evade is false, so no damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(20));

            character.SetCurrentHealth(20);
            testRandom.Double = 0.2251d;               // 0.2251 roll > 0.225 evade is true, so damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(0));


            // Evade 4 is 40% chance of msis
            character.SetAbilityScoreMultiplier(AbilityScore.Evade, 4);

            character.SetCurrentHealth(20);
            testRandom.Double = 0.4d;               // 0.4 roll > 0.4 evade is false, so no damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(20));

            character.SetCurrentHealth(20);
            testRandom.Double = 41;               // 0.41 roll > 0.4 evade is true, so damage
            character.AttemptToApplyDamage(20);
            Assert.That(character.GetBaseAbilityScore(AbilityScore.Health), Is.EqualTo(0));
        }