private Composite CreateCombatBuffBehavior() { return(new Decorator( ret => Me.Combat && !CastManager.IsHymning(), new PrioritySelector( AltarboyComposites.BuffSelf("Inner Fire", ret => (AltarboySettings.Instance.UseInnerFire)), AltarboyComposites.BuffSelf("Inner Will", ret => (AltarboySettings.Instance.UseInnerWill)), ////Is there something I should dispell from my self? // new Decorator( // ret => (Me.Debuffs).Any(aura => AltarboyHashes.TargetHasAuraType(aura.Value.SpellId, AltarboyHashes.AuraTypes.DispelAsap)), // new Decorator(ret => CastManager.CanCast("Dipel Magic", Me), // new TreeSharp.Action(delegate // { // CastManager.CastSpell("Dipel Magic", Me); // }) // ) // ), //Do I need to fade? If something is aggroing me and within a specific range. AltarboyComposites.BuffSelf("Fade", ret => (Me.IsInParty || Me.IsInMyRaid) && AltarboySettings.Instance.EnableFadeOnAggro && TargetManager.DetectHostileTargets(10).Any(Unit => TargetManager.IsTargetingMeOrMyStuff(Unit)) ), AltarboyComposites.CommonPriestBuffs() ))); }
public static Composite BuffFortitude() { return(new Decorator( ret => (AltarboySettings.Instance.BuffFortitude && PartyManager.NearbyGroupMembers.Any(CanCastFortitudeOn) && CastManager.CanCast("Power Word: Fortitude", Me)), new Action(delegate { CastManager.CastSpell("Power Word: Fortitude", Me); }) )); }
public static Composite BuffShadowProtection() { return(new Decorator( ret => (AltarboySettings.Instance.BuffShadowProtection && CastManager.CanCast("Shadow Protection", Me) && PartyManager.NearbyGroupMembers.Any(CanCastShadowProtection)), new Action(delegate { CastManager.CastSpell("Shadow Protection", Me); }) )); }
public static Composite CastSpell(string spellName, SimpleBoolReturnDelegate extra, WoWUnit target) { //using current target no matter what... just testing something return(new Decorator( ret => extra(ret) && CastManager.CanCast(spellName, TargetManager.ActiveTarget), new Action(delegate { CastManager.CastSpell(spellName, TargetManager.ActiveTarget); }) )); }
public static Composite BuffSelf(string buffName, SimpleBoolReturnDelegate extra) { return(new Decorator( ret => extra(ret) && !Me.Auras.Values.Any(a => a.Spell.Name == buffName) && CastManager.CanCast(buffName, Me), new Action(delegate { CastManager.CastSpell(buffName, Me); }) )); }
public static Composite UseItemById(int itemId, SimpleBoolReturnDelegate extra) { return(new PrioritySelector( new Decorator( ret => extra(ret), new Action(delegate { CastManager.UseItemById(itemId); Logger.Log("Using " + CastManager.GetItemById(itemId) + ". Lusting? " + AuraManager.IsLusting(Me)); }) ))); }
public static Composite CastMindSear(SimpleBoolReturnDelegate extra) { //Todo - Should add logic to check for CC'ed targets within Mindsear Range. return(new Decorator( ret => extra(ret), new Sequence( //new Action(ret => Navigator.PlayerMover.MoveStop()), | Beyond annoying. new Action(ret => TargetManager.ActiveTarget.Face()), new Action(ret => CastManager.CastSpell("Mind Sear", TargetManager.ActiveTarget)) ) )); }
public static Composite CommonPriestBuffs() { return(new Decorator(ret => !CastManager.IsHymning() && (!Me.HasAura("Food") || !Me.HasAura("Drink")), new PrioritySelector( HandleFalling(), BuffFortitude(), BuffShadowProtection(), BuffSelf("Shadowform", ret => (AltarboySettings.Instance.UseShadowForm)), BuffSelf("Vampiric Embrace", ret => (AltarboySettings.Instance.UseVampiricEmbrace)), BuffSelf("Inner Fire", ret => (AltarboySettings.Instance.UseInnerFire)), BuffSelf("Inner Will", ret => (AltarboySettings.Instance.UseInnerWill)) ))); }
public static Composite Combat() { return(new Sequence( //Select a target Target(), //Then kill it. new Decorator( ret => TargetManager.ActiveTarget != null && !CastManager.IsHymning() && !Me.IsFalling && !TargetManager.IsIgnoreTarget(TargetManager.ActiveTarget), //Added falling clause cause was killing me on Ragnaros. new PrioritySelector( MindSearDps(ret => TargetManager.ShouldMindSear(TargetManager.ActiveTarget) && AuraManager.GetAuraTimeLeft("Mind Sear", TargetManager.ActiveTarget, true).TotalSeconds <= AltarboySettings.Instance.ClippingDuration), SingleTargetDps() ) ) )); }
private static Composite UseCoolDowns() { return(new PrioritySelector( AltarboyComposites.CastSpell("Power Word: Shield", ret => (AltarboySettings.Instance.AutoShield && !Me.HasAura("Weakened Soul")), Me), //Volcanic Potion during Bloodlust (will move this out when I can) //This should be using user settings now - untested. AltarboyComposites.UseItemById(AltarboySettings.Instance.FavouritePotionID, ret => ( AltarboySettings.Instance.UsePotionsOnLust && AltarboySettings.Instance.FavouritePotionID > 0 && CastManager.CanUseItem(AltarboySettings.Instance.FavouritePotionID) && AuraManager.IsLusting(Me)) ), AltarboyComposites.UseSlottedItem( ret => AltarboySettings.Instance.Trinket1UseOnCD || (AltarboySettings.Instance.Trinket1UseWithArchangel && AuraManager.HasMyAura("Dark Archangel", Me)), StyxWoW.Me.Inventory.Equipped.Trinket1 ), AltarboyComposites.UseSlottedItem( ret => AltarboySettings.Instance.Trinket2UseOnCD || (AltarboySettings.Instance.Trinket2UseWithArchangel && AuraManager.HasMyAura("Dark Archangel", Me)), StyxWoW.Me.Inventory.Equipped.Trinket2 ), AltarboyComposites.UseSlottedItem( ret => AltarboySettings.Instance.EngUseBelt, StyxWoW.Me.Inventory.Equipped.Waist ), AltarboyComposites.UseSlottedItem( ret => AltarboySettings.Instance.EngUseGloves || (AltarboySettings.Instance.EngUseGlovesWithArchangel && AuraManager.HasMyAura("Dark Archangel", Me)), StyxWoW.Me.Inventory.Equipped.Hands ) )); }
public static bool CanPowerWordShield(WoWUnit target) { return(!AuraManager.HasAuraStacks("Weakened Soul", 0, target) && CastManager.CanCast("Power Word: Shield", target)); }