Files
benilla-octo/docs/classic-api-functions.md
gromandClaude Opus 5 81d96af35d Everwood: the HD/OctoWoW line of benilla, imported onto upstream
This checkout had no git history at all, so this one commit carries the whole
of the Everwood work as a single import on top of chairmanpow/benilla-octo's
`main` (706cd71). The two trees have genuinely diverged — each has files the
other does not — so this is a fork point, not a catch-up.

Today's work, which is the reason a baseline exists at all:

- Booth previews no longer cast world shadows (`NO_BOOTH_SHADOW`). Portrait
  characters were entering the sun's shadow cascades, so every skinned-rig
  shadow specialization compiled live mid-frame; the hitch detector logged
  "main thread blocked 1316 ms" beside a `compiled LIVE` warning. This was
  the Fashion/Tmog stutter.
- Per-pane dress-up: each `DressUpModel` pane assembles and stages its own
  tried-on look instead of every pane mirroring the live player.
- Item template cache is append-only JSONL written on the IO pool, replacing
  an 11.6 MB whole-map JSON rewrite on the main thread every 10 s.
- `WOW_SYSTEM_TIMING` rebuilt per-thread: it took 2 mutexes per system enter
  and 4 per exit, costing 15 ms a frame (590 fps -> 60) and corrupting the
  measurements it was taken to produce.
- The visibility-churn sweep moved to its own `WOW_FLASH_CHURN` switch, so a
  frame-cost reading no longer pays 2.7 ms a frame for it.

Local state (`benilla-config/`, `logs/`, `target/`) is excluded by the
existing .gitignore; the account credential it holds is not in this commit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
2026-10-15 15:01:14 -06:00

22 KiB

ClassicAPI function inventory

A namespace-by-namespace list of every function brues-code/ClassicAPI documents in its own docs/API.md, fetched 2026-10-05 for docs/ADDON_COMPAT.md's ClassicAPI tracking. This is the checklist for porting it into crates/benilla-ui/src/script/compat/classic_api.rs — check items off there as they land; this file is the source list, not the status (status lives in ADDON_COMPAT.md, one line per namespace, not per function, so it stays scannable).

Re-fetch docs/API.md from the upstream repo before resuming this work — this is a point-in-time copy of names and one-line summaries, not argument types or behavior; the upstream file is still the authoritative spec for implementing any one of these.

Already free, no porting needed: parsing Lua 5.1 syntax (not stdlib — see classic_api.rs's own doc comment on the stdlib/lua50.rs collision) covers the Lua namespace's syntax-level items. strsplit/strjoin/strtrim(as trim)/wipe already exist as benilla globals for unrelated reasons (TurtleWoW FrameXML compat, see reference_surface.rs's exception list) — the Lua namespace entries below for those four are therefore also already satisfied.

Built so far (per-namespace status, including what each one skipped and why, is docs/ADDON_COMPAT.md's ClassicAPI section — one row per namespace):

  • Unit: UnitGUID, UnitTokenFromGUID.

  • Time: C_Timer.After/NewTimer/NewTicker.

  • Container: all of C_Container.* but GetContainerItemCharges/GetContainerItemRepairCost/ GetContainerItemQuestInfo/GetContainerItemEquipmentSetInfo/IsContainerItemOpenable, which honestly answer nil/false.

  • UnitAuras: all of C_UnitAuras.*; the two Register* hooks accept and discard.

  • CreatureInfo: GetRaceInfo, GetFactionInfo, GetClassInfo, GetCreatureID. The two race getters read the player's own ChrRaces.dbc through a new app→VM feed, not a table frozen into this client — which is what makes OctoWoW's row 10 read "High Elf" rather than Blizzard's "Blood Elf" while clientFileString stays "BloodElf" for the art paths. GetRaceInfo must keep answering nil past the last race: pfUI walks until nil and an always-non-nil answer hangs the load.

  • State: IsSwimming, IsMounted, IsIndoors, IsOutdoors, IsFalling, GetShapeshiftFormID, IsInGroup, IsInRaid.

  • Spell: 15 of ~45 (DoesSpellExist, the name/texture/subtext/info getters, IsSpellPassive, IsSpellKnown, IsCurrentSpell, GetSpellCooldown, IsSpellUsable, GetSchoolString, CanDualWield, CastAtCursor, CastAtUnit, CancelSpellByID). The five display getters read Spell.dbc through the host probe, so they answer for any shipped spell; the predicates read the player's book, which is the right source for them.

  • SpellBook: 5 of ~19 (FindSpellBookSlotByID, GetSpellBookItemInfo, GetNumSpellBookSkillLines, GetSpellBookSkillLineInfo, GetSpellBookItemSkillLineIndex).

  • ColorUtil: all 8 of C_ColorUtil.* (pure maths + the |c escape builders).

  • ClassColor: C_ClassColor.GetClassColor, over FrameXML's own RAID_CLASS_COLORS.

  • Expansion: all 3.

  • Input: 7 of 9 — the six sided modifier getters (each answering the combined bit the engine tracks) and IsModifierKeyDown; IsMouseButtonDown/GetMouseButtonClicked have no honest backing state.

  • Lua: the additive half only — table.count, Mixin, CreateFromMixins, strreplace. The lua50.rs-nilled 5.1 stdlib stays nilled, and so does strrev (tests/stdlib.rs pins it), by the deferred decision above.

  • Currency: C_CurrencyInfo.GetCoinTextureString, delegating to FrameXML's own.

  • Events: GetFramesRegisteredForEvent; C_EventUtils.IsEventValid has no valid-event set.

  • System: GetPhysicalScreenSize (logical rect, not device pixels); no CopyToClipboard.

  • Combat: InCombatLockdown (always false, correctly).

  • Hooks: hooksecurefunc, both forms — chains, passes the original's returns through, and isolates a hook's error from the call it wrapped.

  • Frame (widget methods, not globals): SetShown, GetSize/SetSize, GetRect, SetFormattedText, HookScript, IsEventRegistered, GetEffectiveAlpha, and the four *Attribute verbs as a plain per-frame store. The mask/atlas families, the secure-template drivers and the text-measurement getters are skipped with reasons.

  • Quest: 8 of ~13 C_QuestLog.* (the index↔questID mapping, GetInfo/GetQuestLogTitle, IsOnQuest/IsUnitOnQuest, GetNumQuestObjectives); the four standalone-cache probes and the bare GetQuestLogLeaderBoardID have no data behind them.

  • Faction: all 3 bare id-keyed globals + 11 of 12 C_Reputation.*; only GetLastStandingChange has no record to read. Answers for listed factions (no DBC here).

  • FriendList: 8 of 13 C_FriendList.*; the notes pair and the two guid-keyed predicates have no backing data.

  • Gossip: all 11 of C_GossipInfo.* (selection stays index-keyed — 1.12 sends no option id).

  • MerchantFrame: 3 real of 6 C_MerchantFrame.*, the other 3 honest constants (refunds and one-click junk sale are later-era features).

  • Mail: both link getters — which also closes SuperWoW's own pair.

  • CVar: all 8 of C_CVar.*. SetTempCVar/RemoveTempCVar are genuinely non-persisting (CvarSlot::temp_original + the snapshot), not just live-for-Lua.

  • NamePlate: all 4 of C_NamePlate.*, over the existing plate pool.

  • Macro: C_Macro.GetMacroIcon/CreateMacro/EditMacro. GetMacroSpell/GetMacroItem/ StopMacro/SetMacroDisplay and the four Get*MacroIcons need directive resolution, macro execution, or icon provenance that does not exist — see docs/ADDON_COMPAT.md.

  • Action: GetActionInfo.

  • Item: 37 of ~55 C_Item.* — the identity/data/getter/predicate families over the one item template cache, with ItemLocation accepted as the plain {bagID,slotIndex} / {equipmentSlotIndex} table. The guid, item-level, item-stat and lock families are skipped with reasons. ItemLocation itself now exists as a real mixin (compat/classic_api/item_location.rs) with CreateFromBagAndSlot/CreateFromEquipmentSlot/ CreateEmpty and the whole ItemLocationMixin; the plain table still works, because the mixin hands out exactly that table with methods copied on. GetItemUniquenessByID stays out: the fact (max_count) is here but upstream's return shape is not, and the two candidate shapes behave differently — docs/ADDON_COMPAT.md has the argument.

  • Map: 4 of 27 C_Map.* — GetMapWorldSize, GetMapAreaIDs, GetMapOverlays, GetAreas. The first three read the world-map catalog the app already pushes, no new feed; GetMapOverlays answers every shipped overlay row, explored or not, which is what separates it from the stock GetNumMapOverlays/GetMapOverlayInfo pair. GetAreas is the whole AreaTable.dbc name column (1,480 rows, where the catalog keeps the ~80 that have a map) and is a feed of its own, ui_world_map::seed_area_names; it is what pfQuest's minimap pass resolves the player's zone through, so without it the world map drew pins and the minimap drew none. GetAreaTriggerInfo still needs an app→VM feed and is specified in ADDON_COMPAT.md; the rest are later-era or app-side.

  • PlayerInfo: C_PlayerInfo.CanUseItem alone, the same function value C_Item.IsUsableItem answers from so the two cannot disagree. The nine PlayerLocation-keyed members have no source here.

  • GetClassInfo's class table is a new app→VM feed of the player's own ChrClasses.dbc (benilla-formats' chr_classes.rs fields 5 and 14 → benilla-app's ui_chr_classes.rs → UiScript::set_class_info), the same shape the race feed takes and for the same reason. Nil for a gap is load-bearing: 1.12 leaves ids 6 and 10 empty and pfQuest walks 1, 32 straight through them. Worth knowing before touching it: all nine shipped enUS rows satisfy className:upper() == classFile, so a reader that derived one from the other is invisible on real data — a test records the coincidence and another uses a renamed fixture to pin the independence.

  • Not ClassicAPI, built anyway: TableUtil.Execute (table_util.rs). Blizzard's own FrameXML helper, which this install's pfQuest calls at file scope — absent, it aborted map.lua and left pfMap undefined.

  • AddOns: 9 of 10 C_AddOns.*, all delegating to the stock addon globals; GetAddOnLocalTable is absent (1.12 passes addon files no arguments, so no such table exists).

  • GameTooltip (widget methods): the reader family — GetItem, GetSpell, HasItem, HasSpell, GetUnit, HasUnit, GetOwner, IsEquippedItem — over new TooltipState::subject state recorded at the one item renderer and the one spell renderer. GetUnitGUID, the GameObject pair, the Set*ByID aliases and the talent/set/totem/compare setters are skipped with reasons.

Account

SaveAccount, DeleteAccount, GetSavedAccounts, LoginWithSavedAccount

Action

GetActionInfo

AddOns (C_AddOns)

GetAddOnName, GetAddOnTitle, GetAddOnNotes, IsAddOnLoadable, IsAddOnLoaded, LoadAddOn, GetAddOnSecurity, DoesAddOnExist, GetAddOnOptionalDependencies, GetAddOnLocalTable

APIDocumentation

C_APIDocumentation.GetSystems, C_APIDocumentation.GetSystem, _classicapi_UndocumentedAPI

AuctionHouse (C_AuctionHouse)

PostItem

AuraUtil

ForEachAura, FindAura, FindAuraByName, UnpackAuraData

CharacterList

GetSavedCharacterOrder, SetSavedCharacterOrder

Chat

GetCurrentChatGUID

Class

FillLocalizedClassList

ClassColor (C_ClassColor)

GetClassColor

ColorUtil (C_ColorUtil)

ConvertRGBToHSV, ConvertHSVToRGB, ConvertHSVToHSL, ConvertHSLToHSV, ConvertHSLToRGB, GenerateTextColorCode, WrapTextInColor, WrapTextInColorCode

Combat

InCombatLockdown, StartAttack, StopAttack

Console

ConsoleExec, ConsoleEcho, ConsolePrintAllMatchingCommands, ConsoleIsActive, ConsoleGetColorFromType, ConsoleGetFontHeight, SetConsoleKey, CalculateStringEditDistance, ConsoleGetAllCommands

Container (C_Container)

GetContainerItemID, GetContainerItemInfo, HasContainerItem, GetItemCooldown, GetContainerItemDurability, GetContainerItemRepairCost, GetContainerItemCharges, GetContainerNumFreeSlots, GetContainerFreeSlots, GetContainerItemQuestInfo, GetContainerItemEquipmentSetInfo, CalculateTotalNumberOfFreeBagSlots, IsContainerItemOpenable, PlayerHasHearthstone, UseHearthstone, SwapItems, MoveItem, AutoStoreItem, SortBags, SortBankBags, GetSortBagsRightToLeft, SetSortBagsRightToLeft, GetBackpackAutosortDisabled, SetBackpackAutosortDisabled, GetBankAutosortDisabled, SetBankAutosortDisabled

Creature (C_CreatureInfo)

GetCreatureID, GetCreatureInfoByID, RequestLoadCreatureByID, GetRaceInfo, GetClassInfo, GetCreatureFamilyInfo, GetCreatureFamilyIDs, GetFactionInfo, GetCreatureTypeInfo, GetCreatureTypeIDs

Currency

GetCoinTextureString (also C_CurrencyInfo.GetCoinTextureString)

CVar (C_CVar)

GetCVarInfo, DoesCVarExist, AreCVarsLoaded, GetCVarBitfield, SetCVarBitfield, SetTempCVar, RemoveTempCVar, GetCVarBool

Cursor

GetCursorInfo

EquipmentSet (C_EquipmentSet)

CanUseEquipmentSets, GetNumEquipmentSets, GetEquipmentSetIDs, GetEquipmentSetID, GetEquipmentSetInfo, GetIgnoredSlots, GetItemIDs, GetItemLocations, CreateEquipmentSet, SaveEquipmentSet, ModifyEquipmentSet, DeleteEquipmentSet, IgnoreSlotForSave, UnignoreSlotForSave, IsSlotIgnoredForSave, ClearIgnoredSlotsForSave, EquipmentSetContainsLockedItems, UseEquipmentSet, PickupEquipmentSet

Events

C_EventUtils.IsEventValid, GetFramesRegisteredForEvent

Expansion

GetClassicExpansionLevel, ClassicExpansionAtLeast, ClassicExpansionAtMost

Faction

GetFactionIDByIndex, GetFactionInfoByID, GetFactionParentID, C_Reputation.GetFactionStandings, C_Reputation.GetWatchedFactionData, C_Reputation.GetFactionDataByID, C_Reputation.GetFactionDataByIndex, C_Reputation.SetSelectedFactionByID, C_Reputation.SetWatchedFactionByID, C_Reputation.ToggleFactionAtWarByID, C_Reputation.IsFactionActive, C_Reputation.IsFactionActiveByID, C_Reputation.SetFactionInactiveByID, C_Reputation.SetFactionActiveByID, C_Reputation.GetLastStandingChange

Focus

FocusUnit, ClearFocus

Frame

region:SetPoint (1-arg form), SetSize, GetSize, IsMouseOver, GetRect, IsDragging, GetMouseFoci, SetShown, GetStringHeight, GetUnboundedStringWidth, GetWrappedWidth, GetNumLines, GetLineHeight, IsTruncated, SetMaxLines, GetMaxLines, SetFormattedText, SetRotation, SetVertexOffset, SetMask, CreateMaskTexture, AddMaskTexture, RemoveMaskTexture, GetNumMaskTextures, GetMaskTexture, SetColorTexture, SetAtlas, GetAtlas, ResetTexCoord, SetSpriteSheetCell, SetDesaturation, GetDesaturation, SetCursorPosition, GetCursorPosition, GetUTF8CursorPosition, ClearHighlightText, HasFocus, HasText, SetHighlightColor, GetHighlightColor, ClearHistory, SetResizeBounds, HookScript, IsEventRegistered, RegisterUnitEvent, GetEffectiveAlpha, SetAttribute, SetAttributeNoHandler, ClearAttribute, GetAttribute, SetModernScriptArgs, GetModernScriptArgs, SecureCmdOptionParse, RegisterStateDriver, UnregisterStateDriver, RegisterAttributeDriver, UnregisterAttributeDriver, RegisterUnitWatch, UnregisterUnitWatch, UnitWatchRegistered, SecureButton_GetAttribute, SecureButton_GetUnit, GetClickFrame

FriendList (C_FriendList)

SendWhoQueryByName, IsWhoQueryPending, GetNumWhoResults, GetWhoInfo, IsFriend, IsIgnored, IsIgnoredByGuid, GetNumFriends, GetNumOnlineFriends, GetFriendInfo, GetFriendInfoByIndex, SetFriendNotes, SetFriendNotesByIndex

GameObject (C_GameObjectInfo)

GetGameObjectInfoByID, RequestLoadGameObjectByID, ClosestGameObjectPosition

GameTooltip

SetSpellByID, AddSpellByID, SetTalentByID, SetInventoryItemByID, SetHyperlinkCompareItem, IsEquippedItem, SetItemByGUID, SetEquipmentSet, SetTotem, GetItem, GetSpell, HasItem, HasSpell, GetUnit, GetUnitGUID, HasUnit, GetGameObject, HasGameObject, GetOwner

Glue (C_Glue)

IsFirstLoadThisSession, IsOnGlueScreen

Gossip (C_GossipInfo)

GetText, GetOptions, GetAvailableQuests, GetActiveQuests, GetNumOptions, GetNumAvailableQuests, GetNumActiveQuests, SelectOption, SelectOptionByIndex, SelectAvailableQuest, SelectActiveQuest, CloseGossip

Hooks

hooksecurefunc (both forms)

Input

IsLeftShiftKeyDown, IsRightShiftKeyDown, IsLeftControlKeyDown, IsRightControlKeyDown, IsLeftAltKeyDown, IsRightAltKeyDown, IsModifierKeyDown, IsMouseButtonDown, GetMouseButtonClicked

Instance

GetInstanceInfo

Item (C_Item)

DoesItemExist, DoesItemExistByID, EquipItemByName, GetCurrentItemLevel, GetDetailedItemLevelInfo, GetItemCount, GetItemData, GetItemDataByID, GetItemFamily, GetItemGUID, GetItemID, GetItemInfo, GetItemInfoInstant, GetItemInventorySlotInfo, GetItemInventorySlotKey, GetItemInventoryType, GetItemInventoryTypeByID, GetItemLink, GetItemLocation, GetItemMaxStackSize, GetItemMaxStackSizeByID, GetItemName, GetItemNameByID, GetItemQuality, GetItemQualityByID, GetItemSellPrice, GetItemSellPriceByID, GetItemSetID, GetItemSetIDByID, GetItemSetInfo, GetItemSpell, GetItemStatDelta, GetItemStats, GetItemClassInfo, GetItemSubClassInfo, GetItemUniqueness, GetItemUniquenessByID, GetStackCount, GetWeaponEnchantInfo, GetItemTempEnchantInfo, GetEnchantInfo, IsBound, IsConsumableItem, IsEquippableItem, IsUsableItem, IsEquippedItem, IsItemDataCachedByID, IsItemDataCached, IsItemGUIDInInventory, IsItemInRange, IsItemOpenable, IsLocked, LockItem, LockItemByGUID, PickupItem, RequestLoadItemDataByID, RequestLoadItemData, UnlockAllItems, UnlockItem, UseAtCursor, UseAtUnit, UseItemByName, GetAverageItemLevel, GetInventoryItemDurability, GetInventoryItemID, GetInventoryItemRepairCost, GetInventoryItemsForSlot, GetItemIcon, GetItemIconByID, OffhandHasWeapon

Loot (C_Loot)

GetNearbyLootableUnits, LootUnit, LootUnitItem, ScanNearbyLoot, LootAllCorpses, IsScanInProgress, GetLastScanResults

LootHistory (C_LootHistory)

GetNumItems, GetItem, GetPlayerInfo

LossOfControl (C_LossOfControl)

GetActiveLossOfControlDataCount, GetActiveLossOfControlData, GetSchoolLockout

Lua

select, unpack, xpcall, collectgarbage, table.wipe, table.count, table.maxn, Mixin, CreateFromMixins, strsplit, strjoin, strtrim, strreplace, string.reverse, strrev, math.fmod, math.modf, coroutine.create, coroutine.resume, coroutine.yield, coroutine.status, coroutine.wrap, coroutine.running

Macros

CastSpellNoToggle (macro line), StopMacro, GetMacroSpell, GetMacroItem, GetMacroIcons, GetMacroItemIcons, GetLooseMacroIcons, GetLooseMacroItemIcons, C_Macro.CreateMacro, C_Macro.EditMacro, C_Macro.GetMacroIcon, C_Macro.SetMacroDisplay

Mail

GetSendMailItemLink, GetInboxItemLink

Map (C_Map)

CanSetUserWaypointOnMap, GetAreaInfo, GetAreas, GetAreaTriggerInfo, GetAreaTriggers, GetBestMapForUnit, GetFallbackWorldMapID, GetMapAreaIDs, GetMapArtLayers, GetMapArtLayerTextures, GetMapChildrenInfo, GetMapInfo, GetMapInfoAtPosition, GetMapOverlays, GetMapPosFromWorldPos, GetMapRectOnMap, GetMapWorldSize, GetPlayerMapPosition, GetUserWaypoint, HasUserWaypoint, ClearUserWaypoint, GetUserWaypointHyperlink, GetUserWaypointFromHyperlink, GetUserWaypointPositionForMap, GetWorldPosFromMapPos, MapHasArt, SetUserWaypoint

MapExplorationInfo (C_MapExplorationInfo)

GetExploredMapTextures, GetUnexploredMapTextures

MerchantFrame (C_MerchantFrame)

GetItemInfo, GetBuybackItemID, GetNumJunkItems, SellAllJunkItems, IsMerchantItemRefundable, IsSellAllJunkEnabled

Model

model:SetDisplayInfo, model:SetCreature

ChatBubbles (C_ChatBubbles)

GetAllChatBubbles

NamePlate (C_NamePlate)

GetNamePlates, GetNamePlateGUIDs, GetNamePlateForUnit, GetNamePlateForGUID

NameCache

GetPlayerInfoByGUID, UnitNameFromGUID, C_PlayerCache.GetPlayerInfoByName, C_PlayerCache.RememberPlayer, C_PlayerCache.SetEnabled, C_PlayerCache.IsEnabled, C_PlayerCache.SetScanEnabled, C_PlayerCache.IsScanEnabled

NewItems (C_NewItems)

IsNewItem, RemoveNewItem, ClearAll

PlayerInfo (C_PlayerInfo)

CanUseItem, GUIDIsPlayer, GUIDIsCreature, GUIDIsPet, GUIDIsGameObject, GetName, GetClass, GetRace, GetSex, IsConnected

Quest (C_QuestLog)

GetInfo, GetQuestLogTitle, GetQuestIDForLogIndex, GetLogIndexForQuestID, GetHeaderIndexForQuest, RequestLoadQuestByID, IsOnQuest, IsUnitOnQuest, GetTitleForQuestID, GetQuestDetails, GetNumQuestObjectives, IsQuestDataCachedByID, GetQuestLogLeaderBoardID

Sound

PlaySound (both forms), C_Sound.PlaySound, C_Sound.PlaySoundWithOptions, C_Sound.GetSoundScaledVolume, C_Sound.IsPlaying, C_Sound.PlayItemSound, C_Sound.PlayVocalErrorSound, MuteSoundFile, UnmuteSoundFile, C_Sound.GetRecentSoundFiles

Spell (C_Spell, plus several bare globals)

DoesSpellExist, GetSchoolString, GetSpellInfo (both forms), GetSpellName, GetSpellTexture, GetSpellLink (both forms), GetSpellDescription, GetSpellMechanicByID, GetSpellEffectInfo, GetSpellEffectMechanics, GetSpellDispelType, GetSpellRadius (both forms), GetSpellPowerCost, GetSpellReagents, GetSpellCastCount, GetSpellSubtext, IsPassiveSpell (both forms), IsSpellPassive, IsPlayerSpell, CanDualWield, IsSpellKnown, GetSpellBonusDamage, GetSpellBonusHealing, IsUsableSpell (both forms), IsSpellUsable, GetSpellCooldown, GetSpellLossOfControlCooldown, IsCurrentSpell, IsSelfBuff, SpellHasRange (both forms), IsSpellInRange, IsAutoAttackSpell, IsRangedAutoAttackSpell, IsNextMeleeSpell, ResetsMeleeSwing, IsHarmfulSpell, IsHelpfulSpell, IsSpellHarmful, IsSpellHelpful, GetSpellSchool, CastSpellNoToggle, CastAtCursor, CastAtUnit, CancelSpellByID, CancelSpellByName, UnitCastingInfo, CastingInfo, UnitChannelInfo, ChannelInfo, GetSpellLevelInfo, GetSpellRequiredTargetLevel

SpellBook (C_SpellBook)

FindSpellBookSlotByID, GetSpellBookItemInfo, GetNumSpellBookSkillLines, GetSpellBookSkillLineInfo, GetSpellBookItemSkillLineIndex, GetSkillLineIndexByID, GetSpellBookItemCastCount, GetSpellBookItemLossOfControlCooldownInfo, GetSpellBookItemLossOfControlCooldownDuration, IsClassTalentSpellBookItem, ContainsAnyDisenchantSpell, GetSpellLevelLearned, GetCurrentLevelSpells, GetPlayerSpellsByAura, GetSkillLineName, GetSkillLineRank, GetSpellSkillLine, IsAutoAttackSpellBookItem, IsRangedAutoAttackSpellBookItem

State

IsMounted, Dismount, IsStealthed, IsFalling, IsSwimming, IsIndoors, IsOutdoors, IsAssistingRitual, IsInGroup, IsInRaid, GetMirrorTimerInfo, GetMirrorTimerProgress, GetShapeshiftFormID, CancelShapeshiftForm, GetSheathState

SwingTimer (C_SwingTimer)

EnableRangeCheck, IsTargetWithinSwingRange

System

GetPhysicalScreenSize, CopyToClipboard

Talent

GetTalentSpellID, GetTalentIDByIndex

Targeting

GetPlayerFacing, TargetDirectionEnemy, TargetDirectionFriend, TargetNearest, TargetNearestEnemyPlayer, TargetNearestFriendPlayer

TaxiMap (C_TaxiMap)

GetTaxiNodesForMap, GetAllTaxiNodes, GetTaxiPaths, GetTaxiPathWaypoints, GetTaxiRoute

Texture (C_Texture)

GetAtlasInfo, GetAtlasExists, GetAtlasID, GetAtlasElementID, GetAtlasElements, RegisterAtlas

Time

GetServerTime, GetTimeCached, C_Timer.After, C_Timer.NewTimer, C_Timer.NewTicker, C_DateAndTime.GetCurrentCalendarTime, C_DateAndTime.GetCalendarTimeFromEpoch, C_DateAndTime.AdjustTimeByDays, C_DateAndTime.AdjustTimeByMinutes, C_DateAndTime.CompareCalendarTime, C_DateAndTime.GetServerTimeLocal, C_DateAndTime.GetSecondsUntilDailyReset

Totem

GetTotemInfo, GetTotemTimeLeft, GetTotemDuration, TargetTotem

Tracking

GetNumTrackingTypes, GetTrackingInfo, SetTracking

TradeSkillUI (C_TradeSkillUI)

GetTradeSkillListLink, GetCraftListLink, GetTradeSkillListRecipes

UIColor (C_UIColor)

GetColors

Unit

UnitGUID (done), UnitTokenFromGUID (done), UnitTokenFromName, UnitSubName, UnitCreatureFamilyID, UnitCreatureTypeID, UnitCreatureID, GetUnitSpeed, UnitClassBase, UnitRaceBase, UnitIsAFK, UnitIsDND, UnitIsFeignDeath, UnitIsInMyGuild, UnitIsPossessed, UnitIsMinion, UnitIsPet, UnitIsOtherPlayersPet, UnitOwnerGUID, UnitCreatedBySpell, UnitStandState, UnitInRange, UnitDistanceSquared, UnitPosition, UnitInLineOfSight, ClosestUnitPosition, UnitHealthMissing, UnitPower, UnitPowerMax, UnitPowerMissing, UnitPowerType, UnitSpellHaste, UnitSpellTargetName

UnitAuras (C_UnitAuras)

GetAuraDataByIndex, GetBuffDataByIndex, GetDebuffDataByIndex, UnitAura, UnitBuff, UnitDebuff, GetAuraSlots, GetAuraDataBySlot, UnitAuraBySlot, GetUnitAuraBySpellID, GetPlayerAuraBySpellID, GetAuraDataBySpellName, RegisterComboDuration, RegisterAuraDurationModifierByTrigger, GetUnitAuras, GetAuraDispelTypeColor

VoiceChat (C_VoiceChat)

GetTtsVoices, GetRemoteTtsVoices, SpeakText, StopSpeakingText

XMLUtil (C_XMLUtil)

GetTemplates, GetTemplateInfo, DoesTemplateExist