/// <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; }
/// <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); }
/// <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); }
public static AvoidancePart GetAvoidancePart(MonsterAffixes affixes) { return(AvoidanceDataDictionary.Values.FirstOrDefault(a => affixes.HasAny(a.Affix))); }
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(); }
/// <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; }
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; }
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; }