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

The One CC - UI Sneak Peak

fair enough take the time, it brings in quality cc's
 
The Pally UI has had a few more settings added. The most notable new feature is 'Smart Seals'. This will attempt to automatically choose the best seal for the occasion.

Seal of Light when you get adds and your health isan't looking so good. Seal of Wisdom when your mana is getting low. Seal of Justice on runners (before the start running) and casters.

There are a lot more spells that have the option of casting when available or saving them for when you have adds.

View attachment 4112

Perhaps you can add a "smart judgment" concept where the CC detects if a mob already has a judgement of light / wisdom on it, and if it does, then it casts the other one that is not applied?

Of course if there isn't any form of judgement applied yet, then it uses the default checked one.

That would be useful when raiding or doing 5 mans. (In my opinion atleast).

And I see your point about the repentance / HoJ taking too long... that is 2 GCDs + minor delay (in having the CC process) + 1.5 second cast (for FoL) + hit delay. And after 4+ seconds after you hit the needed % for the bot to heal with 2+ mobs on you, you'd probably be toast already.
 
Last edited:
Features like this, party / raid mode features will come in time but it won't be until all other aspects of the CC are fully functional.
 
Just a quick question. Would it be possible to build into this CC some kind of feature to resurrect your corpse in a safe spot instead of in the middle of multiple mobs ? From what i've read, this is a CC issue and is fixed with the following code :

Code:
  /*
         * Summary:     Finds the best safe spot. distance yards away from all mobs.
         */
        private Point FindSafeSpot()
        {
            Log("Finding safe spot...");
            Stopwatch timer = Stopwatch.StartNew();
            WoWPoint safeSpot = Me.Location;
            List<WoWUnit> units = new List<WoWUnit>(ObjectManager.NpcObjectList.Values);
            units.Sort(CompareDistance);
            List<WoWUnit> unitsInRange = new List<WoWUnit>();
            List<double> unitsDistance = new List<double>();
            List<Point> ThreadList1 = new List<Point>();
            List<Point> ThreadList2 = new List<Point>();
            List<Point> ThreadList3 = new List<Point>();
            int goodDistance = 0; //number of lowest distance found
            int distance = 30;
            double angleIncrements = DegreeToRadian(20);
            double angle = 0;

            foreach (WoWUnit unit in units)
            {
                if (Me.Combat || unit.Distance > distance)
                    break;
                if (ValidUnitCheck(unit) && unit.Distance <= distance
                    // UnitRelationCommented
                    //&& unit.GetUnitRelation(Me) != WoWUnit.WoWUnitRelation.Neutral
                    )
                {
                    unitsDistance.Add(0);
                    unitsInRange.Add(unit);
                }
            }
            Log("Looking target npc's finished. " + timer.ElapsedMilliseconds.ToString());
            if (unitsInRange.Count > 0)
                Log("Number of hostiles within a " + distance + " yard range: " + unitsInRange.Count.ToString());
            else
            {
                Log("No hostiles within a " + distance + " yard range");
                return safeSpot;
            }

            int distanceFromLocation = 15;
            int count = 1;
            for (int i = 0; i < 18; i++)
            {
                if (Me.Combat)
                    break;
                Point point = CalculatePointTo(Me.Location, angle, distanceFromLocation);
                switch (count)
                {
                    case 1:
                        ThreadList1.Add(point);
                        break;
                    case 2:
                        ThreadList2.Add(point);
                        break;
                    case 3:
                        ThreadList3.Add(point);
                        break;
                }
                count++;
                if (count == 4)
                    count = 1;
                angle += angleIncrements;
            }
            angle = 10;
            distanceFromLocation = 25;
            for (int i = 0; i < 18; i++)
            {
                if (Me.Combat)
                    break;
                Point point = CalculatePointTo(Me.Location, angle, distanceFromLocation);
                switch (count)
                {
                    case 1:
                        ThreadList1.Add(point);
                        break;
                    case 2:
                        ThreadList2.Add(point);
                        break;
                    case 3:
                        ThreadList3.Add(point);
                        break;
                }
                count++;
                if (count == 4)
                    count = 1;
                angle += angleIncrements;
            }
            _safeSpotPoints.Clear();
            _safeSpotPointsThread3.Clear();
            _safeSpotPointsThread2.Clear();
            _safeSpotPointsThread1.Clear();
            List<Point> npcLoc = new List<Point>();
            foreach (WoWUnit unit in units)
            {
                if (Me.Combat || unit.Distance > 75)
                    break;
                if (ValidUnitCheck(unit)
                    // UnitRelationCommented
                    //&& unit.GetUnitRelation(Me) != WoWUnit.WoWUnitRelation.Neutral
                    )
                {
                    npcLoc.Add(unit.Location);
                }
            }
            
            Log("Starting threads...");
            ThreadStart safeSpotCheck3 = () => SafeSpotCheck(ThreadList3, npcLoc, 3);
            
            _safeSpotCheck3 = new Thread(safeSpotCheck3);
            if (ThreadList3.Count > 0 && !Me.Combat)
                _safeSpotCheck3.Start();

            ThreadStart safeSpotCheck2 = () => SafeSpotCheck(ThreadList2, npcLoc, 2);

            _safeSpotCheck2 = new Thread(safeSpotCheck2);
            if (ThreadList2.Count > 0 && !Me.Combat)
                _safeSpotCheck2.Start();

            ThreadStart safeSpotCheck1 = () => SafeSpotCheck(ThreadList1, npcLoc, 1);

            _safeSpotCheck1 = new Thread(safeSpotCheck1);
            if (ThreadList1.Count > 0 && !Me.Combat)
                _safeSpotCheck1.Start();

            Log("Threads started waiting for complete...");
            while ((_safeSpotCheck1.IsAlive || _safeSpotCheck2.IsAlive || _safeSpotCheck3.IsAlive) && !Me.Combat)
                Thread.Sleep(50);

            _safeSpotPoints.AddRange(_safeSpotPointsThread3);
            _safeSpotPoints.AddRange(_safeSpotPointsThread2);
            _safeSpotPoints.AddRange(_safeSpotPointsThread1);
            Log("End threads: " + timer.ElapsedMilliseconds.ToString());
            if (Me.Combat)
                return safeSpot;
            foreach (Point testPoint in _safeSpotPoints)
            {
                if (Me.Combat)
                    break;
                bool skip = false;
                List<double> tempDistance = new List<double>(); // stores the distance of all units
                int countDistance = 0; // variable to count the number of good distance

                for (int i = 0; i < unitsInRange.Count; i++)
                {
                    if (Me.Combat)
                        break;
                    WoWUnit unitTest = unitsInRange[i];
                    tempDistance.Add(unitTest.Location.Distance(testPoint)); //gets unitdistance from new point
                    if (tempDistance[i] <= distance)
                    {
                        skip = true;
                        break;
                    }
                    if (tempDistance[i] >= unitsDistance[i])
                        countDistance++;
                }
                if (skip)
                    continue;
                else
                {
                    if (countDistance > goodDistance)
                    {
                        unitsDistance = tempDistance;
                        goodDistance = countDistance;
                        safeSpot = testPoint;
                    }
                }
            }
            timer.Stop();
            if (safeSpot != Me.Location)
                Log("Safe spot found... " + timer.ElapsedMilliseconds.ToString());
            else
                Log("Using current spot... " + timer.ElapsedMilliseconds.ToString());
            return safeSpot;
        }
 
Last edited:
Rezing has nothing to do with the CC.

Oh ok. Can't remember who now but one of the other cc dev's said that rezing your corpse in a safe spot was best controlled via the CC (using above code)
 
FPS: I am impressed on a base level with botting itself, even going back to the early days of Glider. Just something about it is absolutely fascinating to me. Looking at your CC really brings that level of impressiveness up a few notches. I am already wondering what it'd be like to 5 man an instance, with 4 bots in tow, and getting very excited about the prospect. Sure, I'd have to L2tank, but I'm OK with that :) That, to me, is the ultimate achievement in botting. No longer do you have to deal with the quirkiness of other people to accomplish to goals you wish to accomplish in heroics, and you can even make up a sizable portion of a raid! Now, you can truly play your way, on your schedule. To top it all off, is the fact that this level of complexity is being put into multiple classes simultaneously. With people like you working on supporting HB, it gives me a great feeling that I went with HB/GB.
 
  • Like
Reactions: ski
FPS: I am impressed on a base level with botting itself, even going back to the early days of Glider. Just something about it is absolutely fascinating to me. Looking at your CC really brings that level of impressiveness up a few notches. I am already wondering what it'd be like to 5 man an instance, with 4 bots in tow, and getting very excited about the prospect. Sure, I'd have to L2tank, but I'm OK with that :) That, to me, is the ultimate achievement in botting. No longer do you have to deal with the quirkiness of other people to accomplish to goals you wish to accomplish in heroics, and you can even make up a sizable portion of a raid! Now, you can truly play your way, on your schedule. To top it all off, is the fact that this level of complexity is being put into multiple classes simultaneously. With people like you working on supporting HB, it gives me a great feeling that I went with HB/GB.

+rep because fpsware told me to do it
 
If there are no further changes to the Pally UI I'll get to work on something else.
 
If there are no further changes to the Pally UI I'll get to work on something else.

Sounds good, I can't think of anymore :p.

And if I do, I will PM you, and maybe they can be implemented in the next patch to it.

Thanks again for listening to my somewhat absurd ideas. I hope I will be able to actually test the CC for ya soon :D
 
*drool*
i just started a rouge by hand and i dont wanne do it anymore -_- iam eagerly waiting for your release ;)

btw: i wonder if you can bot a whole 5 man instance? tank+dps.... *wandersofintodreamworld*
 
Just a small update:
Druid Travel form is now an option. It will shift into Travel Form during any non-combat movement. This can be toggled on and off. It also detects if you're swimming, so instead of shifting to Travel form it will shift to Aquatic form :)

The same with Rogue Stealth. If you're on a PVP server and want to constantly stealth this option is perfect for you.

The same will be applied to Hunter - Aspect of the Cheetah. And also Crusader Aura for the Paladin.
 
Last edited:
Just a small update:
Druid Travel form is now an option. It will shift into Travel Form during any non-combat movement. This can be toggled on and off.
The same with Rogue Stealth. If you're on a PVP server and want to constantly stealth this option is perfect for you.

You should have a picture of me built into the GUI imo.
 
I have a lot (NOTE: Extreme amount) of experience playing a warrior (6 years now) I was a bit late on seeing the beta test but that's ok.

If you post the UI I can give you suggestions (if it needs any)

Keep up the good work!
 
Here is the updated Warlock UI. There are some significant changes.

[Image removed. Outdated]
 
Last edited:
bro this is amazing bro hook us up im a brother in new zealand too man come on lol
 
Back
Top