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
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 ofC_Container.*butGetContainerItemCharges/GetContainerItemRepairCost/GetContainerItemQuestInfo/GetContainerItemEquipmentSetInfo/IsContainerItemOpenable, which honestly answer nil/false. -
UnitAuras: all ofC_UnitAuras.*; the twoRegister*hooks accept and discard. -
CreatureInfo:GetRaceInfo,GetFactionInfo,GetClassInfo,GetCreatureID. The two race getters read the player's ownChrRaces.dbcthrough 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" whileclientFileStringstays"BloodElf"for the art paths.GetRaceInfomust 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 readSpell.dbcthrough 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 ofC_ColorUtil.*(pure maths + the|cescape builders). -
ClassColor:C_ClassColor.GetClassColor, over FrameXML's ownRAID_CLASS_COLORS. -
Expansion: all 3. -
Input: 7 of 9 — the six sided modifier getters (each answering the combined bit the engine tracks) andIsModifierKeyDown;IsMouseButtonDown/GetMouseButtonClickedhave no honest backing state. -
Lua: the additive half only —table.count,Mixin,CreateFromMixins,strreplace. Thelua50.rs-nilled 5.1 stdlib stays nilled, and so doesstrrev(tests/stdlib.rspins it), by the deferred decision above. -
Currency:C_CurrencyInfo.GetCoinTextureString, delegating to FrameXML's own. -
Events:GetFramesRegisteredForEvent;C_EventUtils.IsEventValidhas no valid-event set. -
System:GetPhysicalScreenSize(logical rect, not device pixels); noCopyToClipboard. -
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*Attributeverbs 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 ~13C_QuestLog.*(the index↔questID mapping,GetInfo/GetQuestLogTitle,IsOnQuest/IsUnitOnQuest,GetNumQuestObjectives); the four standalone-cache probes and the bareGetQuestLogLeaderBoardIDhave no data behind them. -
Faction: all 3 bare id-keyed globals + 11 of 12C_Reputation.*; onlyGetLastStandingChangehas no record to read. Answers for listed factions (no DBC here). -
FriendList: 8 of 13C_FriendList.*; the notes pair and the two guid-keyed predicates have no backing data. -
Gossip: all 11 ofC_GossipInfo.*(selection stays index-keyed — 1.12 sends no option id). -
MerchantFrame: 3 real of 6C_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 ofC_CVar.*.SetTempCVar/RemoveTempCVarare genuinely non-persisting (CvarSlot::temp_original+ the snapshot), not just live-for-Lua. -
NamePlate: all 4 ofC_NamePlate.*, over the existing plate pool. -
Macro:C_Macro.GetMacroIcon/CreateMacro/EditMacro.GetMacroSpell/GetMacroItem/StopMacro/SetMacroDisplayand the fourGet*MacroIconsneed directive resolution, macro execution, or icon provenance that does not exist — seedocs/ADDON_COMPAT.md. -
Action:GetActionInfo. -
Item: 37 of ~55C_Item.*— the identity/data/getter/predicate families over the one item template cache, withItemLocationaccepted as the plain{bagID,slotIndex}/{equipmentSlotIndex}table. The guid, item-level, item-stat and lock families are skipped with reasons.ItemLocationitself now exists as a real mixin (compat/classic_api/item_location.rs) withCreateFromBagAndSlot/CreateFromEquipmentSlot/CreateEmptyand the wholeItemLocationMixin; the plain table still works, because the mixin hands out exactly that table with methods copied on.GetItemUniquenessByIDstays out: the fact (max_count) is here but upstream's return shape is not, and the two candidate shapes behave differently —docs/ADDON_COMPAT.mdhas the argument. -
Map: 4 of 27C_Map.*—GetMapWorldSize,GetMapAreaIDs,GetMapOverlays,GetAreas. The first three read the world-map catalog the app already pushes, no new feed;GetMapOverlaysanswers every shipped overlay row, explored or not, which is what separates it from the stockGetNumMapOverlays/GetMapOverlayInfopair.GetAreasis the wholeAreaTable.dbcname 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.GetAreaTriggerInfostill needs an app→VM feed and is specified inADDON_COMPAT.md; the rest are later-era or app-side. -
PlayerInfo:C_PlayerInfo.CanUseItemalone, the same function valueC_Item.IsUsableItemanswers from so the two cannot disagree. The ninePlayerLocation-keyed members have no source here. -
GetClassInfo's class table is a new app→VM feed of the player's ownChrClasses.dbc(benilla-formats'chr_classes.rsfields 5 and 14 →benilla-app'sui_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 walks1, 32straight through them. Worth knowing before touching it: all nine shipped enUS rows satisfyclassName: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 abortedmap.luaand leftpfMapundefined. -
AddOns: 9 of 10C_AddOns.*, all delegating to the stock addon globals;GetAddOnLocalTableis 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 newTooltipState::subjectstate recorded at the one item renderer and the one spell renderer.GetUnitGUID, the GameObject pair, theSet*ByIDaliases 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
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