Complete reference for SDK types and facades. Entity member lists mirror shared/titan headers in the TitanClient SDK repo.
Table of Contents
Entity Types — Tile, WorldPos, LocalPoint, WorldArea, ScreenPoint, Player, Npc, TileObject, GroundItem, Item, Projectile, Actor
Enums & Constants — Skill, Prayer, HeadIcon, EquipmentSlot, InventoryID, Layer, MenuAction, CollisionFlag, VarPlayerID, Varbits, InterfaceIds, BankSets
Events — MenuClickEvent, ChatMessageEvent, ItemContainerChangedEvent, VarbitChangedEvent, ScriptEvent
Queries — NpcQuery, PlayerQuery, ObjectQuery, GroundItemQuery, InventoryQuery, ProjectileQuery
State Facades — client, camera, skills, prayers, vars, walk, widgets, collisions, cache, hider, script, login, idle, world, itemContainer, itemDef
Utilities — Inventory, Dialogue, Combat, Equipment, Bank, Walk
Top-Level Helpers — Logging, Scheduling, Keyboard, Overlay, OverlayPanel, Plugins
SDK Headers
Registration Macros
Compiler Compatibility
Entity Types
Entity types are lightweight value wrappers returned by queries and facades.
They provide direct accessors into game state and convenience helpers for
interaction, distance checks, and identity comparison.
Member lists below mirror shared/titan/actor.h (and related headers) in the SDK repo.
World-placed entities derive positional helpers from the Locatable<T> CRTP mixin:
tile(), worldPoint(), localPoint(), and distanceTo(...)
(see shared/titan/actor.h). Primitive fields such as tileX() / worldX()
are listed on each type where applicable.
Tile
A world-space tile coordinate with plane. Used throughout the API to express positions.
Member Signature Description
xint32_tWorld X coordinate
yint32_tWorld Y coordinate
planeint32_tMap plane (0–3)
distanceToint32_t distanceTo(const Tile&) constChebyshev distance to another tile (INT_MAX across planes)
distanceTo2Dint32_t distanceTo2D(const Tile&) constChebyshev distance ignoring plane
isInScenebool isInScene(int32_t sceneSizeX, int32_t sceneSizeY) constBounds check in scene tile space
operator==bool operator==(const Tile&) constEquality comparison
operator!=bool operator!=(const Tile&) constInequality comparison
WorldPos / WorldPoint
Absolute world tile coordinates. WorldPoint is a type alias for WorldPos. The z field is the map plane (same role as Tile::plane).
Member Type Description
xint32_tWorld X coordinate
yint32_tWorld Y coordinate
zint32_tMap plane (0 = ground, upper floors 1–3)
distanceToint32_t distanceTo(const WorldPos&) constChebyshev distance (INT_MAX across planes)
distanceTo2Dint32_t distanceTo2D(const WorldPos&) constChebyshev distance ignoring plane
regionIdint32_t regionId() constJagex region id from world tiles
regionX / regionYint32_tTile position within 64×64 region
dx / dy / dzWorldPos dx(int32_t) const (etc.)Offset copies
operator== / operator!=— Equality
LocalPoint
Sub-tile scene coordinates. Each tile is 128 local units wide (shared/titan/local_point.h).
Member Signature Description
xint32_tSub-tile scene X
yint32_tSub-tile scene Y
sceneX / sceneYint32_t sceneX() const (etc.)Tile indices (x >> 7, y >> 7)
distanceToint32_t distanceTo(const LocalPoint&) constEuclidean distance in sub-tile units
isInScenebool isInScene(int32_t sceneSizeX, int32_t sceneSizeY) constBounds check
fromScenestatic LocalPoint fromScene(int32_t sceneX, int32_t sceneY)Center of a scene tile
WorldArea
An axis-aligned rectangle in world coordinates with a plane.
Member Signature Description
xint32_tOrigin X
yint32_tOrigin Y
widthint32_tWidth in tiles
heightint32_tHeight in tiles
planeint32_tMap plane
containsbool contains(int x, int y, int plane) constPoint containment test
containsbool contains(Tile) constTile containment test
distanceToint32_t distanceTo(WorldArea) constMinimum edge-to-edge distance
ScreenPoint
A 2D screen-space pixel coordinate.
Member Type Description
xint32_tHorizontal pixel offset
yint32_tVertical pixel offset
Player
Represents a player entity in the current world view. Inherits Locatable helpers.
Method Signature Description
rawconst TitanPluginSdk::PlayerState& raw() constUnderlying ABI snapshot
namestd::string name() constDisplay name
tileX / tileY / planeint32_tScene tile / plane
worldX / worldYint32_tAbsolute world tiles
preciseX / preciseYint32_tFine-grained coordinates from client state
orientationint32_t orientation() constFacing direction
animationint32_t animation() constCurrent animation id (-1 if none)
combatLevelint32_t combatLevel() constCombat level
hashIndexint32_t hashIndex() constStable index in the player table
interactingIndexint32_t interactingIndex() constTarget entity index from client
interactingTypeuint8_t interactingType() constTarget entity kind
interactingPhaseuint8_t interactingPhase() constInteraction lifecycle (SDK v44+)
isInteractingbool isInteracting() constMatches client “actively interacting” predicate
entityPtruint64_t entityPtr() constRaw ClientPlayer* when populated
overheadIconint32_t overheadIcon() constPrayer icon ordinal or -1
skullIconint32_t skullIcon() constSkull icon ordinal or -1
isOverheadActivebool isOverheadActive() constAny prayer icon active
isOverheadActivebool isOverheadActive(HeadIcon icon) constSpecific prayer icon
isSkulledbool isSkulled() constPvP skull displayed
isStationarybool isStationary() constNo pending movement
isAnimatingbool isAnimating() constanimation() != -1
isIdlebool isIdle() constStationary and not animating
isHiddenbool isHidden() constFiltered / hidden entity
healthRatioint32_t healthRatio() constHeadbar fill (or -1 if no bar). SDK v48+
healthScaleint32_t healthScale() constHeadbar max width (or -1). SDK v48+
healthPercentfloat healthPercent() constHealth in [0,1], or -1 without a bar. SDK v48+
hasHealthBarbool hasHealthBar() constAny active headbar present. SDK v48+
isDeadbool isDead() constActive headbar at exactly 0%. SDK v48+
interactingActor interacting() constResolved interaction target
Npc
Represents an NPC entity in the current world view. Inherits Locatable helpers.
Method Signature Description
rawconst TitanPluginSdk::NpcState& raw() constUnderlying ABI snapshot
namestd::string name() constNPC name
idint32_t id() constNPC definition id
tileX / tileY / planeint32_tScene tile / plane
worldX / worldYint32_tAbsolute world tiles
preciseX / preciseYint32_tFine-grained coordinates
animationint32_t animation() constCurrent animation id
orientationint32_t orientation() constFacing direction
hashIndexint32_t hashIndex() constNPC hash index for menus / interaction
interactingIndexint32_t interactingIndex() constTarget entity index
interactingTypeuint8_t interactingType() constTarget entity kind
interactingPhaseuint8_t interactingPhase() constInteraction lifecycle (SDK v44+)
isInteractingbool isInteracting() constActive interaction predicate
sizeX / sizeYint32_tOccupied tiles (footprint)
entityPtruint64_t entityPtr() constRaw ClientNpc* when populated
overheadIconint32_t overheadIcon() constCache-default head icon graphics ordinal
hasHeadIconOverridebool hasHeadIconOverride() constRuntime head-icon override active
isOverheadActivebool isOverheadActive() constDefault icon or override visible
isOverheadActivebool isOverheadActive(HeadIcon icon) constSpecific cache-default icon
isAnimatingbool isAnimating() constanimation() != -1
healthRatioint32_t healthRatio() constHeadbar fill (or -1 if no bar). SDK v48+
healthScaleint32_t healthScale() constHeadbar max width (or -1). SDK v48+
healthPercentfloat healthPercent() constHealth in [0,1], or -1 without a bar. SDK v48+
hasHealthBarbool hasHealthBar() constAny active headbar present. SDK v48+
isDeadbool isDead() constActive headbar at exactly 0%. SDK v48+
hasActionbool hasAction(const char*) const / bool hasAction(const std::string&) constRight-click action substring match
interactbool interact(const char*) const / bool interact(const std::string&) constQueue menu action by name
interactingActor interacting() constResolved interaction target
TileObject
Represents a scene object (wall, decoration, game object, etc.). Inherits Locatable helpers.
Method Signature Description
rawconst TitanPluginSdk::TileObjectState& raw() constUnderlying ABI snapshot
namestd::string name() constObject display name
typeNamestd::string typeName() constClassification string from host (state_.type)
idint32_t id() constLoc definition id
tileX / tileY / planeint32_tScene tile / plane
worldX / worldYint32_tAbsolute world tiles
sizeX / sizeYint32_tFootprint in tiles
packedIduint64_t packedId() constEngine-packed loc id
entityPtruint64_t entityPtr() constRaw Loc* for clickbox / overlays when populated
layerint32_t layer() constWall / Decor / Scenery / GroundDecor (or -1)
hasActionbool hasAction(const char*) const / bool hasAction(const std::string&) constRight-click action substring match
interactbool interact(const char*) const / bool interact(const std::string&) constQueue menu action by name
GroundItem
Represents an item on the ground. Inherits Locatable helpers.
Method Signature Description
rawconst TitanPluginSdk::GroundItemState& raw() constUnderlying ABI snapshot
namestd::string name() constItem name
idint32_t id() constItem definition id
quantityint32_t quantity() constStack size
ownershipTypeuint32_t ownershipType() constRaw ClientObj ownership (0=None, 1=SelfPlayer, 2=OtherPlayer, 3=GroupIronman). SDK v50+
ownershipGroundItemOwnership ownership() constTyped ownership enum. SDK v50+
canLootbool canLoot() constWhether the item is lootable for the current account mode (uses Varbits::ACCOUNT_TYPE). SDK v50+
tileX / tileY / planeint32_tScene tile / plane
worldX / worldYint32_tAbsolute world tiles
interactbool interact(const char*) const / bool interact(const std::string&) constQueue ground-item action
Item
Represents an item in an inventory slot.
Method Signature Description
rawconst TitanPluginSdk::InventoryItemState& raw() constUnderlying ABI snapshot
namestd::string name() constItem name
idint32_t id() constItem definition id
quantityint32_t quantity() constStack size
slotint32_t slot() constInventory slot index
interactbool interact(const char*) const / bool interact(const std::string&) constQueue inventory action
useOnbool useOn(const Item&) constUse on another inventory item
useOnbool useOn(const Npc&) constUse on an NPC
useOnbool useOn(const TileObject&) constUse on a scene object
Projectile
A projectile currently in flight. Inherits Locatable helpers; tileX/tileY are derived from interpolated scene position.
Method Signature Description
rawconst TitanPluginSdk::ProjectileState& raw() constUnderlying ABI snapshot
spotAnimIdint32_t spotAnimId() constSpot animation graphics id
startTick / endTickint32_tLifecycle ticks
startX / startZint32_tStart position (projectile coordinate space)
targetX / targetZint32_tTarget position
sourceEntity / targetEntityint32_tEncoded source/target entity ids from client state
planeint32_t plane() constMap plane
worldX / worldYint32_tAbsolute world tiles
tileX / tileYint32_tScene tile indices from current interpolation
sceneX / sceneY / sceneZint32_tScene-local fine coordinates
basePtruint64_t basePtr() constRaw projectile instance pointer
hasMovedbool hasMoved() constInterpolation has advanced
Actor
A tagged union that holds either a Player or an Npc. Returned by interacting() on player/NPC entities.
Method Signature Description
isPlayer / isNpc / isEmptyboolVariant tests (isEmpty when unresolved)
asPlayer / asNpcconst Player* / const Npc*Nonnull only for matching kind
namestd::string name() constForwarded from underlying entity
tileTile tile() constWorld tile
worldPointWorldPoint worldPoint() constAbsolute world position
localPointLocalPoint localPoint() constScene-local fine position
distanceToint32_t distanceTo(const Tile&) constChebyshev distance to tile
healthRatioint32_t healthRatio() constDelegated headbar fill, or -1
healthScaleint32_t healthScale() constDelegated headbar max width, or -1
healthPercentfloat healthPercent() constDelegated health percent or -1
hasHealthBarbool hasHealthBar() constDelegated health-bar presence
isDeadbool isDead() constDelegated dead predicate
interactbool interact(const char*) const / bool interact(const std::string&) constNPC only; no-op for players
isOverheadActivebool isOverheadActive() constDelegates to player/NPC
isOverheadActivebool isOverheadActive(HeadIcon icon) constSpecific icon match
Enums & Constants
enum class Skill : int
All 25 character skills. Use with state::skills() for stat lookups.
Value Ordinal
ATTACK0
DEFENCE1
STRENGTH2
HITPOINTS3
RANGED4
PRAYER5
MAGIC6
COOKING7
WOODCUTTING8
FLETCHING9
FISHING10
FIREMAKING11
CRAFTING12
SMITHING13
MINING14
HERBLORE15
AGILITY16
THIEVING17
SLAYER18
FARMING19
RUNECRAFT20
HUNTER21
CONSTRUCTION22
SAILING23
COUNT24
SkillInfo helpers
Function Signature Description
nameconst char* SkillInfo::name(Skill) / name(int)Human-readable skill name
enum class Prayer
All standard prayers and Ruinous Powers. Use with state::prayers().isActive().
Standard Prayers
THICK_SKIN, BURST_OF_STRENGTH, CLARITY_OF_THOUGHT, SHARP_EYE, MYSTIC_WILL
ROCK_SKIN, SUPERHUMAN_STRENGTH, IMPROVED_REFLEXES, RAPID_RESTORE, RAPID_HEAL
PROTECT_ITEM, HAWK_EYE, MYSTIC_LORE, STEEL_SKIN, ULTIMATE_STRENGTH
INCREDIBLE_REFLEXES, PROTECT_FROM_MAGIC, PROTECT_FROM_MISSILES, PROTECT_FROM_MELEE
EAGLE_EYE, MYSTIC_MIGHT, RETRIBUTION, REDEMPTION, SMITE
PRESERVE, CHIVALRY, PIETY, RIGOUR, AUGURY
Ruinous Powers
RUINOUS_POWERS and additional ruinous prayer variants. COUNT marks the total.
PrayerInfo helpers
Function Signature Description
varbitIdint PrayerInfo::varbitId(Prayer)Varbit ID that tracks whether this prayer is active
nameconst char* PrayerInfo::name(Prayer)Human-readable prayer name
enum class HeadIcon : int
Overhead prayer icons shown above actors.
Value Description
MELEEProtect from Melee icon
RANGEDProtect from Missiles icon
MAGICProtect from Magic icon
RETRIBUTIONRetribution icon
SMITESmite icon
REDEMPTIONRedemption icon
PRAYER_DEFLECT_MELEERuinous deflect melee
PRAYER_DEFLECT_MISSILESRuinous deflect missiles
PRAYER_DEFLECT_MAGICRuinous deflect magic
WRATHWrath icon
SOUL_SPLITSoul Split icon
NONENo overhead
COUNTSentinel value
HeadIconInfo helpers
Function Signature Description
isValidbool HeadIconInfo::isValid(int)Check if raw value maps to a known icon
fromRawHeadIcon HeadIconInfo::fromRaw(int)Convert raw int to HeadIcon
nameconst char* HeadIconInfo::name(HeadIcon)Full display name
shortNameconst char* HeadIconInfo::shortName(HeadIcon)Abbreviated label
coloruint32_t HeadIconInfo::color(HeadIcon)Associated UI color
isPrayerbool HeadIconInfo::isPrayer(HeadIcon)True for standard prayer icons
isCursebool HeadIconInfo::isCurse(HeadIcon)True for ruinous/curse icons
enum class EquipmentSlot : int32_t
Worn equipment slots.
Value Description
HEADHelmet slot
CAPECape slot
AMULETNecklace slot
WEAPONMain-hand weapon
BODYChest armour
SHIELDOff-hand / shield
LEGSLeg armour
GLOVESHand slot
BOOTSFeet slot
RINGRing slot
AMMOAmmunition slot
EquipmentSlotInfo helpers
Function Signature Description
nameconst char* EquipmentSlotInfo::name(EquipmentSlot)Slot display name
slotWidgetPackedIduint32_t EquipmentSlotInfo::slotWidgetPackedId(EquipmentSlot)Packed widget ID for this slot's equipment interface
isValidbool EquipmentSlotInfo::isValid(int)Check if ordinal maps to a known slot
fromOrdinalEquipmentSlot EquipmentSlotInfo::fromOrdinal(int)Convert ordinal to EquipmentSlot
kSlotCountconstexpr intTotal number of equipment slots
kWornItemsGroupconstexpr intWidget group for worn items interface
enum class InventoryID
Well-known item container identifiers.
Value Container ID Description
INVENTORY93 Player backpack
EQUIPMENT94 Worn equipment
BANK95 Bank storage
enum class Layer : uint8_t
Overlay rendering layers for draw ordering.
Value Description
AboveSceneDrawn above 3D scene, below UI widgets
AboveWidgetsDrawn above all game UI widgets
enum class LoginGameState
Mirrors the game's ABI login state machine. Use with state::login().state().
DoAction opcode constants and helpers for constructing menu interactions.
enum class MenuAction::Id
Category Values
NPC options NPC_FIRST_OPTION through NPC_FIFTH_OPTION
Object options OBJECT_FIRST_OPTION through OBJECT_FIFTH_OPTION
Player options PLAYER_FIRST_OPTION through PLAYER_EIGHTH_OPTION
Ground item options GROUND_ITEM_FIRST_OPTION through GROUND_ITEM_FIFTH_OPTION
Widget options WIDGET_FIRST_OPTION through WIDGET_SIXTH_OPTION
Widget CC variants WIDGET_CC family variants
Examine EXAMINE_NPC, EXAMINE_OBJECT, EXAMINE_ITEM
Movement WALK
Misc CANCEL
MenuAction helpers
Function Signature Description
normalizeint normalize(int opcode)Normalize variable opcodes to their base form
isWidgetCcFamilybool isWidgetCcFamily(int opcode)True if opcode belongs to the CC widget family
isCcOpFamilybool isCcOpFamily(int opcode)True if opcode belongs to the CC-OP family
nameForconst char* nameFor(int opcode)Human-readable label for the opcode
MenuAction::Entry
A fully-specified menu action ready for dispatch via client().invokeMenuAction().
Field Type Description
opcodeintAction opcode
packedIdintPacked identifier
param0intFirst parameter
param1intSecond parameter
worldViewIdintWorld view index (default -1)
namespace CollisionFlag
Bitfield constants for collision map flags. Use with state::collisions().flag().
Category Constants
Basic OPEN, FULL, FLOOR, FLOOR_DECORATION
Objects OBJECT
Walls WALL_* directional variants (N, E, S, W, NE, NW, SE, SW)
Object blocking OBJECT_BLOCK_* directional variants
Line of sight LINE_OF_SIGHT_* directional variants
Composite Pre-built mask combinations for common pathing checks
namespace VarPlayerID
Named constants for commonly used VarPlayer (varp) IDs. Use with state::vars().varp().
Constant Description
ATTACK_STYLECurrently selected attack style index
SPECIAL_ATTACKSpecial attack energy (0–1000, divide by 10 for %)
RUN_ENABLEDRun toggle state (1 = on, 0 = off). For actual energy use state::client().runEnergy()
SPECIAL_ATTACK_ENABLEDWhether the spec orb is toggled on
POISONCurrent poison/venom level
AUTO_RETALIATEAuto-retaliate toggle state
DISEASEDisease state
HP_HUD_1Hitpoints HUD slot 1
HP_HUD_2Hitpoints HUD slot 2
PRAYER_POINTSPrayer points display
WEIGHTDeprecated — use state::client().weight() instead
namespace Varbits
Named constants for commonly used varbit IDs. Large catalog covering prayers, potions, diaries, bank UI, raids, quests, and more. Use with state::vars().varbit().
Function Signature Description
nameOfconst char* Varbits::nameOf(int)Human-readable label for a varbit ID (returns nullptr if unknown)
namespace InterfaceIds
Packed widget ID constants for commonly used game interfaces.
Function / Group Description
pack(group, child)Pack a group + child pair into a single uint32_t
Continue candidates Widget IDs for "Click here to continue" prompts
Make / Quest / Dialog Crafting, quest log, and dialog interfaces
Bank / GE / PIN Bank interface, Grand Exchange, bank PIN entry
namespace BankSets
Pre-built sets of bank-related object IDs for proximity checks.
Constant / Function Description
kBoothsSet of bank booth object IDs
kChestsSet of bank chest object IDs
kDepositBoxesSet of deposit box object IDs
kAllBanksAndChestsUnion of all booth and chest IDs
isBankObject(int id)Returns true if the object ID is any known bank interactable
Events
Events are delivered to your plugin's onMenuClick, onChatMessage,
onItemContainerChanged, onVarbitChanged, and onScript callbacks.
Each event type exposes read-only accessors and, where applicable, a consume() method to
prevent the action from reaching the game.
Method Signature Description
opcodeint opcode() constMenuAction opcode
packedIdint packedId() constPacked identifier
param0int param0() constFirst action parameter
param1int param1() constSecond action parameter
worldViewIdint worldViewId() constWorld view index
clickXint clickX() constMouse click X
clickYint clickY() constMouse click Y
actionTextconst char* actionText() constAction verb text (e.g. "Attack")
targetTextconst char* targetText() constTarget text (e.g. "Goblin")
consumevoid consume()Prevent this action from reaching the game
consumedbool consumed() constWhether the event has been consumed
rawconst RawMenuClick& raw() constAccess the raw ABI struct
ChatMessageEvent
Method Signature Description
typeint type() constChat message type ID
nameconst char* name() constSender display name
messageconst char* message() constMessage body text
senderconst char* sender() constChat channel / clan source
gameTickint gameTick() constTick the message arrived on
rawconst RawChatMessage& raw() constAccess the raw ABI struct
ItemContainerChangedEvent
Method Signature Description
containerIdint containerId() constContainer that changed (see InventoryID )
capacityint capacity() constMaximum slot count
gameTickint gameTick() constTick the change occurred on
sizeint size() constNumber of occupied slots
itemsconst Slot* items() constPointer to slot array
slotSlot slot(int i) constAccess a specific slot by index
ItemContainerChangedEvent::Slot
Field Type Description
idintItem definition ID (0 = empty)
quantityintStack quantity
VarbitChangedEvent
Method Signature Description
varbitIdint varbitId() constVarbit that changed
oldValueint oldValue() constPrevious value
newValueint newValue() constCurrent value
gameTickint gameTick() constTick the change occurred on
deltaint delta() constnewValue - oldValue
ScriptEvent
Method Signature Description
scriptIdint scriptId() constClientScript ID that executed
argsconst int* args() constInput argument array
resultsconst int* results() constOutput result array
argint arg(int i, int default = 0) constSafe indexed argument access
resultint result(int i, int default = 0) constSafe indexed result access
Queries
Queries are lazy, chainable pipelines created via factory functions in the
titan::queries namespace. Each query follows a builder pattern:
chain zero or more filter methods, then call a terminal to
materialize results.
Common Terminal Methods
Every query type supports these terminal operations:
Terminal Returns Description
count()intNumber of matching entities
any()boolTrue if at least one match exists
empty()boolTrue if no matches exist
first()optional<T>First matching entity (empty if none)
forEach(fn)voidInvoke callback for each match
toVector()vector<T>Collect all matches into a vector
NpcQuery — npcs()
Factory: titan::queries::npcs()
Filter Signature Description
whereNpcQuery& where(predicate)Custom predicate filter
nameContainsNpcQuery& nameContains(const char*)Name contains substring (case-insensitive)
nameEqualsNpcQuery& nameEquals(const char*)Exact name match
namesAnyOfNpcQuery& namesAnyOf(initializer_list)Name matches any in list
idNpcQuery& id(int)Filter by definition ID
idsNpcQuery& ids(initializer_list)Filter by any of the given IDs
hasActionNpcQuery& hasAction(const char*)Has the given right-click action
notTargetedByOtherPlayersNpcQuery& notTargetedByOtherPlayers()Exclude NPCs targeted by others
interactingWithNpcQuery& interactingWith(const Actor&)Only NPCs targeting a specific actor
interactingWithLocalNpcQuery& interactingWithLocal()Only NPCs targeting the local player
notInteractingNpcQuery& notInteracting()Only NPCs without an active interaction target
isAnimating / notAnimatingNpcQuery&Animation state filters
animationNpcQuery& animation(int animId)Exact animation ID
overheadActiveNpcQuery& overheadActive() / overheadActive(HeadIcon)Overhead icon filters
overrideTransformNpcQuery& overrideTransform(int id)Morph transform filter
sizeEqualsNpcQuery& sizeEquals(int s)Footprint equals s×s
isDead / isAliveNpcQuery&Dead/alive filters (SDK v48+)
withHealthBar / noHealthBarNpcQuery&Health-bar presence filters (SDK v48+)
healthPercentBelow / healthPercentAboveNpcQuery& *(float)Health-threshold filters (SDK v48+)
withinNpcQuery& within(int radius, Tile target)Within Chebyshev distance of target
nearestTooptional<Npc> nearestTo(Tile target) constReturn the nearest matching NPC
PlayerQuery — players()
Factory: titan::queries::players()
Filter Signature Description
wherePlayerQuery& where(predicate)Custom predicate filter
nameContainsPlayerQuery& nameContains(const char*)Name contains substring
nameEqualsPlayerQuery& nameEquals(const char*)Exact name match
namesAnyOfPlayerQuery& namesAnyOf(initializer_list)Name matches any in list
interactingWithPlayerQuery& interactingWith(const Actor&)Only players targeting a specific actor
interactingWithLocalPlayerQuery& interactingWithLocal()Only players targeting the local player
notInteractingPlayerQuery& notInteracting()Only players without an active target
isAnimating / notAnimatingPlayerQuery&Animation state filters
animationPlayerQuery& animation(int animId)Exact animation ID
isIdlePlayerQuery& isIdle()Stationary and not animating
isSkulledPlayerQuery& isSkulled()Only skulled players
overheadActivePlayerQuery& overheadActive() / overheadActive(HeadIcon)Overhead icon filters
combatLevelAbove / combatLevelBelowPlayerQuery& *(int)Combat level bounds
combatLevelBetweenPlayerQuery& combatLevelBetween(int lo, int hi)Inclusive combat level range
excludingSelfPlayerQuery& excludingSelf()Exclude the local player
isDead / isAlivePlayerQuery&Dead/alive filters (SDK v48+)
withHealthBar / noHealthBarPlayerQuery&Health-bar presence filters (SDK v48+)
healthPercentBelow / healthPercentAbovePlayerQuery& *(float)Health-threshold filters (SDK v48+)
withinPlayerQuery& within(int radius, Tile target)Within Chebyshev distance of target
nearestTooptional<Player> nearestTo(Tile target) constReturn the nearest matching player
ObjectQuery — objects(radius)
Factory: titan::queries::objects(int radius = 20)
Filter Signature Description
whereObjectQuery& where(predicate)Custom predicate filter
nameContainsObjectQuery& nameContains(const char*)Name contains substring
nameEqualsObjectQuery& nameEquals(const char*)Exact name match
namesAnyOfObjectQuery& namesAnyOf(initializer_list)Name matches any in list
idObjectQuery& id(int)Filter by definition ID
idsObjectQuery& ids(initializer_list)Filter by any of the given IDs
hasActionObjectQuery& hasAction(const char*)Has the given right-click action
ofTypeObjectQuery& ofType(const std::string&)Filter by type name string (e.g. Wall, Decor)
layerObjectQuery& layer(int layerId)Filter by scene layer id
withinObjectQuery& within(int radius, Tile target)Within Chebyshev distance of target
nearestTooptional<TileObject> nearestTo(Tile target) constReturn the nearest matching object
GroundItemQuery — groundItems(radius)
Factory: titan::queries::groundItems(int radius = 20)
Filter Signature Description
whereGroundItemQuery& where(predicate)Custom predicate filter
nameContainsGroundItemQuery& nameContains(const char*)Name contains substring
nameEqualsGroundItemQuery& nameEquals(const char*)Exact name match
namesAnyOfGroundItemQuery& namesAnyOf(initializer_list)Name matches any in list
idGroundItemQuery& id(int)Filter by item definition ID
idsGroundItemQuery& ids(initializer_list)Filter by any of the given IDs
minQuantityGroundItemQuery& minQuantity(int n)Minimum stack size
maxQuantityGroundItemQuery& maxQuantity(int n)Maximum stack size
canLootGroundItemQuery& canLoot()Keep only items the local account may pick up. SDK v50+
withinGroundItemQuery& within(int radius, Tile target)Within Chebyshev distance of target
nearestTooptional<GroundItem> nearestTo(Tile target) constReturn the nearest matching ground item
InventoryQuery — inventory()
Factory: titan::queries::inventory()
Filter Signature Description
whereInventoryQuery& where(predicate)Custom predicate filter
nameContainsInventoryQuery& nameContains(const char*)Item name contains substring
nameEqualsInventoryQuery& nameEquals(const char*)Exact item name match
namesAnyOfInventoryQuery& namesAnyOf(initializer_list)Item name matches any in list
idInventoryQuery& id(int)Filter by item definition ID
idsInventoryQuery& ids(initializer_list)Filter by any of the given IDs
slotInventoryQuery& slot(int n)Match a specific slot index
slotsAnyOfInventoryQuery& slotsAnyOf(initializer_list)Match any of the given slot indices
slotsBetweenInventoryQuery& slotsBetween(int min, int max)Match slots in an inclusive range
Additional InventoryQuery terminals
Terminal Returns Description
totalQuantity()intSum of all matching item quantities
exists()boolAlias for any()
ProjectileQuery — projectiles()
Factory: titan::queries::projectiles()
Filter Signature Description
whereProjectileQuery& where(predicate)Custom predicate filter
spotAnimProjectileQuery& spotAnim(int id)Filter by SpotAnim / graphic ID
targetingEntityProjectileQuery& targetingEntity(int entityIndex)Projectiles aimed at entity index
fromEntityProjectileQuery& fromEntity(int entityIndex)Projectiles originating from entity index
startedAfterTickProjectileQuery& startedAfterTick(int tick)Spawned after the given tick
endsBeforeTickProjectileQuery& endsBeforeTick(int tick)Ending before the given tick
activeDuringProjectileQuery& activeDuring(int tick)Active at a specific tick
withinProjectileQuery& within(int radius, Tile target)Within Chebyshev distance of target
nearestTooptional<Projectile> nearestTo(Tile target) constReturn the nearest matching projectile
State Facades
State facades live in the titan::state namespace.
Each facade is obtained via a factory function and provides read (and sometimes write) access
to a specific area of game state. Most facades also expose a snapshot() method
that returns a plain struct with all fields captured at call time.
client() → ClientFacade
Snapshot
ClientSnapshot fields:
Field Type Description
tickCountintCurrent game tick count
planeintCurrent map plane
localPlayerIndexintIndex of local player in player array
playerCountintTotal loaded players
baseXintScene base X
baseYintScene base Y
runEnergyintRun energy (0–10000). Divide by 100 for the orb percentage.
weightintPlayer weight in kg (signed; negative with weight-reducing gear)
worldViewPtruintptr_tWorld view memory address
scenePtruintptr_tScene memory address
localPlayerEntityuintptr_tLocal player entity pointer
clientBaseuintptr_tosclient.exe module base
Methods
Method Signature Description
snapshotClientSnapshot snapshot() constCapture all fields at once
tickint tick() constCurrent game tick count
planeint plane() constCurrent map plane
playerCountint playerCount() constLoaded player count
loggedInbool loggedIn() constTrue if the player is logged in
runEnergyint runEnergy() constRun energy (0–10000). Divide by 100 for the orb percentage.
weightint weight() constPlayer weight in kg (signed; negative with weight-reducing gear)
accountTypeint32_t accountType() constRaw RuneLite-compatible account type varbit (Varbits::ACCOUNT_TYPE). SDK v50+
isIronman / isIronManbool isIronman() const / bool isIronMan() constTrue for ironman account modes, including group variants (aliases). SDK v50+
isGroupIronman / isGroupIronManbool isGroupIronman() const / bool isGroupIronMan() constTrue for GIM / HCGIM / UGIM (aliases). SDK v50+
localPlayerPlayer localPlayer() constThe local player entity
invokeMenuActionbool invokeMenuAction(MenuAction::Id opcode, int32_t packedId, int32_t param0, int32_t param1, int32_t worldViewId = -1) constDispatch a synthetic menu action; returns whether the host queued it
invokeMenuActionbool invokeMenuAction(const MenuAction::Entry& e) constFully-specified entry (text, click coords, skipClickPacket, etc.)
camera() → CameraFacade
Snapshot
CameraSnapshot fields: x, y, z, yaw, pitch, viewport, zoom, valid.
Methods
Method Signature Description
snapshotCameraSnapshot snapshot() constCapture all camera fields
yawint yaw() constHorizontal rotation (0–2047)
pitchint pitch() constVertical rotation
zoomint zoom() constCurrent zoom level
posXint posX() constCamera world X
posYint posY() constCamera world Y
posZint posZ() constCamera world Z (height)
skills() → SkillsFacade
Method Signature Description
boostedint boosted(Skill) const / int boosted(int) constCurrent (boosted/drained) level
realint real(Skill) const / int real(int) constBase (unboosted) level
experienceint experience(Skill) const / int experience(int) constTotal experience points
prayers() → PrayersFacade
Method Signature Description
isActivebool isActive(Prayer) const / bool isActive(int ordinal) constTrue if the prayer is currently enabled
vars() → VarsFacade
Method Signature Description
varbitint varbit(int id) constRead a varbit value
varpint varp(int id) constRead a VarPlayer value
walk() → WalkFacade
Method Signature Description
toScenevoid toScene(int x, int y)Walk to scene coordinates
toWorldvoid toWorld(int x, int y, int plane)Walk to world coordinates
tovoid to(Tile)Walk to a Tile
tovoid to(WorldPos)Walk to a WorldPos
Method Signature Description
findoptional<WidgetSnapshot> find(uint32_t packedId) constLook up a widget by packed group:child ID
childrenvector<WidgetSnapshot> children(uint32_t parentPackedId) constGet all children of a parent widget
findByTextoptional<WidgetSnapshot> findByText(const char* query) constFind a widget containing the given text
packuint32_t pack(int group, int child) constPack group + child into a single ID
interactbool interact(uint32_t opcode, int32_t packedId, int32_t param0, int32_t param1) constDispatch a widget-family DoAction; returns whether queued
setTextbool setText(uint32_t packedId, const char* text) constReplace live widget text (v1 host limit: 22 bytes). SDK v51+
WidgetSnapshot
Member Type / signature Description
packedIdint32_tPacked widget id (groupId << 16) | childId
textstd::stringPrimary widget text (read from host)
interactbool interact(uint32_t opcode, int32_t packedId, int32_t param0) constInvoke an action on this widget; param1 defaults to this snapshot’s packedId
setTextbool setText(const char* text) constReplace this widget’s display text (same 22-byte v1 limit). SDK v51+
collisions() → CollisionsFacade
Method Signature Description
flaguint32_t flag(int plane, int x, int y) constRaw collision flags at a scene tile
isBlockedbool isBlocked(int plane, int x, int y, int dx, int dy) constCheck if movement from (x,y) in direction (dx,dy) is blocked
cache() → CacheFacade
Provides access to game definition data from the cache.
Method Signature Description
itemoptional<ItemDef> item(int id) constItem definition
npcoptional<NpcDef> npc(int id) constNPC definition
objoptional<ObjDef> obj(int id) constObject / location definition
varbitoptional<VarbitDef> varbit(int id) constVarbit definition (base var, bit range)
hider() → HiderFacade
Controls entity visibility for rendering.
Method Signature Description
setPlayersvoid setPlayers(bool hidden)Hide/show other players
setNpcsvoid setNpcs(bool hidden)Hide/show NPCs
setSelfvoid setSelf(bool hidden)Hide/show local player
setScenevoid setScene(bool hidden)Hide/show scene objects
isPlayersHiddenbool isPlayersHidden() constAre other players hidden?
isNpcsHiddenbool isNpcsHidden() constAre NPCs hidden?
isSelfHiddenbool isSelfHidden() constIs local player hidden?
isSceneHiddenbool isSceneHidden() constAre scene objects hidden?
script() → ScriptFacade
Execute ClientScript (CS2) procedures at runtime.
Method Signature Description
runCs2Result run(int scriptId, vector<int> intArgs) constRun a CS2 script and collect results
runAndGetIntoptional<int> runAndGetInt(int scriptId, ...) constRun and return the first integer result
questStateint questState(int questId) constRead the progress state for a quest ID
Cs2Result
Field Type Description
successboolWhether the script ran without error
intsvector<int>Integer results returned by the script
login() → LoginFacade
Login screen state and credential management.
Method Signature Description
snapshotLoginSnapshot snapshot() constFull login state snapshot
stateLoginGameState state() constCurrent login state machine value
indexint index() constLogin screen field index
isLoggedInbool isLoggedIn() constTrue if a character is in-game
setUsernamevoid setUsername(const char*)Set the username field
setPasswordvoid setPassword(const char*)Set the password field
setAuthenticatorvoid setAuthenticator(const char*)Set the authenticator code
setIndexvoid setIndex(int)Set the login screen field index
setDisplayNamevoid setDisplayName(const char*)Set the display name field
setOAuth2Credentialsvoid setOAuth2Credentials(const char* token, const char* nonce)Provide OAuth2 credentials
setGameSessionCredentialsvoid setGameSessionCredentials(const char* token, const char* nonce)Provide game session credentials
setCharactervoid setCharacter(const char* name, const char* displayName)Set character to log in as
resetCharactervoid resetCharacter()Clear any character selection
idle() → IdleFacade
Method Signature Description
remainingint32_t remaining() constTicks remaining until the game logs out for idle
resetvoid reset()Reset the idle timer
state::world namespace
World list and world-hopping utilities.
World struct
Field / Method Type / Signature Description
idintWorld number
flagsintRaw world flags
string0const char*First world label string
string1const char*Second world label string
isMembersbool isMembers() constTrue if this is a members world
isBetabool isBeta() constTrue if this is a beta world
Functions
Function Signature Description
currentoptional<int32_t> state::world::current()Currently connected world ID
listvector<World> state::world::list()Snapshot of all available worlds
hopvoid state::world::hop(int id)Hop to a world from the title screen
hopByListIndexvoid state::world::hopByListIndex(int idx)Hop by world list index
hopIngamevoid state::world::hopIngame(int id)In-game hop via the native world switcher UI
itemContainer(containerId)
Function Signature Description
itemContaineroptional<ItemContainerSnapshot> state::itemContainer(int containerId)Read a widget-backed item container
ItemContainerSnapshot
Field Type Description
containerIdintThe container ID
slotsvector<ItemContainerSlot>All slots in the container
ItemContainerSlot
Field Type Description
idintItem definition ID (0 = empty)
quantityintStack quantity
itemDef(itemId)
Function Signature Description
itemDefoptional<ItemComposition> state::itemDef(int itemId)Runtime item definition by ID
Utilities
High-level convenience APIs in the titan::utils namespace. These combine
queries, widget interactions, and menu actions into single-call operations for
common gameplay tasks.
Inventory titan::utils::Inventory
Constant Value Description
kCapacity28 Maximum inventory slots
kInventoryPackedId— Packed widget ID for the inventory panel
Method Signature Description
isOpenbool isOpen()Inventory tab is visible
sizeint size()Number of occupied slots
emptySlotsint emptySlots()Number of free slots (28 − size)
isFullbool isFull()All 28 slots occupied
isEmptybool isEmpty()Zero items
getAllvector<Item> getAll()All occupied inventory items
findoptional<Item> find(int id) / find(const char* name)First item matching ID or name
getSlotoptional<Item> getSlot(int n)Item at a specific slot index
getByIdsvector<Item> getByIds(initializer_list)All items matching any of the given IDs
getByNamesvector<Item> getByNames(initializer_list)All items matching any of the given names
containsbool contains(int id) / contains(const char* name)True if at least one match exists
countint count(int id) / count(const char* name)Total combined quantity
containsAnybool containsAny(initializer_list ids) / containsAny(initializer_list names)True if any ID/name is present
containsAllbool containsAll(initializer_list ids) / containsAll(initializer_list names)True if every ID/name is present
dropbool drop(int id) / drop(const char* name)Drop the first matching item
Dialogue titan::utils::Dialogue
Method Signature Description
inDialoguebool inDialogue()A continue or option dialogue is visible
continueDialoguebool continueDialogue()Click "Click here to continue"
continueMakebool continueMake()Click the "Make" production button
getContinueWidgetPackedIdoptional<uint32_t> getContinueWidgetPackedId()Packed ID of the current continue widget
isQuestCompletionOpenbool isQuestCompletionOpen()Quest completion scroll is showing
closeQuestCompletionbool closeQuestCompletion()Dismiss the quest completion scroll
hasOptionbool hasOption(const char* text)A dialogue option matching the text exists
selectOptionbool selectOption(const char* text)Click the matching dialogue option
handleDialoguebool handleDialogue()Automatically continue or select as needed
Combat titan::utils::Combat
Method Signature Description
getSpecialAttackPercentageint getSpecialAttackPercentage()Current spec energy (0–100)
isSpecialAttackEnabledbool isSpecialAttackEnabled()Spec orb is toggled on
isAutoRetaliateEnabledbool isAutoRetaliateEnabled()Auto-retaliate is on
enableSpecialAttackbool enableSpecialAttack(bool skipMovement = false)Toggle special attack on
setAutoRetaliatevoid setAutoRetaliate(bool enabled)Enable or disable auto-retaliate
Equipment titan::utils::Equipment
EquippedItem
Method Signature Description
isValidbool isValid() constTrue if the slot is not empty
Functions
Method Signature Description
getAllvector<EquippedItem> getAll()All equipped items
findoptional<EquippedItem> find(EquipmentSlot) / find(int id) / find(const char* name)Lookup by slot, ID, or name
containsbool contains(int id) / contains(const char* name)True if the item is equipped
countint count(int id) / count(const char* name)Quantity of equipped item (ammo, etc.)
unequipbool unequip(EquipmentSlot) / unequip(int id) / unequip(const char* name)Remove the item from the slot
Bank titan::utils::Bank
State
Method Signature Description
isOpenbool isOpen()Bank interface is visible
isGeOpenbool isGeOpen()Grand Exchange interface is visible
isSearchOpenbool isSearchOpen()Bank search bar is active
isNotedModebool isNotedMode()Withdrawals set to noted
getBankTabint getBankTab()Currently selected bank tab
isMainTabOpenbool isMainTabOpen()Main tab (tab 0) is active
Queries
Method Signature Description
getAllvector<Item> getAll()All items in the bank
containsbool contains(int id) / contains(const char* name)Item is in the bank
countint count(int id) / count(const char* name)Total quantity in bank
findoptional<Item> find(int id) / find(const char* name)First matching item
Actions
Method Signature Description
closevoid close()Close the bank interface
setNotedModevoid setNotedMode(bool)Toggle noted withdrawal mode
depositAllvoid depositAll()Deposit entire inventory
depositEquipmentvoid depositEquipment()Deposit all worn equipment
depositAllOfItemvoid depositAllOfItem(int id)Deposit all of a specific item
depositOneOfItemvoid depositOneOfItem(int id)Deposit one of a specific item
depositAllExceptvoid depositAllExcept(initializer_list ids)Deposit everything except the given item IDs
withdrawItemvoid withdrawItem(int id)Withdraw one of an item
withdrawAllvoid withdrawAll(int id)Withdraw entire stack
withdrawAmountvoid withdrawAmount(int id, int amount)Withdraw a specific quantity
interactItemInBankvoid interactItemInBank(int id, const char* action)Invoke a right-click action on a bank item
Proximity & Opening
Method Signature Description
isNearBankbool isNearBank(int distance = 10)A bank object is within reach
openbool open()Interact with the nearest bank to open it
PIN Entry
Method Signature Description
isPinVisiblebool isPinVisible()Bank PIN dialog is showing
pinRequestedDigitIndexint pinRequestedDigitIndex()Which PIN digit the game is asking for (0–3)
typePinbool typePin(const char* pin)Enter a 4-digit bank PIN
Loadout Types
The Bank utility also exposes LoadoutItemGroup, ConsumableGroup,
Loadout, and LoadoutRunner for declarative gear/inventory setup.
See the Plugin Cookbook for usage patterns.
Walk titan::utils::Walk
Method Signature Description
isRunEnabledbool isRunEnabled()Whether run mode is toggled on
toggleRunbool toggleRun(bool skipMovement = false)Click the run orb. skipMovement suppresses the walk-to-click packet.
setRunEnabledbool setRunEnabled(bool enabled)Idempotent setter — no-op if already in the requested state
runEnergyint runEnergy()Run energy (0–10000). Delegates to state::client().runEnergy().
runEnergyPercentint runEnergyPercent()Run energy as a percentage (0–100), matching the orb display
ensureRunEnabledbool ensureRunEnabled(int minPercent = 1)Enable run only if energy ≥ minPercent. No click if insufficient.
Top-Level Helpers
Logging & Chat
Function Signature Description
logvoid titan::log(const char* msg)Write a line to the client log console
logfvoid titan::logf(const char* fmt, ...)Printf-style log (1 KB internal buffer)
addChatMessagevoid titan::addChatMessage(int type, const char* name, const char* message, const char* sender)Inject a local chat message into the chatbox
Scheduling
Function Signature Description
runOnClientTickvoid titan::runOnClientTick(function<void()> fn)Queue a callback to run on the next client tick
runOnRendervoid titan::runOnRender(function<void()> fn)Queue a callback to run on the next render frame
Keyboard titan::keyboard
Function Signature Description
sendStringvoid keyboard::sendString(const char* s)Inject a UTF-8 string instantly
sendKeyvoid keyboard::sendKey(int key, int mods = 0)Simulate a key press and release
typeStringvoid keyboard::typeString(const char* s, TypeOpts opts = {})Type a string with per-character random delays
cancelTypeStringvoid keyboard::cancelTypeString()Cancel an in-progress typeString
isTypingbool keyboard::isTyping()True if a typeString operation is in progress
Overlay
titan::overlay() returns an OverlayDraw handle. Call draw methods
within your plugin's onRender callback. See the Panels & Overlays
documentation page for the complete list of drawing primitives.
OverlayPanel (SDK v46+)
Anchored in-game HUD panels; include <titan/overlay_panel.h>. Factory:
Plugin::overlayPanel(name, anchor, [priority,] std::function<void(OverlayPanel&)>).
Subclass titan::OverlayPanel for stateful panels. Panels render on Layer::AboveWidgets
only; layout persists under %USERPROFILE%\.titanclient\overlay_layout.json.
Type / method Notes
enum class AnchorDynamic, TopCenter, LeftCenter, RightCenter, AboveChatboxRight, Tooltip
struct OverlayPanelStyleColours, border, radius, padding, gap, bar colours
OverlayPanel::title / line / progressBarBuilder rows inside render()
setPreferredWidth, setStyle, setOpacity, …Sticky theming (see header)
Plugins titan::plugins()
PluginHandle
Method Signature Description
idconst char* id() constPlugin identifier string
nameconst char* name() constPlugin display name
isValidbool isValid() constHandle points to a loaded plugin
isEnabledbool isEnabled() constPlugin is currently enabled
hasPanelbool hasPanel() constPlugin has a UI panel
enablevoid enable()Enable the plugin
disablevoid disable()Disable the plugin
togglevoid toggle()Toggle enabled state
setEnabledvoid setEnabled(bool)Set enabled to a specific value
PluginsFacade
Method Signature Description
allvector<PluginHandle> all()All loaded plugins
getPluginHandle get(const char* id)Get a plugin by identifier (asserts it exists)
findoptional<PluginHandle> find(const char* id)Find a plugin by identifier
selfPluginHandle self()Handle to the calling plugin (C++ only)
Header Content
<titan/plugin.h>Plugin base class + registration macros
<titan/client.h>Top-level helpers + all titan::state::* facades
<titan/query.h>titan::queries::* query factories
<titan/render.h>Overlay draw primitives + runOnClientTick / runOnRender
<titan/overlay_panel.h>titan::OverlayPanel, titan::Anchor, Plugin::overlayPanel (SDK v46+)
<titan/actor.h>Entity wrappers: Player, Npc, TileObject, GroundItem, Item, Projectile, Actor
<titan/setting.h>BoolSetting, IntSetting, ComboSetting, StringSetting, Section
<titan/panel.h>Panel fluent builder
<titan/events.h>Event wrapper types
<titan/plugins.h>Plugin manager facade
<titan/collision.h>Collision flag masks + facade
<titan/keyboard.h>Keyboard injection facade
<titan/utils/inventory.h>Inventory utility helpers
<titan/utils/dialogue.h>Dialogue utility helpers
<titan/utils/combat.h>Combat utility helpers
<titan/utils/equipment.h>Equipment utility helpers
<titan/utils/bank.h>Bank utility helpers
<titan/utils/magic.h>Header-only spellbook metadata and stubbed cast helpers (titan::utils::Magic). SDK v49+
<titan/inventory_id.h>InventoryID enum
<titan/equipment_slot.h>EquipmentSlot enum + helpers
<titan/prayer.h>Prayer enum + helpers
<titan/skill.h>Skill enum + helpers
<titan/menu_action.h>MenuAction opcode enum + helpers
<titan/varbits.h>Named varbit ID constants + nameOf
<titan/var_player.h>VarPlayer ID constants
<titan/interface_ids.h>Packed widget ID constants (dialogue, combat orb, etc.) plus spellbook widget ids (InterfaceIds::MagicSpellbook). SDK v49+ for spellbook block
<titan/head_icon.h>HeadIcon enum + helpers
<titan/local_point.h>LocalPoint sub-tile coordinate
<titan/world_area.h>WorldArea rectangle + containment
<titan/bank_sets.h>Bank booth/chest/deposit box object ID sets
Registration Macros (C++)
Macro Purpose
TITAN_PLUGIN(id, name)Minimal identity declaration
TITAN_PLUGIN_META(id, name, desc, author, version, defaultEnabled)Full metadata declaration
TITAN_PANEL(title)Enable a panel tab with the given title
TITAN_REGISTER_PLUGIN(ClassName, id)Emit the DLL export entry point. Exactly one per DLL.
Compiler Compatibility
Target Compiler C++ Standard Runtime
Native plugin DLL MSVC 2022+ C++20 /MT / /MTd (static CRT)
JS plugin N/A (QuickJS) N/A Use titan-plugin-sdk.d.ts for typing