Skip to content

Instantly share code, notes, and snippets.

@Choonster
Created April 23, 2013 04:08
Show Gist options
  • Save Choonster/5440798 to your computer and use it in GitHub Desktop.
Save Choonster/5440798 to your computer and use it in GitHub Desktop.
User:Coonster_TheMage on Wowpedia
{{PC|name=Choonster|realm=Frostmourne|loc=US|wwuser=Choonster}}
{{rpbox
| faction = Alliance
| name = Choonster
| image = ChoonsterDwarf.jpg
| guild = Corvus Canis>, formerly <Durotar NOOB Patrol
| realm = Frostmourne US
| title = the Insane
| gender = Male
| race = Dwarf
| level = 85
| class = Mage
| talents = Frost
| professions = Tailoring, Inscription
| mounts = Onyx Netherwing Drake, Mekgineer's Chopper, Traveller's Tundra Mammoth
}}
<!-- You can include pictures throughout the page too with [[File:cxxxx.jpg|thumb|Description]] -->
==Chat Macros==
===Item Link===
/run SendChatMessage("<b><u>First half of message </u></b>"..select(2,GetItemInfo(<b><u>ItemID</u></b>)).."<b><u> Second half of message</u></b>","CHANNEL",nil,GetChannelName("Trade - City"))
This will output the following to Trade:<br/><br/>
''First half of message [ItemLink] Second half of message''
<br/><br/>Change <b><u>ItemID</u></b> to the ID of the item you want to link. ItemIDs can be found on the end of the Armory or Wowhead URL of that item's page.
===Random Phrases===
/cast Spell
/run SendChatMessage(GetRandomArgument(<b><u>"Phrase1","Phrase 2","Phrase 3",etc.</u></b>),<b><u>"ChatTypeId",languageID,"Channel"</u></b>)
Replace the bold/underlined fields with the appropriate values.<br/>
<b><u>"PhraseX"</u></b> = "Eat hot lava, creep!", etc. Put as many phrases as you want in here, each contained in quotation marks and separated by commas.<br/>
<b><u>"ChatTypeId"</u></b> = [[ChatTypeId|Type of Chat]]<br/>
<b><u>"Language"</u></b> = "GOBLIN" to send the message in the Goblin language, "ORCISH" ("COMMON" for Alliance) or nil for Orcish (Common for Alliance)<br/>
<b><u>"Channel"</u></b> = Numeric value of a chat channel for ChatTypeId="CHANNEL" or player name for ChatTypeId="WHISPER"<br/>
The last three fields can be omitted if you just want the phrases in /s in Orcish.
===Emotes or chat channels:===
/equipset [spec:1]sub;throw
/run SendChatMessage(1==GetActiveSpecGroup()and"<b><u>Replace this with the message to send while in your primary spec ([spec:1])</u></b>"or"<b><u>Replace this with the message to send while in your secondary spec ([spec:2])</u></b>","EMOTE")
Replace <tt>EMOTE</tt> with any other [[ChatTypeId|Chat Type ID]] if you don't want /e messages. If using a chat channel or whisper, replace the second <tt>nil</tt> in each <tt>SendChatMessage()</tt> with the channel number or name to whisper (name has to be in quotation marks). Replace the emboldened/underlined phrases with the appropriate messages.
===Chat Frame Message (only visible to you):===
/equipset [spec:1]sub;throw
/run print(1==GetActiveSpecGroup()and"<b><u>Replace this with the message to send while in your primary spec ([spec:1])</u></b>"or"<b><u>Replace this with the message to send while in your secondary spec ([spec:2])</u></b>")
Replace the emboldened/underlined phrases with the appropriate messages.
In both macros you can replace <tt>GetActiveSpecGoup()==1</tt> with a different [[World of Warcraft API|function]] for a different conditional.
===Cooldown chat macros===
====Cooldown Chat Message====
/run local S,B,D="<b><u>Spell Name</u></b>"B,D=GetSpellCooldown(S)SendChatMessage(format("%s has %d seconds left on its cooldown.",S,B+D-GetTime()),"<b><u>ChatTypeId</u></b>",nil,"<b><u>Channel</u></b>")
====Duration Chat Message====
/run local S,B,C,D="<b><u>Spell Name</u></b>"B,D=GetSpellCooldown(S)C=B+D-GetTime()SendChatMessage(format(C<<b><u>X</u></b> and"%s has %d seconds remaining."or"%s is inactive.",S,<b><u>X</u></b>-C),"<b><u>ChatTypeId</u></b>",nil,"<b><u>Channel</u></b>")
====Cooldown Chat Frame Message (only visible to you)====
/run local S,B,D="<b><u>Spell Name</u></b>"B,D=GetSpellCooldown(S)print(format("%s has %d seconds left on its cooldown.",S,B+D-GetTime()))
====Duration Chat Frame Message (only visible to you)====
/run local S,B,C,D="<b><u>Spell Name</u></b>"B,D=GetSpellCooldown(S)C=B+D-GetTime()print(format(C<<b><u>X</u></b> and"%s has %d seconds remaining."or"%s is inactive.",S,<b><u>X</u></b>-C))
Replace the bold/underlined fields with the appropriate values:<br/>
Spell Name = Name of spell to base message on<br/>
ChatTypeid = [[ChatTypeId]]<br/>
Channel = Numeric value of chat channel or name of person to whisper (name must be in quotation marks)<br/>
X = Spell cooldown - Spell duration (in seconds)<br/>
==Mount/Companion Macros==
Indices are explained [[API_CallCompanion|here]].<br>
===Completely random companions===
/randompet
<br>
===Random companion from a specified pool===
/run CallCompanion("CRITTER",GetRandomArgument(<b><u>c1,c2,c3,etc.</u></b>))
Replace <b><u>c1,c2,c3,etc.</u></b> with the indices of your companions.
<br>
===Random companion with exceptions===
/run local r,c,t=random,"CRITTER"t={r(<b><u>X-1</u></b>),r(<b><u>X+1</u></b>,<b><u>Y-1</u></b>),r(<b><u>Y+1</u></b>,<b><u>Z-1</u></b>),r(<b><u>Z+1</u></b>,GetNumCompanions(c))}CallCompanion(c,t[r(#t)])
Where <b><u>X,Y,Z</u></b> are indices of companions you <i>don't</i> want the macro to summon. This pattern can be repeated as many times as needed to exlude any number of companions (at a certain point it becomes more efficient to specify which companions you <i>do</i> want to summon rather than which ones you <i>don't</i>). <b><u>X,Y,Z</u></b> must be in ascending order from left to right.
i.e. X < Y < Z
<br>
=====Correct Usage=====
X=10, Y=20, Z=25
t={r(<b><u>9</u></b>),r(<b><u>11</u></b>,<b><u>19</u></b>),r(<b><u>21</u></b>,<b><u>24</u></b>),r(<b><u>26</u></b>,GetNumCompanions(c))}
<br>
=====Incorrect Usage=====
X=20, Y=10, Z=25
t={r(<b><u>19</u></b>),r(<b><u>21</u></b>,<b><u>9</u></b>),r(<b><u>11</u></b>,<b><u>24</u></b>),r(<b><u>26</u></b>,GetNumCompanions(c))}
<br>
===Completely random mounts===
/run local m="MOUNT"if not IsMounted()and IsOutdoors()then CallCompanion(m,random(GetNumCompanions(m)))end
<br>
===Random mounts from a specified pool===
/run if not IsMounted()and IsOutdoors()then CallCompanion("MOUNT",GetRandomArgument(<b><u>i1,i2,i3,i4,etc.</u></b>))end
Replace <b><u>i1,i2,i3,i4,etc.</u></b> with the indices of your mounts.
<br><br>
===Smart random flyer/ground mount===
/run local g=GetRandomArgument if not IsMounted()and IsOutdoors()then CallCompanion("MOUNT",IsFlyableArea()and g(<b><u>f1,f2,f3,f4,etc.</u></b>)or g(<b><u>g1,g2,g3,g4,etc.</u></b>))end
Replace <b><u>f1,f2,f3,f4,etc.</u></b> with the indices of your flying mounts and <b><u>g1,g2,g3,g4,etc.</u></b> with the indices of your ground mounts.
<br><br>
===Smart random aquatic/flyer/ground mount===
/run if IsOutdoors() and not IsMounted()then local g,z=GetRandomArgument,GetRealZoneText()CallCompanion("MOUNT",(z=="Kelp'thar Forest"or z=="Shimmering Expanse"or z=="Abyssal Depths"or z=="Vashj'ir")and IsSwimming()and not IsModifierKeyDown()and <b><u>s</u></b> or IsFlyableArea()and g(<b><u>f1,f2,f3,f4,etc.</u></b>)or g(<b><u>g1,g2,g3,g4,etc.</u></b>)
Replace <b><u>f1,f2,f3,f4,etc.</u></b> with the indices of your flying mounts, <b><u>g1,g2,g3,g4,etc.</u></b> with the indices of your ground mounts and <b><u>s</u></b> with the index of your Seahorse (usually 1).
<br/><br/>
This is only useful when you get the [[Subdued_Abyssal_Seahorse|Seahorse]] from [[Vashj'ir]] at 80 or above. It also won't fit in a regular macro and as such requires an addon such as [http://wow.curse.com/downloads/wow-addons/details/bind-pad.aspx BindPad] that allows for longer macros.
<br><br>
===Random companion and smart random flyer/ground mount===
/run local g=GetRandomArgument SummonRandomCritter()if not IsMounted()and IsOutdoors()then CallCompanion("MOUNT",IsFlyableArea()and g(<b><u>f1,f2,f3,f4,etc.</u></b>)or g(<b><u>g1,g2,g3,g4,etc.</u></b>))end
Replace <b><u>f1,f2,f3,f4,etc.</u></b> with the indices of your flying mounts and <b><u>g1,g2,g3,g4,etc.</u></b> with the indices of your ground mounts.
<br><br>
===Random companion from a specified pool and smart random flyer/ground mount===
/run local c,g=CallCompanion,GetRandomArgument c("CRITTER",g(<b><u>c1,c2,c3,etc.</u></b>))if not IsMounted()and IsOutdoors()then c("MOUNT",IsFlyableArea()and g(<b><u>f1,f2,f3,f4,etc.</u></b>)or g(<b><u>g1,g2,g3,g4,etc.</u></b>))end
Replace <b><u>c1,c2,c3,etc.</u></b> with the indices of your companions, <b><u>f1,f2,f3,f4,etc.</u></b> with the indices of your flying mounts and <b><u>g1,g2,g3,g4,etc.</u></b> with the indices of your ground mounts.
==Weapon Macros==
===Main/Off Hand Weapon Swap Macro===
Make an equipment set called <b><u>WeaponAMain</u></b> with <b><u>WeaponA</u></b> in your main hand, <b><u>WeaponB</u></b> in your off hand and all other slots ignored.
<br/>Make another set called <b><u>WeaponBMain</u></b> with <b><u>WeaponB</u></b> in your main hand, <b><u>WeaponA</u></b> in your off hand and all other slots ignored.
/run UseEquipmentSet(GetItemInfo(GetInventoryItemID("player",16))=="<b><u>WeaponA</u></b>")and"<b><u>WeaponBMain</u></b>"or"<b><u>WeaponAMain</u></b>")
<br/>
Replace the bold/underlined parts with the appropriate names.
===Shaman Weapon Imbue Macro===
#showtooltip
/use [@none]Imbue Name
/use 17
/click StaticPopup1Button1
This will enchant your off hand weapon, replace 17 with 16 for the main hand.<br/><br/>
<tt>@none</tt> is the key to this macro, it tells a spell to cast at "no target", bringing up a blue-outline hand cursor that you can then click on something with to cast the spell at it.
<br/><tt>/use 17</tt> then acts as if you clicked on your off hand weapon, telling the macro to cast the imbue on it.
<br/><tt>/click StaticPopup1Button1</tt> then clicks the OK button on the confirmation popup.
<br/><br/>
You can use modifiers or mouse buttons if you want to have multiple imbues in the same macro.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment