What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Singular - A community driven All-In-One CC - It Just Plain Works - (Pt. 2)

What Class are you?: Shaman
What Spec are you?: Enhancement
What 'context' is the bot in? (Instance, BG, Normal): 25 Man Raid
What level are you?: 85
What revision of Singular are you using?: 362
Have you made any modifications to Singular?: No
Are you using a branched build, or the trunk build? (Only viable for developers): Trunk
What version of Honorbuddy are you using?: 2.0.0.5588

Problem:
-Is not casting ranged abilities such as Lightning Bolt(5x Malestrom), Shocks or Unleashed Elements on the last 4 Bosses of Dragon Soul.
-Is not Re casting Searing Totem
-Is Not using cooldowns such as Spirit Wolves

It should be using ranged abilities tied into the normal rotation. 2 Logs are provided, 1 on a target dummy of what it SHOULD do, the other on Ultraxion of what it is NOT doing. It is ONLY using Lava Lash and Stormstrike. It SHOULD be using cooldowns and it SHOULD be refreshing totems.


Would really like to see a fix for this.
 
Range is currently not calculated correctly for these bosses , and some other bulky objects and mobs, as tests found on this topic (see above) have proven.
 
Range is currently not calculated correctly for these bosses , and some other bulky objects and mobs, as tests found on this topic (see above) have proven.

Any idea of how or where to fix it? This has been a issue for weeks and I just wish i could truly lazyraid as enhancement..
 
It's raphus call or someone of the coreteam, which they already know about. Give them a bit of time.
 
It's raphus call or someone of the coreteam, which they already know about. Give them a bit of time.

Thank you :) I even went to the extent of just creating my own enhancement CC, which I am confident I can do, EXCEPT i cannot figure out how to make it do weapon imbues.
 
Having an issue with the targeting. In BG Bot or PVP in any capture the flag the bot has issues correctly targeting players. If an enemy does not have our flag, it works great. But as soon as an enemy picks up our flag, the bot will drop our current target (even if halfway across the map) and target EFC.. clear target.. target EFC.. clear target.

Thought it was my rogue CC, but I've tried on my paladin too with the same issues. Even if I'm in combat it will sometimes clear my current target and start the target/clear/target routine again.
 

Attachments

Singular : Mage

I have been using Amplify for frost mage and its been working pretty well since singular doesn't have or support Mage classes. I haven't tried the other classes to see if singluar is supported. If, singular has the mage class then it has errors. I'm unable to put a log up since it doesn't show compilar or the programming errors when casting in the log.
 
I will be spending a week for only Singular. Gonna check each class/spec rotations and improve them as i go. If you want to help, get on irc or make a list of rotations to be used in grinding/instances/battlegrounds/raids for single, AoE or whatever conditions with notes that i should keep in mind. Send them to [email protected] with class/spec as subject.
 
I will be spending a week for only Singular. Gonna check each class/spec rotations and improve them as i go. If you want to help, get on irc or make a list of rotations to be used in grinding/instances/battlegrounds/raids for single, AoE or whatever conditions with notes that i should keep in mind. Send them to [email protected] with class/spec as subject.

Thank you Raphus!! Getting a lot of this with new HB and svn singular just tried DS on DK and tossed tons of errors? Helpers movement etc... fresh install. I tried on training dummy and rotation was working.
 

Attachments

Last edited:
I've done some work on Ret Paladin for Raiding:

Code:
using System.Linq;
using Singular.Dynamics;
using Singular.Helpers;
using Singular.Managers;
using Singular.Settings;
using Styx;
using Styx.Combat.CombatRoutine;
using Styx.Logic.Combat;

using TreeSharp;
using Styx.WoWInternals.WoWObjects;
using CommonBehaviors.Actions;
using System;

namespace Singular.ClassSpecific.Paladin
{
    public class Retribution
    {

        #region Combat

        [Class(WoWClass.Paladin)]
        [Spec(TalentSpec.RetributionPaladin)]
        [Behavior(BehaviorType.Combat)]
        [Behavior(BehaviorType.Heal)]
        [Context(WoWContext.All)]
        public static Composite CreateRetributionPaladinCombat()
        {
            return new PrioritySelector(
                    Safers.EnsureTarget(),
                    new Decorator( ret => Group.Healer == null, Holy.CreatePaladinHealBehavior(true)),
                    Movement.CreateMoveToLosBehavior(),
                    Movement.CreateFaceTargetBehavior(),
                    Helpers.Common.CreateAutoAttack(true),

                    //AoE
                    new Decorator(ret => Unit.NearbyUnfriendlyUnits.Count(a => a.Distance < 8) > 3,
                        new PrioritySelector(
                            Spell.Cast("Divine Storm", ret => StyxWoW.Me.CurrentHolyPower < 3),
                            Spell.Cast("Judgement", ret => !StyxWoW.Me.ActiveAuras.ContainsKey("Zealotry") && StyxWoW.Me.CurrentHolyPower < 3),
                            Spell.Cast("Inquisition", 
                                ret => (!StyxWoW.Me.ActiveAuras.ContainsKey("Inquisition") || StyxWoW.Me.GetAuraTimeLeft("Inquisition", true).Seconds <= 2) &&
                                    (StyxWoW.Me.CurrentHolyPower >= 3 || StyxWoW.Me.ActiveAuras.ContainsKey("Divine Purpose"))),

                            Spell.Cast("Templars Verdict", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Divine Purpose")),
                            Spell.Cast("Templars Verdict", ret => StyxWoW.Me.CurrentHolyPower >= 3),
                            Spell.Cast("Exorcism", ret => StyxWoW.Me.ActiveAuras.ContainsKey("The Art of War")),
                            Spell.Cast("Hammer of Wrath"),
                            Spell.Cast("Holy Wrath"),
                            Spell.Cast("Consecration", ret => StyxWoW.Me.ManaPercent > 70),
                            Spell.Cast("Judgement", ret => HasPaladinT13_2PC_Melee() && StyxWoW.Me.ActiveAuras.ContainsKey("Zealotry") && StyxWoW.Me.CurrentHolyPower < 3)
                        )
                    ),
                    //Single
                    new Decorator(ret => Unit.NearbyUnfriendlyUnits.Count(a => a.Distance < 8) < 4,
                        new PrioritySelector(
                            Spell.Cast("Crusader Strike", ret => StyxWoW.Me.CurrentHolyPower < 3),
                            Spell.Cast("Judgement", ret => !StyxWoW.Me.ActiveAuras.ContainsKey("Zealotry") && StyxWoW.Me.CurrentHolyPower < 3),
                            Spell.Cast("Inquisition",
                                ret => (!StyxWoW.Me.ActiveAuras.ContainsKey("Inquisition") || StyxWoW.Me.GetAuraTimeLeft("Inquisition", true).Seconds <= 2) &&
                                    (StyxWoW.Me.CurrentHolyPower >= 3 || StyxWoW.Me.ActiveAuras.ContainsKey("Divine Purpose"))),

                            Spell.Cast("Templars Verdict", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Divine Purpose")),
                            Spell.Cast("Templars Verdict", ret => StyxWoW.Me.CurrentHolyPower >= 3),
                            Spell.Cast("Exorcism", ret => StyxWoW.Me.ActiveAuras.ContainsKey("The Art of War")),
                            Spell.Cast("Hammer of Wrath"),
                            Spell.Cast("Judgement", ret => HasPaladinT13_2PC_Melee() && StyxWoW.Me.ActiveAuras.ContainsKey("Zealotry") && StyxWoW.Me.CurrentHolyPower < 3),
                            new Decorator(ret =>
                                {
                                    TimeSpan cooldown = Spell.GetSpellCooldown("Crusader Strike");
                                    return cooldown.TotalMilliseconds < 20 && cooldown.TotalMilliseconds > 0;
                                }, new ActionAlwaysSucceed()
                            ),
                            Spell.Cast("Holy Wrath"),
                            Spell.Cast("Consecration", ret => StyxWoW.Me.ManaPercent > 70)
                        )
                    )
            );
        }

        #endregion

        #region Pull

        [Class(WoWClass.Paladin)]
        [Spec(TalentSpec.RetributionPaladin)]
        [Behavior(BehaviorType.Pull)]
        [Context(WoWContext.All)]
        public static Composite CreateRetributionPaladinPull()
        {
            return new PrioritySelector(
                Movement.CreateMoveToLosBehavior(),
                Movement.CreateFaceTargetBehavior(),
                Spell.Cast("Judgement"),
                Helpers.Common.CreateAutoAttack(true),
                Movement.CreateMoveToTargetBehavior(true, 5f)
            );
        }

        #endregion

        #region Combat Buffs

        [Class(WoWClass.Paladin)]
        [Spec(TalentSpec.RetributionPaladin)]
        [Behavior(BehaviorType.CombatBuffs)]
        [Context(WoWContext.All)]
        public static Composite CreateRetributionPaladinCombatBuffs()
        {
            return new PrioritySelector(
                //We don't swap seal, no point.
                Spell.Cast("Seal of Truth", ret => !StyxWoW.Me.ActiveAuras.ContainsKey("Seal of Truth")),
                //Only use these in non AoE to get best output
                new Decorator(ret => Unit.NearbyUnfriendlyUnits.Count(a => a.Distance < 8) < 4,
                    new PrioritySelector(
                        //Cast GoAK if target is boss (Shud be on CD to get the best output, there is no logic currently to determine how long a fight is going to last.)
                        Spell.Cast("Guardian of Ancient Kings", ret => Unit.IsBoss(StyxWoW.Me.CurrentTarget)),
                        //Cast Zealotry if GoAK been up for 10 seconds
                        Spell.Cast("Zealotry", ret => StyxWoW.Me.GetAuraTimeLeft("Guardian of Ancient Kings", true).Seconds <= 20 && StyxWoW.Me.GetAuraTimeLeft("Guardian of Ancient Kings", true).Seconds > 0),
                        //Cast Zealotry if GoAK cd > 110 seconds (1 min 50) and we have no GoAK atm)
                        Spell.Cast("Zealotry", ret => Spell.GetSpellCooldown("Guardian of Ancient Kings").TotalSeconds >= 110 && !StyxWoW.Me.ActiveAuras.ContainsKey("Guardian of Ancient Kings")),
                        //Cast Zealotry if target is boss and health percent < 10, we dont wait for GoAK then.
                        Spell.Cast("Zealotry", ret => Unit.IsBoss(StyxWoW.Me.CurrentTarget) && StyxWoW.Me.CurrentTarget.HealthPercent < 10),
                        //Cast Zealotry if target isn't boss and level is >= ours
                        Spell.Cast("Zealotry", ret => !Unit.IsBoss(StyxWoW.Me.CurrentTarget) && StyxWoW.Me.CurrentTarget.Level >= StyxWoW.Me.Level),
                        //Cast Avenging Wrath if we have Zealotry
                        Spell.Cast("Avenging Wrath", ret => StyxWoW.Me.ActiveAuras.ContainsKey("Zealotry"))
                    )
                ),
                Spell.BuffSelf("Divine Protection", ret => StyxWoW.Me.HealthPercent <= SingularSettings.Instance.Paladin.DivineProtectionHealthRet)
            );
        }

        #endregion

        private const int PALADIN_MELEE_T13_ITEM_SET_ID = 1064;

        public static bool HasPaladinT13_2PC_Melee()
        {
            int count = StyxWoW.Me.Inventory.Equipped.Hands.ItemInfo.ItemSetId == PALADIN_MELEE_T13_ITEM_SET_ID ? 1 : 0;
            count += StyxWoW.Me.Inventory.Equipped.Legs.ItemInfo.ItemSetId == PALADIN_MELEE_T13_ITEM_SET_ID ? 1 : 0;
            count += StyxWoW.Me.Inventory.Equipped.Chest.ItemInfo.ItemSetId == PALADIN_MELEE_T13_ITEM_SET_ID ? 1 : 0;
            count += StyxWoW.Me.Inventory.Equipped.Shoulder.ItemInfo.ItemSetId == PALADIN_MELEE_T13_ITEM_SET_ID ? 1 : 0;
            count += StyxWoW.Me.Inventory.Equipped.Head.ItemInfo.ItemSetId == PALADIN_MELEE_T13_ITEM_SET_ID ? 1 : 0;
            return count >= 2;
        }

    }
}

Anyone wanna test? I may be able to test later today.
 
Last edited:
Also i don't think they will merge Apsalara with Singular, called them few times to do so, but had no answer.

To developers: guys, please, could you merge Apsalara Rogue with Singular? Apsalara based on Singular and works much better then default Singular rogue. It's best rogue CC for Sub and Combat and have so many good features (like poisoning and smart using throw weapon, great at BGs, etc). This CC should not be wasted.

URL of Apsalara project: http://www.thebuddyforum.com/honorbuddy-forum/classes/rogue/36443-apsalara-singular-13.html
 
How does that differ from http://www.thebuddyforum.com/honorbuddy-forum/classes/paladin/42429-singular-ret-pally.html Vastico? ;)

What i like to see in Singular is using Lifegiving Seeds for resting, including cancelling the herbouflage aura when fully rested.

His uses a fixed percent for divine please even though there is already a setting, he switches between seals when you should only use righteousness when low level, the damage later on isn't worth it.

He has no logic for cooldowns apart from cast with xxx, mine uses the actual cooldown:
Cast GoAK, cast Zealotry and Avenging Wrath 10 seconds in to get the full bonus

And as far as I can tell mine is more orientated to raiders, so that maybe why his is for questing, grinding etc. so I can understand why he did it.

Afaik I can't specify raid I can only specify instance :s?
 
Same goes for
http://www.thebuddyforum.com/honorbuddy-forum/classes/death-knight/41757-necrophilia-singular.html Deathknights
http://www.thebuddyforum.com/honorbuddy-forum/classes/druid/41733-iloveanimals-singular.html Druids

Basically Shadars work, Obliv,Weischbier, Vastico, handnavi, and Felmaster as well as Amplify and Zerfall which should about everything and everyone with good code that singular can profit from.
You might also talk to stormchasing and natfoth, and split work.
Stormchasing is covering a lot of heal related code in ultimatehealer and natfoth is rewriting fpswares stuff (which is a waste of time coding if singular is getting awesome).
 
Last edited:
Yeah other than goak it follows EJ exactly on mine. I am adding quiet a bit of logic for solo and bg to make sure it's an all around cc. Take a look at mine and let's send it to raphus so it's perfected.
 
Yeah other than goak it follows EJ exactly on mine. I am adding quiet a bit of logic for solo and bg to make sure it's an all around cc. Take a look at mine and let's send it to raphus so it's perfected.
I shall take a look friend!
 
I'll be updating it tonight with a little different healing logic than the current one, but it's still there. Trying to make it universal, but you definitely did a better job with the cooldowns for raiding. Judging from yours you have a little more knowledge than I in the coding department. ;) Nice work!
 
I will be spending a week for only Singular. Gonna check each class/spec rotations and improve them as i go. If you want to help, get on irc or make a list of rotations to be used in grinding/instances/battlegrounds/raids for single, AoE or whatever conditions with notes that i should keep in mind. Send them to [email protected] with class/spec as subject.

Are any of the additions that have been worked on already going to be looked at? As laria mentioned, lots of people have been working on Singular and have some pretty impressive CCs for it. Would be good to focus on the classes no one is working on.
 
Back
Top