示例#1
0
        public void CanHaveDamageResistance()
        {
            var dr = new EnergyResistance(5, "-");

            basicStats.AddDamageResistance(dr);
            Assert.Contains(dr, basicStats.EnergyResistance);
        }
示例#2
0
        public void EnergyResistanceOverTenThousandIsEqualToImmunity()
        {
            var dr        = new EnergyResistance(10000, "fire");
            var character = CharacterTestTemplates.AverageBob();

            character.Defense.AddDamageResistance(dr);
            AssertCharacter.IsImmuneTo("fire", character);
        }
示例#3
0
        public void Initialize(ComponentContainer components)
        {
            drCold = new EnergyResistance(5, "cold");
            drAcid = new EnergyResistance(5, "acid");
            var defense = components.Get <DefenseStats>();

            defense.AddDamageResistance(drCold);
            defense.AddDamageResistance(drAcid);
        }
示例#4
0
        public void Initialize(ComponentContainer components)
        {
            sorcerer = components.Get <ClassLevel>();
            var elementType = components.Get <ElementalType>();

            resistance = new EnergyResistance(10, elementType.EnergyType);
            var defense = components.Get <DefenseStats>();

            defense.AddDamageResistance(resistance);
        }
示例#5
0
        public void Initialize(ComponentContainer components)
        {
            this.sourceLevels = components.Get <ClassLevel>();
            var energyType = energyTypes.ChooseOne();

            damageResistance = new EnergyResistance(energyType, CalculateResistance);
            var defense = components.Get <DefenseStats>();

            defense.AddDamageResistance(damageResistance);
        }
示例#6
0
        public void EnergyResistanceCanLoadFromAConfigurationFile()
        {
            var yaml = @"---
damage-type: acid
base-value: 5";
            var res  = new EnergyResistance(yaml.ParseYaml());

            Assert.Equal("Energy Resistance (acid)", res.Name);
            Assert.Equal("acid", res.DamageType);
            Assert.Equal(5, res.TotalValue);
        }
示例#7
0
        public void CanBeMarkedAsImmunity()
        {
            var dr = new EnergyResistance(5, "fire");

            dr.SetToImmunity();
            var character = CharacterTestTemplates.AverageBob();

            character.Defense.AddDamageResistance(dr);
            AssertCharacter.IsImmuneTo("fire", character);
            Assert.Empty(character.Defense.EnergyResistance);
        }
示例#8
0
        public void Initialize(ComponentContainer components)
        {
            var level = components.Get <ClassLevel>();

            poisonResistance = new ConditionalStatModifier(new DelegateStatModifier("saves", "bonus", () => { return(level.Level >= 9 ? 4 : 2); }), "poison");
            damageResistance = new EnergyResistance(5, "electricity");
            var defense = components.Get <DefenseStats>();

            defense.FortitudeSave.AddModifier(poisonResistance);
            defense.ReflexSave.AddModifier(poisonResistance);
            defense.WillSave.AddModifier(poisonResistance);
            defense.AddDamageResistance(damageResistance);
        }
示例#9
0
 public void Initialize(ComponentContainer components)
 {
     sorcererLevels = components.Get <ClassLevel>();
     coldResistance = new EnergyResistance(5, "cold");
     nonLethal      = new DamageReduction("- vs. nonlethal", 0);
     nonLethal.AddModifier(new DelegateStatModifier(
                               nonLethal.Name,
                               "level-up",
                               () => { return(sorcererLevels.Level >= 9 ? 10 : 5); }
                               ));
     components.Add(coldResistance);
     components.Add(nonLethal);
 }
示例#10
0
        public void EnergyResistanceCanBeCalculated()
        {
            var energyType = new EnergyType();

            energyType.Name = "Fire";
            var dr = new EnergyResistance(
                energyType,
                () => { return(6 * 10); }
                );

            Assert.Equal("Fire", dr.DamageType);
            Assert.Equal(60, dr.Amount);
            Assert.Equal("Fire 60", dr.DisplayString());
        }
示例#11
0
        public void Initialize(ComponentContainer components)
        {
            var defense       = components.Get <DefenseStats>();
            var drElectricity = new EnergyResistance(10, "electricity");
            var drFire        = new EnergyResistance(10, "fire");

            defense.AddDamageResistance(drElectricity);
            defense.AddDamageResistance(drFire);
            defense.AddImmunity("acid");
            defense.AddImmunity("cold");
            defense.AddImmunity("petrification");
            var poisonResistance = new ConditionalStatModifier(new ValueStatModifier("saves", 4, "bonus"), "poison");

            defense.FortitudeSave.AddModifier(poisonResistance);
            defense.ReflexSave.AddModifier(poisonResistance);
            defense.WillSave.AddModifier(poisonResistance);
        }
示例#12
0
        public void Initialize(ComponentContainer components)
        {
            sorcererLevels = components.Get <ClassLevel>();
            fireResistance = new EnergyResistance(5, "fire");
            components.Get <DefenseStats>().AddDamageResistance(fireResistance);
            saveModifier = new ConditionalStatModifier
                           (
                new DelegateStatModifier("Saves",
                                         "bonus",
                                         () => { return(sorcererLevels.Level >= 9 ? 4 : 2); }
                                         ), "poison"
                           );
            var defense = components.Get <DefenseStats>();

            defense.FortitudeSave.AddModifier(saveModifier);
            defense.ReflexSave.AddModifier(saveModifier);
            defense.WillSave.AddModifier(saveModifier);
        }
示例#13
0
        public void Initialize(ComponentContainer components)
        {
            var dragon     = components.Get <IDraconicBloodline>();
            var energyType = dragon.DragonType.EnergyType;

            damageResistance = new EnergyResistance(5, energyType);
            var defense = components.Get <DefenseStats>();

            defense.AddDamageResistance(damageResistance);

            sorcererLevels = components.Get <ClassLevel>();

            naturalArmor = new DelegateStatModifier(
                StatNames.ArmorClass,
                "natural",
                GetNaturalArmorBonus
                );
            components.ApplyStatModifier(naturalArmor);
        }