Yield to the normal interaction timing
if (!LokiPoe.IsInGame)
return;
await Coroutines.FinishCurrentAction();
await Coroutines.LatencyWait();Use inside the bot's asynchronous workflow. Do not block the bot thread with Thread.Sleep.
Asynchronous helpers for timing, interaction and common game actions. Await these helpers within the bot workflow.
Namespace: DreamPoeBot.Loki.Bot
public static class CoroutinesView DPB2 version →using System;
using System.Linq;
using DreamPoeBot.Loki.Game;
using DreamPoeBot.Loki.Game.Objects;
using DreamPoeBot.Loki.Bot;
using DreamPoeBot.Loki.Bot.Pathfinding;
using DreamPoeBot.Loki.Common;if (!LokiPoe.IsInGame)
return;
await Coroutines.FinishCurrentAction();
await Coroutines.LatencyWait();Use inside the bot's asynchronous workflow. Do not block the bot thread with Thread.Sleep.
public static Task Coroutines.CloseBlockingWindows()
Close ALL the game Ui windows. you usually call this before to interact with some world object (npc, loot, moster, areatransation etc etc)
Returns: An asynchronous operation. Await it before reading the result or continuing the workflow.
public static Task<Vector2i> Coroutines.ExInteractWith(NetworkObject obj, bool holdCtrl = false, int timeout = 1000)
Attempts to interact with a game object and returns the character's interaction position. The character may move into range when necessary. For WorldItems, this overload allows the game to equip the collected item automatically when the game permits it.
objNetworkObjectholdCtrlbooltimeoutintReturns: The interaction position when successful; otherwise, DreamPoeBot.Common.Vector2i.Zero.
public static Task<Vector2i> Coroutines.ExInteractWith<T>(NetworkObject obj, bool holdCtrl, int timeout)
Attempts to interact with a game object of the requested type and returns the character's interaction position. The character may move into range when necessary. For WorldItems, this overload allows the game to equip the collected item automatically when the game permits it.
objNetworkObjectholdCtrlbooltimeoutintReturns: The interaction position when successful; otherwise, DreamPoeBot.Common.Vector2i.Zero.
public static Task<Vector2i> Coroutines.ExInteractWith<T>(NetworkObject obj, bool holdCtrl = false, int timeout = 1000, bool autoEquip = true)
Attempts to interact with a game object of the requested type and returns the character's interaction position. The character may move into interaction range when necessary.
objNetworkObjectholdCtrlbooltimeoutintautoEquipboolReturns: The interaction position when successful; otherwise, DreamPoeBot.Common.Vector2i.Zero.
public static Task Coroutines.FinishCurrentAction(bool resetInput = true)
This function make sure we are not actually performing another action, and if so, it wait till the end of that action, or the default timeout (5000ms). You usually call this to make sure a previous action you performed (cast a non instant skill, MoveToward etc etc) run to completition, before to perform another one.
resetInputboolReturns: An asynchronous operation. Await it before reading the result or continuing the workflow.
public static Task<bool> Coroutines.InteractWith(NetworkObject obj, bool holdCtrl = false)
Attempts to interact with a game object, such as an item, NPC, chest, portal or area transition. The character may move into interaction range when necessary. For WorldItems, this overload allows the game to equip the collected item automatically when the game permits it.
objNetworkObjectholdCtrlboolReturns: True when the interaction was started successfully; otherwise, false.
public static Task<bool> Coroutines.InteractWith<T>(NetworkObject obj, bool holdCtrl)
Attempts to interact with a game object of the requested type. The character may move into interaction range when necessary. For WorldItems, this overload allows the game to equip the collected item automatically when the game permits it.
objNetworkObjectholdCtrlboolReturns: True when the interaction was started successfully; otherwise, false.
public static Task<bool> Coroutines.InteractWith<T>(NetworkObject obj, bool holdCtrl = false, bool autoEquip = true)
Attempts to interact with a game object of the requested type. The character may move into interaction range when necessary.
objNetworkObjectholdCtrlboolautoEquipboolReturns: True when the interaction was started successfully; otherwise, false.
public static Task<int> Coroutines.LatencyWait()
This is a convenient method to pause The bot execution for a number of ms equal to your actual average latency multiplied for the LatencyFactor. Usually used after the execution of an action, this make sure the game has time to send the current action to the server and recieve an answer.
Returns: The number of ms the bot paused for.
public static Task<int> Coroutines.LatencyWait(float factor)
This is a convenient method to pause The bot execution for a number of ms equal to your actual average latency multiplied for the factor parameter. Usually used after the execution of an action, this make sure the game has time to send the current action to the server and recieve an answer.
factorfloatReturns: An asynchronous operation. Await it before reading the result or continuing the workflow.
public static Task<LootResult> Coroutines.Loot(NetworkObject obj, bool shouldMove, int tmeout)
Attempts to pick up a WorldItem. When shouldMove is enabled, the character may move into interaction range before picking it up. This overload allows the game to equip the collected item automatically when the game permits it.
objNetworkObjectshouldMovebooltmeoutintReturns: DreamPoeBot.Loki.Game.LootResult.None when the interaction was started; otherwise, a value describing why it could not be started.
public static Task<LootResult> Coroutines.Loot(NetworkObject obj, bool shouldMove = true, int tmeout = 250, bool autoEquip = true)
Attempts to pick up a WorldItem. When shouldMove is enabled, the character may move into interaction range before picking it up.
objNetworkObjectshouldMovebooltmeoutintautoEquipboolReturns: DreamPoeBot.Loki.Game.LootResult.None when the interaction was started; otherwise, a value describing why it could not be started.
public static Task<int> Coroutines.ReactionWait()
Executes the reaction wait operation.
Returns: An asynchronous operation. Await it before reading the result or continuing the workflow.
public static int Coroutines.FinishCurrentActionTimeout { get; set; }
Set the `FinishCurrentAction` Timeout value. Default value is 5000ms.
public static float Coroutines.LatencyFactor { get; set; }
Set the Factor we multiply the actual latency for, in LatencyWait().
public static int Coroutines.ReactionMaxSleepDelay { get; set; }
Set the Max sleep value for ReactionWait.
public static int Coroutines.ReactionMinSleepDelay { get; set; }
Set the Min sleep value for ReactionWait.
DPB1 0.3.29.47 · Reference reviewed 2026-10-02. Descriptions use source summaries where available, otherwise concise signature-based descriptions. Examples illustrate usage; they are not a live-game test.