private static async Task <bool> EmergencyTacticsSuccor() { if (!ScholarSettings.Instance.EmergencyTactics || !ScholarSettings.Instance.EmergencyTacticsSuccor) { return(false); } if (MovementManager.IsMoving) { return(false); } if (!await Buff.EmergencyTactics()) { return(false); } while (Core.Me.HasAura(Auras.EmergencyTactics)) { // We did a movement check earlier, but the player may have started moving at this point // We don't want to waste the Emergency Tactics aura, so we wait until the player stops moving if (MovementManager.IsMoving) { await Coroutine.Yield(); } if (await Spells.Succor.Heal(Core.Me, false)) { return(true); } await Coroutine.Yield(); } return(false); }
public static async Task <bool> EmergencyTacticsSuccor() { if (!ScholarSettings.Instance.Succor || !ScholarSettings.Instance.EmergencyTactics || !ScholarSettings.Instance.EmergencyTacticsSuccor) { return(false); } if (Spells.EmergencyTactics.Cooldown != TimeSpan.Zero) { return(false); } var needSuccor = Group.CastableAlliesWithin15.Count(r => r.IsAlive && r.CurrentHealthPercent <= ScholarSettings.Instance.EmergencyTacticsSuccorHealthPercent) >= ScholarSettings.Instance.SuccorNeedHealing; if (!needSuccor) { return(false); } if (!await Buff.EmergencyTactics()) { return(false); } if (await Spells.Succor.Heal(Core.Me)) { return(await Coroutine.Wait(2500, () => Casting.LastSpell == Spells.Succor || MovementManager.IsMoving)); } return(false); }
public static async Task <bool> Succor() { if (!ScholarSettings.Instance.Succor) { return(false); } if (Casting.LastSpell == Spells.Indomitability) { return(false); } if (Casting.LastSpell == Spells.Succor) { return(false); } var needSuccor = Group.CastableAlliesWithin15.Count(r => r.IsAlive && r.CurrentHealthPercent <= ScholarSettings.Instance.SuccorHpPercent && !r.HasAura(Auras.Galvanize)) >= ScholarSettings.Instance.SuccorNeedHealing; if (!needSuccor) { return(false); } if (ScholarSettings.Instance.EmergencyTactics && ScholarSettings.Instance.EmergencyTacticsSuccor) { if (Group.CastableAlliesWithin15.Count(r => r.CurrentHealthPercent <= ScholarSettings.Instance.EmergencyTacticsSuccorHealthPercent) >= ScholarSettings.Instance.SuccorNeedHealing) { await Buff.EmergencyTactics(); } } if (await Spells.Succor.Heal(Core.Me)) { return(await Coroutine.Wait(4000, () => Casting.LastSpell == Spells.Succor || MovementManager.IsMoving)); } return(false); }
public static async Task <bool> Adloquium() { if (!ScholarSettings.Instance.Adloquium) { return(false); } if (Globals.InParty) { // If the lowest heal target is higher than Adloquium health, check to see if the user wants us to Galvanize the tank if (ScholarSettings.Instance.AdloquiumTankForBuff && Globals.HealTarget?.CurrentHealthPercent > ScholarSettings.Instance.AdloquiumHpPercent) { // Pick any tank who doesn't have Galvanize on them var tankAdloTarget = Group.CastableAlliesWithin30.FirstOrDefault(r => r.IsTank() && !r.HasAura(Auras.Galvanize)); if (tankAdloTarget == null) { return(false); } if (ScholarSettings.Instance.EmergencyTactics && ScholarSettings.Instance.EmergencyTacticsAdloquium && tankAdloTarget.CurrentHealthPercent <= ScholarSettings.Instance.EmergencyTacticsAdloquiumHealthPercent) { await Buff.EmergencyTactics(); } await UseRecitation(); return(await Spells.Adloquium.HealAura(tankAdloTarget, Auras.Galvanize, false)); } var adloTarget = Group.CastableAlliesWithin30.FirstOrDefault(CanAdlo); if (adloTarget == null) { return(false); } if (ScholarSettings.Instance.EmergencyTactics && ScholarSettings.Instance.EmergencyTacticsAdloquium && adloTarget.CurrentHealthPercent <= ScholarSettings.Instance.EmergencyTacticsAdloquiumHealthPercent) { await Buff.EmergencyTactics(); } await UseRecitation(); return(await Spells.Adloquium.HealAura(adloTarget, Auras.Galvanize)); bool CanAdlo(Character unit) { if (unit == null) { return(false); } if (unit.CurrentHealthPercent > ScholarSettings.Instance.AdloquiumHpPercent) { return(false); } if (unit.HasAura(Auras.Galvanize)) { return(false); } if (unit.HasAura(Auras.Exogitation)) { return(false); } if (!ScholarSettings.Instance.AdloquiumOnlyHealer && !ScholarSettings.Instance.AdloquiumOnlyTank) { return(true); } if (ScholarSettings.Instance.AdloquiumOnlyHealer && unit.IsHealer()) { return(true); } return(ScholarSettings.Instance.AdloquiumOnlyTank && unit.IsTank()); } } if (Core.Me.CurrentHealthPercent > ScholarSettings.Instance.AdloquiumHpPercent || Core.Me.HasAura(Auras.Galvanize)) { return(false); } if (ScholarSettings.Instance.EmergencyTactics && ScholarSettings.Instance.EmergencyTacticsAdloquium && Core.Me.CurrentHealthPercent <= ScholarSettings.Instance.EmergencyTacticsAdloquiumHealthPercent) { await Buff.EmergencyTactics(); } return(await Spells.Adloquium.HealAura(Core.Me, Auras.Galvanize)); async Task UseRecitation() { if (!ScholarSettings.Instance.Recitation) { return; } if (!ScholarSettings.Instance.RecitationWithAdlo) { return; } if (ScholarSettings.Instance.RecitationOnlyNoAetherflow && Core.Me.HasAetherflow()) { return; } if (!await Spells.Recitation.Cast(Core.Me)) { return; } if (!await Coroutine.Wait(1000, () => Core.Me.HasAura(Auras.Recitation))) { return; } await Coroutine.Wait(1000, () => ActionManager.CanCast(Spells.Adloquium.Id, Core.Me)); } }
public static async Task <bool> EmergencyTacticsAdloquium() { if (!ScholarSettings.Instance.Adloquium || !ScholarSettings.Instance.EmergencyTacticsAdloquium) { return(false); } if (Spells.EmergencyTactics.Cooldown != TimeSpan.Zero) { return(false); } if (Globals.InParty) { var adloTarget = Group.CastableAlliesWithin30.Where(CanAdlo).OrderBy(a => a.CurrentHealthPercent).FirstOrDefault(); if (adloTarget == null) { return(false); } if (!await Buff.EmergencyTactics()) { return(false); } return(await Spells.Adloquium.Heal(adloTarget, false)); } if (Core.Me.CurrentHealthPercent > ScholarSettings.Instance.EmergencyTacticsAdloquiumHealthPercent) { return(false); } if (!await Buff.EmergencyTactics()) { return(false); } return(await Spells.Adloquium.Heal(Core.Me, false)); bool CanAdlo(Character unit) { if (unit == null) { return(false); } if (unit.CurrentHealthPercent > ScholarSettings.Instance.EmergencyTacticsAdloquiumHealthPercent) { return(false); } if (unit.HasAura(Auras.Excogitation)) { return(false); } if (!ScholarSettings.Instance.AdloquiumOnlyHealer && !ScholarSettings.Instance.AdloquiumOnlyTank) { return(true); } if (ScholarSettings.Instance.AdloquiumOnlyHealer && unit.IsHealer()) { return(true); } return(ScholarSettings.Instance.AdloquiumOnlyTank && unit.IsTank()); } }