private async Task<bool> Main() { if (Talk.DialogOpen) { Talk.Next(); return true; } if (SelectYesno.IsOpen) { SelectYesno.ClickYes(); return true; } if (JournalResult.IsOpen) { await Coroutine.Wait(1000, () => JournalResult.ButtonClickable); JournalResult.Complete(); return true; } // Movement if (Me.Distance(NpcLocation) > 3.5) { StatusText = "Moving to Npc -> " + NpcId; await Behaviors.MoveTo(NpcLocation, radius: 3.4f, name: " NpcId: " + NpcId); return true; } if (!interactTimeout.IsRunning) { interactTimeout.Restart(); } // Interact if (Core.Target == null && Me.Distance(NpcLocation) <= 3.5) { GameObjectManager.GetObjectByNPCId(NpcId).Interact(); return true; } if (SelectString.IsOpen) { if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0) { SelectString.ClickSlot(uint.MaxValue); isDone = true; return true; } SelectString.ClickLineContains(LeveType); return true; } var guildLeveWindow = new GuildLeve(); if (guildLeveWindow.IsValid) { if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0) { await guildLeveWindow.CloseInstance(); return true; } foreach (var leveId in Ids.Where(id => !GuildLeve.HasLeve(id))) { if (GuildLeve.Allowances > 0) { StatusText = "Picking up Leve -> " + leveId; Logger.Info("Picking up Leve: " + leveId); await Coroutine.Sleep(1000); guildLeveWindow.AcceptLeve(leveId); await Coroutine.Yield(); // so our memory lock updates and level allowances change } } await Coroutine.Sleep(1000); return true; } // Interact if targetting but not null (if combat behaviors prevented the first one) if (Me.Distance(NpcLocation) <= 3.5) { GameObjectManager.GetObjectByNPCId(NpcId).Interact(); return true; } return true; }
protected override async Task<bool> Main() { if (Talk.DialogOpen) { await HandleTalk(); return true; } if (SelectYesno.IsOpen) { SelectYesno.ClickYes(); await Coroutine.Yield(); return true; } if (JournalResult.IsOpen) { await Coroutine.Wait(1000, () => JournalResult.ButtonClickable); JournalResult.Complete(); await Coroutine.Yield(); return true; } // Movement if (ExProfileBehavior.Me.Distance(Location) > 3.5) { StatusText = Localization.Localization.ExPickupGuildLeve_Move + NpcId; await Location.MoveTo(radius: 3.4f, name: " NpcId: " + NpcId); return true; } if (!interactTimeout.IsRunning) { interactTimeout.Restart(); } // Interact if (Core.Target == null && ExProfileBehavior.Me.Distance(Location) <= 3.5) { await this.Interact(); await Coroutine.Yield(); return true; } if (SelectString.IsOpen) { if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0) { SelectString.ClickSlot(uint.MaxValue); isDone = true; return true; } SelectString.ClickLineContains(LeveType); return true; } var guildLeveWindow = new GuildLeve(); if (guildLeveWindow.IsValid) { if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0) { await guildLeveWindow.CloseInstance(); return true; } foreach (var leveId in Ids.Where(id => !GuildLeve.HasLeve(id))) { if (GuildLeve.Allowances > 0) { StatusText = Localization.Localization.ExPickupGuildLeve_Pickup + leveId; Logger.Info(Localization.Localization.ExPickupGuildLeve_Pickup2 + leveId); await Coroutine.Sleep(1000); guildLeveWindow.AcceptLeve(leveId); await Coroutine.Yield(); // so our memory lock updates and level allowances change } } await Coroutine.Sleep(1000); return true; } // Interact if targetting but not null (if combat behaviors prevented the first one) if (ExProfileBehavior.Me.Distance(Location) <= 3.5) { await this.Interact(); return true; } return true; }
protected override async Task <bool> Main() { if (Talk.DialogOpen) { await HandleTalk(); return(true); } if (SelectYesno.IsOpen) { SelectYesno.ClickYes(); await Coroutine.Yield(); return(true); } if (JournalResult.IsOpen) { await Coroutine.Wait(1000, () => JournalResult.ButtonClickable); JournalResult.Complete(); await Coroutine.Yield(); return(true); } // Movement if (ExProfileBehavior.Me.Distance(Location) > 3.5) { StatusText = Localization.Localization.ExPickupGuildLeve_Move + NpcId; await Location.MoveTo(radius : 3.4f, name : " NpcId: " + NpcId); return(true); } if (!interactTimeout.IsRunning) { interactTimeout.Restart(); } // Interact if (Core.Target == null && ExProfileBehavior.Me.Distance(Location) <= 3.5) { await this.Interact(); await Coroutine.Yield(); return(true); } if (SelectString.IsOpen) { if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0) { SelectString.ClickSlot(uint.MaxValue); isDone = true; return(true); } SelectString.ClickLineContains(LeveType); return(true); } var guildLeveWindow = new GuildLeve(); if (guildLeveWindow.IsValid) { if (interactTimeout.Elapsed.TotalSeconds > Timeout || GuildLeve.HasLeves(Ids) || GuildLeve.Allowances == 0) { await guildLeveWindow.CloseInstance(); return(true); } foreach (var leveId in Ids.Where(id => !GuildLeve.HasLeve(id))) { if (GuildLeve.Allowances > 0) { StatusText = Localization.Localization.ExPickupGuildLeve_Pickup + leveId; Logger.Info(Localization.Localization.ExPickupGuildLeve_Pickup2 + leveId); await Coroutine.Sleep(1000); guildLeveWindow.AcceptLeve(leveId); await Coroutine.Yield(); // so our memory lock updates and level allowances change } } await Coroutine.Sleep(1000); return(true); } // Interact if targetting but not null (if combat behaviors prevented the first one) if (ExProfileBehavior.Me.Distance(Location) <= 3.5) { await this.Interact(); return(true); } return(true); }