Esempio n. 1
0
        public int GenerateNumberOfSockets(ItemDefinition definition)
        {
            if (definition.IsSocketed && !definition.IsConsumable)
            {
                var result = _calculationService.GetRandomInteger(definition.MinimumSocket, definition.MaximumSocket, false);
                return(result);
            }

            return(0);
        }
Esempio n. 2
0
        public List <Property> GenerateProperties(int itemLevel, ItemDefinition definition, Rarity rarity, Initializer initializer)
        {
            var result     = new List <Property>();
            var properties = initializer.GetUsableProperties(definition.PropertyIds);
            var scaler     = _calculationService.GetScaledValue(itemLevel, initializer.ItemOverallLevelCap);

            // Implicit properties
            var implicitProperties = properties.Where(x => x.ImplicitProperty).ToList();

            if (implicitProperties.Count > 0)
            {
                foreach (var i in implicitProperties)
                {
                    var propertyValue  = GenerateItemPropertyValue(scaler, i);
                    var mappedProperty = MapProperty(i, propertyValue);
                    result.Add(mappedProperty);
                }
            }

            // Explicit Properties
            var propertiesTaken             = 0;
            var availableExplicitProperties = properties.Where(x => x.ImplicitProperty == false).ToList();
            var explicitPropertyCount       = _calculationService.GetRandomInteger(rarity.MinimumExplicitProperties, rarity.MaximumExplicitProperties, false);

            while (explicitPropertyCount > propertiesTaken && availableExplicitProperties.Count > 0 && !definition.IsConsumable)
            {
                var index         = _calculationService.GetRandomInteger(0, availableExplicitProperties.Count, true);
                var propertyToAdd = availableExplicitProperties[index];
                var propertyValue = GenerateItemPropertyValue(scaler, propertyToAdd);

                var property = MapProperty(propertyToAdd, propertyValue);
                result.Add(property);

                availableExplicitProperties.Remove(propertyToAdd);
                propertiesTaken++;
            }

            return(result);
        }
Esempio n. 3
0
        public int GenerateItemLevel(ItemDefinition definition, int level, int levelScale)
        {
            var minimumLevel = level - levelScale;
            var maximumLevel = level + levelScale;

            if (levelScale > 0)
            {
                if (minimumLevel < definition.MinimumDropLevel)
                {
                    minimumLevel = definition.MinimumDropLevel;
                }

                if (maximumLevel > definition.MaximumDropLevel)
                {
                    maximumLevel = definition.MaximumDropLevel;
                }
            }
            else
            {
                minimumLevel = definition.MinimumDropLevel;
                maximumLevel = definition.MaximumDropLevel;
            }


            var result = 0;

            if (definition.IgnoreMaximumDropLevel)
            {
                result = level;
            }
            else
            {
                result = _calculationService.GetRandomInteger(minimumLevel, maximumLevel, false);
            }

            return(result);
        }