fBaseXtensions.Game.FunkyGame.PickupItemValidation C# (CSharp) Method

PickupItemValidation() static private method

static private PickupItemValidation ( CacheItem item ) : bool
item fBaseXtensions.Cache.Internal.Objects.CacheItem
return bool
        internal static bool PickupItemValidation(CacheItem item)
        {
            //if (FunkyTownRunPlugin.ItemRulesEval != null)
            //{
            //	Interpreter.InterpreterAction action = FunkyTownRunPlugin.ItemRulesEval.checkPickUpItem(item.DynamicID.Value, item.BalanceData.thisItemType, item.ref_DiaItem.Name, item.InternalName, item.Itemquality.Value, item.BalanceData.iThisItemLevel, item.BalanceData.bThisOneHand, item.BalanceData.bThisTwoHand, item.BalanceID.Value, ItemEvaluationType.PickUp);
            //	if (action== Interpreter.InterpreterAction.PICKUP)
            //	{
            //		return true;
            //	}
            //}

            // Calculate giles item types and base types etc.
            PluginItemTypes thisPluginItemType = PluginItemTypes.Unknown;
            PluginBaseItemTypes thisGilesBaseType = PluginBaseItemTypes.Unknown;

            if (item.BalanceID.HasValue && item.BalanceData != null)
            {
                thisPluginItemType = item.BalanceData.PluginType;
                thisGilesBaseType = item.BalanceData.PluginBase;
            }
            else
            {
                thisPluginItemType = ItemFunc.DetermineItemType(item.InternalName, ItemType.Unknown, FollowerType.None,
                    item.SNOID);
                thisGilesBaseType = ItemFunc.DetermineBaseType(thisPluginItemType);
            }

            if (thisPluginItemType == PluginItemTypes.MiscBook)
                return FunkyBaseExtension.Settings.Loot.ExpBooks;

            if (thisPluginItemType == PluginItemTypes.RamaladnisGift)
                return true;

            // Error logging for DemonBuddy item mis-reading
            ItemType gilesDBItemType = ItemFunc.PluginItemTypeToDBItemType(thisPluginItemType);
            if (item.BalanceID.HasValue && item.BalanceData != null && gilesDBItemType != item.BalanceData.Type)
            {
                Logger.DBLog.InfoFormat("GSError: Item type mis-match detected: Item Internal=" + item.InternalName + ". DemonBuddy ItemType thinks item type is=" + item.BalanceData.Type + ". Giles thinks item type is=" +
                     gilesDBItemType + ". [pickup]", true);
            }

            switch (thisGilesBaseType)
            {
                case PluginBaseItemTypes.WeaponTwoHand:
                case PluginBaseItemTypes.WeaponOneHand:
                case PluginBaseItemTypes.WeaponRange:
                case PluginBaseItemTypes.Armor:
                case PluginBaseItemTypes.Offhand:
                case PluginBaseItemTypes.Jewelry:
                case PluginBaseItemTypes.FollowerItem:

                    if (FunkyBaseExtension.Settings.Loot.PickupWhiteItems == 1 &&
                        FunkyBaseExtension.Settings.Loot.PickupMagicItems == 1 &&
                        FunkyBaseExtension.Settings.Loot.PickupRareItems == 1 &&
                        FunkyBaseExtension.Settings.Loot.PickupLegendaryItems == 1)
                    {
                        return true;
                    }

                    if (item.Itemquality.HasValue && item.BalanceID.HasValue && item.BalanceData != null)
                    {
                        switch (item.Itemquality.Value)
                        {
                            case ItemQuality.Inferior:
                            case ItemQuality.Normal:
                            case ItemQuality.Superior:
                                return FunkyBaseExtension.Settings.Loot.PickupWhiteItems > 0 && (item.BalanceData.ItemLevel >= FunkyBaseExtension.Settings.Loot.PickupWhiteItems);
                            case ItemQuality.Magic1:
                            case ItemQuality.Magic2:
                            case ItemQuality.Magic3:
                                return FunkyBaseExtension.Settings.Loot.PickupMagicItems > 0 && (item.BalanceData.ItemLevel >= FunkyBaseExtension.Settings.Loot.PickupMagicItems);
                            case ItemQuality.Rare4:
                            case ItemQuality.Rare5:
                            case ItemQuality.Rare6:
                                return FunkyBaseExtension.Settings.Loot.PickupRareItems > 0 && (item.BalanceData.ItemLevel >= FunkyBaseExtension.Settings.Loot.PickupRareItems);
                            case ItemQuality.Legendary:
                                return FunkyBaseExtension.Settings.Loot.PickupLegendaryItems > 0 && (item.BalanceData.ItemLevel >= FunkyBaseExtension.Settings.Loot.PickupLegendaryItems);
                        }
                    }

                    return false;
                case PluginBaseItemTypes.Gem:
                    if (thisPluginItemType == PluginItemTypes.LegendaryGem)
                        return true;

                    GemQualityTypes qualityType = ItemFunc.ReturnGemQualityType(item.SNOID, item.BalanceData!=null?item.BalanceData.ItemLevel:-1);
                    int qualityLevel = (int)qualityType;

                    if (qualityLevel < FunkyBaseExtension.Settings.Loot.MinimumGemItemLevel ||
                        (thisPluginItemType == PluginItemTypes.Ruby && !FunkyBaseExtension.Settings.Loot.PickupGems[0]) ||
                        (thisPluginItemType == PluginItemTypes.Emerald && !FunkyBaseExtension.Settings.Loot.PickupGems[1]) ||
                        (thisPluginItemType == PluginItemTypes.Amethyst && !FunkyBaseExtension.Settings.Loot.PickupGems[2]) ||
                        (thisPluginItemType == PluginItemTypes.Topaz && !FunkyBaseExtension.Settings.Loot.PickupGems[3]) ||
                        (thisPluginItemType == PluginItemTypes.Diamond && !FunkyBaseExtension.Settings.Loot.PickupGemDiamond))
                    {
                        return false;
                    }
                    break;
                case PluginBaseItemTypes.Misc:
                    // Note; Infernal keys are misc, so should be picked up here - we aren't filtering them out, so should default to true at the end of this function
                    if (thisPluginItemType == PluginItemTypes.CraftingMaterial)
                    {
                        return FunkyBaseExtension.Settings.Loot.PickupCraftMaterials;
                    }
                    if (thisPluginItemType == PluginItemTypes.LegendaryCraftingMaterial)
                        return true;

                    if (thisPluginItemType == PluginItemTypes.CraftingPlan)
                    {
                        if (!FunkyBaseExtension.Settings.Loot.PickupCraftPlans) return false;

                        if (item.BalanceID.HasValue && item.BalanceData != null)
                        {
                            if (item.BalanceData.IsBlacksmithPlanSixProperties && !FunkyBaseExtension.Settings.Loot.PickupBlacksmithPlanSix) return false;
                            if (item.BalanceData.IsBlacksmithPlanFiveProperties && !FunkyBaseExtension.Settings.Loot.PickupBlacksmithPlanFive) return false;
                            if (item.BalanceData.IsBlacksmithPlanFourProperties && !FunkyBaseExtension.Settings.Loot.PickupBlacksmithPlanFour) return false;

                            if (item.BalanceData.IsBlacksmithPlanArchonSpaulders && !FunkyBaseExtension.Settings.Loot.PickupBlacksmithPlanArchonSpaulders) return false;
                            if (item.BalanceData.IsBlacksmithPlanArchonGauntlets && !FunkyBaseExtension.Settings.Loot.PickupBlacksmithPlanArchonGauntlets) return false;
                            if (item.BalanceData.IsBlacksmithPlanRazorspikes && !FunkyBaseExtension.Settings.Loot.PickupBlacksmithPlanRazorspikes) return false;

                            if (item.BalanceData.IsJewelcraftDesignAmulet && !FunkyBaseExtension.Settings.Loot.PickupJewelerDesignAmulet) return false;
                            if (item.BalanceData.IsJewelcraftDesignFlawlessStarGem && !FunkyBaseExtension.Settings.Loot.PickupJewelerDesignFlawlessStar) return false;
                            if (item.BalanceData.IsJewelcraftDesignMarquiseGem && !FunkyBaseExtension.Settings.Loot.PickupJewelerDesignMarquise) return false;
                            if (item.BalanceData.IsJewelcraftDesignPerfectStarGem && !FunkyBaseExtension.Settings.Loot.PickupJewelerDesignPerfectStar) return false;
                            if (item.BalanceData.IsJewelcraftDesignRadiantStarGem && !FunkyBaseExtension.Settings.Loot.PickupJewelerDesignRadiantStar) return false;
                        }

                    }

                    if (thisPluginItemType == PluginItemTypes.InfernalKey)
                    {
                        return FunkyBaseExtension.Settings.Loot.PickupInfernalKeys;
                    }

                    if (thisPluginItemType == PluginItemTypes.KeyStone)
                    {
                        return FunkyBaseExtension.Settings.Loot.PickupKeystoneFragments;
                    }

                    if (thisPluginItemType == PluginItemTypes.BloodShard)
                    {

                        return Backpack.GetBloodShardCount() < 500;
                    }

                    // Potion filtering
                    if (thisPluginItemType == PluginItemTypes.HealthPotion || thisPluginItemType == PluginItemTypes.LegendaryHealthPotion)
                    {
                        PotionTypes potionType = ItemFunc.ReturnPotionType(item.SNOID);
                        if (potionType== PotionTypes.Regular)
                        {
                            if (FunkyBaseExtension.Settings.Loot.MaximumHealthPotions <= 0)
                                return false;

                            var BestPotionToUse = Backpack.ReturnBestPotionToUse();
                            if (BestPotionToUse == null)
                                return true;

                            var Potions = Backpack.ReturnRegularPotions();
                            if (Potions.Sum(potions => potions.ThisItemStackQuantity) >= FunkyBaseExtension.Settings.Loot.MaximumHealthPotions)
                                return false;
                        }
                    }

                    break;
                case PluginBaseItemTypes.HealthGlobe:
                    return false;
                case PluginBaseItemTypes.Unknown:
                    return false;
                default:
                    return false;
            } // Switch giles base item type
            // Didn't cancel it, so default to true!
            return true;
        }