예제 #1
0
        public void ArmorTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            // Add ArmorValue 6 Armor to the character. Their total Armor should be 6 with a Encumbrance penalty of 0 since there is nothing with a +value.
            Armor objArmor = new Armor(objCharacter);
            objArmor.ArmorValue = "6";
            objCharacter.Armor.Add(objArmor);

            Assert.AreEqual(6, objCharacter.ArmorValue, "ArmorValue does not equal the expected value of 6.");
            Assert.AreEqual(6, objCharacter.TotalArmorValue, "TotalArmorValue does not equal the expected value of 6.");
            Assert.AreEqual(0, objCharacter.ArmorEncumbrance, "ArmorEncumbrance does not equal the expected value of 0.");

            // Add an Armor Mod to the Armor. This should bring the Armor value up to 8.
            ArmorMod objMod = new ArmorMod(objCharacter);
            objMod.ArmorValue = 2;
            objCharacter.Armor[0].ArmorMods.Add(objMod);

            Assert.AreEqual(8, objCharacter.ArmorValue, "ArmorValue does not equal the expected value of 8.");
            Assert.AreEqual(8, objCharacter.TotalArmorValue, "TotalArmorValue does not equal the expected value of 8.");
            Assert.AreEqual(0, objCharacter.ArmorEncumbrance, "ArmorEncumbrance does not equal the expected value of 0.");

            // Add an additional +6 value Armor to the character. Their total Aromr should be 14 with an Encumbrance penalty of 2.
            Armor objPlusArmor = new Armor(objCharacter);
            objPlusArmor.ArmorValue = "+6";
            objCharacter.Armor.Add(objPlusArmor);

            Assert.AreEqual(14, objCharacter.ArmorValue, "ArmorValue does not equal the expected value of 14.");
            Assert.AreEqual(14, objCharacter.TotalArmorValue, "TotalArmorValue does not equal the expected value of 14.");
            Assert.AreEqual(2, objCharacter.ArmorEncumbrance, "ArmorEncumbrance does not equal the expected value of 2.");

            // Increase the character's STR to 4. This should reduce the Armor Encumbrance penalty to 1.
            objCharacter.STR.Value = 4;

            Assert.AreEqual(14, objCharacter.ArmorValue, "ArmorValue does not equal the expected value of 14.");
            Assert.AreEqual(14, objCharacter.TotalArmorValue, "TotalArmorValue does not equal the expected value of 14.");
            Assert.AreEqual(1, objCharacter.ArmorEncumbrance, "ArmorEncumbrance does not equal the expected value of 1.");

            // Unequipping the Armor Mod should reduce the Armor value down to 12.
            objCharacter.Armor[0].ArmorMods[0].Equipped = false;

            Assert.AreEqual(12, objCharacter.ArmorValue, "ArmorValue does not equal the expected value of 12.");
            Assert.AreEqual(12, objCharacter.TotalArmorValue, "TotalArmorValue does not equal the expected value of 12.");
            Assert.AreEqual(1, objCharacter.ArmorEncumbrance, "ArmorEncumbrance does not equal the expected value of 1.");

            // Unequipping the +value Armor should put the character back to Armor 6 with no Encumbrance penalty.
            objCharacter.Armor[1].Equipped = false;

            Assert.AreEqual(6, objCharacter.ArmorValue, "ArmorValue does not equal the expected value of 6.");
            Assert.AreEqual(6, objCharacter.TotalArmorValue, "TotalArmorValue does not equal the expected value of 6.");
            Assert.AreEqual(0, objCharacter.ArmorEncumbrance, "ArmorEncumbrance does not equal the expected value of 0.");
        }
예제 #2
0
        public void CreateAllCritterPowersTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("critterpowers.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/powers/power"))
            {
                CritterPower objPower = new CritterPower(objCharacter);
                objPower.Create(objXmlNode, objCharacter, objNode, 0, "", false);
            }
        }
예제 #3
0
        public void CreateAllArmorTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();
            ContextMenuStrip cmsArmor = new ContextMenuStrip();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("armor.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/armors/armor"))
            {
                Armor objArmor = new Armor(objCharacter);
                objArmor.Create(objXmlNode, objNode, cmsArmor);
            }
        }
예제 #4
0
        public void CreateAllArmorModsTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();
            List<Weapon> lstWeapons = new List<Weapon>();
            List<TreeNode> lstTreeNodes = new List<TreeNode>();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("armor.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/mods/mod"))
            {
                ArmorMod objMod = new ArmorMod(objCharacter);
                objMod.Create(objXmlNode, objNode, 1, lstWeapons, lstTreeNodes);
            }
        }
예제 #5
0
        public void CreateAllMetamagicsTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();
            ContextMenuStrip cmsGear = new ContextMenuStrip();
            List<Weapon> lstWeapons = new List<Weapon>();
            List<TreeNode> lstTreeNodes = new List<TreeNode>();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("metamagics.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/metamagics/metamagic"))
            {
                Metamagic objMetamagic = new Metamagic(objCharacter);
                objMetamagic.Create(objXmlNode, objCharacter, objNode, Improvement.ImprovementSource.Metamagic);
            }
        }
예제 #6
0
        public void CMOverflowTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            // Set the character's BOD to 4 and verify the Overflow.
            objCharacter.BOD.Value = 4;
            Assert.AreEqual(5, objCharacter.CMOverflow, "CM Overflow does not equal the expected value of 5.");

            // Add an Overflow Improvement and verify it is correct.
            Improvement objImprovement = new Improvement();
            objImprovement.ImproveType = Improvement.ImprovementType.CMOverflow;
            objImprovement.Value = 1;
            objImprovement.ImproveSource = Improvement.ImprovementSource.Quality;
            objCharacter.Improvements.Add(objImprovement);

            Assert.AreEqual(6, objCharacter.CMOverflow, "CM Overflow does not equal the expected value of 6.");
        }
예제 #7
0
        public void CreateAllBiowareTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();
            List<Weapon> lstWeapons = new List<Weapon>();
            List<TreeNode> lstTreeNodes = new List<TreeNode>();

            GradeList objGradeList = new GradeList();
            objGradeList.LoadList(Improvement.ImprovementSource.Bioware);

            XmlDocument objXmlDocument = XmlManager.Instance.Load("bioware.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/biowares/bioware"))
            {
                Cyberware objCyberware = new Cyberware(objCharacter);
                objCyberware.Create(objXmlNode, objCharacter, objGradeList.GetGrade("Standard"), Improvement.ImprovementSource.Bioware, 1, objNode, lstWeapons, lstTreeNodes);
            }
        }
예제 #8
0
        public void CreateAllQualitiesTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));
            objCharacter.AdeptEnabled = true;
            objCharacter.MagicianEnabled = true;
            TreeNode objNode = new TreeNode();
            List<Weapon> lstWeapons = new List<Weapon>();
            List<TreeNode> lstTreeNodes = new List<TreeNode>();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("qualities.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/qualities/quality"))
            {
                Quality objQuality = new Quality(objCharacter);
                objQuality.Create(objXmlNode, objCharacter, QualitySource.Selected, objNode, lstWeapons, lstTreeNodes);
            }
        }
예제 #9
0
        public void EssenceCyberwareOnlyTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            Cyberware objCyberware = new Cyberware(objCharacter);
            objCyberware.ESS = "0.3";
            objCharacter.Cyberware.Add(objCyberware);

            Assert.AreEqual(5.7m, objCharacter.Essence, "Essence does not equal the expected value of 5.7.");
            Assert.AreEqual(1, objCharacter.EssencePenalty, "Essence Penalty does not equal the expected value of 1.");
        }
예제 #10
0
        public void EssenceCyberwareAndBiowareTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            Cyberware objCybeware = new Cyberware(objCharacter);
            objCybeware.SourceType = Improvement.ImprovementSource.Cyberware;
            objCybeware.ESS = "0.6";

            Cyberware objBioware = new Cyberware(objCharacter);
            objBioware.SourceType = Improvement.ImprovementSource.Bioware;
            objBioware.ESS = "0.4";

            objCharacter.Cyberware.Add(objCybeware);
            objCharacter.Cyberware.Add(objBioware);

            // Bioware Essence should only be 0.2 since the lower of the Cyberware/Bioware totals is halved.
            Assert.AreEqual(5.2m, objCharacter.Essence, "Essence does not equal the expected value of 5.6.");
            Assert.AreEqual(0.6m, objCharacter.CyberwareEssence, "Cyberware Essence does not equal the expected value of 0.6.");
            Assert.AreEqual(0.2m, objCharacter.BiowareEssence, "Bioware Essence does not equal the expected value of 0.2.");
        }
예제 #11
0
        public void CMThresholdTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            // Verify that the character's Treshold is correct.
            Assert.AreEqual(3, objCharacter.CMThreshold, "CM Threshold does not equal the expected value of 3.");

            // Add a Threshold Improvement and verify it is correct.
            Improvement objImprovement = new Improvement();
            objImprovement.ImproveType = Improvement.ImprovementType.CMThreshold;
            objImprovement.Value = 1;
            objImprovement.ImproveSource = Improvement.ImprovementSource.Quality;
            objCharacter.Improvements.Add(objImprovement);

            Assert.AreEqual(4, objCharacter.CMThreshold, "CM Threshold does not equal the expected value of 4.");
        }
예제 #12
0
        public void CreateAllWeaponModsTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("weapons.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/mods/mod"))
            {
                WeaponMod objMod = new WeaponMod(objCharacter);
                objMod.Create(objXmlNode, objNode);
            }
        }
예제 #13
0
        public void StandardAttributeTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            // Test the standard Attribute ranges.
            Assert.AreEqual(1, objCharacter.BOD.MetatypeMinimum, "BOD Minimum is not equal to the expected value of 1.");
            Assert.AreEqual(6, objCharacter.BOD.MetatypeMaximum, "BOD Maximum is not equal to the expected value of 6.");
            Assert.AreEqual(9, objCharacter.BOD.MetatypeAugmentedMaximum, "BOD Augmented Maximum is not equal to the expected value of 9.");

            // Try to go outside of the standard minimum and maximum values.
            objCharacter.BOD.Value = 10;
            Assert.AreEqual(6, objCharacter.BOD.TotalValue, "BOD value was able to extend beyond the Maximum value of 6.");
            objCharacter.BOD.Value = -10;
            Assert.AreEqual(1, objCharacter.BOD.TotalValue, "BOD value was able to extend beyond the Minimum value of 1.");

            // Make sure that adding an Improvement that would extend the Attribute's maximum range still only returns the absolute maximum.
            Improvement objImprovement = new Improvement();
            objImprovement.ImproveType = Improvement.ImprovementType.Attribute;
            objImprovement.Augmented = 20;
            objImprovement.ImprovedName = "BOD";
            objImprovement.CustomName = "BOD Value Improvement";
            objImprovement.ImproveSource = Improvement.ImprovementSource.Quality;
            objCharacter.Improvements.Add(objImprovement);
            Assert.AreEqual(9, objCharacter.BOD.TotalValue, "BOD value can extend beyond the Augmented Maximum value of 9.");

            // Increase the Attribute's augmented maximum and verify that the new maximum value from Improvements is correct.
            Improvement objSecondImprovement = new Improvement();
            objSecondImprovement.ImproveType = Improvement.ImprovementType.Attribute;
            objSecondImprovement.AugmentedMaximum = 1;
            objSecondImprovement.ImprovedName = "BOD";
            objSecondImprovement.CustomName = "BOD Augmented Maximum Improvement";
            objSecondImprovement.ImproveSource = Improvement.ImprovementSource.Quality;
            objCharacter.Improvements.Add(objSecondImprovement);
            Assert.AreEqual(10, objCharacter.BOD.TotalValue, "BOD value increased Augmented Maximum is not the expected value of 10.");
        }
예제 #14
0
        public void CreateAllWeaponsTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();
            ContextMenuStrip cmsWeapon = new ContextMenuStrip();
            ContextMenuStrip cmsWeaponAccessory = new ContextMenuStrip();
            ContextMenuStrip cmsWeaponMod = new ContextMenuStrip();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("weapons.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/weapons/weapon"))
            {
                Weapon objWeapon = new Weapon(objCharacter);
                objWeapon.Create(objXmlNode, objCharacter, objNode, cmsWeapon, cmsWeaponAccessory, cmsWeaponMod, true);
            }
        }
예제 #15
0
        public void SpecialAttributeTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            // Test the standard Attribute ranges.
            Assert.AreEqual(1, objCharacter.MAG.MetatypeMinimum, "MAG Minimum is not equal to the expected value of 1.");
            Assert.AreEqual(6, objCharacter.MAG.MetatypeMaximum, "MAG Maximum is not equal to the expected value of 6.");
            Assert.AreEqual(6, objCharacter.MAG.MetatypeAugmentedMaximum, "MAG Augmented Maximum is not equal to the expected value of 6.");

            // Try to go outside of the standard minimum and maximum values.
            objCharacter.MAG.Value = 10;
            Assert.AreEqual(6, objCharacter.MAG.TotalValue, "MAG value was able to extend beyond the Maximum value of 6.");
            objCharacter.MAG.Value = -10;
            Assert.AreEqual(1, objCharacter.MAG.TotalValue, "MAG value was able to extend beyond the Minimum value of 1.");

            // Set the character's MAG to 5, then apply an Essence penalty through Cyberware.
            objCharacter.MAG.Value = 5;

            // MAG should be 4 after adding an Essence Penalty.
            Cyberware objCyberware = new Cyberware(objCharacter);
            objCyberware.ESS = "0.3";
            objCharacter.Cyberware.Add(objCyberware);
            Assert.AreEqual(4, objCharacter.MAG.TotalValue, "MAG value after an Essence reduction is not equal to the expected value of 4.");
        }
예제 #16
0
        public void CreateAllVehiclesTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();
            ContextMenuStrip cmsVehicle = new ContextMenuStrip();
            ContextMenuStrip cmsVehicleGear = new ContextMenuStrip();
            ContextMenuStrip cmsVehicleWeapon = new ContextMenuStrip();
            ContextMenuStrip cmsVehicleWeaponAccessory = new ContextMenuStrip();
            ContextMenuStrip cmsVehicleWeaponMod = new ContextMenuStrip();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("vehicles.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/vehicles/vehicle"))
            {
                Vehicle objVehicle = new Vehicle(objCharacter);
                objVehicle.Create(objXmlNode, objNode, cmsVehicle, cmsVehicleGear, cmsVehicleWeapon, cmsVehicleWeaponAccessory, cmsVehicleWeaponMod);
            }
        }
예제 #17
0
        public void StunCMTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            // Set the character's WIL to 4 and verify that they have 10 boxes in their Stun Condition Monitor.
            objCharacter.WIL.Value = 4;
            Assert.AreEqual(10, objCharacter.StunCM, "Stun CM does not equal the expected value of 10.");

            // Set the character's WIL to 5 and verify that they have 11 boxes in their Stun Condition Monitor.
            objCharacter.WIL.Value = 5;
            Assert.AreEqual(11, objCharacter.StunCM, "Stun CM does not equal the expected value of 11.");
        }
예제 #18
0
        public void CreateAllProgramsTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("programs.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/programs/program"))
            {
                TechProgram objProgram = new TechProgram(objCharacter);
                objProgram.Create(objXmlNode, objCharacter, objNode, "", false);
            }
        }
예제 #19
0
        public void WeaponTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            // Add a Combat Axe.
            Weapon objWeapon = new Weapon(objCharacter);
            objWeapon.Category = "Blades";
            objWeapon.WeaponType = "Melee";
            objWeapon.Spec = "Axes";
            objWeapon.Reach = 2;
            objWeapon.Damage = "(STR/2+9)P";
            objWeapon.AP = "-4";
            objWeapon.RC = "0";
            objWeapon.Accuracy = "4";
            objWeapon.Ammo = "0";
            objWeapon.Concealability = 0;
            objWeapon.Avail = "9R";
            objWeapon.Cost = 500;
            objWeapon.Source = "SR5";
            objWeapon.Page = "900";

            // Add the Weapon to the character.
            objCharacter.Weapons.Add(objWeapon);

            // Set the character's Blades Skill to 3.
            Skill objSkill = new Skill(objCharacter);
            objSkill = objCharacter.Skills.Find(o => o.DisplayName == "Blades");
            objSkill.Rating = 3;

            // Set the character's STR to 4 and make sure the Weapon attributes are calculated correctly.
            objCharacter.STR.Value = 4;
            Assert.AreEqual("11P", objWeapon.CalculatedDamage(), "Weapon DV does not match the expected value of 11P.");
            // Dice Pool should be 4 since the character has Blades 3 + AGI 1.
            Assert.AreEqual("4", objWeapon.DicePool, "Weapon Dice Pool does not match the expected value of 4.");
            // Add the Specialization to the Skill and check its value again. Should be 4 (6).
            objSkill.Specialization = "Axes";
            Assert.AreEqual("4 (6)", objWeapon.DicePool, "Weapon Dice Pool with Specialization does not match the expected value of 4 (6).");

            // Set the character's STR to 5 and make sure the Weapon attributes are calculated correctly. DV should be 12 since fractions are rounded up.
            objCharacter.STR.Value = 5;
            Assert.AreEqual("12P", objWeapon.CalculatedDamage(), "Weapon DV does not match the expected value of 11P.");
        }
예제 #20
0
        public void CreateAllSpellsTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("spells.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/spells/spell"))
            {
                Spell objSpell = new Spell(objCharacter);
                objSpell.Create(objXmlNode, objCharacter, objNode, "", false, false, false);
            }
        }
예제 #21
0
        public void CreateAllGearTest()
        {
            // Create a new Human character.
            Character objCharacter = new Character();
            objCharacter.LoadMetatype(Guid.Parse("e28e7075-f635-4c02-937c-e4fc61c51602"));

            TreeNode objNode = new TreeNode();
            ContextMenuStrip cmsGear = new ContextMenuStrip();
            List<Weapon> lstWeapons = new List<Weapon>();
            List<TreeNode> lstTreeNodes = new List<TreeNode>();

            XmlDocument objXmlDocument = XmlManager.Instance.Load("gear.xml");
            foreach (XmlNode objXmlNode in objXmlDocument.SelectNodes("/chummer/gears/gear"))
            {
                Gear objGear = new Gear(objCharacter);
                objGear.Create(objXmlNode, objCharacter, objNode, 1, lstWeapons, lstTreeNodes);
            }
        }