public static Composite CreateDiscCombatNormalPull() { return(new PrioritySelector( Helpers.Common.EnsureReadyToAttackFromMediumRange(), Movement.CreateFaceTargetBehavior(), Spell.WaitForCastOrChannel(), new Decorator( ret => !Spell.IsGlobalCooldown(), new PrioritySelector( CreateDiscDiagnosticOutputBehavior(CompositeBuilder.CurrentBehaviorType.ToString()), Spell.BuffSelf("Power Word: Shield", ret => PriestSettings.UseShieldPrePull && CanWePwsUnit(Me)), Helpers.Common.CreateInterruptBehavior(), Movement.WaitForFacing(), Movement.WaitForLineOfSpellSight(), Dispelling.CreatePurgeEnemyBehavior("Dispel Magic"), // slow pull if no aggro and not competing for mobs Spell.Cast( "Smite", mov => true, on => Me.CurrentTarget, req => !ObjectManager.GetObjectsOfType <WoWUnit>(true, false).Any(u => u.Aggro || (u.IsPlayer && !u.IsMe && u.DistanceSqr < 60 * 60)) ), Spell.Buff("Shadow Word: Pain", req => Me.CurrentTarget.HasAuraExpired("Shadow Word: Pain", 1) && Me.CurrentTarget.TimeToDeath(99) >= 8), Spell.Buff("Shadow Word: Pain", true, on => { WoWUnit unit = Unit.NearbyUnfriendlyUnits.FirstOrDefault(u => u.Guid != Me.CurrentTargetGuid && u.IsTargetingMeOrPet && !u.HasMyAura("Shadow Word: Pain") && !u.IsCrowdControlled()); return unit; }), Spell.Cast("Penance", mov => true, on => Me.CurrentTarget, req => true, cancel => false), Common.CreateHolyFireBehavior(), Spell.Cast("Smite", mov => true, on => Me.CurrentTarget, req => true, cancel => false) ) ) )); }
public static Composite CreateHolyCombat() { return(new PrioritySelector( new Decorator( ret => HealerManager.AllowHealerDPS(), new PrioritySelector( Helpers.Common.EnsureReadyToAttackFromMediumRange(), Spell.WaitForCastOrChannel(), new Decorator( ret => !Spell.IsGlobalCooldown(), new PrioritySelector( Helpers.Common.CreateInterruptBehavior(), Movement.WaitForFacing(), Movement.WaitForLineOfSpellSight(), Dispelling.CreatePurgeEnemyBehavior("Dispel Magic"), Spell.Buff("Shadow Word: Pain", true), Spell.Buff("Holy Word: Chastise"), Spell.Buff("Shadow Word: Pain", true, on => { WoWUnit unit = Unit.NearbyUnfriendlyUnits .FirstOrDefault( u => (u.TaggedByMe || u.Aggro) && u.Guid != Me.CurrentTargetGuid && u.IsTargetingMeOrPet && !u.HasMyAura("Shadow Word: Pain") && !u.IsCrowdControlled() ); return unit; }), Common.CreateHolyFireBehavior(), Spell.Cast("Smite", mov => true, on => Me.CurrentTarget, req => true, cancel => HealerManager.CancelHealerDPS()) ) ) ) ) )); }