Talent and ability descriptions for heroes in Heroes of the Storm in handy JSON format
Talent? Hah. That seems generous.
--Raven Lord
Example:
{
"id": "68",
"shortName": "malthael",
"attributeId": "MALT",
"name": "Malthael",
"icon": "malthael.png",
"role": "Assassin",
"type": "Melee",
"releaseDate": "2017-06-13",
"abilities": {
"Malthael": [
{
"name": "Soul Rip",
"description": "Extract the souls of nearby enemies afflicted by Reaper's Mark, dealing 100 (+4% per level) damage and healing Malthael for 25 (+4% per level) per target hit. Heroic targets heal Malthael for an additional 4% of the Hero's maximum Health.",
"hotkey": "Q",
"abilityId": "Malthael|Q1",
"cooldown": 2,
"manaCost": 25,
"icon": "storm_ui_icon_malthael_soulrip.png",
"type": "basic"
},
...
{
"name": "Tormented Souls",
"description": "Unleash a torrent of souls, continually applying Reaper's Mark to nearby enemies for 4 seconds.",
"hotkey": "R",
"abilityId": "Malthael|R1",
"cooldown": 80,
"manaCost": 100,
"icon": "storm_ui_icon_malthael_tormentedsoul.png",
"type": "heroic"
},
...
{
"name": "Reaper's Mark",
"description": "Basic Attacks cleave in an area in front of Malthael and afflict non-Structure targets with Reaper's Mark for 4 seconds. Marked enemies are revealed and take damage equal to 1.75% of their maximum Health every 1 second.",
"trait": true,
"abilityId": "Malthael|D1",
"icon": "storm_ui_icon_malthael_reapersmark.png",
"type": "trait"
}
]
},
"talents": {
"1": [
{
"tooltipId": "MalthaelDeathsReach",
"talentTreeId": "MalthaelDeathsReach",
"name": "Death's Reach",
"description": "Increase Wraith Strike's range by 35%.",
"icon": "storm_ui_icon_malthael_wraithstrike.png",
"type": "W",
"sort": 1,
"abilityId": "Malthael|W1",
"abilityLinks": [
"Malthael|W1"
]
},
{
"tooltipId": "MalthaelOnAPaleHorse",
"talentTreeId": "MalthaelOnAPaleHorse",
"name": "On a Pale Horse",
"description": "Gain an additional 20% Movement Speed while mounted.",
"icon": "storm_ui_icon_malthael_onpalehorse.png",
"type": "Passive",
"sort": 2,
"abilityId": "_stormhero|Z1",
"abilityLinks": [
"_stormhero|Z1"
]
},
{
"tooltipId": "MalthaelFearTheReaper",
"talentTreeId": "MalthaelFearTheReaper",
"name": "Fear the Reaper",
"description": "Activate to increase Movement Speed by 25% and pass through other units for 4 seconds.",
"icon": "storm_ui_icon_malthael_fearthereaper.png",
"type": "Active",
"sort": 3,
"cooldown": 25,
"abilityId": "Malthael|Active"
}
],
"4": [
...
]
...
}
shortName
is the hero's name with periods, dashes, apostrophes, spaces, and capitalization removed; it is currently used as the name of a hero's JSON file and imagemanaCost
is a string due to several Heroes (Azmodan, Arthas, etc.) having channeled abilities with per-second mana costsabilityId
can be used to link a talent to its related ability.
abilityId
of HeroName|Active
. Ex: Fear the Reaper (seen above), Bolt of the StormabilityId
of HeroName|Passive
. Ex: On a Pale Horse (above), Burning Rage, ExecutionertalentTreeId
is the name of the talent as used in replay filessort
indicates the order of talents on that level/tiericon
is the image name for the talent from game filesSee the Contributing docs for more information on our process.
npm install --save git+https://[email protected]/heroespatchnotes/heroes-talents.git
heroes-talents includes basic support for loading hero data into your project. See dist/test.js for an example, or dist/index.js for the source.
const HeroesTalents = require('heroes-talents')
async function test() {
try {
const heroes = await HeroesTalents.loadHeroJSONFiles()
const favoriteHero = heroes.alarak
console.log(`My favorite hero is ${favoriteHero.name}. He is an ${favoriteHero.role}.`)
} catch(err) {
console.log(err)
}
}