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)]); }
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); } }
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); } }
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)); }
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); }
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); }
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); } }
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); }
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); }
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); } } } }