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)))))); }
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") ) ) )); }