Holy Pally Macro Help! menu

Shout-Out

User Tag List

Results 1 to 1 of 1
  1. #1
    Sikas's Avatar Active Member
    Reputation
    69
    Join Date
    Feb 2007
    Posts
    386
    Thanks G/R
    6/2
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Holy Pally Macro Help!

    Hey,

    So I borrowed a previous macro from Viral Fly-By (which I wish was still around, but ceased to exist after the banwave) who created a healing pally macro. It's outdated and worked well for Wrath. But since it's Cata now, the macro doesn't work unless it's been updated.


    So I'm TRYING to update it, but it doesn't work at all. I don't know why. I understand SOME of logic, but not all of it.


    Pre 4.0 Holy Pally Macro:

    [spoiler]# Version: 20100106
    /run vFoL=3000; vHS=6000; vHL=8000; vHOPhp=0.2; vHOPmana=18000; vDFavor=0.2; vIllumNum=0.2; vIllumDmg=5000;
    /run vGroup="raid"; vNPS=1; vNPE=GetNumRaidMembers(); if vNPE==0 then vGroup="party"; vNPS=0; vNPE=GetNumPartyMembers() end;
    /run if UnitHealth("player")/UnitHealthMax("player")<0.10 and GetSpellCooldown("Divine Shield")==0 and IsUsableSpell("Divine Shield") then SpellStopCasting() CastSpellByName("Divine Shield") end;
    /run if GetSpellCooldown("Divine Plea")==0 and UnitPower("player")/UnitPowerMax("player")<=0.50 then CastSpellByName("Divine Plea") end;
    /run local f=0; if UnitExists("focus") and UnitInRange("focus")==1 and UnitIsDeadOrGhost("focus")~=1 then for i=1,40 do local d={UnitBuff("focus",i)}; if d[1]=="Beacon of Light" and d[8]=="player" and d[7]-GetTime()>=3 then f=1; break end end if f==0 then RunMacroText("/cast [@focus] Beacon of Light") end end;
    /run local a,n,d=0,0,0; for i=vNPS,vNPE do local tt="player"; if i>0 then tt=vGroup..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then a=UnitHealthMax(tt)-UnitHealth(tt) end; if a>1000 then n=n+1 d=d+a end end; if n>(vNPE*vIllumNum) and d/n>vIllumDmg and GetSpellCooldown("Divine Illumination")==0 then CastSpellByName("Divine Illumination") end;
    /run local e,n,h,hm=UnitExists,UnitName,UnitHealth,UnitHealthMax; local f,w,fh,m="focus","focus",0,0; if e(f) then fh=hm(f)-h(f) end; for i=vNPS,vNPE do local a,tt=0,"player"; if i>0 then tt=vGroup..i end; if n(tt)~=n(f) then a=hm(tt)-h(tt) end; if a>m and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then m=a w=tt end end; if fh>2*m then m=fh end; if m>0 then vHealTarget=w vHealDmg=m else vHealTarget=nil vHealDmg=0 end
    /run local w,m=vHealTarget,vHealDmg; if w~=nil then local n,cd,ud,sp=UnitName,GetSpellCooldown,UnitDebuff,GetUnitSpeed("player"); local p=UnitHealth(w)/UnitHealthMax(w); local s=nil; if n(w)~=n("player") and p<vHOPhp and IsSpellInRange("Hand of Protection",w)==1 and UnitPowerMax(w)>vHOPmana and cd("Hand of Protection")==0 and UnitAffectingCombat(w)==1 and not ud(w,"Forbearance") and not ud(w,"Ice Block") then s="Hand of Protection" else if p<vDFavor and cd("Divine Favor")==0 then CastSpellByName("Divine Favor") end if cd("Holy Shock")==0 and (m>=vHS or (sp>0 and m>=vFoL)) then s="Holy Shock" elseif sp>0 and m>=vFoL and UnitBuff("player","Infusion of Light") then s="Flash of Light" elseif sp==0 then if m>=vHL then s="Holy Light" elseif m>=vFoL then s="Flash of Light" end end end; if s~=nil then RunMacroText("/cast [@"..w.."] "..s) end end
    /run if UnitExists("focustarget") and UnitInRange("focus")==1 and UnitAffectingCombat("focus")==1 and GetSpellCooldown("Judgement of Light") == 0 then RunMacroText("/cast [@focustarget] Judgement of Light") end;
    /run local f=0; if UnitExists("focus") and UnitInRange("focus")==1 and UnitIsDeadOrGhost("focus")~=1 then for i=1,40 do local d={UnitBuff("focus",i)}; if d[1]=="Sacred Shield" and d[8]=="player" and d[7]-GetTime()>=3 then f=1; break end end if f==0 then RunMacroText("/cast [@focus] Sacred Shield") end end;
    /run local w=nil; local m=0; for i=vNPS,vNPE do local tt="player"; if i>0 then tt=vGroup..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then for j=1,40 do local d={UnitDebuff(tt,j)}; if (d[5]=="Magic" or d[5]=="Poison" or d[5]=="Disease") and d[7]>m then w=tt; m=d[7] end end end end; if w~=nil then RunMacroText("/cast [@"..w.."] Cleanse") end;
    /run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");[/spoiler]

    The Overall Logic:

    1. If you are under 10% health and Divine Shield is available, then stop casting and Divine Shield.
    2. If you are under 50% mana and Divine Plea is available, then Divine Plea.
    3. If you have a focus in range and your Beacon of Light is either not present or has 3 seconds or less remaining, then Beacon of Light your focus.
    4. If at least 20% of the party/raid have taken at least 1000 damage and the average damage per person is over 5000, use Divine Illumination if available.
    5. If a party/raid member needs healing, heal them.
    6. If your focus is in range and has a target and Judgement of Light is ready, then Judge your focus's target.
    7. If your you have a focus in range and Sacred Shield is either not present or has 3 seconds or less remaining, then Sacred Shield your focus.
    8. If a party/raid member has a debuff, Cleanse.

    The Healing Logic:

    1. If the target is below 20% hp, within 30yds, is a caster (max power > 18K), and doesn't have Forbearance, then Hand of Protection.
    2. If the target is under 10% hp and Divine Favor is available, then Divine Favor for the heal.
    3. If Holy Shock is ready and the target needs 6000 or more healing, then Holy Shock.
    4. If target needs 8000 or more healing, then Holy Light.
    5. If target needs 3000 or more healing, then Flash of Light.
    6. If no target needs at least 3000 healing, do nothing.

    Customization:

    There are 8 variables at the beginning of the 1st line. These control which spell is chosen for which situation and should be adjusted for how big your heals hit.

    1. vFoL: The minimum damage taken to be healed by a Flash of Light (3000 in code above).
    2. vHS: The minimum damage taken to be healed by Holy Shock (6000 in code above).
    3. vHL: The minimum damage taken to be healed by Holy Light (8000 in code above).
    4. vHOPhp: The percentage health at which Hand of Protection will be used on a caster (0.20 for 20% in code above).
    5. vHOPmana: The amount of "max power" a target must have to be considered for Hand of Protection (18000 in code above).
    6. vDFavor: The percentage health at which Divine Favor will be used for the next heal (0.1 for 10% in code above).
    7. vIllumNum: The percentage of party/raid members that must have taken damage to trigger use of Divine Illumination (0.2 for 20% in code above).
    8. vIllumDmg: The average per-person damage taken that must exist to trigger use of Divine Illumination (5000 in code above).

    So with regards to editing the macro, I've made adjustments. Changed the name of some variables, removed others and what not. Here's what I have so far. :/

    Post 4.0 Holy Pally Macro:

    [spoiler]#showtooltip Seal of Insight
    /run vDL=18000; vHS=5000; vHL=7000; vWoG=14000; vDPhp=0.2; vGuard=0.2; vDFNum=0.2; vDFDmg=50000; vHR=20000;
    /run vGroup="raid"; vNPS=1; vNPE=GetNumRaidMembers(); if vNPE==0 then vGroup="party"; vNPS=0; vNPE=GetNumPartyMembers() end;
    /run if GetSpellCooldown("Divine Plea")==0 and UnitPower("player")/UnitPowerMax("player")<=0.75 then CastSpellByName("Divine Plea") end;
    /run local f=0; if UnitExists("focus") and UnitInRange("focus")==1 and UnitIsDeadOrGhost("focus")~=1 then for i=1,40 do local d={UnitBuff("focus",i)}; if d[1]=="Beacon of Light" and d[8]=="player" and d[7]-GetTime()>=3 then f=1; break end end if f==0 then RunMacroText("/cast [@focus] Beacon of Light") end end;
    /run local b,c,d=0,0,0; for i=vNPS,vNPE do local tt="player"; if i>0 then tt=vGroup..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then b=UnitHealthMax(tt)-UnitHealth(tt) end; if b>10000 then c=c+1 d=d+b end end; if c>(vNPE*vDFNum) and d/b>vDFDmg and GetSpellCooldown("Divine Favor")==0 then CastSpellByName("Divine Favor") end;
    /run local a,n,d=0,0,0; for i=vNPS,vNPE do local tt="player"; if i>0 then tt=vGroup..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then a=UnitHealthMax(tt)-UnitHealth(tt) end; if a>20000 then n=n+1 d=d+a end end; if n>(vNPE*vDFNum) and d/n>vDFDmg and GetSpellCooldown("Holy Radiance")==0 then CastSpellByName("Holy Radiance") end;
    /run local e,n,h,hm=UnitExists,UnitName,UnitHealth,UnitHealthMax; local f,w,fh,m="focus","focus",0,0; if e(f) then fh=hm(f)-h(f) end; for i=vNPS,vNPE do local a,tt=0,"player"; if i>0 then tt=vGroup..i end; if n(tt)~=n(f) then a=hm(tt)-h(tt) end; if a>m and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 then m=a w=tt end end; if fh>2*m then m=fh end; if m>0 then vHealTarget=w vHealDmg=m else vHealTarget=nil vHealDmg=0 end;
    /run local w,m=vHealTarget,vHealDmg; if w~=nil then local n,cd,ud,sp=UnitName,GetSpellCooldown,UnitDebuff,GetUnitSpeed("player"); local p=UnitHealth(w)/UnitHealthMax(w); local s=nil; if n(w)~=n("player") and p<vDPhp and IsSpellInRange("Divine Protection",w)==1 and cd("Divine Protection")==0 and UnitAffectingCombat(w)==1 and not ud(w,"Ice Block") and not UnitBuff(w,"Divine Shield") then s="Divine Protection" else if p<vDFavor and cd("Divine Favor")==0 then CastSpellByName("Divine Favor") end if cd("Holy Shock")==0 and (m>=vHS or (sp>=0 and m<=vHL)) then s="Holy Shock" elseif sp>0 and m>=vWoG and UnitPower("player",9)>2 then s="Word of Glory" elseif sp>=0 and m>=vHL then s="Holy Light" elseif sp>=0 then if m>=vDL then s="Divine Light" end end end; if s~=nil then RunMacroText("/cast [@"..w.."] "..s) end end end;
    /run if UnitExists("focustarget") and UnitInRange("focus")==1 and UnitAffectingCombat("focus")==1 and GetSpellCooldown("Judgement") == 0 then RunMacroText("/cast [@focustarget] Judgement") end;
    /run StaticPopup_Hide("MACRO_ACTION_FORBIDDEN");
    /script CombatLogClearEntries();
    /run UIErrorsFrame:Clear();
    [/spoiler]

    I realize to understand the code and macros above are difficult, so I can try explaining how the healing works as Paladins.

    Word of Glory uses Holy Power, and you'd want to use it at 3 Holy Power which is the maximum.
    Divine Favor is now a 20% crit and haste spell instead of an instant cast spell.
    Divine Protection is similar to Hand of Protection, but it has a 40 second cooldown and reduces incoming damage by 20%.
    Beacon of Light has to be changed a bit, as it only heals the focus target for 50% of the healing done.
    Judgement is well... Judgement. Cast on Focus' target.
    Holy Radiance is an AoE heal that uses the caster as the center, and radiates around as the caster moves.
    Raid or Group is to check how many people there are I presume.
    There are also variables above to check the range of what heals are needed.

    /run vDL=22000; vHS=5000; vHL=7000; vWoG=14000; vDPhp=0.2; vGuard=0.2; vDFNum=0.2; vDFDmg=50000; vHR=20000;

    DL = Divine Light. Heals if target has received 18000 damage or more.
    HS = Holy Shock. Heals if target has received 5000 damage or more, and the caster is moving.
    HL = Holy Light. Heals if the target has received 7000 damage or more.
    WoG = Word of Glory. Heals if the target has received 22000 or more, and the caster is moving.
    DP = Divine Protection. HP check of the target. If it falls below 20% health, DP will be cast.
    Guard = Guardian of Ancient Kings. Will cast if raid receives a certain amount of damage.
    HR = Holy Radiance. Will cast if raid receives a certain amount of damage.

    If anyone wants to help, it'd be fantastic. I always wanted to heal again, but with "help" such as this. To code a healing macro from scratch would blow my mind, and mostly everyone else's.
    So I hope someone will assist, and you all will benefit.

    PS: I'm willing to exchange my 100% working Ret Pally macro for assistance in this.
    Last edited by Sikas; 01-15-2011 at 12:18 PM.

    Holy Pally Macro Help!

Similar Threads

  1. [Help] Holy Shock Macro question
    By Naravus in forum WoW UI, Macros and Talent Specs
    Replies: 5
    Last Post: 11-06-2011, 02:28 PM
  2. Pally Macros
    By leoj in forum World of Warcraft General
    Replies: 8
    Last Post: 02-21-2007, 06:12 AM
  3. Revise Charge in Combat Macro [HELP]
    By abenobashi in forum World of Warcraft General
    Replies: 1
    Last Post: 02-17-2007, 08:33 PM
  4. macro help
    By nozzie in forum World of Warcraft General
    Replies: 0
    Last Post: 12-19-2006, 12:42 AM
  5. Rez Macro help
    By Ysmena in forum World of Warcraft General
    Replies: 0
    Last Post: 08-01-2006, 10:43 AM
All times are GMT -5. The time now is 11:50 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search