bungie-net-core
Version:
An easy way to interact with the Bungie.net API
148 lines (147 loc) • 7.86 kB
TypeScript
/**
* Bungie.Net API
* These endpoints constitute the functionality exposed by Bungie.net, both for more traditional website functionality and for connectivity to Bungie video games and their related functionality.
*
* Contact: support@bungie.com
*
* NOTE: This class is auto generated by the bungie-net-core code generator program
* Repository: {@link https://github.com/owens1127/bungie-net-core}
* Do not edit these files manually.
*/
import { DestinyTalentNodeDefinition } from './DestinyTalentNodeDefinition';
import { DestinyTalentNodeExclusiveSetDefinition } from './DestinyTalentNodeExclusiveSetDefinition';
import { DestinyTalentExclusiveGroup } from './DestinyTalentExclusiveGroup';
import { DestinyTalentNodeCategory } from './DestinyTalentNodeCategory';
/**
* The time has unfortunately come to talk about Talent Grids.
*
* Talent Grids are the most complex and unintuitive part of the Destiny Definition
* data. Grab a cup of coffee before we begin, I can wait.
*
* Talent Grids were the primary way that items could be customized in Destiny 1.
* In Destiny 2, for now, talent grids have become exclusively used by Subclass/
* Build items: but the system is still in place for it to be used by items should
* the direction change back toward talent grids.
*
* Talent Grids have Nodes: the visual circles on the talent grid detail screen
* that have icons and can be activated if you meet certain requirements and pay
* costs. The actual visual data and effects, however, are driven by the "Steps" on
* Talent Nodes. Any given node will have 1:M of these steps, and the specific step
* that will be considered the "current" step (and thus the dictator of all
* benefits, visual state, and activation requirements on the Node) will almost
* always not be determined until an instance of the item is created. This is how,
* in Destiny 1, items were able to have such a wide variety of what users saw as "
* Perks": they were actually Talent Grids with nodes that had a wide variety of
* Steps, randomly chosen at the time of item creation.
*
* Now that Talent Grids are used exclusively by subclasses and builds, all of the
* properties within still apply: but there are additional visual elements on the
* Subclass/Build screens that are superimposed on top of the talent nodes.
* Unfortunately, BNet doesn't have this data: if you want to build a subclass
* screen, you will have to provide your own "decorative" assets, such as the
* visual connectors between nodes and the fancy colored-fire-bathed character
* standing behind the nodes.
*
* DestinyInventoryItem.talentGrid.talentGridHash defines an item's linked Talent
* Grid, which brings you to this definition that contains enough satic data about
* talent grids to make your head spin. These *must* be combined with instanced
* data - found when live data returns DestinyItemTalentGridComponent - in order to
* derive meaning. The instanced data will reference nodes and steps within these
* definitions, which you will then have to look up in the definition and combine
* with the instanced data to give the user the visual representation of their item'
* s talent grid.
* @see {@link https://bungie-net.github.io/#/components/schemas/Destiny.Definitions.DestinyTalentGridDefinition}
*/
export interface DestinyTalentGridDefinition {
/**
* The maximum possible level of the Talent Grid: at this level, any nodes are
* allowed to be activated.
*/
readonly maxGridLevel: number;
/**
* The meaning of this has been lost in the sands of time: it still exists as a
* property, but appears to be unused in the modern UI of talent grids. It used to
* imply that each visual "column" of talent nodes required identical progression
* levels in order to be activated. Returning this value in case it is still useful
* to someone? Perhaps it's just a bit of interesting history.
*/
readonly gridLevelPerColumn: number;
/**
* The hash identifier of the Progression (DestinyProgressionDefinition) that
* drives whether and when Talent Nodes can be activated on the Grid. Items will
* have instances of this Progression, and will gain experience that will
* eventually cause the grid to increase in level. As the grid's level increases,
* it will cross the threshold where nodes can be activated. See
* DestinyTalentGridStepDefinition's activation requirements for more information.
* Mapped to DestinyProgressionDefinition in the manifest.
*/
readonly progressionHash: number;
/**
* The list of Talent Nodes on the Grid (recall that Nodes themselves are really
* just locations in the UI to show whatever their current Step is. You will only
* know the current step for a node by retrieving instanced data through platform
* calls to the API that return DestinyItemTalentGridComponent).
*/
readonly nodes: DestinyTalentNodeDefinition[];
/**
* Talent Nodes can exist in "exclusive sets": these are sets of nodes in which
* only a single node in the set can be activated at any given time. Activating a
* node in this set will automatically deactivate the other nodes in the set (
* referred to as a "Swap").
*
* If a node in the exclusive set has already been activated, the game will not
* charge you materials to activate another node in the set, even if you have never
* activated it before, because you already paid the cost to activate one node in
* the set.
*
* Not to be confused with Exclusive Groups. (how the heck do we NOT get confused
* by that? Jeez) See the groups property for information about that only-
* tangentially-related concept.
*/
readonly exclusiveSets: DestinyTalentNodeExclusiveSetDefinition[];
/**
* This is a quick reference to the indexes of nodes that are not part of exclusive
* sets. Handy for knowing which talent nodes can only be activated directly,
* rather than via swapping.
*/
readonly independentNodeIndexes: number[];
/**
* Talent Nodes can have "Exclusive Groups". These are not to be confused with
* Exclusive Sets (see exclusiveSets property).
*
* Look at the definition of DestinyTalentExclusiveGroup for more information and
* how they work. These groups are keyed by the "groupHash" from
* DestinyTalentExclusiveGroup.
*/
readonly groups: {
[key: number]: DestinyTalentExclusiveGroup;
};
/**
* BNet wants to show talent nodes grouped by similar purpose with localized titles.
* This is the ordered list of those categories: if you want to show nodes by
* category, you can iterate over this list, render the displayProperties for the
* category as the title, and then iterate over the talent nodes referenced by the
* category to show the related nodes.
*
* Note that this is different from Exclusive Groups or Sets, because these
* categories also incorporate "Independent" nodes that belong to neither sets nor
* groups. These are purely for visual grouping of nodes rather than functional
* grouping.
*/
readonly nodeCategories: DestinyTalentNodeCategory[];
/**
* The unique identifier for this entity. Guaranteed to be unique for the type of
* entity, but not globally.
*
* When entities refer to each other in Destiny content, it is this hash that they
* are referring to.
*/
readonly hash: number;
/** The index of the entity as it was found in the investment tables. */
readonly index: number;
/**
* If this is true, then there is an entity with this identifier/type combination,
* but BNet is not yet allowed to show it. Sorry!
*/
readonly redacted: boolean;
}