private void timerTargeting_Tick(object sender, EventArgs e) { // exit quickly if Debug tab not displayed if (tabControl1.SelectedTab != tabDebug) { return; } SendMessage(lblPoi.Handle, WM_SETREDRAW, false, (IntPtr)0); SendMessage(lblTargets.Handle, WM_SETREDRAW, false, (IntPtr)0); SendMessage(lblTankToStayNear.Handle, WM_SETREDRAW, false, (IntPtr)0); SendMessage(lblTargets.Handle, WM_SETREDRAW, false, (IntPtr)0); SendMessage(lblAuxTargets.Handle, WM_SETREDRAW, false, (IntPtr)0); // update POI int i = 0; var sb = new StringBuilder(); // poitype distance sb.Append(BotPoi.Current.Type.ToString()); try { WoWObject o = BotPoi.Current.AsObject; if (o != null) { sb.Append(" @ " + o.Distance.ToString("F1") + " yds - " + o.SafeName()); } } catch { } lblPoi.Text = sb.ToString(); // update list of Targets i = 0; sb = new StringBuilder(); foreach (WoWUnit u in Targeting.Instance.TargetList) { try { sb.AppendLine(u.SafeName().AlignLeft(20) + " " + u.HealthPercent.ToString("F1").AlignRight(5) + "% " + u.Distance.ToString("F1").AlignRight(5) + " yds"); if (++i == 5) { break; } } catch { } } lblTargets.Text = sb.ToString(); // update list of Heal Targets sb = new StringBuilder(); if (HealerManager.NeedHealTargeting) { try { WoWUnit tank = HealerManager.TankToStayNear; if (tank == null) { sb.Append("None"); } else { sb.Append(tank.SafeName().AlignLeft(22) + "- " + tank.HealthPercent.ToString("F1").AlignRight(5) + "% @ " + tank.Distance.ToString("F1").AlignRight(5) + " yds"); } } catch { sb.Append("Error"); } lblTankToStayNear.Text = sb.ToString(); i = 0; sb = new StringBuilder(); foreach (WoWUnit u in HealerManager.Instance.TargetList) { try { sb.AppendLine(u.SafeName().AlignLeft(22) + "- " + u.HealthPercent.ToString("F1").AlignRight(5) + "% @ " + u.Distance.ToString("F1").AlignRight(5) + " yds"); if (++i == 5) { break; } } catch { } } lblAuxTargets.Text = sb.ToString(); } // update list of Tank Targets if (TankManager.NeedTankTargeting) { i = 0; sb = new StringBuilder(); foreach (WoWUnit u in TankManager.Instance.TargetList) { try { sb.AppendLine(u.SafeName().AlignLeft(20) + " " + u.HealthPercent.ToString("F1").AlignRight(5) + "% " + u.Distance.ToString("F1").AlignRight(5) + " yds"); if (++i == 5) { break; } } catch (System.AccessViolationException) { } catch (Styx.InvalidObjectPointerException) { } } lblTargets.Text = sb.ToString(); } UpdateBehaviorFlags(); UpdateCapabilitiesFlags(); SendMessage(lblPoi.Handle, WM_SETREDRAW, true, (IntPtr)0); SendMessage(lblTargets.Handle, WM_SETREDRAW, true, (IntPtr)0); SendMessage(lblTankToStayNear.Handle, WM_SETREDRAW, true, (IntPtr)0); SendMessage(lblTargets.Handle, WM_SETREDRAW, true, (IntPtr)0); SendMessage(lblAuxTargets.Handle, WM_SETREDRAW, true, (IntPtr)0); tabDebug.Refresh(); }