// ----- Follower ------// /** * Set the control mode and output value so that this motor controller will * follow another motor controller. Currently supports following Victor SPX * and Talon SRX. * * @param masterToFollow * Motor Controller object to follow. * @param followerType * Type of following control. Use AuxOutput1 to follow the master * device's auxiliary output 1. * Use PercentOutput for standard follower mode. */ public void Follow(IMotorController masterToFollow, FollowerType followerType) { int id32 = masterToFollow.GetBaseID(); int id24 = id32; id24 >>= 16; id24 = (short)id24; id24 <<= 8; id24 |= (id32 & 0xFF); Set(ControlMode.Follower, id24); switch (followerType) { case FollowerType.PercentOutput: Set(ControlMode.Follower, (double)id24); break; case FollowerType.AuxOutput1: /* follow the motor controller, but set the aux flag * to ensure we follow the processed output */ Set(ControlMode.Follower, (double)id24, DemandType.AuxPID, 0); break; default: NeutralOutput(); break; } }
// Methods for adjusting stats from outside public void addFollower(FollowerType type, int delta) { //updates teh hidden stats switch ((int)type) { case 0: totalCultist += delta; break; case 1: totalMoms += delta; break; case 2: totalStans += delta; break; case 3: totalTheorists += delta; break; default: Debug.Log("Error in method 'addFollowers'"); break; } //keeps the total number of follower up to date totalFollowers += delta; }
public CacheBalance(CacheItem item) { try { BalanceID = item.ref_DiaItem.CommonData.GameBalanceId; _itemLevel = item.ref_DiaItem.CommonData.Level; _type = item.ref_DiaItem.CommonData.ItemType; _base = item.ref_DiaItem.CommonData.ItemBaseType; _followerType = item.ref_DiaItem.CommonData.FollowerSpecialType; _pluginType = ItemFunc.DetermineItemType(item.InternalName, _type, _followerType, item.SNOID); if (item.ItemDropType.HasValue) { _pluginBase = ItemFunc.DetermineBaseItemType(item.ItemDropType.Value); } else { _pluginBase = ItemFunc.DetermineBaseItemType(item.InternalName, item.SNOID); } _isStackable = ItemFunc.DetermineIsStackable(_pluginType, item.SNOID); if (!_isStackable) { _isTwoSlot = ItemFunc.DetermineIsTwoSlot(_pluginType); } } catch (Exception ex) { Logger.Write(LogLevel.Items, String.Format("Failed to create balance data for item {0}", item.DebugStringSimple)); } }
public CacheBalance(int itemlevel, ItemType itemtype, bool onehand, FollowerType followertype) { iThisItemLevel = itemlevel; thisItemType = itemtype; bThisOneHand = onehand; thisFollowerType = followertype; bNeedsUpdated = true; }
public Follower GetFollower(FollowerType type) { Follower follower; TryGetData <Follower>(BaseAPIurl + string.Format(DataUtility.followerPath, type), out follower); return(follower); }
public CacheBalance(int itemlevel, ItemType itemtype, bool onehand, FollowerType followertype) { iThisItemLevel=itemlevel; thisItemType=itemtype; bThisOneHand=onehand; thisFollowerType=followertype; bNeedsUpdated=true; }
public Follower GetFollower(FollowerType follower) { string followerSlug = follower.ToString().ToLower(); Request request = new Request(User_Agent); request.Get($"{Api_Url}d3/data/follower/{followerSlug}?locale={Locale}&apikey={Api_Key}"); return(new Follower(JObject.Parse(request.Response))); }
public CacheBalance(int itemlevel, ItemType itemtype, ItemBaseType itembasetype, bool onehand, bool twohand, FollowerType followertype) { iThisItemLevel=itemlevel; thisItemType=itemtype; bThisOneHand=onehand; bThisTwoHand=twohand; thisItemBaseType=itembasetype; thisFollowerType=followertype; bNeedsUpdated=false; }
/// <summary> /// Gets whether a class can equip an item /// </summary> /// <param name="heroClass">class</param> /// <param name="type">item type</param> /// <returns>true if the class can equip an item</returns> public static bool CanEquip(FollowerType followerType, ItemType type) { int typeInt = (int)type; if ((typeInt & EquipmentSlotMask) == 0) { return(false); } return(((1 << ((int)followerType + FollowerShift)) & typeInt) != 0); }
public CacheBalance(int balanceID, int itemlevel, ItemType itemtype, ItemBaseType itembasetype, bool onehand, bool twohand, FollowerType followertype) { iThisBalanceID = balanceID; iThisItemLevel = itemlevel; thisItemType = itemtype; bThisOneHand = onehand; bThisTwoHand = twohand; thisItemBaseType = itembasetype; thisFollowerType = followertype; bNeedsUpdated = false; }
// const //reference // --------------------- BASE METHODS ------------------ public AlarmLight(FollowerType leftType, Vector3 leftOffset, FollowerType rightType, Vector3 rightOffset) { _leftType = leftType; _leftOffset = leftOffset; _rightType = rightType; _rightOffset = rightOffset; float randomStart = MyRandom.Range(0.0f, (float)Math.PI); _alphaStart = new[] { randomStart, randomStart + (float)Math.PI }; }
/// <summary> /// Initializes variable set for single object refresh /// </summary> private static void RefreshStepInit(out bool AddTocache) { CurrentCacheObject = new TrinityCacheObject(); AddTocache = true; // Start this object as off as unknown type CurrentCacheObject.Type = GObjectType.Unknown; CurrentCacheObject.Distance = 0f; CurrentCacheObject.Radius = 0f; c_ZDiff = 0f; c_ItemDisplayName = ""; c_ItemLink = ""; CurrentCacheObject.InternalName = ""; c_IgnoreReason = ""; c_IgnoreSubStep = ""; CurrentCacheObject.ACDGuid = -1; CurrentCacheObject.RActorGuid = -1; CurrentCacheObject.DynamicID = -1; CurrentCacheObject.GameBalanceID = -1; CurrentCacheObject.ActorSNO = -1; c_ItemLevel = -1; c_GoldStackSize = -1; c_HitPointsPct = -1; c_HitPoints = -1; c_IsOneHandedItem = false; c_IsTwoHandedItem = false; c_unit_IsElite = false; c_unit_IsRare = false; c_unit_IsUnique = false; c_unit_IsMinion = false; c_unit_IsTreasureGoblin = false; c_unit_IsAttackable = false; c_unit_HasShieldAffix = false; c_IsEliteRareUnique = false; c_IsObstacle = false; c_HasBeenNavigable = false; c_HasBeenRaycastable = false; c_HasBeenInLoS = false; c_ItemMd5Hash = string.Empty; c_ItemQuality = ItemQuality.Invalid; c_DBItemBaseType = ItemBaseType.None; c_DBItemType = ItemType.Unknown; c_item_tFollowerType = FollowerType.None; c_item_GItemType = GItemType.Unknown; c_unit_MonsterSize = MonsterSize.Unknown; c_diaObject = null; c_CurrentAnimation = SNOAnim.Invalid; c_HasDotDPS = false; c_MonsterAffixes = MonsterAffixes.None; c_IsFacingPlayer = false; c_Rotation = 0f; c_DirectionVector = Vector2.Zero; }
public NetworkActivityObject(bool working, FollowerType followerType, string leaderName, bool useMovementSkill, Keys movementSkillKey, List <FollowerSkill> followerSkills, FollowerAggressiveness propagateFollowerAggressiveness, long propagateEnterInstance) { Working = working; FollowerMode = followerType; LeaderName = leaderName; UseMovementSkill = useMovementSkill; MovementSkillKey = movementSkillKey; LastChangeTimestamp = ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeMilliseconds(); FollowerSkills = followerSkills; PropagateFollowerAggressiveness = propagateFollowerAggressiveness; PropagateEnterInstance = propagateEnterInstance; }
private void SetFollowerModeValues() { if (Settings.FollowerModeToggleFollower.Value) { _currentFollowerMode = FollowerType.Follower; } else if (Settings.FollowerModeToggleLeader.Value) { _currentFollowerMode = FollowerType.Leader; } else { _currentFollowerMode = FollowerType.Disabled; } }
public PickupItem(string Name, string internalName, int level, ItemQuality quality, int balanceId, ItemBaseType dbItemBaseType, ItemType dbItemType, bool isOneHand, bool isTwoHand, FollowerType followerType, int acdGuid, int dynamicID = 0) { this.Name = Name; this.InternalName = internalName; this.Level = level; this.Quality = quality; this.BalanceID = balanceId; this.DBBaseType = dbItemBaseType; this.DBItemType = dbItemType; this.IsOneHand = IsOneHand; this.IsTwoHand = IsTwoHand; this.ItemFollowerType = followerType; this.ACDGuid = acdGuid; this.DynamicID = dynamicID; }
private void ProcessNetworkActivityResponse(NetworkActivityObject activityObj) { if (activityObj == null) { return; } Settings.LeaderName.Value = activityObj.LeaderName; Settings.UseMovementSkill.Value = activityObj.UseMovementSkill; _currentFollowerMode = activityObj.FollowerMode; _followerAggressivenessMode = activityObj.PropagateFollowerAggressiveness; _followerShouldWork = activityObj.Working; _enterInstanceValue = activityObj.PropagateEnterInstance; if (activityObj.Working) { _followerCoroutine.Resume(); } else { _followerCoroutine.Pause(); } if (activityObj.FollowerSkills != null && activityObj.FollowerSkills.Any()) { List <SkillSettings> settingsSkills = new List <SkillSettings>() { Settings.SkillOne, Settings.SkillTwo, Settings.SkillThree }; foreach (FollowerSkill skill in activityObj.FollowerSkills.OrderBy(o => o.Position)) { SkillSettings settingsSkill = settingsSkills[skill.Position - 1]; settingsSkill.Enable.Value = skill.Enable; settingsSkill.SkillHotkey.Value = skill.Hotkey; settingsSkill.UseAgainstMonsters.Value = skill.UseAgainstMonsters; settingsSkill.CooldownBetweenCasts.Value = skill.Cooldown.ToString(); settingsSkill.Priority.Value = skill.Priority; settingsSkill.Position.Value = skill.Position; settingsSkill.Range.Value = skill.Range; } } return; }
public PickupItem(string name, string internalName, int level, ItemQuality quality, int balanceId, ItemBaseType dbItemBaseType, ItemType dbItemType, bool isOneHand, bool isTwoHand, FollowerType followerType, int acdGuid, int dynamicID = 0) { Name = name; InternalName = Trinity.NameNumberTrimRegex.Replace(internalName, ""); Level = level; Quality = quality; BalanceID = balanceId; DBBaseType = dbItemBaseType; DBItemType = dbItemType; IsOneHand = isOneHand; IsTwoHand = isTwoHand; ItemFollowerType = followerType; ACDGuid = acdGuid; DynamicID = dynamicID; WorldId = Trinity.Player.WorldID; }
public Follower GetFollower(FollowerType type) { string follower_type = ""; switch (type) { case FollowerType.Enchantress: follower_type = "enchantress"; break; case FollowerType.Scoundrel: follower_type = "scoundrel"; break; case FollowerType.Templar: follower_type = "templar"; break; } using (Stream s = base.ReadData("d3/data/follower/" + follower_type + "?" + Locale.ToString())) { string json = new StreamReader(s).ReadToEnd(); return(JsonConvert.DeserializeObject <Follower>(json, converter)); } }
internal static bool SellValidation(string thisinternalname, int thislevel, ItemQuality thisquality, ItemType thisdbitemtype, FollowerType thisfollowertype) { PluginItemTypes thisPluginItemType = ItemFunc.DetermineItemType(thisinternalname, thisdbitemtype, thisfollowertype); PluginBaseItemTypes thisGilesBaseType = ItemFunc.DetermineBaseType(thisPluginItemType); switch (thisGilesBaseType) { case PluginBaseItemTypes.WeaponRange: case PluginBaseItemTypes.WeaponOneHand: case PluginBaseItemTypes.WeaponTwoHand: case PluginBaseItemTypes.Armor: case PluginBaseItemTypes.Offhand: case PluginBaseItemTypes.Jewelry: case PluginBaseItemTypes.FollowerItem: return(true); case PluginBaseItemTypes.Gem: case PluginBaseItemTypes.Misc: case PluginBaseItemTypes.Unknown: if (thisPluginItemType == PluginItemTypes.LegendaryCraftingMaterial) { return(true); } //Sell any plans not already stashed. return(thisdbitemtype == ItemType.CraftingPlan); } // Switch giles base item type return(false); }
public void SetType(FollowerType type) { m_type = type; }
internal static bool SellValidation(string thisinternalname, int thislevel, ItemQuality thisquality, ItemType thisdbitemtype, FollowerType thisfollowertype) { PluginItemTypes thisPluginItemType = ItemFunc.DetermineItemType(thisinternalname, thisdbitemtype, thisfollowertype); PluginBaseItemTypes thisGilesBaseType = ItemFunc.DetermineBaseType(thisPluginItemType); switch (thisGilesBaseType) { case PluginBaseItemTypes.WeaponRange: case PluginBaseItemTypes.WeaponOneHand: case PluginBaseItemTypes.WeaponTwoHand: case PluginBaseItemTypes.Armor: case PluginBaseItemTypes.Offhand: case PluginBaseItemTypes.Jewelry: case PluginBaseItemTypes.FollowerItem: return true; case PluginBaseItemTypes.Gem: case PluginBaseItemTypes.Misc: case PluginBaseItemTypes.Unknown: if (thisPluginItemType == PluginItemTypes.LegendaryCraftingMaterial) return true; //Sell any plans not already stashed. return thisdbitemtype == ItemType.CraftingPlan; } // Switch giles base item type return false; }
// private static Regex x1Regex = new Regex("^x1_", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.CultureInvariant); /// <summary> /// DetermineItemType - Calculates what kind of item it is from D3 internalnames /// </summary> /// <param name="name"></param> /// <param name="dbItemType"></param> /// <param name="dbFollowerType"></param> /// <returns></returns> internal static GItemType DetermineItemType(string name, ItemType dbItemType, FollowerType dbFollowerType = FollowerType.None) { name = name.ToLower(); if (name.StartsWith("x1_")) name = name.Substring(3, name.Length - 3); if (name.StartsWith("p1_")) name = name.Substring(3, name.Length - 3); if (name.StartsWith("a1_")) return GItemType.SpecialItem; if (name.StartsWith("amethyst")) return GItemType.Amethyst; if (name.StartsWith("amulet_")) return GItemType.Amulet; if (name.StartsWith("axe_")) return GItemType.Axe; if (name.StartsWith("barbbelt_")) return GItemType.MightyBelt; if (name.StartsWith("blacksmithstome")) return GItemType.CraftTome; if (name.StartsWith("boots_")) return GItemType.Boots; if (name.StartsWith("bow_")) return GItemType.TwoHandBow; if (name.StartsWith("bracers_")) return GItemType.Bracer; if (name.StartsWith("ceremonialdagger_")) return GItemType.CeremonialKnife; if (name.StartsWith("cloak_")) return GItemType.Cloak; if (name.StartsWith("combatstaff_")) return GItemType.TwoHandDaibo; if (name.StartsWith("crafting_")) return GItemType.CraftingMaterial; if (name.StartsWith("craftingmaterials_")) return GItemType.CraftingMaterial; if (name.StartsWith("craftingplan_")) return GItemType.CraftingPlan; if (name.StartsWith("craftingreagent_legendary_unique_infernalmachine_")) return GItemType.InfernalKey; if (name.StartsWith("craftingreagent_legendary_")) return GItemType.CraftingMaterial; if (name.StartsWith("crushield_")) return GItemType.CrusaderShield; if (name.StartsWith("dagger_")) return GItemType.Dagger; if (name.StartsWith("diamond_")) return GItemType.Diamond; if (name.StartsWith("dye_")) return GItemType.Dye; if (name.StartsWith("emerald_")) return GItemType.Emerald; if (name.StartsWith("fistweapon_")) return GItemType.FistWeapon; if (name.StartsWith("flail1h_")) return GItemType.Flail; if (name.StartsWith("flail2h_")) return GItemType.TwoHandFlail; if (name.StartsWith("followeritem_enchantress_") || dbFollowerType == FollowerType.Enchantress) return GItemType.FollowerEnchantress; if (name.StartsWith("followeritem_scoundrel_") || dbFollowerType == FollowerType.Scoundrel) return GItemType.FollowerScoundrel; if (name.StartsWith("followeritem_templar_") || dbFollowerType == FollowerType.Templar) return GItemType.FollowerTemplar; if (name.StartsWith("gloves_")) return GItemType.Gloves; if (name.StartsWith("handxbow_")) return GItemType.HandCrossbow; if (name.StartsWith("healthglobe")) return GItemType.HealthGlobe; if (name.StartsWith("healthpotion")) return GItemType.HealthPotion; if (name.StartsWith("horadriccache")) return GItemType.HoradricCache; if (name.StartsWith("lore_book_")) return GItemType.CraftTome; if (name.StartsWith("lootrunkey")) return GItemType.LootRunKey; if (name.StartsWith("mace_")) return GItemType.Mace; if (name.StartsWith("mightyweapon_1h_")) return GItemType.MightyWeapon; if (name.StartsWith("mightyweapon_2h_")) return GItemType.TwoHandMighty; if (name.StartsWith("mojo_")) return GItemType.Mojo; if (name.StartsWith("orb_")) return GItemType.Orb; if (name.StartsWith("page_of_")) return GItemType.CraftTome; if (name.StartsWith("pants_")) return GItemType.Legs; if (name.StartsWith("polearm_") || dbItemType == ItemType.Polearm) return GItemType.TwoHandPolearm; if (name.StartsWith("quiver_")) return GItemType.Quiver; if (name.StartsWith("ring_")) return GItemType.Ring; if (name.StartsWith("ruby_")) return GItemType.Ruby; if (name.StartsWith("shield_")) return GItemType.Shield; if (name.StartsWith("shoulderpads_")) return GItemType.Shoulder; if (name.StartsWith("spear_")) return GItemType.Spear; if (name.StartsWith("spiritstone_")) return GItemType.SpiritStone; if (name.StartsWith("staff_")) return GItemType.TwoHandStaff; if (name.StartsWith("staffofcow")) return GItemType.StaffOfHerding; if (name.StartsWith("sword_")) return GItemType.Sword; if (name.StartsWith("topaz_")) return GItemType.Topaz; if (name.StartsWith("twohandedaxe_")) return GItemType.TwoHandAxe; if (name.StartsWith("twohandedmace_")) return GItemType.TwoHandMace; if (name.StartsWith("twohandedsword_")) return GItemType.TwoHandSword; if (name.StartsWith("voodoomask_")) return GItemType.VoodooMask; if (name.StartsWith("wand_")) return GItemType.Wand; if (name.StartsWith("wizardhat_")) return GItemType.WizardHat; if (name.StartsWith("xbow_")) return GItemType.TwoHandCrossbow; if (name == "console_powerglobe") return GItemType.PowerGlobe; if (name.StartsWith("tiered_rifts_orb")) return GItemType.ProgressionGlobe; if (name.StartsWith("consumable_add_sockets")) return GItemType.ConsumableAddSockets; // Ramaladni's Gift if (name.StartsWith("tieredlootrunkey_")) return GItemType.TieredLootrunKey; // Follower item types if (name.StartsWith("jewelbox_") || dbItemType == ItemType.FollowerSpecial) { if (dbFollowerType == FollowerType.Scoundrel) return GItemType.FollowerScoundrel; if (dbFollowerType == FollowerType.Templar) return GItemType.FollowerTemplar; if (dbFollowerType == FollowerType.Enchantress) return GItemType.FollowerEnchantress; } if (name.StartsWith("demonkey_") || name.StartsWith("demontrebuchetkey")) { return GItemType.InfernalKey; } // Fall back on some partial DB item type checking if (name.StartsWith("crafting_")) { if (dbItemType == ItemType.CraftingPage) return GItemType.CraftTome; return GItemType.CraftingMaterial; } if (name.StartsWith("chestarmor_")) { if (dbItemType == ItemType.Cloak) return GItemType.Cloak; return GItemType.Chest; } if (name.StartsWith("helm_")) { if (dbItemType == ItemType.SpiritStone) return GItemType.SpiritStone; if (dbItemType == ItemType.VoodooMask) return GItemType.VoodooMask; if (dbItemType == ItemType.WizardHat) return GItemType.WizardHat; return GItemType.Helm; } if (name.StartsWith("helmcloth_")) { if (dbItemType == ItemType.SpiritStone) return GItemType.SpiritStone; if (dbItemType == ItemType.VoodooMask) return GItemType.VoodooMask; if (dbItemType == ItemType.WizardHat) return GItemType.WizardHat; return GItemType.Helm; } if (name.StartsWith("belt_")) { if (dbItemType == ItemType.MightyBelt) return GItemType.MightyBelt; return GItemType.Belt; } // hax for fuimusbruce's horadric hamburger if (name.StartsWith("offhand_")) { return GItemType.Dagger; } // ORGANS QUICK HACK IN if (name.StartsWith("quest_")) { return GItemType.InfernalKey; } if (name.StartsWith("horadricrelic")) { return GItemType.HoradricRelic; } return GItemType.Unknown; }
// ********************************************************************************************** // ***** Sell Validation - Determines what should or should not be sold to vendor ***** // ********************************************************************************************** internal static bool GilesSellValidation(string thisinternalname, int thislevel, ItemQuality thisquality, ItemType thisdbitemtype, FollowerType thisfollowertype) { GilesItemType thisGilesItemType = DetermineItemType(thisinternalname, thisdbitemtype, thisfollowertype); GilesBaseItemType thisGilesBaseType = DetermineBaseType(thisGilesItemType); switch (thisGilesBaseType) { case GilesBaseItemType.WeaponRange: case GilesBaseItemType.WeaponOneHand: case GilesBaseItemType.WeaponTwoHand: case GilesBaseItemType.Armor: case GilesBaseItemType.Offhand: case GilesBaseItemType.Jewelry: case GilesBaseItemType.FollowerItem: return true; case GilesBaseItemType.Gem: case GilesBaseItemType.Misc: case GilesBaseItemType.Unknown: //Sell any plans not already stashed. return thisdbitemtype == ItemType.CraftingPlan; } // Switch giles base item type return false; }
public CacheACDItem(string internalname, string realname, int level, ItemQuality quality, int goldamount, int balanceid, int dynamicid, float dps, bool onehanded, DyeType dyetype, ItemType dbitemtype, FollowerType dbfollowertype, bool unidentified, int stackquantity, ItemStats thesestats, ACDItem item, int row, int col, bool ispotion, int acdguid) { ThisInternalName=internalname; ThisRealName=realname; ThisLevel=level; ThisQuality=quality; ThisGoldAmount=goldamount; ThisBalanceID=balanceid; ThisDynamicID=dynamicid; ThisOneHanded=onehanded; ThisDyeType=dyetype; ThisDBItemType=dbitemtype; ThisFollowerType=dbfollowertype; IsUnidentified=unidentified; ThisItemStackQuantity=stackquantity; SpiritRegen=thesestats.SpiritRegen; ExperienceBonus=thesestats.ExperienceBonus; Dexterity=thesestats.Dexterity; Intelligence=thesestats.Intelligence; Strength=thesestats.Strength; Vitality=thesestats.Vitality; LifePercent=thesestats.LifePercent; LifeOnHit=thesestats.LifeOnHit; LifeSteal=thesestats.LifeSteal; HealthPerSecond=thesestats.HealthPerSecond; MagicFind=thesestats.MagicFind; GoldFind=thesestats.GoldFind; MovementSpeed=thesestats.MovementSpeed; PickUpRadius=thesestats.PickUpRadius; Sockets=thesestats.Sockets; CritPercent=thesestats.CritPercent; CritDamagePercent=thesestats.CritDamagePercent; AttackSpeedPercent=thesestats.AttackSpeedPercent; MinDamage=thesestats.MinDamage; MaxDamage=thesestats.MaxDamage; BlockChance=thesestats.BlockChance; Thorns=thesestats.Thorns; ResistAll=thesestats.ResistAll; ResistArcane=thesestats.ResistArcane; ResistCold=thesestats.ResistCold; ResistFire=thesestats.ResistFire; ResistHoly=thesestats.ResistHoly; ResistLightning=thesestats.ResistLightning; ResistPhysical=thesestats.ResistPhysical; ResistPoison=thesestats.ResistPoison; WeaponDamagePerSecond=thesestats.WeaponDamagePerSecond; ArmorBonus=thesestats.ArmorBonus; MaxDiscipline=thesestats.MaxDiscipline; MaxMana=thesestats.MaxMana; ArcaneOnCrit=thesestats.ArcaneOnCrit; ManaRegen=thesestats.ManaRegen; GlobeBonus=thesestats.HealthGlobeBonus; ACDItem=item; invRow=row; invCol=col; IsPotion=ispotion; ACDGUID=acdguid; }
public CacheACDItem(string internalname, string realname, int level, ItemQuality quality, int balanceid, int dynamicid, bool onehanded, ItemType dbitemtype, FollowerType dbfollowertype) { ThisInternalName=internalname; ThisRealName=realname; ThisLevel=level; ThisQuality=quality; ThisBalanceID=balanceid; ThisDynamicID=dynamicid; ThisOneHanded=onehanded; ThisDyeType=DyeType.None; ThisDBItemType=dbitemtype; ThisFollowerType=dbfollowertype; IsUnidentified=true; }
public CachedACDItem( ACDItem acdItem, string internalName, string realName, int level, ItemQuality quality, int goldAmount, int balanceId, int dynamicId, float dps, bool oneHanded, bool twoHanded, DyeType dyeType, ItemType itemType, ItemBaseType itembasetype, FollowerType followerType, bool unidentified, int stackQuantity, ItemStats itemStats) { AcdItem = acdItem; InternalName = internalName; RealName = realName; Level = level; Quality = quality; GoldAmount = goldAmount; BalanceID = balanceId; DynamicID = dynamicId; WeaponDPS = dps; OneHanded = oneHanded; TwoHanded = twoHanded; DyeType = dyeType; DBItemType = itemType; DBBaseType = itembasetype; FollowerType = followerType; IsUnidentified = unidentified; ItemStackQuantity = stackQuantity; Dexterity = itemStats.Dexterity; Intelligence = itemStats.Intelligence; Strength = itemStats.Strength; Vitality = itemStats.Vitality; LifePercent = itemStats.LifePercent; LifeOnHit = itemStats.LifeOnHit; LifeSteal = itemStats.LifeSteal; HealthPerSecond = itemStats.HealthPerSecond; MagicFind = itemStats.MagicFind; GoldFind = itemStats.GoldFind; MovementSpeed = itemStats.MovementSpeed; PickUpRadius = itemStats.PickUpRadius; Sockets = itemStats.Sockets; CritPercent = itemStats.CritPercent; CritDamagePercent = itemStats.CritDamagePercent; AttackSpeedPercent = itemStats.AttackSpeedPercent; MinDamage = itemStats.MinDamage; MaxDamage = itemStats.MaxDamage; BlockChance = itemStats.BlockChance; Thorns = itemStats.Thorns; ResistAll = itemStats.ResistAll; ResistArcane = itemStats.ResistArcane; ResistCold = itemStats.ResistCold; ResistFire = itemStats.ResistFire; ResistHoly = itemStats.ResistHoly; ResistLightning = itemStats.ResistLightning; ResistPhysical = itemStats.ResistPhysical; ResistPoison = itemStats.ResistPoison; WeaponDamagePerSecond = itemStats.WeaponDamagePerSecond; ArmorBonus = itemStats.ArmorBonus; MaxDiscipline = itemStats.MaxDiscipline; MaxMana = itemStats.MaxMana; ArcaneOnCrit = itemStats.ArcaneOnCrit; ManaRegen = itemStats.ManaRegen; GlobeBonus = itemStats.HealthGlobeBonus; HatredRegen = itemStats.HatredRegen; MaxFury = itemStats.MaxFury; SpiritRegen = itemStats.SpiritRegen; MaxSpirit = itemStats.MaxSpirit; HealthPerSpiritSpent = itemStats.HealthPerSpiritSpent; MaxArcanePower = itemStats.MaxArcanePower; DamageReductionPhysicalPercent = itemStats.DamageReductionPhysicalPercent; ArmorTotal = itemStats.ArmorTotal; Armor = itemStats.Armor; //FireDamagePercent = itemStats.FireDamagePercent; //LightningDamagePercent = itemStats.LightningDamagePercent; //ColdDamagePercent = itemStats.ColdDamagePercent; //PoisonDamagePercent = itemStats.PoisonDamagePercent; //ArcaneDamagePercent = itemStats.ArcaneDamagePercent; //HolyDamagePercent = itemStats.HolyDamagePercent; HealthGlobeBonus = itemStats.HealthGlobeBonus; WeaponAttacksPerSecond = itemStats.WeaponAttacksPerSecond; WeaponMaxDamage = itemStats.WeaponMaxDamage; WeaponMinDamage = itemStats.WeaponMinDamage; TrinityItemType = Trinity.DetermineItemType(internalName, itemType, followerType); TrinityItemBaseType = Trinity.DetermineBaseType(TrinityItemType); ComputeUpgrade(); }
public CacheBalance(CacheItem item) { try { BalanceID = item.ref_DiaItem.CommonData.GameBalanceId; _itemLevel = item.ref_DiaItem.CommonData.Level; _type = item.ref_DiaItem.CommonData.ItemType; _base = item.ref_DiaItem.CommonData.ItemBaseType; _followerType = item.ref_DiaItem.CommonData.FollowerSpecialType; _pluginType = ItemFunc.DetermineItemType(item.InternalName, _type, _followerType, item.SNOID); if (item.ItemDropType.HasValue) _pluginBase = ItemFunc.DetermineBaseItemType(item.ItemDropType.Value); else _pluginBase = ItemFunc.DetermineBaseItemType(item.InternalName, item.SNOID); _isStackable = ItemFunc.DetermineIsStackable(_pluginType, item.SNOID); if (!_isStackable) _isTwoSlot = ItemFunc.DetermineIsTwoSlot(_pluginType); } catch (Exception ex) { Logger.Write(LogLevel.Items, String.Format("Failed to create balance data for item {0}", item.DebugStringSimple)); } }
/// <summary> /// Initializes variable set for single object refresh /// </summary> private static void RefreshStepInit() { CurrentCacheObject = new TrinityCacheObject(); // Start this object as off as unknown type CurrentCacheObject.Type = TrinityObjectType.Unknown; CurrentCacheObject.GizmoType = GizmoType.None; CurrentCacheObject.Distance = 0f; CurrentCacheObject.Radius = 0f; c_ZDiff = 0f; c_ItemDisplayName = ""; c_ItemLink = ""; CurrentCacheObject.InternalName = ""; c_IgnoreReason = ""; c_IgnoreSubStep = ""; CurrentCacheObject.ACDGuid = -1; CurrentCacheObject.RActorGuid = -1; CurrentCacheObject.DynamicID = -1; CurrentCacheObject.GameBalanceID = -1; CurrentCacheObject.ActorSNO = -1; c_ItemLevel = -1; c_GoldStackSize = -1; c_HitPointsPct = -1; c_HitPoints = -1; c_IsOneHandedItem = false; c_IsTwoHandedItem = false; c_unit_IsElite = false; c_unit_IsRare = false; c_unit_IsUnique = false; c_unit_IsMinion = false; c_unit_IsTreasureGoblin = false; c_unit_IsAttackable = false; c_unit_HasShieldAffix = false; c_IsEliteRareUnique = false; c_IsObstacle = false; c_HasBeenNavigable = false; c_HasBeenRaycastable = false; c_HasBeenInLoS = false; c_ItemMd5Hash = string.Empty; c_ItemQuality = ItemQuality.Invalid; c_DBItemBaseType = ItemBaseType.None; c_DBItemType = ItemType.Unknown; c_item_tFollowerType = FollowerType.None; _cItemTinityItemType = TrinityItemType.Unknown; c_unit_MonsterSize = MonsterSize.Unknown; c_diaObject = null; c_diaGizmo = null; c_CurrentAnimation = SNOAnim.Invalid; c_HasDotDPS = false; c_MonsterAffixes = MonsterAffixes.None; }
/// <summary> /// Starts an asynchronous operation to get follower data /// </summary> /// <param name="followerType">follower type</param> /// <returns>Status of async operation</returns> public Task <Follower> GetFollowerInfoAsync(FollowerType followerType) { string path = "/api/d3/data/follower/" + EnumHelper <FollowerType> .EnumToString(followerType); return(GetAsync <Follower>(path, null)); }
// ********************************************************************************************** // ***** DetermineItemType - Calculates what kind of item it is from D3 internalnames ***** // ********************************************************************************************** internal static GilesItemType DetermineItemType(string sThisInternalName, ItemType DBItemType, FollowerType dbFollowerType = FollowerType.None) { sThisInternalName = sThisInternalName.ToLower(); if (sThisInternalName.StartsWith("axe_")) return GilesItemType.Axe; if (sThisInternalName.StartsWith("ceremonialdagger_")) return GilesItemType.CeremonialKnife; if (sThisInternalName.StartsWith("handxbow_")) return GilesItemType.HandCrossbow; if (sThisInternalName.StartsWith("dagger_")) return GilesItemType.Dagger; if (sThisInternalName.StartsWith("fistweapon_")) return GilesItemType.FistWeapon; if (sThisInternalName.StartsWith("mace_")) return GilesItemType.Mace; if (sThisInternalName.StartsWith("mightyweapon_1h_")) return GilesItemType.MightyWeapon; if (sThisInternalName.StartsWith("spear_")) return GilesItemType.Spear; if (sThisInternalName.StartsWith("sword_")) return GilesItemType.Sword; if (sThisInternalName.StartsWith("wand_")) return GilesItemType.Wand; if (sThisInternalName.StartsWith("twohandedaxe_")) return GilesItemType.TwoHandAxe; if (sThisInternalName.StartsWith("bow_")) return GilesItemType.TwoHandBow; if (sThisInternalName.StartsWith("combatstaff_")) return GilesItemType.TwoHandDaibo; if (sThisInternalName.StartsWith("xbow_")) return GilesItemType.TwoHandCrossbow; if (sThisInternalName.StartsWith("twohandedmace_")) return GilesItemType.TwoHandMace; if (sThisInternalName.StartsWith("mightyweapon_2h_")) return GilesItemType.TwoHandMighty; if (sThisInternalName.StartsWith("polearm_")) return GilesItemType.TwoHandPolearm; if (sThisInternalName.StartsWith("staff_")) return GilesItemType.TwoHandStaff; if (sThisInternalName.StartsWith("twohandedsword_")) return GilesItemType.TwoHandSword; if (sThisInternalName.StartsWith("staffofcow")) return GilesItemType.StaffOfHerding; if (sThisInternalName.StartsWith("mojo_")) return GilesItemType.Mojo; if (sThisInternalName.StartsWith("orb_")) return GilesItemType.Source; if (sThisInternalName.StartsWith("quiver_")) return GilesItemType.Quiver; if (sThisInternalName.StartsWith("shield_")) return GilesItemType.Shield; if (sThisInternalName.StartsWith("amulet_")) return GilesItemType.Amulet; if (sThisInternalName.StartsWith("ring_")) return GilesItemType.Ring; if (sThisInternalName.StartsWith("boots_")) return GilesItemType.Boots; if (sThisInternalName.StartsWith("bracers_")) return GilesItemType.Bracers; if (sThisInternalName.StartsWith("cloak_")) return GilesItemType.Cloak; if (sThisInternalName.StartsWith("gloves_")) return GilesItemType.Gloves; if (sThisInternalName.StartsWith("pants_")) return GilesItemType.Pants; if (sThisInternalName.StartsWith("barbbelt_")) return GilesItemType.MightyBelt; if (sThisInternalName.StartsWith("shoulderpads_")) return GilesItemType.Shoulders; if (sThisInternalName.StartsWith("spiritstone_")) return GilesItemType.SpiritStone; if (sThisInternalName.StartsWith("voodoomask_")) return GilesItemType.VoodooMask; if (sThisInternalName.StartsWith("wizardhat_")) return GilesItemType.WizardHat; if (sThisInternalName.StartsWith("lore_book_")) return GilesItemType.MiscBook; if (sThisInternalName.StartsWith("page_of_")) return GilesItemType.CraftTome; if (sThisInternalName.StartsWith("blacksmithstome")) return GilesItemType.CraftTome; if (sThisInternalName.StartsWith("ruby_")) return GilesItemType.Ruby; if (sThisInternalName.StartsWith("emerald_")) return GilesItemType.Emerald; if (sThisInternalName.StartsWith("topaz_")) return GilesItemType.Topaz; if (sThisInternalName.StartsWith("amethyst")) return GilesItemType.Amethyst; if (sThisInternalName.StartsWith("diamond_")) return GilesItemType.Diamond; if (sThisInternalName.StartsWith("healthpotion")) return GilesItemType.HealthPotion; if (sThisInternalName.StartsWith("followeritem_enchantress_")) return GilesItemType.FollowerEnchantress; if (sThisInternalName.StartsWith("followeritem_scoundrel_")) return GilesItemType.FollowerScoundrel; if (sThisInternalName.StartsWith("followeritem_templar_")) return GilesItemType.FollowerTemplar; if (sThisInternalName.StartsWith("craftingplan_")) return GilesItemType.CraftingPlan; if (sThisInternalName.StartsWith("dye_")) return GilesItemType.Dye; if (sThisInternalName.StartsWith("a1_")) return GilesItemType.SpecialItem; if (sThisInternalName.StartsWith("healthglobe")) return GilesItemType.HealthGlobe; if (sThisInternalName.StartsWith("craftingreagent")) return GilesItemType.CraftingMaterial; // Follower item types if (sThisInternalName.StartsWith("jewelbox_") || DBItemType == ItemType.FollowerSpecial) { if (dbFollowerType == FollowerType.Scoundrel) return GilesItemType.FollowerScoundrel; if (dbFollowerType == FollowerType.Templar) return GilesItemType.FollowerTemplar; if (dbFollowerType == FollowerType.Enchantress) return GilesItemType.FollowerEnchantress; } // Fall back on some partial DB item type checking if (sThisInternalName.StartsWith("crafting_") || sThisInternalName.StartsWith("craftingmaterials_")) { if (DBItemType == ItemType.CraftingPage) return GilesItemType.CraftTome; return GilesItemType.CraftingMaterial; } if (sThisInternalName.StartsWith("chestarmor_")) { if (DBItemType == ItemType.Cloak) return GilesItemType.Cloak; return GilesItemType.Chest; } if (sThisInternalName.StartsWith("helm_")) { if (DBItemType == ItemType.SpiritStone) return GilesItemType.SpiritStone; if (DBItemType == ItemType.VoodooMask) return GilesItemType.VoodooMask; if (DBItemType == ItemType.WizardHat) return GilesItemType.WizardHat; return GilesItemType.Helm; } if (sThisInternalName.StartsWith("helmcloth_")) { if (DBItemType == ItemType.SpiritStone) return GilesItemType.SpiritStone; if (DBItemType == ItemType.VoodooMask) return GilesItemType.VoodooMask; if (DBItemType == ItemType.WizardHat) return GilesItemType.WizardHat; return GilesItemType.Helm; } if (sThisInternalName.StartsWith("belt_")) { if (DBItemType == ItemType.MightyBelt) return GilesItemType.MightyBelt; return GilesItemType.Belt; } if (sThisInternalName.StartsWith("demonkey_") || sThisInternalName.StartsWith("demontrebuchetkey")) { return GilesItemType.InfernalKey; } return GilesItemType.Unknown; }
public static PluginItemTypes DetermineItemType(string sThisInternalName, ItemType DBItemType, FollowerType dbFollowerType = FollowerType.None, int snoid = -1) { sThisInternalName = sThisInternalName.ToLower(); if (snoid != -1) { ItemDataEntry itemEntry; if (TheCache.ObjectIDCache.ItemDataEntries.TryGetValue(snoid, out itemEntry)) { return itemEntry.ItemType; } } if (sThisInternalName.Contains("ruby_")) return PluginItemTypes.Ruby; if (sThisInternalName.Contains("emerald_")) return PluginItemTypes.Emerald; if (sThisInternalName.Contains("topaz_")) return PluginItemTypes.Topaz; if (sThisInternalName.Contains("amethyst")) return PluginItemTypes.Amethyst; if (sThisInternalName.Contains("diamond_")) return PluginItemTypes.Diamond; if (sThisInternalName.Contains("unique_gem")) return PluginItemTypes.LegendaryGem; if (sThisInternalName.Contains("consumable_add_sockets")) return PluginItemTypes.RamaladnisGift; // if (sThisInternalName.Contains("horadriccache")) return PluginItemTypes.HoradricCache; if (sThisInternalName.Contains("horadricrelic")) return PluginItemTypes.BloodShard; // if (IsUberKey(snoid) || sThisInternalName.Contains("demonkey_") || sThisInternalName.Contains("demontrebuchetkey")) return PluginItemTypes.InfernalKey; if (sThisInternalName.Contains("craftingreagent_legendary")) return PluginItemTypes.LegendaryCraftingMaterial; if (sThisInternalName.Contains("craftingreagent")) return PluginItemTypes.CraftingMaterial; if (sThisInternalName.Contains("lootrunkey")) return PluginItemTypes.KeyStone; // Fall back on some partial DB item type checking if (sThisInternalName.Contains("crafting_") || sThisInternalName.Contains("craftingmaterials_")) { if (DBItemType == ItemType.CraftingPage) return PluginItemTypes.CraftTome; return PluginItemTypes.CraftingMaterial; } if (sThisInternalName.Contains("flail1h_")) return PluginItemTypes.Flail; if (sThisInternalName.Contains("flail")) return PluginItemTypes.TwoHandFlail; if (sThisInternalName.Contains("twohandedaxe_")) return PluginItemTypes.TwoHandAxe; if (sThisInternalName.Contains("axe_")) return PluginItemTypes.Axe; if (sThisInternalName.Contains("ceremonialdagger_")) return PluginItemTypes.CeremonialKnife; if (sThisInternalName.Contains("handxbow_")) return PluginItemTypes.HandCrossbow; if (sThisInternalName.Contains("dagger_")) return PluginItemTypes.Dagger; if (sThisInternalName.Contains("fistweapon_")) return PluginItemTypes.FistWeapon; if (sThisInternalName.Contains("twohandedmace_")) return PluginItemTypes.TwoHandMace; if (sThisInternalName.Contains("mace_")) return PluginItemTypes.Mace; if (sThisInternalName.Contains("mightyweapon_1h_")) return PluginItemTypes.MightyWeapon; if (sThisInternalName.Contains("spear_")) return PluginItemTypes.Spear; if (sThisInternalName.Contains("twohandedsword_")) return PluginItemTypes.TwoHandSword; if (sThisInternalName.Contains("sword_")) return PluginItemTypes.Sword; if (sThisInternalName.Contains("wand_")) return PluginItemTypes.Wand; if (sThisInternalName.Contains("xbow_")) return PluginItemTypes.TwoHandCrossbow; if (sThisInternalName.Contains("bow_")) return PluginItemTypes.TwoHandBow; if (sThisInternalName.Contains("combatstaff_")) return PluginItemTypes.TwoHandDaibo; if (sThisInternalName.Contains("mightyweapon_2h_")) return PluginItemTypes.TwoHandMighty; if (sThisInternalName.Contains("polearm_")) return PluginItemTypes.TwoHandPolearm; if (sThisInternalName.Contains("staff_")) return PluginItemTypes.TwoHandStaff; if (sThisInternalName.Contains("staffofcow")) return PluginItemTypes.StaffOfHerding; if (sThisInternalName.Contains("mojo_")) return PluginItemTypes.Mojo; if (sThisInternalName.Contains("orb_")) return PluginItemTypes.Source; if (sThisInternalName.Contains("quiver_")) return PluginItemTypes.Quiver; if (sThisInternalName.Contains("crushield_")) return PluginItemTypes.CrusaderShield; if (sThisInternalName.Contains("shield_")) return PluginItemTypes.Shield; if (sThisInternalName.Contains("amulet_")) return PluginItemTypes.Amulet; if (sThisInternalName.Contains("ring_")) return PluginItemTypes.Ring; if (sThisInternalName.Contains("boots_")) return PluginItemTypes.Boots; if (sThisInternalName.Contains("bracers_")) return PluginItemTypes.Bracers; if (sThisInternalName.Contains("cloak_")) return PluginItemTypes.Cloak; if (sThisInternalName.Contains("gloves_")) return PluginItemTypes.Gloves; if (sThisInternalName.Contains("pants_")) return PluginItemTypes.Pants; if (sThisInternalName.Contains("barbbelt_")) return PluginItemTypes.MightyBelt; if (sThisInternalName.Contains("shoulderpads_")) return PluginItemTypes.Shoulders; if (sThisInternalName.Contains("spiritstone_")) return PluginItemTypes.SpiritStone; if (sThisInternalName.Contains("voodoomask_")) return PluginItemTypes.VoodooMask; if (sThisInternalName.Contains("wizardhat_")) return PluginItemTypes.WizardHat; if (sThisInternalName.Contains("lore_book_")) return PluginItemTypes.MiscBook; if (sThisInternalName.Contains("page_of_")) return PluginItemTypes.CraftTome; if (sThisInternalName.Contains("blacksmithstome")) return PluginItemTypes.CraftTome; if (sThisInternalName.Contains("healthpotion")) { if (sThisInternalName.Contains("legendary")) return PluginItemTypes.LegendaryHealthPotion; return PluginItemTypes.HealthPotion; } if (sThisInternalName.Contains("followeritem_enchantress_")) return PluginItemTypes.FollowerEnchantress; if (sThisInternalName.Contains("followeritem_scoundrel_")) return PluginItemTypes.FollowerScoundrel; if (sThisInternalName.Contains("followeritem_templar_")) return PluginItemTypes.FollowerTemplar; if (sThisInternalName.Contains("craftingplan_")) return PluginItemTypes.CraftingPlan; if (sThisInternalName.Contains("dye_")) return PluginItemTypes.Dye; if (sThisInternalName.Contains("a1_")) return PluginItemTypes.SpecialItem; if (sThisInternalName.Contains("healthglobe")) return PluginItemTypes.HealthGlobe; // Follower item types if (sThisInternalName.Contains("jewelbox_") || DBItemType == ItemType.FollowerSpecial) { if (dbFollowerType == FollowerType.Scoundrel) return PluginItemTypes.FollowerScoundrel; if (dbFollowerType == FollowerType.Templar) return PluginItemTypes.FollowerTemplar; if (dbFollowerType == FollowerType.Enchantress) return PluginItemTypes.FollowerEnchantress; } if (sThisInternalName.Contains("chestarmor_")) { if (DBItemType == ItemType.Cloak) return PluginItemTypes.Cloak; return PluginItemTypes.Chest; } if (sThisInternalName.Contains("helm_")) { if (DBItemType == ItemType.SpiritStone) return PluginItemTypes.SpiritStone; if (DBItemType == ItemType.VoodooMask) return PluginItemTypes.VoodooMask; if (DBItemType == ItemType.WizardHat) return PluginItemTypes.WizardHat; return PluginItemTypes.Helm; } if (sThisInternalName.Contains("helmcloth_")) { if (DBItemType == ItemType.SpiritStone) return PluginItemTypes.SpiritStone; if (DBItemType == ItemType.VoodooMask) return PluginItemTypes.VoodooMask; if (DBItemType == ItemType.WizardHat) return PluginItemTypes.WizardHat; return PluginItemTypes.Helm; } if (sThisInternalName.Contains("belt_")) { if (DBItemType == ItemType.MightyBelt) return PluginItemTypes.MightyBelt; return PluginItemTypes.Belt; } return PluginItemTypes.Unknown; }
/// <summary> /// String representation for debug purposes. /// </summary> /// <returns></returns> public override string ToString() { return(FollowerType.ToString()); }
public override bool UpdateData() { if (ref_DiaItem == null) { try { ref_DiaItem = (DiaItem)ref_DiaObject; } catch { Logger.Write(LogLevel.Cache, "Failure to convert obj {0} to DiaItem!", InternalName); NeedsRemoved = true; return(false); } } if (targetType.Value == TargetType.Item) { #region Item #region DynamicID if (!DynamicID.HasValue) { try { DynamicID = ref_DiaObject.CommonData.DynamicId; } catch { Logger.Write(LogLevel.Cache, "Failure to get Dynamic ID for {0}", InternalName); return(false); } } #endregion //Gamebalance Update if (!BalanceID.HasValue) { try { BalanceID = ref_DiaObject.CommonData.GameBalanceId; } catch { Logger.Write(LogLevel.Cache, "Failure to get gamebalance ID for item {0}", InternalName); return(false); } } //Check if game balance needs updated #region GameBalance if (BalanceData == null || BalanceData.bNeedsUpdated) { CacheBalance thisnewGamebalance; try { int balanceid = BalanceID.Value; int tmp_Level = ref_DiaItem.CommonData.Level; ItemType tmp_ThisType = ref_DiaItem.CommonData.ItemType; ItemBaseType tmp_ThisDBItemType = ref_DiaItem.CommonData.ItemBaseType; FollowerType tmp_ThisFollowerType = ref_DiaItem.CommonData.FollowerSpecialType; bool tmp_bThisOneHanded = false; bool tmp_bThisTwoHanded = false; if (tmp_ThisDBItemType == ItemBaseType.Weapon) { tmp_bThisOneHanded = ref_DiaItem.CommonData.IsOneHand; tmp_bThisTwoHanded = ref_DiaItem.CommonData.IsTwoHand; } thisnewGamebalance = new CacheBalance(balanceid, itemlevel: tmp_Level, itemtype: tmp_ThisType, itembasetype: tmp_ThisDBItemType, onehand: tmp_bThisOneHanded, twohand: tmp_bThisTwoHanded, followertype: tmp_ThisFollowerType); } catch { Logger.Write(LogLevel.Cache, "Failure to add/update gamebalance data for item {0}", InternalName); return(false); } if (BalanceData == null) { CacheIDLookup.dictGameBalanceCache.Add(BalanceID.Value, thisnewGamebalance); } else { CacheIDLookup.dictGameBalanceCache[BalanceID.Value] = thisnewGamebalance; } } #endregion //Item Quality / Recheck #region ItemQuality if (!Itemquality.HasValue || ItemQualityRechecked == false) { try { Itemquality = ref_DiaItem.CommonData.ItemQualityLevel; } catch { Logger.Write(LogLevel.Cache, "Failure to get item quality for {0}", InternalName); return(false); } if (!ItemQualityRechecked) { ItemQualityRechecked = true; } else { NeedsUpdate = false; } } #endregion //Pickup? // Now see if we actually want it #region PickupValidation if (!ShouldPickup.HasValue) { //Logger.DBLog.InfoFormat Dropped Items Here!! Bot.Game.CurrentGameStats.CurrentProfile.LootTracker.DroppedItemLog(this); Bot.Character.ItemPickupEval(this); //if (Bot.Settings.ItemRules.UseItemRules) //{ // Interpreter.InterpreterAction action = Bot.ItemRulesEval.checkPickUpItem(this, ItemEvaluationType.PickUp); // switch (action) // { // case Interpreter.InterpreterAction.PICKUP: // ShouldPickup = true; // break; // case Interpreter.InterpreterAction.IGNORE: // ShouldPickup = false; // break; // } //} //if (!ShouldPickup.HasValue) //{ // //Use Giles Scoring or DB Weighting.. // ShouldPickup = // Bot.Settings.ItemRules.ItemRuleGilesScoring ? Backpack.GilesPickupItemValidation(this) // : ItemManager.Current.EvaluateItem(ref_DiaItem.CommonData, ItemEvaluationType.PickUp); ; //} } else { NeedsUpdate = false; } #endregion #endregion } else { #region Gold //Get gold value.. if (!GoldAmount.HasValue) { try { GoldAmount = ref_DiaItem.CommonData.GetAttribute <int>(ActorAttributeType.Gold); } catch { Logger.Write(LogLevel.Cache, "Failure to get gold amount for gold pile!"); return(false); } } Bot.Character.Data.UpdateCoinage = true; NeedsUpdate = false; #endregion } return(true); }