local SpecializationInfo = { Name = "SpecializationInfo", Type = "System", Namespace = "C_SpecializationInfo", Environment = "All", Functions = { { Name = "CanPlayerUsePVPTalentUI", Type = "Function", Returns = { { Name = "canUse", Type = "bool", Nilable = false }, { Name = "failureReason", Type = "string", Nilable = false }, }, }, { Name = "CanPlayerUseTalentSpecUI", Type = "Function", Returns = { { Name = "canUse", Type = "bool", Nilable = false }, { Name = "failureReason", Type = "string", Nilable = false }, }, }, { Name = "CanPlayerUseTalentUI", Type = "Function", Returns = { { Name = "canUse", Type = "bool", Nilable = false }, { Name = "failureReason", Type = "string", Nilable = false }, }, }, { Name = "GetActiveSpecGroup", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "isInspect", Type = "bool", Nilable = true }, { Name = "isPet", Type = "bool", Nilable = true }, }, Returns = { { Name = "groupIndex", Type = "luaIndex", Nilable = false }, }, }, { Name = "GetAllClassIDs", Type = "Function", Returns = { { Name = "allClassIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "GetAllSelectedPvpTalentIDs", Type = "Function", Returns = { { Name = "selectedPvpTalentIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "GetClassIDFromSpecID", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specID", Type = "number", Nilable = false }, }, Returns = { { Name = "classID", Type = "number", Nilable = true }, }, }, { Name = "GetCombatConfigIDForSpecGroup", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "groupIndex", Type = "luaIndex", Nilable = false }, }, Returns = { { Name = "configID", Type = "number", Nilable = true }, }, }, { Name = "GetInspectSelectedPvpTalent", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "inspectedUnit", Type = "UnitToken", Nilable = false }, { Name = "talentIndex", Type = "number", Nilable = false }, }, Returns = { { Name = "selectedTalentID", Type = "number", Nilable = true }, }, }, { Name = "GetInspectSpecialization", Type = "Function", SecretWhenUnitIdentityRestricted = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "unit", Type = "UnitToken", Nilable = false }, }, Returns = { { Name = "specializationID", Type = "number", Nilable = false }, }, }, { Name = "GetNumSpecializationsForClassID", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "classID", Type = "number", Nilable = false }, }, Returns = { { Name = "specCount", Type = "number", Nilable = false }, }, }, { Name = "GetPvpTalentAlertStatus", Type = "Function", Returns = { { Name = "hasUnspentSlot", Type = "bool", Nilable = false }, { Name = "hasNewTalent", Type = "bool", Nilable = false }, }, }, { Name = "GetPvpTalentInfo", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "talentID", Type = "number", Nilable = false }, }, Returns = { { Name = "talentInfo", Type = "PvpTalentInfo", Nilable = true }, }, }, { Name = "GetPvpTalentSlotInfo", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "talentIndex", Type = "number", Nilable = false }, }, Returns = { { Name = "slotInfo", Type = "PvpTalentSlotInfo", Nilable = true }, }, }, { Name = "GetPvpTalentSlotUnlockLevel", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "talentIndex", Type = "number", Nilable = false }, }, Returns = { { Name = "requiredLevel", Type = "number", Nilable = true }, }, }, { Name = "GetPvpTalentUnlockLevel", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "talentID", Type = "number", Nilable = false }, }, Returns = { { Name = "requiredLevel", Type = "number", Nilable = true }, }, }, { Name = "GetSpecIDs", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specSetID", Type = "number", Nilable = false }, }, Returns = { { Name = "specIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "GetSpecialization", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "isInspect", Type = "bool", Nilable = true }, { Name = "isPet", Type = "bool", Nilable = true }, { Name = "specGroupIndex", Type = "luaIndex", Nilable = true }, }, Returns = { { Name = "specializationIndex", Type = "luaIndex", Nilable = false }, }, }, { Name = "GetSpecializationInfo", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specializationIndex", Type = "luaIndex", Nilable = false }, { Name = "isInspect", Type = "bool", Nilable = false, Default = false }, { Name = "isPet", Type = "bool", Nilable = false, Default = false }, { Name = "inspectTarget", Type = "string", Nilable = true }, { Name = "sex", Type = "number", Nilable = true }, { Name = "groupIndex", Type = "luaIndex", Nilable = true }, { Name = "classID", Type = "number", Nilable = true }, }, Returns = { { Name = "specId", Type = "number", Nilable = false, Default = 0 }, { Name = "name", Type = "string", Nilable = true }, { Name = "description", Type = "string", Nilable = true }, { Name = "icon", Type = "fileID", Nilable = true }, { Name = "role", Type = "string", Nilable = true }, { Name = "primaryStat", Type = "luaIndex", Nilable = true }, { Name = "pointsSpent", Type = "number", Nilable = false, Default = 0 }, { Name = "background", Type = "string", Nilable = true }, { Name = "previewPointsSpent", Type = "number", Nilable = false, Default = 0 }, { Name = "isUnlocked", Type = "bool", Nilable = false, Default = true }, }, }, { Name = "GetSpecializationMasterySpells", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specializationIndex", Type = "luaIndex", Nilable = false }, { Name = "isInspect", Type = "bool", Nilable = true }, { Name = "isPet", Type = "bool", Nilable = true }, }, Returns = { { Name = "spellIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "GetSpellsDisplay", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specializationID", Type = "number", Nilable = false }, }, Returns = { { Name = "spellID", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "GetTalentInfo", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "query", Type = "TalentInfoQuery", Nilable = false }, }, Returns = { { Name = "result", Type = "TalentInfoResult", Nilable = true }, }, }, { Name = "HasPlayerEarnedATalentPoint", Type = "Function", Returns = { { Name = "hasEarned", Type = "bool", Nilable = false }, }, }, { Name = "IsInitialized", Type = "Function", Returns = { { Name = "isSpecializationDataInitialized", Type = "bool", Nilable = false }, }, }, { Name = "IsPvpTalentLocked", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "talentID", Type = "number", Nilable = false }, }, Returns = { { Name = "locked", Type = "bool", Nilable = false }, }, }, { Name = "IsSpecSelectionEnabled", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "classID", Type = "number", Nilable = false }, }, Returns = { { Name = "enabled", Type = "bool", Nilable = false }, }, }, { Name = "MatchesCurrentSpecSet", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specSetID", Type = "number", Nilable = false }, }, Returns = { { Name = "matches", Type = "bool", Nilable = false }, }, }, { Name = "SetActiveSpecGroup", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "groupIndex", Type = "luaIndex", Nilable = false }, }, }, { Name = "SetPetSpecialization", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specIndex", Type = "luaIndex", Nilable = false }, { Name = "petNumber", Type = "number", Nilable = true }, }, }, { Name = "SetPvpTalentLocked", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "talentID", Type = "number", Nilable = false }, { Name = "locked", Type = "bool", Nilable = false }, }, }, { Name = "SetSpecialization", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "specIndex", Type = "luaIndex", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, }, Events = { { Name = "ActiveTalentGroupChanged", Type = "Event", LiteralName = "ACTIVE_TALENT_GROUP_CHANGED", SynchronousEvent = true, Payload = { { Name = "curr", Type = "number", Nilable = false }, { Name = "prev", Type = "number", Nilable = false }, }, }, { Name = "ConfirmPetUnlearn", Type = "Event", LiteralName = "CONFIRM_PET_UNLEARN", SynchronousEvent = true, Payload = { { Name = "cost", Type = "number", Nilable = false }, }, }, { Name = "ConfirmTalentWipe", Type = "Event", LiteralName = "CONFIRM_TALENT_WIPE", SynchronousEvent = true, Payload = { { Name = "cost", Type = "number", Nilable = false }, { Name = "respecType", Type = "number", Nilable = false }, }, }, { Name = "PetSpecializationChanged", Type = "Event", LiteralName = "PET_SPECIALIZATION_CHANGED", SynchronousEvent = true, }, { Name = "PlayerLearnPvpTalentFailed", Type = "Event", LiteralName = "PLAYER_LEARN_PVP_TALENT_FAILED", SynchronousEvent = true, }, { Name = "PlayerLearnTalentFailed", Type = "Event", LiteralName = "PLAYER_LEARN_TALENT_FAILED", SynchronousEvent = true, }, { Name = "PlayerPvpTalentUpdate", Type = "Event", LiteralName = "PLAYER_PVP_TALENT_UPDATE", SynchronousEvent = true, }, { Name = "PlayerTalentUpdate", Type = "Event", LiteralName = "PLAYER_TALENT_UPDATE", SynchronousEvent = true, }, { Name = "SpecInvoluntarilyChanged", Type = "Event", LiteralName = "SPEC_INVOLUNTARILY_CHANGED", SynchronousEvent = true, Payload = { { Name = "isPet", Type = "bool", Nilable = false }, }, }, { Name = "TalentsInvoluntarilyReset", Type = "Event", LiteralName = "TALENTS_INVOLUNTARILY_RESET", SynchronousEvent = true, Payload = { { Name = "isPetTalents", Type = "bool", Nilable = false }, }, }, }, Tables = { { Name = "PvpTalentInfo", Type = "Structure", Fields = { { Name = "talentID", Type = "number", Nilable = false }, { Name = "name", Type = "string", Nilable = false }, { Name = "icon", Type = "number", Nilable = false }, { Name = "selected", Type = "bool", Nilable = false }, { Name = "available", Type = "bool", Nilable = false }, { Name = "spellID", Type = "number", Nilable = false }, { Name = "unlocked", Type = "bool", Nilable = false }, { Name = "known", Type = "bool", Nilable = false }, { Name = "grantedByAura", Type = "bool", Nilable = false }, { Name = "dependenciesUnmet", Type = "bool", Nilable = false }, { Name = "dependenciesUnmetReason", Type = "string", Nilable = true }, }, }, { Name = "PvpTalentSlotInfo", Type = "Structure", Fields = { { Name = "enabled", Type = "bool", Nilable = false }, { Name = "level", Type = "number", Nilable = false }, { Name = "selectedTalentID", Type = "number", Nilable = true }, { Name = "availableTalentIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "SpecializationInfoOutput", Type = "Structure", Fields = { { Name = "specId", Type = "number", Nilable = false, Default = 0 }, { Name = "name", Type = "string", Nilable = true }, { Name = "description", Type = "string", Nilable = true }, { Name = "icon", Type = "fileID", Nilable = true }, { Name = "role", Type = "string", Nilable = true }, { Name = "primaryStat", Type = "luaIndex", Nilable = true }, { Name = "pointsSpent", Type = "number", Nilable = false, Default = 0 }, { Name = "background", Type = "string", Nilable = true }, { Name = "previewPointsSpent", Type = "number", Nilable = false, Default = 0 }, { Name = "isUnlocked", Type = "bool", Nilable = false, Default = true }, }, }, { Name = "SpecializationInfoQuery", Type = "Structure", Fields = { { Name = "specializationIndex", Type = "luaIndex", Nilable = false }, { Name = "isInspect", Type = "bool", Nilable = false, Default = false }, { Name = "isPet", Type = "bool", Nilable = false, Default = false }, { Name = "inspectTarget", Type = "string", Nilable = true }, { Name = "sex", Type = "number", Nilable = true }, { Name = "groupIndex", Type = "luaIndex", Nilable = true }, { Name = "classID", Type = "number", Nilable = true }, }, }, { Name = "TalentInfoQuery", Type = "Structure", Fields = { { Name = "groupIndex", Type = "luaIndex", Nilable = true }, { Name = "isInspect", Type = "bool", Nilable = false, Default = false }, { Name = "tier", Type = "luaIndex", Nilable = true }, { Name = "column", Type = "luaIndex", Nilable = true }, { Name = "target", Type = "UnitToken", Nilable = true }, { Name = "specializationIndex", Type = "luaIndex", Nilable = true }, { Name = "talentIndex", Type = "luaIndex", Nilable = true }, { Name = "isPet", Type = "bool", Nilable = false, Default = false }, }, }, { Name = "TalentInfoResult", Type = "Structure", Fields = { { Name = "talentID", Type = "number", Nilable = false, Default = 0 }, { Name = "name", Type = "string", Nilable = false }, { Name = "icon", Type = "fileID", Nilable = false }, { Name = "tier", Type = "luaIndex", Nilable = false }, { Name = "column", Type = "luaIndex", Nilable = false }, { Name = "selected", Type = "bool", Nilable = false, Default = false }, { Name = "available", Type = "bool", Nilable = false, Default = false }, { Name = "spellID", Type = "number", Nilable = false, Default = 0 }, { Name = "isPVPTalentUnlocked", Type = "bool", Nilable = false, Default = false }, { Name = "known", Type = "bool", Nilable = false, Default = false }, { Name = "grantedByAura", Type = "bool", Nilable = false, Default = false }, { Name = "rank", Type = "luaIndex", Nilable = false }, { Name = "maxRank", Type = "luaIndex", Nilable = false }, { Name = "meetsPrereq", Type = "bool", Nilable = false, Default = false }, { Name = "previewRank", Type = "luaIndex", Nilable = false }, { Name = "meetsPreviewPrereq", Type = "bool", Nilable = false, Default = false }, { Name = "isExceptional", Type = "bool", Nilable = false, Default = false }, { Name = "hasGoldBorder", Type = "bool", Nilable = false, Default = false }, }, }, }, Predicates = { }, }; APIDocumentation:AddDocumentationTable(SpecializationInfo);