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;
}