private void SetItemRarity(GenericItem baseItem, ModifiableItem item, float soulEnergyLevel) { float rand = Random.Range(0, 1f); rand = Mathf.Min(rand * (1 + Mathf.Lerp(0, 0.15f, soulEnergyLevel)), 1); //normal if (rand <= normalDropLimit) { item.rarity = Rank.Normal; return; } //rare+ foreach (var modifier in item.modifiers) { modifier.value *= 1 + PlayerInfo.GetGlobalParameters().rareValueImprovement; modifier.rarity = Rank.Rare; } if (rand <= rareDropLimit) { item.rarity = Rank.Rare; return; } //epic+ item.AddModifier(baseItem.GetRandomModifier(Rank.Epic), baseItem.modifierQuality); if (rand <= epicDropLimit || baseItem.legendaryModifiers.Count < 1) { item.rarity = Rank.Epic; return; } //unique item.AddModifier(baseItem.GetRandomModifier(Rank.Legendary), baseItem.modifierQuality); item.rarity = Rank.Legendary; }
private void AddBaseModifiers(GenericItem baseItem, ModifiableItem item) { int modifierCount = CalculateAmountOfModifiers(baseItem.maxModifierCount); List <int> indexCache = new List <int>(); for (int i = 0; i < modifierCount; i++) { int index; do { index = Random.Range(0, baseItem.normalModifiers.Count); }while (indexCache.Contains(index)); indexCache.Add(index); ItemStatModifier modifier = baseItem.normalModifiers[index]; item.AddModifier(modifier, baseItem.modifierQuality); } }