public override void Invoke(ItemStack itemStack) { List <ValueMod> valueMods = new List <ValueMod>(); ValueMod[] itemStackMods = itemStack.ExplicitMods; Mod[] availableMods = ModifierManager.GetModifiersForDomainAndTag(1, itemStack.Item.Tags.ToArray()); availableMods = ModUtils.Filter(availableMods, itemStack.ItemLevel); foreach (ValueMod explicitMod in itemStackMods) { valueMods.Add(explicitMod); } switch (m_CountType) { case CountType.Single: RetierSingle(ref valueMods, availableMods); break; case CountType.Value: RetierCount(ref valueMods, m_Count, availableMods); break; case CountType.All: RetierAll(ref valueMods, availableMods); break; } itemStack.ExplicitMods = valueMods.ToArray(); }
public override void Invoke(ItemStack itemStack) { Mod[] availableMods = ModifierManager.GetModifiersForDomainAndTag(1, itemStack.Item.Tags.ToArray()); List <ValueMod> valueMods = new List <ValueMod>(); foreach (ValueMod explicitMod in itemStack.ExplicitMods) { valueMods.Add(explicitMod); } availableMods = ModUtils.Filter(availableMods, itemStack.ItemLevel); availableMods = ModUtils.Filter(availableMods, valueMods.ToArray()); ValueMod valueMod = ModUtils.Roll(availableMods, itemStack.Item.Tags.ToArray()); if (valueMod == null) { return; } valueMods.Add(valueMod); itemStack.ExplicitMods = valueMods.ToArray(); }
public override void Invoke(ItemStack itemStack) { if (itemStack == null) { return; } int count = (int)m_ExplicitCount.Evaluate(UnityEngine.Random.Range(0.0f, 1.0f)); Mod[] availableMods = ModifierManager.GetModifiersForDomainAndTag(1, itemStack.Item.Tags.ToArray()); availableMods = ModUtils.Filter(availableMods, itemStack.ItemLevel); List <ValueMod> valueMods = new List <ValueMod>(); for (int i = 0; i < count; i++) { availableMods = ModUtils.Filter(availableMods, valueMods.ToArray()); ValueMod valueMod = ModUtils.Roll(availableMods, itemStack.Item.Tags.ToArray()); if (valueMod != null) { valueMods.Add(valueMod); } } itemStack.ExplicitMods = valueMods.ToArray(); }