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

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

YourRaidingBuddy - Coming Soon

Progress ::

UI has been remade :
DWHJtl8.png


Working on Overlay stuff, fixing up some casting methods.
 
Thank you so much for continuing to work on this routine I love this routine because it seems to be the only actual tanking routine!!! much love <3
 
If you could add 2 more hotkey's that would be amazing. Also make the overlay size a bit bigger, when I customized it for my own it could barley fit the 2 new overlays labels without them being cut off.
 
If you could add 2 more hotkey's that would be amazing. Also make the overlay size a bit bigger, when I customized it for my own it could barley fit the 2 new overlays labels without them being cut off.

Hi wolfrain62,

I will be adding the new overlay that arrived in Rebornbuddy 1-2 months ago this weekend, I'll add a short guide / template inside the source code when I've added it.
 
Core Update is coming along well.

Overlay is working, GUI has been remade from scratch. I've added 2 more SpecialKeys + some minor documentation on how to edit the name on the keys for Overlay Text + inside the Hotkey Tab.

Ful8PBS.png


Overlay Picture (NOT fully complete)

FSi1zEg.png
 
OO Yea. Looking really good.

It's already live, but I haven't made any guides yet.

Editing the SpecialKeys you need to go to following ::

Interface.cs (Look under Paladin job for examples) and HotkeyManager (There should be an example there)
 
So, I've been working on a bit of a warrior routine designed to be able to be swapped between stances manually. It takes advantage of the warrior debuffs, aiming for 100% uptime on Storm's Eye and Storm's Path on your primary target, however, this does mean as the target changes, it can have a bit of a painful time as it reapplies both of these. If another warrior already has them up, it won't attempt to apply, and goes straight into a DPS rotation. This is designed with several cross-classes in mind, including Internal Release, Provoke (Manual use only), Convalescence, Flash, Awareness. At 75% health it triggers off Foresight/Awareness for defense while healers heal you, at 35%, it kicks off Thrill of Battle, Convalescenese, equib if you're in tank stance, infuriate, blood bath, and inner beast if you're infuriated and in tank stance. I've mostly been running as an i180 warrior tank in A1-A3, and it's allowed me to keep up threat pretty closely with the current rounds of i200-i210 geared DPS in the raids.

This also supports some basic AoE rotations, taking advantage of Decimate or Steel Cyclone, and will use Infuriate if you're at 3 stacks or below of Wrath/Abandon to trigger these two off. Out of ApE, it prefers to use it on Fell Cleave if you're in DPS stance, to keep your aggro high.

At my current iLevel, whacking the training dummies, I'm around 650 DPS in DPS stance, 350-400 in Tank, though my gear is awful, so take it as you will. This also tends to keep my TP relatively high, completely whacking the training dummy, I'm hitting around 4-5 minutes before I run out of TP, and DPS is stable through that time. Running in A1-A3, I'm not having any TP issues at all, likely because of the phase changes and buffs from the various people around me.

Comments and suggestions are welcome, and I'm glad to try out other rotations that may be suggested.

Code:
using System.Net.Configuration;
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()
        {
            return await MainRotation();
        }

        public static async Task<bool> HotkeyMode()
        {
            return await MainRotation();
        }

        public static async Task<bool> MainRotation()
        {
            if (!Me.CurrentTarget.IsViable())
                return false;
            if (Me.CurrentHealthPercent < 75) await MitigationRotation();
            if (Me.CurrentHealthPercent < 35) await HealingRotation();
            if (VariableBook.HkmMultiTarget && await AoeRotation()) return true;
            if (await
                Spell.CastSpell("Fell Cleave",
                    () => Me.HasAura("Uncontrollable") && (Actionmanager.LastSpell.Name == "Skull Sunder" ||
                                                           Actionmanager.LastSpell.Name == "Butcher's Block")))
                return true;
            if (!Me.CurrentTarget.HasAura("Storm's Eye") && await StormEyeRotation()) return true;
            if (!Me.CurrentTarget.HasAura("Storm's Path") && await StormPathRotation()) return true;
            // if (await Spell.CastSpell("Fracture", () => !Me.CurrentTarget.HasAura("Fracture"))) return true;
            return await DpsRotation();
        }

        public static async Task<bool> StormEyeRotation()
        {
            if (await Spell.CastSpell("Storm's Eye", () => Actionmanager.LastSpell.Name == "Maim")) return true;
            if (await Spell.CastSpell("Maim", () => Actionmanager.LastSpell.Name == "Heavy Swing")) return true;
            if (await Spell.CastSpell("Heavy Swing", () => true)) return true;

            return false;
        }

        public static async Task<bool> StormPathRotation()
        {
            if (await Spell.CastSpell("Storm's Path", () => Actionmanager.LastSpell.Name == "Maim")) return true;
            if (await Spell.CastSpell("Maim", () => Actionmanager.LastSpell.Name == "Heavy Swing")) return true;
            if (await Spell.CastSpell("Heavy Swing", () => true)) return true;

            return false;
        }
        // Me.HasAura("Deliverance") ; !Me.HasAura("Abandon") && !Me.HasAura("Abandon II") && !Me.HasAura("Abandon III") ; Me.HasAura("Uncontrollable")
        // Me.HasAura("Defiance") ; !Me.HasAura("Wrath") && !Me.HasAura("Wrath II") && !Me.HasAura("Wrath III") ; Me.HasAura("Infuriated")

        public static async Task<bool> DpsRotation()
        {
            await Spell.CastSpell("Internal Release", Me, () => true);
            await Spell.CastSpell("Berserk", Me, () => Me.HasAura("Deliverance"));
            if (await Spell.CastSpell("Flash", Me, () => Me.HasAura("Defiance") && Me.CurrentMana > 800)) return true;
            await Spell.CastSpell("Unchained", Me, () => Me.HasAura("Infuriated"));
            if (await Spell.CastSpell("Steel Cyclone", Me, () => Me.HasAura("Infuriated"))) return true;
            await Spell.CastSpell("Brutal Swing", () => true);
            await
                Spell.CastSpell("Mercy Stroke", () =>
                        Me.CurrentTarget.CurrentHealthPercent < 20 && Me.CurrentTarget != null &&
                        (Actionmanager.LastSpell.Name == "Skull Sunder" ||
                         Actionmanager.LastSpell.Name == "Butcher's Block"));
            await Spell.CastSpell("Infuriate", Me, () => (Me.HasAura("Abandon") || Me.HasAura("Abandon II") || Me.HasAura("Abandon III")) && (Actionmanager.LastSpell.Name == "Skull Sunder" ||
                                                           Actionmanager.LastSpell.Name == "Butcher's Block"));
            if (await
                Spell.CastSpell("Fell Cleave",
                    () => Me.HasAura("Uncontrollable") && (Actionmanager.LastSpell.Name == "Skull Sunder" ||
                                                           Actionmanager.LastSpell.Name == "Butcher's Block")))
                return true;
            if (await Spell.CastSpell("Butcher's Block", () => Actionmanager.LastSpell.Name == "Skull Sunder")) return true;
            if (await Spell.CastSpell("Skull Sunder", () => Actionmanager.LastSpell.Name == "Heavy Swing")) return true;
            if (await Spell.CastSpell("Heavy Swing", () => true)) return true;
            return false;
        }

        public static async Task<bool> AoeRotation()
        {
            if (Me.HasAura("Deliverance"))
            {
                await Spell.CastSpell("Infuriate", Me, () => Me.HasAura("Abandon") || Me.HasAura("Abandon II") || Me.HasAura("Abandon III"));
                if (await Spell.CastSpell("Decimate", () => Me.HasAura(734))) return true;
            }
            else if (Me.HasAura("Defiance"))
            {
                await Spell.CastSpell("Infuriate", Me, () => Me.HasAura("Wrath") || Me.HasAura("Wrath II") || Me.HasAura("Wrath III"));
                if (await Spell.CastSpell("Steel Cyclone", () => Me.HasAura("Infuriated"))) return true;
            }
            return false;
        }

        public static async Task<bool> MitigationRotation()
        {
            await Spell.CastSpell("Foresight", Me, () => true);
            await Spell.CastSpell("Awareness", Me, () => true);

            return true;
        }

        public static async Task<bool> HealingRotation()
        {
            await Spell.CastSpell("Thrill of Battle", Me, () => true);
            await Spell.CastSpell("Convalescence", Me, () => true);
            await Spell.CastSpell("Equilibrium", Me, () => Me.HasAura("Defiance"));
            await Spell.CastSpell("Infuriate", Me, () => true);
            await Spell.CastSpell("Bloodbath", Me, () => true);
            await Spell.CastSpell("Inner Beast", Me, () => Me.HasAura("Infuriated"));
            return true;
        }

        #endregion

    }
}
 
How can I close the overlay? It stays visible even I changed to other botbase & CR
 
Wolfrain, Love your ninja profile.

Thank you very much for it.

One question, can you add HP check for suiton?
 
Wolfrain, Love your ninja profile.

Thank you very much for it.

One question, can you add HP check for suiton?
Yea Np, as soon as i find out how to fix the overlay refresh ill upload the updated ninja cr and new overlay files.
 
Last edited:
@Xcesius gonna need some help on the overlay, I got it working but the logs will spam [19:58:21.205 N] [YourRaidingBuddy] Overlay: Rendering the overlay (YRBNinjutsu).

Here is the log:
View attachment 11688 2015-12-30 13.57.txt

Here is the overlaycontrol file I changed:
View attachment OverlayControl.cs

I know it has to do with the overlayrefresh but it should work just like the others that do not spam the log.
 
Last edited:
@Xcesius gonna need some help on the overlay, I got it working but the logs will spam [19:58:21.205 N] [YourRaidingBuddy] Overlay: Rendering the overlay (YRBNinjutsu).

Here is the log:
View attachment 195161

Here is the overlaycontrol file I changed:
View attachment 195162

I know it has to do with the overlayrefresh but it should work just like the others that do not spam the log.

wolfrain62,

Please create a get; set for OverlayRefreshSpecialKey in VariableBook

VariableBook.OverlayRefreshCooldowns = false;

Then edit this line under YRBNinjutsu to VariableBook.OverlayRefreshSpecialKey = false;
 
Last edited:
wolfrain62,

Please create a get; set for OverlayRefreshSpecialKey in VariableBook

VariableBook.OverlayRefreshCooldowns = false;

Then edit this line under YRBNinjutsu to VariableBook.OverlayRefreshSpecialKey = false;
awesome its fixed tnx.

Ninja Changelog:
Updated Overlay with the new overlay
Added Sution HP setting

Hotkey Settings:
Cooldowns include Internal Release, Blood for Blood, Mug, and Dream within a Dream
Specialkey = Ninjutsu and Kassatsu
Specialkey1 = Juggulate
Specialkey2= Suiton
Specialkey3 = Dancing Edge

Ninja.cs goes into YourRaidingBuddy > Rotations > Jobs
NinjaSettings.cs goes into YourRaidingBuddy > Core > Settings > Jobs
OverlayControl.cs goes into YourRaidingBuddy > Core > Interface > Overlay
 

Attachments

Last edited:
thank you very much wolfrain and xcesius.

awesome addition. :) donated

ps; can i join discord? i am learning, altho very slowly, to trying to make a monk routine.
 
Can anyone guide me a little please?

I'm trying to make a very simple profile to learn. But, It does not use any spells.

Could anyone point me my mistake, and help me figure it some please?

thank you very much in advance.
 

Attachments

Added wolfrain62's latest ninja rotation files.
Added Krahandas's latest warrior rotation files
Added fakeangels3 Monk rotation. Added Monk into Behaviors.cs so that the rotation executes.

Also fakeangels3, I have pm'ed both you and wolfrain62 the discord server.
 
Is the progress bar on the front page still accurate? Judging by recent posts it looks like you're quite a bit further along :).
 
Back
Top