Beispiel #1
0
        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));
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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));
        }
Beispiel #8
0
        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);
        }