Fandom

WoWWiki

Complex heal macro notes

104,634pages on
this wiki
Add New Page
Talk1 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

These are the notes I took while building & testing the Complex heal macro. It's a little messy and I wouldn't use it to get a copy of the macro, but if you are learning to create WOW macros this might be useful. As you follow down the list you'll see how I move different commands around and try to find the right command or order to get something done. It is often useful to break a task down into smaller parts and try to solve them first as I do here with the friendly and nil target parts. Hope this helps and if you have any comments feel free to use the Talk:Complex heal macro notes page...

/UnitMana("unit")

/run t="target" p="player" b="Innervate" if (UnitIsFriend(p,t) and UnitManaMax(t)>200) then for i=1,16 do if UnitBuff(t,i) then if not string.find(UnitBuff(t,i), b) then CastSpellByName(b) end end end else ChatFrame1:AddMessage("Did not "..b.."!") end


Original script

/script if (UnitName("target") ~=nil and UnitIsFriend("player","target")) then CastSpellByName("Healing Touch(Rank 9)") SendChatMessage("Healing %T", "Party") else TargetUnit("player") CastSpellByName("Healing Touch(Rank 9)") TargetLastEnemy(); end


First version - reduction - no mana check

/run t="target" p="player" h="Healing Touch" if (UnitName(t) ~=nil and UnitIsFriend(p,t)) then CastSpellByName(h) SendChatMessage("Healing %T", "Party") else TargetUnit(p) CastSpellByName(h) TargetLastEnemy(); end


second version - mana check

/run t="target" p="player" h="Healing Touch" m=200 if UnitMana(p) > m then if (UnitName(t) ~=nil and UnitIsFriend(p,t)) then CastSpellByName(h) SendChatMessage("Healing %T", "Party") else TargetUnit(p) CastSpellByName(h) TargetLastEnemy() return else SendChatMessage("/oom"); end


third version - (2nd too long removing oom emote)

/run t="target" p="player" h="Healing Touch" m=546 if UnitMana(p) > m then if (UnitName(t) ~=nil and UnitIsFriend(p,t)) then CastSpellByName(h) SendChatMessage("Healing %T", "Party") else TargetUnit(p) CastSpellByName(h) TargetLastEnemy() return; end end


fourth version

/run t="target" p="player" h="Healing Touch" m="546" if UnitMana(p) > m then if (UnitName(t) ~=nil and UnitIsFriend(p,t)) then CastSpellByName(h) s="Healing %T" else TargetUnit(p) CastSpellByName(h) TargetLastEnemy() return; else s="/oom" end SendChatMessage(s, "Party") end


fifth version

/run t="target" p="player" h="Healing Touch" s="oom" m=546 if UnitMana(p) > m then if (UnitName(t) = nil or UnitIsEnemy(p,t)) then TargetUnit(p) return; CastSpellByName(h) s="Heal %T" TargetLastEnemy() end SendChatMessage(s, "Party") end


test friendly

/run t="target" p="player" if ((UnitName(t)=nil) or UnitIsEnemy(p,t)) then TargetUnit(p) SendChatMessage(p, "Party") end
/run t="target" p="player" if (UnitName(t) = nil or UnitIsEnemy(p,t)) then TargetUnit(p) SendChatMessage(p, "Party") end
/run t="target" p="player" if UnitIsEnemy(p,t) then TargetUnit(p) SendChatMessage(t, "Whisper", "Common", UnitName(p)) end

working half of friendly

/run t="target" p="player" if UnitIsEnemy(p,t) then TargetUnit(p) end SendChatMessage(UnitName(t), "Whisper", "Common", UnitName(p))

test other half of friendly

/run t="target" p="player" if (UnitName(t)=nil) then TargetUnit(p) end SendChatMessage(UnitName(t), "Whisper", "Common", UnitName(p))

test other half of friendly v2

/run t="target" p="player" if not (UnitName(t)) then TargetUnit(p) t="player" end SendChatMessage(UnitName(t), "Whisper", "Common", UnitName(p))

test - doesn't work - lua treats all values as non nil (even 0)

/run t="target" p="player" if ((UnitName(t) or UnitIsEnemy(p,t)) then TargetUnit(p) end SendChatMessage(UnitName(t), "Whisper", "Common", UnitName(p))

It's having a problem with sending the message because the target name is nil

/run t="target" p="player" if ((UnitName(t) or UnitIsEnemy(p,t)) then TargetUnit(p) t="player" end SendChatMessage(UnitName(t), "Whisper", "Common", UnitName(p))


Working second half of friendly

/run t="target" p="player" if not (UnitName(t)) then TargetUnit(p) t="player" end SendChatMessage(UnitName(t), "Whisper", "Common", UnitName(p))

Merged friendly

/run t="target" p="player" if not UnitName(t) or UnitIsEnemy(p,t) then TargetUnit(p) t="player" end SendChatMessage(UnitName(t), "Whisper", "Common", UnitName(p))


sixth version - IT WORKS!!!!

/run t="target" p="player" h="Healing Touch" s="oom" m=546 if UnitMana(p) > m then if not UnitName(t) or UnitIsEnemy(p,t) then TargetUnit(p) t="player" end CastSpellByName(h) s="Heal %T" TargetLastEnemy() end SendChatMessage(s, "Party")


Seventh version -removed spell name variable to add better text

/run t="target" p="player" s="oom" m=546 if UnitMana(p) > m then if not UnitName(t) or UnitIsEnemy(p,t) then TargetUnit(p) t="player" end CastSpellByName("Healing Touch") s="Healing %T" TargetLastEnemy() end SendChatMessage(s, "Party")


eighth version - trying to get emote

/run t="target" p="player" s="oom" x="Emote" m=5546 if UnitMana(p) > m then if not UnitName(t) or UnitIsEnemy(p,t) then TargetUnit(p) t="player" end CastSpellByName("Healing Touch") x="Party" s="Healing %T" TargetLastEnemy() end SendChatMessage(s, x)
/run t="target" p="player" s="oom" c="Emote" m=5546 if UnitMana(p) > m then if not UnitName(t) or UnitIsEnemy(p,t) then TargetUnit(p) t="player" end CastSpellByName("Healing Touch") c="Party" s="Healing %T" TargetLastEnemy() end SendChatMessage(c, "Party")
/run t="target" p="player" m=3546 if UnitMana(p) > m then if not UnitName(t) or UnitIsEnemy(p,t) then TargetUnit(p) t="player" end CastSpellByName("Healing Touch") x="Party" s="Healing %T" TargetLastEnemy() else s="oom" x="Emote" end SendChatMessage(s, x)
/run t="target" p="player" m=546 if UnitMana(p) > m then if not UnitName(t) or UnitIsEnemy(p,t) then TargetUnit(p) t="player" end CastSpellByName("Healing Touch") TargetLastEnemy() SendChatMessage("Healing %T","Party") else DoEmote("oom") end 

test mana

/run p="player" SendChatMessage(UnitMana(p), "Whisper", "Common", UnitName(p));


test mana

/run p="player" m=2000 if UnitMana(p) > m then SendChatMessage(UnitMana(p), "Whisper", "Common", UnitName(p)) else SendChatMessage("oom", "Whisper", "Common", UnitName(p)); end


test mana

/run p="player" m=2000 s="oom" if UnitMana(p) > m then s=UnitMana(p); end SendChatMessage(s, "Whisper", "Common", UnitName(p))

Also on Fandom

Random Wiki