/// <summary> /// Gets a list of replaceable items (if any) taking into account whether or not we can equip the item, and user settings /// </summary> /// <param name="item">item to check against</param> /// <returns>list of potential item replacements</returns> public static Dictionary <WoWItem, ItemSlotInto> GetReplaceableItems(ItemInfo item, bool isSoulBound) { var equipped_items = new Dictionary <WoWItem, ItemSlotInto>(); // dont equip it if it's not the armour type we want if (EquipMeSettings.Instance.OnlyEquipArmourType != WoWItemArmorClass.None && EquipMeSettings.Instance.OnlyEquipArmourType != item.ArmorClass) { return(equipped_items); } // don't try to equip anything for a blacklisted slot if (EquipMeSettings.Instance.BlacklistedSlots.Split(',').Any(slotval => ToInteger(slotval) == (int)item.InventoryType || string.Equals(slotval.Trim(), item.InventoryType.ToString(), StringComparison.OrdinalIgnoreCase))) { return(equipped_items); } // if it's not an item type that can be equipped if (item.InventoryType == InventoryType.None) { return(equipped_items); } // dont try to equip anything for a blacklisted boe quality if (item.Bond == WoWItemBondType.OnEquip && !isSoulBound) { // epic if (EquipMeSettings.Instance.IngoreEpicBOE && item.Quality == WoWItemQuality.Epic) { return(equipped_items); } // rare if (EquipMeSettings.Instance.IgnoreRareBOE && item.Quality == WoWItemQuality.Rare) { return(equipped_items); } } foreach (var slot in InventoryManager.GetInventorySlotsByEquipSlot(item.InventoryType)) { if ((int)slot - 1 < 0) { continue; } // if we can't equip a weapon according to settings if (!CanEquipWeapon(slot, item.WeaponClass)) { continue; } //Log("Slot in: {0}, slot out: {1}", item.InventoryType, slot); var equipped_item = StyxWoW.Me.Inventory.Equipped.GetItemBySlot((uint)slot - 1); if (equipped_item == null) { continue; } // dont replace it if heirloom in target slot and ignore heirlooms is on if (EquipMeSettings.Instance.IgnoreHeirlooms && equipped_item.Quality == WoWItemQuality.Heirloom) { continue; } var isl = new ItemSlotInto(); isl.score = CalcScore(equipped_item); isl.slot = slot; //Log("Equipped item: {0} - {1}", equipped_item.Name, isl.score); equipped_items.Add(equipped_item, isl); } return(equipped_items); }
/// <summary> /// Gets a list of replaceable items (if any) taking into account whether or not we can equip the item, and user settings /// </summary> /// <param name="item">item to check against</param> /// <returns>list of potential item replacements</returns> public static Dictionary<WoWItem, ItemSlotInto> GetReplaceableItems(ItemInfo item, bool isSoulBound) { var equipped_items = new Dictionary<WoWItem, ItemSlotInto>(); // dont equip it if it's not the armour type we want if (EquipMeSettings.Instance.OnlyEquipArmourType != WoWItemArmorClass.None && EquipMeSettings.Instance.OnlyEquipArmourType != item.ArmorClass) { return equipped_items; } // don't try to equip anything for a blacklisted slot if (EquipMeSettings.Instance.BlacklistedSlots.Split(',').Any(slotval => ToInteger(slotval) == (int)item.InventoryType || string.Equals(slotval.Trim(), item.InventoryType.ToString(), StringComparison.OrdinalIgnoreCase))) { return equipped_items; } // if it's not an item type that can be equipped if (item.InventoryType == InventoryType.None) { return equipped_items; } // dont try to equip anything for a blacklisted boe quality if (item.Bond == WoWItemBondType.OnEquip && !isSoulBound) { // epic if (EquipMeSettings.Instance.IngoreEpicBOE && item.Quality == WoWItemQuality.Epic) { return equipped_items; } // rare if (EquipMeSettings.Instance.IgnoreRareBOE && item.Quality == WoWItemQuality.Rare) { return equipped_items; } } foreach (var slot in InventoryManager.GetInventorySlotsByEquipSlot(item.InventoryType)) { if ((int)slot - 1 < 0) { continue; } // if we can't equip a weapon according to settings if (!CanEquipWeapon(slot, item.WeaponClass)) { continue; } //Log("Slot in: {0}, slot out: {1}", item.InventoryType, slot); var equipped_item = StyxWoW.Me.Inventory.Equipped.GetItemBySlot((uint)slot - 1); if (equipped_item == null) { continue; } // dont replace it if heirloom in target slot and ignore heirlooms is on if (EquipMeSettings.Instance.IgnoreHeirlooms && equipped_item.Quality == WoWItemQuality.Heirloom) { continue; } var isl = new ItemSlotInto(); isl.score = CalcScore(equipped_item); isl.slot = slot; //Log("Equipped item: {0} - {1}", equipped_item.Name, isl.score); equipped_items.Add(equipped_item, isl); } return equipped_items; }