public Item Generate(string power, string itemName, params string[] traits) { var rodName = GetRodName(itemName); var powers = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.PowerGroups, rodName); var adjustedPower = PowerHelper.AdjustPower(power, powers); var tablename = string.Format(TableNameConstants.Percentiles.Formattable.POWERITEMTYPEs, adjustedPower, ItemTypeConstants.Rod); var results = typeAndAmountPercentileSelector.SelectAllFrom(tablename); var matches = results.Where(r => r.Type == rodName).ToList(); var match = collectionsSelector.SelectRandomFrom(matches); return(GenerateRod(match.Type, match.Amount, traits)); }
public void ArmorPowerGroupsMatch(string itemName) { var possiblePowers = new List <string>(); var powers = table[ItemTypeConstants.Armor]; possiblePowers.AddRange(powers); var generalArmors = ArmorConstants.GetAllArmorsAndShields(false); var shields = ArmorConstants.GetAllShields(true); var cursed = percentileSelector.SelectAllFrom(TableNameConstants.Percentiles.Set.SpecificCursedItems); if (!generalArmors.Contains(itemName)) { var gearType = shields.Contains(itemName) ? AttributeConstants.Shield : ItemTypeConstants.Armor; possiblePowers.Remove(PowerConstants.Mundane); if (!cursed.Contains(itemName)) { foreach (var power in powers.Except(new[] { PowerConstants.Mundane })) { var tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERSpecificITEMTYPEs, power, gearType); var results = typeAndAmountPercentileSelector.SelectAllFrom(tableName); if (!results.Any(r => NameMatchesWithReplacements(r.Type, itemName))) { possiblePowers.Remove(power); } } } } base.Collections(itemName, possiblePowers.ToArray()); }
public Item Generate(string power, string itemName, params string[] traits) { var possiblePowers = collectionSelector.SelectFrom(TableNameConstants.Collections.Set.PowerGroups, itemName); var adjustedPower = PowerHelper.AdjustPower(power, possiblePowers); var tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERITEMTYPEs, adjustedPower, ItemTypeConstants.Potion); var results = typeAndAmountPercentileSelector.SelectAllFrom(tableName); var matches = results.Where(r => NameMatches(r.Type, itemName)); var result = collectionSelector.SelectRandomFrom(matches); return(GeneratePotion(result.Type, result.Amount, traits)); }
public Item Generate(string power, string itemName, params string[] traits) { var staffName = GetStaffName(itemName); var powers = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.PowerGroups, staffName); var adjustedPower = PowerHelper.AdjustPower(power, powers); var tablename = string.Format(TableNameConstants.Percentiles.Formattable.POWERITEMTYPEs, adjustedPower, ItemTypeConstants.Staff); var selections = typeAndAmountPercentileSelector.SelectAllFrom(tablename); var matches = selections.Where(s => s.Type == staffName).ToList(); var selection = collectionsSelector.SelectRandomFrom(matches); return(GenerateStaff(selection.Type, selection.Amount, traits)); }
public Item GeneratePrototypeFrom(string power, string specificGearType, string name, params string[] traits) { var possiblePowers = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.PowerGroups, name); var adjustedPower = PowerHelper.AdjustPower(power, possiblePowers); var tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERSpecificITEMTYPEs, adjustedPower, specificGearType); var selections = typeAndAmountPercentileSelector.SelectAllFrom(tableName); selections = selections.Where(s => NameMatchesWithReplacements(name, s.Type)); var selection = collectionsSelector.SelectRandomFrom(selections); var gear = new Item(); gear.Name = selection.Type; gear.BaseNames = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.ItemGroups, selection.Type); gear.ItemType = GetItemType(specificGearType); gear.Magic.Bonus = selection.Amount; gear.Quantity = 0; gear.Traits = new HashSet <string>(traits); return(gear); }
public Item Generate(string power, string itemName, params string[] traits) { var possiblePowers = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.PowerGroups, itemName); var adjustedPower = PowerHelper.AdjustPower(power, possiblePowers); var tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERITEMTYPEs, adjustedPower, ItemTypeConstants.WondrousItem); var results = typeAndAmountPercentileSelector.SelectAllFrom(tableName); var matches = results.Where(r => r.Type == itemName); var result = collectionsSelector.SelectRandomFrom(matches); var item = BuildWondrousItem(itemName, traits); item.Magic.Bonus = result.Amount; return(item); }
public void SelectAllResults() { mockPercentileSelector.Setup(p => p.SelectAllFrom("table name")).Returns(new[] { "type,amount", "other type,other amount" }); SetUpRoll("other amount", 90210); var results = typeAndAmountPercentileSelector.SelectAllFrom("table name"); Assert.That(results.Count(), Is.EqualTo(2)); var first = results.First(); var last = results.Last(); Assert.That(first.Type, Is.EqualTo("type")); Assert.That(first.Amount, Is.EqualTo(9266)); Assert.That(last.Type, Is.EqualTo("other type")); Assert.That(last.Amount, Is.EqualTo(90210)); }
public Item Generate(string itemName, params string[] traits) { var selections = typeAndAmountPercentileSelector.SelectAllFrom(TableNameConstants.Percentiles.Set.AlchemicalItems); var selection = selections.FirstOrDefault(s => s.Type == itemName); if (selection == null) { selection = new TypeAndAmountSelection(); selection.Type = itemName; selection.Amount = 1; } var item = new Item(); item.Name = itemName; item.Quantity = selection.Amount; item.ItemType = ItemTypeConstants.AlchemicalItem; item.BaseNames = new[] { itemName }; item.Traits = new HashSet <string>(traits); return(item); }