internal static void Under10Rotation() { if (lowlevel != true) { lowlevel = true; } if (MyTarget.GetDistance < 20) { TotemManager.CastTotems(); } if (Me.Level < 4) { Extension.FightSpell(LightningBolt); } if (MyTarget.GetDistance > 7) { Extension.FightSpell(LightningBolt); } Extension.FightSpell(EarthShock); if (Me.ManaPercentage > 40) { Extension.BuffSpell(LightningShield); } }
public void Awake() { totem = TotemManager.Instance; spawnManger = EnemySpawnManager.Instance; impossible = false; dragCheck = false; }
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) )); }
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") )); }
// Use this for initialization void Awake() { // ensure singleton if (instance == null) { instance = this; } else if (instance != this) { Destroy(gameObject); } DontDestroyOnLoad(gameObject); CreateDevices(); }
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") )); }
internal static void EnhancementRotation() { bool Poison = Extension.HasPoisonDebuff(); bool Disease = Extension.HasDiseaseDebuff(); if (Extension.InterruptableUnit(10f) != null && WindShear.KnownSpell && WindShear.IsSpellUsable) { Logging.Write("Interrupt Target found"); ObjectManager.Me.FocusGuid = Extension.InterruptableUnit(10f).Guid; Logging.Write("Interrupt Target Set" + Extension.InterruptableUnit(10f).Guid); Extension.FightSpell(WindShear, true); } if (Me.HealthPercent < 30 && MyTarget.HealthPercent > ShamanLevelSettings.CurrentSetting.Enemylife) { Extension.HealSpell(HealingWave); } if (Poison) { Extension.BuffSpell(CurePoison); } if (Disease) { Extension.BuffSpell(CurePoison); } if (Extension.GetAttackingUnits(20).Count() > 1) { Extension.FightSpell(FeralSpirit); } if (Me.Level < 10) { if (lowlevel != true) { lowlevel = true; } if (MyTarget.GetDistance < 20) { TotemManager.CastTotems(); } if (Me.Level < 4) { Extension.FightSpell(LightningBolt); } if (MyTarget.GetDistance > 7) { Extension.FightSpell(LightningBolt); } Extension.FightSpell(EarthShock); if (Me.ManaPercentage > 40) { Extension.BuffSpell(LightningShield); } } if (Me.Level > 9 && Me.Level < 20) { if (lowlevel != true) { lowlevel = true; } if (MyTarget.GetDistance < 20) { TotemManager.CastTotems(); } //_lastTotemPosition.DistanceTo(ObjectManager.Me.Position) //if (_fireTotemPosition.DistanceTo(Me.Position) < 10 && Extension.GetAttackingUnits(5).Count() > 1 && ShamanLevelSettings.CurrentSetting.UseFireNova) //{ // Extension.FightSpell(FireNova); //} if (MyTarget.GetDistance > 7) { Extension.FightSpell(LightningBolt); } if (!FlameShock.KnownSpell) { Extension.FightSpell(EarthShock); } Extension.FightSpell(FlameShock); if (Me.ManaPercentage > 40) { Extension.BuffSpell(LightningShield); } } if (Me.Level > 19 && Me.Level < 40) { if (lowlevel == true) { lowlevel = false; } if (MyTarget.GetDistance < 20) { TotemManager.CotE(); TotemManager.CastTotems(); } if (MyTarget.GetDistance > 20) { Extension.FightSpell(LightningBolt); } Extension.FightSpell(EarthShock); if (Me.ManaPercentage < 20) { Extension.BuffSpell(WaterShield); } if (Me.ManaPercentage > 20 && !Me.HaveBuff(WaterShield.Id)) { Extension.BuffSpell(LightningShield); } } if (Me.Level > 39 && Me.Level < 50) { if (MyTarget.GetDistance < 20) { TotemManager.CotE(); TotemManager.CastTotems(); } if (lowlevel == true) { lowlevel = false; } if (MyTarget.GetDistance > 20) { Extension.FightSpell(LightningBolt); } Extension.FightSpell(Stormstrike); Extension.FightSpell(EarthShock); Extension.FightSpell(LavaLash); if (Me.ManaPercentage < 20) { Extension.BuffSpell(WaterShield); } if (Me.ManaPercentage > 20 && !Me.HaveBuff(WaterShield.Id)) { Extension.BuffSpell(LightningShield); } } if (Me.Level > 49 && Me.Level <= 80) { if (lowlevel == true) { lowlevel = false; } if (MyTarget.GetDistance < 20) { TotemManager.CotE(); TotemManager.CastTotems(); } if (MyTarget.GetDistance > 20 && ShamanLevelSettings.CurrentSetting.LNB) { Extension.FightSpell(LightningBolt); } if (Me.BuffStack(53817) >= 4) { if (Extension.GetAttackingUnits(5).Count() == 1) { Extension.FightSpell(LightningBolt); } if (Extension.GetAttackingUnits(5).Count() > 1) { Extension.FightSpell(ChainLightning); } } if (MyTarget.GetDistance < 7) { Extension.BuffSpell(ShamanisticRage); } Extension.FightSpell(Stormstrike); Extension.FightSpell(EarthShock); Extension.FightSpell(LavaLash); if (Me.ManaPercentage < 30) { Extension.BuffSpell(WaterShield); } if (Me.ManaPercentage > 30 && !Me.HaveBuff(WaterShield.Id)) { Extension.BuffSpell(LightningShield); } } }
internal static void Rotation() { while (_isLaunched) { try { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (lowlevel) { Main.settingRange = 25f; } if (!lowlevel) { Main.settingRange = 5f; } if (!Fight.InFight) { if (Spec == "Under10") { Under10Rotation(); Under10HealRotation(); } if (Spec == "Elemental") { ElementalRotation(); ElementalHealRotation(); } if (Spec == "Enhancement") { EnhancementRotation(); EnhancementHealRotation(); } if (Spec == "Restoration") { RestorationRotation(); RestorationHealRotation(); } TotemManager.CheckForTotemicCall(); BuffRotation(); EnchantWeapon(); } if (Fight.InFight && ObjectManager.Me.HasTarget) { if (Spec == "Under10") { Under10Rotation(); Under10HealRotation(); } if (Spec == "Elemental") { ElementalRotation(); ElementalHealRotation(); } if (Spec == "Enhancement") { EnhancementRotation(); EnhancementHealRotation(); } if (Spec == "Restoration") { RestorationRotation(); RestorationHealRotation(); } EnchantWeapon(); } } } catch (Exception e) { Logging.Write("error" + e); } Thread.Sleep(ShamanLevelSettings.CurrentSetting.Delay); } }
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) ) ) )); }
void Start() { audioSource = GetComponent <AudioSource>(); fire = GetComponentInChildren <ParticleSystem>(); _fireTotem = GameObject.FindGameObjectWithTag("FireTotem").GetComponent <TotemManager>(); }