コード例 #1
0
ファイル: Heal.cs プロジェクト: Cli0l1n3/MagitekRoutine
        public static async Task <bool> Resurrection()
        {
            if (!Globals.InParty)
            {
                return(false);
            }

            var deadList = Group.DeadAllies.Where(u => u.CurrentHealth == 0 &&
                                                  !u.HasAura(Auras.Raise) &&
                                                  u.Distance(Core.Me) <= 30)
                           .OrderByDescending(r => r.GetResurrectionWeight());

            var deadTarget = deadList.FirstOrDefault();

            if (deadTarget == null)
            {
                return(false);
            }

            if (!deadTarget.IsVisible || !deadTarget.IsTargetable)
            {
                return(false);
            }

            if (Globals.PartyInCombat)
            {
                if (ScholarSettings.Instance.SwiftcastRes && Spells.Swiftcast.Cooldown == TimeSpan.Zero)
                {
                    if (await Buff.Swiftcast())
                    {
                        while (Core.Me.HasAura(Auras.Swiftcast))
                        {
                            if (await Spells.Resurrection.CastAura(deadTarget, Auras.Raise))
                            {
                                return(true);
                            }
                            await Coroutine.Yield();
                        }
                    }
                }
            }

            if (Globals.PartyInCombat && ScholarSettings.Instance.SlowcastRes || !Globals.PartyInCombat && ScholarSettings.Instance.ResOutOfCombat)
            {
                //delay casting raise on the same target in case they are already in the resurrect animation and the buff is gone for some reason
                //but this shouldn't be needed outside of Trust NPCs
                //if(Casting.SpellCastHistory.Take(5).Any(s => s.Spell == Spells.Resurrection && s.SpellTarget == deadTarget))
                //    return false;

                return(await Spells.Resurrection.CastAura(deadTarget, Auras.Raise));
            }

            return(false);
        }
コード例 #2
0
ファイル: Heal.cs プロジェクト: SageRhaposdy/MagitekRoutine
        public static async Task <bool> Resurrection()
        {
            if (!Globals.InParty)
            {
                return(false);
            }

            var deadList = Group.DeadAllies.Where(u => u.CurrentHealth == 0 &&
                                                  !u.HasAura(Auras.Raise) &&
                                                  u.Distance(Core.Me) <= 30)
                           .OrderByDescending(r => r.GetResurrectionWeight());

            var deadTarget = deadList.FirstOrDefault();

            if (deadTarget == null)
            {
                return(false);
            }

            if (!deadTarget.IsVisible)
            {
                return(false);
            }

            if (!deadTarget.IsTargetable)
            {
                return(false);
            }

            if (Globals.PartyInCombat)
            {
                if (!ScholarSettings.Instance.SwiftcastRes)
                {
                    return(false);
                }

                if (Spells.Swiftcast.Cooldown != TimeSpan.Zero)
                {
                    return(false);
                }

                if (await Buff.Swiftcast())
                {
                    while (Core.Me.HasAura(Auras.Swiftcast))
                    {
                        if (await Spells.Resurrection.Cast(deadTarget))
                        {
                            return(true);
                        }
                        await Coroutine.Yield();
                    }
                }
            }

            if (!ScholarSettings.Instance.SlowcastRes && Globals.PartyInCombat)
            {
                return(false);
            }

            if (!ScholarSettings.Instance.ResOutOfCombat)
            {
                return(false);
            }

            return(await Spells.Resurrection.CastAura(deadTarget, Auras.Raise));
        }