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

Thank you, Xcesius, this looks fantastic and your hard work on this is very much appreciated.

I have a question that I was hoping you could answer without much trouble. Since your posted guide uses Paladin for its example, I'll phrase my question in a way relevant to the Paladin job:

Is it possible for YourRaidingBuddy to determine if you have placed a specific debuff on an enemy, and then perform the next sequence of its routine based on that?

For example: Prior to the Heavensward expansion, Paladins only had 1 combo that consisted of 3 skills. Now that Heavensward has launched, Paladins have 3 possible combos, with skills that overlap between them. 2 of these 3 combos have finishers that leave a debuff on the mob (Rage of Hallone and Goring Blade). The 3 combos for Paladins in Heavensward are as follows:

Fast Blade -> Savage Blade -> Rage of Halone
Fast Blade -> Riot Blade -> Goring Blade
Fast Blade -> Savage Blade -> Royal Authority

Notice that they are what I call "branching" combos, meaning they all have their opener ability in common (Fast Blade), and 2 of the 3 combos have their 2nd action as the same skill (Savage Blade). Knowing this...

Can YourRaidingBuddy support the following logic?
1) Use the Rage of Halone combo if the debuff from Rage of Halone is not present on the currently targeted enemy
2) Use the Goring Blade combo if the Rage of Halone debuff is present on the currently targeted enemy but the Goring Blade debuff is not
3) Use the Royal Authority combo if both the Rage of Halone and Goring Blade debuffs are present on the currently targeted enemy

Also, are cross-class skills currently supported? (i.e. Can a Paladin routine include Mercy Stroke)?

Thank you again for this combat routine as well as the guide!

Hi Eminence,

Valid points.

1) You can easily check the debuff on the target by using Me.CurrentTarget.HasAura("name") or by using ID. So yes
2) Yes
3) Yes

I'll see if I can add in those later today so you can see how I did it.

You can easily add your own cross-class skills as long as they popup in the Action Manager.

I'm having some issues, every time I change the Behavios.cs file, and make a new warrior.cs file. once and a while the whole trunk disappears after saving my work. anyone know the reasoning behind this? I had to backup the trunk and save my created files somewhere else because it keeps erasing everything? Guess ill do a scan of my computer for any viruses

Hi stewiethecat,

Please update to latest ! Thanks

I forgot to remove my auto-updater. I will fix the auto-updater in a later point for the new svn address
 
Hi Eminence,

Valid points.

1) You can easily check the debuff on the target by using Me.CurrentTarget.HasAura("name") or by using ID. So yes
2) Yes
3) Yes

I'll see if I can add in those later today so you can see how I did it.

You can easily add your own cross-class skills as long as they popup in the Action Manager.

Perfect! Thank you very much for the help.
 
I am trying to figure out how hotkeymode works. I added something like this

Code:
        public static async Task<bool> HotkeyMode()
        {
            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"));
            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);
            return false;
                return false;
            // if (VariableBook.HkmMultiTarget) await WarriorAoE();
            return await WarriorRotation();
        }

I have been able to figure out that when Hotkeymode is selected it will do this rotation, but what I cant figure out is how to toggle through Hotkeymode and normal rotation. If that makes any sense. I have tried messing with the settings and i can't figure it out
 
I get that, I think i may have used hotkeymode for the wrong thing. What i am trying to do is activate certain rotations when i press a button. I think that is where i got messed up. So i want to do my normal rotation, and be able to press a button and do another rotation. Is this possible within your gui?

I see an option to keybind a secondary rotation. How can I code in a secondary rotation

Here is an example of what i am talking about from an old routine from exmortem I used to use.

Code:
        protected override Composite CreateCombat()
        {
            return new PrioritySelector(
                new Decorator(ret => { 


                    if (KeyboardPolling.IsKeyDown(System.Windows.Forms.Keys.LShiftKey))
                        return true;


                    return false;
                
                }, new PrioritySelector(
                    Cast("Butcher's Block", r => Actionmanager.LastSpell.Name == "Skull Sunder", r => Core.Player.CurrentTarget),
                    Cast("Skull Sunder", r => Actionmanager.LastSpell.Name == "Heavy Swing", r => Core.Player.CurrentTarget),
                    Cast("Heavy Swing", r => true, r => Core.Player.CurrentTarget)                  
                    )),


                new Decorator(ret => { 


                    if (KeyboardPolling.IsKeyDown(System.Windows.Forms.Keys.LControlKey))
                        return true;


                    return false;
                
                }, new PrioritySelector(
                    Apply("Fracture"),
                    Cast("Storm's Eye", r => !Core.Player.CurrentTarget.HasAura("Storm's Eye", true, msLeft:3000) && Actionmanager.LastSpell.Name == "Maim", r => Core.Player.CurrentTarget),
                    Cast("Storm's Path", r => !Core.Player.CurrentTarget.HasAura("Storm's Path", true, msLeft:3000) && Actionmanager.LastSpell.Name == "Maim", r => Core.Player.CurrentTarget),
                    Cast("Maim", r => Actionmanager.LastSpell.Name == "Heavy Swing", r => Core.Player.CurrentTarget),
                    Cast("Heavy Swing", r => true, r => Core.Player.CurrentTarget)
                    )),
 
Last edited:

Hi stewiethecat,

You are looking for Managers.HotkeyManager.IsKeyDown, it's already there. However, this will only apply when you're holding down the key, I'll see if I can create the guide of creating real proper keys soon.
 
Hi Eminence,

On latest update I've added the rotation you've asked for. Please test it out and let me know!

Xcesius,

The Paladin rotation is working perfectly - thank you!

Please note, however, that when I made my original post, in order to keep things simple I referred to the Rage of Halone debuff as "Rage of Halone debuff." It's actually called "Strength Down." I didn't want to create any confusion since I was explaining rotations with multiple abilities so I simply referred to the debuff with the name of the ability that applies it.

I changed the debuff name in your latest update (which I've copied below) and everything is golden.
Code:
            await Spell.CastSpell("Royal Authority", () => Actionmanager.LastSpell.Name == "Savage Blade" && Me.CurrentTarget.HasAura("Strength Down") && Me.CurrentTarget.HasAura("Goring Blade"));
            await Spell.CastSpell("Rage of Halone", () => Actionmanager.LastSpell.Name == "Savage Blade" && !Me.CurrentTarget.HasAura("Strength Down"));
            await Spell.CastSpell("Goring Blade", () => Actionmanager.LastSpell.Name == "Riot Blade" && Me.CurrentTarget.HasAura("Strength Down") && !Me.CurrentTarget.HasAura("Goring Blade"));
            await Spell.CastSpell("Savage Blade", () => Actionmanager.LastSpell.Name == "Fast Blade" && !Me.CurrentTarget.HasAura("Strength Down"));
            await Spell.CastSpell("Savage Blade", () => Actionmanager.LastSpell.Name == "Fast Blade" && Me.CurrentTarget.HasAura("Strength Down") && Me.CurrentTarget.HasAura("Goring Blade"));
            await Spell.CastSpell("Riot Blade", () => Me.CurrentTarget.HasAura("Strength Down") && Actionmanager.LastSpell.Name == "Fast Blade");
            await Spell.CastSpell("Fast Blade", () => true);
            return false;

Also: Royal Authority is a level 60 skill, so I'm not sure how this routine would run for Paladins not yet level 60.
 
Xcesius,

The Paladin rotation is working perfectly - thank you!

Please note, however, that when I made my original post, in order to keep things simple I referred to the Rage of Halone debuff as "Rage of Halone debuff." It's actually called "Strength Down." I didn't want to create any confusion since I was explaining rotations with multiple abilities so I simply referred to the debuff with the name of the ability that applies it.

I changed the debuff name in your latest update (which I've copied below) and everything is golden.
Code:
            await Spell.CastSpell("Royal Authority", () => Actionmanager.LastSpell.Name == "Savage Blade" && Me.CurrentTarget.HasAura("Strength Down") && Me.CurrentTarget.HasAura("Goring Blade"));
            await Spell.CastSpell("Rage of Halone", () => Actionmanager.LastSpell.Name == "Savage Blade" && !Me.CurrentTarget.HasAura("Strength Down"));
            await Spell.CastSpell("Goring Blade", () => Actionmanager.LastSpell.Name == "Riot Blade" && Me.CurrentTarget.HasAura("Strength Down") && !Me.CurrentTarget.HasAura("Goring Blade"));
            await Spell.CastSpell("Savage Blade", () => Actionmanager.LastSpell.Name == "Fast Blade" && !Me.CurrentTarget.HasAura("Strength Down"));
            await Spell.CastSpell("Savage Blade", () => Actionmanager.LastSpell.Name == "Fast Blade" && Me.CurrentTarget.HasAura("Strength Down") && Me.CurrentTarget.HasAura("Goring Blade"));
            await Spell.CastSpell("Riot Blade", () => Me.CurrentTarget.HasAura("Strength Down") && Actionmanager.LastSpell.Name == "Fast Blade");
            await Spell.CastSpell("Fast Blade", () => true);
            return false;

Also: Royal Authority is a level 60 skill, so I'm not sure how this routine would run for Paladins not yet level 60.

Hi Eminence,

Thank you !
 
I seem to be getting the following error message in my RB log. Sometimes it's right when I click start, others it's after I've been playing with the routine for a little while. I've disabled all plugins just to ensure that there were not conflicts.

[03:03:08.012 N] Bot Thread Started.
[03:03:08.018 N] Starting Combat Assist
[03:03:10.137 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 d:\Programs\RebornbuddyBETA 1.0.25.0\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 d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\HealingManager.cs:line 52
at YourRaidingBuddy.HealTargetingProvider.GetObjectsByWeight() in d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\HealingManager.cs:line 46
at ff14bot.NeoProfiles.Targeting.Pulse()
at YourRaidingBuddy.Root.OnPulse() in d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\Root.cs:line 50
at YourRaidingBuddy.Root.Pulse() in d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\Root.cs:line 75
at ff14bot.Behavior.Pulsator.Pulse(PulseFlags CurrentPulseFlags)
at ff14bot.TreeRoot.()
[03:03:33.297 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 d:\Programs\RebornbuddyBETA 1.0.25.0\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 d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\HealingManager.cs:line 52
at YourRaidingBuddy.HealTargetingProvider.GetObjectsByWeight() in d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\HealingManager.cs:line 46
at ff14bot.NeoProfiles.Targeting.Pulse()
at YourRaidingBuddy.Root.OnPulse() in d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\Root.cs:line 50
at YourRaidingBuddy.Root.Pulse() in d:\Programs\RebornbuddyBETA 1.0.25.0\Routines\YourRaidingBuddy\Root.cs:line 75
at ff14bot.Behavior.Pulsator.Pulse(PulseFlags CurrentPulseFlags)
at ff14bot.TreeRoot.()

Class is set to Paladin. Sometimes the routine will continue to function even after the error is received. Other times it won't and RB must be restarted.

Aside from this error everything is great.
 
I seem to be getting the following error message in my RB log. Sometimes it's right when I click start, others it's after I've been playing with the routine for a little while. I've disabled all plugins just to ensure that there were not conflicts.



Class is set to Paladin. Sometimes the routine will continue to function even after the error is received. Other times it won't and RB must be restarted.

Aside from this error everything is great.

Hi Eminence,

That's something I forgot to disable for Healing testing, I'll disable it when I wake up. Thanks!
 
Same error as Eminence - I was so g'd up to see it in action. Oh well, sleep well raidingbuddy prince :p
 
Trying to edit the default ninja routine.

1. I added Dream Within a Dream and Armor Crush. These work how I want them. However no matter how simple I make the condition the spell Duality it never works. Xcesius if you can help me out with this that would be awesome. The condition i am looking for is pretty much to use it right before Aeolian Edge is casted so it buffs it. This is what I currently have.
Code:
await Spell.CastSpell("Duality", () => Actionmanager.LastSpell.Name == "Gust Slash" && !Me.CurrentTarget.HasAura("Dancing Edge") || !Me.CurrentTarget.HasAura("Storm's Eye") && !Core.Me.HasAura("Huton", true, 26000));

2. Does changing the UI settings for ninja not work? I set the Rogue Opener Order to Dancing Edge / Shadow Fang / Mutilate but it always casts Shadow Fang / Mutilate / Dancing Edge

3. How do I turn off Kassatsu? I would like to cast it manually. I tried deleting the spell from the routine but then the routine would not load.

4. What exactly does the ! mark mean. What is the difference between
Code:
!Me.CurrentTarget.HasAura(AuraBook.Mutilate)
and
Me.CurrentTarget.HasAura(AuraBook.Mutilate)
 
Last edited:
Same error as Eminence - I was so g'd up to see it in action. Oh well, sleep well raidingbuddy prince :p

Hi tichy,

The error should be fixed soon. I'll post a reply when

Trying to edit the default ninja routine.

1. I added Dream Within a Dream and Armor Crush. These work how I want them. However no matter how simple I make the condition the spell Duality it never works. Xcesius if you can help me out with this that would be awesome. The condition i am looking for is pretty much to use it right before Aeolian Edge is casted so it buffs it. This is what I currently have.
Code:
await Spell.CastSpell("Duality", () => Actionmanager.LastSpell.Name == "Gust Slash" && !Me.CurrentTarget.HasAura("Dancing Edge") || !Me.CurrentTarget.HasAura("Storm's Eye") && !Core.Me.HasAura("Huton", true, 26000));

2. Does changing the UI settings for ninja not work? I set the Rogue Opener Order to Dancing Edge / Shadow Fang / Mutilate but it always casts Shadow Fang / Mutilate / Dancing Edge

3. How do I turn off Kassatsu? I would like to cast it manually. I tried deleting the spell from the routine but then the routine would not load.

4. What exactly does the ! mark mean. What is the difference between
Code:
!Me.CurrentTarget.HasAura(AuraBook.Mutilate)
and
Me.CurrentTarget.HasAura(AuraBook.Mutilate)

Hi wolfrain62, wow lot's of questions.

1) are they are debuff or a buff?
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
3) I'll add a setting for Kassatsu soon.
4) without the "!" it means it will only return true when the target has Mutilate, with "!" it will only return true when the target DOESN'T have the debuff Mutilate.

Is there a way to do
Combo 1 > Combo 2 > Combo 3 then apply dots?

Hi heinzskies,

Please look into Ninja or Paladin for examples of this.
 
New version is up ::


  • Resolved an issue with HealTargetting pulsing when non-healing class. Restricted this to White-Mage only for now
  • Added a setting for Kassatsu in Ninja
 
Back
Top