Example #1
0
 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))));
 }