Exemple #1
0
        /// <summary>
        /// Sockets equipped or backpack weapons rubies.
        /// </summary>
        private async Task <bool> EquipWeaponSocket()
        {
            var gem = GetGemForAttributeType(PlayerAttributeType.Strength);

            if (gem == null)
            {
                return(false);
            }

            var socketableWeapon = InventoryManager.Equipped.FirstOrDefault(i => i.InventorySlot == InventorySlot.LeftHand && i.NumSockets > 0 && i.NumSocketsFilled < i.NumSockets);

            if (socketableWeapon != null)
            {
                Core.Logger.Log("Socketing {0} ({1}) into equipped weapon {2}", gem.InternalName, gem.GemQuality, socketableWeapon.Name);
                socketableWeapon.Socket(gem);
                return(true);
            }

            var socketableBackpackWeapon = BackpackEquipment
                                           .OrderByDescending(i => i.AcdItem.Sockets)
                                           .ThenByDescending(i => i.WeaponDamagePerSecond)
                                           .FirstOrDefault(i => i.InventorySlot == InventorySlot.LeftHand && i.AcdItem.NumSockets > 0 && i.AcdItem.NumSockets < i.AcdItem.NumSocketsFilled);

            if (socketableBackpackWeapon != null)
            {
                Core.Logger.Log("Socketing {0} ({1}) into backpack weapon {2}", gem.InternalName, gem.GemQuality, socketableBackpackWeapon.RealName);
                socketableBackpackWeapon.AcdItem.Socket(gem);
                return(true);
            }

            return(false);
        }
Exemple #2
0
        /// <summary>
        /// Sockets equipped or backpack armor with primary stat or vitality
        /// </summary>
        /// <returns></returns>
        private async Task <bool> EquipArmorSockets()
        {
            var attrType = GetAttributeTypeForClass(Core.Player.ActorClass);
            var gem      = GetGemForAttributeType(attrType);

            if (gem == null)
            {
                gem = GetGemForAttributeType(PlayerAttributeType.Vitality);
            }

            if (gem == null)
            {
                return(false);
            }

            var socketableArmor = InventoryManager.Equipped
                                  .FirstOrDefault(i => (i.ItemBaseType == ItemBaseType.Armor ||
                                                        i.ItemBaseType == ItemBaseType.Jewelry) &&
                                                  i.NumSockets > 0 &&
                                                  i.NumSocketsFilled < i.NumSockets);

            if (socketableArmor != null)
            {
                Core.Logger.Log("Socketing {0} ({1}) into equipped armor {2}", gem.InternalName, gem.Stats.GemQuality, socketableArmor.Name);
                socketableArmor.Socket(gem);
                return(true);
            }

            var socketableBackpackArmor = BackpackEquipment
                                          .OrderByDescending(i => i.AcdItem.Sockets)
                                          .ThenByDescending(i => i.HighestPrimary)
                                          .FirstOrDefault(i => (i.BaseType == ItemBaseType.Armor ||
                                                                i.BaseType == ItemBaseType.Jewelry) &&
                                                          i.AcdItem.NumSockets > 0 &&
                                                          i.AcdItem.NumSockets < i.AcdItem.NumSocketsFilled);

            if (socketableBackpackArmor != null)
            {
                Core.Logger.Log("Socketing {0} ({1}) into backpack armor {2}", gem.InternalName, gem.Stats.GemQuality, socketableBackpackArmor.RealName);
                socketableBackpackArmor.AcdItem.Socket(gem);
                return(true);
            }

            return(false);
        }