コード例 #1
0
        public Modifier GetModifier(ModifierType type, ModifiableItem item)
        {
            // Get all groups based on the modifier type and item type
            var groups = modifierCollection.ModifierGroups.FindAll(x => x.Type == type && x.Domain.HasFlag(item.Type));

            if (groups == null)
            {
                throw new NullReferenceException("Unable to find any ModifierGroups for type " + type);
            }

            // Select a group from the ModifierGroups to choose a modifier from
            var group = groups[GetRandomInRangeOfCollection(groups)];

            // Check if the item already has a modifier from this group
            if (group.Contains(item))
            {
                Debug.Log($"Modifier from {group.name} already existed on {item.Name}, skipping");
                return(null);
            }

            var modifiers = group.GetWithinItemLevel(item.ItemLevel);

            if (modifiers.Count == 0)
            {
                Debug.Log("No modifiers found");
                // No modifier could be found, so none will be added
                return(null);
            }

            return(modifiers[GetRandomInRangeOfCollection(modifiers)]);
        }
コード例 #2
0
 private static void GetModifiersFromItem(ModifyTable table, ModifiableItem modItem)
 {
     modItem.GetStats(table);
     foreach (var modifier in modItem.modifiers)
     {
         modifier.effect.Invoke(table, modifier.value);
         modifier.legendaryInstallEffect.Invoke(modifier.value);
     }
 }
コード例 #3
0
 private void DisplayModifiers(ModifiableItem item)
 {
     TextMeshProUGUI[] fields = modifiers.GetComponentsInChildren <TextMeshProUGUI>();
     for (int i = 0; i < item.modifiers.Count; i++)
     {
         ModifiableItem.Modifier modifier = item.modifiers[i];
         fields[i].text  = modifier.GetDisplayText();
         fields[i].color = ModifiableItem.GetRarityColor(modifier.rarity);
     }
 }
コード例 #4
0
        private void DisplayMainInfo(ModifiableItem item)
        {
            title.color = ModifiableItem.GetRarityColor(item.rarity);
            title.text  = item.GetTitleText();

            mainStats.color = ModifiableItem.GetRarityColor(Rank.Normal);
            mainStats.text  = item.GetMainStatText();

            SetIcon(item.icon, ModifiableItem.GetRarityColor(item.rarity));
        }
コード例 #5
0
ファイル: ItemSlot.cs プロジェクト: NiclasMart/RPGPrototype
        protected void SetIcon(Item item)
        {
            if (item == null)
            {
                iconSlot.transform.GetChild(0).GetComponent <Image>().sprite = null;
                return;
            }

            iconSlot.transform.GetChild(0).GetComponent <Image>().sprite = item.icon;
            iconSlot.color = ModifiableItem.GetRarityColor(item.rarity);
        }
コード例 #6
0
        public bool Contains(ModifiableItem item)
        {
            foreach (var modifier in item.Modifiers.GetByType(type))
            {
                foreach (var value in tieredModifiers.Values)
                {
                    if (modifier == value)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
コード例 #7
0
        public void DisplayItem(ModifiableItem item)
        {
            Clear();
            if (item == null)
            {
                title.text = "No Gear Equiped!";
                return;
            }

            DisplayMainInfo(item);
            DisplayModifiers(item);
            if (item is AbilityGem)
            {
                DisplayAbilityText(item as AbilityGem);
            }
        }
コード例 #8
0
        public void RecalculateModifiers()
        {
            ModifyTable table = new ModifyTable();

            foreach (var slot in equipmentDictionary.Values)
            {
                ModifiableItem modItem = slot.item as ModifiableItem;
                if (modItem == null)
                {
                    continue;
                }

                GetModifiersFromItem(table, modItem);
            }

            PlayerInfo.GetPlayer().GetComponent <CharacterStats>().RecalculateStats(table);
        }
コード例 #9
0
        public void ShowModifiers(Item item, RectTransform rectTransform)
        {
            ModifiableItem modItem = item as ModifiableItem;

            if (modItem == null)
            {
                return;
            }

            if (compareModeIsActive)
            {
                ModifiableItem equipedItem = inventory.GetEquipedItem(item.itemType) as ModifiableItem;
                panels[0].DisplayItem(equipedItem);
            }
            else
            {
                panels[1].SetActive(true);
                SetPosition(rectTransform);
            }
            panels[1].DisplayItem(modItem);
        }
コード例 #10
0
        public void ApplyModifiers(ModifiableItem item)
        {
            var mods = new ModifierByType();

            if (item.GetRarity().MaxModifiers < 1)
            {
                return;
            }

            if (item.HasImplicit)
            {
                var modifier = GetModifier(ModifierType.Implicit, item);

                if (mods.CanAdd(ModifierType.Implicit, item.GetRarity()))
                {
                    mods.SetImplicit(modifier);
                }
            }

            for (var i = 0; i < item.GetRarity().MaxModifiers; i++)
            {
                var rand = Random.NextInt(0, 2);
                if (rand == 0)
                {
                    if (mods.CanAdd(ModifierType.Prefix, item.GetRarity()))
                    {
                        var modifier = GetModifier(ModifierType.Prefix, item);
                        item.AddModifier(modifier, ModifierType.Prefix);
                    }
                }
                else
                {
                    if (mods.CanAdd(ModifierType.Suffix, item.GetRarity()))
                    {
                        var modifier = GetModifier(ModifierType.Suffix, item);
                        item.AddModifier(modifier, ModifierType.Suffix);
                    }
                }
            }
        }