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