private static void HandleEvadeBuggedMob(LuaEventArgs args, CombatLogEventArgs e) { WoWUnit unit = e.DestUnit; WoWGuid guid = e.DestGuid; if (unit == null && StyxWoW.Me.GotTarget()) { unit = StyxWoW.Me.CurrentTarget; guid = StyxWoW.Me.CurrentTargetGuid; Logger.Write("Evade: bugged mob guid:{0}, so assuming current target instead", args.Args[7]); } if (unit != null) { if (!MobsThatEvaded.ContainsKey(unit.Guid)) { MobsThatEvaded.Add(unit.Guid, 0); } MobsThatEvaded[unit.Guid] = MobsThatEvaded[unit.Guid] + 1; if (MobsThatEvaded[unit.Guid] < SingularSettings.Instance.EvadedAttacksAllowed) { Logger.Write("Mob {0} has evaded {1} times. Not blacklisting yet, but will count evades on {2:X0} for now", unit.SafeName(), MobsThatEvaded[unit.Guid], unit.Guid); } else { const int MinutesToBlacklist = 5; if (Blacklist.Contains(unit.Guid, BlacklistFlags.Combat)) { Logger.Write(Color.LightGoldenrodYellow, "Mob {0} has evaded {1} times. Previously blacklisted {2:X0} for {3} minutes!", unit.SafeName(), MobsThatEvaded[unit.Guid], unit.Guid, MinutesToBlacklist); } else { string fragment = string.Format("Mob {0} has evaded {1} times", unit.SafeName(), MobsThatEvaded[unit.Guid]); Logger.Write(Color.LightGoldenrodYellow, "{0}. Blacklisting {1:X0} for {2} minutes!", fragment, unit.Guid, MinutesToBlacklist); Blacklist.Add(unit.Guid, BlacklistFlags.Combat, TimeSpan.FromMinutes(MinutesToBlacklist), "Singular - " + fragment); if (!Blacklist.Contains(unit.Guid, BlacklistFlags.Combat)) { Logger.Write(Color.Pink, "error: blacklist does not contain entry for {0} after Blacklist.Add", unit.SafeName()); } } if (BotPoi.Current.Guid == unit.Guid) { Logger.Write("EvadeHandling: Current BotPOI type={0} is Evading, clearing now...", BotPoi.Current.Type); BotPoi.Clear("Singular recognized Evade bugged mob"); } if (StyxWoW.Me.CurrentTargetGuid == guid) { foreach (var target in Targeting.Instance.TargetList) { if (Unit.ValidUnit(target) && !Blacklist.Contains(target.Guid, BlacklistFlags.Pull | BlacklistFlags.Combat) && unit.EvadedAttacksCount() < SingularSettings.Instance.EvadedAttacksAllowed ) { Logger.Write(Color.Pink, "Setting target to {0} to get off evade bugged mob!", target.SafeName()); target.Target(); return; } } Logger.Write(Color.Pink, "BotBase has 0 entries in Target list not blacklisted -- nothing else we can do at this point!"); // StyxWoW.Me.ClearTarget(); } } } /// line below was originally in Evade logic, but commenting to avoid Sleeps // StyxWoW.SleepForLagDuration(); }