private static async Task <bool> Regen() { if (!MikotoSettingsModel.Instance.UseRegen || !Me.InCombat) { return(false); } var target = HealManager.FirstOrDefault(hm => (!hm.HasAura(Auras.Regen) && hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.RegenHpPct) || (!hm.HasAura(Auras.Regen, true, 4000) && hm.InCombat && ((hm.IsTank() && MikotoSettingsModel.Instance.KeepRegenOnTanks) || (hm.IsHealer() && MikotoSettingsModel.Instance.KeepRegenOnHealers) || (hm.IsDps() && MikotoSettingsModel.Instance.KeepRegenOnDps)))); if (target == null) { return(false); } if (target.IsTank() && MikotoSettingsModel.Instance.RegenTanks) { return(await Spells.Regen.CastBuff(target, true, Auras.Regen)); } if (target.IsHealer() && MikotoSettingsModel.Instance.RegenHealers) { return(await Spells.Regen.CastBuff(target, true, Auras.Regen)); } if (target.IsDps() && MikotoSettingsModel.Instance.RegenDps) { return(await Spells.Regen.CastBuff(target, true, Auras.Regen)); } return(false); }
private static async Task <bool> Protect() { if (!SuritoSettingsModel.Instance.UseProtect) { return(false); } if (PartyManager.IsInParty) { if (CombatHelper.LastSpell == Spells.Protect || ActionManager.LastSpell == Spells.Protect || !SuritoSettingsModel.Instance.UseProtectInCombat && PartyMembers.Any(pm => pm.InCombat) || PartyMembers.Any(pm => pm.Icon == PlayerIcon.Viewing_Cutscene) || HealManager.All(hm => hm.HasAura(Auras.Protect)) || HealManager.Any(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.PhysickHpPct || hm.IsDead)) { return(false); } } var target = HealManager.FirstOrDefault(hm => !hm.HasAura(Auras.Protect)); if (target == null) { return(false); } return(await Spells.Protect.CastBuff(target, CombatHelper.LastSpell != Spells.Protect, Auras.Protect)); }
private static async Task <bool> Adloquium() { if (!SuritoSettingsModel.Instance.UseAdloquium) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.AdloquiumHpPct && !hm.HasAura(Auras.Adloquium) && ((Me.HasAura(Auras.EmergencyTactics) && !SuritoSettingsModel.Instance.UseEmergencyTacticsOnTankOnly) || !SuritoSettingsModel.Instance.UseAdloquiumOnTankOnly || hm.IsTank())); if (target == null && SuritoSettingsModel.Instance.UseDelpoymentTacticsOnBothBuffsOnly) { target = HealManager.FirstOrDefault(hm => hm.HasAura(Auras.EyeforanEye)); } if (target != null) { if (target.HasAura(Auras.Adloquium) && !Me.HasAura(Auras.EmergencyTactics)) { return(false); } return(await Spells.Adloquium.Use(target, true, true)); } return(false); }
private static async Task <bool> ExProvoke() { if (Target == null || !Target.CanAttack || !BeatrixSettingsModel.Instance.UseProvoke || CombatHelper.LastSpell == Spells.Flash) { return(false); } if (!PartyManager.IsInParty) { return(false); } if (BeatrixSettingsModel.Instance.MainTank) { if (GameObjectManager.Attackers.Count(r => r.Distance(Me) <= 5 && r.TargetGameObject == HealManager.FirstOrDefault(hm => hm.BeingTargeted() && !hm.IsMe) && (!r.TargetGameObject.HasAura(Auras.ShieldOath) && !r.TargetGameObject.HasAura(Auras.Defiance) && !r.TargetGameObject.HasAura(Auras.Grit))) > 1) { if (await Ultimatum()) { Logger.BeatrixLog(@"====> Ultimatum used to regain Aggro"); FlashCount = 0; } } var provokeTarget = GameObjectManager.Attackers.FirstOrDefault(r => r.Distance(Me) <= 25 && r.TargetGameObject == HealManager.FirstOrDefault(hm => hm.BeingTargeted() && !hm.IsMe) && (!r.TargetGameObject.HasAura(Auras.ShieldOath) && !r.TargetGameObject.HasAura(Auras.Defiance) && !r.TargetGameObject.HasAura(Auras.Grit))); if (provokeTarget != null) { if (await Spells.Provoke.Use(provokeTarget, true)) { Logger.BeatrixLog(@"====> Provoking {0} to Pull Aggro From {1}", provokeTarget.Name, provokeTarget.TargetGameObject.Name); if (provokeTarget?.Distance(Me) > 5 && BeatrixSettingsModel.Instance.UseShieldLob) { Logger.BeatrixLog(@"====> Sheild Lobbing {0} to Pull Aggro From {1}", provokeTarget.Name, provokeTarget.TargetGameObject.Name); return(await Spells.ShieldLob.Use(provokeTarget, true)); } return(true); } } } if (!BeatrixSettingsModel.Instance.MainTank) { var OtherTank = HealManager.FirstOrDefault(hm => hm.IsTank() && !hm.IsMe); if (OtherTank == null) { return(false); } if (await Shirk(OtherTank)) { Logger.BeatrixLog(@"====> Shirking Aggro from {0} to Main Tank, {1}", Target.Name, OtherTank.SafeName()); return(true); } } return(false); }
private static async Task <bool> SacredSoil() { if (!SuritoSettingsModel.Instance.UseSacredSoil || ActionResourceManager.Arcanist.Aetherflow.Equals(0)) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.SacredSoilHpPct && HealManager.Count(hm2 => hm2.CurrentHealthPercent <= SuritoSettingsModel.Instance.SacredSoilHpPct && hm2.Distance2D(hm) <= 8) >= SuritoSettingsModel.Instance.SacredSoilPlayerCount); return(await Spells.SacredSoil.Use(target, true, true)); }
private static async Task <bool> Asylum() { if (!MikotoSettingsModel.Instance.UseAsylum) { return(false); } var target = HealManager.FirstOrDefault(pm1 => HealManager.Count(pm2 => pm2.CurrentHealthPercent <= MikotoSettingsModel.Instance.AsylumHpPct) >= MikotoSettingsModel.Instance.AsylumPlayerCount); if (target != null) { return(await Spells.Asylum.Use(target, target.AlliesInRange(6) >= MikotoSettingsModel.Instance.AsylumPlayerCount)); } return(false); }
private static async Task <bool> CureIII() { if (!MikotoSettingsModel.Instance.UseCure3) { return(false); } var target = HealManager.FirstOrDefault(pm1 => HealManager.Count(pm2 => pm1.Distance(pm2) <= 6 && pm2.CurrentHealthPercent <= MikotoSettingsModel.Instance.Cure3HpPct) >= MikotoSettingsModel.Instance.Cure3PlayerCount); if (target != null) { return(await Spells.CureIII.Use(target, true, true)); } return(false); }
private static async Task <bool> Rouse() { if (!SuritoSettingsModel.Instance.UseRouse) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.RouseHpPct && (hm.IsTank() || !SuritoSettingsModel.Instance.UseRouseTankOnly)); if (target != null) { return(await Spells.Rouse.Use(Me, true)); } return(false); }
internal static BattleCharacter HealTarget() { switch (MainSettingsModel.Instance.CurrentRoutine) { case "Mikoto": return(HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.CureHpPct)); case "Remiel": return(HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= RemielSettingsModel.Instance.BeneficHpPct)); case "Surito": return(HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.PhysickHpPct)); } return(null); }
private static async Task <bool> Physick() { if (!SuritoSettingsModel.Instance.UsePhysick) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.PhysickHpPct); if (target != null) { return(await Spells.Physick.Use(target, true, true)); } return(false); }
private static async Task <bool> Lustrate() { if (!SuritoSettingsModel.Instance.UseLustrate || ActionResourceManager.Arcanist.Aetherflow.Equals(0)) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.LustrateHpPct); if (target != null && (target.IsTank() || SuritoSettingsModel.Instance.UseLustrateOnTankOnly)) { return(await Spells.Lustrate.Use(target, true)); } return(false); }
private static async Task <bool> DivineBenison() { if (!MikotoSettingsModel.Instance.UseDivineBenison) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.DivineBenisonHpPct); if (target != null) { return(await Spells.DivineBenison.Use(target, true)); } return(false); }
private static async Task <bool> Tetragrammaton() { if (!MikotoSettingsModel.Instance.UseTetragrammaton) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.TetragrammatonHpPct); if (target != null && (target.IsTank() || !MikotoSettingsModel.Instance.UseTetragrammatonOnTankOnly)) { return(await Spells.Tetragrammaton.Use(target, true)); } return(false); }
private static async Task <bool> Excogitation() { if (!SuritoSettingsModel.Instance.UseExcogitation || ActionResourceManager.Arcanist.Aetherflow.Equals(0)) { return(false); } var target = HealManager.FirstOrDefault(hm => !hm.IsMe && hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.ExcogitationHpPct && (hm.IsTank() || !SuritoSettingsModel.Instance.UseExcogitationOnTankOnly)); if (target == null) { return(false); } return(await Spells.Excogitation.CastBuff(target, true, Auras.Excogitation)); }
private static async Task <bool> EyeForAnEye() { if (!SuritoSettingsModel.Instance.UseEyeforanEye) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.IsTank() && (!SuritoSettingsModel.Instance.UseEyeforanEyeOnlyAfterAdloquium || hm.HasAura(Auras.Adloquium, true))); if (target == null) { target = HealManager.FirstOrDefault(hm => !hm.IsMe && (!SuritoSettingsModel.Instance.UseEyeforanEyeOnlyAfterAdloquium || hm.HasAura(Auras.Adloquium, true))); } if (target != null) { return(await Spells.EyeforanEye.Use(target, !target.HasAura(Auras.EyeforanEye))); } return(false); }
private static async Task <bool> CureII() { if (!MikotoSettingsModel.Instance.UseCure2) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.Cure2HpPct); if (Me.HasAura(Auras.Freecure)) { target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent < (MikotoSettingsModel.Instance.CureHpPct)); } if (target != null) { return(await Spells.CureII.Use(target, true, true)); } return(false); }
private static async Task <bool> Cure() { var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.CureHpPct); if (target == null) { return(false); } if (target.IsTank()) { if (MikotoSettingsModel.Instance.RegenCureFloorTanks && target.HasAura(Auras.Regen) && target.CurrentHealthPercent > MikotoSettingsModel.Instance.RegenCureFloorPct) { return(false); } return(await Spells.Cure.Use(target, true, true)); } if (target.IsHealer()) { if (MikotoSettingsModel.Instance.RegenCureFloorHealers && target.HasAura(Auras.Regen) && target.CurrentHealthPercent > MikotoSettingsModel.Instance.RegenCureFloorPct) { return(false); } return(await Spells.Cure.Use(target, true, true)); } if (!target.IsDps()) { return(false); } if (MikotoSettingsModel.Instance.RegenCureFloorDps && target.HasAura(Auras.Regen) && target.CurrentHealthPercent > MikotoSettingsModel.Instance.RegenCureFloorPct) { return(false); } return(await Spells.Cure.Use(target, true, true)); }
private static async Task <bool> EmergencyTactics() { if (!SuritoSettingsModel.Instance.UseEmergencyTactics) { return(false); } if (!SuritoSettingsModel.Instance.UseEmergencyTacticsOnTankOnly && HealManager.Count(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.EmergencyTacticsSuccorHpPct) >= SuritoSettingsModel.Instance.SuccorPlayerCount) { return(await Spells.EmergencyTactics.CastBuff(Me, true, Auras.EmergencyTactics)); } var target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.EmergencyTacticsAdloquiumHpPct); if (target != null && (target.IsTank() || !SuritoSettingsModel.Instance.UseEmergencyTacticsOnTankOnly)) { return(await Spells.EmergencyTactics.CastBuff(Me, true, Auras.EmergencyTactics)); } return(false); }
private static async Task <bool> EyeForAnEye() { if (!MikotoSettingsModel.Instance.UseEyeforanEye) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.IsTank() && !hm.HasAura(Auras.EyeforanEye) && hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.EyeforanEyeHpPct); if (target == null) { target = HealManager.FirstOrDefault(hm => !hm.IsMe && !hm.HasAura(Auras.EyeforanEye) && hm.CurrentHealthPercent <= MikotoSettingsModel.Instance.EyeforanEyeHpPct); } if (target == null) { return(false); } return(await Spells.EyeforanEye.Use(target, true)); }
private static async Task <bool> Aetherpact() { if (!SuritoSettingsModel.Instance.UseAetherpact || Me.Pet == null) { return(false); } if (ActionResourceManager.Scholar.FaerieGauge < SuritoSettingsModel.Instance.AetherpactMinGuage) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.Distance(Me.Pet) <= 12 && hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.AetherpactHpPct && (hm.IsTank() || !SuritoSettingsModel.Instance.UseAetherpactOnTankOnly)); if (target == null) { return(false); } return(await Spells.Aetherpact2.CastBuff(target, true, Auras.FeyUnion)); }
private static async Task <bool> PetAction() { if (Me.HasAura(Auras.Dissipation) || Me.Pet == null || HealManager.Any(hm => hm.HasAura(Auras.FeyUnion)) || CombatHelper.GcdTimeRemaining < 10) { return(false); } var target = HealManager.FirstOrDefault(hm => hm.InCombat); switch (SuritoSettingsModel.Instance.SelectedSuritoSummon) { case SuritoSummonMode.Eos: if (SuritoSettingsModel.Instance.UseWhisperingDawn && PetManager.CanCast(Spells.WhisperingDawn.LocalizedName, Me.Pet) && HealManager.Count(hm => hm.Distance2D(Me.Pet) <= 15 && hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.WhisperingDawnHpPct) >= SuritoSettingsModel.Instance.PetAoEPlayerCount) { return(PetManager.DoAction(Spells.WhisperingDawn.LocalizedName, Me.Pet)); } if (SuritoSettingsModel.Instance.UseFeyCovenant && PetManager.CanCast(Spells.FeyCovenant.LocalizedName, Me.Pet) && HealManager.Count(hm => hm.Distance2D(Me.Pet) <= 15 && hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.FeyCovenantHpPct) >= SuritoSettingsModel.Instance.PetAoEPlayerCount) { return(PetManager.DoAction(Spells.FeyCovenant.LocalizedName, Me.Pet)); } if (SuritoSettingsModel.Instance.UseFeyIllumination && PetManager.CanCast(Spells.FeyIllumination.LocalizedName, Me.Pet) && HealManager.Count(hm => hm.Distance2D(Me.Pet) <= 15 && hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.FeyIlluninationHpPct) >= SuritoSettingsModel.Instance.PetAoEPlayerCount) { return(PetManager.DoAction(Spells.FeyIllumination.LocalizedName, Me.Pet)); } if (SuritoSettingsModel.Instance.UseEmbrace) { target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.EmbraceHpPct); if (target != null && PetManager.CanCast(Spells.Embrace.LocalizedName, target)) { return(PetManager.DoAction(Spells.Embrace.LocalizedName, target)); } } break; case SuritoSummonMode.Selene: if (SuritoSettingsModel.Instance.UseEmbrace) { target = HealManager.FirstOrDefault(hm => hm.CurrentHealthPercent <= SuritoSettingsModel.Instance.EmbraceHpPct); if (target != null && PetManager.CanCast(Spells.Embrace.LocalizedName, target)) { return(PetManager.DoAction(Spells.Embrace.LocalizedName, target)); } } if (SuritoSettingsModel.Instance.UseSilentDusk) { target = HealManager.FirstOrDefault(hm => hm.CanSilence()); if (target != null && PetManager.CanCast(Spells.SilentDusk.LocalizedName, target)) { return(PetManager.DoAction(Spells.SilentDusk.LocalizedName, target)); } } if (SuritoSettingsModel.Instance.UseFeyCaress && PetManager.CanCast(Spells.FeyCaress.LocalizedName, Me.Pet) && HealManager.Count(hm => hm.Distance2D(Me.Pet) <= 20) >= SuritoSettingsModel.Instance.PetAoEPlayerCount) { return(await CleanseManager.PetCleanse()); } if (SuritoSettingsModel.Instance.UseFeyWind && PetManager.CanCast(Spells.FeyWind.LocalizedName, Me.Pet) && HealManager.Count(hm => hm.IsDps() && hm.Distance2D(Me.Pet) <= 20) >= SuritoSettingsModel.Instance.PetAoEPlayerCount) { return(PetManager.DoAction(Spells.FeyWind.LocalizedName, Me.Pet)); } break; } return(false); }
private static async Task <bool> Intervention() { var target = HealManager.FirstOrDefault(hm => hm.Distance2D(Me) <= 30 && hm.CurrentHealthPercent <= BeatrixSettingsModel.Instance.InterventionHpPct); return(await Spells.Intervention.CastDot(Target, true, Auras.Intervention)); }