// 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 }
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()); }
public void TestDisplayKeenEnchantment() { var keen = new WeaponEnchantment("Keen"); Approvals.Verify(keen.ToString()); }
public void TestDisplayDistanceEnchantment() { var distance = new WeaponEnchantment("Distance"); Approvals.Verify(distance.ToString()); }
public void TestDisplayFlamingBurstEnchantment() { var flameBurst = new WeaponEnchantment("Flaming Burst"); Approvals.Verify(flameBurst.ToString()); }
public void TestDisplayAnarchicEnchantment() { var anarchic = new WeaponEnchantment("Anarchic"); Approvals.Verify(anarchic.ToString()); }
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()); }
public void RemoveEnchantment(WeaponEnchantment enchantment) => Enchantments.Remove(enchantment);
public void AddEnchantment(WeaponEnchantment enchantment) => Enchantments.Add(enchantment);