• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • The One CC - UI Sneak Peak

    Discussion in 'Archives' started by fpsware, Apr 14, 2010.

    1. panYama

      panYama Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      2,629
      Likes Received:
      49
      Trophy Points:
      0
      fair enough take the time, it brings in quality cc's
       
    2. MDurner11

      MDurner11 Member

      Joined:
      Jan 15, 2010
      Messages:
      201
      Likes Received:
      0
      Trophy Points:
      16
      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: May 12, 2010
    3. fpsware

      fpsware Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      5,287
      Likes Received:
      133
      Trophy Points:
      63
      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.
       
    4. dayloon

      dayloon Active Member

      Joined:
      Mar 5, 2010
      Messages:
      1,046
      Likes Received:
      3
      Trophy Points:
      38
      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: May 12, 2010
    5. fpsware

      fpsware Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      5,287
      Likes Received:
      133
      Trophy Points:
      63
      Rezing has nothing to do with the CC.
       
    6. dayloon

      dayloon Active Member

      Joined:
      Mar 5, 2010
      Messages:
      1,046
      Likes Received:
      3
      Trophy Points:
      38
      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)
       
    7. peteyboy23

      peteyboy23 Member

      Joined:
      Jan 15, 2010
      Messages:
      566
      Likes Received:
      3
      Trophy Points:
      18
      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.
       
      ski likes this.
    8. ski

      ski Well-Known Member

      Joined:
      Feb 12, 2010
      Messages:
      3,720
      Likes Received:
      48
      Trophy Points:
      48
      +rep because fpsware told me to do it
       
    9. MeaCulpa

      MeaCulpa New Member

      Joined:
      Jan 15, 2010
      Messages:
      44
      Likes Received:
      0
      Trophy Points:
      0
      That's.... Amazing. Really really nice work man!
       
    10. fpsware

      fpsware Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      5,287
      Likes Received:
      133
      Trophy Points:
      63
      If there are no further changes to the Pally UI I'll get to work on something else.
       
    11. MDurner11

      MDurner11 Member

      Joined:
      Jan 15, 2010
      Messages:
      201
      Likes Received:
      0
      Trophy Points:
      16
      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
       
    12. letsgo2u

      letsgo2u New Member

      Joined:
      Jan 15, 2010
      Messages:
      252
      Likes Received:
      0
      Trophy Points:
      0
      *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*
       
    13. fpsware

      fpsware Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      5,287
      Likes Received:
      133
      Trophy Points:
      63
      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: May 15, 2010
    14. ski

      ski Well-Known Member

      Joined:
      Feb 12, 2010
      Messages:
      3,720
      Likes Received:
      48
      Trophy Points:
      48
      You should have a picture of me built into the GUI imo.
       
    15. fpsware

      fpsware Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      5,287
      Likes Received:
      133
      Trophy Points:
      63
      I do, its under Disease control :p
       
    16. rawillkill

      rawillkill New Member

      Joined:
      Apr 5, 2010
      Messages:
      28
      Likes Received:
      0
      Trophy Points:
      0
      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!
       
    17. fpsware

      fpsware Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      5,287
      Likes Received:
      133
      Trophy Points:
      63
      Here is the updated Warlock UI. There are some significant changes.

      [Image removed. Outdated]
       
      Last edited: May 17, 2010
    18. fpsware

      fpsware Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      5,287
      Likes Received:
      133
      Trophy Points:
      63
      Here is yet another change to the Warlock UI. If you want anything added or changed speak now.

      View attachment 4240
       
    19. amaya

      amaya New Member

      Joined:
      Feb 1, 2010
      Messages:
      142
      Likes Received:
      1
      Trophy Points:
      0
      bro this is amazing bro hook us up im a brother in new zealand too man come on lol
       
    20. KBK2006

      KBK2006 Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      171
      Likes Received:
      15
      Trophy Points:
      0
      Lovely work ! You are doin a great job !
       

    Share This Page