예제 #1
0
        public ParseResult Parse(PartialItemParserParameter parameter)
        {
            var(item, _, entity, baseItemDefinition, localSource, globalSource) = parameter;
            var itemTags = baseItemDefinition.Tags;

            var results = new List <ParseResult>(1 + item.Modifiers.Count)
            {
                ParseBuffStats(entity, itemTags, localSource, baseItemDefinition.BuffStats)
            };

            foreach (var modifier in item.Modifiers)
            {
                if (ModifierLocalityTester.AffectsProperties(modifier, itemTags))
                {
                    results.Add(ParsePropertyModifier(localSource, entity, modifier));
                }
                else if (ModifierLocalityTester.IsLocal(modifier, itemTags))
                {
                    results.Add(ParseLocalModifier(itemTags, localSource, entity, modifier));
                }
                else
                {
                    results.Add(ParseGlobalModifier(itemTags, globalSource, entity, modifier));
                }
            }
            return(ParseResult.Aggregate(results));
        }
 public bool AffectsPropertiesReturnsCorrectResultForFlask(string modifier)
 => ModifierLocalityTester.AffectsProperties(modifier, Tags.Flask);
 public bool AffectsPropertiesReturnsCorrectResultForGeneric(string modifier)
 => ModifierLocalityTester.AffectsProperties(modifier, Tags.Default);