protected override void OnBeforeAction(ActionBase action) { if (WoWParty.NumPartyMembers > 0 && HelpfulTarget.IsValid && HelpfulTarget.HealthPercentage > 60) { var tank = HelpfulTargets.OrderByDescending(m => m.MaxHealth).First() ?? WoWPlayer.Invalid; if (tank.IsValid && !tank.IsDead && tank.Distance < Globals.MaxDistance) { var beacon = WoWSpell.GetSpell("Beacon of Light"); if (beacon.IsValid && beacon.IsReady && !tank.Auras["Beacon of Light"].IsValid) { Log.WriteLine("Casting {0} on {1}", beacon.Name, tank.Name); beacon.Cast(tank); Sleep(Globals.SpellWait); } } } if (action != null) { var aw = WoWSpell.GetSpell("Avenging Wrath"); if (aw.IsValid && aw.IsReady) { Log.WriteLine("Popping {0}", aw.Name); aw.Cast(); Sleep(Globals.SpellWait); } } }
public void SelectTargets() { HarmfulTargets = HarmfulTargetsSelector(); HarmfulTarget = HarmfulTargets.FirstOrDefault(); HelpfulTargets = HelpfulTargetsSelector(); HelpfulTarget = HelpfulTargets.FirstOrDefault(); AlternativeHelpfulTarget = HelpfulTargets.ElementAtOrDefault(1); }
public void SelectTargets() { HarmfulTargets = from u in Manager.Objects.Where(o => o.IsValid && (o.IsUnit || o.IsPlayer)).Select(o => o as WoWUnit) where u.IsValid && u.Distance < Globals.MaxDistance && !u.IsFriendly && !u.IsDead && u.IsInCombat orderby u.Distance ascending select u; HarmfulTarget = HarmfulTargets.FirstOrDefault() ?? WoWUnit.Invalid; HelpfulTargets = from u in WoWParty.Members where u.IsValid && u.Distance < Globals.MaxDistance && !u.IsDead && u.IsFriendly orderby u.HealthPercentage ascending select u; HelpfulTarget = HelpfulTargets.FirstOrDefault() ?? WoWPlayer.Invalid; AlternativeHelpfulTarget = HelpfulTargets.ElementAtOrDefault(1) ?? WoWPlayer.Invalid; }