Am I doing something wrong? I just got a DRK and I have the overlay on and my char does nothing and it says everything is disable and I have no clue what to do... ?
I will definitely donate to a working raiding CR. =) As I've mentioned on the forums before, RBuddy has been a godsend for me as a working man with kids. Bot does all the stuff I hate or don't have time for and I get to enjoy the fun stuff. Would totally love a raiding CR to help me keep up with my friends who play full time.
hey I'm kinda new to tanking class, starting off with a dark knight, I want to ask which settings do I choose in this CR (or combine with Mud assist) in order to just like let my dark knight keep aggro on every mobs in dungeon? I'm sorry if this is a stupid question but I never play a tank before T_T
Enyo FTW Enyo would be amazing if ported. This would open up a whole new world of possibilities for combat routines.
thanks for the hard work man but after the last update YourBuddy didnt work for me i dont know why but i like your CR i tryed new and clean install but still the same no Yourbuddy window on CR choice
yrb doesn't work because xcesius' whole trunk loaded into the folder. all you have to do is go into YRB folder and remove the honorbuddy folder that was uploaded inside. Should work after that
Thanks you, I was pulling the whole repository when I'm trying to update something since the beginning lol.
Checkout from https://subversion.assembla.com/svn/...rRaidingBuddy, revision HEAD, Fully recursive, Externals included Unexpected HTTP status 405 'Method Not Allowed' on '/svn/...rRaidingBuddy' Additional errors: PROPFIND request on '/svn/...rRaidingBuddy' failed: 405 Method Not Allowed
You'll need to either click on the link and copy it out of the address bar, or right click and save/copy the address. As of right now, you literally copied the ... as part of the address rather than having the full address.
Is it possible to add options to the overlay, such as display which hotkey/rotation is active? I enjoy using this with my warrior, but it would be nice if toggling a rotation would happen as soon as you hit another hotkey instead of toggling it off first before going to a different one (ex. switching from HK1 emnity combo to HK2 DPS combo doesn't require hitting HK1 first to toggle off before toggling HK2.) A thank you to everyone so far that has contributed to this great combat assist routine!
Been trying to use the Summoner profile and I notice that it won't attack outside of melee range. Seems to have the same problem when you switch to Bard. Is there a setting somewhere that we can change to allow max spell range?
Seconding this. Adding DA Carve & Spit & Dark Passenger to the DPS single-target rotation and incorporating Abyssal Drain (for HP restoration)/Dark Passenger for large AoE trash pulls would be nice!
DA + Carve & Spit for DPS should be use for single target and Carve & Split should be use for AoE targetting in the next version. Can anyone confirm as soon as possible if DP is an DPS increase? Else it won't make it into the next version.
I've been keeping an eye on this topic https://www.reddit.com/r/ffxiv/comments/3ghg9f/i_am_currently_writing_a_drk_guide_and_i_want_to/, there is some input in the comments section. The guide will probably be ready for the following version after your next one.
Try this Code: // By HeinzSkies using System; using System.Reflection; using System.Threading.Tasks; using System.Windows.Forms; using ff14bot; using ff14bot.Enums; using ff14bot.Helpers; 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 DarkKnight : Root { private static LocalPlayer Me { get { return Core.Player; } } public override ClassJobType[] Class { get { return new[] { ClassJobType.DarkKnight }; } } public static SettingsG GeneralSettings { get { return InternalSettings.Instance.General; } } public static DarkKnightSetting DarkKnightSettings { get { return InternalSettings.Instance.DarkKnight; } } public override void OnInitialize() { } public static async Task<bool> AutoMode() { if (Unit.ExceptionCheck()) return true; Unit.UpdatePriorities(0, 5); return await AutoRotation(); } public static async Task<bool> HotkeyMode() { if (Unit.ExceptionCheck()) return true; Unit.UpdatePriorities(0, 5); return await HotkeyRotation(); } private static async Task<bool> AutoRotation() { if (await Darkside()) return true; if (!IsEnmityKeyDown() && await Aoe(false)) return true; if (await DotRotation()) return true; if (await FinishedRotation()) return true; if (IsEnmityKeyDown()) { if (await EnmityRotation()) return true; } else { if (await DpsRotation()) return true; } if (GeneralSettings.Cooldowns == CooldownUse.Always) { if (await OffGcdRotation()) return true; if (await MpGeneratorRotation()) return true; } return false; } private static async Task<bool> HotkeyRotation() { if (await Darkside()) return true; if (VariableBook.HkmMultiTarget) { if (!IsEnmityKeyDown() && await Aoe(true)) return true; } if (await DotRotation()) return true; if (await FinishedRotation()) return true; if (IsEnmityKeyDown()) { if (await EnmityRotation()) return true; } else { if (await DpsRotation()) return true; } if (VariableBook.HkmCooldowns) { if (await OffGcdRotation()) return true; if (await MpGeneratorRotation()) return true; } return false; } private static bool IsEnmityKeyDown() { return HotkeyManager.IsKeyDown(Keys.LShiftKey); } private static async Task<bool> Darkside() { return await Spell.NoneGcdCast("Darkside", Me, () => DarkKnightSettings.UseDarkside && !Me.HasAura("Darkside") && Me.CurrentManaPercent > DarkKnightSettings.DarksideMpPercentage); } private static async Task<bool> DpsRotation() { if (await Spell.CastSpell("Syphon Strike", () => Actionmanager.LastSpell.Name == "Hard Slash")) return true; if (await Spell.CastSpell("Hard Slash", () => true)) return true; return false; } // We always want to finished out combo. private static async Task<bool> FinishedRotation() { await DarkArts(); if ( await Spell.CastSpell("Souleater", () => Actionmanager.LastSpell.Name == "Syphon Strike" && ((!ShouldApplyDelirium() && (Me.CurrentHealthPercent < DarkKnightSettings.SouleaterHpPercentage && Me.HasAura("Grit"))) || Me.HasAura("Dark Arts")))) return true; if ( await Spell.ApplyCast("Delirium", Me.CurrentTarget, () => Actionmanager.LastSpell.Name == "Syphon Strike")) return true; return await Spell.CastSpell("Power Slash", () => Actionmanager.LastSpell.Name == "Spinning Slash"); } private static async Task<bool> DarkArts() { if (!DarkKnightSettings.UseDarkArts) return false; await Spell.NoneGcdCast("Dark Arts", Me, () => Actionmanager.LastSpell.Name == "Syphon Strike" && Me.CurrentManaPercent > DarkKnightSettings.DarkArtsSouleaterHpPercentage && !ShouldApplyDelirium() && !Me.HasAura("Dark Arts")); await Spell.NoneGcdCast("Dark Arts", Me, () => Actionmanager.LastSpell.Name == "Spinning Slash" && Me.CurrentManaPercent > DarkKnightSettings.DarkArtsPowerSlashHpPercentage && !Me.HasAura("Dark Arts")); return false; } private static bool ShouldApplyDelirium() { return !Me.CurrentTarget.HasAura("Delirium", false, 4000) && !Me.CurrentTarget.HasAura("Dragon Kick") && Me.ClassLevel >= 50 && DarkKnightSettings.UseDelirium; } private static async Task<bool> Aoe(bool force) { if (!force && !GeneralSettings.Aoe) return false; return await Spell.CastSpell("Unleash", Me, () => ((Me.CurrentManaPercent > 50 && ShouldAoe()) || Me.HasAura("Enhanced Unleash") || force)); } private static bool ShouldAoe() { return VariableBook.HostileUnitsCount >= GeneralSettings.AoeCount; } private static async Task<bool> DotRotation() { if (await Spell.ApplyCast("Scourge", Me.CurrentTarget, () => !Me.CurrentTarget.HasAura("Scourge", true, 4000) && Actionmanager.LastSpell.Name != "Syphon Strike" && Actionmanager.LastSpell.Name != "Hard Slash" && Actionmanager.LastSpell.Name != "Spinning Slash" && (Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealth > 3000))) return true; return false; } // Currently without a way to detect enmity, we will use hotkey to trigger this. private static async Task<bool> EnmityRotation() { if (await Spell.CastSpell("Spinning Slash", () => Actionmanager.LastSpell.Name == "Hard Slash")) return true; if (await Spell.CastSpell("Hard Slash", () => true)) return true; return false; } private static bool TargetIsNear() { return Me.CurrentTarget.Distance(Me) - Me.CurrentTarget.CombatReach < 3; } private static async Task<bool> OffGcdRotation() { // Defensive that keeps you from dying await Spell.NoneGcdCast("Convalescence", Me, () => DarkKnightSettings.UseConvalescence && Me.CurrentHealthPercent < DarkKnightSettings.ConvalescenceHpPercentage && UnitIsTargettingMe()); await Spell.NoneGcdCast("Shadow Wall", Me, () => DarkKnightSettings.UseShadowWall && Me.CurrentHealthPercent < DarkKnightSettings.ShadowWallHpPercentage && UnitIsTargettingMe()); await Spell.NoneGcdCast("Shadowskin", Me, () => DarkKnightSettings.UseShadowskin && Me.CurrentHealthPercent < DarkKnightSettings.ShadowskinHpPercentage && UnitIsTargettingMe()); await Spell.NoneGcdCast("Dark Mind", Me, () => DarkKnightSettings.UseDarkMind && Me.CurrentHealthPercent < DarkKnightSettings.DarkMindHpPercentage && UnitIsTargettingMe()); // Offensive by DPS await Spell.NoneGcdCast("Reprisal", Me.CurrentTarget, () => DarkKnightSettings.UseReprisal); await Spell.NoneGcdCast("Mercy Stroke", Me.CurrentTarget, () => DarkKnightSettings.UseMercyStroke && (Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealthPercent <= 20)); await Spell.NoneGcdCast("Low Blow", Me.CurrentTarget, () => DarkKnightSettings.UseLowBlow); if (DarkKnightSettings.UseCarveAndSpit && DarkKnightSettings.UseDarkArts && !ShouldAoe()) { await Spell.NoneGcdCast("Dark Arts", Me, () => !Me.HasAura("Dark Arts") && Actionmanager.LastSpell.Name != "Syphon Strike" && Actionmanager.LastSpell.Name != "Spinning Slash" && Actionmanager.CanCast("Carve and Spit", Me.CurrentTarget)); await Spell.NoneGcdCast("Carve and Spit", Me.CurrentTarget, () => Me.HasAura("Dark Arts") && Actionmanager.LastSpell.Name != "Syphon Strike" && Actionmanager.LastSpell.Name != "Spinning Slash"); } else if (DarkKnightSettings.UseCarveAndSpit) { await Spell.NoneGcdCast("Carve and Spit", Me.CurrentTarget, () => (!Me.HasAura("Dark Arts") && Actionmanager.LastSpell.Name != "Syphon Strike" && Actionmanager.LastSpell.Name != "Spinning Slash" && Me.CurrentManaPercent < 50)); } await Spell.NoneGcdCast("Dark Passenger", Me.CurrentTarget, () => (!Me.HasAura("Dark Arts") && Actionmanager.LastSpell.Name != "Syphon Strike" && Actionmanager.LastSpell.Name != "Spinning Slash")); await Spell.CastLocation("Salted Earth", Me.CurrentTarget, () => DarkKnightSettings.UseSaltedEarth && TargetIsNear()); // Defensive await Spell.NoneGcdCast("Bloodbath", Me, () => DarkKnightSettings.UseBloodbath && TargetIsNear() && Me.CurrentHealthPercent < DarkKnightSettings.BloodbathHpPercentage); await Spell.NoneGcdCast("Dark Dance", Me, () => DarkKnightSettings.UseDarkDance && Me.CurrentHealthPercent < DarkKnightSettings.DarkDanceHpPercentage && UnitIsTargettingMe()); await Spell.NoneGcdCast("Foresight", Me, () => DarkKnightSettings.UseForesight && Me.CurrentHealthPercent < DarkKnightSettings.ForesightHpPercentage && UnitIsTargettingMe()); return false; } private static async Task<bool> MpGeneratorRotation() { await Spell.NoneGcdCast("Blood Weapon", Me, () => DarkKnightSettings.UseBloodWeapon && Me.CurrentManaPercent < DarkKnightSettings.BloodWeaponManaPercentage && TargetIsNear()); await Spell.NoneGcdCast("Blood Price", Me, () => DarkKnightSettings.UseBloodPrice && Me.CurrentManaPercent < DarkKnightSettings.BloodPriceManaPercentage && UnitIsTargettingMe()); await Spell.NoneGcdCast("Sole Survivor", Me.CurrentTarget, () => DarkKnightSettings.UseSoleSurvivor && (Me.CurrentManaPercent < DarkKnightSettings.SoleSurvivorManaPercentage || Me.CurrentHealthPercent < DarkKnightSettings.SoleSurvivorHpPercentage) && (Me.CurrentTarget != null && Me.CurrentTarget.CurrentHealth < 5000)); return false; } private static bool UnitIsTargettingMe() { return VariableBook.HostileUnitsTargettingMeCount > 0; } } }
Thanks, I will give this a go later when I get home and let you know how it works out! update: Ran this routine through Alex 2 and Fractal Continuum: parsed at #3 for DPS in Alex 2 with Grit on the whole time and fending accessories; #1 in DPS at 735.23 in Fractal against the final boss with full slayer accessories and Grit turned off for the last half of the fight. Still using a law weapon, can't wait to get my hands on an esoteric!
Trying to make the Overlay menu more pleasant to the eye. Also, because text background is transparent, it is very hard to click the buttons as you have to exactly click on the font. So I made backgrounds not transparent. What do you think about this: View attachment Overlay.cs View attachment Overlay.Designer.cs Anyone knows: 1) How to make overlay displayed as soon as the routine starts, instead of being hidden as default 2) How to code so that overlay gets hidden if FFXIV window or RebornBuddy window aren't in focus? 3) Add a toggle in menu settings to choose between transparent and non transparent overlay button backgrounds (I might be able to figure this one out by myself) Thanks