Example #1
0
        private bool IsSixSocketItem(NormalInventoryItem inventoryItem)
        {
            if (inventoryItem == null || inventoryItem.Address == 0x0)
            {
                return(false);
            }

            var item = inventoryItem.Item;

            if (item == null || item.Address == 0x0)
            {
                return(false);
            }

            if (!item.HasComponent <Sockets>())
            {
                return(false);
            }

            var sockets = item.GetComponent <Sockets>();

            if (sockets == null || sockets.Address == 0x0)
            {
                return(false);
            }

            return(sockets.NumberOfSockets >= 6);
        }
Example #2
0
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            _inventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;

            var mods = item.GetComponent <Mods>();

            Rarity      = mods.ItemRarity;
            BIdentified = mods.Identified;
            ItemLevel   = mods.ItemLevel;

            var quality = item.GetComponent <Quality>();

            ItemQuality = quality.ItemQuality;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;

            if (item.HasComponent <PoeHUD.Poe.Components.Map>())
            {
                MapTier = item.GetComponent <PoeHUD.Poe.Components.Map>().Tier;
            }
            else
            {
                MapTier = 0;
            }
        }
Example #3
0
        public static Composite IdentifyUniquesInPlayerInventory()
        {
            // Until_x_  return success . Watch out in priorityselectors

            return(new Inverter(new UntilFailure(
                                    new Sequence(
                                        OpenStash(),
                                        new Action(delegate
            {
                var ret = TryGetDataForUnidUniqueInInventory();
                if (ret.Item1 == false)
                {
                    WillBot.LogMessageCombo("Unable to find more unique items to identify");
                    return RunStatus.Failure;
                }
                tempUniqueItemInInventory = ret.Item3;
                return RunStatus.Success;
            }),
                                        MapPrepBehavior.ApplyCurrencyItemToItem(() => ItemStrings.ScrollOfWisdom, () => tempUniqueItemInInventory.GetClientRect()),
                                        new Action(delegate
            {
                Thread.Sleep(300);
                return RunStatus.Success;
            })
                                        )

                                    )));
        }
Example #4
0
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            InventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;
            var baseComponent = item.GetComponent <Base>();

            isElder  = baseComponent.isElder;
            isShaper = baseComponent.isShaper;
            var mods = item.GetComponent <Mods>();

            Rarity      = mods?.ItemRarity ?? ItemRarity.Normal;
            BIdentified = mods?.Identified ?? true;
            ItemLevel   = mods?.ItemLevel ?? 0;
            isFractured = mods?.HaveFractured ?? false;

            var quality = item.GetComponent <Quality>();

            ItemQuality = quality?.ItemQuality ?? 0;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;
            MapTier     = item.HasComponent <Map>() ? item.GetComponent <Map>().Tier : 0;
            clientRect  = InventoryItem.GetClientRect().Center;

            var sockets = item.GetComponent <Sockets>();

            if (sockets != null)
            {
                NumberOfSockets = sockets.NumberOfSockets;
                LargestLinkSize = sockets.LargestLinkSize;
            }
        }
Example #5
0
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            _inventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;
            var baseComponent = item.GetComponent <Base>();

            isElder  = baseComponent.isElder;
            isShaper = baseComponent.isShaper;
            var mods = item.GetComponent <Mods>();

            Rarity      = mods?.ItemRarity ?? ItemRarity.Normal;
            BIdentified = mods?.Identified ?? true;
            ItemLevel   = mods?.ItemLevel ?? 0;
            isFractured = mods?.HaveFractured ?? false;
            ItemMods    = mods?.ItemMods;

            UniqueName = mods?.UniqueName;

            var quality = item.GetComponent <Quality>();

            ItemQuality = quality?.ItemQuality ?? 0;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;
            MapTier     = item.HasComponent <Map>() ? item.GetComponent <Map>().Tier : 0;
            clientRect  = _inventoryItem.GetClientRect().Center;
        }
Example #6
0
 public ItemDetails(NormalInventoryItem Item, Entity Entity)
 {
     this.Item      = Item;
     this.Entity    = Entity;
     ActiveWarnings = new List <StyledText>();
     Update();
 }
Example #7
0
 public UniqueItemFilter(
     GameController gameController,
     NormalInventoryItem normalInventoryItem,
     INinjaProvider ninjaProvider)
     : base(gameController, normalInventoryItem)
 {
     _ninjaProvider = ninjaProvider;
 }
Example #8
0
 public DivCardsFilter(
     GameController gameController,
     NormalInventoryItem normalInventoryItem,
     IDivCardsProvider divCardsProvider)
     : base(gameController, normalInventoryItem)
 {
     _divCardsProvider = divCardsProvider;
 }
Example #9
0
        private void DrawBorder(NormalInventoryItem inventoryItem)
        {
            var rect = inventoryItem.GetClientRect();

            var borderColor = Settings.BorderColor.Value;

            var borderWidth = Settings.BorderWidth.Value;

            Graphics.DrawFrame(rect, borderColor, borderWidth);
        }
Example #10
0
 public VendorForScrolls(
     GameController gameController,
     NormalInventoryItem normalInventoryItem,
     bool vendorTransmutes,
     bool vendorScraps) : base(
         gameController, normalInventoryItem)
 {
     _vendorTransmutes = vendorTransmutes;
     _vendorScraps     = vendorScraps;
 }
Example #11
0
        public static bool IsCrItem(NormalInventoryItem item)
        {
            var  parsedItem        = new SellitItem(item, GameController.Files);
            bool isCorrectILvl     = parsedItem.ItemLevel >= 60 && parsedItem.ItemLevel <= 74;
            bool isCorrectItemType = parsedItem.IsArmour || parsedItem.IsWeapon || parsedItem.IsAmulet || parsedItem.IsRing;
            bool isRare            = parsedItem.Rarity == ItemRarity.Rare;
            bool isUnidentified    = parsedItem.IsIdentified == false;

            return(isCorrectILvl && isCorrectItemType && isRare && isUnidentified);
        }
Example #12
0
        private string GetImagePath(string metadata, NormalInventoryItem invItem)
        {
            metadata = metadata.Replace(".dds", ".png");
            var url          = $"http://webcdn.pathofexile.com/image/{metadata}";
            var metadataPath = metadata.Replace('/', '\\');
            var fullPath     = $"{DirectoryFullName}\\images\\{metadataPath}";

            /////////////////////////// Yucky Map bits ///////////////////////////////
            if (invItem.Item.HasComponent <Map>())
            {
                var isShapedMap = 0;
                var mapTier     = invItem.Item.GetComponent <Map>().Tier;
                foreach (var itemList in invItem.Item.GetComponent <Mods>().ItemMods)
                {
                    if (!itemList.RawName.Contains("MapShaped"))
                    {
                        continue;
                    }
                    isShapedMap = 1;
                    mapTier    += 5;
                }

                url      = $"http://webcdn.pathofexile.com/image/{metadata}?mn=1&mr={isShapedMap}&mt={mapTier}";
                fullPath = $"{DirectoryFullName}\\images\\{metadataPath.Replace(".png", "")}_{mapTier}_{isShapedMap}.png";
            }
            //

            if (File.Exists(fullPath))
            {
                if (_initializedImageList.All(x => x != fullPath))
                {
                    Graphics.InitImage($"{fullPath}", false);
                    _initializedImageList.Add(fullPath);
                }

                return(fullPath);
            }

            var path = fullPath.Substring(0, fullPath.LastIndexOf('\\'));

            Directory.CreateDirectory(path);
            using (var client = new WebClient())
            {
                client.DownloadFile(new Uri(url), fullPath);
            }

            if (_initializedImageList.All(x => x != fullPath))
            {
                Graphics.InitImage($"{fullPath}", false);
                _initializedImageList.Add(fullPath);
            }

            return(fullPath);
        }
Example #13
0
        public void ClickOnItemWShift(NormalInventoryItem item)
        {
            _clickWindowOffset = GameController.Window.GetWindowRectangle().TopLeft;
            var cellWOff = item.GetClientRect().Center + _clickWindowOffset;

            Keyboard.KeyDown(Keys.LControlKey);
            Thread.Sleep(INPUT_DELAY);
            Mouse.SetCursorPosAndLeftClick(cellWOff, Settings.ExtraDelay);
            Thread.Sleep(INPUT_DELAY);
            Keyboard.KeyUp(Keys.LControlKey);
        }
Example #14
0
        public Actions Evaluate(NormalInventoryItem normalInventoryItem)
        {
            try
            {
                #region keep invalid items

                var item = normalInventoryItem?.Item;
                if (item == null ||
                    item.Address == 0 ||
                    !item.IsValid ||
                    !item.HasComponent <Base>())
                {
                    return(Actions.Keep);
                }

                #endregion

                #region div cards

                if (item.Path.StartsWith(@"Metadata/Items/DivinationCards/DivinationCard"))
                {
                    return(new DivCardsFilter(_gameController, normalInventoryItem, _divCardsProvider).Evaluate());
                }

                #endregion

                #region vendor rares with broken ItemMods

                if (item.GetComponent <Mods>()?.ItemMods == null)
                {
                    if (item?.GetComponent <Mods>()?.ItemRarity == ItemRarity.Rare)
                    {
                        return(Actions.Vendor);
                    }
                    if (_bypassBrokenItemMods && item?.GetComponent <Mods>()?.ItemRarity == ItemRarity.Unique)
                    {
                        return(Actions.Vendor);
                    }
                }

                #endregion

                List <IEvaluate> filters;
                if (item.HasComponent <Mods>())
                {
                    filters = new List <IEvaluate>();
                        << << << < HEAD
                        << << << < HEAD
                        if (!_vendorInfluenced)
                            {
                            filters.Add(new InfluenceFilter(_gameController, normalInventoryItem));
                        }
                        filters.Add(new FlaskFilter(_gameController, normalInventoryItem));
Example #15
0
 protected AbstractBasicItem(
     GameController gameController,
     NormalInventoryItem normalInventoryItem)
 {
     Random = new Random();
     GameController = gameController;
     NormalInventoryItem = normalInventoryItem;
     Item = normalInventoryItem.Item;
     BaseItemType = GameController.Files.BaseItemTypes.Translate(normalInventoryItem.Item.Path);
     ItemBaseComponent = Item.GetComponent<Base>();
     if (!Item.HasComponent<Mods>()) return;
     ItemModsComponent = Item.GetComponent<Mods>();
 }
        private bool CheckIgnoreCells(NormalInventoryItem inventItem)
        {
            var inventPosX = inventItem.InventPosX;
            var inventPosY = inventItem.InventPosY;

            if (inventPosX < 0 || inventPosX >= 12)
            {
                return(true);
            }
            if (inventPosY < 0 || inventPosY >= 5)
            {
                return(true);
            }

            return(Settings.IgnoredCells[inventPosY, inventPosX] != 0); //No need to check all item size
        }
Example #17
0
        public RarityContainer ConvertItemToContainer(NormalInventoryItem item)
        {
            var newContainer = new RarityContainer {
                Element = item.GetClientRect()
            };

            if (item.Item.HasComponent <Mods>())
            {
                newContainer.Color = RarityToColor(item.Item.GetComponent <Mods>().ItemRarity);
            }

            if (item.Item.HasComponent <Base>())
            {
                newContainer.Corrupted = item.Item.GetComponent <Base>().isCorrupted;
            }
            return(newContainer);
        }
Example #18
0
        private IEnumerator UseOrb(NormalInventoryItem orbItem)
        {
            var itemToCraft = GetItemToCraft();

            yield return(Input.SetCursorPositionSmooth(orbItem.GetClientRect().Center));

            yield return(_waitRandom);

            Input.Click(MouseButtons.Right);
            yield return(_waitRandom);

            yield return(Input.SetCursorPositionSmooth(itemToCraft.GetClientRect().Center));

            yield return(_waitRandom);

            Input.Click(MouseButtons.Left);
        }
Example #19
0
 protected AbstractBasicItem(
     GameController gameController,
     NormalInventoryItem normalInventoryItem)
 {
     Random              = new Random();
     GameController      = gameController;
     NormalInventoryItem = normalInventoryItem;
     Item              = normalInventoryItem.Item;
     BaseItemType      = GameController.Files.BaseItemTypes.Translate(normalInventoryItem.Item.Path);
     ItemBaseComponent = Item.GetComponent <Base>();
     if (Item.HasComponent <Mods>())
     {
         ItemModsComponent = Item.GetComponent <Mods>();
         Veiled            = GetModByGroup("Veiled") > 0;
         ItemRarity        = ItemModsComponent.ItemRarity;
     }
 }
Example #20
0
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            _inventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;

            var mods = item.GetComponent <Mods>();

            Rarity      = mods.ItemRarity;
            BIdentified = mods.Identified;
            ItemLevel   = mods.ItemLevel;
            var quality = item.GetComponent <Quality>();

            ItemQuality = quality.ItemQuality;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;
        }
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            _inventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;
            var @base = item.GetComponent <Base>();

            IsElder     = @base.isElder;
            IsShaper    = @base.isShaper;
            IsCorrupted = @base.isCorrupted;
            var mods = item.GetComponent <Mods>();

            Rarity      = mods.ItemRarity;
            BIdentified = mods.Identified;
            ItemLevel   = mods.ItemLevel;

            var sockets = item.GetComponent <Sockets>();

            NumberOfSockets = sockets.NumberOfSockets;
            LargestLinkSize = sockets.LargestLinkSize;

            var quality = item.GetComponent <Quality>();

            ItemQuality = quality.ItemQuality;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;
            VeiledMods  = mods.ItemMods.Select(itemMod => new VeilMod(itemMod.Name)).Where(veilMod => veilMod.IsVeiled).ToArray();
            IsIncubator = Path.Contains("Incubation");

            if (@base.Name == "Prophecy")
            {
                var @prophParse = item.GetComponent <Prophecy>();
                ProphecyName = @prophParse.DatProphecy.Name.ToLower();
                ProphecyName = ProphecyName.Replace(" ", "");
                ProphecyName = ProphecyName.Replace(",", "");
                ProphecyName = ProphecyName.Replace("'", "");
                Name         = ProphecyName;
                BaseName     = "Prophecy";
            }

            MapTier = item.HasComponent <Map>() ? item.GetComponent <Map>().Tier : 0;
        }
Example #22
0
        protected AbstractRareItem(
            GameController gameController,
            NormalInventoryItem normalInventoryItem)
            : base(gameController, normalInventoryItem)
        {
            if (ItemModsComponent == null)
            {
                return;
            }
            ItemMods       = ItemModsComponent.ItemMods;
            ItemRarity     = ItemModsComponent.ItemRarity;
            HaveCraftedMod = CheckCraftedMod(ItemMods);
            var prefixPlusSuffixMods = FilterPrefixPlusSuffixMods(ItemMods);

            SuffixCount      = FilterSuffixMods(prefixPlusSuffixMods).Count();
            PrefixCount      = prefixPlusSuffixMods.Count() - SuffixCount;
            FlatLife         = GetFlatLife();
            PercentLife      = GetPercentLife();
            CanCraftFlatLife = GetCanCraftFlatLife();
            FlatMana         = GetFlatMana();
            FlatES           = GetFlatES();
            PercentES        = GetPercentES();
            TotalResists     = GetTotalResists();
            CanCraftResist   = CheckCanCraftResist();
            MovementSpeed    = GetMovementSpeed();
            Dexterity        = GetDexterity();
            Intelligence     = GetIntelligence();
            Strength         = GetStrength();
            Sockets          = GetSockets();
            FlatArmor        = GetArmor();
            WED          = GetWED();
            FlaskReduce  = GetFlaskReduction();
            FlatAccuracy = GetFlatAccuracy();
            AttackSpeed  = GetAttackSpeed();
            CastSpeed    = GetCastSpeed();
            FlatPhysical = GetFlatPhys();
            CritChance   = GetGlobalCritChance();
            CritDamage   = GetCritMultiplier();
            Corrupted    = Item.Path.Contains("Breach") ||
                           Item.Path.Contains("Talisman");
            Veiled = GetModByGroup("Veiled") > 0;
        }
Example #23
0
        private bool CheckIgnoreCells(NormalInventoryItem inventItem)
        {
            var inventPosX = inventItem.InventPosX;
            var inventPosY = inventItem.InventPosY;

            if (_customRefills.Any(x => x.InventPos.X == inventPosX && x.InventPos.Y == inventPosY))
            {
                return(true);
            }

            if (inventPosX < 0 || inventPosX >= 12)
            {
                return(true);
            }
            if (inventPosY < 0 || inventPosY >= 5)
            {
                return(true);
            }

            return(_ignoredCells[inventPosY, inventPosX] != 0); //No need to check all item size
        }
Example #24
0
        private bool CheckIgnoreCells(NormalInventoryItem inventItem)
        {
            var inventPosX = inventItem.InventPosX;
            var inventPosY = inventItem.InventPosY;

            if (Settings.RefillCurrency.Value &&
                Settings.Refills.Any(x => (int)x.InventPosX.Value == inventPosX && (int)x.InventPosY.Value == inventPosY))
            {
                return(true);
            }

            if (inventPosX < 0 || inventPosX >= 12)
            {
                return(true);
            }
            if (inventPosY < 0 || inventPosY >= 5)
            {
                return(true);
            }

            return(Settings.IgnoredCells[inventPosY, inventPosX] != 0);  //No need to check all item size
        }
Example #25
0
        private static int[,] GetFilledCells(int[,] filledCells, NormalInventoryItem inventItem, IEntity item)
        {
            var iPosX = inventItem.InventPosX;
            var iPosY = inventItem.InventPosY;
            var iBase = item.GetComponent <Base>();

            for (var x = iPosX; x <= iPosX + iBase.ItemCellsSizeX - 1; x++)
            {
                for (var y = iPosY; y <= iPosY + iBase.ItemCellsSizeY - 1; y++)
                {
                    if (x >= 0 && x <= 11 && y >= 0 && y <= 4)
                    {
                        filledCells[y, x] = 1;
                    }
                    else
                    {
                        LogMessage($"Out of range: {x} {y}", 10);
                    }
                }
            }

            return(filledCells);
        }
Example #26
0
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            _inventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;
            var @base = item.GetComponent <Base>();

            IsElder     = @base.isElder;
            IsShaper    = @base.isShaper;
            IsCorrupted = @base.isCorrupted;
            var mods = item.GetComponent <Mods>();

            Rarity      = mods.ItemRarity;
            BIdentified = mods.Identified;
            ItemLevel   = mods.ItemLevel;

            var quality = item.GetComponent <Quality>();

            ItemQuality = quality.ItemQuality;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;

            if (@base.Name == "Prophecy")
            {
                var @prophParse = item.GetComponent <Prophecy>();
                ProphecyName = @prophParse.DatProphecy.Name.ToLower( );
                ProphecyName = ProphecyName.Replace(" ", "");
                ProphecyName = ProphecyName.Replace(",", "");
                ProphecyName = ProphecyName.Replace("'", "");
                Name         = ProphecyName;
                BaseName     = "Prophecy";
            }

            MapTier = item.HasComponent <Map>( ) ? item.GetComponent <Map>( ).Tier : 0;
        }
Example #27
0
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            _inventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;
            var @base = item.GetComponent <Base>();

            IsElder  = @base.isElder;
            IsShaper = @base.isShaper;
            var mods = item.GetComponent <Mods>();

            Rarity      = mods.ItemRarity;
            BIdentified = mods.Identified;
            ItemLevel   = mods.ItemLevel;

            var quality = item.GetComponent <Quality>();

            ItemQuality = quality.ItemQuality;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;

            MapTier = item.HasComponent <Map>() ? item.GetComponent <Map>().Tier : 0;
        }
Example #28
0
        public ItemData(NormalInventoryItem inventoryItem, BaseItemType baseItemType)
        {
            InventoryItem = inventoryItem;
            var item = inventoryItem.Item;

            Path = item.Path;
            var baseComponent = item.GetComponent <Base>();

            isElder      = baseComponent.isElder;
            isShaper     = baseComponent.isShaper;
            isCorrupted  = baseComponent.isCorrupted;
            isCrusader   = baseComponent.isCrusader;
            isRedeemer   = baseComponent.isRedeemer;
            isWarlord    = baseComponent.isWarlord;
            isHunter     = baseComponent.isHunter;
            isInfluenced = isCrusader || isRedeemer || isWarlord || isHunter || isShaper || isElder;
            var mods = item.GetComponent <Mods>();

            Rarity             = mods?.ItemRarity ?? ItemRarity.Normal;
            BIdentified        = mods?.Identified ?? true;
            ItemLevel          = mods?.ItemLevel ?? 0;
            Veiled             = mods?.ItemMods.Where(m => m.DisplayName.Contains("Veil")).Count() ?? 0;
            Fractured          = mods?.CountFractured ?? 0;
            Synthesised        = mods?.Synthesised ?? false;
            isBlightMap        = mods?.ItemMods.Where(m => m.Name.Contains("InfectedMap")).Count() > 0;
            isElderGuardianMap = mods?.ItemMods.Where(m => m.Name.Contains("MapElderContainsBoss")).Count() > 0;


            NumberOfSockets = item.GetComponent <Sockets>()?.NumberOfSockets ?? 0;
            LargestLinkSize = item.GetComponent <Sockets>()?.LargestLinkSize ?? 0;

            ItemQuality = item.GetComponent <Quality>()?.ItemQuality ?? 0;
            ClassName   = baseItemType.ClassName;
            BaseName    = baseItemType.BaseName;

            /*
             * if (baseItemType.BaseName.Contains("Cluster"))
             * {
             *  ClusterJewelpassives = int.Parse(new string(mods?.HumanStats.ElementAt(0).
             *      SkipWhile(c => c < '0' || c > '9').TakeWhile(c => c >= '0' && c <= '9').ToArray()));
             *  ClusterJewelBase = mods?.HumanStats.ElementAt(1).ToString();
             * }
             * else
             * {
             *  ClusterJewelpassives = 0;
             *  ClusterJewelBase = "";
             * }*/

            Name        = "";
            Description = "";
            MapTier     = item.HasComponent <Map>() ? item.GetComponent <Map>().Tier : 0;
            clientRect  = InventoryItem.GetClientRect().Center;

            if (@baseComponent.Name == "Prophecy")
            {
                var @prophParse = item.GetComponent <Prophecy>();
                ProphecyName        = @prophParse.DatProphecy.Name.ToLower();
                ProphecyName        = ProphecyName.Replace(" ", "");
                ProphecyName        = ProphecyName.Replace(",", "");
                ProphecyName        = ProphecyName.Replace("'", "");
                ProphecyDescription = @prophParse.DatProphecy.PredictionText.ToLower();
                ProphecyDescription = ProphecyDescription.Replace(" ", "");
                ProphecyDescription = ProphecyDescription.Replace(",", "");
                ProphecyDescription = ProphecyDescription.Replace("'", "");
                Description         = ProphecyDescription;
                Name     = ProphecyName;
                BaseName = "Prophecy";
            }
        }
Example #29
0
 public InfluenceFilter(
     GameController gameController,
     NormalInventoryItem normalInventoryItem)
     : base(gameController, normalInventoryItem)
 {
 }
Example #30
0
        public Item(NormalInventoryItem item)
        {
            Original = item;
            Path     = item.Item.Path;
            BaseItemType baseItemType = BasePlugin.API.GameController.Files.BaseItemTypes.Translate(Path);

            ClassName = baseItemType.ClassName;
            BaseName  = baseItemType.BaseName;
            List <string> weaponClass = new List <string>
            {
                "One Hand Mace",
                "Two Hand Mace",
                "One Hand Axe",
                "Two Hand Axe",
                "One Hand Sword",
                "Two Hand Sword",
                "Thrusting One Hand Sword",
                "Bow",
                "Claw",
                "Dagger",
                "Sceptre",
                "Staff",
                "Wand"
            };

            if (item.Item.HasComponent <Base>())
            {
                Base @base = item.Item.GetComponent <Base>();
            }

            if (item.Item.HasComponent <Mods>())
            {
                Mods mods = item.Item.GetComponent <Mods>();
                Rarity        = mods.ItemRarity;
                IsIdentified  = mods.Identified;
                ItemLevel     = mods.ItemLevel;
                RequiredLevel = mods.RequiredLevel;
                if (Rarity != ItemRarity.Normal && IsIdentified && !string.IsNullOrEmpty(item.Item.Path))
                {
                    List <ItemMod> itemMods = mods.ItemMods;
                    Mods = itemMods.Select(it => new ModValue(it, BasePlugin.API.GameController.Files, ItemLevel, baseItemType)).ToList();
                }
            }

            if (item.Item.HasComponent <Sockets>())
            {
                Sockets sockets = item.Item.GetComponent <Sockets>();
                Sockets     = sockets.NumberOfSockets;
                LargestLink = sockets.LargestLinkSize;
            }

            if (weaponClass.Any(ClassName.Equals))
            {
                IsWeapon = true;
            }

            if (Path.StartsWith("Metadata/Items/Amulets"))
            {
                BaseItemType = ItemTypeParent.Amulet;
            }
            else if (Path.StartsWith("Metadata/Items/Rings"))
            {
                BaseItemType = ItemTypeParent.Ring;
            }
            else if (Path.StartsWith("Metadata/Items/Belts"))
            {
                BaseItemType = ItemTypeParent.Armour;
                SubItemType  = ItemTypeChild.Belt;
            }
            else if (Path.StartsWith("Metadata/Items/Armours"))
            {
                BaseItemType = ItemTypeParent.Armour;
                if (Path.StartsWith("Metadata/Items/Armours/BodyArmours"))
                {
                    SubItemType = ItemTypeChild.BodyArmor;
                }
                else if (Path.StartsWith("Metadata/Items/Armours/Boots"))
                {
                    SubItemType = ItemTypeChild.Boots;
                }
                else if (Path.StartsWith("Metadata/Items/Armours/Gloves"))
                {
                    SubItemType = ItemTypeChild.Gloves;
                }
                else if (Path.StartsWith("Metadata/Items/Armours/Helmets"))
                {
                    SubItemType = ItemTypeChild.Helmet;
                }
                else if (Path.StartsWith("Metadata/Items/Armours/Shields"))
                {
                    SubItemType = ItemTypeChild.Shield;
                }
            }
            else if (Path.StartsWith("Metadata/Items/Flasks"))
            {
                BaseItemType = ItemTypeParent.Flask;
            }
            else if (Path.StartsWith("Metadata/Items/Quivers"))
            {
                BaseItemType = ItemTypeParent.Quiver;
            }
            else if (Path.StartsWith("Metadata/Items/Weapons"))
            {
                //BaseItemType = ItemTypeParent.Weapon;
                if (Path.StartsWith("Metadata/Items/Weapons/OneHandWeapons"))
                {
                    BaseItemType = ItemTypeParent.OneHandedWeapon;
                    //if (Path.StartsWith("Metadata/Items/Weapons/OneHandWeapons/Claws"))
                    //    SubItemType = ItemTypeChild.Claw;
                    //else if (Path.StartsWith("Metadata/Items/Weapons/OneHandWeapons/Daggers"))
                    //    SubItemType = ItemTypeChild.Dagger;
                    //else if (Path.StartsWith("Metadata/Items/Weapons/OneHandWeapons/OneHandAxes"))
                    //    SubItemType = ItemTypeChild.OneHandedAxe;
                    //else if (Path.StartsWith("Metadata/Items/Weapons/OneHandWeapons/OneHandMaces"))
                    //    SubItemType = ItemTypeChild.OneHandedMace;
                    //else if (Path.StartsWith("Metadata/Items/Weapons/OneHandWeapons/OneHandSwords"))
                    //    SubItemType = ItemTypeChild.OneHandedSword;
                    //if (Path.StartsWith("Metadata/Items/Weapons/OneHandWeapons/Wands"))
                    //    SubItemType = ItemTypeChild.Wand;
                }
                else if (Path.StartsWith("Metadata/Items/Weapons/TwoHandWeapons"))
                {
                    BaseItemType = ItemTypeParent.TwoHandedWeapon;
                    if (Path.StartsWith("Metadata/Items/Weapons/TwoHandWeapons/Bows"))
                    {
                        SubItemType = ItemTypeChild.Bow;
                    }
                    else if (Path.StartsWith("Metadata/Items/Weapons/TwoHandWeapons/Staves"))
                    {
                        SubItemType = ItemTypeChild.Stave;
                    }
                    //else if (Path.StartsWith("Metadata/Items/Weapons/TwoHandWeapons/TwoHandAxes"))
                    //    SubItemType = ItemTypeChild.TwoHandedAxe;
                    //else if (Path.StartsWith("Metadata/Items/Weapons/TwoHandWeapons/TwoHandMaces"))
                    //    SubItemType = ItemTypeChild.TwoHandedMace;
                    //else if (Path.StartsWith("Metadata/Items/Weapons/TwoHandWeapons/TwoHandSwords"))
                    //    SubItemType = ItemTypeChild.TwoHandedSword;
                }
            }
        }