PowBot LogoPowBot

Engine Daemons API

Built-in engine daemons run in the client (login helpers, death loot collection, world map closer, and similar). Use engine_daemons to list them, read state, and enable or disable specific daemons or all at once.

Global: engine_daemons

Constants

engine_daemons.Daemon

String enum for type-safe daemon selection (each field is the daemon name string).

engine_daemons.Daemon.DEATH_COLLECT      -- "DeathCollect"
engine_daemons.Daemon.LEGACY_LOGIN       -- "LegacyLogin"
engine_daemons.Daemon.LOGIN_SPLASH       -- "LoginSplash"
engine_daemons.Daemon.MODERN_LOGIN       -- "ModernLogin"
engine_daemons.Daemon.WORLD_MAP_CLOSER   -- "WorldMapCloser"

Example:

engine_daemons:enable(engine_daemons.Daemon.DEATH_COLLECT)
engine_daemons:disable(engine_daemons.Daemon.LEGACY_LOGIN)

local on = engine_daemons:enabled(engine_daemons.Daemon.DEATH_COLLECT)
if on == nil then
    logger:warn("Daemon not found")
elseif on then
    logger:info("Death collection is enabled")
end

Registry methods

enable

engine_daemons:enable(daemon_name: string) -> boolean

Enable a single daemon by name. Pass a literal string or an engine_daemons.Daemon.* value (they are strings).

Parameters:

ParameterTypeRequiredDescription
daemon_namestringYesDaemon name, e.g. "DeathCollect" or engine_daemons.Daemon.DEATH_COLLECT

Returns:

  • boolean - True if the daemon was found and enabled; false if the name is not registered.

disable

engine_daemons:disable(daemon_name: string) -> boolean

Disable a single daemon by name.

Parameters:

ParameterTypeRequiredDescription
daemon_namestringYesDaemon name or engine_daemons.Daemon.*

Returns:

  • boolean - True if the daemon was found and disabled; false if not registered.

enabled

engine_daemons:enabled(daemon_name: string) -> boolean | nil

Check whether a specific daemon is enabled.

Parameters:

ParameterTypeRequiredDescription
daemon_namestringYesDaemon name or engine_daemons.Daemon.*

Returns:

  • boolean - True if enabled, false if disabled
  • nil - Daemon name not found

enable_all

engine_daemons:enable_all() -> nil

Enables every registered daemon.


disable_all

engine_daemons:disable_all() -> nil

Disables every registered daemon.


list

engine_daemons:list() -> table

Returns:

  • table - Array of daemon userdata objects (registry order, 1-based).

get

engine_daemons:get(name: string) -> userdata | nil

Parameters:

ParameterTypeRequiredDescription
namestringYesRegistered daemon name

Returns:

  • userdata | nil - Handle for that daemon, or nil if unknown.

names

engine_daemons:names() -> table

Returns:

  • table - Array of all registered daemon name strings.

Daemon object methods

Values from get or list support:

name

daemon:name() -> string

Returns:

  • string - This daemon’s name.

enable

daemon:enable() -> boolean

Returns:

  • boolean - True if enabling succeeded.

disable

daemon:disable() -> boolean

Returns:

  • boolean - True if disabling succeeded.

enabled

daemon:enabled() -> boolean | nil

Returns:

  • boolean | nil - Same semantics as registry lookup for this daemon’s name.

Available daemons

Name (string)Role
DeathCollectCollects items from gravestone after death.
LegacyLoginAuto-login via legacy username/password UI.
LoginSplashHandles the initial login splash screen.
ModernLoginAuto-login via modern login UI.
WorldMapCloserCloses the world map when it opens unexpectedly.

Discover names at runtime with engine_daemons:names() if the client adds more.


Example

for _, d in ipairs(engine_daemons:list()) do
    logger:info(d:name() .. " => " .. tostring(d:enabled()))
end

engine_daemons:enable_all()
engine_daemons:disable(engine_daemons.Daemon.LEGACY_LOGIN)

local death = engine_daemons:get("DeathCollect")
if death and not death:enabled() then
    death:enable()
end

  • Game API — Client/game state
  • Events API — React to ticks and actions where you do not need to toggle daemons