Exemplo n.º 1
0
        internal static bool IsLevelSyncNeeded(FateData fate)
        {
            if (!fate.IsValid || fate.Status == FateStatus.NOTACTIVE || fate.Status == FateStatus.COMPLETE)
            {
                return(false);
            }

            return(fate.MaxLevel < OracleClassManager.GetTrueLevel() && !Core.Player.IsLevelSynced && fate.Within2D(Core.Player.Location));
        }
Exemplo n.º 2
0
        internal static bool GrindMobFilter(BattleCharacter battleCharacter)
        {
            if (!battleCharacter.IsValid || battleCharacter.IsDead || !battleCharacter.IsVisible || battleCharacter.CurrentHealthPercent <= 0f)
            {
                return(false);
            }

            if (battleCharacter.TappedByOther)
            {
                return(false);
            }

            if (OracleClassManager.GetTrueLevel() - WaitSettings.Instance.MobGrindMinLevelBelow > battleCharacter.ClassLevel)
            {
                return(false);
            }

            if (OracleClassManager.GetTrueLevel() + WaitSettings.Instance.MobGrindMaxLevelAbove < battleCharacter.ClassLevel)
            {
                return(false);
            }

            if (!battleCharacter.CanAttack)
            {
                return(false);
            }

            if (Blacklist.Contains(battleCharacter.ObjectId, BlacklistFlags.Combat))
            {
                return(false);
            }

            if (battleCharacter.IsFateGone)
            {
                return(false);
            }

            if (battleCharacter.IsFate)
            {
                return(false);
            }

            if (BlacklistSettings.Instance.BlacklistedMobs.Contains(battleCharacter.NpcId))
            {
                return(false);
            }

            if (GameObjectManager.Attackers.Contains(battleCharacter))
            {
                return(true);
            }

            return(true);
        }
Exemplo n.º 3
0
        internal static bool FateFilter(FateData fate)
        {
            var oracleFateData = FateDatabase.GetFateFromFateData(fate);

            if (oracleFateData.Type == FateType.Boss && !FateSettings.Instance.BossFatesEnabled)
            {
                return(false);
            }

            if (oracleFateData.Type == FateType.Collect && !FateSettings.Instance.CollectFatesEnabled)
            {
                return(false);
            }

            if (oracleFateData.Type == FateType.Defence && !FateSettings.Instance.DefenceFatesEnabled)
            {
                return(false);
            }

            if (oracleFateData.Type == FateType.Escort && !FateSettings.Instance.EscortFatesEnabled)
            {
                return(false);
            }

            if (oracleFateData.Type == FateType.Kill && !FateSettings.Instance.KillFatesEnabled)
            {
                return(false);
            }

            if (oracleFateData.Type == FateType.MegaBoss && !FateSettings.Instance.MegaBossFatesEnabled)
            {
                return(false);
            }

            if (WaitingForChainFate() && GetChainFate(PreviousFateId).Id != fate.Id)
            {
                return(false);
            }

            if (ModeSettings.Instance.OracleOperationMode == OracleOperationMode.SpecificFates && !FateSettings.Instance.SpecificFateList.Contains(fate.Id))
            {
                return(false);
            }

            if (Blacklist.Contains(fate.Id, BlacklistFlags.Node))
            {
                return(false);
            }

            if (BlacklistSettings.Instance.BlacklistedFates.Contains(fate.Id))
            {
                return(false);
            }

            if (FateSettings.Instance.IgnoreLowDuration)
            {
                if (Math.Abs(fate.Progress) < 0.5f && fate.TimeLeft < TimeSpan.FromSeconds(FateSettings.Instance.LowFateDuration))
                {
                    return(false);
                }
            }

            // Always ignore FATEs under 60 seconds if they're collection FATEs (stops reselecting FATE after final turn in).
            if (oracleFateData.Type == FateType.Collect && fate.TimeLeft < TimeSpan.FromSeconds(60))
            {
                return(false);
            }

            if (oracleFateData.SupportLevel == FateSupportLevel.Unsupported)
            {
                return(false);
            }

            if (oracleFateData.SupportLevel == FateSupportLevel.Problematic && !FateSettings.Instance.RunProblematicFates)
            {
                return(false);
            }

            if (oracleFateData.SupportLevel == FateSupportLevel.NotInGame)
            {
                return(false);
            }

            if (!FateProgressionMet(fate))
            {
                return(false);
            }

            if (fate.Level > OracleClassManager.GetTrueLevel() + FateSettings.Instance.FateMaxLevelAbove)
            {
                return(false);
            }

            if (fate.Level < OracleClassManager.GetTrueLevel() - FateSettings.Instance.FateMinLevelBelow &&
                (ModeSettings.Instance.OracleOperationMode == OracleOperationMode.FateGrind ||
                 ModeSettings.Instance.OracleOperationMode == OracleOperationMode.LevelMode ||
                 ModeSettings.Instance.OracleOperationMode == OracleOperationMode.MultiLevelMode))
            {
                return(false);
            }

            return(true);
        }