示例#1
0
            public Bonus(Character character, BonusCalculator bonusCalculator, string condition)
            {
                _character = character;
                _bonusCalculator = bonusCalculator;

                Condition = condition;
            }
        public void TestConditionalValues()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable);

            var bonusSource = new BonusSource(character, "Test");

            bonusSource.AddBonus("when foo", 2);
            bonusSource.AddBonus("when foo", 3);

            bonusSource.AddBonus("when bar", 1);

            IReadOnlyDictionary<string, int> actual = bonusSource.ConditionalValues;
            var expected = new Dictionary<string, int>()
            {
                {"when foo", 3},
                {"when bar", 1}
            };

            Assert.That(actual, Is.EquivalentTo(expected));
        }
示例#3
0
 public SkillScore(Character character, Skill skill, uint ranks = 0, IEnumerable<string> foci = null)
     : base(ranks, null)
 {
     Skill = skill;
     AttributeScore = character.GetAttributeScore(skill.PrimaryAttribute);
     Foci = new HashSet<string>(foci ?? new string[] { });
 }
示例#4
0
        public void TestGetAttributeScore()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable);

            var cases = new Dictionary<Attributes, Func<Character, AttributeScore>>()
            {
                { Attributes.Might, c => c.Might },
                { Attributes.Prowess, c => c.Prowess },
                { Attributes.Quickness, c => c.Quickness },
                { Attributes.Vigor, c => c.Vigor },
                { Attributes.Charisma, c => c.Charisma },
                { Attributes.Insight, c => c.Insight },
                { Attributes.Logic, c => c.Logic },
                { Attributes.Resolve, c => c.Resolve },
            };

            foreach (var kvp in cases)
            {
                Assert.That(kvp.Value(character), Is.EqualTo(character.GetAttributeScore(kvp.Key)));
            }
        }
        public void Reload()
        {
            if (FileName == null)
            {
                _character = new Character(_masterValuesTable);
                return;
            }

            var contents = File.ReadAllText(FileName);

            _character = JsonConvert.DeserializeObject<Character>(contents, _converter);
        }
示例#6
0
        public BonusSource(Character character, string name, BonusCalculator calculator = null)
        {
            Name = name;

            _character = character;
            _bonuses = new List<Bonus>();

            if (calculator != null)
            {
                AddBonus(calculator);
            }
        }
        private void SyncSkills(Character character, IEnumerable<SkillListing> skillListings)
        {
            var charSkillKeys = character.SkillScores.Select(s => s.Skill.CompoundKey);
            var missingSkills = from s in skillListings.SelectMany(s => s.GetSkills())
                                where !charSkillKeys.Contains(s.CompoundKey)
                                select new SkillScore(character, s);

            foreach (var skill in missingSkills)
            {
                character.SkillScores.Add(skill);
            }
        }
        public void TestValueWhenEmpty()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable);

            var bonusSource = new BonusSource(character, "Test");

            Assert.That(bonusSource.Value, Is.EqualTo(0));
        }
示例#9
0
        public void TestPassiveValue()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable) { Quickness = { Ranks = 3 } };

            var skillScore = new SkillScore(
                character,
                new Skill("foo", "Foo", Attributes.Quickness),
                3);
            
            Assert.That(skillScore.PassiveValue, Is.EqualTo(21), "Should be 12 + attribute passive + skill ranks");
        }
示例#10
0
        public void TestAvoidance()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable)
                                {
                                    Prowess = { Ranks = 2 },
                                    Insight = { Ranks = 3 },
                                };

            Assert.That(
                character.Avoidance.TotalScore,
                Is.EqualTo(22),
                "Avoidance should be 12 + Prowess passive + Insight passive.");
        }
示例#11
0
        public void TestFortitude()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable)
            {
                Might = { Ranks = 1 },
                Vigor = { Ranks = 1 },
            };

            Assert.That(
                character.Fortitude.TotalScore,
                Is.EqualTo(16),
                "Fortitude should be 12 + Might passive + Vigor passive.");
        }
示例#12
0
        public void TestPace()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable)
            {
                Quickness = { Ranks = 2 },
            };

            Assert.That(character.Pace.TotalScore, Is.EqualTo(4), "Pace should be Quickness passive");
        }
示例#13
0
        public void TestIntitiative()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable)
            {
                Quickness = { Ranks = 3 },
            };

            Assert.That(
                character.InitiativeRoll,
                Is.EqualTo(new DiceRoll(d10: 6)),
                "Initiative should be Quickness passive d10s");
        }
示例#14
0
 public Bonus(Character character, BonusCalculator bonusCalculator)
     : this(character, bonusCalculator, string.Empty)
 {
 }
示例#15
0
        public void TestWounds()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable)
            {
                Vigor = { Ranks = 1 },
            };

            Assert.That(character.Wounds.TotalScore, Is.EqualTo(3), "Wounds should be Vigor passive + 1");
        }
示例#16
0
        public void TestStamina()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable)
            {
                Prowess = { Ranks = 2 },
                Insight = { Ranks = 3 },

                Might = { Ranks = 1 },
                Vigor = { Ranks = 1 },

                Charisma = { Ranks = 2 },
                Resolve = { Ranks = 2 },
            };

            Assert.That(
                character.Avoidance.TotalScore,
                Is.EqualTo(22),
                "Avoidance should be 12 + Prowess passive + Insight passive.");

            Assert.That(
                character.Fortitude.TotalScore,
                Is.EqualTo(16),
                "Fortitude should be 12 + Might passive + Vigor passive.");

            Assert.That(
                character.Discipline.TotalScore,
                Is.EqualTo(20),
                "Discipline should be 12 + Charisma passive + Resolve passive.");

            Assert.That(character.Stamina.TotalScore, Is.EqualTo(58), "Stamina should be Avoidance + Fortitude + Discipline");
        }
示例#17
0
        public void TestDiscipline()
        {
            var masterValuesTable = new List<MasterValueRecord>();
            masterValuesTable.Add(new MasterValueRecord() { Score = 1, PassiveModifier = 2 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 2, PassiveModifier = 4 });
            masterValuesTable.Add(new MasterValueRecord() { Score = 3, PassiveModifier = 6 });

            var character = new Character(masterValuesTable)
            {
                Charisma = { Ranks = 2 },
                Resolve = { Ranks = 2 },
            };

            Assert.That(
                character.Discipline.TotalScore,
                Is.EqualTo(20),
                "Discipline should be 12 + Charisma passive + Resolve passive.");
        }