Skip to content

Instantly share code, notes, and snippets.

@jmervine
Last active June 4, 2023 05:51
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmervine/4f2a8a9c2142d49e59099bf8af35e98f to your computer and use it in GitHub Desktop.
Save jmervine/4f2a8a9c2142d49e59099bf8af35e98f to your computer and use it in GitHub Desktop.

Macro Dump: 2022-11-29 11:24:37 -0800

Note: This file is generated and macro titles are calculated as best as possible with data from input. This is also just a current snapshot, there's no guarantees that all of these macros work. =P

TOC

  1. Account wide
  2. Atiesh/Holyhound
  3. Atiesh/Meathound
  4. Atiesh/Lighthound
  5. Atiesh/Shifthound
  6. Atiesh/Spellhound
  7. Atiesh/Poisonhound
  8. Atiesh/Zombiehound
  9. Atiesh/Demonichound
  10. Atiesh/Shooterhound
  11. Atiesh/Thunderhound

Account wide

Attack

#showtooltip
/dismount
/startattack

Decursive

/script DecursiveRootTable.Dcr:Println('No spell available')

Focus

/focus

GDKP

/rw 200/50 bid; green parse (25%) and discord required for payout.

Health Stones

#showtooltip
/use item:22105
/use item:22104
/use item:22103
/use Major Healthstone

Heroics

/4 DPS LFG Heroics, saved: CoS

LVL

/script local e=UnitXP("player"); local m=UnitXPMax("player"); local b=m/20; local rba=floor((e/b)*10+0.5)/10; local rbb=floor((20-(e/b))*10+0.5)/10; SendChatMessage("I am "..rba.." bars into "..UnitLevel("player").." ("..rbb.." bars left)","guild",nil);

Saronite Bomb

#showtooltip Saronite Bomb
/use [@cursor] Saronite Bomb

Spec Toggle

/run local i=GetActiveTalentGroup(); SetActiveTalentGroup(i==1 and 2 or 1)

Spelllock

#showtooltip
/cast [pet:Felhunter] Spell Lock
/cast [pet:Succubus] Seduction
/cast [pet:Voidwalker] Sacrifice

TARGET

/target Library Guardian

Atiesh/Holyhound

Fear Ward

#showtooltip Fear Ward
/cast [target=mouseover,help][help][] Fear Ward; Fear Ward

Penance

#showtooltip Penance
/use 14
/cast [@mouseover,exists] Penance; [@target,exists] Penance; [@player]Penance

Hymn of Hope

#showtooltip Hymn of Hope
/use 14
/cast Hymn of Hope

Mind Blast

#showtooltip Mind Blast
/use 13
/use 14
/cast Inner Focus
/cast Mind Blast

Mount

#showtooltip
/use Swift Purple Gryphon
/use Swift Palomino

Power Infusion

#showtooltip Power Infusion
/use 14
/cast [@mouseover][] Power Infusion

Prayer of Healing

#showtooltip Prayer of Healing
/cast [target=mouseover,help][help][] Prayer of Healing; Prayer of Healing

Spec:Disc

/itemrack equip Disc
/run local i=GetActiveTalentGroup(); SetActiveTalentGroup(i==1 and 2 or 1)

Spec:Shadow

/itemrack equip Shadow
/run local i=GetActiveTalentGroup(); SetActiveTalentGroup(i==1 and 2 or 1)

Shadow Word: Pain

#showtooltip Shadow Word: Pain
/use 13
/use 14
/cast [@mouseover,harm,nodead] Shadow Word: Pain; Shadow Word: Pain

Shadow Word: Death

#showtooltip Shadow Word: Death
/cast Inner Focus
/cast Shadow Word: Death

Atiesh/Meathound

Charge

#showtooltip Charge
/startattack
/cast [stance:3,combat] Intercept; [stance:1,nocombat] Charge; [stance:3,nocombat][] Battle Stance

Disarm

#showtooltip Disarm
/startattack
/cast [stance:2] Disarm; Defensive Stance

Execute

#showtooltip Execute
/startattack
/cast [stance:1] Execute; [stance:3] Execute; Berserker Stance

Hamstring

#showtooltip Hamstring
/startattack
/cast [stance:1] Hamstring; [stance:3] Hamstring; Battle Stance

mnt

/use [flyable] Ebon Gryphon; Swift Palomino

Mocking Blow

#showtooltip Mocking Blow
/startattack
/cast [stance:2] Mocking Blow; Defensive Stance

Mortal Strike

#showtooltip Mortal Strike
/startattack
/use 13
/cast Mortal Strike

Overpower

#showtooltip Overpower
/startattack
/cast [stance:1] Overpower; Battle Stance

Pummel

#showtooltip Pummel
/startattack
/cast [stance:3] Pummel; Berserker Stance

Rend

#showtooltip Rend
/startattack
/cast [stance:1] Rend; [stance:2] Rend; Battle Stance

Throw

#showtooltip Throw
/startattack
/cast Throw

Sweeping Strikes

#showtooltip Sweeping Strikes
/startattack
/cast [stance:1] Sweeping Strikes; [stance:3] Sweeping Strikes; Berserker Stance

Thunder Clap

#showtooltip Thunder Clap
/startattack
/cast [stance:1] Thunder Clap; [stance:2] Thunder Clap; Battle Stance

Victory Rush

#showtooltip Victory Rush
/startattack
/cast [stance:1] Victory Rush; [stance:3] Victory Rush; Berserker Stance

Whirlwind

#showtooltip Whirlwind
/startattack
/cast [stance:3] Whirlwind; Berserker Stance

Atiesh/Lighthound

Crusader Strike

#showtooltip Crusader Strike
/startattack
/use 13
/cast Crusader Strike

Divine Shield

#showtooltip
/cancelaura Divine Shield
/cast Divine Shield

Judgement

#showtooltip Judgement
/startattack
/use 14
/cast Judgement
/cast Seal of Command(Rank 1)

Mount

#showtooltip
/cast [flyable]Snowy Gryphon
/cast Charger

Sanc Aura

/cast [nostance:7] Sanctity Aura
/cast [nostance:8] Crusader Aura

Seal of Command

#showtooltip Seal of Command
/startattack
/cast Seal of Command

Seal of the Martyr

#showtooltip Seal of the Martyr
/startattack
/cast Seal of the Martyr

Atiesh/Shifthound

Bash

#showtooltip Bash
/cast !Bear Form
/cast Bash

Challenging Roar

#showtooltip Challenging Roar
/cast !Bear Form
/cast Challenging Roar

Cat

#showtooltip
/cast !Cat Form
/startattack [form:3,harm,nodead]

Dash

#showtooltipf Dash
/cast !Cat Form
/cast Dash

Forms

#showtooltip
/cast [swimming] !Aquatic Form;!Cat Form

Prowl

#showtooltipf Prowl
/cast !Cat Form
/cast Prowl

Travel

#showtooltip
/cast [swimming] !Aquatic Form; [flyable,nocombat] !Flight Form; !Travel Form

Atiesh/Spellhound

Arcane Blast

#showtooltip Arcane Blast
/cast Arcane Blast

Blizzard

#showtooltip Blizzard
/cast Blizzard

Cone of Cold

#showtooltip Cone of Cold
/cast Cone of Cold

Counterspell

#showtooltip Counterspell
/stopcasting
/cast [target=mouseover,exist,harm] Counterspell;Counterspell

Elemental

#showtooltip
/cast [pet:Water Elemental]Freeze; Summon Water Elemental

Fireball

#showtooltip Fireball
/cast Fireball

Flamestrike

#showtooltip Flamestrike
/use 13
/use 14
/cast Flamestrike

Frostbolt

#showtooltip Frostbolt
/cast Frostbolt

Ice Block

#showtooltip Ice Block
/stopcasting
/cast Ice Block
/cancelaura Ice Block

Icy Veins

#showtooltip Icy Veins
/use 14
/use 13
/cast Icy Veins
/cast Arcane Power

Mount

/use [flyable]Ebon Gryphon;Swift Palomino

Polymorph

#showtooltip Polymorph
/cast [@focus, exists] Polymorph;  [@mouseover, exists] Polymorph; Polymorph

Ritual of Refreshment(Rank 1)

#showtooltip Ritual of Refreshment(Rank 1)
/s *ding* *ding*, Soups on, clickity click!
/raid *ding* *ding*, Soups on, clickity click!
/cast Ritual of Refreshment(Rank 1)

Atiesh/Poisonhound

Adrenaline Rush

#showtooltip Adrenaline Rush
/use 14
/startattack
/cast Adrenaline Rush

AFan

/itemrack equip AFan

AFanBig

/itemrack equip AFanBig

Blade Flurry

#showtooltip Blade Flurry
/startattack
/cast Cold Blood
/cast Blade Flurry
/cast Adrenaline Rush

Blind

#showtooltip Blind
/cast [target=mouseover, exists] Blind; Blind

Envenom

#showtooltip Envenom
/cast Envenom

Fan Spec

/itemrack equip Fan
/run local i=GetActiveTalentGroup();SetActiveTalentGroup(i==1 and 2 or 1)

Fan of Knives

#showtooltip Fan of Knives
/itemrack equip AFanBig
/startattack
/cast Fan of Knives

GO

#showtooltip
/cast Cold Blood
/use 14

GOC

#showtooltip
/cast Adrenaline Rush
/use 14

IR:Combat

/itemrack equip Combat

Kick

#showtooltip Kick
/startattack
/cast [target=mouseover, exists] Kick); [target=focus, exists] Kick; Kick

Mount

/cast Turbo-Charged Flying Machine
/castrandom Black War Tiger, Black War Steed

Mutilate

#showtooltip Mutilate
/itemrack equip Single
/startattack
/use 10
/cast Mutilate

Single Target

/itemrack equip Single
/run local i=GetActiveTalentGroup();SetActiveTalentGroup(i==1 and 2 or 1)

Sinister Strike

#showtooltip Sinister Strike
/startattack
/cast Sinister Strike

Tricks of the Trade

#showtooltip Tricks of the Trade
/cancelaura Tricks of the Trade
/cast [target=mouseover,exists]Tricks of the Trade; [target=focus,exists]Tricks of the Trade; Tricks of the Trade

Atiesh/Zombiehound

Death Pack

#showtooltip
/cast !Raise Dead
/cast Death Pack

Death Strike

#showtooltip Death Strike
/startattack
/cast Blood Tap
/cast Death Strike
/cast !Rune Strike

Heart Strike

#showtooltip
/startattack
/cast Heart Strike
/cast !Rune Strike

Icy Touch

#showtooltip Icy Touch
/use 13
/use 14
/cast !Unbreakable Armor
/cast Blood Tap
/startattack
/cast Icy Touch
/cast !Rune Strike

mount

/use [flyable] Winged Steed of the Ebon Blade; Acherus Deathcharger

Plague Strike

#showtooltip Plague Strike
/startattack
/cast Plague Strike
/cast !Rune Strike

Scourge Strike

#showtooltip
/startattack
/cast Frost Strike
/cast !Rune Strike

Unholy Frenzy

#showtooltip Unholy Frenzy
/cast [@mouseover,exists,help][] Unholy Frenzy

Vampiric Blood

#showtooltip Vampiric Blood
/use 14
/use Master Healthstone
/cast Vampiric Blood

Atiesh/Demonichound

Metamorphosis

#showtooltip Metamorphosis
/petattack
/use 10
/use 13
/use 14
/cast [form:0] Metamorphosis
/cast Immolation Aura(Demon)
/cast Shadow Cleave(Demon)

Curse of Agony

#showtooltip Curse of Agony
/cast Demonic Empowerment
/cast Shadow Cleave(Demon)
/cast Curse of Agony

Corruption

#showtooltip Corruption
/cast Demonic Empowerment
/cast Shadow Cleave(Demon)
/cast [@mouseover, exists] Corruption
/cast Corruption

Curse of Doom

#showtooltip Curse of Doom
/cast Shadow Cleave(Demon)
/cast [target=focus,exists,harm] Curse of Doom; Curse of Doom

Drain Life

#showtooltip Drain Life
/cast [nochanneling:Drain Life] Drain Life

Fear

#showtooltip Fear
/stopcasting
/cast Fear

Mount

#showtooltip
/castrandom [flyable] Purple Netherwing Drake
/castrandom Dreadsteed, Black War Tiger, Amani War Bear

Ritual of Souls

#showtooltip Ritual of Souls
/s (0/2) Cookies! Clickity click!
/raid (0/2) Cookies! Clickity click!
/bg Cookies! Clickity click!
/cast Ritual of Souls

SB1

#showtooltip
/cast [@mouseover,harm,nodead] [] Shadow Bolt(Rank 1)

Incinerate

#showtooltip Incinerate
/cast Demonic Empowerment
/cast Incinerate

Seed of Corruption

#showtooltip Seed of Corruption
/cast [@pettarget,exists] Shadow Bite
/cast [@pettarget,exists] Cleave
/cast Demonic Empowerment
/cast Seed of Corruption

Soulshatter

#showtooltip Soulshatter
/stopcasting
/cast Soulshatter

Soul Fire

#showtooltip Soul Fire
/use 10
/cast Demonic Empowerment
/cast Soul Fire

Ritual of Summoning

#showtooltip Ritual of Summoning
/p Summon coffin coming out...
/raid Summon coffin coming out...
/cast Ritual of Summoning

Atiesh/Shooterhound

Arcane Shot

#showtooltip Arcane Shot
/startattack
/cast !Auto Shot
/use 14
/cast Kill Command
/cast Arcane Shot

Auto Shot

#showtooltip Auto Shot
/startattack
/cast !Auto Shot

Bestial Wrath

#showtooltip Bestial Wrath
/use 14
/startattack
/cast !Auto Shot
/cast Bestial Wrath

Distract

#showtooltip

mount

/use [flyable]Ebon Gryphon; Great Purple Elekk

Mend Pet

#showtooltip Mend Pet
/cast [@pet,dead] Revive Pet
/cast [nopet] Call Pet
/cast [@pet,nodead] Gift of the Naaru(Racial)
/cast [@pet,nodead] Mend Pet

Serpent Sting

#showtooltip Serpent Sting
/startattack
/cast !Auto Shot
/cast Serpent Sting

Steady Shot

#showtooltip Steady Shot
/cast Kill Command
/cast Steady Shot

Atiesh/Thunderhound

Chain Lightning

#showtooltip Chain Lightning
/use 13
/use 14
/cast Chain Lightning

Call of the Ancestors

#showtooltip Call of the Ancestors
/dismount
/startattack
/cast Call of the Ancestors

Call of the Elements

#showtooltip Call of the Elements
/dismount
/startattack
/cast Call of the Elements

Elemental Mastery

#showtooltip Elemental Mastery
/use 14
/cast Elemental Mastery

Earth Shock

#showtooltip Earth Shock
/use 13
/use 14
/cast Earth Shock

Earth Shield

#showtooltip Earth Shield
/use Essence of the Martyr
/cast [@mouseover]Earth Shield

Flame Shock

#showtooltip Flame Shock
/use 13
/use 14
/cast Flame Shock

HB_NS_HW

#showtooltip
/stopcasting
/cast Nature's Swiftness
/cast Tidal Force
/use 13
/use 14
/cast [@mouseover]Healing Wave

Lightning Bolt

#showtooltip Lightning Bolt
/use 13
/use 14
/cast Lightning Bolt

Mana Tide Totem

#showtooltip Mana Tide Totem
/p Here comes the TIDE!
/cast Mana Tide Totem

Mount

#showtooltip
/dismount
/cast Swift Purple Gryphon
/cast Black War Tiger

Nature's Swiftness

#showtooltip Nature's Swiftness
/stopcasting
/use 13
/use 14
/cast Nature's Swiftness
/cast Tidal Force

Purge

#showtooltip
/cast [@mouseover,nodead] Purge; [@target] Purge

Stormstrike

#showtooltip Stormstrike
/dismount
/startattack
/use 13
/use 14
/cast Stormstrike

Tidal Force

#showtooltip Tidal Force
/use 13
/use 14
/cast Tidal Force
#!/usr/bin/env ruby
# ----------------------------------------------------------------- #
# Simple ruby script to traverse wow folder for all macros and create a markdown document
# from the results.
#
# USAGE:
# ruby ./macros_to_md.rb [server filter]
#
# e.g. $ ruby ./macros_to_md.rb atiesh
# ----------------------------------------------------------------- #
require 'digest'
require 'find'
# ----------------------------------------------------------------- #
# HELPER METHODS
#
# Create section header for each Character macro set.
def section(file)
parts = file.split("/")
parts.pop
section = "#{parts[-2]}/#{parts.last}"
section = "Account wide" if section.start_with?("Account")
section
end
def toc_elements(header)
anchor = header.downcase.gsub('/', '').gsub(' ', '')
"1. [#{header}](##{anchor})"
end
# Format title for each macro.
def title(line, contents, i)
"#### #{title_string(line, contents, i)}"
end
# Try real hard to figure out a good title for each macro.
def title_string(line, contents, i)
# Handle if there's no "#show..." in the macro.
if line.start_with?("/")
return title_from_ver(contents[i-1])
end
# Handle if there's only "#show..." and no value to set to it, e.g. "#show"
# vs. "#show Spell Name"
if line.split(" ").length == 1
return title_from_ver(contents[i-1])
end
# Parse the title from the "#show..." line, using the value set.
line.gsub(/^#show[a-z]* /, '')
end
# Worse case, pull the macro title from the macro "name" inside
# the version string.
def title_from_ver(line)
title = line.split('"')[1]
# This is dumb, I used to use "." as the name of all my macros, I've stopped
# doing that, but still, there a few that remain. As such, I'm going to need
# to solve for that.
if title == "."
title = [
"TODO: Name this macro.",
"> This is dumb, I used to use `.` as the name of all my macros, I've stopped",
"> doing that, but still, there a few that remain."
].join("\n")
end
title
end
# / HELPER METHODS
# ----------------------------------------------------------------- #
# Read the directory we should start in from the first command line arg.
start = ARGV[0]
# Error if we don't have a directory to start from.
abort "ERROR: A valid input directory path is required for the first arg." unless File.directory?(start)
# Read server filter from the second command line arg, if present.
filter = ARGV[1] || nil
# Define the output file name.
name = "macro_dump.md"
# Traverse the source directory and find all "macros-cache.txt" files.
files = Find.find(start)
.select { |i| i.end_with?("macros-cache.txt") }
.sort_by(&:length)
# Set up header to be added to the beginning of the output, after we've parsed
# and built the TOC nav.
output = [
"# Macro Dump: #{Time.now.to_s}", "",
"> Note: This file is generated and macro titles are calculated as best as possible with data from input.",
"> This is also just a current snapshot, there's no guarantees that all of these macros work. =P", "",
"## TOC"
]
# Placeholder to build the TOC nav.
headers = []
# Set up output buffer with top level display text.
buffer = []
# Iterate of each file.
files.each do |file|
# Set the section header
section = section(file)
# Use the section header in conjunction with the filter string
# to determine if this macro file should be included.
next if filter && section != "Account wide" && \
!file.downcase.include?(filter.downcase)
# Add section to headers for TOC
headers << section
# Write section to output buffer.
buffer << "## #{section}"
# Read the file (cleanly) from disk.
contents = File.open(file).readlines.map(&:strip)
# Set up position holders for parsing the file.
in_macro = false
has_title = false
# Iterate over the file.
contents.each_with_index do |line, i|
# Ignore comments (not sure if this is a good idea or not.)
next if line.start_with?("--")
# Check for "VER" line indicating the start of a macro and if so,
# move on to the next line, as we now know we're parsing a macro.
if line.start_with?("VER")
# Ignore the macro entry if it's empty.
in_macro = true unless contents[i+1].start_with?("END")
next
end
# If we're at the end of the macro, handle that by closing the code
# block and mark as done parsing the macro.
if in_macro && line.start_with?("END")
buffer << "```\n"
in_macro = false
has_title = false
end
# If we're not in a macro and none of the above have been activated,
# the line is empty or something we should be ignoring. As such,
# we're going to just move on to the next line.
next unless in_macro
# If we've reached this point and have not marked ourselves has having
# a title, it's safe to assume that we should use this line to set the
# title.
unless has_title
buffer.concat([ title(line, contents, i), "```", line ])
has_title = true
next
end
# If we've reached this point, then this line is part of the macro, so
# add it to the output buffer.
buffer << line
end
end
# Put together the header, toc elements and output in to a single output.
## Add formatted toc elements
headers.each do |h|
output << toc_elements(h)
end
output << ""
## Add a little spacing format before the body.
## Add the body of the doc.
output.concat(buffer)
# Print out what file we're writing to.
puts "Writing: #{name}"
# Write the buffer to a file.
File.write(name, output.join("\n"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment