private static bool ReadyToTurnIn() { if (Core.Player.InCombat) { return(false); } var currentFate = OracleFateManager.GetCurrentFateData(); if (currentFate == null) { return(false); } var oracleFate = OracleFateManager.FateDatabase.GetFateFromId(currentFate.Id); if (oracleFate.Type != FateType.Collect) { return(false); } if (currentFate.Status == FateStatus.NOTACTIVE) { return(false); } var fateItemCount = ConditionParser.ItemCount(oracleFate.ItemId); return(fateItemCount >= FateSettings.Instance.CollectTurnInAmount); }
private static double GetWeight(BattleCharacter battleCharacter) { var weight = 1800f; var currentFate = OracleFateManager.GetCurrentFateData(); var oracleFate = new Fate(); if (currentFate != null) { oracleFate = OracleFateManager.FateDatabase.GetFateFromFateData(currentFate); } // If FATE has a preferred target, prioritise it if we're out of combat. if (oracleFate.PreferredTargetId != null && oracleFate.PreferredTargetId.Contains(battleCharacter.NpcId) && !Core.Player.InCombat) { weight += 20000; } if (battleCharacter.Pointer == Core.Player.PrimaryTargetPtr) { weight += 150; } if (battleCharacter.HasTarget && battleCharacter.CurrentTargetId == Core.Player.ObjectId) { weight += 750; } if (ChocoboManager.Object != null && battleCharacter.HasTarget && battleCharacter.CurrentTargetId == ChocoboManager.Object.ObjectId) { weight += 400; } if (!battleCharacter.TappedByOther) { weight += 200; } if (battleCharacter.CurrentTargetId == Core.Player.ObjectId) { weight += 1000 / Convert.ToSingle(battleCharacter.CurrentHealth) * 3000; } if (!battleCharacter.InCombat) { weight += 130; } // Prefer nearer targets in combat if melee, and always out of combat. if (OracleClassManager.IsMeleeDpsClassJob(Core.Player.CurrentJob) || OracleClassManager.IsTankClassJob(Core.Player.CurrentJob) || !Core.Player.InCombat) { weight -= battleCharacter.Distance(Core.Player) * 30; } return(weight); }
internal static async Task <bool> Main() { if (CommonBehaviors.IsLoading) { return(false); } if (IsFateSet()) { if (OracleFateManager.GetCurrentFateData() == null) { return(true); } if (!IsFatePoiSet() && Poi.Current.Type != PoiType.Death && !GameObjectManager.Attackers.Any()) { Poi.Current = new Poi(OracleFateManager.GetCurrentFateData(), PoiType.Fate); } return(true); } if (OracleClassManager.ZoneChangeNeeded()) { return(false); } if (OracleFateManager.PreviousFateChained() && ModeSettings.Instance.OracleOperationMode != OracleOperationMode.SpecificFates) { await SelectChainFate(); } else if (ModeSettings.Instance.OracleOperationMode == OracleOperationMode.SpecificFates) { await SelectSpecificFate(); } else { await SelectClosestFate(); } if (OracleFateManager.GetCurrentFateData() != null && MovementSettings.Instance.DelayFateMovement && !OracleFateManager.DoNotWaitBeforeMovingFlag) { await WaitBeforeMoving(); } OracleFateManager.DoNotWaitBeforeMovingFlag = false; return(IsFateSet() && IsFatePoiSet()); }
internal static async Task <bool> Main() { if (!Request.IsOpen) { return(false); } if (GameObjectManager.Attackers.Any()) { return(false); } var currentFate = OracleFateManager.GetCurrentFateData(); var itemId = OracleFateManager.FateDatabase.GetFateFromId(currentFate.Id).ItemId; var turnInBagSlot = GetBagSlotFromItemId(itemId); if (turnInBagSlot == null) { return(false); } Logger.SendLog("Attempting to hand over " + turnInBagSlot.Count + " of the item '" + turnInBagSlot.Name + "'."); turnInBagSlot.Handover(); await Coroutine.Sleep(MainSettings.Instance.ActionDelay); if (!Request.IsOpen || !Request.HandOverButtonClickable) { Logger.SendErrorLog("Hand over failed."); Request.Cancel(); return(false); } Logger.SendDebugLog("Pressing 'Hand Over' button."); Request.HandOver(); await Coroutine.Sleep(MainSettings.Instance.ActionDelay); return(true); }
private static bool Filter(BattleCharacter battleCharacter) { var currentFate = OracleFateManager.GetCurrentFateData(); var blacklistEntry = Blacklist.GetEntry(battleCharacter); if (!battleCharacter.IsValid || battleCharacter.IsDead || !battleCharacter.IsVisible) { return(false); } if (!battleCharacter.CanAttack) { return(false); } if (blacklistEntry != null) { return(false); } if (battleCharacter.IsFateGone) { return(false); } if (IsLevelSyncNeeded(battleCharacter) && !FateManager.GetFateById(battleCharacter.FateId).Within2D(battleCharacter.Location)) { return(false); } if (GameObjectManager.Attackers.Contains(battleCharacter)) { return(true); } if (battleCharacter.HasTarget && battleCharacter.CurrentTargetId == Core.Player.ObjectId) { return(true); } if (ChocoboManager.Object != null && battleCharacter.HasTarget && battleCharacter.CurrentTargetId == ChocoboManager.Object.ObjectId) { return(true); } if (!battleCharacter.IsFate && currentFate != null) { return(false); } if (currentFate != null && battleCharacter.FateId != currentFate.Id) { return(false); } if (currentFate == null || !currentFate.IsValid) { return(false); } return(!Core.Player.InCombat); }