コード例 #1
0
        public Composite CreateShamanRest()
        {
            return(new PrioritySelector(

                       new Decorator(
                           ret => TotemManager.NeedToRecallTotems,
                           new Action(ret => TotemManager.RecallTotems())),

                       CreateRestoShamanHealOnlyBehavior(true),
                       CreateDefaultRestComposite(SingularSettings.Instance.DefaultRestHealth, SingularSettings.Instance.DefaultRestMana)

                       ));
        }
コード例 #2
0
        private Composite CreateRestoShamanHealOnlyBehavior(bool selfOnly)
        {
            NeedHealTargeting = true;

            return(new
                   PrioritySelector(
                       CreateWaitForCastWithCancel(SingularSettings.Instance.IgnoreHealTargetsAboveHealth),

                       new Decorator(
                           ret => SpellManager.HasSpell("Call of the Elements") &&
                           RaFHelper.Leader != null &&
                           TotemManager.TotemsInRangeOf(RaFHelper.Leader) == 0 &&
                           (Me.Combat || RaFHelper.Leader.Combat),
                           new Sequence(
                               new DecoratorContinue(ret => (Me.Totems.Count(t => t.Unit != null) != 0),
                                                     new Action(ret => TotemManager.RecallTotems())),
                               new Action(ret => TotemManager.SetupTotemBar()),
                               new Action(ret => TotemManager.CallTotems()))),

                       new Decorator(
                           ret => HealTargeting.Instance.FirstUnit != null,
                           new PrioritySelector(
                               ctx => selfOnly ? Me : HealTargeting.Instance.FirstUnit,

                               CreateSpellCast(
                                   "Earth Shield",
                                   ret => RaFHelper.Leader != null && (WoWUnit)ret == RaFHelper.Leader &&
                                   (!RaFHelper.Leader.HasAura("Earth Shield") || RaFHelper.Leader.Auras["Earth Shield"].StackCount < (Me.Combat ? 1 : 4)),
                                   ret => RaFHelper.Leader),

                               CreateSpellCast(
                                   "Healing Surge",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_HealingSurge_Health,
                                   ret => (WoWUnit)ret),

                               CreateSpellCast(
                                   "Riptide",
                                   ret => !HasAuraStacks("Tidal Waves", 1, Me),
                                   ret => (WoWUnit)ret),

                               new Decorator(ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_GreaterHealingWave_Health,
                                             new Sequence(
                                                 CreateSpellCast(
                                                     "Unleash Elements",
                                                     ret => true,
                                                     ret => (WoWUnit)ret),
                                                 CreateSpellCast(
                                                     "Greater Healing Wave",
                                                     ret => true,
                                                     ret => (WoWUnit)ret)
                                                 )
                                             ),

                               CreateSpellCast(
                                   "Chain Heal",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_ChainHeal_Health && WillChainHealHop((WoWUnit)ret),
                                   ret => (WoWUnit)ret),

                               CreateSpellCast(
                                   "Riptide",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_Riptide_Health,
                                   ret => (WoWUnit)ret),

                               CreateSpellCast(
                                   "Healing Wave",
                                   ret => ((WoWUnit)ret).HealthPercent <= SingularSettings.Instance.Shaman.RAF_HealingWave_Health,
                                   ret => (WoWUnit)ret)
                               )
                           )
                       ));
        }