Пример #1
0
        // ----- 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;
            }
        }
Пример #2
0
    //  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;
    }
Пример #3
0
        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));
            }
        }
Пример #4
0
 public CacheBalance(int itemlevel, ItemType itemtype, bool onehand, FollowerType followertype)
 {
     iThisItemLevel   = itemlevel;
     thisItemType     = itemtype;
     bThisOneHand     = onehand;
     thisFollowerType = followertype;
     bNeedsUpdated    = true;
 }
Пример #5
0
        public Follower GetFollower(FollowerType type)
        {
            Follower follower;

            TryGetData <Follower>(BaseAPIurl + string.Format(DataUtility.followerPath, type), out follower);

            return(follower);
        }
Пример #6
0
 public CacheBalance(int itemlevel, ItemType itemtype, bool onehand, FollowerType followertype)
 {
     iThisItemLevel=itemlevel;
              thisItemType=itemtype;
              bThisOneHand=onehand;
              thisFollowerType=followertype;
              bNeedsUpdated=true;
 }
Пример #7
0
        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)));
        }
Пример #8
0
 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;
 }
Пример #9
0
        /// <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);
        }
Пример #10
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;
 }
Пример #11
0
        // 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 };
        }
Пример #12
0
        /// <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;
        }
Пример #13
0
 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;
 }
Пример #14
0
 private void SetFollowerModeValues()
 {
     if (Settings.FollowerModeToggleFollower.Value)
     {
         _currentFollowerMode = FollowerType.Follower;
     }
     else if (Settings.FollowerModeToggleLeader.Value)
     {
         _currentFollowerMode = FollowerType.Leader;
     }
     else
     {
         _currentFollowerMode = FollowerType.Disabled;
     }
 }
Пример #15
0
 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;
 }
Пример #16
0
        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;
        }
Пример #17
0
 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;
 }
Пример #18
0
 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;
 }
Пример #19
0
        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));
            }
        }
Пример #20
0
        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);
        }
Пример #21
0
 public void SetType(FollowerType type)
 {
     m_type = type;
 }
Пример #22
0
        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;
        }
Пример #23
0
        // 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;
        }
Пример #24
0
        // **********************************************************************************************
        // *****      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;
        }
Пример #25
0
        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;
        }
Пример #26
0
 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;
 }
Пример #27
0
        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();
        }
Пример #28
0
        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));

            }
        }
Пример #29
0
 /// <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;
 }
Пример #30
0
        /// <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));
        }
Пример #31
0
        // **********************************************************************************************
        // ***** 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;
        }
Пример #32
0
        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;
        }
Пример #33
0
 /// <summary>
 /// String representation for debug purposes.
 /// </summary>
 /// <returns></returns>
 public override string ToString()
 {
     return(FollowerType.ToString());
 }
Пример #34
0
        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);
        }