public static Composite FuryCombat() { return(new PrioritySelector( Common.CreateInterruptBehavior(), HeroicLeap(), DemoBanner(), new Decorator(ret => Me.CurrentTarget != null && (!Me.CurrentTarget.IsWithinMeleeRange || Me.IsCasting || SpellManager.GlobalCooldown), new ActionAlwaysSucceed()), new Decorator(ret => Me.HasAura("Dire Fixation"), new PrioritySelector( BossMechs.HorridonHeroic())), Spell.Cast("Shattering Throw", ret => Me.CurrentTarget.IsBoss() && PartyBuff.WeHaveBloodlust), Spell.Cast("Victory Rush", ret => Me.HealthPercent <= 90), Spell.Cast("Berserker Rage", ret => !Me.CachedHasAura(Enrage) && Me.CurrentTarget.CachedHasAura("Colossus Smash")), Spell.Cast("Colossus Smash", ret => Me.CurrentRage > 80 && Me.CachedHasAura("Raging Blow!") && Me.CachedHasAura(Enrage)), new Decorator(ret => Unit.UnfriendlyUnits(8).Count() > 2, CreateAoe()), new Decorator(ret => Me.CurrentTarget != null && Me.CurrentTarget.HealthPercent <= 20, CreateExecuteRange()), new Decorator(ret => Me.CurrentTarget != null && Me.CurrentTarget.HealthPercent > 20, new PrioritySelector( Item.UsePotionAndHealthstone(40), new Decorator(ret => AdvancedAI.Burst && Me.CurrentTarget.IsBoss(), new PrioritySelector( Spell.Cast("Blood Fury"), Spell.Cast("Recklessness"), Spell.Cast("Avatar"), Spell.Cast("Skull Banner"))), Spell.Cast("Bloodbath"), new Action(ret => { Item.UseHands(); return RunStatus.Failure; }), new Decorator(ret => !Me.CurrentTarget.CachedHasAura("Colossus Smash"), new PrioritySelector( Spell.Cast("Bloodthirst"), Spell.Cast("Heroic Strike", ctx => Me.CurrentRage > 105 && ColossusSmashCheck()), Spell.Cast("Raging Blow", ret => Me.CachedHasAura("Raging Blow!", 2) && ColossusSmashCheck()), Spell.Cast("Wild Strike", ret => Me.CachedHasAura("Bloodsurge")), Spell.Cast("Dragon Roar", ret => Me.CurrentTarget.Distance <= 8), Spell.Cast("Raging Blow", ret => Me.CachedHasAura("Raging Blow!", 1) && ColossusSmashCheck()), Spell.Cast("Battle Shout", ret => Me.RagePercent < 30 && Spell.GetSpellCooldown("Colossus Smash").TotalSeconds <= 2), Spell.Cast("Shockwave"), Spell.Cast("Wild Strike", ret => Me.CurrentRage >= 115 && ColossusSmashCheck()))), Spell.Cast("Heroic Strike", ret => Me.CurrentRage > 30, true), Spell.Cast("Bloodthirst"), Spell.Cast("Raging Blow"), Spell.Cast("Wild Strike", ret => Me.CachedHasAura("Bloodsurge")))))); }
public static Composite RetributionCombat() { return(new Throttle( new PrioritySelector( //new Decorator(ret => AdvancedAI.PvPRot, // RetributionPaladinPvP.CreateRPPvPCombat), new Throttle(1, 1, new Decorator(ret => Me.HasAura("Dire Fixation"), new PrioritySelector( BossMechs.HorridonHeroic()))), Common.CreateInterruptBehavior(), Dispelling.CreateDispelBehavior(), Spell.Cast("Inquisition", ret => (!Me.HasAura("Inquisition") || Me.HasAuraExpired("Inquisition", 2)) && (Me.CurrentHolyPower >= 3 || Me.HasAura("Divine Purpose"))), new Decorator(ret => Me.HasAura("Inquisition") && AdvancedAI.Burst, new PrioritySelector( Spell.Cast("Avenging Wrath", ret => Me.CurrentTarget.IsBoss), Spell.Cast("Holy Avenger", ret => Me.CurrentTarget.IsBoss), Spell.Cast("Guardian of Ancient Kings", ret => Me.CurrentTarget.IsBoss), new Action(ret => { Item.UseHands(); return RunStatus.Failure; }), new Action(ret => { Item.UseTrinkets(); return RunStatus.Failure; }))), Spell.Cast("Seal of Righteousness", ret => !Me.HasAura("Seal of Righteousness") && Clusters.GetClusterCount(Me, Unit.NearbyUnfriendlyUnits, ClusterType.Radius, 8f) >= 8), Spell.Cast("Seal of Truth", ret => !Me.HasAura("Seal of Truth") && Clusters.GetClusterCount(Me, Unit.NearbyUnfriendlyUnits, ClusterType.Radius, 8f) < 8), new Decorator(ret => Me.HasAura("Inquisition"), new PrioritySelector( Spell.Cast("Execution Sentence", ret => Me.CurrentTarget.IsBoss), Spell.Cast("Holy Prism"), Spell.CastOnGround("Light's Hammer", on => Me.CurrentTarget.Location, ret => Me.CurrentTarget.IsBoss), Spell.Cast("Divine Storm", ret => Clusters.GetClusterCount(Me, Unit.NearbyUnfriendlyUnits, ClusterType.Radius, 8f) >= 2 && (Me.CurrentHolyPower == 5 || Me.HasAura("Divine Purpose"))), Spell.Cast("Templar's Verdict", ret => Me.CurrentHolyPower == 5 || Me.HasAura("Divine Purpose")))), Spell.Cast("Hammer of Wrath", ret => Me.CurrentHolyPower <= 4), Spell.Cast("Exorcism", ret => Me.CurrentHolyPower <= 4), Spell.Cast("Hammer of the Righteous", ret => Me.CurrentHolyPower <= 4 && Clusters.GetClusterCount(Me, Unit.NearbyUnfriendlyUnits, ClusterType.Radius, 8f) >= 2), // Unit.NearbyUnfriendlyUnits.Count(u => u.DistanceSqr <= 8 * 8) >= 2), Spell.Cast("Crusader Strike", ret => Me.CurrentHolyPower <= 4), Spell.Cast("Judgment", on => SecTar, ret => Me.CurrentHolyPower <= 4 && Clusters.GetClusterCount(Me, Unit.NearbyUnfriendlyUnits, ClusterType.Radius, 15f) >= 2 && Me.HasAura("Glyph of Double Jeopardy")), Spell.Cast("Judgment", ret => Me.CurrentHolyPower <= 4), Spell.Cast("Divine Storm", ret => Me.HasAura("Inquisition") && Clusters.GetClusterCount(Me, Unit.NearbyUnfriendlyUnits, ClusterType.Radius, 8f) >= 2 && Me.GetAuraTimeLeft("Inquisition").TotalSeconds > 4), Spell.Cast("Templar's Verdict", ret => Me.HasAura("Inquisition") && Me.GetAuraTimeLeft("Inquisition").TotalSeconds > 4)))); }