Ejemplo n.º 1
0
        /// <summary>
        /// Применение бонуса к характеристике навыка.
        /// </summary>
        /// <param name="bonusValue"> Величина бонуса. </param>
        /// <param name="stat"> Характеристика навыка. </param>
        private static void ApplyBonusToStat(float bonusValue, SkillStatItem stat)
        {
            stat.Value += stat.Value * bonusValue;

            if (stat.Value <= 1)
            {
                stat.Value = 1;
            }
        }
Ejemplo n.º 2
0
        public void HumanPerson_SwordSkillsPerk_DamageOfActIsIncreased()
        {
            // ARRANGE

            var slotSchemes = new[] {
                new PersonSlotSubScheme {
                    Types = EquipmentSlotTypes.Hand
                }
            };

            var personScheme = new PersonScheme
            {
                Hp    = 10,
                Slots = slotSchemes
            };

            var defaultActScheme = new TestTacticalActScheme
            {
                Stats = new TestTacticalActStatsSubScheme()
            };

            var perkMock = new Mock <IPerk>();

            perkMock.SetupGet(x => x.CurrentLevel).Returns(new PerkLevel(0, 0));
            perkMock.SetupGet(x => x.Scheme).Returns(new PerkScheme
            {
                Levels = new[] {
                    new PerkLevelSubScheme {
                        Rules = new [] {
                            new PerkRuleSubScheme {
                                Type   = PersonRuleType.Damage,
                                Level  = PersonRuleLevel.Absolute,
                                Params = "{\"WeaponTags\":[\"sword\"]}"
                            }
                        }
                    }
                }
            });
            var perk = perkMock.Object;

            var stats = new SkillStatItem[0];

            var evolutionDataMock = new Mock <IEvolutionData>();

            evolutionDataMock.SetupGet(x => x.Perks).Returns(new[] { perk });
            evolutionDataMock.SetupGet(x => x.Stats).Returns(stats);
            var evolutionData = evolutionDataMock.Object;

            var survivalRandomSourceMock = new Mock <ISurvivalRandomSource>();
            var survivalRandomSource     = survivalRandomSourceMock.Object;

            var swordScheme = new TestPropScheme
            {
                Tags  = new[] { "sword" },
                Equip = new TestPropEquipSubScheme
                {
                    SlotTypes = new[] { EquipmentSlotTypes.Hand }
                }
            };

            var swordAct = new TestTacticalActScheme
            {
                Stats = new TestTacticalActStatsSubScheme
                {
                    Effect    = TacticalActEffectType.Damage,
                    Efficient = new Roll(1, 1)
                }
            };

            var equipment = new Equipment(swordScheme, new ITacticalActScheme[] { swordAct });



            // ACT
            var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, survivalRandomSource);

            person.EquipmentCarrier[0] = equipment;



            // ASSERT
            var testedAct = person.TacticalActCarrier.Acts[0];

            testedAct.Efficient.Modifiers.ResultBuff.Should().Be(10);
        }
Ejemplo n.º 3
0
        public void HumanPerson_HpPerk_HealthIncreased()
        {
            // ARRANGE

            var slotSchemes = new[] {
                new PersonSlotSubScheme {
                    Types = EquipmentSlotTypes.Hand
                }
            };

            var personScheme = new PersonScheme
            {
                Hp    = 10,
                Slots = slotSchemes
            };

            var defaultActScheme = new TestTacticalActScheme
            {
                Stats = new TestTacticalActStatsSubScheme()
            };

            var perkMock = new Mock <IPerk>();

            perkMock.SetupGet(x => x.CurrentLevel).Returns(new PerkLevel(0, 0));
            perkMock.SetupGet(x => x.Scheme).Returns(new PerkScheme
            {
                Levels = new[] {
                    new PerkLevelSubScheme {
                        Rules = new [] {
                            new PerkRuleSubScheme {
                                Type  = PersonRuleType.Health,
                                Level = PersonRuleLevel.Lesser
                            }
                        }
                    }
                }
            });
            var perk = perkMock.Object;

            var stats = new SkillStatItem[0];

            var evolutionDataMock = new Mock <IEvolutionData>();

            evolutionDataMock.SetupGet(x => x.Perks).Returns(new[] { perk });
            evolutionDataMock.SetupGet(x => x.Stats).Returns(stats);
            var evolutionData = evolutionDataMock.Object;

            var survivalRandomSourceMock = new Mock <ISurvivalRandomSource>();
            var survivalRandomSource     = survivalRandomSourceMock.Object;



            // ACT
            var person = new HumanPerson(personScheme, defaultActScheme, evolutionData, survivalRandomSource);



            // ASSERT
            var testedStat = person.Survival.Stats.Single(x => x.Type == SurvivalStatType.Health);

            testedStat.Value.Should().Be(11);
        }