• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • YourRaidingBuddy - Coming Soon

    Discussion in 'Combat Routines' started by Xcesius, May 20, 2015.

    1. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      Duality is a buff i suppose. It lasts for 10 sec and makes the next weaponskill attack twice instead of once. It is Off the GCD. I even Tried this
      Code:
      await Spell.CastSpell("Duality", () => true);
      
      but it still didnt work.
       
      Last edited: Jul 2, 2015
    2. Xcesius

      Xcesius Community Developer

      Joined:
      May 1, 2011
      Messages:
      2,050
      Likes Received:
      61
      Trophy Points:
      48
      Hi wolfrain62

      Try this

      await Spell.NoneGcdCast("Duality", Me, () => true);
      await Spell.NoneGcdCast("Invigorate", Me, () => Me.CurrentTP < 550);
       
    3. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      both work now thanks.
       
    4. Eminence

      Eminence New Member

      Joined:
      Jul 1, 2015
      Messages:
      6
      Likes Received:
      0
      Trophy Points:
      0
      Xcesius,

      Thanks for such a prompt update to the routine. I spent some time last night laying out a routine that's going very well so far. I have one additional question:

      What is the best way to handle abilities when your character is high enough level to use them (level synced for FATEs, Trials, Dungeons, etc.)? For example, Royal Authority is a level 60 Paladin ability, and definitely is included in the routine for the job. However, if a player is level synced due to the restrictions of the content they're doing in game, the Paladin routine would continually use Fast Blade and Savage Blade without the Royal Authority finisher.

      Is there a way to determine if an ability is "available" without looking at the character's level? The reason I am trying not to use character level is because a number of job abilities (including all abilities in Heavensward) are quest rewards. While a player may be level 52, they may not yet have completed the quest for the level 52 job ability and trying to execute it in a routine that does so based on character level would likely cause issues (such as the one I mentioned in the paragraph above).

      Everything else I've been using to flesh out a robust routine for Paladins is working like a charm. I'm looking forward to tweaking it to perfection over a 3 day weekend!
       
    5. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      Eminence I believe you are looking for this.

      Code:
      await Spell.CastSpell("Royal Authority", () => Actionmanager.LastSpell.Name == "Savage Blade" && Me.CurrentTarget.HasAura("Strength Down") && Me.CurrentTarget.HasAura("Goring Blade") && Core.Me.ClassLevel >= 60);
      
       
    6. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      2) No, none of the UI settings of ninja works because I only added them to be examples. To access / use them, you need to use InternalSettings.Instance.Ninja.SettingHere

      If you have time can you post an example of how to get this working I have no idea where to start, just need a small snip to get me started.
       
    7. Eminence

      Eminence New Member

      Joined:
      Jul 1, 2015
      Messages:
      6
      Likes Received:
      0
      Trophy Points:
      0
      wolfrain62,

      Thank you. This looks like what I needed. I'll give it a try later today after work. I appreciate the help.
       
    8. stewiethecat

      stewiethecat Member

      Joined:
      Feb 4, 2011
      Messages:
      454
      Likes Received:
      0
      Trophy Points:
      16
      Hey I have been working on warrior for a while and made some nice progress but i am getting some errors that are stopping the bot durring some fights. It's only happeneing with my cc using yourraidbuddy, im going to disable all addons and try again but looking over the log i dont think thats the issue

      Code:
      
      [18:33:09.902 D] System.NullReferenceException: Object reference not set to an instance of an object.
         at YourRaidingBuddy.Helpers.Unit.<>c__DisplayClass1.<NearbyUnitsNeedHealing>b__0(BattleCharacter x) in c:\Users\Jimbo Slice\Desktop\Games\RB\Routines\YourRaidingBuddy\Core\Helpers\Units.cs:line 60
         at System.Linq.Enumerable.WhereListIterator`1.MoveNext()
         at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source)
         at YourRaidingBuddy.HealTargetingProvider.DefaultTargetWeight(List`1 units) in c:\Users\Jimbo Slice\Desktop\Games\RB\Routines\YourRaidingBuddy\HealingManager.cs:line 52
         at YourRaidingBuddy.HealTargetingProvider.GetObjectsByWeight() in c:\Users\Jimbo Slice\Desktop\Games\RB\Routines\YourRaidingBuddy\HealingManager.cs:line 46
         at ff14bot.NeoProfiles.Targeting.Pulse()
         at YourRaidingBuddy.Root.OnPulse() in c:\Users\Jimbo Slice\Desktop\Games\RB\Routines\YourRaidingBuddy\Root.cs:line 50
         at YourRaidingBuddy.Root.Pulse() in c:\Users\Jimbo Slice\Desktop\Games\RB\Routines\YourRaidingBuddy\Root.cs:line 75
         at ff14bot.Behavior.Pulsator.Pulse(PulseFlags CurrentPulseFlags)
         at ff14bot.TreeRoot.()
      
      
      seems to only really be an issue when im with party members
       

      Attached Files:

      Last edited: Jul 2, 2015
    9. heinzskies

      heinzskies Member

      Joined:
      Sep 7, 2014
      Messages:
      57
      Likes Received:
      2
      Trophy Points:
      8
      Here is my first version for the Dark Knight profile

      NOTE THAT THIS DOES NOT WORK WITH FATE BOT Please use it with MudAssist or the normal Combat Assist.
      It doesn't integrate with the UI at all. So you have to change the code if you need something(or just tell me).

      There's two mode, one when holding shift and one without holding shift

      Pulling
      Holding Shift
      Unmend > Plunge
      Released Shift
      Plunge > Unleash

      In Combat
      Holding Shift
      Power Slash Combo
      Released Shift
      Hard Slash > Syphon Strike > Delirium(if the monster doesn't have it) / Dark Arts(if your mana is above 90%) > Souleater (if delirium isn't used already).

      If you think is this not the optimal rotation then message me with the optimal rotation. I will try to get it working.

      This is Rotation/DarkKnight.cs
      Code:
      using System.Threading.Tasks;
      using System.Collections.Generic;
      using System.Windows.Media;
      using ff14bot;
      using ff14bot.Enums;
      using ff14bot.Managers;
      using ff14bot.Objects;
      using ff14bot.Helpers;
      using YourRaidingBuddy.Helpers;
      using YourRaidingBuddy.Settings;
      using YourRaidingBuddy.Books;
      using System.Windows.Forms;
      using System.Linq;
      using YourRaidingBuddy.Interfaces.Settings;
      
      namespace YourRaidingBuddy.Rotations
      {
          public class DarkKnight : Root
          {
              private static LocalPlayer Me { get { return Core.Player; } } //Core.Player.CurrentTarget as BattleCharacter
      
              public override ClassJobType[] Class
              {
                  get { return new[] { ClassJobType.DarkKnight }; }
              }
      
              public override void OnInitialize()
              {
                  ;
              }
      
              #region NewRotation
              public static async Task<bool> AutoMode()
              {
                  if (!Me.CurrentTarget.IsViable())
                      return false;
                  return await Rotation();
              }
      
              public static async Task<bool> HotkeyMode()
              {
                  if (!Me.CurrentTarget.IsViable())
                      return false;
                  if (VariableBook.HkmMultiTarget) await Unleash();
                  return await Rotation();
              }
      
               public static async Task<bool> Rotation() {
                   if (Managers.HotkeyManager.IsKeyDown(System.Windows.Forms.Keys.LShiftKey)) {
                     await PullSingle();
                   } else {
                     await PullMultiple();
                   }
                   await Unleash();
                   await Plunge();
                   await Darkside();
                   await DotRotation();
                   if (Managers.HotkeyManager.IsKeyDown(System.Windows.Forms.Keys.LShiftKey)) {
                      await EnmityRotation();
                   } else {
                      await DPSRotation();
                   }
                   await OffGcdRotation();
                   await MPGeneratorRotation();
      
                   return false;
               }
      
               public static async Task<bool> Darkside() {
                   await Spell.NoneGcdCast("Darkside", Me, () => !Me.HasAura("Darkside") && Me.CurrentManaPercent > 90);
      
                   return false;
               }
      
              public static async Task<bool> DPSRotation()
              {
                  await DarkArts();
      
                  await Spell.CastSpell("Souleater", () => Actionmanager.LastSpell.Name == "Syphon Strike" && Me.CurrentTarget.HasAura("Delirium", true, 4000));
                  await Spell.CastSpell("Delirium", () => Actionmanager.LastSpell.Name == "Syphon Strike" && !Me.CurrentTarget.HasAura("Delirium", true, 4000));
                  await Spell.CastSpell("Syphon Strike", () => Actionmanager.LastSpell.Name == "Hard Slash");
                  await Spell.CastSpell("Hard Slash", () => true);
      
                  return false;
              }
      
              public static async Task<bool> DarkArts() {
                  await Spell.NoneGcdCast("Dark Arts", Me, () => Actionmanager.LastSpell.Name == "Syphon Strike" && Me.CurrentManaPercent > 90 && Me.CurrentTarget.HasAura("Delirium", true, 4000));
      
                  return false;
              }
      
              static bool triggerUnleash = false;
              public static async Task<bool> Unleash() {
                  if (triggerUnleash && Actionmanager.CanCast("Unleash", Me)) {
                    await Spell.ApplyCast("Unleash", Me, () => true);
                    triggerUnleash = false;
                  }
      
                   return false;
              }
      
              static bool triggerPlunge = false;
              public static async Task<bool> Plunge() {
                  if (triggerPlunge && Actionmanager.CanCast("Plunge", Me.CurrentTarget)) {
                    await Spell.NoneGcdCast("Plunge", Me.CurrentTarget, () => true);
                    triggerPlunge = false;
                  }
      
                   return false;
              }
      
              public static async Task<bool> PullSingle() {
                  if (Actionmanager.CanCast("Unmend", Me.CurrentTarget) && Me.CurrentTarget.Distance(Me) > 10) {
                    await Spell.CastSpell("Unmend", () => true);
      
                    triggerPlunge = true;
                  }
      
                  return false;
              }
      
              public static async Task<bool> PullMultiple() {
                  if (Actionmanager.CanCast("Plunge", Me.CurrentTarget) && Me.CurrentTarget.Distance(Me) > 10) {
                    await Spell.NoneGcdCast("Plunge", Me.CurrentTarget, () => true);
                    triggerUnleash = true;
                  }
      
                  return false;
              }
      
              public static async Task<bool> DotRotation() {
                  await Spell.ApplyCast("Scourge", Me.CurrentTarget, () => !Me.CurrentTarget.HasAura("Scourge", true, 4000));
      
                  return false;
              }
      
              // Currently without a way to detect enmity, we will use hotkey to trigger this.
              public static async Task<bool> EnmityRotation() {
                  await Spell.CastSpell("Power Slash", () => Actionmanager.LastSpell.Name == "Spinning Slash");
                  await Spell.CastSpell("Spinning Slash", () => Actionmanager.LastSpell.Name == "Hard Slash");
                  await Spell.CastSpell("Hard Slash", () => true);
                  return false;
              }
      
              public static async Task<bool> OffGcdRotation() {
                // Offensive
                  await Spell.CastLocation("Salted Earth", Me.CurrentTarget, true);
                  await Spell.NoneGcdCast("Reprisal", Me.CurrentTarget, () => true);
                  await Spell.NoneGcdCast("Low Blow", Me.CurrentTarget, () => true);
      
                  // Need to solve this problem for an increase in dps.
                  // Leaving it like this allow it to be much more flexible.
                  //await Spell.NoneGcdCast("Plunge", Me.CurrentTarget, () => Me.CurrentTarget.Distance(Me) > 10);
      
                  // Defensive
                  await Spell.NoneGcdCast("Dark Dance", Me, () => true);
      
                  return false;
              }
      
              public static async Task<bool> MPGeneratorRotation() {
                  await Spell.NoneGcdCast("Blood Weapon", Me, () => true);
                  await Spell.NoneGcdCast("Blood Price", Me, () => true);
                  await Spell.NoneGcdCast("Sole Survivor", Me, () => true);
                  await Spell.NoneGcdCast("Carve and Spit", Me, () => true);
      
                  return false;
              }
      
              #endregion
      
          }
      }
      
      Edit: I will add range to buff skill tomorrow as we don't want to buff before we go into a fight.
       
      Last edited: Jul 2, 2015
    10. Xcesius

      Xcesius Community Developer

      Joined:
      May 1, 2011
      Messages:
      2,050
      Likes Received:
      61
      Trophy Points:
      48
      Looking good! added it :)
       
    11. abroseh

      abroseh New Member

      Joined:
      Feb 19, 2012
      Messages:
      176
      Likes Received:
      0
      Trophy Points:
      0
      Love it working pretty well
      also if you can add Living dead if hp = -5 or 10% that would be great! kinda like an auto last stand mode lol
       
    12. tichy

      tichy Member

      Joined:
      Jun 6, 2015
      Messages:
      142
      Likes Received:
      3
      Trophy Points:
      18
      Hmm I can't seem to get targetting or movement to work - is this just not a functionality at the moment (i.e. currently just rotation?).

      NVM - I just read up - so settings for ninja aren't working?
       
      Last edited: Jul 2, 2015
    13. stewiethecat

      stewiethecat Member

      Joined:
      Feb 4, 2011
      Messages:
      454
      Likes Received:
      0
      Trophy Points:
      16
      looking for some help with this, Steel Cyclone wont go off at all. Have tried a few different ways to add this in. No Luck.
      On a plus side, once this is done, I can release this CR :)

      Code:
      
                  await Spell.CastSpell("Defiance", Me, () => !Me.HasAura("Defiance"));
                  await Spell.CastSpell("Steel Cyclone", Me.CurrentTarget, () => !Me.HasAura("Infuriated"));
                  await Spell.CastSpell("Infuriate", Me, () => !Me.HasAura("Infuriated") && !Me.HasAura("Wrath") && !Me.HasAura("Wrath II") && !Me.HasAura("Wrath III") && !Me.HasAura("Wrath IV") && !Me.HasAura("Uncontrollable") && !Me.HasAura("Abandon") && !Me.HasAura("Abandon II") && !Me.HasAura("Abandon III") && !Me.HasAura("Abandon IV"));
      
      
       
    14. Xcesius

      Xcesius Community Developer

      Joined:
      May 1, 2011
      Messages:
      2,050
      Likes Received:
      61
      Trophy Points:
      48
      Hi tichy, the only setting that is working for ninja right now is Kassatsu because that's the only one coded in.
       
    15. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      should it not look like this?

      Code:
      await Spell.CastSpell("Steel Cyclone", () => Me.HasAura("Infuriated"));
      
      If i understand what the ! does. The way you currently have it will only cast if you do NOT have Infuriated up which you do need it up to use the skill.
       
    16. newb23

      newb23 Community Developer

      Joined:
      Nov 26, 2014
      Messages:
      397
      Likes Received:
      15
      Trophy Points:
      18
      You are correct. The way I remember ! is NOT. If NOTInuriated then blah blah blah. This is wrong, and your version would work, without the !.
       
    17. Lucky Panko

      Lucky Panko New Member

      Joined:
      Jul 3, 2015
      Messages:
      17
      Likes Received:
      0
      Trophy Points:
      1
      I looked over the thread, but couldn't find anybody else with the issue. I can't "see" YourRaidingBuddy. It simply doesn't show up when I load up the bot, nor when I switch to Combat Assist or Mud Assist, the options are only Ultima and Kupo. I've done both an SVN checkout and tried copying said files. I followed Xcesius' (thank you for taking the time and effort to make the routine btw!) advice here:

      Here's what I've tried so far:

      1) Fresh install of the latest working bot in a brand-new folder.
      2) SVN Checkout (https://subversion.assembla.com/svn/team-random/) into a folder created that is exactly worded as YourRaidingBuddy in Routines folder of the bot.
      3) Did a straight SVN Checkout to said folder (Routines) which creates a team-random folder instead of YourRaidingBuddy
      4) Deleted/removed all Plugins, Botbases, and other Combat Routines

      No matter what I do, for whatever reason it doesn't seem to show up. If I move or alter Kupo or Ultima however, that's reflected. I've restarted my game client, the bot, and the computer numerous times all to no avail. I apologize to be asking such a basic question, but does anybody have any clue why I'm not able to use the routine? I'd try and find a log to post but there's no errors being thrown, the routine just seems like it's not there.
       
    18. kei220

      kei220 Member

      Joined:
      May 22, 2015
      Messages:
      78
      Likes Received:
      0
      Trophy Points:
      6
      i did put SVN in Botbases it shows to me.
       
    19. Lucky Panko

      Lucky Panko New Member

      Joined:
      Jul 3, 2015
      Messages:
      17
      Likes Received:
      0
      Trophy Points:
      1
      So you put it in the BotBases folder, not the Routines folder like the other Combat Routines then?

      EDIT: Just tried it, made a new folder in the BotBases directory called YourRaidingBuddy did an SVN checkout on it so all the proper files were inside the folder, restarted the bot. Still only shows Kupo and Ultima as the two options when loading up.
       
      Last edited: Jul 3, 2015
    20. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      It goes in the Routines folder. Also assuming you did not edit any of the files after you did SVN checkout?

      Mine works

      All I did was create YourRaidingBuddy folder in the Rotuines folder
      Right clicked the new folder and clicked SVN checkout. Which extracted all the files into the folder.
       
      Last edited: Jul 3, 2015

    Share This Page