private bool AllowedCurrencies(object o) { PoECurrencyData c = o as PoECurrencyData; if (c.name == "Vaal Orb" || c.name == "Orb of Chance" || c.name == "Glassblower's Bauble") { return(false); } return(true); }
public string ApplyCurrency(PoECurrencyData currency, int tries = 1) { if (BenchItem == null) { return("Bench is empty"); } string c = currency.name; string res; switch (c) { case "Chaos Orb": if (BenchItem.Rarity != ItemRarity.Rare) { return("Invalid item rarity for selected currency"); } DoReroll(null, BaseValidMods, ItemRarity.Rare, false, tries); break; case "Orb of Alteration": if (BenchItem.Rarity != ItemRarity.Magic) { return("Invalid item rarity for selected currency"); } DoReroll(null, BaseValidMods, ItemRarity.Magic, false, tries); break; case "Orb of Alchemy": if (BenchItem.Rarity != ItemRarity.Normal) { return("Invalid item rarity for selected currency"); } DoReroll(null, BaseValidMods, ItemRarity.Rare, false, tries); break; case "Orb of Transmutation": if (BenchItem.Rarity != ItemRarity.Normal) { return("Invalid item rarity for selected currency"); } DoReroll(null, BaseValidMods, ItemRarity.Magic, false, tries); break; case "Exalted Orb": if (BenchItem.Rarity != ItemRarity.Rare) { return("Invalid item rarity for selected currency"); } if (BenchItem.LiveMods.Count >= 2 * BenchItem.GetAffixLimit()) { return("Item cannot have another mod"); } res = DoAddMod(ItemRarity.Rare, false, tries, 20) ? null : "Item has no valid rollable mods"; if (res != null) { return(res); } break; case "Regal Orb": if (BenchItem.Rarity != ItemRarity.Magic) { return("Invalid item rarity for selected currency"); } DoAddMod(ItemRarity.Rare, true, tries, 5); break; case "Orb of Augmentation": if (BenchItem.Rarity != ItemRarity.Magic) { return("Invalid item rarity for selected currency"); } if (BenchItem.LiveMods.Count >= 2 * BenchItem.GetAffixLimit()) { return("Item cannot have another mod"); } DoAddMod(ItemRarity.Magic, true, tries, 2); break; case "Redeemer's Exalted Orb": res = ApplyInfExalt(ItemInfluence.Redeemer, tries); if (res != null) { return(res); } break; case "Hunter's Exalted Orb": res = ApplyInfExalt(ItemInfluence.Hunter, tries); if (res != null) { return(res); } break; case "Warlord's Exalted Orb": res = ApplyInfExalt(ItemInfluence.Warlord, tries); if (res != null) { return(res); } break; case "Crusader's Exalted Orb": res = ApplyInfExalt(ItemInfluence.Crusader, tries); if (res != null) { return(res); } break; case "Orb of Annulment": if (BenchItem.Rarity == ItemRarity.Normal) { return("Invalid item rarity for selected currency"); } DoCurrencyRolls((item) => { item.RemoveRandomMod(); if (item.QualityType != null) { item.BaseQuality -= 20; } }, tries); break; case "Divine Orb": if (BenchItem.Rarity == ItemRarity.Normal) { return("Invalid item rarity for selected currency"); } DoCurrencyRolls((item) => { item.RerollExplicits(); }, tries); break; case "Blessed Orb": DoCurrencyRolls((item) => { item.RerollImplicits(); }, tries); break; case "Orb of Scouring": if (BenchItem.Rarity == ItemRarity.Normal) { return("Invalid item rarity for selected currency"); } DoCurrencyRolls((item) => { item.ClearMods(); item.Rarity = item.GetMinimumRarity(); item.GenerateName(); }, tries); break; case "Remove Crafted Mods": DoCurrencyRolls((item) => { item.ClearCraftedMods(); }, tries); break; case "Do Nothing": IDictionary <PoEModData, int> validatedpool = ModLogic.FindValidMods(BenchItem, BaseValidMods); DoCurrencyRolls((item) => { DoPostRoll(item, new Dictionary <PoEModData, int>(validatedpool)); }, tries); break; case "Abrasive Catalyst": case "Fertile Catalyst": case "Imbued Catalyst": case "Intrinsic Catalyst": case "Prismatic Catalyst": case "Tempering Catalyst": case "Turbulent Catalyst": PoEBaseItemData itemtemplate = CraftingDatabase.AllBaseItems[BenchItem.SourceData]; if (!CraftingDatabase.ItemClassCatalyst.Contains(itemtemplate.item_class)) { return("Invalid item type for catalysts"); } if (BenchItem.QualityType == c && BenchItem.BaseQuality >= 20) { return("Item already has max catalyst quality"); } DoCurrencyRolls((item) => { item.ApplyCatalyst(c); }, tries); break; default: return("Unrecognized currency selected"); } if (tries == 1) { string currencykey = currency.key; if (currencykey == "RemoveCraftedMods") { currencykey = "Metadata/Items/Currency/CurrencyConvertToNormal"; } if (currencykey != "DoNothing") { TallyCurrency(currency.key, 1); } } return(null); }