Hero Talents & Abilities
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": [
...
]
...
}
Notes on key/value pairs
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.- Talents that create a new ability will have
abilityId
ofHeroName|Active
. Ex: Fear the Reaper (seen above), Bolt of the Storm - Talents granting changes to Basic Attacks or other passive effects will have
abilityId
ofHeroName|Passive
. Ex: On a Pale Horse (above), Burning Rage, Executioner
- Talents that create a new ability will have
talentTreeId
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 files
Game data
- heroes/ and images/ contain curated versions of the game data and icons, prepared by heroes-convert
- Unprocessed versions of the parsed game data is hosted at heroes-data
- Uncompressed versions of the icons are hosted at heroes-images
- Game data extractions for both of the repos above are acquired using koliva8245’s HeroesDataParser
See the Contributing docs for more information on our process.
Projects using heroes-talents
- HeroesPatchNotes.com
- HeroesInfoBot on reddit’s /r/heroesofthestorm
- HotsApi
- Hots-Info-Bot discord chatbot
Want to use this in your Node.js project?
npm install --save git+https://git@github.com/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)
}
}
Heroes
Abathur
Alarak
Alexstrasza
Ana
Anduin
Anub’arak
Artanis
Arthas
Auriel
Azmodan
Blaze
Brightwing
The Butcher
Cassia
Chen
Cho
Chromie
Deathwing
Deckard
Dehaka
Diablo
D.Va
E.T.C.
Falstad
Fenix
Gall
Garrosh
Gazlowe
Genji
Greymane
Gul’dan
Hanzo
Hogger
Illidan
Imperius
Jaina
Johanna
Junkrat
Kael’thas
Kel’Thuzad
Kerrigan
Kharazim
Leoric
Li Li
Li-Ming
The Lost Vikings
Lt. Morales
Lúcio
Lunara
Maiev
Malfurion
Mal’Ganis
Malthael
Medivh
Mei
Mephisto
Muradin
Murky
Nazeebo
Nova
Orphea
Probius
Qhira
Ragnaros
Raynor
Rehgar
Rexxar
Samuro
Sgt. Hammer
Sonya
Stitches
Stukov
Sylvanas
Tassadar
Thrall
Tracer
Tychus
Tyrael
Tyrande
Uther
Valeera
Valla
Varian
Whitemane
Xul
Yrel
Zagara
Zarya
Zeratul
Zul’jin