• Visit Rebornbuddy
  • YourRaidingBuddy - Coming Soon

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

    1. Johj

      Johj New Member

      Joined:
      Mar 15, 2015
      Messages:
      46
      Likes Received:
      0
      Trophy Points:
      0
      It hasn't been updated for about 2 months.
       
    2. tishat

      tishat Member

      Joined:
      May 29, 2015
      Messages:
      735
      Likes Received:
      7
      Trophy Points:
      18
      I think the problem is no one really working on rotations, haven't really encountered any bugs with anything "core" related.
       
    3. CarnegieL

      CarnegieL Member

      Joined:
      Oct 11, 2015
      Messages:
      32
      Likes Received:
      0
      Trophy Points:
      6
      I'd do something on rotations if I knew what I was doing, or work with someone to complete one.
       
    4. fantasticfantasy

      fantasticfantasy Member

      Joined:
      Jan 12, 2015
      Messages:
      100
      Likes Received:
      0
      Trophy Points:
      16
      I can provide the best rotations for each class... but I cannot code.
       
    5. natrurebiy

      natrurebiy Member

      Joined:
      Jan 25, 2014
      Messages:
      73
      Likes Received:
      0
      Trophy Points:
      6
      sounds like an opportunity to learn
       
    6. schopenhauer

      schopenhauer Member

      Joined:
      Jul 22, 2014
      Messages:
      218
      Likes Received:
      12
      Trophy Points:
      18
      Quick question for anyone that knows how the coding works better than I, basically on the MCH routine I want to have it auto summon, but at the moment it summons at current target's location. What/which do I change to have it summon it beside my current location? I found the code calls that appear to be for it, can anyone help me by just telling what to change?

      I'd really appreciate it, sorry I don't know enough to figure it out on my own, it's too far out of my common knowledge sadly.

      Code:
      // This is one of the lines, these are not in order, just the only lines of code I can find calling/talking about the turret(s)
      
      public static Vector3 RookPosition = new Vector3(0.3f, 0f, .5f);
      
      //couple more lines down
      
       public override void OnInitialize()
              {
                  //Summon Companion
                  if (Core.Player.Pet == null && VariableBook.HostileUnitsCount < 2 && InternalSettings.Instance.Machinist.EnableAutoSummon && Me.CurrentTarget != null)
                      Actionmanager.DoActionLocation(2864, (Core.Target.Location + RookPosition));
      
                  if (Core.Player.Pet == null && VariableBook.HostileUnitsCount > 2 && InternalSettings.Instance.Machinist.EnableAutoSummon && Me.CurrentTarget != null)
                      Actionmanager.DoActionLocation(2865, (Core.Target.Location + RookPosition));
      
      //a little further down about 50 lines in the rotation
      
                  if (Core.Player.Pet == null && VariableBook.HostileUnitsCount < 2 && InternalSettings.Instance.Machinist.EnableAutoSummon && Me.CurrentTarget != null)
                      Actionmanager.DoActionLocation(2864, (Core.Target.Location + RookPosition));
      
                  if (Core.Player.Pet == null && VariableBook.HostileUnitsCount > 2 && InternalSettings.Instance.Machinist.EnableAutoSummon && Me.CurrentTarget != null)
                      Actionmanager.DoActionLocation(2865, (Core.Target.Location + RookPosition));
      These are the only lines I could find referring to the turret(s) in the mch.cs
       
    7. hkme

      hkme Member

      Joined:
      May 12, 2014
      Messages:
      197
      Likes Received:
      0
      Trophy Points:
      16
      Which job is good enough for Savage level raid under this CR?
       
    8. metrosound

      metrosound New Member

      Joined:
      Nov 23, 2015
      Messages:
      26
      Likes Received:
      0
      Trophy Points:
      1
      I'm new to RebornBuddy been using FFXIVminion for while
      so I going to try contributing to this great community

      Adding some Warrior function to UI
      and global AoE settings and the Overlay AoE setting now will take effect as Warrior

      Not an expert in coding so feel free to correct me
      for the rotation I just modify and add whats there

      Minion have great rotation for all class too bad its coded in lua so need someone who's good at coding to port it
      maybe I can help showing the rotation logic from minion to a spreadsheet.
      So if someone willing to do it so RB have a finished YRB or any CR plugin just pm me

      WarriorSettings.cs
      Code:
      using ff14bot.Helpers;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Configuration;
      using System.IO;
      using YourRaidingBuddy.Interfaces.Settings;
      
      namespace YourRaidingBuddy.Settings
      {
          public class WarriorSetting : JsonSettings
          {
              public WarriorSetting()
                  : base(InternalSettings.RoutineSettingsPath + "_Warrior.json")
              {
              }
      
              // Cross Class
      
              [Setting]
              [DefaultValue(true)]
              [Category("Cross Class")]
              [DisplayName("Use InternalRelease")]
              public bool UseInternalRelease { get; set; }
      
              // off GCD Attack Buffs
      
              [Setting]
              [DefaultValue(true)]
              [Category("Warrior - Off GCD Attack Buffs")]
              [DisplayName("Use Bloodbath")]
              public bool UseBloodbath { get; set; }
      
              [Setting]
              [DefaultValue(70)]
              [Category("Warrior - Off GCD Attack Buffs")]
              [DisplayName("Bloodbath HP%")]
              public int BloodbathHpPercentage { get; set; }
      
              // off GCD Defensive Buffs
      
              [Setting]
              [DefaultValue(true)]
              [Category("Warrior - Off GCD Defense Buffs")]
              [DisplayName("Use Equilibrium")]
              public bool UseEquilibrium { get; set; }
      
              [Setting]
              [DefaultValue(60)]
              [Category("Warrior - Off GCD Defense Buffs")]
              [DisplayName("Equilibrium HP%")]
              public int EquilibriumHpPercentage { get; set; }
      
              [Setting]
              [DefaultValue(50)]
              [Category("Warrior - Off GCD Defense Buffs")]
              [DisplayName("Equilibrium TP%")]
              public int EquilibriumTpPercentage { get; set; }
      
              [Setting]
              [DefaultValue(true)]
              [Category("Warrior - Off GCD Defense Buffs")]
              [DisplayName("Use Featherfoot")]
              public bool UseFeatherfoot { get; set; }
      
              [Setting]
              [DefaultValue(85)]
              [Category("Warrior - Off GCD Defense Buffs")]
              [DisplayName("Featherfoot HP%")]
              public int FeatherfootHpPercentage { get; set; }
      
              // Attacks
      
              [Setting]
              [DefaultValue(true)]
              [Category("Warrior - Attacks")]
              [DisplayName("Use Mercy Stroke")]
              public bool UseMercyStroke { get; set; }
      
      
          }
      
      }
      Warrior.cs
      Code:
      using System.Threading.Tasks;
      using System.Windows.Forms;
      using ff14bot;
      using ff14bot.Enums;
      using ff14bot.Managers;
      using ff14bot.Objects;
      using YourRaidingBuddy.Books;
      using YourRaidingBuddy.Helpers;
      using YourRaidingBuddy.Interfaces.Settings;
      using YourRaidingBuddy.Settings;
      using HotkeyManager = YourRaidingBuddy.Managers.HotkeyManager;
      
      namespace YourRaidingBuddy.Rotations
      {
          public class Warrior : Root
          {
              private static LocalPlayer Me
              {
                  get { return Core.Player; }
              }
      
              public override ClassJobType[] Class
              {
                   get
                  {
                      return new[]
                      {
                          ClassJobType.Warrior
                      };
                  }
              }
      
              public static SettingsG GeneralSettings
              {
                  get { return InternalSettings.Instance.General; }
              }
      
              public static WarriorSetting WarriorSettings
              {
                  get { return InternalSettings.Instance.Warrior; }
              }
      
              public override void OnInitialize()
              {
                  ;
              }
      
              #region NewRotation
      
      
              public static async Task<bool> AutoMode()
              {
                  if (!Me.CurrentTarget.IsViable())
                      return false;
                  return await WarriorRotation();
              }
      
              private static async Task<bool> Aoe(bool force)
              {
                  if (!force && !GeneralSettings.Aoe) return false;
      
                  return await Spell.CastSpell("Overpower", Me,
                      () =>
                          ((Me.CurrentManaPercent > 50 && ShouldAoe()) ||
                           Me.HasAura("Defiance") || force));
              }
      
              private static bool ShouldAoe()
              {
                  return VariableBook.HostileUnitsCount >= GeneralSettings.AoeCount;
              }
      
              public static async Task<bool> WarriorDefiance()
              {
                  await Spell.CastSpell("Defiance", Me, () => !Me.HasAura("Defiance"));
                  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"));
                  await Spell.CastSpell("Butcher's Block", () => Actionmanager.LastSpell.Name == "Skull Sunder");
                  await Spell.CastSpell("Skull Sunder", () => Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Heavy Swing", () => true);
      
                  // off the Gcd weaving
      
                  await Spell.NoneGcdCast("Bloodbath", Me,
                      () =>
                          WarriorSettings.UseBloodbath && TargetIsNear() &&
                          Me.CurrentHealthPercent < WarriorSettings.BloodbathHpPercentage);
                  await Spell.NoneGcdCast("Equilibrium", Me,
                      () =>
                          WarriorSettings.UseEquilibrium &&
                          Me.CurrentHealthPercent < WarriorSettings.EquilibriumHpPercentage &&
                          UnitIsTargettingMe());
                  await Spell.NoneGcdCast("Featherfoot", Me,
                      () =>
                          WarriorSettings.UseFeatherfoot &&
                          Me.CurrentHealthPercent < WarriorSettings.FeatherfootHpPercentage &&
                          UnitIsTargettingMe());  
                  await Spell.NoneGcdCast("Mercy Stroke", Me.CurrentTarget,
                      () =>
                          WarriorSettings.UseMercyStroke &&
                          (Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20));
                  await Spell.NoneGcdCast("Internal Release", Me,
                      () =>
                          WarriorSettings.UseInternalRelease &&
                          !Me.HasAura("Internal Release"));
                  await Spell.NoneGcdCast("Mercy Stroke", Me.CurrentTarget,
                      () =>
                          WarriorSettings.UseMercyStroke &&
                          (Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20));
      
                  return false;
              }
      
              public static async Task<bool> WarriorDeliverance()
              {
                  await Spell.CastSpell("Deliverance", Me, () => !Me.HasAura("Deliverance"));
                  await Spell.ApplyCast("Fracture", Me.CurrentTarget, () => !Me.CurrentTarget.HasAura("Fracture", true, 4000) && Actionmanager.LastSpell.Name != ("Heavy Swing") && Actionmanager.LastSpell.Name != ("Skull Sunder") && Actionmanager.LastSpell.Name != ("Maim"));
                  await Spell.CastSpell("Fell Cleave", Me.CurrentTarget, () => Me.CurrentTarget.CurrentHealthPercent >= 0);
                  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"));
                  await Spell.CastSpell("Storm's Eye", () => Actionmanager.LastSpell.Name == "Maim");
                  await Spell.CastSpell("Maim", () => !Me.HasAura("Maim", true, 7000) && !Me.CurrentTarget.HasAura("Storm's Eye", true, 7000) && Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Butcher's Block", () => Actionmanager.LastSpell.Name == "Skull Sunder");
                  await Spell.CastSpell("Skull Sunder", () => Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Heavy Swing", () => true);
      
                  // off the Gcd weaving
      
                  await Spell.NoneGcdCast("Equilibrium", Me,
                      () =>
                          WarriorSettings.UseEquilibrium &&
                          Me.CurrentTPPercent < WarriorSettings.EquilibriumTpPercentage);   
                  await Spell.NoneGcdCast("Internal Release", Me,
                      () =>
                          WarriorSettings.UseInternalRelease &&
                          !Me.HasAura("Internal Release"));
                  await Spell.NoneGcdCast("Mercy Stroke", Me.CurrentTarget,
                      () =>
                          WarriorSettings.UseMercyStroke &&
                          (Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20));
      
                  return false;
              }
      
              public static async Task<bool> WarriorDefianceAoE()
              {
                  // work in progress
      
                  await Spell.CastSpell("Defiance", Me, () => !Me.HasAura("Defiance"));
                  await Spell.CastSpell("Steel Cyclone", Me, () => 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"));
                  await Spell.CastSpell("Overpower", Me.CurrentTarget, () => Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent >= 0);
                  await Spell.CastSpell("Flash", Me, () => true);
      
                  // off the Gcd weaving (pops light cds while tanking multiple mobs)
      
                  await Spell.CastSpell("Bloodbath", Me, () => Me.CurrentHealthPercent <= 95);
                  await Spell.CastSpell("Equilibrium", Me, () => Me.CurrentHealthPercent <= 60);
                  await Spell.CastSpell("Featherfoot", Me, () => Me.CurrentHealthPercent <= 85);
                  await Spell.CastSpell("Mercy Stroke", Me.CurrentTarget, () => Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20);
      
      
                  return false;
              }
      
      
              public static async Task<bool> WarriorRotation()
              {
                  if (!Me.CurrentTarget.IsViable())
                  await Spell.CastSpell("Defiance", Me, () => !Me.HasAura("Defiance"));
                  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"));
                  await Spell.ApplyCast("Fracture", Me.CurrentTarget, () => !Me.CurrentTarget.HasAura("Fracture", true, 4000) && Actionmanager.LastSpell.Name != ("Heavy Swing") && Actionmanager.LastSpell.Name != ("Skull Sunder") && Actionmanager.LastSpell.Name != ("Maim"));
                  await Spell.CastSpell("Storm's Path", () => !Me.CurrentTarget.HasAura("Storm's Path", true, 4000) && Actionmanager.LastSpell.Name == "Maim");
                  await Spell.CastSpell("Storm's Eye", () => !Me.CurrentTarget.HasAura("Storm's Eye", true, 4000) && Actionmanager.LastSpell.Name == "Maim");
                  await Spell.CastSpell("Maim", () => !Me.CurrentTarget.HasAura("Storm's Eye", true, 15000) && Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Butcher's Block", () => Actionmanager.LastSpell.Name == "Skull Sunder");
                  await Spell.CastSpell("Skull Sunder", () => Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Heavy Swing", () => true);
      
                  // off the Gcd weaving
      
                  await Spell.NoneGcdCast("Bloodbath", Me,
                      () =>
                          WarriorSettings.UseBloodbath && TargetIsNear() &&
                          Me.CurrentHealthPercent < WarriorSettings.BloodbathHpPercentage);
                  await Spell.NoneGcdCast("Equilibrium", Me,
                      () =>
                          WarriorSettings.UseEquilibrium &&
                          Me.CurrentHealthPercent < WarriorSettings.EquilibriumHpPercentage &&
                          UnitIsTargettingMe());
                  await Spell.NoneGcdCast("Featherfoot", Me,
                      () =>
                          WarriorSettings.UseFeatherfoot &&
                          Me.CurrentHealthPercent < WarriorSettings.FeatherfootHpPercentage &&
                          UnitIsTargettingMe());  
                  await Spell.NoneGcdCast("Internal Release", Me,
                      () =>
                          WarriorSettings.UseInternalRelease &&
                          !Me.HasAura("Internal Release"));
                  await Spell.NoneGcdCast("Mercy Stroke", Me.CurrentTarget,
                      () =>
                          WarriorSettings.UseMercyStroke &&
                          (Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20));
      
                  return false;
              }
      
              public static async Task<bool> HotkeyMode()
              {
                  if (!Me.CurrentTarget.IsViable())
                      return false;
                  if (VariableBook.HkmSpecialKey) await WarriorDefiance();
                  if (VariableBook.HkmSpecialKey1) await WarriorDeliverance();
                  if (VariableBook.HkmMultiTarget) await WarriorDefianceAoE();
      
                  return await WarriorRotation();
              }
      
              private static bool UnitIsTargettingMe()
              {
                  return VariableBook.HostileUnitsTargettingMeCount > 0;
              }
      
              private static bool TargetIsNear()
              {
                  return Me.CurrentTarget.Distance(Me) - Me.CurrentTarget.CombatReach < 3;
              }
      
              #endregion
      
          }
      }
      
       
      Last edited: Nov 28, 2015
    9. Noxy

      Noxy New Member

      Joined:
      Dec 8, 2014
      Messages:
      18
      Likes Received:
      0
      Trophy Points:
      1
      For optimal performance with YRB as warrior you do not want it to use any cd's at all, you want to control that yourself because it can't differnate when jumps for example in a1s and so on comes, i'll pm you a modified rotation if you want that pushes well above 1100dps even when starting to maintank, however you gotta use every cd manually, which is where you gain alot of dps vs having automatic cd usage that might use cd's 5seconds before phase changes and thus wasting cd completly.
       
    10. Xcesius

      Xcesius Community Developer

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

      I will see if I can add the Overlay stuff into the core along with new type of hotkeys. (no modifier required)

      Let me know if you're developing on YRB core, you can then PM me with your skype details. I'll see if I can create a group for you guys if you have ideas / stuff you want to see added into the core
       
    11. metrosound

      metrosound New Member

      Joined:
      Nov 23, 2015
      Messages:
      26
      Likes Received:
      0
      Trophy Points:
      1
      I just modified it so we have working GCD UI for Warrior same as DRK and those rotation is not mine. I never tried to make rotation with buddy as I'm new here.
      But would love to try it, maybe your rotation will be useful for me to learn reborn C# and how to make rotation and optimize it
       
    12. Noxy

      Noxy New Member

      Joined:
      Dec 8, 2014
      Messages:
      18
      Likes Received:
      0
      Trophy Points:
      1
      [HIDE] Put this into your warrior.cs file, for A3S i suggest removing brutal swing from each section and manually using it on cd until add phase and from then on using it when you need to interrupt adds/stunning them.
      Code:
      using System.Threading.Tasks;
      using ff14bot;
      using ff14bot.Enums;
      using ff14bot.Managers;
      using ff14bot.Objects;
      using YourRaidingBuddy.Helpers;
      using YourRaidingBuddy.Settings;
      using YourRaidingBuddy.Books;
      
      namespace YourRaidingBuddy.Rotations
      {
          public class Warrior : Root
          {
              private static LocalPlayer Me { get { return Core.Player; } } //Core.Player.CurrentTarget as BattleCharacter
      
              public override ClassJobType[] Class
              {
                  get { return new[] { ClassJobType.Warrior }; }
              }
      
              public override void OnInitialize()
              {
                  ;
              }
      
              #region NewRotation
      
      
              public static async Task<bool> AutoMode()
              {
                  if (!Me.CurrentTarget.IsViable())
                      return false;
                  return await WarriorRotation();
              }
      
              public static async Task<bool> WarriorDefiance()
              {
                  await Spell.CastSpell("Defiance", Me, () => !Me.HasAura("Defiance"));
                  await Spell.CastSpell("Inner Beast", Me, () => Me.CurrentHealthPercent <= 85);
                  await Spell.CastSpell("Butcher's Block", () => Actionmanager.LastSpell.Name == "Skull Sunder");
                  await Spell.CastSpell("Skull Sunder", () => Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Heavy Swing", () => true);
      
                  // off the Gcd weaving
      
                  await Spell.CastSpell("Mercy Stroke", Me.CurrentTarget, () => Me.CurrentTarget.CurrentHealthPercent <= 20);
      
                  return false;
              }
      
              public static async Task<bool> WarriorDeliverance()
              {
                  await Spell.CastSpell("Deliverance", Me, () => !Me.HasAura("Deliverance"));
                  await Spell.CastSpell("Storm's Eye", () => Actionmanager.LastSpell.Name == "Maim");
                  await Spell.CastSpell("Maim", () => !Me.HasAura("Maim", true, 4000) && !Me.CurrentTarget.HasAura("Storm's Eye", true, 10000) && Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Fell Cleave", () => true);
                  await Spell.CastSpell("Butcher's Block", () => Actionmanager.LastSpell.Name == "Skull Sunder");
                  await Spell.CastSpell("Skull Sunder", () => !Me.HasAura("Maim", true, 10000) && !Me.CurrentTarget.HasAura("Storm's Eye", true, 14000) && Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Heavy Swing", () => true);
      
                  // off the Gcd weaving
      
                  await Spell.CastSpell("Mercy Stroke", Me.CurrentTarget, () => Me.CurrentTarget.CurrentHealthPercent <= 20);
                  await Spell.CastSpell("Brutal Swing", () => true);
      
                  return false;
              }
      
              public static async Task<bool> WarriorDefianceAoE()
              {
                  // work in progress
      
                  await Spell.CastSpell("Defiance", Me, () => !Me.HasAura("Defiance"));
      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"));
                  await Spell.CastSpell("Steel Cyclone", Me, () => Me.HasAura("Infuriated"));
                  await Spell.CastSpell("Overpower", Me.CurrentTarget, () => Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent >= 75);
                  await Spell.CastSpell("Flash", Me, () => true);
      
                  // off the Gcd weaving (pops light cds while tanking multiple mobs)
      
                  await Spell.CastSpell("Mercy Stroke", Me.CurrentTarget, () => Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20);
                  await Spell.CastSpell("Brutal Swing", () => true);
      
      
                  return false;
              }
      
      
              public static async Task<bool> WarriorRotation()
              {
                  if (!Me.CurrentTarget.IsViable())
                  await Spell.CastSpell("Defiance", Me, () => !Me.HasAura("Defiance"));
                  await Spell.CastSpell("Storm's Eye", () => !Me.CurrentTarget.HasAura("Storm's Eye", true, 9000) && Actionmanager.LastSpell.Name == "Maim");
                  await Spell.CastSpell("Maim", () => !Me.CurrentTarget.HasAura("Storm's Eye", true, 10000) && Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Fell Cleave", () => true);
                  await Spell.CastSpell("Butcher's Block", () => Actionmanager.LastSpell.Name == "Skull Sunder");
                  await Spell.CastSpell("Skull Sunder", () => Actionmanager.LastSpell.Name == "Heavy Swing");
                  await Spell.CastSpell("Heavy Swing", () => true);
      
                  // off the Gcd weaving
      
                  await Spell.CastSpell("Mercy Stroke", Me.CurrentTarget, () => Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20);
                  await Spell.CastSpell("Brutal Swing", () => true);
      
      
                  return false;
              }
      
              public static async Task<bool> HotkeyMode()
              {
                  if (!Me.CurrentTarget.IsViable())
                      return false;
                  if (VariableBook.HkmSpecialKey) await WarriorDefiance();
                  if (VariableBook.HkmSpecialKey1) await WarriorDeliverance();
                  if (VariableBook.HkmMultiTarget) await WarriorDefianceAoE();
      
                  return await WarriorRotation();
              }
              #endregion
      
          }
      }
      
      [/HIDE]
       
    13. Streghorn

      Streghorn New Member

      Joined:
      Jun 21, 2012
      Messages:
      27
      Likes Received:
      2
      Trophy Points:
      3
      Noxy and Metro Thanks for the Warrior profile/advice.
       
    14. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      Anyone know how to add the overlay into the rotations? I have it enabled in settings but when i press the hotkeys it does not change the status.

      Ninja Rotation:
      A Opener will not be created since I do that manually
      Goad Helper will not be added since I do this manually also
      AoE will be added at some point when I get it working.
      NOTE: Cast huton manually before pull
      NOTE: Kassatsu will mess up on A2 because the way it is setup it will cast if Vulnerability Up is on the target which will happen all the time. When I do A2 i am on the gob walker so I do not have to worry about this. I will eventually find a better way to deal with it.

      Current Rotation Priority
      1. Keeping Huton Up with AC (Less then 15 sec left)
      2. Dancing Edge if Storms Eye is not up
      3. Shadow Fang
      4. Mutilate
      5. Armor Crush if you have dots and debuffs up and less then 40sec's on Huton
      6. Aeolian Edge

      Ninjutsu Priority
      1. Huton (Should never fall off since we use AC)
      2. Suiton (If trick attack is available or about to come off CD within 1.3 sec)
      3. Raiton or Fuma (Depends on your settings)
      4. Will cast Kassatsu if vulnerability up is on the target (AKA TA)

      Features:
      Will cast dancing edge instead of AC or AE if you are in front of the boss
      Will Cast AC instead of AE if you are on flank
      Will Cast AE only if your behind the boss
      Weaves GCD as best as I could
      Auto rotation or Hotkey rotation (Personally I use hotkey for A3 and A4 Savage)

      If you are using hotkey rotation make sure you press the hotkey's for cooldown, Specialkey and Specialkey1 they are defaulted to off.
      Cooldown hotkey = TA, IR, BfB, Mug, DwaD
      Specialkey = Ninjutsu
      Specialkey1 = Juggulate (in case you need to interrupt like in A3)

      Settings (Will rename them later for better understanding)
      Huton Recast (default set to 6 sec's)
      ShurikenAlways = Only casts Shuriken instead of Raiton (Default Off)
      Use Kassatsu (Default On)
      BuffHP = Will only casts buff if target is above this HP
      MobHP = Will only Casts Dots if target is above this HP
      DancingEdge = Toggle on or off if your warrior is a little slow I turn it off
      DancingEdgeClip = timer left on dancing edge to recast
      MutilationClip = timer left on mutilation to recast
      ShadowfangClip = timer left on shadow fang to recast
      EmergencyHutonClip = timer left when to prioritize AC
      TrickIsBehindadjustment = do not touch this setting

      If you have more settings you want added let me know.
       

      Attached Files:

      Last edited: Dec 10, 2015
    15. Streghorn

      Streghorn New Member

      Joined:
      Jun 21, 2012
      Messages:
      27
      Likes Received:
      2
      Trophy Points:
      3
      Thanks for these! Cant wait to try them out tomorrow.
       
    16. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      Ninja Changelog
      Hopefully Fixed Kassatsu single target for A2 and if you have another Ninja in the group, it should only be casted if Vulnerability is up and Trick Attack is on CD.
      Added AoE
      1. If target is above 60%hp and has Kassatsu available it will cast Katon, Kass, then Doton
      2. If target is below 60%hp and has Kassatsu available it will cast Katon, Kass, Katon
      3. Will use Deathblossom if 5+ mobs are near (Disabled in settings by default)

      New Settings added and renamed some settings to make it more understandable
      1. AoE Toggle
      2. Death Blossom Toggle
      3. Kassatsue in AoE Toggle

      Overlay Added for hotkeys (Hope u dont have OCD since the labels are off alignment)
      1. Added Juggulate Label (Specialkey1 for hotkey rotation)
      2. Added Ninjutsu Label (Specialkey for hotkey rotation)
      To turn on overlay (will need to be done everytime you boot up YourRaidingBuddy) click combat settings and then in the bottom left you should see the overlay button.

      Ninja.cs goes into YourRaidingBuddy > Rotations > Jobs
      NinjaSettigns.cs goes into YourRaidingBuddy > Core > Settings > Jobs
      Overlay.cs and Overlay.Designer.cs goes into YourRaidingBuddy > Core > Interface > GUI
       

      Attached Files:

      Last edited: Dec 11, 2015
    17. xKenshiro15

      xKenshiro15 New Member

      Joined:
      Jul 26, 2015
      Messages:
      18
      Likes Received:
      0
      Trophy Points:
      0
      Thanks for the great rotation Noxy, I was just wondering, can you tell me how you open with this in terms of buffs please?
       
    18. wolfrain62

      wolfrain62 Member

      Joined:
      Aug 22, 2014
      Messages:
      137
      Likes Received:
      0
      Trophy Points:
      16
      Ninja Changelog:
      Fixed AoE
      Added Poison Support
      Changed Default Settings for better Dot Clipping.
       

      Attached Files:

      Last edited: Dec 21, 2015
    19. Noxy

      Noxy New Member

      Joined:
      Dec 8, 2014
      Messages:
      18
      Likes Received:
      0
      Trophy Points:
      1
      Just let it do its opener until you're at 4stacks and about to get 5th stack, squeeze in berserk and internal release between the gcd's and use your vengeance or raw intuition for 5th stack to get 9gcd 3 fell cleave opener, pretty standard, i've peaked at 2200dps with this on thordan extreme for example.
       
    20. Xcesius

      Xcesius Community Developer

      Joined:
      May 1, 2011
      Messages:
      2,050
      Likes Received:
      61
      Trophy Points:
      48
      So if anyone still developing on this routine, please give me a pm so I can give you the discord server for more direct approach to contact me etc.
       

    Share This Page