public override Item CreateItemFromData()
            {
                ModifiableItem mItem = base.CreateItemFromData() as ModifiableItem;

                mItem.DeserializeModifiers(modifiers);
                return(mItem);
            }
Example #2
0
        private Item ModifyBaseItem(GenericItem baseItem, float soulEnergyLevel)
        {
            ModifiableItem item = baseItem.GenerateItem() as ModifiableItem;

            AddBaseModifiers(baseItem, item);

            SetItemRarity(baseItem, item, soulEnergyLevel);

            return(item);
        }
Example #3
0
        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();
                }
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
 }