public Composite CreateElementalShamanPull() { return(new PrioritySelector( CreateEnsureTarget(), CreateMoveToAndFace(40, ret => Me.CurrentTarget), CreateWaitForCast(true), //Totems new Decorator( ret => TotemManager.TotemsInRange == 0 && SpellManager.HasSpell("Call of the Elements"), new Sequence( new Action(ret => TotemManager.SetupTotemBar()), new Action(ret => TotemManager.CallTotems()))), CreateSpellCast("Lightning Bolt") )); }
public Composite CreateElementalShamanCombat() { return(new PrioritySelector( CreateEnsureTarget(), CreateMoveToAndFace(39, ret => Me.CurrentTarget), CreateWaitForCast(true), //Healing Basic CreateSpellCast("Healing Surge", ret => (Me.HealthPercent <= SingularSettings.Instance.Shaman.Elemental_HealingSurge_Health)), //Interupt spell casters CreateSpellCast("Wind Shear", ret => Me.CurrentTarget.IsCasting), //For low levels we are avoiding this. new Decorator( ret => TotemManager.TotemsInRange == 0 && SpellManager.HasSpell("Call of the Elements"), new Sequence( new Action(ret => TotemManager.SetupTotemBar()), new Action(ret => TotemManager.CallTotems()))), // add check for reinforcements ( elem totems ) // clip the debuff if less than 2 secs remaining (don't chance a LvB with no FS dot) // .. note: flame shock doesn't stack, so be sure to pass 0 for stack test CreateSpellBuff("Flame Shock", ret => !HasMyAura("Flame Shock", Me.CurrentTarget, TimeSpan.FromSeconds(2), 0)), // unleash elements buff is lower dps than additional procs by lightning bolt // .. it is best used in movement fights as an additional instant // CreateSpellCast("Unleash Elements"), // if we have this, make sure its before Flame Shock CreateSpellCast("Elemental Mastery"), CreateSpellCast("Lava Burst"), // atleast (6 lightning shield stacks or no Fulmination talent) and FS has > 5 secs left before casting // .. note: flame shock doesn't stack, so be sure to pass 0 for stack test CreateSpellCast("Earth Shock", ret => (HasAuraStacks("Lightning Shield", 7) || !HaveTalentFulmination) && HasMyAura("Flame Shock", Me.CurrentTarget, TimeSpan.FromSeconds(5), 0)), CreateSpellCast("Chain Lightning", ret => WillChainLightningHop()), CreateSpellCast("Lightning Bolt") )); }
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) ) ) )); }