/// <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;
        }
Example #2
0
        /// <summary>
        /// Checks if the mob is Elite or Rare
        /// </summary>
        /// <param name="unit">DiaUnit</param>
        /// <returns>True if Current unit is Elite</returns>
        public static bool IsElite(this DiaUnit unit)
        {
            ACD commonData = unit.CommonData;

            if (unit.IsValid && commonData != null)
            {
                int key = commonData.DynamicId;

                if (!IsEliteCache.ContainsKey(key))
                {
                    MonsterAffixes affixes = commonData.MonsterAffixes;
                    IsEliteCache.Add(key,
                                     affixes.HasFlag(MonsterAffixes.Elite) || affixes.HasFlag(MonsterAffixes.Rare) ||
                                     affixes.HasFlag(MonsterAffixes.Unique) || TreasureGoblin.Contains(unit.ActorSNO));
                }
                return(IsEliteCache[key]);
            }
            return(false);
        }
Example #3
0
        /// <summary> Query if 'unit' is elite. </summary>
        /// <param name="unit"> The unit. </param>
        /// <returns> true if elite, false if not. </returns>
        private bool IsElite(ACD unit)
        {
            if (unit.IsValid)
            {
                int key = unit.DynamicId;

                bool isElite;
                if (IsEliteCache.TryGetValue(key, out isElite))
                {
                    return(isElite);
                }


                MonsterAffixes affixes = unit.MonsterAffixes;
                IsEliteCache.Add(key,
                                 affixes.HasFlag(MonsterAffixes.Elite) || affixes.HasFlag(MonsterAffixes.Rare) ||
                                 affixes.HasFlag(MonsterAffixes.Unique)
                                 );

                return(IsEliteCache[key]);
            }

            return(false);
        }
Example #4
0
 public static AvoidancePart GetAvoidancePart(MonsterAffixes affixes)
 {
     return(AvoidanceDataDictionary.Values.FirstOrDefault(a => affixes.HasAny(a.Affix)));
 }
Example #5
0
        private void CheckMonsterAffixes(MonsterAffixes theseaffixes)
        {
            MonsterRare = theseaffixes.HasFlag(MonsterAffixes.Rare);
            MonsterUnique = theseaffixes.HasFlag(MonsterAffixes.Unique);
            MonsterElite = theseaffixes.HasFlag(MonsterAffixes.Elite);
            MonsterMinion = theseaffixes.HasFlag(MonsterAffixes.Minion);

            if (IsEliteRareUnique)
            {
                ////Type Properties
                //if (this.MonsterRare||this.MonsterElite||this.MonsterMinion)
                //	 this.Properties|=TargetProperties.RareElite;

                //if (MonsterUnique)
                //	 this.Properties|=TargetProperties.Unique;

                MonsterShielding = theseaffixes.HasFlag(MonsterAffixes.Shielding);
                //if (MonsterShielding)
                //	 this.Properties|=TargetProperties.Shielding;

                MonsterMissileDampening = theseaffixes.HasFlag(MonsterAffixes.MissileDampening);
                //if (this.MonsterMissileDampening)
                //	 this.Properties|=TargetProperties.MissileDampening;

                MonsterIlluionist = theseaffixes.HasFlag(MonsterAffixes.Illusionist);
                MonsterExtraHealth = theseaffixes.HasFlag(MonsterAffixes.ExtraHealth);
                MonsterLifeLink = theseaffixes.HasFlag(MonsterAffixes.HealthLink);
                MonsterReflectDamage = theseaffixes.HasFlag(MonsterAffixes.ReflectsDamage);
                MonsterTeleport = theseaffixes.HasFlag(MonsterAffixes.Teleporter);
                MonsterElectrified = theseaffixes.HasFlag(MonsterAffixes.Electrified);
                MonsterFast = theseaffixes.HasFlag(MonsterAffixes.Fast);
                MonsterFireChains = theseaffixes.HasFlag(MonsterAffixes.FireChains);
                MonsterAvenger = theseaffixes.HasFlag(MonsterAffixes.Avenger);
                MonsterFrozen = theseaffixes.HasFlag(MonsterAffixes.Frozen);
                MonsterNormal = false;

            }
            else
            {
                MonsterFast = false;
                MonsterShielding = false;
                MonsterMissileDampening = false;
                MonsterIlluionist = false;
                MonsterExtraHealth = false;
                MonsterLifeLink = false;
                MonsterReflectDamage = false;
                MonsterTeleport = false;
                MonsterElectrified = false;
                MonsterFireChains = false;
                MonsterAvenger = false;
                MonsterFrozen = false;
                MonsterNormal = !IsBoss && !IsTreasureGoblin;
            }

            CheckedMonsterAffixes_ = true;
            UpdateProperties();
        }
Example #6
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;
 }
Example #7
0
        private void CheckMonsterAffixes(MonsterAffixes theseaffixes)
        {
            MonsterRare=theseaffixes.HasFlag(MonsterAffixes.Rare);
                     MonsterUnique=theseaffixes.HasFlag(MonsterAffixes.Unique);
                     MonsterElite=theseaffixes.HasFlag(MonsterAffixes.Elite);
                     MonsterMinion=theseaffixes.HasFlag(MonsterAffixes.Minion);

                     if (IsEliteRareUnique)
                     {
                          MonsterShielding=theseaffixes.HasFlag(MonsterAffixes.Shielding);
                          MonsterMissileDampening=theseaffixes.HasFlag(MonsterAffixes.MissileDampening);
                          MonsterIlluionist=theseaffixes.HasFlag(MonsterAffixes.Illusionist);
                          MonsterExtraHealth=theseaffixes.HasFlag(MonsterAffixes.ExtraHealth);
                          MonsterLifeLink=theseaffixes.HasFlag(MonsterAffixes.HealthLink);
                     }
                     else
                     {
                          MonsterShielding=false;
                          MonsterMissileDampening=false;
                          MonsterIlluionist=false;
                          MonsterExtraHealth=false;
                          MonsterLifeLink=false;
                     }

                     CheckedMonsterAffixes_=true;
        }
Example #8
0
        static void Main(string[] args)
        {
            var manager = new FileManager(@"C:\Hellgate");

            manager.BeginAllDatReadAccess();
            manager.LoadTableFiles();
            manager.EndAllDatAccess();

            //TODO: hp/power regen is messed up when displaying the full formula because I guess the itemdisplay formula isn't used

            //note: "display dmg" is ilvl multi*item dmg*dmg% (before "increments" are applied), where dmg% is the first or second argument in dmg_elec(100,100)

            //TODO: weapon ranges
            //TODO: add affix names to properties
            //TODO: sword attack rates
            //TODO: wtf is up with ilvls that don't match any of the listed numbers (maxlevel, fixedlevel, level)?

            //long term TODO: assign unit types so "isa" functions (among other things) work

            args = new[] { "ITEMS" };

            //new Items(manager).WriteAllUniqueLegendaryItemPages();
            //return;

            string     sqlStatement;
            WikiScript script;

            foreach (string arg in args)
            {
                switch (arg)
                {
                case "ACHIEVEMENTS":
                    script = new Achievements(manager);
                    break;

                case "AFFIXES":
                    script = new Affixes(manager);
                    break;

                case "BASEWAVES":
                    script = new BaseDefenseWaves(manager);
                    break;

                case "MONSTERAFFIXES":
                    script = new MonsterAffixes(manager);
                    break;

                case "ARMORAFFIXES":
                    script = new ArmorAffixes(manager);
                    break;

                case "ITEMLEVELS":
                    script = new ItemLevels(manager);
                    break;

                case "LEVELS":
                    script = new Levels(manager);
                    break;

                case "MONSTERS":
                    script = new Monsters(manager);
                    break;

                case "PVPRANKS":
                    script = new PVPRanks(manager);
                    break;

                case "LEVELSCALING":
                    script = new LevelScaling(manager);
                    break;

                case "ITEMS":
                    script = new Items(manager);
                    break;

                case "ITEM_QUALITY":
                    script = new ItemQuality(manager);
                    break;

                case "TREASURE":
                    script = new NewTreasure(manager);
                    break;

                case "MONSTER_QUALITY":
                    script = new MonsterQuality(manager);
                    break;

                case "RECIPES":
                    script = new Recipes(manager);
                    break;

                case "ITEM_SETS":
                    script = new Sets(manager);
                    break;

                default:
                    throw new Exception("Unknown WikiScript: " + arg);
                }

                sqlStatement = script.ExportTableInsertScript();

                File.WriteAllText(arg.ToLower() + ".sql", sqlStatement);
            }

            return;
        }