public static async Task BuyFCAction(GrandCompany grandCompany, int actionId) { await InteractWithNpc(GCNpc.OIC_Quartermaster, grandCompany); await Coroutine.Wait(5000, () => Talk.DialogOpen); if (!Talk.DialogOpen) { await InteractWithNpc(GCNpc.OIC_Quartermaster, grandCompany); await Coroutine.Wait(5000, () => Talk.DialogOpen); } if (Talk.DialogOpen) { Talk.Next(); await Coroutine.Wait(5000, () => Conversation.IsOpen); if (Conversation.IsOpen) { Conversation.SelectLine(0); await Coroutine.Wait(10000, () => FreeCompanyExchange.Instance.IsOpen); if (FreeCompanyExchange.Instance.IsOpen) { await Coroutine.Sleep(500); await FreeCompanyExchange.Instance.BuyAction(actionId); FreeCompanyExchange.Instance.Close(); } } } }
public static async Task GetToGCBase(GrandCompany grandCompany) { var GcBase = BaseLocations[grandCompany]; Logger.Info($"{grandCompany} {GcBase.Key} {GcBase.Value}"); await Navigation.GetTo(GcBase.Key, GcBase.Value); }
public static async Task InteractWithNpc(GCNpc npc, GrandCompany grandCompany) { var targetNpc = GameObjectManager.GetObjectByNPCId(NpcList[grandCompany][npc]); if (targetNpc == null || !targetNpc.IsWithinInteractRange) { await GetToGCBase(grandCompany); targetNpc = GameObjectManager.GetObjectByNPCId(NpcList[grandCompany][npc]); } if (targetNpc == null) { return; } if (!targetNpc.IsWithinInteractRange) { await Navigation.OffMeshMoveInteract(targetNpc); } if (targetNpc.IsWithinInteractRange) { targetNpc.Interact(); } }
public static async Task ActivateBuffs(int buff1, int buff2, GrandCompany grandCompany) { if (!FreeCompany.Instance.IsOpen) { AgentFreeCompany.Instance.Toggle(); await Coroutine.Wait(5000, () => FreeCompany.Instance.IsOpen); } var curActions = await AgentFreeCompany.Instance.GetCurrentActions(); var fcActions = await AgentFreeCompany.Instance.GetAvailableActions(); if (curActions.Length == 2) { if (FreeCompany.Instance.IsOpen) { FreeCompany.Instance.Close(); } return; } await GeneralFunctions.StopBusy(dismount : false); var buffs1 = fcActions.Select((n, index) => new { Action = n, Index = index }).FirstOrDefault(n => n.Action.id == buff1); var buffs2 = fcActions.Select((n, index) => new { Action = n, Index = index }).FirstOrDefault(n => n.Action.id == buff2); if (buffs1 == null && !curActions.Any(i => i.id == buff1)) { if (FreeCompany.Instance.IsOpen) { FreeCompany.Instance.Close(); } await GrandCompanyHelper.BuyFCAction(grandCompany, buff1); await Coroutine.Sleep(1000); //Logger.Info("Bought buff1"); if (!FreeCompany.Instance.IsOpen) { //Logger.Info("Opening window after buy"); AgentFreeCompany.Instance.Toggle(); await Coroutine.Wait(5000, () => FreeCompany.Instance.IsOpen); if (FreeCompany.Instance.IsOpen) { //Logger.Info("Buff 1 bought checking again"); FreeCompany.Instance.SelectActions(); await Coroutine.Wait(5000, () => FreeCompanyAction.Instance.IsOpen); fcActions = await AgentFreeCompany.Instance.GetAvailableActions(); buffs1 = fcActions.Select((n, index) => new { Action = n, Index = index }).FirstOrDefault(n => n.Action.id == buff1); } } } if (buffs2 == null && !curActions.Any(i => i.id == buff2)) { if (FreeCompany.Instance.IsOpen) { FreeCompany.Instance.Close(); } await GrandCompanyHelper.BuyFCAction(grandCompany, buff2); await Coroutine.Sleep(1000); //Logger.Info("Bought buff2"); if (!FreeCompany.Instance.IsOpen) { //Logger.Info("Opening window after buy"); AgentFreeCompany.Instance.Toggle(); await Coroutine.Wait(5000, () => FreeCompany.Instance.IsOpen); if (FreeCompany.Instance.IsOpen) { //Logger.Info("Buff 2 bought checking again"); FreeCompany.Instance.SelectActions(); await Coroutine.Wait(5000, () => FreeCompanyAction.Instance.IsOpen); fcActions = await AgentFreeCompany.Instance.GetAvailableActions(); buffs2 = fcActions.Select((n, index) => new { Action = n, Index = index }).FirstOrDefault(n => n.Action.id == buff2); } } } if (curActions.Length == 0) { //Log($"No Buffs: Activating"); if (!FreeCompanyAction.Instance.IsOpen) { FreeCompany.Instance.SelectActions(); await Coroutine.Wait(5000, () => FreeCompanyAction.Instance.IsOpen); } if (FreeCompanyAction.Instance.IsOpen) { if (buffs1 != null) { await FreeCompanyAction.Instance.EnableAction(buffs1.Index); } await Coroutine.Sleep(500); if (buffs2 != null) { await FreeCompanyAction.Instance.EnableAction(buffs2.Index); } } } else { if (!curActions.Any(i => i.id == buff1)) { Logger.Info("Buff 1 not active"); if (!FreeCompanyAction.Instance.IsOpen) { FreeCompany.Instance.SelectActions(); await Coroutine.Wait(5000, () => FreeCompanyAction.Instance.IsOpen); } if (FreeCompanyAction.Instance.IsOpen) { if (buffs1 != null) { await FreeCompanyAction.Instance.EnableAction(buffs1.Index); } } } else { Logger.Info("Buff 2 not active"); if (!FreeCompanyAction.Instance.IsOpen) { FreeCompany.Instance.SelectActions(); await Coroutine.Wait(5000, () => FreeCompanyAction.Instance.IsOpen); } if (FreeCompanyAction.Instance.IsOpen) { if (buffs2 != null) { await FreeCompanyAction.Instance.EnableAction(buffs2.Index); } } } } if (FreeCompany.Instance.IsOpen) { FreeCompany.Instance.Close(); } }
public static uint GetNpcByType(GCNpc npc, GrandCompany grandCompany) { return(NpcList[grandCompany][npc]); }