Spec Example - WoWAnalyzer/WoWAnalyzer GitHub Wiki
src\analysis\classic\mage\fire\CONFIG.tsx
exampleReport: '/report/<UPDATE_THIS>',
spec: SPECS.CLASSIC_MAGE_FIRE, // UPDATE THIS
// Update ClassicCasterSpec -> Example: ClassicFireMage
import('./CombatLogParser' /* webpackChunkName: "ClassicCasterSpec" */).then(
src\analysis\classic\mage\fire\modules\checklist\Component.tsx
{/* UPDATE THE SPELLS BELOW */}
<SpellLink id={SPELLS.FIRE_BLAST} /> or <SpellLink id={SPELLS.ICE_LANCE} />.
{/* UPDATE THE ABILITIES BELOW */}
<AbilityRequirement spell={SPELLS.ICY_VEINS.id} />
src\analysis\classic\mage\fire\modules\features\AlwaysBeCasting.tsx
{/* UPDATE THE SPELLS BELOW */}
<SpellLink id={SPELLS.FIRE_BLAST} /> or <SpellLink id={SPELLS.ICE_LANCE} />.
Load several reports / boss fights and check the console for these errors:
src\analysis\classic\mage\fire\modules\features\Abilities.ts
class Abilities extends CoreAbilities {
spellbook() {
return [
// SPELLS ADDED HERE ARE DISPLAYED ON THE STATISTICS TAB
// LIST ALL SPELLS THAT COULD BE CAST DURING COMBAT BY THIS SPEC
// Rotational
{
spell: [SPELLS.FIREBALL.id, ...SPELLS.FIREBALL.lowRanks],
category: SPELL_CATEGORY.ROTATIONAL,
gcd: { base: 1500 },
},
// Rotational AOE
// Cooldowns
{
spell: [SPELLS.ICY_VEINS.id],
category: SPELL_CATEGORY.COOLDOWNS,
gcd: { base: 1500 },
cooldown: 180,
},
// Defensive
// Other spells (not apart of the normal rotation)
// Utility
// Pet Related
// Consumable
];
}
}
src\parser\index.ts
import ClassicMageFire from 'analysis/classic/mage/fire';
const configs: Config[] = [
...
ClassicMageFire,
...
];
src\analysis\classic\mage\fire\modules\checklist\Module.tsx
// Spells
// import SpellName from './modules/spells';
...
render() {
...
// Spells
// spellName: this.spellName.uptimeSuggestionThresholds,