public Composite CreateHunterBuffs() { WantedPet = "1"; return(new PrioritySelector( new Decorator( ctx => Me.CastingSpell != null && Me.CastingSpell.Name == "Revive " + WantedPet && Me.GotAlivePet, new Action(ctx => SpellManager.StopCasting())), CreateWaitForCast(), CreateSpellBuffOnSelf("Aspect of the Hawk"), CreateSpellBuffOnSelf("Track Hidden"), //new ActionLogMessage(false, "Checking for pet"), new Decorator( ret => !Me.GotAlivePet, new Sequence( new Action(ret => PetManager.CallPet(WantedPet)), new Action(ret => Thread.Sleep(1000)), new DecoratorContinue( ret => !Me.GotAlivePet && SpellManager.CanCast("Revive Pet"), new Sequence( new Action(ret => SpellManager.Cast("Revive Pet")), new Action(ret => StyxWoW.SleepForLagDuration()), new WaitContinue( 11, ret => !Me.IsCasting, new ActionAlwaysSucceed()))))), CreateSpellCast( "Mend Pet", ret => (Me.Pet.HealthPercent < 70 || (Me.Pet.HappinessPercent < 90 && TalentManager.HasGlyph("Mend Pet"))) && !Me.Pet.HasAura("Mend Pet")) )); }
public Composite CreateBeastMasterCombat() { WantedPet = "1"; return(new PrioritySelector( new Decorator( ret => !Me.GotAlivePet, new Action(ret => PetManager.CallPet(WantedPet))), CreateEnsureTarget(), CreateHunterBackPedal(), // Make sure we're in range, and facing the damned target. (LOS check as well) CreateMoveToAndFace(35f, ret => Me.CurrentTarget), //Intimidation CreateSpellCast( "Intimidation", ret => Me.CurrentTarget.IsAlive && Me.GotAlivePet && (Me.CurrentTarget.CurrentTarget == null || Me.CurrentTarget.CurrentTarget == Me)), // Always keep it up on our target! CreateSpellBuff("Hunter's Mark"), CreateHunterTrapOnAddBehavior(), new Decorator( ret => Me.CurrentTarget.DistanceSqr < 5 * 5, new PrioritySelector( CreateSpellBuffOnSelf("Disengage"), CreateSpellCast("Raptor Strike") )), // Heal pet when below 70 CreateSpellCast( "Mend Pet", ret => (Me.Pet.HealthPercent < 70 || (Me.Pet.HappinessPercent < 90 && TalentManager.HasGlyph("Mend Pet"))) && !Me.Pet.HasAura("Mend Pet")), CreateSpellCast( "Concussive Shot", ret => Me.CurrentTarget.CurrentTarget == null || Me.CurrentTarget.CurrentTarget == Me), //Rapid fire on elite CreateSpellBuffOnSelf("Rapid Fire", ret => CurrentTargetIsElite), CreateSpellBuff("Serpent Sting"), // Ignore these two when our pet is raging CreateSpellCast("Focus Fire", ret => !Me.Pet.HasAura("Bestial Wrath")), CreateSpellCast("Kill Shot", ret => !Me.Pet.HasAura("Bestial Wrath")), // Basically, cast it whenever its up. CreateSpellCast("Kill Command"), // Only really cast this when we need a sting refresh. CreateSpellCast( "Cobra Shot", ret => Me.CurrentTarget.HasAura("Serpent Sting") && Me.CurrentTarget.Auras["Serpent Sting"].TimeLeft.TotalSeconds < 3), // Focus dump on arcane shot, unless our pet has bestial wrath, then we use it for better DPS CreateSpellCast("Arcane Shot"), // For when we have no Focus CreateSpellCast("Steady Shot"), CreateAutoAttack(true) )); }
public Composite CreateWarlockPreCombatBuffs() { return(new PrioritySelector( CreateWaitForCast(), CreateSpellBuffOnSelf("Create Healthstone", ret => NeedToCreateHealthStone), CreateSpellBuffOnSelf("Demon Armor", ret => !Me.HasAura("Demon Armor") && !SpellManager.HasSpell("Fel Armor")), CreateSpellBuffOnSelf("Fel Armor", ret => !Me.HasAura("Fel Armor")), CreateSpellBuffOnSelf("Soul Link", ret => !Me.HasAura("Soul Link") && Me.GotAlivePet), new Decorator( ret => !Me.GotAlivePet, new Action(ret => PetManager.CallPet(WantedPet))), CreateSpellBuffOnSelf("Health Funnel", ret => Me.GotAlivePet && Me.Pet.HealthPercent < 60 && Me.HealthPercent > 40) )); }
public Composite CreateSurvivalCombat() { WantedPet = "1"; return(new PrioritySelector( new Decorator( ret => !Me.GotAlivePet, new Action(ret => PetManager.CallPet(WantedPet))), CreateEnsureTarget(), CreateHunterBackPedal(), // Make sure we're in range, and facing the damned target. (LOS check as well) CreateMoveToAndFace(35f, ret => Me.CurrentTarget), // Always keep it up on our target! CreateSpellBuff("Hunter's Mark"), // Heal pet when below 70 CreateSpellCast("Mend Pet", ret => Me.Pet.HealthPercent < 70 && !Me.Pet.HasAura("Mend Pet")), CreateSpellCast( "Concussive Shot", ret => Me.CurrentTarget.CurrentTarget == null || Me.CurrentTarget.CurrentTarget == Me), //Rapid fire on elite CreateSpellBuff("Rapid Fire", ret => CurrentTargetIsElite), //Cast when mob Hp below 20 CreateSpellCast("Kill Shot", ret => Me.CurrentTarget.HealthPercent < 19), new Decorator( ret => !Me.HasAura("Lock and Load"), new PrioritySelector( // The extra here 'flips' the explosive usage. CreateSpellCast("Kill Command", ret => Me.FocusPercent == 100), CreateSpellCast("Explosive Shot", ret => LastSpellCast != "Explosive Shot"), CreateSpellCast("Steady Shot", ret => LastSpellCast != "Steady Shot"))), // Refresh when it wears off. CreateSpellBuff("Serpent Sting", ret => !Me.CurrentTarget.HasAura("Serpent Sting")), // Whenever it's not on CD CreateSpellCast("Explosive Shot"), // Whenever its not on CD CreateSpellCast("Black Arrow"), // Main DPS filler CreateSpellCast("Steady Shot"), CreateSpellCast("Arcane Shot"), CreateAutoAttack(true) )); }
public Composite CreateFrostMageCombat() { WantedPet = "Water Elemental"; return(new PrioritySelector( CreateEnsureTarget(), //Move away from frozen targets new Decorator( ret => (Me.CurrentTarget.HasAura("Frost Nova") || Me.CurrentTarget.HasAura("Freeze")) && Me.CurrentTarget.DistanceSqr < 5 * 5, new Action( ret => { Logger.Write("Getting away from frozen target"); WoWPoint moveTo = WoWMathHelper.CalculatePointFrom(Me.Location, Me.CurrentTarget.Location, 10f); if (Navigator.CanNavigateFully(Me.Location, moveTo)) { Navigator.MoveTo(moveTo); } })), CreateMoveToAndFace(34f, ret => Me.CurrentTarget), CreateWaitForCast(true), CreateCastPetActionOnLocation("Freeze", ret => !Me.CurrentTarget.HasAura("Frost Nova")), CreateSpellBuff("Frost Nova", ret => NearbyUnfriendlyUnits.Any(u => u.DistanceSqr <= 8 * 8)), CreateMagePolymorphOnAddBehavior(), new Decorator( ret => !Me.GotAlivePet, new Action(ret => PetManager.CallPet(WantedPet))), CreateSpellCast("Evocation", ret => Me.ManaPercent < 20), CreateSpellCast("Counterspell", ret => Me.CurrentTarget.IsCasting), CreateSpellCast("Mirror Image"), CreateSpellCast("Time Warp"), new Decorator( ret => Me.CurrentTarget.HealthPercent > 50, new Sequence( new Action(ctx => Me.CurrentTarget.Face()), new Action(ctx => StyxWoW.SleepForLagDuration()), new PrioritySelector(CreateSpellCast("Flame Orb")) )), CreateSpellBuffOnSelf("Ice Barrier", ret => !Me.Auras.ContainsKey("Mana Shield")), CreateSpellBuffOnSelf("Mana Shield", ret => !Me.Auras.ContainsKey("Ice Barrier") && Me.HealthPercent <= 50), CreateSpellCast( "Deep Freeze", ret => (Me.ActiveAuras.ContainsKey("Fingers of Frost") || Me.CurrentTarget.HasAura("Frost Nova") || Me.CurrentTarget.HasAura("Freeze"))), CreateSpellCast( "Ice Lance", ret => (Me.ActiveAuras.ContainsKey("Fingers of Frost") || Me.CurrentTarget.ActiveAuras.ContainsKey("Frost Nova") || Me.CurrentTarget.ActiveAuras.ContainsKey("Freeze"))), //CreateSpellCast("Fireball", Me.ActiveAuras.ContainsKey("Brain Freeze")), CreateSpellCast("Arcane Missiles", ret => Me.ActiveAuras.ContainsKey("Arcane Missiles!")), new Decorator( ret => Me.ActiveAuras.ContainsKey("Brain Freeze"), new PrioritySelector( CreateSpellCast("Frostfire Bolt"), CreateSpellCast("Fireball") )), CreateSpellBuff("Fire Blast", ret => Me.CurrentTarget.HealthPercent < 10), CreateSpellCast("Frostbolt") )); }