AgentSkillsCN

wow-api-misc-systems

为那些无需单独技能的小型WoW Retail API系统打造“万能”参考。涵盖教程、报表系统、启动画面、过场动画、ChromieTimeInfo、盟友种族、用户反馈、战争阵营场景信息、研究信息(考古学)、日志、事件工具、Slash命令、点击绑定、工具提示信息、工具提示对比、NPC对话信息(GossipInfo)、玩家选择、玩家交互管理器、沉浸式交互、本地化、地区语言、镜像定时器、模型信息、电影、家长控制、特长活动、招募好友、贡献收集器、要塞信息(旧版)、契约/灵魂绑定(旧版)、阿泽瑞特物品(旧版),以及其他各类实用命名空间。当您需要处理NPC的闲聊/对话、玩家选择、工具提示、教程、过场动画、Chromie Time、盟友种族、战争阵营、报表系统,或任何杂项游戏系统时,此功能将为您提供全面支持。

SKILL.md
--- frontmatter
name: wow-api-misc-systems
description: "Catch-all reference for smaller WoW Retail API systems that don't warrant individual skills. Covers Tutorial, ReportSystem, SplashScreen, Cinematic, ChromieTimeInfo, AlliedRaces, UserFeedback, WarbandSceneInfo, ResearchInfo (archaeology), Log, EventUtils, SlashCommand, ClickBindings, TooltipInfo, TooltipComparison, GossipInfo (NPC dialog), PlayerChoice, PlayerInteractionManager, ImmersiveInteraction, Localization, Locale, MirrorTimer, ModelInfo, Movie, ParentalControls, PerksActivities, RecruitAFriend, ContributionCollector, GarrisonInfo (legacy), Covenant/Soulbinds (legacy), AzeriteItem (legacy), and other utility namespaces. Use when working with NPC gossip/dialog, player choices, tooltips, tutorials, cinematics, Chromie Time, allied races, warbands, report system, or any miscellaneous game system."

Miscellaneous Systems API (Retail — Patch 12.0.0)

Catch-all reference for smaller API systems that don't warrant individual skills.

Source: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API Current as of: Patch 12.0.0 (Build 65655) — January 28, 2026 Scope: Retail only.


Scope

This skill covers ~40 smaller API systems grouped by category:

  • NPC Interaction — GossipInfo, PlayerChoice, PlayerInteractionManager, ImmersiveInteraction
  • Tooltips — TooltipInfo, TooltipComparison
  • UI Systems — Tutorial, SplashScreen, SlashCommand, ClickBindings, MirrorTimer
  • Cinematics & Media — Cinematic, Movie, ModelInfo
  • Social/Account — ReportSystem, UserFeedback, ParentalControls, RecruitAFriend
  • Game Systems — ChromieTimeInfo, AlliedRaces, WarbandSceneInfo, PerksActivities
  • Utility — Log, EventUtils, Localization, Locale
  • Legacy — GarrisonInfo, Covenant/Soulbinds, AzeriteItem, ResearchInfo, ContributionCollector

NPC Interaction

C_GossipInfo — NPC Dialog

FunctionReturnsDescription
C_GossipInfo.GetOptions()optionsAvailable dialog options
C_GossipInfo.GetText()textNPC dialog text
C_GossipInfo.GetNumOptions()numOptionsNumber of options
C_GossipInfo.SelectOption(optionID, text, confirmed)Select dialog option
C_GossipInfo.SelectOptionByIndex(index)Select by index
C_GossipInfo.GetNumAvailableQuests()numQuestsAvailable quests
C_GossipInfo.GetAvailableQuests()questsAvailable quest list
C_GossipInfo.GetNumActiveQuests()numQuestsActive quests
C_GossipInfo.GetActiveQuests()questsActive quest list
C_GossipInfo.SelectAvailableQuest(questID)Select available quest
C_GossipInfo.SelectActiveQuest(questID)Select active quest
C_GossipInfo.ForceGossip()forceGossipForce gossip display?
C_GossipInfo.CloseGossip()Close gossip window
C_GossipInfo.GetPoiForUiMapID(uiMapID)poiInfoPOI for map
C_GossipInfo.GetPoiInfo(uiMapID, gossipPoiID)poiInfoSpecific POI info
C_GossipInfo.GetCustomGossipDescriptionString()descriptionCustom description
C_GossipInfo.RefreshOptions()Refresh options

Gossip Option Fields

  • gossipOptionID — Unique option ID
  • name — Option text
  • icon — Option icon
  • status — Status enum
  • orderIndex — Sort order
  • flags — Option flags
  • overrideIconID — Override icon
  • selectOptionWhenOnlyOption — Auto-select?
  • spellID — Associated spell

C_PlayerChoice — Player Choices

FunctionReturnsDescription
C_PlayerChoice.GetCurrentPlayerChoiceInfo()choiceInfoCurrent choice
C_PlayerChoice.GetNumPlayerChoices()numChoicesNumber of choices
C_PlayerChoice.GetPlayerChoiceOptionInfo(optionIndex)optionInfoOption details
C_PlayerChoice.GetPlayerChoiceRewardInfo(rewardIndex)rewardInfoReward details
C_PlayerChoice.SendPlayerChoiceResponse(responseID)Make choice
C_PlayerChoice.IsWaitingForPlayerChoiceResponse()isWaitingResponse pending?
C_PlayerChoice.OnUIClosed()UI closed callback
C_PlayerChoice.GetRemainingTime()secondsTime limit

C_PlayerInteractionManager — Interaction Windows

FunctionReturnsDescription
C_PlayerInteractionManager.ClearInteraction(type)clearedClose interaction
C_PlayerInteractionManager.ReplaceInteraction(type, target)Replace interaction
C_PlayerInteractionManager.IsInteractingWithNpcOfType(type)isInteractingInteracting with type?
C_PlayerInteractionManager.GetCurrentInteractionType()typeCurrent interaction

Player Interaction Types (Enum.PlayerInteractionType)

NameDescription
BankerBank NPC
MerchantVendor
TrainerTrainer
MailInfoMailbox
AuctionHouseAuction House
GuildBankerGuild bank
TransmogrifierTransmog NPC
VoidStorageBankerVoid storage
StableManagerStable master
BarberShopBarber shop

C_ImmersiveInteraction — Immersive NPC

FunctionReturnsDescription
C_ImmersiveInteraction.GetCurrentInteraction()interactionInfoCurrent immersive interaction
C_ImmersiveInteraction.IsActive()isActiveImmersive mode active?

Tooltips

C_TooltipInfo — Tooltip Data Provider

FunctionReturnsDescription
C_TooltipInfo.GetItemByID(itemID)tooltipDataItem tooltip data
C_TooltipInfo.GetItemByItemLink(itemLink)tooltipDataTooltip from link
C_TooltipInfo.GetSpellByID(spellID)tooltipDataSpell tooltip
C_TooltipInfo.GetUnitAura(unit, index, filter)tooltipDataAura tooltip
C_TooltipInfo.GetHyperlink(hyperlink)tooltipDataGeneric hyperlink tooltip
C_TooltipInfo.GetInventoryItem(unit, slot)tooltipDataEquipped item tooltip
C_TooltipInfo.GetBagItem(bag, slot)tooltipDataBag item tooltip
C_TooltipInfo.GetGuildBankItem(tab, slot)tooltipDataGuild bank tooltip
C_TooltipInfo.GetVoidStorageItem(slot)tooltipDataVoid storage tooltip
C_TooltipInfo.GetAchievementByID(achievementID)tooltipDataAchievement tooltip
C_TooltipInfo.GetCurrencyByID(currencyID)tooltipDataCurrency tooltip
C_TooltipInfo.GetMountBySpellID(spellID)tooltipDataMount tooltip
C_TooltipInfo.GetPetByID(petID)tooltipDataPet tooltip
C_TooltipInfo.GetToyByItemID(itemID)tooltipDataToy tooltip
C_TooltipInfo.GetQuestItem(type, index)tooltipDataQuest reward tooltip

C_TooltipComparison — Item Comparison

FunctionReturnsDescription
C_TooltipComparison.GetItemComparisonInfo(tooltipData)comparisonInfoCompare items
C_TooltipComparison.GetItemComparisonDelta(tooltipData)deltaStat differences

UI Systems

Tutorial

FunctionReturnsDescription
C_Tutorial.AcknowledgeTutorial(tutorialID)Mark tutorial seen
C_Tutorial.IsTutorialFlagged(tutorialID)isFlaggedAlready shown?
C_Tutorial.SetTutorialFlag(tutorialID, flagged)Set flag

SplashScreen

FunctionReturnsDescription
C_SplashScreen.AcknowledgeSplash()Dismiss splash
C_SplashScreen.CanViewSplashScreen()canViewCan show splash?
C_SplashScreen.RequestLatestSplashScreen()Request latest
C_SplashScreen.ShouldShowSplashScreen()shouldShowShould display?

SlashCommand

FunctionReturnsDescription
SlashCmdList["COMMANDNAME"]Register slash command
SLASH_COMMANDNAME1 = "/cmd"Define slash trigger
hash_SlashCmdListInternal hash table

ClickBindings

FunctionReturnsDescription
C_ClickBindings.GetBindingType(modifiers, button)bindingTypeBinding at key combo
C_ClickBindings.SetBindingType(modifiers, button, type)Set binding
C_ClickBindings.ResetBindings()Reset all
C_ClickBindings.GetProfileInfo()profileInfoProfile data

MirrorTimer — Breath/Fatigue Bars

FunctionReturnsDescription
GetMirrorTimerInfo(index)timer, initial, maxValue, scale, paused, labelTimer info
GetMirrorTimerProgress(timer)valueTimer value
MIRRORTIMER_NUMTIMERS3Max timers

Cinematics & Media

Cinematic

FunctionReturnsDescription
OpeningCinematic()Play opening cinematic
CinematicFinished(id, didCancel)Cinematic ended
IsInCinematicScene()inCinematicIn cinematic?
StopCinematic()Stop cinematic
InCinematic()inCinematicLegacy cinematic check

Movie

FunctionReturnsDescription
MovieFrame.PlayMovie(movieID)Play movie
GameMovieFinished()Movie ended callback

C_ModelInfo — Model Data

FunctionReturnsDescription
C_ModelInfo.GetModelSceneInfoByID(sceneID)sceneInfoScene info
C_ModelInfo.GetModelSceneActorInfoByID(actorID)actorInfoActor info
C_ModelInfo.GetModelSceneCameraInfoByID(cameraID)cameraInfoCamera info
C_ModelInfo.AddActiveModelScene(frame, sceneID)Add scene to frame
C_ModelInfo.ClearActiveModelScene(frame)Clear scene

Social / Account

C_ReportSystem — Player Reports

FunctionReturnsDescription
C_ReportSystem.CanReportPlayer(playerLocation)canReportCan report?
C_ReportSystem.SendReport(reportInfo)Submit report
C_ReportSystem.GetMajorCategoriesForReportType(reportType)categoriesReport categories
C_ReportSystem.GetMinorCategoriesForMajorCategory(majorCategory)minorCategoriesSub-categories
C_ReportSystem.InitiateReportPlayer(complaintType, playerName)Start report flow

C_UserFeedback — Feedback System

FunctionReturnsDescription
C_UserFeedback.SubmitBug(description)Submit bug report
C_UserFeedback.SubmitSuggestion(description)Submit suggestion

C_ParentalControls — Parental Controls

FunctionReturnsDescription
C_ParentalControls.GetRemainingPlayTime()minutesPlay time left
C_ParentalControls.IsPlayTimeActive()isActivePlay time limit?

C_RecruitAFriend — Recruit A Friend

FunctionReturnsDescription
C_RecruitAFriend.GetRecruitInfo()recruitInfoRAF info
C_RecruitAFriend.IsEnabled()enabledRAF enabled?
C_RecruitAFriend.IsRecruitingEnabled()enabledCan recruit?
C_RecruitAFriend.GenerateLink()linkGenerate RAF link
C_RecruitAFriend.ClaimActivityReward(activityID)Claim RAF reward
C_RecruitAFriend.ClaimNextReward()Claim next

Game Systems

C_ChromieTimeInfo — Chromie Time (Level Scaling)

FunctionReturnsDescription
C_ChromieTimeInfo.GetChromieTimeExpansionOptions()optionsAvailable expansions
C_ChromieTimeInfo.SelectChromieTimeExpansionOption(optionID)Select expansion
C_ChromieTimeInfo.GetChromieTimeExpansionOption(optionID)optionInfoOption info
C_ChromieTimeInfo.GetCurrentChromieTimeExpansionOption()optionInfoCurrent selection
C_ChromieTimeInfo.CloseChromieTimeUI()Close UI

C_AlliedRaces — Allied Races

FunctionReturnsDescription
C_AlliedRaces.GetAllRacialAbilitiesForRace(raceID)abilitiesRace abilities
C_AlliedRaces.GetRaceInfoByID(raceID)raceInfoRace info
C_AlliedRaces.ClearAlliedRaceDetailsGiver()Clear details
C_AlliedRaces.GetAlliedRaceInfo(raceID)infoAllied race details

C_WarbandSceneInfo — Warband Scenes

FunctionReturnsDescription
C_WarbandSceneInfo.GetWarbandSceneInfo()sceneInfoWarband scene data
C_WarbandSceneInfo.GetCharacterEntries()entriesCharacter positions
C_WarbandSceneInfo.SetCharacterEntry(index, characterInfo)Set character slot
C_WarbandSceneInfo.GetAvailableCharacters()charactersAvailable characters
C_WarbandSceneInfo.SaveScene()Save warband scene

C_PerksActivities — Monthly Activities

FunctionReturnsDescription
C_PerksActivities.GetPerksActivitiesInfo()infoActivities overview
C_PerksActivities.GetTrackedPerksActivities()activitiesTracked activities
C_PerksActivities.AddTrackedPerksActivity(activityID)Track activity
C_PerksActivities.RemoveTrackedPerksActivity(activityID)Untrack
C_PerksActivities.GetPerksActivityInfo(activityID)activityInfoActivity details
C_PerksActivities.GetAllPerksActivityTags()tagsAll tags/categories

Utility Systems

C_Localization / Locale

FunctionReturnsDescription
GetLocale()localeGame locale (e.g., "enUS")
GetCurrentRegion()regionIDCurrent region
GetCurrentRegionName()regionNameRegion name

Log

FunctionReturnsDescription
LoggingCombat(enable)Toggle combat log file
LoggingChat(enable)Toggle chat log file
IsLoggingCombat()isLoggingCombat logging?
IsLoggingChat()isLoggingChat logging?

C_EventUtils

FunctionReturnsDescription
C_EventUtils.IsEventValid(event)isValidIs event string valid?

Legacy Systems (Deprecated/Maintained)

These systems originated in earlier expansions. APIs may still function but the content is legacy.

GarrisonInfo (WoD/Legion)

FunctionReturnsDescription
C_Garrison.GetFollowerInfo(followerID)followerInfoFollower data
C_Garrison.GetFollowers(followerType)followersFollower list
C_Garrison.GetLandingPageInfo(garrType)infoLanding page
C_Garrison.GetBuildings(garrType)buildingsBuilding list
C_Garrison.GetMissions(garrType)missionsAvailable missions
C_Garrison.IsOnGarrisonMap()onMapIn garrison?

Covenant / Soulbinds (Shadowlands)

FunctionReturnsDescription
C_Covenants.GetActiveCovenantID()covenantIDActive covenant
C_Covenants.GetCovenantData(covenantID)covenantDataCovenant info
C_Soulbinds.GetActiveSoulbindID()soulbindIDActive soulbind
C_Soulbinds.GetSoulbindData(soulbindID)soulbindDataSoulbind info
C_Soulbinds.GetConduitItemLevel(conduitID, conduitRank)itemLevelConduit ilvl

AzeriteItem (Battle for Azeroth)

FunctionReturnsDescription
C_AzeriteItem.IsAzeriteItem(itemLocation)isAzeriteIs Azerite item?
C_AzeriteItem.GetPowerLevel(azeriteItemLocation)powerLevelNecklace level
C_AzeriteItem.GetAzeriteItemXPInfo(azeriteItemLocation)xp, totalLevelXPXP info
C_AzeriteEmpoweredItem.GetPowerInfo(powerID)powerInfoTrait info
C_AzeriteEmpoweredItem.SelectPower(azeriteItemLocation, powerID)Select trait

ResearchInfo (Archaeology — Removed)

FunctionReturnsDescription
C_ResearchInfo.GetDigSitesForMap(uiMapID)digSitesDig sites (legacy)

Note: Archaeology as a profession was removed, but some API remnants persist.

ContributionCollector (Legion)

FunctionReturnsDescription
C_ContributionCollector.GetState(contributionID)stateContribution state
C_ContributionCollector.GetName(contributionID)nameContribution name
C_ContributionCollector.Contribute(contributionID)Contribute

Common Patterns

Handle NPC Gossip

lua
local f = CreateFrame("Frame")
f:RegisterEvent("GOSSIP_SHOW")
f:SetScript("OnEvent", function()
    local options = C_GossipInfo.GetOptions()
    for i, option in ipairs(options) do
        print(i, option.name, option.gossipOptionID)
    end
    
    -- Auto-select if only one option
    if #options == 1 and options[1].selectOptionWhenOnlyOption then
        C_GossipInfo.SelectOption(options[1].gossipOptionID)
    end
end)

Display Player Choice

lua
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_CHOICE_UPDATE")
f:SetScript("OnEvent", function()
    local choiceInfo = C_PlayerChoice.GetCurrentPlayerChoiceInfo()
    if choiceInfo then
        print("Choice:", choiceInfo.questionText)
        for i = 1, C_PlayerChoice.GetNumPlayerChoices() do
            local option = C_PlayerChoice.GetPlayerChoiceOptionInfo(i)
            if option then
                print("  Option", i, ":", option.header, "-", option.description)
            end
        end
    end
end)

Get Tooltip Data Programmatically

lua
-- Get item tooltip text without showing tooltip
local tooltipData = C_TooltipInfo.GetItemByID(12345)
if tooltipData then
    TooltipUtil.SurfaceArgs(tooltipData)
    for _, line in ipairs(tooltipData.lines) do
        TooltipUtil.SurfaceArgs(line)
        print(line.leftText)
    end
end

Check Chromie Time Status

lua
local function ShowChromieTimeOptions()
    local options = C_ChromieTimeInfo.GetChromieTimeExpansionOptions()
    if options then
        for _, option in ipairs(options) do
            print(option.name, option.description, 
                  option.isCurrent and "(ACTIVE)" or "")
        end
    end
end

Register Slash Commands

lua
SLASH_MYADDON1 = "/myaddon"
SLASH_MYADDON2 = "/ma"
SlashCmdList["MYADDON"] = function(msg)
    local cmd, args = msg:match("^(%S+)%s*(.*)")
    cmd = cmd and cmd:lower() or msg:lower()
    
    if cmd == "config" then
        -- Open config
    elseif cmd == "help" then
        print("/myaddon config - Open settings")
        print("/myaddon help - Show help")
    else
        print("Unknown command. Use /myaddon help")
    end
end

Key Events

EventPayloadDescription
GOSSIP_SHOWuiTextureKitNPC gossip opened
GOSSIP_CLOSEDGossip window closed
GOSSIP_CONFIRMgossipID, text, costGossip confirmation
PLAYER_CHOICE_UPDATEPlayer choice available
PLAYER_CHOICE_CLOSEChoice closed
PLAYER_INTERACTION_MANAGER_FRAME_SHOWtypeInteraction opened
PLAYER_INTERACTION_MANAGER_FRAME_HIDEtypeInteraction closed
CINEMATIC_STARTcanBeCancelledCinematic starting
CINEMATIC_STOPCinematic ended
PLAY_MOVIEmovieIDMovie playing
STOP_MOVIEMovie stopped
SPLASH_SCREEN_SHOWShow splash screen
SPLASH_SCREEN_HIDEHide splash screen
TUTORIAL_TRIGGERtutorialIDTutorial triggered
MIRROR_TIMER_STARTtimer, value, maxValue, scale, paused, labelTimer started
MIRROR_TIMER_STOPtimerTimer stopped
MIRROR_TIMER_PAUSEtimer, pausedTimer paused
CHROMIE_TIME_OPENChromie Time UI opened
CHROMIE_TIME_CLOSEChromie Time UI closed
GARRISON_UPDATEGarrison data updated
PERKS_ACTIVITIES_TRACKED_UPDATEDActivity tracking changed

Gotchas & Restrictions

  1. Gossip auto-selectselectOptionWhenOnlyOption flag means the game may auto-select; don't assume GOSSIP_SHOW always waits for input.
  2. PlayerInteractionManager types — Use Enum.PlayerInteractionType for type-safe checks; don't hardcode integers.
  3. Tooltip data API (12.0.0) — Use C_TooltipInfo for programmatic tooltip access rather than scraping GameTooltip text lines.
  4. Legacy API availability — Garrison, Covenant, and Azerite APIs still exist but content is no longer current. Some may be removed in future patches.
  5. Cinematic blocking — Some cinematics block all addon UI; plan for CINEMATIC_START / CINEMATIC_STOP.
  6. Player choices are timed — Some choices have countdowns. Check GetRemainingTime().
  7. SlashCmdList keys — Command names in SlashCmdList must be UPPERCASE. The slash aliases (SLASH_NAME1) are case-insensitive for matching.
  8. Chromie Time level cap — Chromie Time is only available to characters below the expansion's level range.
  9. Gossip POIGetPoiForUiMapID() returns quest giver locations on the map, useful for minimap tracking.
  10. Report system — Reports require valid player locations; use C_ReportSystem.CanReportPlayer() first.