Example #1
0
        public static Composite CreateShamanElementalHeal()
        {
            Composite healBT =
                new Decorator(
                    ret => !StyxWoW.Me.Combat || (Group.Healers.Any() && !Group.Healers.Any(h => h.IsAlive)),
                    Common.CreateShamanNonHealBehavior()
                    );

            // only include group healing logic if we are configured for group heal and in an Instance
            if (SingularRoutine.CurrentWoWContext == WoWContext.Instances && SingularSettings.Instance.Shaman.ElementalHeal)
            {
                healBT = new Decorator(
                    ret => !StyxWoW.Me.GroupInfo.IsInRaid,
                    new PrioritySelector(
                        // Heal the party in dungeons if the healer is dead
                        new Decorator(
                            ret => StyxWoW.Me.CurrentMap.IsDungeon && Group.Healers.Count(h => h.IsAlive) == 0,
                            Restoration.CreateRestoShamanHealingOnlyBehavior()),

                        healBT
                        )
                    );
            }

            return(healBT);
        }
Example #2
0
        public static Composite CreateElementalShamanHeal()
        {
            return
                (new Decorator(
                     ret => SingularSettings.Instance.Shaman.EnhancementHeal,
                     new PrioritySelector(
                         // Heal the party in dungeons if the healer is dead
                         new Decorator(
                             ret => StyxWoW.Me.CurrentMap.IsDungeon && !StyxWoW.Me.IsInRaid &&
                             Group.Healers.Count(h => h.IsAlive) == 0,
                             Restoration.CreateRestoShamanHealingOnlyBehavior()),

                         // This will work for both solo play and battlegrounds
                         new Decorator(
                             ret => Group.Healers.Any() && Group.Healers.Count(h => h.IsAlive) == 0,
                             new PrioritySelector(
                                 Spell.Heal("Healing Wave",
                                            ret => StyxWoW.Me,
                                            ret => !SpellManager.HasSpell("Healing Surge") && StyxWoW.Me.HealthPercent <= 60),

                                 Spell.Heal("Healing Surge",
                                            ret => StyxWoW.Me,
                                            ret => StyxWoW.Me.HealthPercent <= 60)))
                         )));
        }
Example #3
0
        public static Composite CreateShamanEnhancementHeal()
        {
            Composite healBT =
                new Decorator(
                    ret => !Group.Healers.Any(h => h.IsAlive && h.Distance < 40),
                    Spell.Heal("Healing Surge", ret => StyxWoW.Me, ret => StyxWoW.Me.GetPredictedHealthPercent() <= 60)
                    );

            // group healing logic ONLY if we are configured for it and in an Instance
            if (SingularRoutine.CurrentWoWContext == WoWContext.Instances && SingularSettings.Instance.Shaman.EnhancementHeal)
            {
                healBT = new Decorator(
                    ret => !StyxWoW.Me.GroupInfo.IsInRaid,
                    new PrioritySelector(
                        // Off Heal the party in dungeons if the healer is dead
                        new Decorator(
                            ret => StyxWoW.Me.CurrentMap.IsDungeon && !Group.Healers.Any(h => h.IsAlive),
                            Restoration.CreateRestoShamanHealingOnlyBehavior()),

                        healBT
                        )
                    );
            }

            return(healBT);
        }