Пример #1
0
        public void SometimesWantToDoForEveryFourInStatAddTwoSomewhereElse()
        {
            var character = CharacterTestTemplates.AverageBob();
            var yaml      = @"---
name: power attack
modifier: base attack bonus
modifier-type: circumstance
every: 4
add: 2";
            var statMod   = new StatisticStatModifier(yaml.ParseYaml());

            character.Add(statMod);
            Assert.Equal(0, statMod.Modifier);
            character.Offense.BaseAttackBonus.SetValue(3);
            Assert.Equal(0, statMod.Modifier);
            character.Offense.BaseAttackBonus.SetValue(4);
            Assert.Equal(2, statMod.Modifier);
            character.Offense.BaseAttackBonus.SetValue(7);
            Assert.Equal(2, statMod.Modifier);
            character.Offense.BaseAttackBonus.SetValue(8);
            Assert.Equal(4, statMod.Modifier);
            character.Offense.BaseAttackBonus.SetValue(11);
            Assert.Equal(4, statMod.Modifier);
            character.Offense.BaseAttackBonus.SetValue(12);
            Assert.Equal(6, statMod.Modifier);
        }
Пример #2
0
        public void Execute(ComponentContainer components)
        {
            var cmd    = components.FindStat <IValueStatistic>(StatNames.CMB);
            var strMod = cmd.Modifiers.OfType <StatisticStatModifier>().FirstOrDefault(x => x.TrackingStatName.EqualsIgnoreCase("strength-modifier"));

            if (strMod != null)
            {
                cmd.RemoveModifier(strMod);
            }

            var dexMod = new StatisticStatModifier(cmd.Name, components.FindStat <IValueStatistic>("dexterity-modifier"));

            cmd.AddModifier(dexMod);
        }
Пример #3
0
        public void IfStatisticToTrackCannotBeFoundThrowException()
        {
            var character = CharacterTestTemplates.AverageBob();
            var yaml      = @"---
name: hit points
modifier: some-missing-modifier
modifier-type: racial
condition: rain
multiplier: 1.5
";
            var mod       = new StatisticStatModifier(yaml.ParseYaml());

            Assert.Throws(typeof(StatisticNotFoundException), () => { character.Add(mod); });
        }
Пример #4
0
        public void LoadedFromYamlSpecificationWillProperlyFindStatistic()
        {
            var character = CharacterTestTemplates.AverageBob();

            character.AbilityScores.SetScore(AbilityScoreTypes.Strength, 16);
            var yaml     = @"---
name: hit points
modifier: strength-modifier
modifier-type: racial
condition: rain
";
            var modifier = new StatisticStatModifier(yaml.ParseYaml());

            character.Add(modifier);
            Assert.Equal("hit points", modifier.StatisticName);
            Assert.Equal("racial", modifier.ModifierType);
            Assert.Equal("rain", modifier.Condition);
            Assert.Equal(1, modifier.Multiplier);
            Assert.Equal(3, modifier.Modifier);
        }
Пример #5
0
        public void CanHaveAMultiplierToAdjustValues()
        {
            var character = CharacterTestTemplates.AverageBob();

            character.AbilityScores.SetScore(AbilityScoreTypes.Strength, 16);
            var yaml     = @"---
name: hit points
modifier: strength-modifier
modifier-type: racial
condition: rain
multiplier: 1.5
";
            var modifier = new StatisticStatModifier(yaml.ParseYaml());

            character.Add(modifier);
            Assert.Equal("hit points", modifier.StatisticName);
            Assert.Equal("racial", modifier.ModifierType);
            Assert.Equal("rain", modifier.Condition);
            Assert.Equal(1.5f, modifier.Multiplier);
            Assert.Equal(4.5f, modifier.Modifier);
        }