Bot API

* Lua functions

* Bot Forums
* HoNBots IRC channel

* Bot creation tutorial
* Snippets

 → **Bot API**

Below are the bot API functions available. A copy of the list can be found here.

Please use the documentation for HoN.DrawDebugLine as a template when adding new function pages. Leave out any empty categories and don't forget to add a minimal function description to this page.

## Global functions

* void AddBot(nTeam, sDefinitionName) - Add a bot with the provided definition name to the the provided team.
* void StartGame(String type, String name, String options) - Start a game with the provided settings. Same as the equally named console command.
* void Echo(String text) - Prints a line of text in the console.
* Number GetTime()
* Number GetTimeOfDawn()
* void Print(...) - Prints the provided text in the console. Does not start a new line.
* Number Round(Number) - Rounds a floating number. Same as *math.floor(Number + .5)*.
* void StartProfile(sName) - Does not work in the retail client.
* void StopProfile() - Does not work in the retail client.

## Vector3 library

For a tutorial on Vector3 visit this thread.

* Vector3 Vector3.Create([nX, nY, nZ]) - Create a new Vector3 instance.
* Vector3 Vector3.Cross(vec1, vec2)
* Number Vector3.Distance(vec1, vec2) - Calculate the 3D distance (x,y,z) between the two vectors. Expensive function. Should not be used.
* Number Vector3.Distance2D(vec1, vec2) - Calculate the 2D distance (x,y) between two vectors. Expensive function. Should not be used. If you ever do need to calculate the 2D distance (e.g. for averages) you can use this snippet instead.
* Number Vector3.Distance2DSq(vec1, vec2) - Calculate the 2D distance (x,y) between two vectors using a much cheaper formula. Should be used for most (if not all) distance calculations.
* Number Vector3.DistanceSq(vec1, vec2) - Calculate the 3D distance (x,y,z) between two vectors. Vector3.Distance2DSq usually suffices.
* Number Vector3.Dot(vec1, vec2)
* Number Vector3.Length(vec)
* Number Vector3.LengthSq(vec)
* Vector3 Vector3.Normalize(vec)
* Vector3 Vector3.Project(vecOnto, vecToProject)

## HoN library

This section is for functions in the HoN library. The HoN library returns different information for each team and may not return anything useful when executed from the console.

* Boolean HoN.CanSeePosition(vecPos) - Returns true if the position is currently visible.
* void HoN.DrawDebugLine(vecStart, vecEnd[, bArrow = false, sColor = "yellow"]) - Draw a debug line in the game world at the provided location.
* Boolean HoN.GameEntityExists(nIndex)
* Number HoN.GetCreepWaveSpawnInterval()
* Number HoN.GetExperienceForLevel(nLevel)
* Number HoN.GetGameTime() - Get the time since the lobby started.
* Number HoN.GetHellbourneTeam() - Returns the number identifier for the Hellbourne team (2).
* Table{unit} HoN.GetHeroes(nTeam) - Returns a table of all heroes in the provided nTeam.
* CItemDefinition HoN.GetItemDefinition(sItemName)
* Number HoN.GetLegionTeam() - Returns the number identifier for the Legion team (1).
* Number HoN.GetMatchTime() - Returns the time since the 0:00 mark.
* Table HoN.GetMetaTable(sObjectType)
* Number HoN.GetNeutralTeam() - Returns the number identifier for the Neutral team (0).
* Number HoN.GetRemainingPreMatchTime() - Returns the remaining pre-match time (time before the 0:00 mark).
* Table HoN.GetScores() - Returns a table with the scores for all heroes.
* teambot HoN.GetTeamBotBrain() - Returns the TeamBotBrain for the current bot's team.
* Number HoN.GetTimeUntilCreepWaveSpawn()
* Number HoN.GetTotalTime()
* Table{unit, ...} HoN.GetTreesInRadius(vecCenter, nRadius)
* Table{unit, ...} HoN.GetUnitsInRadius(vecCenter, nRadius, nMask)
* Boolean HoN.WillBlockNeutralSpawn(vecPos)

## CBotBrain members

* Boolean CBotBrain:CanSeeUnit(unitTarget)
* Boolean CBotBrain:CanSelectHero(sHeroName)
* void CBotBrain:Chat(sText) - Send a message to everybody in the game.
* void CBotBrain:ChatTeam(sText) - Send a message to the team.
* Number CBotBrain:GetGold() - Returns the current gold available.
* Number CBotBrain:GetGoldEarned() - Returns the gold earned.
* Number CBotBrain:GetGPM() - Returns the GPM.
* unit CBotBrain:GetHeroUnit()
* String CBotBrain:GetName()
* String CBotBrain:GetPotentialHero()
* Number CBotBrain:GetTeam() - Returns the team of the current bot.
* Boolean CBotBrain:HasSelectedHero()
* Boolean CBotBrain:IsHeroLocked() - Returns if the hero is locked in a lock picking game.
* void CBotBrain:Order(Unit unit, String order, String queue = "none")
* void CBotBrain:OrderAbility(Ability ability, [bool queueCommand = false]) - Order the bot to cast an ability that requires no target.
* void CBotBrain:OrderAbility2(Ability ability, [bool queueCommand = false]) - Orders the bot to toggle an auto cast ability on or off.
* void CBotBrain:OrderAbilityEntity(Ability ability, Unit target, [bool queueCommand = false]) - Orders the bot to use an ability at the provided target.
* void CBotBrain:OrderAbilityEntityVector(Ability ability, Unit target, Vector3 delta, [bool queueCommand = false]) - Orders the bot to use a Vector Entity ability at the provided target in the provided direction (e.g. Rally's Compell).
* void CBotBrain:OrderAbilityPosition(Ability ability, Vector3 pos, [bool queueCommand = false]) - Orders the bot to use the ability at the provided target position.
* void CBotBrain:OrderAbilityVector(Ability ability, Vector3 startPos, Vector3 endPos, [bool queueCommand = false]) - Orders the bot to use the Vector ability in the provided direction (e.g. Zephyr's Gust).
* void CBotBrain:OrderEntity(Unit unit, String order, [Unit target = NULL, String queue = "none", Item item = NULL, bool useDirectPathing = false])
* void CBotBrain:OrderItem(Item item, [bool queueCommand = false])
* void CBotBrain:OrderItem2(Item item, [bool queueCommand = false])
* void CBotBrain:OrderItemEntity(Item item, Unit target, [bool queueCommand = false])
* void CBotBrain:OrderItemPosition(Item item, Vector3 pos, [bool queueCommand = false])
* void CBotBrain:OrderItemVector(Item item, Vector3 startPos, Vector3 endPos, [bool queueCommand = false])
* void CBotBrain:OrderPosition(Unit unit, String order, Vector3 position, [String queue = "none", Item item = NULL, bool useDirectPathing = false])
* void CBotBrain:Ready() - Mark as ready in the hero picking phase.
* void CBotBrain:SelectHero(sHeroName) - Select a hero in the hero picking phase.
* void CBotBrain:SelectPotentialHero(sHeroName) - Shadow pick a hero in the hero picking phase.
* void CBotBrain:SendBotMessage(bAllChat, sMessageKey, tMessageTokens)
* void CBotBrain:ShareControl(player, bShare, bFullControl) - Share unit control with another player.

## CTeamBotBrain members

This section is for functions provided in the "object" variable of a TeamBotBrain.

* Boolean CTeamBotBrain:CanSeeUnit(unitTarget) - Returns if the provided unit can be seen.
* Vector3 CTeamBotBrain:GetFrontOfCreepWavePosition(sLane)
* Number CTeamBotBrain:GetTeam() - Returns the team of the bot.

## IEntityAbility members

This section is for functions for unit abilities (heroes, pets, couriers, etc.).

* Boolean IEntityAbility:CanActivate() - Returns if the ability can be activated.
* Boolean IEntityAbility:CanLevelUp() - Returns if the ability can be leveled up.
* Number IEntityAbility:GetActiveChannelPercent() - Returns how far along the channeling is in percentages.
* Number IEntityAbility:GetActiveChannelTime() - Returns how far along the channeling is in time.
* Number IEntityAbility:GetActiveManaCost()
* String IEntityAbility:GetActiveModifierKey()
* Number IEntityAbility:GetActualRemainingCooldownPercent()
* Number IEntityAbility:GetActualRemainingCooldownTime()
* Number IEntityAbility:GetAdjustedActionTime()
* Number IEntityAbility:GetAdjustedCastTime()
* Boolean IEntityAbility:GetAllowAutoCast()
* Boolean IEntityAbility:GetAllowOutOfBoundsCast()
* Boolean IEntityAbility:GetAllowOutOfRangeCast()
* Number IEntityAbility:GetAreaCastRange()
* Boolean IEntityAbility:GetAutoToggleOffWhenDisabled()
* Boolean IEntityAbility:GetAutoToggleOffWithTriggeredManaCost()
* Number IEntityAbility:GetCastActionTime()
* Number IEntityAbility:GetCastTime()
* Number IEntityAbility:GetChannelRange()
* Number IEntityAbility:GetChannelTime()
* Number IEntityAbility:GetChargeCost()
* Number IEntityAbility:GetCharges()
* Number IEntityAbility:GetConeCastRange()
* Number IEntityAbility:GetConeCastWidth()
* Number IEntityAbility:GetCooldownOnDamage()
* Number IEntityAbility:GetCooldownTime()
* Boolean IEntityAbility:GetDeferChannelCost()
* Boolean IEntityAbility:GetDeferChannelImpact()
* Boolean IEntityAbility:GetDoubleActivate()
* Number IEntityAbility:GetForceRange()
* Boolean IEntityAbility:GetFrontQueue()
* Boolean IEntityAbility:GetIgnoreCooldown()
* Boolean IEntityAbility:GetIgnoreInvulnerable()
* Number IEntityAbility:GetInitialCharges()
* Boolean IEntityAbility:GetIsChanneling() - Currently bugged: returns whether the hero is channeling (same as IUnitEntity:IsChanneling()). Should return whether the ability is being channeled.
* Number IEntityAbility:GetLevel()
* Number IEntityAbility:GetLineCastMaxRange()
* Number IEntityAbility:GetLineCastRange()
* Number IEntityAbility:GetLineCastWidth()
* Number IEntityAbility:GetManaCost()
* Number IEntityAbility:GetMaxCharges()
* Number IEntityAbility:GetMaxLevel()
* Number IEntityAbility:GetMinRange()
* Boolean IEntityAbility:GetNeedVision()
* Boolean IEntityAbility:GetNonInterrupting()
* Boolean IEntityAbility:GetNoRangeClamp()
* Boolean IEntityAbility:GetNoStun()
* Boolean IEntityAbility:GetNoTargetIgnoreInvulnerable()
* Boolean IEntityAbility:GetNoTurnToTarget()
* Number IEntityAbility:GetRange()
* Number IEntityAbility:GetRangeBuffer()
* Number IEntityAbility:GetSlot()
* Number IEntityAbility:GetTargetRadius()
* Number IEntityAbility:GetToggleOffCooldownTime()
* Number IEntityAbility:GetToggleOffManaCost()
* Number IEntityAbility:GetTriggeredManaCost()
* Number IEntityAbility:GetType()
* String IEntityAbility:GetTypeName()
* Boolean IEntityAbility:GetUsePathForRange()
* Boolean IEntityAbility:IsActive()
* Boolean IEntityAbility:IsDisabled()
* Boolean IEntityAbility:IsReady()
* Boolean IEntityAbility:IsValid()
* void IEntityAbility:LevelUp()

## IBehavior members

* ActionState IBehavior:GetAttackingActionState()
* Unit IBehavior:GetAttackTarget()
* ActionState IBehavior:GetCastingActionState()
* Vector3 IBehavior:GetGoalPosition()
* Player IBehavior:GetIssuedPlayer()
* Boolean IBehavior:GetMoving()
* ActionState IBehavior:GetMovingActionState()
* unit IBehavior:GetOwnerUnit()
* Unit IBehavior:GetTarget()
* String IBehavior:GetType()
* Boolean IBehavior:IsChanneling()
* Boolean IBehavior:IsForced()
* Boolean IBehavior:IsIdle()
* Boolean IBehavior:IsTraveling()

## IUnitEntity members

* Boolean IUnitEntity:CanAccess(item) - Returns whether this user can access the provided item.
* Table{item} IUnitEntity:FindItemInInventory(sItemName)
* ability IUnitEntity:GetAbility(nSlot)
* Number IUnitEntity:GetAbilityPointsAvailable()
* String IUnitEntity:GetActionState()
* Number IUnitEntity:GetAdjustedAttackActionTime()
* Number IUnitEntity:GetAdjustedAttackCooldown()
* Number IUnitEntity:GetAdjustedAttackDuration()
* Number IUnitEntity:GetArmor()
* Number IUnitEntity:GetAttackDamageMax() - Returns the base attack damage max.
* Number IUnitEntity:GetAttackDamageMin() - Returns the base attack damage min.
* Number IUnitEntity:GetAttackProjectileSpeed()
* Number IUnitEntity:GetAttackRange()
* Number IUnitEntity:GetAttackSpeed()
* String IUnitEntity:GetAttackTarget()
* String IUnitEntity:GetAttackType()
* Number IUnitEntity:GetBaseDamage() - Returns a random base attack damage between the base min and base max.
* Behavior IUnitEntity:GetBehavior()
* Number IUnitEntity:GetBoundsRadius()
* Number IUnitEntity:GetBuyBackCost()
* Boolean IUnitEntity:GetCanAttack()
* Boolean IUnitEntity:GetCliffwalking()
* sName IUnitEntity:GetDisplayName()
* Number IUnitEntity:GetEvasionMelee()
* Number IUnitEntity:GetEvasionRanged()
* Number IUnitEntity:GetExperienceForCurrentLevel()
* Number IUnitEntity:GetExperienceForNextLevel()
* Number IUnitEntity:GetFinalAttackDamageMax() - Returns the actual attack damage max.
* Number IUnitEntity:GetFinalAttackDamageMin() - Returns the actual attack damage min.
* Number IUnitEntity:GetHealth() - Returns the current health.
* Number IUnitEntity:GetHealthPercent() - Returns the current health percentage.
* Number IUnitEntity:GetHealthRegen() - Returns the current health regeneration.
* Table{Item} IUnitEntity:GetInventory([bAppendStash = false]) - Returns the current inventory.
* item IUnitEntity:GetItem(nSlot)
* Table{CItemDefinition} IUnitEntity:GetItemComponentsRemaining(itemdef)
* Number IUnitEntity:GetItemCostRemaining(itemdef)
* Number IUnitEntity:GetLevel()
* Number IUnitEntity:GetLifeSteal()
* Number IUnitEntity:GetMagicArmor()
* Number IUnitEntity:GetMagicResistance()
* Number IUnitEntity:GetMana()
* Number IUnitEntity:GetManaPercent()
* Number IUnitEntity:GetManaRegen()
* Number IUnitEntity:GetMaxHealth()
* Number IUnitEntity:GetMaxMana()
* Number IUnitEntity:GetMoveSpeed()
* Number IUnitEntity:GetNumBuyBacks()
* player IUnitEntity:GetOwnerPlayer()
* Number IUnitEntity:GetPhysicalResistance()
* Vector3 IUnitEntity:GetPosition()
* String IUnitEntity:GetPrimaryAttribute()
* Number IUnitEntity:GetRemainingCooldownTime(sName | CItemDefinition)
* Number IUnitEntity:GetRemainingRespawnTime()
* Boolean IUnitEntity:GetStashAccess()
* Table{Number} IUnitEntity:GetStats()
* Number IUnitEntity:GetTeam()
* Boolean IUnitEntity:GetTreewalking()
* String IUnitEntity:GetTypeName()
* Number IUnitEntity:GetUniqueID()
* Boolean IUnitEntity:GetUnitwalking()
* Number IUnitEntity:GetXPM()
* Boolean IUnitEntity:HasDeniablePotential()
* Boolean IUnitEntity:HasState(sName)
* Boolean IUnitEntity:IsAlive()
* Boolean IUnitEntity:IsAttackReady()
* Boolean IUnitEntity:IsBase()
* Boolean IUnitEntity:IsBotControlled()
* Boolean IUnitEntity:IsBuilding()
* Boolean IUnitEntity:IsChanneling()
* Boolean IUnitEntity:IsDeniable()
* Boolean IUnitEntity:IsDisarmed()
* Boolean IUnitEntity:IsHero()
* Boolean IUnitEntity:IsImmobilized()
* Boolean IUnitEntity:IsInvulnerable()
* Boolean IUnitEntity:IsPerplexed()
* Boolean IUnitEntity:IsRax()
* Boolean IUnitEntity:IsShop()
* Boolean IUnitEntity:IsSilenced()
* Boolean IUnitEntity:IsStealth()
* Boolean IUnitEntity:IsStunned()
* Boolean IUnitEntity:IsTower()
* Boolean IUnitEntity:IsUnitType(sType)
* Boolean IUnitEntity:IsValid()
* void IUnitEntity:PurchaseRemaining(CItemDefinition)
* void IUnitEntity:Sell(item)
* void IUnitEntity:SellBySlot(nSlot)
* void IUnitEntity:SwapItems(nSlot1, nSlot2)
* void IUnitEntity:TeamShare()
* Table IUnitEntity:GetKDA()

## IActionState members

* Boolean IActionState:IsActive()
* Boolean IActionState:IsAllDone()
* Boolean IActionState:IsAttackReady()
* Boolean IActionState:IsCommitted()
* Boolean IActionState:IsCompleted()
* Boolean IActionState:IsInterrupted()

## CItemDefinition members

* Number CItemDefinition:GetActiveManaCost()
* Boolean CItemDefinition:GetAllowAutoCast()
* Boolean CItemDefinition:GetAllowDisassemble()
* Boolean CItemDefinition:GetAllowOutOfBoundsCast()
* Boolean CItemDefinition:GetAllowOutOfRangeCast()
* Boolean CItemDefinition:GetAllowSharing()
* Boolean CItemDefinition:GetAllowTransfer()
* Number CItemDefinition:GetAreaCastRange()
* Boolean CItemDefinition:GetAutoAssemble()
* Boolean CItemDefinition:GetAutoRecharge()
* Boolean CItemDefinition:GetAutoToggleOffWhenDisabled()
* Boolean CItemDefinition:GetAutoToggleOffWithTriggeredManaCost()
* Boolean CItemDefinition:GetBindOnPickup()
* Number CItemDefinition:GetCastActionTime()
* Number CItemDefinition:GetCastTime()
* Number CItemDefinition:GetChannelRange()
* Number CItemDefinition:GetChannelTime()
* Number CItemDefinition:GetChargeCost()
* Table{CItemDefinition} CItemDefinition:GetComponents()
* Number CItemDefinition:GetConeCastRange()
* Number CItemDefinition:GetConeCastWidth()
* Number CItemDefinition:GetCooldownOnDamage()
* Number CItemDefinition:GetCooldownTime()
* Number CItemDefinition:GetCost()
* Boolean CItemDefinition:GetDeferChannelCost()
* Boolean CItemDefinition:GetDeferChannelImpact()
* Boolean CItemDefinition:GetDestroyOnEmpty()
* Boolean CItemDefinition:GetDisabled()
* String CItemDefinition:GetDisplayName()
* Boolean CItemDefinition:GetDoubleActivate()
* Boolean CItemDefinition:GetDropOnDeath()
* Number CItemDefinition:GetForceRange()
* Boolean CItemDefinition:GetFrontQueue()
* Boolean CItemDefinition:GetIgnoreCooldown()
* Boolean CItemDefinition:GetIgnoreInvulnerable()
* Number CItemDefinition:GetInitialCharges()
* Number CItemDefinition:GetInitialStock()
* Boolean CItemDefinition:GetIsChanneling()
* Number CItemDefinition:GetLineCastMaxRange()
* Number CItemDefinition:GetLineCastRange()
* Number CItemDefinition:GetLineCastWidth()
* Number CItemDefinition:GetManaCost()
* Number CItemDefinition:GetMaxLevel()
* Number CItemDefinition:GetMaxOwned()
* Number CItemDefinition:GetMaxStock()
* Number CItemDefinition:GetMinRange()
* String CItemDefinition:GetName()
* Boolean CItemDefinition:GetNeedVision()
* Boolean CItemDefinition:GetNew()
* Boolean CItemDefinition:GetNoDrop()
* Boolean CItemDefinition:GetNonInterrupting()
* Boolean CItemDefinition:GetNoPurchase()
* Boolean CItemDefinition:GetNoRangeClamp()
* Boolean CItemDefinition:GetNoSell()
* Boolean CItemDefinition:GetNoStash()
* Boolean CItemDefinition:GetNoStun()
* Boolean CItemDefinition:GetNoTargetIgnoreInvulnerable()
* Boolean CItemDefinition:GetNoTurnToTarget()
* Number CItemDefinition:GetRange()
* Number CItemDefinition:GetRangeBuffer()
* Boolean CItemDefinition:GetRechargeable()
* Number CItemDefinition:GetRestockDelay()
* Number CItemDefinition:GetTargetRadius()
* Number CItemDefinition:GetToggleOffCooldownTime()
* Number CItemDefinition:GetToggleOffManaCost()
* Number CItemDefinition:GetTotalCost([nIndex = 0])
* Number CItemDefinition:GetTriggeredManaCost()
* Number CItemDefinition:GetTypeID()
* Boolean CItemDefinition:GetUnkillable()
* Boolean CItemDefinition:GetUsePathForRange()
* Boolean CItemDefinition:IsValid()

## IEntityItem members

* ItemList - The list of items internal names.
* Boolean IEntityItem:CanActivate() - Returns whether the item can be activated.
* Boolean IEntityItem:CanDrop() - Returns whether the item can be dropped on the ground.
* Boolean IEntityItem:CanUse() - Returns whether the item can be used.
* Number IEntityItem:GetActiveManaCost()
* String  IEntityItem:GetActiveModifierKey()
* Boolean IEntityItem:GetAllowAutoCast()
* Boolean IEntityItem:GetAllowDisassemble() - Returns whether the item can be disassembled.
* Boolean IEntityItem:GetAllowOutOfBoundsCast()
* Boolean IEntityItem:GetAllowOutOfRangeCast()
* Boolean IEntityItem:GetAllowSharing() - Returns whether the item can be shared with other players.
* Boolean IEntityItem:GetAllowTransfer() - Returns whether the item can be given transferred.
* Number IEntityItem:GetAreaCastRange()
* Boolean IEntityItem:GetAutoAssemble() - Returns whether the item auto assembles.
* Boolean IEntityItem:GetAutoRecharge() - Returns whether the item automatically gains a charge (e.g. .
* Boolean IEntityItem:GetAutoToggleOffWhenDisabled()
* Boolean IEntityItem:GetAutoToggleOffWithTriggeredManaCost()
* Boolean IEntityItem:GetBindOnPickup()
* Number IEntityItem:GetCastActionTime()
* Number IEntityItem:GetCastTime() - Returns the cast time when using the item.
* String IEntityItem:GetCategory()
* Number IEntityItem:GetChannelRange()
* Number IEntityItem:GetChannelTime()
* Number IEntityItem:GetChargeCost()
* Number IEntityItem:GetCharges() - Returns the amount of charges available.
* Table{CItemDefinition} IEntityItem:GetComponents()
* Number IEntityItem:GetConeCastRange()
* Number IEntityItem:GetConeCastWidth()
* Number IEntityItem:GetCooldownOnDamage()
* Number IEntityItem:GetCooldownTime()
* Number IEntityItem:GetCost() - Returns the cost of the recipe used to make the item.
* Boolean IEntityItem:GetDeferChannelCost()
* Boolean IEntityItem:GetDeferChannelImpact()
* Boolean IEntityItem:GetDestroyOnEmpty()
* Boolean IEntityItem:GetDisabled()
* Boolean IEntityItem:GetDoubleActivate() - Returns whether the item can be activated twice (e.g. to teleport to base).
* Boolean IEntityItem:GetDropOnDeath() - Returns whether the item drops on death.
* Number IEntityItem:GetForceRange()
* Boolean IEntityItem:GetFrontQueue()
* Boolean IEntityItem:GetIgnoreCooldown()
* Boolean IEntityItem:GetIgnoreInvulnerable()
* Number IEntityItem:GetInitialCharges() - Returns the amount of charges you get when buying the item.
* Number IEntityItem:GetInitialStock() - Returns the initial amount of items in stock (when the game starts).
* Boolean IEntityItem:GetIsChanneling()
* CItemDefinition [[API IEntityItem:GetItemDefinition|IEntityItem:GetItemDefinition() - Get the item definition of the item.
* Number IEntityItem:GetLevel() - Returns the level of the item (e.g. Codex level 5). Always returns nil for hostile units. As a workaround you can check the value of an item like so: local nLevel = (itemSpellShards:GetValue() == 1187 and 1) or (itemSpellShards:GetValue() == 1587 and 2) or (itemSpellShards:GetValue() == 1987 and 3);
* Number IEntityItem:GetLineCastMaxRange()
* Number IEntityItem:GetLineCastRange()
* Number IEntityItem:GetLineCastWidth()
* Number IEntityItem:GetManaCost()
* Number IEntityItem:GetMaxCharges() - Returns the max amount of charges in one stack in your inventory.
* Number IEntityItem:GetMaxLevel()
* Number IEntityItem:GetMaxStock() - Returns the max amount of this item available at once in the store.
* Number IEntityItem:GetMinRange()
* Boolean IEntityItem:GetNeedVision()
* Boolean IEntityItem:GetNoDrop()
* Boolean IEntityItem:GetNonInterrupting()
* Boolean IEntityItem:GetNoPurchase() - Returns whether the item can't be bought.
* Boolean IEntityItem:GetNoRangeClamp()
* Boolean IEntityItem:GetNoSell() - Returns whether the item can't be sold.
* Boolean IEntityItem:GetNoStash() - Returns whether the item can't be placed in the stash.
* Boolean IEntityItem:GetNoStun()
* Boolean IEntityItem:GetNoTargetIgnoreInvulnerable()
* Boolean IEntityItem:GetNoTurnToTarget()
* Number IEntityItem:GetRange() - Returns the range on using the item.
* Number IEntityItem:GetRangeBuffer()
* Boolean IEntityItem:GetRechargeable()
* Number IEntityItem:GetRemainingCooldownTime()
* Number IEntityItem:GetRestockDelay() - Returns the time it takes for the item to restock in the store.
* Number IEntityItem:GetSlot() - Returns the slot of the item in your inventory.
* Number IEntityItem:GetTargetRadius()
* Number IEntityItem:GetToggleOffCooldownTime()
* Number IEntityItem:GetToggleOffManaCost()
* Number IEntityItem:GetTotalCost() - Returns the cost of the item and all of it's components. If the item has been upgraded the value of a level 1 version will be returned instead.
* Number IEntityItem:GetTriggeredManaCost()
* Number IEntityItem:GetType()
* String IEntityItem:GetTypeName()
* Boolean IEntityItem:GetUnkillable()
* Boolean IEntityItem:GetUsePathForRange()
* Number IEntityItem:GetValue() - Returns the worth of the item.
* Boolean IEntityItem:IsActive() - Returns whether the item is currently active.
* Boolean IEntityItem:IsRecipe() - Returns whether the item is a recipe.
* Boolean IEntityItem:IsValid() - Returns whether the item instance (i.e. the object) is still valid.

## BotMetaData library

* Table BotMetaData.FindPath(vecStartPos, vecEndPos[, funcGetCost, funcGetHeuristic]) - Find a path using nodes in the currently active BotMetaData layer.
* CBotMetaDataNode BotMetaData.GetClosestNode(vecPos) - Get the closest node to the provided location in the currently active BotMetaData layer.
* CBotMetaDataNode,Number BotMetaData.GetClosestNodeOnPath(tPath, vecPos)
* Table BotMetaData.RegisterLayer(sPath) - Make a new BotMetaData layer available.
* Table BotMetaData.SetActiveLayer(sPath) - Make a different BotMetaData layer active. Note that this breaks pathing if not reverted to the default layer.

## CBotMetaDataNode members

* String CBotMetaDataNode:GetName() - Returns the name of a node.
* Vector3 CBotMetaDataNode:GetPosition() - Returns the position of a node.
* String/Number/Boolean CBotMetaDataNode:GetProperty(sName) - Returns the value of the property with the provided name.

## CBotMetaDataLink members

* String CBotMetaDataLink:GetName()
* Vector3 CBotMetaDataLink:GetPosition()
* String/Number/Boolean CBotMetaDataLink:GetProperty(sName)

There is also a ton of useful functions in the scripts themselves (such as those in core and botbraincore), and on the snippets subforum.