Exemple #1
0
 private static Composite Aoe()
 {
     return(new Decorator(
                ret => AdvancedAI.Aoe,
                new PrioritySelector(
                    new Decorator(
                        ret => Unit.UnfriendlyUnitsNearTarget(10).Count() >= 4 && SpellManager.HasSpell("Seed of Corruption"),
                        new PrioritySelector(
                            // if current target doesn't have CotE, then Soulburn+CotE
                            new Decorator(
                                req => !Me.CurrentTarget.HasAura("Curse of the Elements"),
                                new Sequence(
                                    CastSoulburn(req => true),
                                    Spell.Buff("Curse of the Elements"))),
                            // roll SoC on targets in combat that we are facing
                            new PrioritySelector(
                                ctx => TargetsInCombat.FirstOrDefault(m => !m.HasAura("Seed of Corruption")),
                                new Sequence(
                                    new PrioritySelector(
                                        CastSoulburn(req => req != null),
                                        new ActionAlwaysSucceed()),
                                    Spell.Cast("Seed of Corruption", on => (WoWUnit)on))))),
                    new Decorator(
                        ret => Unit.UnfriendlyUnitsNearTarget(10).Count() >= 2,
                        new PrioritySelector(
                            ApplyDots(on => TargetsInCombat.FirstOrDefault(m => m.HasAuraExpired("Agony")), soulBurn => true),
                            ApplyDots(on => TargetsInCombat.FirstOrDefault(m => m.HasAuraExpired("Unstable Affliction")), soulBurn => true))))));
 }
Exemple #2
0
        public static Composite CreateWarlockDestructionNormalCombat()
        {
            return(new PrioritySelector(
                       Helpers.Common.EnsureReadyToAttackFromLongRange(),

                       Spell.WaitForCast(),

                       new Decorator(ret => !Spell.IsGlobalCooldown(),

                                     new PrioritySelector(

                                         Helpers.Common.CreateInterruptBehavior(),

                                         Movement.WaitForFacing(),
                                         Movement.WaitForLineOfSpellSight(),

                                         new Action(ret =>
            {
                _mobCount = TargetsInCombat.Count();
                return RunStatus.Failure;
            }),

                                         CreateAoeBehavior(),


                                         // Noxxic
                                         Spell.Cast("Shadowburn", ret => Me.CurrentTarget.HealthPercent < 20),
                                         Spell.Buff("Immolate", 4, on => Me.CurrentTarget, ret => true),
                                         Spell.Cast("Conflagrate", req => Spell.GetCharges("Conflagrate") >= 2),

                                         Common.CastCataclysm(),

                                         Spell.Cast("Chaos Bolt", ret => Me.CurrentTarget.HealthPercent >= 20 && BackdraftStacks < 3),

                                         // Artifact Weapon
                                         new Decorator(
                                             ret => WarlockSettings.UseArtifactOnlyInAoE && Unit.NearbyUnitsInCombatWithMeOrMyStuff.Count() > 1,
                                             new PrioritySelector(
                                                 Spell.Cast("Dimensional Rift", ret => WarlockSettings.UseDPSArtifactWeaponWhen != UseDPSArtifactWeaponWhen.None)
                                                 )
                                             ),
                                         Spell.Cast("Dimensional Rift", ret => !WarlockSettings.UseArtifactOnlyInAoE && WarlockSettings.UseDPSArtifactWeaponWhen != UseDPSArtifactWeaponWhen.None),

                                         Spell.CastOnGround("Rain of Fire", on => Me.CurrentTarget, req => Spell.UseAOE && !Me.CurrentTarget.IsMoving && !Me.CurrentTarget.HasMyAura("Rain of Fire") && !Unit.UnfriendlyUnitsNearTarget(8).Any(u => !u.Aggro || u.IsCrowdControlled()), false),

                                         Spell.Cast("Incinerate"),

                                         Spell.Cast("Shadow Bolt")
                                         )
                                     )
                       ));
        }