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

[WIP] Singular - A community driven All-In-One CC - It Just Plain Works

Status
Not open for further replies.
I am having issues with the Warlock Demonology portion of the CC not functioning. I updated to the latest revision (194 if I'm not mistaken) and now my warlock auto attacks and sends the pet to attack, but nothing after that.
Also, I don't see anything in the logs regarding this even though I turned on debug logging. However if needed I will post them.
 
my distract code snippet...

If some1 teaches me how Honorbuddy handles area effects (in my case Distract), i will contribute a finished Combat.cs for this project. Everythind else is working like a charm.

This works for me... I'm in the process of moving my rogue legacy CC crap over to singular framework. Now if I can get the damn circle strafing code to port over... this action is throwing me for a loop.

Code:
                    // Distract Mobs...
                    new Decorator(
                        ret => SpellManager.CanCast("Distract") && Me.CurrentTarget.DistanceSqr < 25 * 25,
                        new Action(
                            ret =>
                            {
                                WoWPoint dropDistract = WoWMathHelper.CalculatePointFrom(Me.Location, Me.CurrentTarget.Location, -1);
                                WoWPoint attackDistract = WoWMathHelper.CalculatePointFrom(Me.Location, Me.CurrentTarget.Location, +5);
                                SpellManager.Cast("Distract");
                                LegacySpellManager.ClickRemoteLocation(dropDistract);
                             }
                            )),
 
I am having issues with the Warlock Demonology portion of the CC not functioning. I updated to the latest revision (194 if I'm not mistaken) and now my warlock auto attacks and sends the pet to attack, but nothing after that.
Also, I don't see anything in the logs regarding this even though I turned on debug logging. However if needed I will post them.

Don't quote me on this... but looking through the code apparently some of the pet code is being changed in the next HB build so it looks like apoc will probably update the crap once that is implemented. I haven't tried my lock since like 4+ revision ago.
 
Dunno in which thread to ask.. but I'll ask here cos working with Singular.. can somebody explain me how this priority selector works.. if Bot finds first action which satisfy the condition within priorityselector's array, it runs it and sleeps(until next pulse or smthing.. dunno how often it fires), or it tries to run others actions which are eligible as well?

You are pretty close, when a condition is met it enters the priority selector and will use the spells in order in which they are coded and then there is "break" after the first thing is used and then it goes back to the beginning of the composite. Therefore if you use an ability that has no CD first in the priority selector, singular will keep spaming the same spell over and over until the Priority selector's conditions are false. Thats why you generally put things with CD first (so it will cycle through more spells), or you put conditions on the earlier spells so that it doesn't keep using the same spell every time.

Note: I would advise not using a very general priority selector, otherwise it will always be true and code below it will never be executed.

Hopefully that helped you out a bit
 
Last edited:
In easier words it will exit current "pulse" after commiting first succesful action, unless it's specifically told to continue anyway.

"Decorator" is somehow similar to "IF" and interactions with game work like they were always finished with "return" from current pulse.
 
Last edited:
Been leveling a feral druid using the CC, few things I have noticed.

It still likes to Prowl then cast Faerie Fire instead of pouncing to come out of prowl.

It doesn't seem to use any healing spells during combat if it gets low, like maybe around 25% it could cast a regrowth/rejuv on itself and keep on going.

Occasionally it tried to use Shred on targets in front of it even though it has to be behind for this spell. It was very seldom, and it seemed like it happened only on large mobs, like the rhinos in Scholazar Basin.

All I have noticed for now, working great none the less!

Edit: Oh yeah, maybe have it cast Mark of the Wild on itself and keep that up also.
 
Last edited:
Btw, about movement, I use it like that, this prevents from blocking other actions if to put movement code at top of combat's priority selector. It moves and continues hit target which is fleeing.. at least I feel it works better:cool:
Code:
protected Composite CreateMoveToAndFace(float maxRange, float coneDegrees, UnitSelectionDelegate unit, bool noMovement)
        {
            return new Decorator(
                ret => unit(ret) != null,
                new PrioritySelector(
                    new Decorator(
                        ret => !unit(ret).InLineOfSightOCD || (!noMovement && unit(ret).Distance > maxRange),
                        new Action(ret => 
                            {
                                Navigator.MoveTo(unit(ret).Location);
                                return RunStatus.Failure;
                            })),
                    new Decorator(
                        ret => Me.IsMoving && unit(ret).Distance <= maxRange,
                        new Action(ret => 
                            {
                                Navigator.PlayerMover.MoveStop();
                                return RunStatus.Failure;
                            })),
                    new Decorator(
                        ret => Me.CurrentTarget != null && Me.CurrentTarget.IsAlive && !Me.IsSafelyFacing(Me.CurrentTarget, coneDegrees),
                        new Action(ret => 
                            {
                                Me.CurrentTarget.Face();
                                return RunStatus.Failure;
                            }))
                    ));
        }

P.S. I didn't merge yet latest version changes into my branch for this file, but you should get the idea..
 
I have a requested fix for the almost perfect fury warrior cc. I remember reading not too far back that charge was removed from fury warriors because stance switching was a bit slow... my fury warrior still walks around in battle stance when he has no rage though. Would it be possible to make the appropriate changes to leave him in berserker stance if he is not going to use anything in battle stance? Thanks!
 
Oke, this is my retri pala for PvP.. most of the time on wsg, gilneas I'm almost top 1 dps)) if there is fight in a middle..
This one switches targets when current target is kitting(if there are available near), so it no longer runs after some target while there are somebody in melee .. etc.. + more/less correct rotation.... even more correct than I use ( though I have 2k+ arena lol, but bot fights better than me)
Bot assumes that at trinket1 is PvP trinket and in trinket2 some usable trinket that increases strength or something(used together with avenging wrath for max damage)
IN singular.routine.movement.patch - just above stuff, movement shouldn't preventing going futher in priorityselector.
 

Attachments

where does the movement routine go?

Been trying to work this out for a while because the movement sucks atm :(
 
Last edited:
where does the movement routine go?

Been trying to work this out for a while because the movement sucks atm :(
Well, that's patch, simply cannot attach .patch files, so added .cs.. In general look at this post(CLICK ME) - it shows how actions must return failure for mopvement. Adjust yours CreateMoveToAndFace in SingularRoutine.Movement.cs to look simlar (return RunStatus.Failure from move actions)
 
:D i tried doing that but it wont compile any chance you could upload your version since im not very good at coding and dont really know what im doing

Ive copied and pasted the code you posted into my movement cs replacingthe previous one and it compiled but is this one the same as the one you posted in patch?

Edit for some reason your pvp cc isnt activating selas is there a fix for this?
 
Last edited:
:D i tried doing that but it wont compile any chance you could upload your version since im not very good at coding and dont really know what im doing

Ive copied and pasted the code you posted into my movement cs replacingthe previous one and it compiled but is this one the same as the one you posted in patch?
yep, more or less.... but it should work mainly the same. The posted code is based on some previous revision, but there were no sufficient changes to worry about, so it should work. And if you use some different class, make sure that CreateMoveToAndFace invoked at beginning, right after target check.
 
Code:
        protected Composite CreateMoveToAndFace(float maxRange, float coneDegrees, UnitSelectionDelegate unit, bool noMovement)
        {
                        new Action(ret => Navigator.MoveTo(unit(ret).Location))),

                        new Action(ret => 
                            {
                                 Navigator.MoveTo(unit(ret).Location);
                                 return RunStatus.Failure;
                             })),
                         new Action(ret => Navigator.PlayerMover.MoveStop())),

                         new Action(ret => 
                             {
                                 Navigator.PlayerMover.MoveStop();
                                 return RunStatus.Failure;
                             })),

                         new Action(ret => Me.CurrentTarget.Face()))

                         new Action(ret => 
                             {
                                 Me.CurrentTarget.Face();
                                 return RunStatus.Failure;
                             }))
                    ));
        }

IS that correct?

Wont compile :(
 
Last edited:
Seems like there is something missing in that code, its less text in that one.

Code:
protected Composite CreateMoveToAndFace(float maxRange, float coneDegrees, UnitSelectionDelegate unit, bool noMovement)
        {
            return new Decorator(
                ret => unit(ret) != null,
                new PrioritySelector(
                    new Decorator(
                        ret => !unit(ret).InLineOfSightOCD || (!noMovement && unit(ret).Distance > maxRange),
                        new Action(ret => 
                            {
                                Navigator.MoveTo(unit(ret).Location);
                                return RunStatus.Failure;
                            })),
                    new Decorator(
                        ret => Me.IsMoving && unit(ret).Distance <= maxRange,
                        new Action(ret => 
                            {
                                Navigator.PlayerMover.MoveStop();
                                return RunStatus.Failure;
                            })),
                    new Decorator(
                        ret => Me.CurrentTarget != null && Me.CurrentTarget.IsAlive && !Me.IsSafelyFacing(Me.CurrentTarget, coneDegrees),
                        new Action(ret => 
                            {
                                Me.CurrentTarget.Face();
                                return RunStatus.Failure;
                            }))
                    ));
        }

I think that's what he posted. The .cs seems to be the added text only.
 
Last edited:
yes, that is where my problem arose from. Using the one that is bundled with HB 4317 wasn't giving me problems. So I'm going back to revision 162, I think that's what it is.

I was using 197.... that one from his trunk, yes.


### EDITED ###

I'm a Demonology Lock
 
Last edited:
yep, more or less.... but it should work mainly the same. The posted code is based on some previous revision, but there were no sufficient changes to worry about, so it should work. And if you use some different class, make sure that CreateMoveToAndFace invoked at beginning, right after target check.

Have applied the changes, update through svn
 
Code:
protected Composite CreateMoveToAndFace(float maxRange, float coneDegrees, UnitSelectionDelegate unit, bool noMovement)
        {
            return new Decorator(
                ret => unit(ret) != null,
                new PrioritySelector(
                    new Decorator(
                        ret => !unit(ret).InLineOfSightOCD || (!noMovement && unit(ret).Distance > maxRange),
                        new Action(ret => 
                            {
                                Navigator.MoveTo(unit(ret).Location);
                                return RunStatus.Failure;
                            })),
                    new Decorator(
                        ret => Me.IsMoving && unit(ret).Distance <= maxRange,
                    new Decorator(
                        ret => Me.CurrentTarget != null && Me.CurrentTarget.IsAlive && !Me.IsSafelyFacing(Me.CurrentTarget, coneDegrees),
                        new Action(ret => 
                            {
                                Me.CurrentTarget.Face();
                                return RunStatus.Failure;
                            }))
                    ));
        }

Im currently using this in pvp and its doing the job perfectly its running around the players
 
Status
Not open for further replies.
Back
Top