Hey, I made a little script which modifies skill names on grimtools site by providing mastery name.
Script is running client side which means you can’t use build in filter to search out items by mastery names which are added by script. But after database is loaded you can just use browser search engine (ctrl + f) to find e.g. all helms which mention berserker mastery
Installation:
- Install extension Tampermonkey. Remember to allow running user scripts on websites.
- Add new user script with following content:
Summary
// ==UserScript==
// @name GrimTools - mastery names
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Adds mastery names next to skills
// @match https://www.grimtools.com/*
// @grant none
// @run-at document-start
// ==/UserScript==
(function () {
'use strict';
console.log(
'%c SCRIPT ACTIVE',
'color: green; font-weight: bold; font-size: 16px;'
);
const replacements = {
"Avalanche":"Avalanche (Berserker 20)",
"Bloodfangs":"Bloodfangs (Berserker 5)",
"Hailstorm":"Hailstorm (Berserker 40)",
"Winds of Asterkarn":"Winds of Asterkarn (Berserker 25)",
"Recklessness":"Recklessness (Berserker 25)",
"Voracity":"Voracity (Berserker 10)",
"Werewolf":"Werewolf (Berserker 1)",
"Feral Claws":"Feral Claws (Berserker 1)",
"Rip and Tear":"Rip and Tear (Berserker 1)",
"Everwinter":"Everwinter (Berserker 32)",
"Glacial Talons":"Glacial Talons (Berserker 20)",
"Wereraven":"Wereraven (Berserker 10)",
"Ice Talons":"Ice Talons (Berserker 10)",
"Cold Snap":"Cold Snap (Berserker 10)",
"Impulse":"Impulse (Berserker 20)",
"Rallying Cry":"Rallying Cry (Berserker 10)",
"Form of the Beast":"Form of the Beast (Berserker 50)",
"Untamed Rage":"Untamed Rage (Berserker 15)",
"Battle Surge":"Battle Surge (Berserker 5)",
"Implements of War":"Implements of War (Berserker 1)",
"Endless Rage":"Endless Rage (Berserker 32)",
"Open Wounds":"Open Wounds (Berserker 15)",
"Onslaught":"Onslaught (Berserker 1)",
"Fault Line":"Fault Line (Berserker 40)",
"Leap":"Leap (Berserker 25)",
"Heart of Asterkarn":"Heart of Asterkarn (Berserker 50)",
"Bonechilling Cry":"Bonechilling Cry (Berserker 32)",
"Bloodborne":"Bloodborne (Berserker 50)",
"Icebound":"Icebound (Berserker 40)",
"Bloodfrenzy":"Bloodfrenzy (Berserker 20)",
"Amatok's Pact":"Amatok's Pact (Berserker 5)",
"Shattering Smash":"Shattering Smash (Oathkeeper 20)",
"Smite":"Smite (Oathkeeper 5)",
"Tectonic Shift":"Tectonic Shift (Oathkeeper 32)",
"Volcanic Stride":"Volcanic Stride (Oathkeeper 20)",
"Vire's Might":"Vire's Might (Oathkeeper 10)",
"Scion of Dreeg":"Scion of Dreeg (Oathkeeper 40)",
"Summon Guardian of Empyrion":"Summon Guardian of Empyrion (Oathkeeper 32)",
"Retribution":"Retribution (Oathkeeper 32)",
"Consecration":"Consecration (Oathkeeper 15)",
"Righteous Fervor":"Righteous Fervor (Oathkeeper 1)",
"Rebuke":"Rebuke (Oathkeeper 25)",
"Haven":"Haven (Oathkeeper 15)",
"Presence of Virtue":"Presence of Virtue (Oathkeeper 5)",
"Celestial Presence":"Celestial Presence (Oathkeeper 50)",
"Path of the Three":"Path of the Three (Oathkeeper 50)",
"Resilience":"Resilience (Oathkeeper 10)",
"Safeguard":"Safeguard (Oathkeeper 1)",
"Heart of Wrath":"Heart of Wrath (Oathkeeper 40)",
"Crushing Verdict":"Crushing Verdict (Oathkeeper 25)",
"Judgment":"Judgment (Oathkeeper 15)",
"Soulfire":"Soulfire (Oathkeeper 40)",
"Eye of Reckoning":"Eye of Reckoning (Oathkeeper 25)",
"Divine Mandate":"Divine Mandate (Oathkeeper 50)",
"Clarity of Purpose":"Clarity of Purpose (Oathkeeper 32)",
"Ascension":"Ascension (Oathkeeper 15)",
"Reprisal":"Reprisal (Oathkeeper 20)",
"Avenging Shield":"Avenging Shield (Oathkeeper 5)",
"Aegis of Menhir":"Aegis of Menhir (Oathkeeper 1)",
"Necrotic Edge":"Necrotic Edge (Necromancer 15)",
"Reaping Strike":"Reaping Strike (Necromancer 1)",
"Undead Legion":"Undead Legion (Necromancer 10)",
"Raise Skeletons":"Raise Skeletons (Necromancer 1)",
"Unstable Anomaly":"Unstable Anomaly (Necromancer 20)",
"Summon Blight Fiend":"Summon Blight Fiend (Necromancer 15)",
"Spectral Wrath":"Spectral Wrath (Necromancer 15)",
"Spectral Binding":"Spectral Binding (Necromancer 5)",
"Mark of Torment":"Mark of Torment (Necromancer 32)",
"Blood Boil":"Blood Boil (Necromancer 40)",
"Siphon Souls":"Siphon Souls (Necromancer 25)",
"Soul Harvest":"Soul Harvest (Necromancer 32)",
"Dread":"Dread (Necromancer 20)",
"Bone Harvest":"Bone Harvest (Necromancer 5)",
"Reap Spirit":"Reap Spirit (Necromancer 50)",
"Harbinger of Souls":"Harbinger of Souls (Necromancer 50)",
"Foul Eruption":"Foul Eruption (Necromancer 40)",
"Decay":"Decay (Necromancer 25)",
"Ravenous Earth":"Ravenous Earth (Necromancer 15)",
"Will of the Crypt":"Will of the Crypt (Necromancer 20)",
"Rotting Fumes":"Rotting Fumes (Necromancer 25)",
"Blight Burst":"Blight Burst (Necromancer 40)",
"Master of Death":"Master of Death (Necromancer 50)",
"Decomposition":"Decomposition (Necromancer 20)",
"Hungering Reach":"Hungering Reach (Necromancer 10)",
"Drain Essence":"Drain Essence (Necromancer 1)",
"Ill Omen":"Ill Omen (Necromancer 10)",
"Call of the Grave":"Call of the Grave (Necromancer 25)",
"Storm Spread":"Storm Spread (Inquisitor 40)",
"Chilling Rounds":"Chilling Rounds (Inquisitor 20)",
"Bursting Round":"Bursting Round (Inquisitor 5)",
"Death Sentence":"Death Sentence (Inquisitor 25)",
"Word of Agony":"Word of Agony (Inquisitor 10)",
"Word of Pain":"Word of Pain (Inquisitor 1)",
"Horn of Gandarr":"Horn of Gandarr (Inquisitor 40)",
"Endless Flame":"Endless Flame (Inquisitor 50)",
"Infernal Purge":"Infernal Purge (Inquisitor 32)",
"Intensify":"Intensify (Inquisitor 20)",
"Flames of Ignaffar":"Flames of Ignaffar (Inquisitor 10)",
"Artifact Handling":"Artifact Handling (Inquisitor 40)",
"Chillsurge":"Chillsurge (Inquisitor 32)",
"Biting Cold":"Biting Cold (Inquisitor 15)",
"Ignition":"Ignition (Inquisitor 25)",
"Runic Seal":"Runic Seal (Inquisitor 32)",
"Arcane Empowerment":"Arcane Empowerment (Inquisitor 40)",
"Deadly Aim":"Deadly Aim (Inquisitor 10)",
"Ranged Expertise":"Ranged Expertise (Inquisitor 1)",
"Lightning Tether":"Lightning Tether (Inquisitor 15)",
"Storm Box of Elgoloth":"Storm Box of Elgoloth (Inquisitor 1)",
"Rune of Hagarrad":"Rune of Hagarrad (Inquisitor 5)",
"Steel Resolve":"Steel Resolve (Inquisitor 32)",
"Vigor":"Vigor (Inquisitor 20)",
"Word of Renewal":"Word of Renewal (Inquisitor 10)",
"Rune of Kalastor":"Rune of Kalastor (Inquisitor 15)",
"Aura of Conviction":"Aura of Conviction (Inquisitor 50)",
"Aura of Censure":"Aura of Censure (Inquisitor 50)",
"Inquisitor Seal":"Inquisitor Seal (Inquisitor 25)",
"Upheaval":"Upheaval (Shaman 15)",
"Feral Hunger":"Feral Hunger (Shaman 10)",
"Wendigo Totem":"Wendigo Totem (Shaman 20)",
"Conjure Primal Spirit":"Conjure Primal Spirit (Shaman 50)",
"Summon Briarthorn":"Summon Briarthorn (Shaman 10)",
"Storm Totem":"Storm Totem (Shaman 32)",
"Stormcaller's Pact":"Stormcaller's Pact (Shaman 50)",
"Wind Devil":"Wind Devil (Shaman 10)",
"Storm Surge":"Storm Surge (Shaman 25)",
"Torrent":"Torrent (Shaman 15)",
"Primal Strike":"Primal Strike (Shaman 5)",
"Storm Touched":"Storm Touched (Shaman 32)",
"Tenacity of the Boar":"Tenacity of the Boar (Shaman 15)",
"Savagery":"Savagery (Shaman 1)",
"Primal Bond":"Primal Bond (Shaman 50)",
"Maelstrom":"Maelstrom (Shaman 40)",
"Raging Tempest":"Raging Tempest (Shaman 20)",
"Blood Pact":"Blood Pact (Shaman 40)",
"Corrupted Storm":"Corrupted Storm (Shaman 40)",
"Ground Slam":"Ground Slam (Shaman 20)",
"Emboldening Presence":"Emboldening Presence (Shaman 40)",
"Brute Force":"Brute Force (Shaman 1)",
"Oak Skin":"Oak Skin (Shaman 25)",
"Heart of the Wild":"Heart of the Wild (Shaman 15)",
"Mogdrogen's Pact":"Mogdrogen's Pact (Shaman 5)",
"Entangling Vines":"Entangling Vines (Shaman 25)",
"Grasping Vines":"Grasping Vines (Shaman 5)",
"Devouring Swarm":"Devouring Swarm (Shaman 1)",
"Conversion":"Conversion (Arcanist 32)",
"Maiven's Sphere of Protection":"Maiven's Sphere of Protection (Arcanist 15)",
"Shattered Star":"Shattered Star (Arcanist 40)",
"Frozen Core":"Frozen Core (Arcanist 20)",
"Trozan's Sky Shard":"Trozan's Sky Shard (Arcanist 10)",
"Inferno":"Inferno (Arcanist 20)",
"Callidor's Tempest":"Callidor's Tempest (Arcanist 5)",
"Fabric of Reality":"Fabric of Reality (Arcanist 40)",
"Mental Alacrity":"Mental Alacrity (Arcanist 32)",
"Arcane Will":"Arcane Will (Arcanist 15)",
"Inner Focus":"Inner Focus (Arcanist 1)",
"Nullification":"Nullification (Arcanist 20)",
"Star Pact":"Star Pact (Arcanist 50)",
"Reckless Power":"Reckless Power (Arcanist 50)",
"Elemental Balance":"Elemental Balance (Arcanist 25)",
"Overload":"Overload (Arcanist 10)",
"Iskandra's Elemental Exchange":"Iskandra's Elemental Exchange (Arcanist 1)",
"Devastation":"Devastation (Arcanist 50)",
"Olexra's Flash Freeze":"Olexra's Flash Freeze (Arcanist 5)",
"Absolute Zero":"Absolute Zero (Arcanist 20)",
"Mirror of Ereoctes":"Mirror of Ereoctes (Arcanist 10)",
"Proliferation":"Proliferation (Arcanist 40)",
"Supercharged":"Supercharged (Arcanist 25)",
"Distortion":"Distortion (Arcanist 15)",
"Panetti's Replicating Missile":"Panetti's Replicating Missile (Arcanist 1)",
"Disintegration":"Disintegration (Arcanist 50)",
"Albrecht's Aether Ray":"Albrecht's Aether Ray (Arcanist 25)",
"Execution":"Execution (Nightblade 50)",
"Nidalla's Hidden Hand":"Nidalla's Hidden Hand (Nightblade 10)",
"Whirling Death":"Whirling Death (Nightblade 25)",
"Amarasta's Quick Cut":"Amarasta's Quick Cut (Nightblade 15)",
"Belgothian's Shears":"Belgothian's Shears (Nightblade 5)",
"Dual Blades":"Dual Blades (Nightblade 1)",
"Night's Chill":"Night's Chill (Nightblade 15)",
"Veil of Shadow":"Veil of Shadow (Nightblade 1)",
"Blade Spirit":"Blade Spirit (Nightblade 50)",
"Nightfall":"Nightfall (Nightblade 50)",
"Nidalla's Justifiable Ends":"Nidalla's Justifiable Ends (Nightblade 25)",
"Shadow Strike":"Shadow Strike (Nightblade 10)",
"Circle of Slaughter":"Circle of Slaughter (Nightblade 40)",
"Ring of Steel":"Ring of Steel (Nightblade 20)",
"Nether Edge":"Nether Edge (Nightblade 32)",
"Heart Seeker":"Heart Seeker (Nightblade 15)",
"Phantasmal Blades":"Phantasmal Blades (Nightblade 5)",
"Blade Eruption":"Blade Eruption (Nightblade 50)",
"Merciless Repertoire":"Merciless Repertoire (Nightblade 32)",
"Anatomy of Murder":"Anatomy of Murder (Nightblade 20)",
"Phantasmal Armor":"Phantasmal Armor (Nightblade 10)",
"Elemental Awakening":"Elemental Awakening (Nightblade 32)",
"Shadow Dance":"Shadow Dance (Nightblade 15)",
"Pneumatic Burst":"Pneumatic Burst (Nightblade 5)",
"Lethal Assault":"Lethal Assault (Nightblade 15)",
"Amarasta's Blade Burst":"Amarasta's Blade Burst (Nightblade 1)",
"Devouring Blades":"Devouring Blades (Nightblade 40)",
"Blade Trap":"Blade Trap (Nightblade 25)",
"Blade Barrier":"Blade Barrier (Nightblade 20)",
"Second Rite":"Second Rite (Occultist 25)",
"Solael's Witchfire":"Solael's Witchfire (Occultist 5)",
"Summon Familiar":"Summon Familiar (Occultist 1)",
"Summon Hellhound":"Summon Hellhound (Occultist 10)",
"Destruction":"Destruction (Occultist 25)",
"Sigil of Consumption":"Sigil of Consumption (Occultist 10)",
"Black Death":"Black Death (Occultist 40)",
"Wasting":"Wasting (Occultist 20)",
"Bloody Pox":"Bloody Pox (Occultist 5)",
"Possession":"Possession (Occultist 50)",
"Lightning Strike":"Lightning Strike (Occultist 25)",
"Storm Spirit":"Storm Spirit (Occultist 15)",
"Mend Flesh":"Mend Flesh (Occultist 5)",
"Hellfire":"Hellfire (Occultist 32)",
"Ember Claw":"Ember Claw (Occultist 20)",
"Infernal Breath":"Infernal Breath (Occultist 50)",
"Vile Eruption":"Vile Eruption (Occultist 40)",
"Terrifying Gaze":"Terrifying Gaze (Occultist 20)",
"Blood Burst":"Blood Burst (Occultist 5)",
"Dreeg's Evil Eye":"Dreeg's Evil Eye (Occultist 1)",
"Doom Bolt":"Doom Bolt (Occultist 40)",
"Vulnerability":"Vulnerability (Occultist 10)",
"Curse of Frailty":"Curse of Frailty (Occultist 1)",
"Manipulation":"Manipulation (Occultist 50)",
"Bonds of Bysmiel":"Bonds of Bysmiel (Occultist 32)",
"Aspect of the Guardian":"Aspect of the Guardian (Occultist 32)",
"Blood of Dreeg":"Blood of Dreeg (Occultist 15)",
"Ulzuin's Wrath":"Ulzuin's Wrath (Demolitionist 20)",
"Vindictive Flame":"Vindictive Flame (Demolitionist 10)",
"Thermite Mine":"Thermite Mine (Demolitionist 32)",
"Full Spread":"Full Spread (Demolitionist 15)",
"Stun Jacks":"Stun Jacks (Demolitionist 1)",
"Hellfire Mine":"Hellfire Mine (Demolitionist 50)",
"Fire Mortar":"Fire Mortar (Demolitionist 1)",
"Ulzuin's Chosen":"Ulzuin's Chosen (Demolitionist 50)",
"Blast Shield":"Blast Shield (Demolitionist 32)",
"\"The Big One\"":"\"The Big One\" (Demolitionist 50)",
"Heavy Ordnance":"Heavy Ordnance (Demolitionist 32)",
"Mortar Trap":"Mortar Trap (Demolitionist 25)",
"Shattering Blast":"Shattering Blast (Demolitionist 40)",
"High Impact":"High Impact (Demolitionist 25)",
"Skyfire Grenado":"Skyfire Grenado (Demolitionist 20)",
"Grenado":"Grenado (Demolitionist 15)",
"Searing Light":"Searing Light (Demolitionist 10)",
"Flashbang":"Flashbang (Demolitionist 1)",
"Brimstone":"Brimstone (Demolitionist 50)",
"Static Strike":"Static Strike (Demolitionist 25)",
"Explosive Strike":"Explosive Strike (Demolitionist 10)",
"Fire Strike":"Fire Strike (Demolitionist 1)",
"Improved Casing":"Improved Casing (Demolitionist 40)",
"Canister Bomb":"Canister Bomb (Demolitionist 20)",
"Temper":"Temper (Demolitionist 20)",
"Flame Touched":"Flame Touched (Demolitionist 5)",
"Agonizing Flames":"Agonizing Flames (Demolitionist 40)",
"Demon Fire":"Demon Fire (Demolitionist 20)",
"Blackwater Cocktail":"Blackwater Cocktail (Demolitionist 5)",
"Menhir's Will":"Menhir's Will (Soldier 5)",
"Zolhan's Technique":"Zolhan's Technique (Soldier 10)",
"Markovian's Advantage":"Markovian's Advantage (Soldier 1)",
"Break Morale":"Break Morale (Soldier 40)",
"War Cry":"War Cry (Soldier 20)",
"Oleron's Rage":"Oleron's Rage (Soldier 50)",
"Menhir's Bulwark":"Menhir's Bulwark (Soldier 50)",
"Internal Trauma":"Internal Trauma (Soldier 25)",
"Rending Force":"Rending Force (Soldier 15)",
"Forcewave":"Forcewave (Soldier 1)",
"Shield Training":"Shield Training (Soldier 10)",
"Scars of Battle":"Scars of Battle (Soldier 40)",
"Decorated Soldier":"Decorated Soldier (Soldier 25)",
"Veterancy":"Veterancy (Soldier 15)",
"Military Conditioning":"Military Conditioning (Soldier 5)",
"Overguard":"Overguard (Soldier 10)",
"Fighting Spirit":"Fighting Spirit (Soldier 5)",
"Squad Tactics":"Squad Tactics (Soldier 32)",
"Field Command":"Field Command (Soldier 20)",
"Counter Strike":"Counter Strike (Soldier 40)",
"Deadly Momentum":"Deadly Momentum (Soldier 40)",
"Fighting Form":"Fighting Form (Soldier 15)",
"Cadence":"Cadence (Soldier 1)",
"Blindside":"Blindside (Soldier 32)",
"Blitz":"Blitz (Soldier 10)",
"Laceration":"Laceration (Soldier 32)",
"Blade Arc":"Blade Arc (Soldier 10)"
};
const selectors = [
'.text-light-blue',
'.item-skill-header'
];
function replaceTextNodes(root) {
if (!root) return;
const walker = document.createTreeWalker(
root,
NodeFilter.SHOW_TEXT
);
const nodes = [];
while (walker.nextNode()) {
nodes.push(walker.currentNode);
}
for (const node of nodes) {
const originalText = node.nodeValue.trim();
if (!originalText) continue;
const replacement = replacements[originalText];
if (!replacement) continue;
console.log(
`%c${originalText} → ${replacement}`,
'color: blue; font-weight: bold;'
);
node.nodeValue = node.nodeValue.replace(
originalText,
replacement
);
}
}
function scan(root) {
if (!root) return;
for (const selector of selectors) {
if (root.matches?.(selector)) {
replaceTextNodes(root);
}
root.querySelectorAll?.(selector).forEach(element => {
replaceTextNodes(element);
});
}
}
function start() {
const itemList = document.querySelector('#item-list');
if (!itemList) {
setTimeout(start, 100);
return;
}
console.log(
'%c #item-list FOUND',
'color: green; font-weight: bold;'
);
scan(itemList);
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
mutation.addedNodes.forEach(node => {
if (node.nodeType === Node.ELEMENT_NODE) {
scan(node);
}
});
if (mutation.type === 'characterData') {
const parent = mutation.target.parentElement;
if (parent) {
scan(parent);
}
}
if (mutation.type === 'childList') {
if (mutation.target instanceof Element) {
scan(mutation.target);
}
}
}
});
observer.observe(itemList, {
childList: true,
subtree: true,
characterData: true
});
}
start();
})();
- That’s all, after refreshing site you should see modified descriptions.
Credits to @SquirrelArmy by providing list of all skills with mastery tier requirement

