示例#1
0
        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)
                               )
                           )
                       ));
        }
示例#2
0
        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())
                                       )
                                   )
                               )
                           )
                       ));
        }