Exemple #1
0
        /// <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);
        }
Exemple #2
0
 /// <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;
 }