local SharedTraits = { Name = "SharedTraits", Type = "System", Namespace = "C_Traits", Environment = "All", Functions = { { Name = "CanEditConfig", Type = "Function", SecretArguments = "AllowedWhenUntainted", Documentation = { "Returns whether the player can make changes to the specified talent config." }, Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "canEdit", Type = "bool", Nilable = false }, { Name = "errorMessage", Type = "cstring", Nilable = false, Documentation = { "If canEdit is false, this will be filled out with text explaining why the player can not make changes." } }, }, }, { Name = "CanPurchaseRank", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, { Name = "nodeEntryID", Type = "number", Nilable = false }, }, Returns = { { Name = "canPurchase", Type = "bool", Nilable = false }, }, }, { Name = "CanRefundRank", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, }, Returns = { { Name = "canRefund", Type = "bool", Nilable = false }, }, }, { Name = "CascadeRepurchaseRanks", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, { Name = "entryID", Type = "number", Nilable = true }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "ClearCascadeRepurchaseHistory", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, }, { Name = "CloseTraitSystemInteraction", Type = "Function", }, { Name = "CommitConfig", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "ConfigHasStagedChanges", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "hasChanges", Type = "bool", Nilable = false }, }, }, { Name = "GenerateImportString", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "importString", Type = "string", Nilable = false }, }, }, { Name = "GenerateInspectImportString", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "target", Type = "cstring", Nilable = false }, }, Returns = { { Name = "importString", Type = "string", Nilable = false }, }, }, { Name = "GetConditionInfo", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "condID", Type = "number", Nilable = false }, }, Returns = { { Name = "condInfo", Type = "TraitCondInfo", Nilable = false }, }, }, { Name = "GetConfigIDBySystemID", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "systemID", Type = "number", Nilable = false }, }, Returns = { { Name = "configID", Type = "number", Nilable = false }, }, }, { Name = "GetConfigIDByTreeID", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "treeID", Type = "number", Nilable = false }, }, Returns = { { Name = "configID", Type = "number", Nilable = false }, }, }, { Name = "GetConfigInfo", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "configInfo", Type = "TraitConfigInfo", Nilable = false }, }, }, { Name = "GetConfigVariationID", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "systemID", Type = "number", Nilable = false }, }, Returns = { { Name = "variationID", Type = "number", Nilable = false }, }, }, { Name = "GetConfigsByType", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configType", Type = "TraitConfigType", Nilable = false }, }, Returns = { { Name = "configIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "GetDefinitionInfo", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "definitionID", Type = "number", Nilable = false }, }, Returns = { { Name = "definitionInfo", Type = "TraitDefinitionInfo", Nilable = false }, }, }, { Name = "GetEntryInfo", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "entryID", Type = "number", Nilable = false }, }, Returns = { { Name = "entryInfo", Type = "TraitEntryInfo", Nilable = false }, }, }, { Name = "GetGroupCurrencyInfo", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "groupIDs", Type = "table", InnerType = "number", Nilable = false }, }, Returns = { { Name = "groupCurrencyInfos", Type = "table", InnerType = "GroupCurrencyInfo", Nilable = false }, }, }, { Name = "GetGroupDisplayInfoByTreeID", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "treeID", Type = "number", Nilable = false }, }, Returns = { { Name = "displayInfos", Type = "table", InnerType = "TraitGroupDisplayInfo", Nilable = false }, }, }, { Name = "GetIncreasedTraitData", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "nodeID", Type = "number", Nilable = false }, { Name = "entryID", Type = "number", Nilable = false }, }, Returns = { { Name = "itemName", Type = "table", InnerType = "IncreasedTraitData", Nilable = false }, }, }, { Name = "GetLoadoutSerializationVersion", Type = "Function", Returns = { { Name = "serializationVersion", Type = "number", Nilable = false }, }, }, { Name = "GetMaxAvailableTraitCurrency", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "traitCurrencyID", Type = "number", Nilable = false }, { Name = "limitBySourcedMax", Type = "bool", Nilable = false }, }, Returns = { { Name = "maxAvailable", Type = "number", Nilable = false }, }, }, { Name = "GetNodeCost", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, }, Returns = { { Name = "costs", Type = "table", InnerType = "TraitCurrencyCost", Nilable = false }, }, }, { Name = "GetNodeInfo", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, }, Returns = { { Name = "nodeInfo", Type = "TraitNodeInfo", Nilable = false }, }, }, { Name = "GetStagedChanges", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Documentation = { "Returns IDs of Trait Nodes with pending changes, grouped by the type of change; Returns nothing if there are no pending changes" }, Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "nodeIDsWithPurchases", Type = "table", InnerType = "number", Nilable = false }, { Name = "nodeIDsWithRefunds", Type = "table", InnerType = "number", Nilable = false }, { Name = "nodeIDsWithSelectionSwaps", Type = "table", InnerType = "number", Nilable = false, Documentation = { "Selection nodes that had a previously committed selected entry, and now have a different selected entry pending" } }, }, }, { Name = "GetStagedChangesCost", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "costs", Type = "table", InnerType = "TraitCurrencyCost", Nilable = false }, }, }, { Name = "GetSubTreeInfo", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "subTreeID", Type = "number", Nilable = false }, }, Returns = { { Name = "subTreeInfo", Type = "TraitSubTreeInfo", Nilable = false }, }, }, { Name = "GetSystemIDByTreeID", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "treeID", Type = "number", Nilable = false }, }, Returns = { { Name = "systemID", Type = "number", Nilable = false }, }, }, { Name = "GetTraitCurrencyForAchievement", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "traitCurrencyID", Type = "number", Nilable = false }, { Name = "achievementID", Type = "number", Nilable = false }, }, Returns = { { Name = "amount", Type = "number", Nilable = false }, }, }, { Name = "GetTraitCurrencyInfo", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "traitCurrencyID", Type = "number", Nilable = false }, }, Returns = { { Name = "flags", Type = "number", Nilable = false }, { Name = "type", Type = "number", Nilable = false }, { Name = "currencyTypesID", Type = "number", Nilable = true }, { Name = "icon", Type = "number", Nilable = true }, }, }, { Name = "GetTraitDescription", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "entryID", Type = "number", Nilable = false }, { Name = "rank", Type = "number", Nilable = false }, }, Returns = { { Name = "description", Type = "string", Nilable = false }, }, }, { Name = "GetTraitSystemFlags", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "flags", Type = "number", Nilable = false }, }, }, { Name = "GetTraitSystemWidgetSetID", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "uiWidgetSetID", Type = "number", Nilable = false }, }, }, { Name = "GetTreeCurrencyInfo", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "treeID", Type = "number", Nilable = false }, { Name = "excludeStagedChanges", Type = "bool", Nilable = false }, }, Returns = { { Name = "treeCurrencyInfo", Type = "table", InnerType = "TreeCurrencyInfo", Nilable = false }, }, }, { Name = "GetTreeHash", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "treeID", Type = "number", Nilable = false }, }, Returns = { { Name = "result", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "GetTreeInfo", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "treeID", Type = "number", Nilable = false }, }, Returns = { { Name = "treeInfo", Type = "TraitTreeInfo", Nilable = false }, }, }, { Name = "GetTreeNodes", Type = "Function", MayReturnNothing = true, SecretArguments = "AllowedWhenUntainted", Documentation = { "Returns a list of nodeIDs, sorted ascending, for a given treeID. Contains nodes for all class specializations." }, Arguments = { { Name = "treeID", Type = "number", Nilable = false }, }, Returns = { { Name = "nodeIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "HasValidInspectData", Type = "Function", Returns = { { Name = "hasValidInspectData", Type = "bool", Nilable = false }, }, }, { Name = "IsReadyForCommit", Type = "Function", Returns = { { Name = "isReadyForCommit", Type = "bool", Nilable = false }, }, }, { Name = "PurchaseAllRanks", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, { Name = "ignoreCost", Type = "bool", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "PurchaseRank", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "RefundAllRanks", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "RefundRank", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, { Name = "clearEdges", Type = "bool", Nilable = true }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "ResetTree", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "treeID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "ResetTreeByCurrency", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "treeID", Type = "number", Nilable = false }, { Name = "traitCurrencyID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "RollbackConfig", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "SetSelection", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, { Name = "nodeEntryID", Type = "number", Nilable = true }, { Name = "clearEdges", Type = "bool", Nilable = true }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "StageConfig", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "TalentTestUnlearnSpells", Type = "Function", }, { Name = "TryPurchaseAllRanks", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "TryPurchaseToNode", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, { Name = "TryRefundToNode", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "configID", Type = "number", Nilable = false }, { Name = "nodeID", Type = "number", Nilable = false }, { Name = "entryID", Type = "number", Nilable = false }, }, Returns = { { Name = "success", Type = "bool", Nilable = false }, }, }, }, Events = { { Name = "ConfigCommitFailed", Type = "Event", LiteralName = "CONFIG_COMMIT_FAILED", SynchronousEvent = true, Payload = { { Name = "configID", Type = "number", Nilable = false }, }, }, { Name = "TraitCondInfoChanged", Type = "Event", LiteralName = "TRAIT_COND_INFO_CHANGED", SynchronousEvent = true, Payload = { { Name = "condID", Type = "number", Nilable = false }, }, }, { Name = "TraitConfigCreated", Type = "Event", LiteralName = "TRAIT_CONFIG_CREATED", SynchronousEvent = true, Payload = { { Name = "configInfo", Type = "TraitConfigInfo", Nilable = false }, }, }, { Name = "TraitConfigDeleted", Type = "Event", LiteralName = "TRAIT_CONFIG_DELETED", SynchronousEvent = true, Payload = { { Name = "configID", Type = "number", Nilable = false }, }, }, { Name = "TraitConfigListUpdated", Type = "Event", LiteralName = "TRAIT_CONFIG_LIST_UPDATED", SynchronousEvent = true, }, { Name = "TraitConfigUpdated", Type = "Event", LiteralName = "TRAIT_CONFIG_UPDATED", SynchronousEvent = true, Payload = { { Name = "configID", Type = "number", Nilable = false }, }, }, { Name = "TraitNodeChanged", Type = "Event", LiteralName = "TRAIT_NODE_CHANGED", SynchronousEvent = true, Payload = { { Name = "nodeID", Type = "number", Nilable = false }, }, }, { Name = "TraitNodeChangedPartial", Type = "Event", LiteralName = "TRAIT_NODE_CHANGED_PARTIAL", SynchronousEvent = true, Payload = { { Name = "ID", Type = "number", Nilable = false }, { Name = "info", Type = "TraitNodeInfoPartial", Nilable = false }, }, }, { Name = "TraitNodeEntryUpdated", Type = "Event", LiteralName = "TRAIT_NODE_ENTRY_UPDATED", SynchronousEvent = true, Payload = { { Name = "nodeEntryID", Type = "number", Nilable = false }, }, }, { Name = "TraitSubTreeChanged", Type = "Event", LiteralName = "TRAIT_SUB_TREE_CHANGED", SynchronousEvent = true, Payload = { { Name = "subTreeID", Type = "number", Nilable = false }, }, }, { Name = "TraitSystemInteractionStarted", Type = "Event", LiteralName = "TRAIT_SYSTEM_INTERACTION_STARTED", SynchronousEvent = true, Payload = { { Name = "treeID", Type = "number", Nilable = false }, }, }, { Name = "TraitSystemNpcClosed", Type = "Event", LiteralName = "TRAIT_SYSTEM_NPC_CLOSED", SynchronousEvent = true, }, { Name = "TraitTreeChanged", Type = "Event", LiteralName = "TRAIT_TREE_CHANGED", SynchronousEvent = true, Payload = { { Name = "treeID", Type = "number", Nilable = false }, }, }, { Name = "TraitTreeCurrencyInfoUpdated", Type = "Event", LiteralName = "TRAIT_TREE_CURRENCY_INFO_UPDATED", SynchronousEvent = true, Payload = { { Name = "treeID", Type = "number", Nilable = false }, }, }, { Name = "TryPurchaseToNodePartialSuccess", Type = "Event", LiteralName = "TRY_PURCHASE_TO_NODE_PARTIAL_SUCCESS", SynchronousEvent = true, Payload = { { Name = "nodeFinishedOn", Type = "number", Nilable = false }, }, }, }, Tables = { { Name = "GroupCurrencyInfo", Type = "Structure", Fields = { { Name = "traitNodeGroupID", Type = "number", Nilable = false }, { Name = "currencyInfos", Type = "table", InnerType = "TreeCurrencyInfo", Nilable = false }, }, }, { Name = "IncreasedTraitData", Type = "Structure", Fields = { { Name = "itemNameIncreasing", Type = "string", Nilable = false }, { Name = "itemQualityIncreasing", Type = "ItemQuality", Nilable = false }, { Name = "numPointsIncreased", Type = "number", Nilable = false }, }, }, { Name = "TraitCondInfo", Type = "Structure", Fields = { { Name = "condID", Type = "number", Nilable = false }, { Name = "ranksGranted", Type = "number", Nilable = true }, { Name = "isAlwaysMet", Type = "bool", Nilable = false }, { Name = "isMet", Type = "bool", Nilable = false, Documentation = { "True if the source for the condition has been fulfilled." } }, { Name = "isGate", Type = "bool", Nilable = false }, { Name = "isSufficient", Type = "bool", Nilable = false, Documentation = { "True if meeting the requirements for the condition means any nodes using this condition are considered fulfilled if the condition is met." } }, { Name = "type", Type = "number", Nilable = false, Documentation = { "The value from the TraitConditionType enum the condition uses." } }, { Name = "questID", Type = "number", Nilable = true }, { Name = "achievementID", Type = "number", Nilable = true }, { Name = "specSetID", Type = "number", Nilable = true }, { Name = "playerLevel", Type = "number", Nilable = true }, { Name = "traitCurrencyID", Type = "number", Nilable = true }, { Name = "spentAmountRequired", Type = "number", Nilable = true }, { Name = "tooltipFormat", Type = "string", Nilable = true }, { Name = "traitCondAccountElementID", Type = "number", Nilable = true }, }, }, { Name = "TraitConfigInfo", Type = "Structure", Fields = { { Name = "ID", Type = "number", Nilable = false }, { Name = "type", Type = "TraitConfigType", Nilable = false }, { Name = "name", Type = "string", Nilable = false }, { Name = "treeIDs", Type = "table", InnerType = "number", Nilable = false }, { Name = "usesSharedActionBars", Type = "bool", Nilable = false }, }, }, { Name = "TraitCurrencyCost", Type = "Structure", Fields = { { Name = "ID", Type = "number", Nilable = false }, { Name = "amount", Type = "number", Nilable = false }, }, }, { Name = "TraitDefinitionInfo", Type = "Structure", Fields = { { Name = "spellID", Type = "number", Nilable = true }, { Name = "overrideName", Type = "string", Nilable = true }, { Name = "overrideSubtext", Type = "string", Nilable = true }, { Name = "overrideDescription", Type = "string", Nilable = true }, { Name = "overrideIcon", Type = "number", Nilable = true }, { Name = "overriddenSpellID", Type = "number", Nilable = true }, { Name = "subType", Type = "TraitDefinitionSubType", Nilable = true }, }, }, { Name = "TraitEntryInfo", Type = "Structure", Fields = { { Name = "definitionID", Type = "number", Nilable = true, Documentation = { "Nil on SubTreeSelection Node Entries" } }, { Name = "subTreeID", Type = "number", Nilable = true, Documentation = { "Populated only on SubTreeSelection Node Entries; This is the SubTree that is activated if this Entry is chosen" } }, { Name = "type", Type = "TraitNodeEntryType", Nilable = false }, { Name = "maxRanks", Type = "number", Nilable = false }, { Name = "isAvailable", Type = "bool", Nilable = false }, { Name = "isDisplayError", Type = "bool", Nilable = false, Documentation = { "True if this entry fails the TRAIT_CONDITION_TYPE_DISPLAY_ERROR condition check. Used to communicate a problem with the node to the player (e.g. A prerequisite node has not been purchased.) but will not prevent the player from spending points on the node." } }, { Name = "conditionIDs", Type = "table", InnerType = "number", Nilable = false }, }, }, { Name = "TraitEntryRankInfo", Type = "Structure", Fields = { { Name = "entryID", Type = "number", Nilable = false }, { Name = "rank", Type = "number", Nilable = false }, }, }, { Name = "TraitGateInfo", Type = "Structure", Fields = { { Name = "topLeftNodeID", Type = "number", Nilable = false }, { Name = "conditionID", Type = "number", Nilable = false }, }, }, { Name = "TraitGroupDisplayInfo", Type = "Structure", Fields = { { Name = "groupID", Type = "number", Nilable = false }, { Name = "treeID", Type = "number", Nilable = false }, { Name = "skillLineID", Type = "number", Nilable = false }, { Name = "orderIndex", Type = "number", Nilable = false }, { Name = "displayName", Type = "cstring", Nilable = false }, { Name = "icon", Type = "number", Nilable = false }, }, }, { Name = "TraitNodeInfo", Type = "Structure", Fields = { { Name = "ID", Type = "number", Nilable = false }, { Name = "posX", Type = "number", Nilable = false }, { Name = "posY", Type = "number", Nilable = false }, { Name = "flags", Type = "number", Nilable = false }, { Name = "entryIDs", Type = "table", InnerType = "number", Nilable = false }, { Name = "entryIDsWithCommittedRanks", Type = "table", InnerType = "number", Nilable = false }, { Name = "canPurchaseRank", Type = "bool", Nilable = false }, { Name = "canRefundRank", Type = "bool", Nilable = false }, { Name = "isAvailable", Type = "bool", Nilable = false }, { Name = "isVisible", Type = "bool", Nilable = false }, { Name = "isDisplayError", Type = "bool", Nilable = false, Documentation = { "True if this node fails the TRAIT_CONDITION_TYPE_DISPLAY_ERROR condition check. Used to communicate a problem with the node to the player (e.g. A prerequisite node has not been purchased.) but will not prevent the player from spending points on the node." } }, { Name = "ranksPurchased", Type = "number", Nilable = false }, { Name = "ranksIncreased", Type = "number", Nilable = false }, { Name = "entryIDToRanksIncreased", Type = "LuaValueVariant", Nilable = false, Documentation = { "A map of the entry IDs on this node to the number of ranks increased. This covers all entries on the node, which is important in the case of selection nodes where we have more than one option that could be increased." } }, { Name = "activeRank", Type = "number", Nilable = false }, { Name = "currentRank", Type = "number", Nilable = false }, { Name = "activeEntry", Type = "TraitEntryRankInfo", Nilable = true }, { Name = "nextEntry", Type = "TraitEntryRankInfo", Nilable = true }, { Name = "maxRanks", Type = "number", Nilable = false }, { Name = "totalMaxRanks", Type = "number", Nilable = false }, { Name = "type", Type = "TraitNodeType", Nilable = false }, { Name = "visibleEdges", Type = "table", InnerType = "TraitOutEdgeInfo", Nilable = false }, { Name = "meetsEdgeRequirements", Type = "bool", Nilable = false }, { Name = "groupIDs", Type = "table", InnerType = "number", Nilable = false }, { Name = "conditionIDs", Type = "table", InnerType = "number", Nilable = false }, { Name = "isCascadeRepurchasable", Type = "bool", Nilable = false }, { Name = "cascadeRepurchaseEntryID", Type = "number", Nilable = true }, { Name = "subTreeID", Type = "number", Nilable = true, Documentation = { "The SubTree this Node belongs to; Nil if it is not part of a SubTree" } }, { Name = "subTreeActive", Type = "bool", Nilable = true, Documentation = { "True if this node has a SubTreeID, and the SubTree is chosen or staged; May be nil if not part of a SubTree at all" } }, }, }, { Name = "TraitNodeInfoPartial", Type = "Structure", Fields = { { Name = "canPurchaseRank", Type = "bool", Nilable = true }, { Name = "canRefundRank", Type = "bool", Nilable = true }, { Name = "isAvailable", Type = "bool", Nilable = true }, { Name = "isVisible", Type = "bool", Nilable = true }, { Name = "ranksPurchased", Type = "number", Nilable = true }, { Name = "activeRank", Type = "number", Nilable = true }, { Name = "currentRank", Type = "number", Nilable = true }, { Name = "meetsEdgeRequirements", Type = "bool", Nilable = true }, { Name = "isCascadeRepurchasable", Type = "bool", Nilable = true }, { Name = "activeEntryID", Type = "number", Nilable = true }, { Name = "subTreeActive", Type = "bool", Nilable = true }, }, }, { Name = "TraitOutEdgeInfo", Type = "Structure", Fields = { { Name = "targetNode", Type = "number", Nilable = false }, { Name = "type", Type = "number", Nilable = false }, { Name = "visualStyle", Type = "number", Nilable = false }, { Name = "isActive", Type = "bool", Nilable = false }, }, }, { Name = "TraitSubTreeInfo", Type = "Structure", Fields = { { Name = "ID", Type = "number", Nilable = false }, { Name = "name", Type = "string", Nilable = true }, { Name = "description", Type = "string", Nilable = true }, { Name = "iconElementID", Type = "textureAtlas", Nilable = true }, { Name = "traitCurrencyID", Type = "number", Nilable = true }, { Name = "isActive", Type = "bool", Nilable = false }, { Name = "subTreeSelectionNodeIDs", Type = "table", InnerType = "number", Nilable = false, Documentation = { "SubTreeSelectionNodes whose choice entries include this SubTree" } }, { Name = "posX", Type = "number", Nilable = false, Documentation = { "Center X node position calculated from the posX values of all of this subTree's nodes" } }, { Name = "posY", Type = "number", Nilable = false, Documentation = { "Topmost Y node position taken from the posY values of all of this subTree's nodes" } }, }, }, { Name = "TraitTreeInfo", Type = "Structure", Fields = { { Name = "ID", Type = "number", Nilable = false }, { Name = "gates", Type = "table", InnerType = "TraitGateInfo", Nilable = false }, { Name = "hideSingleRankNumbers", Type = "bool", Nilable = false }, { Name = "cannotRefund", Type = "bool", Nilable = false }, { Name = "rootNodeID", Type = "number", Nilable = true }, { Name = "uiTextureKit", Type = "textureKit", Nilable = false }, { Name = "titleText", Type = "string", Nilable = true }, }, }, { Name = "TreeCurrencyInfo", Type = "Structure", Fields = { { Name = "traitCurrencyID", Type = "number", Nilable = false }, { Name = "quantity", Type = "number", Nilable = false }, { Name = "maxQuantity", Type = "number", Nilable = true }, { Name = "spent", Type = "number", Nilable = false }, { Name = "spentInTree", Type = "number", Nilable = true }, }, }, }, Predicates = { }, }; APIDocumentation:AddDocumentationTable(SharedTraits);