Example #1
0
        public override AbilityPriority CreateHeal()
        {
            var result = new AbilityPriority();

            result.Add("Runic Healing", r => GameManager.LocalPlayer.Mana >= 40 && r.HealthPercent < Settings.RunicHealingHPPercent);
            result.Add("Runes of Protection", r => GameManager.LocalPlayer.Mana >= 34 && InstanceManager.Party.Average(s => s.ShieldPercent) < Settings.RunesOfProtectionSPPercent);
            result.Add("Vitality Burst", r => GameManager.LocalPlayer.Mana >= 12 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.VitalityBurstHPPercent);
            result.Add("Astral Infusion", r => GameManager.LocalPlayer.Mana >= 52 && GameManager.LocalPlayer.HealthPercent < Settings.AstralInfusionHPPercent);
            result.Add("Healing Salve", r => GameManager.LocalPlayer.Mana >= 20 && !GameManager.LocalPlayer.HasBuff("Healing Salve"));
            result.Add("Dual Fire", r => GameManager.LocalPlayer.Mana >= 16 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.DualFireHPPercent);
            result.Add("Healing Torrent", r => GameManager.LocalPlayer.Mana >= 31 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.HealingTorrentHPPercent);
            result.Add("Voidspring", r => GameManager.LocalPlayer.Mana >= 27 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.VoidSpringHPPercent);
            result.Add("Regenerative Pulse", r => GameManager.LocalPlayer.Mana >= 33 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.RegenerativePulseHPPercent);
            result.Add("Sustain", r => GameManager.LocalPlayer.Mana >= 30 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.SustainHPPercent);

            return(result);
        }
Example #2
0
        public override AbilityPriority CreateCombat()
        {
            var result = new AbilityPriority();

            // Spell Interrupt
            result.Add("Kick", r => r.IsCasting);

            // CC handle & break
            result.Add("Flash Bang", r => r.HasCC(CCStateType.Blind));
            result.Add("Tether Bolt", r => GameManager.LocalPlayer.HasCC(CCStateType.Tether));
            result.Add("Unstoppable Force", r => GameManager.LocalPlayer.HasCleansableCC());
            result.Add("Leap", r => r.Distance > 10 || GameManager.LocalPlayer.HasCleansableCC());
            result.Add("Savage Strikes", r => GameManager.LocalPlayer.HasCC(CCStateType.Knockback));

            // Shield handle
            result.Add("Shield Burst", r => GameManager.LocalPlayer.ShieldPercent == 0);

            // Buff application
            result.Add("Polarity Field", r => !r.HasBuff("Exhaust") && r.GetSurrounding().Count() > 1);
            result.Add("Augmented Blade", r => !r.HasBuff("Wound"));
            result.Add("Smackdown", r => r.HasBuff("Expose"));
            result.Add("Sentinel", r => !GameManager.LocalPlayer.HasBuff("Guard"));

            // Cast when-up
            result.Add("Power Link", r => true);
            result.Add("Defense Grid", r => true);
            result.Add("Emergency Reserves", r => true);

            // TANK?
            result.Add("Plasma Blast", r => r.CurrentTarget != null && r.CurrentTarget.Guid != GameManager.LocalPlayer.Guid);
            result.Add("Atomic Surge", r => InstanceManager.IsTank && r.CurrentTarget != null && r.CurrentTarget.Guid != GameManager.LocalPlayer.Guid);
            result.Add("Bum Rush", r => InstanceManager.IsTank || GameManager.LocalPlayer.HealthPercent < 70);
            result.Add("Tremor", r => r.GetSurrounding().Count() > 1);

            // Spenders
            result.Add("Rampage", r => GameManager.LocalPlayer.InnateResourcePercent >= 90);
            result.Add("Whirlwind", r => GameManager.LocalPlayer.InnateResourcePercent >= 90);
            result.Add("Expulsion", r => GameManager.LocalPlayer.Buffs.Where(b => b.IsHarmful).Count() >= 1);
            result.Add("Bolstering Strike", r => GameManager.LocalPlayer.InnateResource > 250 && InstanceManager.Party.Average(s => s.HealthPercent) < 50);
            result.Add("Jolt", r => GameManager.LocalPlayer.InnateResource > 90 && GameManager.LocalPlayer.InnateResourcePercent >= 90);
            result.Add("Plasma Wall", r => GameManager.LocalPlayer.InnateResource > 90 && GameManager.LocalPlayer.InnateResourcePercent >= 90);
            result.Add("Ripsaw", r => r.GetSurrounding().Count() > 1);

            // Builders
            result.Add("Menacing Strike", r => GameManager.LocalPlayer.InnateResourcePercent < 90 && GameManager.LocalPlayer.HealthPercent < 70);
            result.Add("Breaching Strikes", r => GameManager.LocalPlayer.InnateResourcePercent < 90 && GameManager.LocalPlayer.InnateResourcePercent < 90);
            result.Add("Relentless Strikes", r => GameManager.LocalPlayer.InnateResourcePercent < 90);

            return(result);
        }
Example #3
0
        public override AbilityPriority CreateCombat()
        {
            var result = new AbilityPriority();

            // Spell interrupt
            result.Add("Stagger", r => r.IsCasting);
            result.Add("False Retreat", r => r.IsCasting);
            result.Add("Pounce", r => r.IsCasting);
            result.Add("Tether Mine", r => r.IsCasting);
            result.Add("Collapse", r => r.IsCasting);

            // Buff application
            result.Add("Phlebotomize", r => GameManager.LocalPlayer.SuitPower >= 15 && !r.HasBuff("Wound"));
            result.Add("Reaver", r => !r.HasCC(CCStateType.Taunt));
            result.Add("Bloodthirst", r => !GameManager.LocalPlayer.HasBuff("Lifesteal"));
            result.Add("Preperation", r => !GameManager.LocalPlayer.HasBuff("Empower") && !GameManager.LocalPlayer.HasBuff("Defense"));
            result.Add("Decimate", r => !r.HasBuff("Weaken"));
            #region Concussive Kicks
            result.Add("Concussive Kicks", r =>
            {
                var punish = GetSpell("Punish");

                if (punish != null && punish.CooldownTimeRemaining.TotalMilliseconds < 2000)
                {
                    return(false);
                }

                return(!GameManager.LocalPlayer.HasBuff("Concussive Kicks - Cooldown") || GameManager.LocalPlayer.HasBuff("Concussive Kicks - Cooldown") && GameManager.LocalPlayer.SuitPower >= 15);
            });
            #endregion

            // Cast when-up
            //result.Add("Tactical Retreat", r => true); REMOVED
            result.Add("Whiplash", r => true);
            result.Add("Razor Storm", r => true);
            result.Add("Stim Drone", r => true);

            // Spenders
            result.Add("Neutralize", r => GameManager.LocalPlayer.SuitPower >= 15 && !GameManager.LocalPlayer.HasBuff("Neutralize"));
            result.Add("Punish", r => GameManager.LocalPlayer.SuitPower < 35 && !GameManager.LocalPlayer.HasBuff("Punish"));
            #region Shred
            result.Add("Shred", r =>
            {
                var impale = GetSpell("Impale");

                if (impale != null && impale.Ability.TierIndex >= 8)
                {
                    return(GameManager.LocalPlayer.SuitPower < 30);
                }

                return(GameManager.LocalPlayer.SuitPower <= 35);
            });
            #endregion
            #region Impale
            result.Add("Impale", r =>
            {
                var impale = GetSpell("Impale");

                if (impale != null && impale.Ability.TierIndex >= 8)
                {
                    return(GameManager.LocalPlayer.SuitPower >= 30);
                }

                return(GameManager.LocalPlayer.SuitPower >= 35);
            });
            #endregion
            result.Add("Clone", r => GameManager.LocalPlayer.SuitPower >= 25);
            result.Add("Analyze Weakness", r => GameManager.LocalPlayer.SuitPower >= 15);
            result.Add("Ruin", r => GameManager.LocalPlayer.SuitPower >= 10);
            result.Add("Cripple", r => GameManager.LocalPlayer.SuitPower >= 5 && GameManager.LocalPlayer.SuitPower >= 3);
            result.Add("Nano Field", r => GameManager.LocalPlayer.SuitPower >= 20);
            result.Add("Razor Disk", r => GameManager.LocalPlayer.SuitPower >= 20);
            result.Add("Nano Virus", r => GameManager.LocalPlayer.SuitPower >= 10);
            result.Add("Amplification Spike", r => GameManager.LocalPlayer.SuitPower >= 25);
            result.Add("Frenzy", r => GameManager.LocalPlayer.SuitPower >= 30);
            result.Add("Nano Dart", r => GameManager.LocalPlayer.SuitPower >= 10);

            // Builders
            result.Add("Steadfast", r => GameManager.LocalPlayer.SuitPower < 100 && !GameManager.LocalPlayer.HasBuff("Defense"));

            return(result);
        }
Example #4
0
        public override AbilityPriority CreateCombat()
        {
            var result = new AbilityPriority();

            //result.Add("Hyper Wave", r => r.ThreatListGuids.Contains(GameManager.LocalPlayer.Guid));
            //result.Add("Particle Ejector", r => r.ThreatListGuids.Contains(GameManager.LocalPlayer.Guid));

            result.Add("Shatter Impairment", r => GameManager.LocalPlayer.HasCleansableCC());

            // Interrupt
            result.Add("Obstruct Vision", r => r.IsCasting);
            result.Add("Code Red", r => r.IsCasting);
            result.Add("Diminisherbot", r => r.IsCasting);
            result.Add("Zap", r => r.IsCasting);
            result.Add("Urgent Withdrawal", r => r.IsCasting);
            result.Add("Bruiserbot", r => (r.IsCasting) || r.GetSurrounding().Count() >= Settings.BruiserbotSurroundAmount);
            result.Add("Repairbot", r => InstanceManager.Party.Average(s => s.ShieldPercent) <= Settings.RepairbotSPercent);

            result.Add("Recursive Matrix", r => GameManager.LocalPlayer.GetSurrounding(20).Count() >= Settings.RecursiveMatrixSurroundAmount);

            // Buff management
            result.Add("Bio Shell", r => !r.HasBuff("Expose"));
            result.Add("Unstable Anomaly", r => !r.HasBuff("Wound"));
            result.Add("Unsteady Miasma", r => !r.HasBuff("Blunder"));
            result.Add("Personal Defense Unit", r => !GameManager.LocalPlayer.HasBuff("Defense"));

            // Proc / Cast when up

            // IsSpellReady is used for procs!
            result.Add("Quick Burst", r => IsSpellProcReady("Quick Burst"));
            result.Add("Artillerybot", r => IsSpellProcReady("Artillerybot"));
            result.Add("Feedback", r => IsSpellProcReady("Feedback"));
            result.Add("Thresher", r => IsSpellProcReady("Thresher"));

            // Spender
            result.Add("Electrocute", r => GameManager.LocalPlayer.InnateResourcePercent >= Settings.ElectrocuteIPercent);
            result.Add("Mortar Strike", r => GameManager.LocalPlayer.InnateResourcePercent >= Settings.MortarStrikeIPercent);
            result.Add("Bolt Caster", r => GameManager.LocalPlayer.InnateResourcePercent >= Settings.BoltCasterIPercent);

            // Builders
            result.Add("Disruptive Module", r => GameManager.LocalPlayer.InnateResourcePercent < Settings.DisruptiveModuleIPercent && InstanceManager.Party.Average(s => s.ShieldPercent) <= Settings.DisruptiveModuleSPercent);
            result.Add("Flak Cannon", r => GameManager.LocalPlayer.InnateResourcePercent <= Settings.FlakCannonIPercent);
            result.Add("Ricochet", r => !r.HasBuff("Exhaust") && GameManager.LocalPlayer.InnateResourcePercent <= Settings.RicochetIPercent);
            result.Add("Target Acquisition", r => GameManager.LocalPlayer.InnateResourcePercent <= Settings.TargetAquisitionIPercent);
            result.Add("Shock Pulse", r => GameManager.LocalPlayer.InnateResourcePercent <= Settings.ShockPulseIPercent);
            result.Add("Volatile Injection", r => GameManager.LocalPlayer.InnateResourcePercent <= Settings.VolatileInjectionIPercent);
            result.Add("Energy Auger", r => GameManager.LocalPlayer.InnateResourcePercent <= Settings.EnergyAugerIPercent);
            result.Add("Pulse Blast", r => GameManager.LocalPlayer.InnateResourcePercent <= Settings.PulseBlastIPercent);

            return(result);
        }
Example #5
0
        public override AbilityPriority CreateCombat()
        {
            var result = new AbilityPriority();

            // Spell interrupting
            result.Add("Gate", r => r.IsCasting && GameManager.LocalPlayer.InnateResource <= 1);
            result.Add("Flash Freeze", r => r.IsCasting);
            result.Add("Chill", r => r.IsCasting);
            result.Add("Arcane Shock", r => r.IsCasting);
            #region Spatial Shift
            result.Add("Spatial Shift", r =>
            {
                if (r != null)
                {
                    Actor Target = r;

                    return(Target.IsCasting && (GameManager.LocalPlayer.InnateResource == 1 || GameManager.LocalPlayer.InnateResource >= 2 && (CanCast("Gate") || CanCast("Arcane Shock"))));
                }
                return(false);
            });
            #endregion
            // Cleansing
            result.Add("Void Slip", r => GameManager.LocalPlayer.HasCleansableCC());
            result.Add("Purify", r => GameManager.LocalPlayer.Mana >= 15 && GameManager.LocalPlayer.HealthPercent < Settings.PurifyHPPercent && GameManager.LocalPlayer.Buffs.Count(s => s.IsHarmful) >= 1);

            // Buff application
            result.Add("Void Pact", r => !GameManager.LocalPlayer.HasBuff("Empower"));
            result.Add("Phase Shift", r => !GameManager.LocalPlayer.HasBuff("Defense"));

            // Special
            result.Add("Gather Focus", r => GameManager.LocalPlayer.Mana < 100);
            result.Add("Affinity", r => InstanceManager.LowestHealth.HealthPercent < Settings.AffinityHPPercent);

            // Builder & spenders
            #region Spell surge

            // Build reliant Spell Surge
            result.Add("Ignite",
                       r =>
            {
                if (r != null)
                {
                    Actor Target = r;
                    var Ignite   = GetSpell("Ignite");
                    return(Ignite != null && Ignite.CanCast && (Ignite.Ability.TierIndex <= 8 && !Target.HasBuff("Ignite") || Ignite.Ability.TierIndex == 8));
                }

                return(false);
            }, async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Ignite");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            result.Add("Quick Draw",
                       r =>
            {
                if (r != null)
                {
                    Actor Target  = r;
                    var QuickDraw = GetSpell("Quick Draw");
                    return(QuickDraw != null && QuickDraw.CanCast && Target.HealthPercent < 30 && GameManager.LocalPlayer.Mana >= 50);
                }

                return(false);
            },
                       async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Quick Draw");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            result.Add("Flame Burst",
                       r =>
            {
                if (r != null)
                {
                    Actor Target   = r;
                    var FlameBurst = GetSpell("Flame Burst");
                    return(FlameBurst != null && FlameBurst.CanCast && (FlameBurst.Ability.TierIndex == 8 && Target.HasBuff("Ignite") || FlameBurst.Ability.TierIndex < 8));
                }

                return(false);
            },
                       async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Flame Burst");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            result.Add("Assassinate",
                       r =>
            {
                if (r != null)
                {
                    Actor Target    = r;
                    var Assassinate = GetSpell("Assassinate");
                    return(Assassinate != null && Assassinate.CanCast && (Target.HealthPercent >= 30 && GameManager.LocalPlayer.Mana > 25 || Target.HealthPercent < 30));
                }

                return(false);
            },
                       async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Assassinate");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });

            // "Spam" Spell Surge
            result.Add("Wild Barrage", r => true, async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Wild Barrage");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            result.Add("Rapid Fire", r => true, async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Rapid Fire");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            result.Add("True Shot", r => true, async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("True Shot");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            result.Add("Arcane Missiles", r => !r.HasBuff("Expose"), async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Arcane Missiles");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            result.Add("Charged Shot", r => true, async cast =>
            {
                await SpellCastBehaviors.CastSimple("Spell Surge");
                await SpellCastBehaviors.CastSimple("Charged Shot");

                return(await SpellCastBehaviors.CastSimple("Spell Surge"));
            });
            #endregion

            return(result);
        }
Example #6
0
        public override AbilityPriority CreateCombat()
        {
            var result = new AbilityPriority();

            // Spell interrupting
            result.Add("Magnetic Lockdown", r => r.IsCasting);
            result.Add("Paralytic Surge", r => r.IsCasting);

            // Cleansing
            result.Add("Dematerialize", r => r.Buffs.Count(s => s.IsBeneficial) > 1);
            result.Add("Calm", r => GameManager.LocalPlayer.HasCleansableCC());
            result.Add("Antidote", r => GameManager.LocalPlayer.Mana > 24 && GameManager.LocalPlayer.HealthPercent < 50 && GameManager.LocalPlayer.Buffs.Count(s => s.IsHarmful) > 1);

            // Buff application
            result.Add("Fissure", r => !r.HasBuff("Expose"));
            result.Add("Protection Probes", r => !GameManager.LocalPlayer.HasBuff("Defense"));
            result.Add("Empowering Probes", r => !GameManager.LocalPlayer.HasBuff("Empower"));

            // Cast when-up / health percentage
            result.Add("Collider", r => r.HealthPercent < 30);
            result.Add("Nullifier", r => true);
            result.Add("Devastator Probes", r => true);
            result.Add("Annihilation", r => true);
            result.Add("Urgency", r => true);
            result.Add("Restrictor", r => true);

            // Spenders
            result.Add("Gamma Rays", r => GameManager.LocalPlayer.InnateResource >= 2);
            result.Add("Quantum Cascade", r => GameManager.LocalPlayer.InnateResource >= 2);

            // Chargers
            result.Add("Discharge", r => GameManager.LocalPlayer.InnateResource < 2);
            result.Add("Atomize", r => GameManager.LocalPlayer.InnateResource < 2);
            result.Add("Recharge", r => GameManager.LocalPlayer.Mana < 80);

            return(result);
        }
Example #7
0
        public override AbilityPriority CreateHeal()
        {
            var result = new AbilityPriority();

            result.Add("Emission", r => GameManager.LocalPlayer.InnateResource < 2);
            result.Add("Crisis Wave", r => GameManager.LocalPlayer.InnateResource >= 2 && GameManager.LocalPlayer.Mana >= 35 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.CrisisWaveHPPercent);
            result.Add("Dual Shock", r => GameManager.LocalPlayer.Mana >= 35 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.DualShockHPPercent);
            result.Add("Mending Probes", r => GameManager.LocalPlayer.Mana >= 18 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.MendingProbesHPPercent);
            result.Add("Triage", r => GameManager.LocalPlayer.Mana >= 20 && InstanceManager.Party.OrderBy(s => s.HealthPercent).FirstOrDefault().HealthPercent < Settings.TriageHPPercent && InstanceManager.Party.OrderBy(s => s.ShieldPercent).FirstOrDefault().ShieldPercent < Settings.TriageSPPercent);
            result.Add("Flash", r => GameManager.LocalPlayer.Mana >= 28 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.FlashHPPercent);
            result.Add("Barrier", r => GameManager.LocalPlayer.Mana >= 86 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.BarrierHPPercent && InstanceManager.Party.Average(s => s.ShieldPercent) < Settings.BarrierSPPercent);
            result.Add("Rejuvenator", r => GameManager.LocalPlayer.Mana >= 30 && InstanceManager.Party.Average(s => s.HealthPercent) < Settings.RejuvenatorHPPercent);
            result.Add("Shield Surge", r => GameManager.LocalPlayer.Mana >= 41 && GameManager.LocalPlayer.InnateResource >= 2 && InstanceManager.Party.Average(s => s.ShieldPercent) < Settings.ShieldSurgeSPPercent);
            result.Add("Extricate", r => GameManager.LocalPlayer.Mana >= 46 && GameManager.LocalPlayer.HealthPercent < Settings.ExtricateHPPercent);
            result.Add("Field Probes", r => GameManager.LocalPlayer.HasBuff("Beacon") && InstanceManager.Party.Average(s => s.HealthPercent) < 50);

            return(result);
        }
Example #8
0
        public override AbilityPriority CreateCombat()
        {
            var result = new AbilityPriority();

            // High Priority / Buff Management
            result.Add("Haunt", r => !r.HasBuff("Haunt"));
            result.Add("Fade Out", r => GameManager.LocalPlayer.HasCleansableCC());

            // Medium Priority / Psi Point Specific
            result.Add("Reap", r => GameManager.LocalPlayer.InnateResource == 5);
            result.Add("Mind Burst", r => GameManager.LocalPlayer.InnateResource == 5);
            result.Add("Telekinetic Storm", r => GameManager.LocalPlayer.InnateResource == 5);
            result.Add("Spectral Form", r => GameManager.LocalPlayer.InnateResource >= 4);

            // Medium Low Priority / Cast Once (summon)
            result.Add("Spectral Swarm", r => true);
            result.Add("Geist", r => true);

            // Low Priority / Interrupt
            result.Add("Shockwave", r => r.IsCasting);
            result.Add("Restraint", r => r.IsCasting);
            result.Add("Crush", r => r.IsCasting);
            result.Add("Incapacitate", r => r.IsCasting);

            // Spam Priority / Psi Point builders
            result.Add("Psychic Frenzy", r => GameManager.LocalPlayer.InnateResource < 5);
            result.Add("Illusionary Blades", r => GameManager.LocalPlayer.InnateResource < 5);
            result.Add("Blade Dance", r => GameManager.LocalPlayer.InnateResource < 5);
            result.Add("Telekinetic Strike", r => GameManager.LocalPlayer.InnateResource < 5);
            result.Add("Concentrated Blade", r => GameManager.LocalPlayer.InnateResource < 5);

            return(result);
        }
Example #9
0
        public override AbilityPriority CreateHeal()
        {
            var result = new AbilityPriority();

            // High Priority / Buff Management
            result.Add("Phantasmal Armor", r => (InstanceManager.Tank != null ? InstanceManager.Tank.HealthPercent : GameManager.LocalPlayer.HealthPercent) < Settings.PhantasmalArmorHP);
            result.Add("Catharsis", r => GameManager.LocalPlayer.HealthPercent <Settings.CatharsisHP && InstanceManager.CleanseTarget.Buffs.Count> Settings.CatharsisBuff, async cast =>
            {
                var Target = InstanceManager.CleanseTarget;

                if (Omnibus.WindowSettings.EnableMovement)
                {
                    Target.Face();
                }

                return(await SpellCastBehaviors.CastSimple("Catharsis", () => Target, awaitCastFinished: true));
            });

            // Medium Priority / Psi Point Specific
            result.Add("Mental Boon", r => GameManager.LocalPlayer.InnateResource == 5 && GameManager.LocalPlayer.HealthPercent < Settings.MentalBoonHP);
            result.Add("Reverie", r => InstanceManager.AveragePartyHealth < Settings.ReverieHP && GameManager.LocalPlayer.InnateResource == 5);
            result.Add("Mending Banner", r => InstanceManager.AveragePartyHealth < Settings.MendingBannerHP && GameManager.LocalPlayer.InnateResource == 5);

            // Medium Low Priority / Health Percentage
            result.Add("Projected Spirit", r => InstanceManager.AveragePartyHealth > Settings.ProjectedSpiritHP);

            // Low Priority / Psi Point Builders
            result.Add("Meditate", r => GameManager.LocalPlayer.InnateResource < 5 && GameManager.LocalPlayer.HealthPercent <= Settings.MeditateHP);
            result.Add("Pyrokinetic Flame", r => InstanceManager.AveragePartyHealth < Settings.PyrokineticFlameHP && GameManager.LocalPlayer.InnateResource < 5);
            result.Add("Warden", r => GameManager.LocalPlayer.InnateResource < 5 && (GameManager.LocalPlayer.HealthPercent < Settings.WardenHP || InstanceManager.AveragePartyHealth < Settings.WardenAllyHP));
            result.Add("Mirage", r => GameManager.LocalPlayer.InnateResource < 5 && GameManager.LocalPlayer.HealthPercent < Settings.MirageHP);
            result.Add("Soothe", r => GameManager.LocalPlayer.InnateResource < 5 && GameManager.LocalPlayer.HealthPercent < Settings.SootheHP);
            result.Add("Bolster", r => GameManager.LocalPlayer.InnateResource < 5 && GameManager.LocalPlayer.HealthPercent < Settings.BolsterHP);
            result.Add("Mind Over Body", r => GameManager.LocalPlayer.InnateResource < 5 && GameManager.LocalPlayer.HealthPercent < Settings.MindOverBodyHP);

            return(result);
        }