Example #1
0
 public static Composite UseEquippedTrinket(TrinketUsage usage)
 {
     return new Throttle( TimeSpan.FromMilliseconds(250),
         new PrioritySelector(
             new Decorator(
                 ret => usage == SingularSettings.Instance.Trinket1Usage,
                 UseEquippedItem( (uint) WoWInventorySlot.Trinket1 )
                 ),
             new Decorator(
                 ret => usage == SingularSettings.Instance.Trinket2Usage,
                 UseEquippedItem( (uint) WoWInventorySlot.Trinket2 )
                 ),
             new Decorator(
                 ret => usage == SingularSettings.Instance.GloveUsage,
                 UseEquippedItem( (uint) WoWInventorySlot.Hands )
                 )
             )
         );
 }
Example #2
0
 public static Composite UseEquippedTrinket(TrinketUsage usage)
 {
     return new PrioritySelector(
         new Decorator(
             ret => usage == SingularSettings.Instance.Trinket1Usage,
             new PrioritySelector(
                 ctx => StyxWoW.Me.Inventory.GetItemBySlot((uint) WoWInventorySlot.Trinket1 ),
                 new Decorator(
                     ctx => ctx != null && CanUseEquippedItem((WoWItem)ctx),
                     new Action(ctx => UseItem((WoWItem)ctx))
                     )
                 )
             ),
         new Decorator(
             ret => usage == SingularSettings.Instance.Trinket2Usage,
             new PrioritySelector(
                 ctx => StyxWoW.Me.Inventory.GetItemBySlot((uint) WoWInventorySlot.Trinket2 ),
                 new Decorator(
                     ctx => ctx != null && CanUseEquippedItem((WoWItem)ctx),
                     new Action(ctx => UseItem((WoWItem)ctx))
                     )
                 )
             )
         );
 }
 public static bool IsTrinketUsageWanted(TrinketUsage usage)
 {
     return usage == SingularSettings.Instance.Trinket1Usage
         || usage == SingularSettings.Instance.Trinket2Usage;
 }
Example #4
0
        public static bool UseTrinket(bool firstSlot)
        {
            TrinketUsage usage = firstSlot ? SingularSettings.Instance.Trinket1Usage : SingularSettings.Instance.Trinket2Usage;

            // If we're not going to use it, don't bother going any further. Save some performance here.
            if (usage == TrinketUsage.Never)
            {
                return(false);
            }

            WoWItem item = firstSlot ? StyxWoW.Me.Inventory.Equipped.Trinket1 : StyxWoW.Me.Inventory.Equipped.Trinket2;

            //int percent = firstSlot ? SingularSettings.Instance.FirstTrinketUseAtPercent : SingularSettings.Instance.SecondTrinketUseAtPercent;

            if (item == null)
            {
                return(false);
            }

            if (!CanUseEquippedItem(item))
            {
                return(false);
            }

            bool useIt = false;

            switch (usage)
            {
            case TrinketUsage.OnCooldown:
                // We know its off cooldown... so just use it :P
                useIt = true;
                break;

            case TrinketUsage.OnCooldownInCombat:
                if (StyxWoW.Me.Combat)
                {
                    useIt = true;
                }
                break;

            case TrinketUsage.LowPower:
                // We use the PowerPercent here, since it applies to ALL types of power. (Runic, Mana, Rage, Energy, Focus)
                if (StyxWoW.Me.PowerPercent < SingularSettings.Instance.PotionMana)
                {
                    useIt = true;
                }
                break;

            case TrinketUsage.LowHealth:
                if (StyxWoW.Me.HealthPercent < SingularSettings.Instance.PotionHealth)
                {
                    useIt = true;
                }
                break;
            }

            if (useIt)
            {
                Logger.Write("Popping trinket " + item.Name);
                item.Use();
                return(true);
            }
            return(false);
        }