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