public override Item CreateItemFromData() { ModifiableItem mItem = base.CreateItemFromData() as ModifiableItem; mItem.DeserializeModifiers(modifiers); return(mItem); }
private Item ModifyBaseItem(GenericItem baseItem, float soulEnergyLevel) { ModifiableItem item = baseItem.GenerateItem() as ModifiableItem; AddBaseModifiers(baseItem, item); SetItemRarity(baseItem, item, soulEnergyLevel); return(item); }
private void LoadModifiers(Item item) { ModifiableItem mItem = item as ModifiableItem; for (int i = 0; i < modifierSlot.Count; i++) { if (mItem.modifiers.Count > i) { ModifiableItem.Modifier mod = mItem.modifiers[i]; modifierSlot[i].SetModifier(mItem.modifiers[i]); } else { modifierSlot[i].ResetSlot(); } } }
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); } }
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; }
public void SetModifier(ModifiableItem.Modifier mod) { modifier = mod; label.text = mod.GetDisplayText(); label.color = ModifiableItem.GetRarityColor(mod.rarity); }