Ejemplo n.º 1
0
        // User selects enchant
        private void EnchantmentOption()
        {
            ObjectMenu <WeaponEnchantment> menu =
                new ObjectMenu <WeaponEnchantment>(shop.Enchantments, Status);
            WeaponEnchantment enchantment = menu.Run();

            if (enchantment != null)
            {
                if (enchantment.Cost <= player.Gold)
                {
                    ObjectMenu <Weapon> weaponMenu = new ObjectMenu <Weapon>(player.Inventory.Weapons, "Select weapon to enchant");
                    Weapon weapon = weaponMenu.Run();
                    if (weapon != null)
                    {
                        player.RemoveGold(enchantment.Cost);
                        weapon.AddEnchantment(enchantment);
                    }
                }
                else
                {
                    Console.WriteLine(INSUFFCIENT_FUNDS_PROMPT);
                }
            }

            this.Run(); // Run this menu again
        }
Ejemplo n.º 2
0
        public void TestKeenAnarchicFlamingBurstDagger()
        {
            var plusWeapon = new PlusEnhancedWeapon(new ForgedWeapon(new PhbWeapon("Dagger"), new Masterwork()), 4);

            plusWeapon.NameWeapon("Boring dagger");
            var flamingBurst = new WeaponEnchantment("Flaming Burst");
            var keen         = new WeaponEnchantment("Keen");
            var anarchic     = new WeaponEnchantment("Anarchic");
            var distance     = new WeaponEnchantment("Distance");

            plusWeapon.EnableLightGeneration();
            List <IWeaponEnchantment> enchantments = new List <IWeaponEnchantment>()
            {
                anarchic, distance, flamingBurst, keen,
            };
            var flamingBurstDagger = new EnchantedMagicWeapon(plusWeapon, enchantments);

            flamingBurstDagger.NameWeapon("Totally Awesome Slashy Pokey Death from Far Far Away!");
            var sb = new StringBuilder(string.Format("Min. Caster Lvl: {0}", flamingBurstDagger.MinimumCasterLevel));

            Approvals.Verify(flamingBurstDagger.ToString());
        }
Ejemplo n.º 3
0
        public void TestDisplayKeenEnchantment()
        {
            var keen = new WeaponEnchantment("Keen");

            Approvals.Verify(keen.ToString());
        }
Ejemplo n.º 4
0
        public void TestDisplayDistanceEnchantment()
        {
            var distance = new WeaponEnchantment("Distance");

            Approvals.Verify(distance.ToString());
        }
Ejemplo n.º 5
0
        public void TestDisplayFlamingBurstEnchantment()
        {
            var flameBurst = new WeaponEnchantment("Flaming Burst");

            Approvals.Verify(flameBurst.ToString());
        }
Ejemplo n.º 6
0
        public void TestDisplayAnarchicEnchantment()
        {
            var anarchic = new WeaponEnchantment("Anarchic");

            Approvals.Verify(anarchic.ToString());
        }
Ejemplo n.º 7
0
        public void TestBlah()
        {
            var dagger       = new PhbWeapon("Dagger");
            var forgedDagger = new ForgedWeapon(new ForgedWeapon(dagger, new ColdIron()), new Masterwork());
            var distance     = new WeaponEnchantment("Distance");
            var anarchic     = new WeaponEnchantment("Anarchic");
            var keen         = new WeaponEnchantment("Keen");
            var flameBurst   = new WeaponEnchantment("Flaming Burst");
            //var flameBurst1 = new WeaponEnchantment("Flaming Burst");
            //var flameBurst2 = new WeaponEnchantment("Flaming Burst");
            var plusEnhancement = 4;
            List <WeaponEnchantment> enchantmentClump = new List <WeaponEnchantment>();

            enchantmentClump.Add(distance);
            enchantmentClump.Add(anarchic);
            enchantmentClump.Add(keen);
            enchantmentClump.Add(flameBurst);
            //enchantmentClump.Add(flameBurst1);
            //enchantmentClump.Add(flameBurst2);

            //var enchantmentTotals = from clump in enchantmentClump
            //                        select clump.CostModifier;

            var enchantmentTotals = enchantmentClump.Select(c => c.CostModifier).ToList();

            //var totalEnchantmentModifier = enchantmentTotals.ToList();
            enchantmentTotals.Add(plusEnhancement);

            var enchantmentTotal = enchantmentTotals.Sum();


            var prefixes = from clump in enchantmentClump
                           where clump.Affix.Contains("Pre")
                           select clump;

            var prefixCount = prefixes.Count();

            var suffixes = from clump in enchantmentClump
                           where clump.Affix.Contains("Suf")
                           select clump;

            var suffixCount = suffixes.Count();

            var casterLevels = from clump in enchantmentClump
                               select clump.MinimumCasterLevel;

            var highestCasterLevel = casterLevels.ToList();

            highestCasterLevel.Add((plusEnhancement * 3));

            var criticalDamage = from clump in enchantmentClump
                                 where clump.DoesCriticalDamage == true
                                 select clump;

            var critCount = criticalDamage.Count();

            var rangeMod = from clump in enchantmentClump
                           where clump.RangeIncrementModifier != 1
                           select clump.RangeIncrementModifier;
            double greatestRangeIncrease = rangeMod.Max();


            var sb = new StringBuilder();

            sb.Append(string.Format("+{0} ", plusEnhancement));

            foreach (var prefix in prefixes)
            {
                if (prefixCount > 1)
                {
                    sb.Append(string.Format("{0} (+{1} bonus)", prefix.EnchantmentName, prefix.CostModifier));
                    sb.Append(", ");
                    prefixCount--;
                }
                else
                {
                    sb.Append(string.Format("{0} (+{1} bonus)", prefix.EnchantmentName, prefix.CostModifier));
                }
            }

            sb.Append(string.Format(" {0}", forgedDagger.WeaponName));

            foreach (var suffix in suffixes)
            {
                while (suffixCount > 0)
                {
                    sb.Append(" of ");
                    sb.Append(string.Format("{0} (+{1} bonus)", suffix.EnchantmentName, suffix.CostModifier));
                    suffixCount--;
                }
            }

            var critSb = new StringBuilder();

            foreach (var critDie in criticalDamage)
            {
                while (critCount > 0)
                {
                    string critDice = string.Empty;
                    if (forgedDagger.CriticalDamage == "x2")
                    {
                        critDice = "1d10";
                    }
                    else if (forgedDagger.CriticalDamage == "x3")
                    {
                        critDice = "2d10";
                    }
                    else
                    {
                        critDice = "3d10";
                    }
                    critSb.Append(string.Format(" '+{0} ({1})'", critDice, critDie.DamageType));

                    critCount--;
                }
            }

            sb.Append(string.Format("{0}Total enchantment modifier: '{1}'", Environment.NewLine, enchantmentTotal));
            sb.Append(string.Format("{0}Total enhancement cost: '{1}'", Environment.NewLine, ((Math.Pow(enchantmentTotal, 2) * 2000) + forgedDagger.WeaponCost + forgedDagger.AdditionalEnchantmentCost)));
            sb.Append(string.Format("{0}Required caster level: {1}", Environment.NewLine, highestCasterLevel.Max()));
            sb.Append(string.Format("{0}Critical damage dice:{1}", Environment.NewLine, critSb));
            sb.Append(string.Format("{0}Range increment: {1} feet for {2} (was {3} feet for {4} feet)", Environment.NewLine, (forgedDagger.RangeIncrement * greatestRangeIncrease), (dagger.MaxRange * greatestRangeIncrease), dagger.RangeIncrement, dagger.MaxRange));

            Approvals.Verify(sb.ToString());
        }
Ejemplo n.º 8
0
 public void RemoveEnchantment(WeaponEnchantment enchantment) => Enchantments.Remove(enchantment);
Ejemplo n.º 9
0
 public void AddEnchantment(WeaponEnchantment enchantment) => Enchantments.Add(enchantment);