• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Forgotten Halls Necro Macro

ss44

Active member
Joined
Sep 13, 2005
RedCents
31¢
UPDATED CODE 12-15-05:
Added sub for if you are getting the shit kicked out of you. Fixed the buff problem, I think. PLEASE someone try this out lol. I dont have much time anyone to test it on my own, but a couple days ago it worked fine for me.

Please leave comments at the bottom, thanks.

Necro Mac.
Rich (BB code):
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~FHNecro.mac~~~~~~~~~~~~~~~~  ~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~Written by SS44~~~~~~~~~~~~~~~~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~For RedGuides~~~~~~~~~~~~~~~~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|Spells:
|1:Magic DOT
|2:Fire Dot
|3:Fire Dot
|4:FD
|5:Nuke1
|6:Lich / Rune / Shielding
|7:Pet Haste
|8:Dis Dot 1  / Twitch 1
|9:Dis Dot 2  / Twitch 2
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
#turbo
#include spell_routines.inc
#chat group 
#chat tell
#event Dzadd "PERSONYOUWANTTOADD tells you, 'CODEWORD'"
#event Invite "#*#invites you to join#*#"
#event Lich_Off "The cold hands release your soul, for now.#*#"
#event Guard_Off "The shadow fades away.#*#"
#event Pet_Haste "#*#Your pet's Glyph of Darkness spell has worn off#*#"
#event Zoned "#*#You have entered Guild Lobby#*#"
#event Dzquit "#*#You have entered Nedaria's Landing#*#" 
#event Rune_Off "You can feel pain again.#*#"
#event FD_fail "#*#has fallen to the ground.#*#"
#event PoK "You have entered Guild Lobby."
#Event Twitch_On "#*#TwitchOn#*#" 
#Event Twitch_Off "#*#TwitchOff#*#" 
#Event Twitch_Off "#*#Stop Twitching#*#"
#event Being_Hit "#*#your magical skin ABSORBES the blow#*#"
#event Being_Hit "#*#bites YOU for#*#"
#event Being_Hit "#*#bites YOU for#*#"
#event Being_Hit "#*#kicks YOU for#*#"
#event Being_Hit "#*#bashes YOU for#*#"
#event Dot1_Off "#*#Your Dark Nightmare spell has worn off of#*#"
#event Dot2_Off "#*#Your Pyre of Mori spell has worn off of#*#"
#event Dot3_Off "#*#Your Funeral Pyre of Kelador spell has worn off of#*#"
#event Dot1_Resist "#*#resisted your Dark Nightmare spell.#*#"
#event Dot2_Resist "#*#resisted your Pyre of Mori spell.#*#"
#event Dot3_Resist "#*#resisted your Funeral Pyre of Kelador spell.#*#"
#Event Mob_Died "#*#been slain by#*#"
#Event Mob_Died "#*#You have slain#*#"
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|-- Destroys Copper if you have more than the given amount! 0=disable
#define DESTROY_COPPER_IF_ABOVE 1
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Main
|~~~~~~~~~~~~~~~~~~~~~~~~~Dots~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
/declare Dot1 outer "Dark Nightmare" 
/declare Dot2 outer "Pyre of Mori" 
/declare Dot3 outer "Funeral Pyre of Kelador"
/declare Nuke1 outer "Acikin"
|~~~~~~~~~~~~~~~~~~~~~~~~~Buffs~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~
/declare Rune outer "Dull Pain"
/declare Guard outer "Shadow Guard"
/declare Lich outer "Seduction of Saryrn"
/declare Twitch1 string outer "Sedulous Subversion" 
/declare Twitch2 string outer "Covetous Subversion"
/declare FD string outer "Death Peace"
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~~Pet Spells~~~~~~~~~~~~~~~~~~~~~~~~~~
/declare Pet outer "Lost Soul"
/declare Pethaste outer "Glyph of Darkness" 
|~~~~~~~~~~~~~~~~~~~~~~~~Variables~~~~~~~~~~~~~~~~  ~~~~~~~~~~
 /declare diditresist int global
 /varset diditresist 0
 /declare Twitching int global
 /varset Twitching 0
 /declare LootAllItems int outer 1 
 /declare LootSlot int outer 0 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|We are waiting for the hotkey to start the macro
	:waitforit
	/doevents
	/doevents
	/goto :waitforit
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Indz
	:begin  
	/delay 1s
	/warp loc -599.12 212.05 6.76
	/delay 1s
	/call GetTarget
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Twitch_On 
	/rt
	If (${Twisting}==0) {
	/if (!${Target.ID}) { 
	/echo is not in zone for me to Twitch! 
	/r Im not even in the same zone as you! 
	/return 
} 
	/delay 2 
	/if (${Target.Distance}<100) {
	/rt 
	:Twitch_Loop 
	/doevents 
	If (${Twisting}==0) {
	/call cast ${Twitch1} gem8 
	/call cast ${Twitch2} gem9 
	/delay 5 
	/goto :Twitch_Loop
	}
	/goto :end
}
	}else{
	/t ${ChatSender} Your oor sry.           
	} 
}
	:end
	/varset Twitching 0
   	/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Twitch_Off
	/varset Twitching 1
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub GetTarget   
	:loopstart 
	/delay 1s
	/call GM_Check  
	/if (${Me.PctMana}<=20) /call Med
	/if (${Me.PctHPs}<=20) /call Succor
	/if (${Me.PctHPs}<=50) /g Heal Me
	/if (${Me.PctHPs}<=40) /potionbelt activate 2
	/if (${Target.Level}>67) /tar npc next 
	/if (${Target.Distance}>220) /keypress esc
	/if (${Target.ID}==FALSE) /tar NPC radius 220 rat
	/Pet Attack
	/Call Attack
	/doevents
	/delay 10  
	/goto :loopstart  
/return  
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Med
	/echo Need mana, medding
	/warp loc -599.12 212.05 6.76
	/if (${Me.SpellReady[${Lich}]}) { 
	/stand on
	/call cast ${Lich} gem1
	/delay 3s
}
	/sit on
	:MedLoop
	/if (${Me.PctHPs}<=50) /g Heal Me
	/if (${Me.PctMana}>=50) /return 
	/goto :MedLoop
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Rune_Off
	/if (${Me.SpellReady[${Rune}]}) { 
	/stand on
	/call cast ${Rune} gem8
	/delay 4s
}
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Succor
	/warp loc 245 -33 0 
	/stand on
	/delay 10s
	/fade
	/delay 60s        
	/call Regen
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Regen
	/sit on
	:regenloop
	/potionbelt activate 1
	/if (${Me.PctHPs} == 100) /return
	/goto :regenloop
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub GM_Check  
	/if (${Spawn[gm].ID}) {  
	/echo Gm detected  
	/beep 
	/beep 
	/beep  
	/q 
	/endmac 
 	/unload 
	/q  
}  
/return  
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|This next bit removes you from the expdition if you still have it after 
|  you zone out
|Targets Eldros Danmor warps to him gets the adventure window then it 
| warps back to Nideno and says forgotten halls allowing you to zone in.
|You then warp closer to the rock look at point behind the rock and 
| press use or u, also you click with the mouse so you mouse needs to be
| in the center of the screen. 
Sub Dzquit 
	/stand on
	/doevents
	/call GM_Check
	/disband
	/dzremove PLAYERNAME
	/dzremove PLAYERNAME
	/delay 2s
	/target Eldros Danmor
	/warp target
	/delay 2s
	/say interested in visiting
	/delay 3s
	/target Nideno Eliagy
	/warp target
	/delay 2s
	/say Forgotten halls
	/delay 2s
	/doevents
	/warp loc 1544 -665 94
	/face loc 1540, -675
	/look 0
	/doortarget
	/delay 10s
	/keypress u
	/keypress u 
	/delay 1s
	/target clear
	/call Destroy_Silver
	/call Indz
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub PoK 
	/echo sorry i don't know how or why but you died.
	/delay 45s
	/sit on
	/camp desktop 
	/q
	/endmacro 
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Nuke1
	/if (${Me.SpellReady[${Nuke1}]}) { 
	/call cast ${Nuke1} gem4
}
	/if (${Me.SpellReady[${FD}]}) {
	/call cast ${FD} Gem4
}	
	/delay 5s
	/stand on
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
|LOOT SUB

Sub Mob_Died 
	/doevents 
	/stand on
	/call GMcheck
	/keypress forward
	/delay 1s
	/varset diditresist 0
	/squelch /declare LootSlot    int inner  0 
	/declare LootCheck   int inner  0 
	/declare LootTotal   int inner  0 
	/target npc corpse radius 200 
	:MovementLoop 
	/face fast nolook
	/if (${Int[${Target.Distance}]}>13) /keypress forward hold 
 	/if (${Int[${Target.Distance}]}<13&&${Int[${Target.Distance}]}>11) /keypress forward  
	/if (${Int[${Target.Distance}]}<9) /keypress back 
	/if (${Int[${Target.Distance}]}>13) /goto :MovementLoop 
	/keypress forward 
     	/keypress back 
     	/delay 5 
     	/loot 
     	/delay 5 
     	/if (!${Corpse.Items}) { 
	/echo NO LOOT!
     	/notify LootWnd DoneButton leftmouseup 
     	/call Destroy_Copper
     	/delay 1s 
     	/call Check_Anchor  
     	/return 
} 
	/varset LootTotal ${Corpse.Items} 
 	/for LootSlot 1 to ${LootTotal} 
 	/itemnotify loot${LootSlot} leftmouseup 
	 /delay 5 
 	/if (${LootAllItems}) { 
 	/echo Keeping a ${Cursor.Name}... WOOT! 
 	/autoinventory 
 	/autoinventory 
 	/delay 5 
 	} else { 
 	/for LootCheck 1 to ${ItemsToLoot.Size} 
 	/if (${Cursor.Name.Find[${ItemsToLoot[${LootCheck}]}]}) { 
 	/echo Keeping a ${Cursor.Name}... WOOT! 
 	/autoinventory 
 	/autoinventory 
 	/delay 5 
 	} 
 	/next LootCheck 
 	} 
 	/if (${Cursor.ID}) { 
 	/echo Destroying a ${Cursor.Name}... 
 	/destroy 
 	/destroy 
 	/delay 5 
 	} 
 	/next LootSlot 
 	/delay 5 
 	/notify LootWnd DoneButton leftmouseup 
 	/delay 2 
 	/call Check_Anchor 
	/call Buffs
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Check_Anchor    
 	/if (${Math.Distance[${AnchorY},${AnchorX}]}>12) /call Move_To_Anchor    
/return 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Move_To_Anchor 
	/call Indz
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Destroy_Copper
	/squelch /windowstate InventoryWindow open
	/shift /notify InventoryWindow IW_Money3 leftmouseup
	/delay 1s ${Cursor.ID}>0
	/destroy
	/cleanup
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Pet_Haste 
	/if (${Me.Pet.ID}) { 
	/if (!${Me.PetBuff[Glyph of Darkness]} { 
	/stand on 
	/call PBuffShieldHaste 
	/assist
} 
	} else { 
	/echo You dont have a pet!
	/call cast ${Pet} Gem5 
} 
	/echo Shrinking pet twice!!! 
	/call cast ${Shrink} Gem5
	/delay 10 
	/call cast ${Shrink} Gem5
	/pet taunt on 
/return 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub PBuffShieldHaste 
	:DoH
	/if (${Me.Pet.ID}) { 
	/stand on 
	/delay 2s
	/call Cast ${Pethaste} gem7 15s  
} 
	} else { 
	/echo You dont have a pet!
	/call cast ${Pet} Gem5
	/goto :DoH 
} 
	/echo Shrinking pet twice!!! 
	/call cast ${Shrink} Gem5
	/delay 10 
	/call cast ${Shrink} Gem5
	/pet taunt on 
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Buffs
	/if (!${Me.Buff[Seduction of Saryrn].ID}) {  
	/stand on
	/call cast ${Lich} gem6     
	/delay 5s
} 
	/if (!${Me.Buff[Force Shield].ID}) { 
	/call cast ${Rune} gem6
	/delay 5s
} 
	/if (!${Me.Buff[Shadow Guard].ID}) { 
	/call cast ${Shielding} gem6
	/delay 5s
}
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot1_Off
	/call Dot1
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot2_Off
	/call Dot2
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot3_Off
	/call Dot3
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot1
	:Main_DoT_Loop
	/if (${Me.SpellReady[${Dot1}]}) { 
	/stand on
	/delay 1s
	/call cast ${Dot1} gem1 
	/doevents
}
	/if (${diditresist}==1)  /goto :Main_Dot_Loop  
	/varset diditresist 0
	/echo ${Dot1} is going, on to next spell! 
	/call cast ${FD} Gem4
	/delay 7s
	/stand on
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot2
	:Main_DoT_Loop
	/if (${Me.SpellReady[${Dot2}]}) { 
	/stand on 
	/delay 1s
	/call cast ${Dot2} gem1 
	/doevents
}
	/if (${diditresist}==1)  /goto :Main_Dot_Loop 
	/varset diditresist 0
	/echo ${Dot2} is going, on to next spell! 
	/call cast ${FD} Gem4
	/delay 7s
	/stand on
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot3
	:Main_DoT_Loop
	/if (${Me.SpellReady[${Dot3}]}) {  
	/stand on
	/delay 1s
	/call cast ${Dot3} gem1 
	/doevents
}
	/if (${diditresist}==1)  /goto :Main_Dot_Loop 
	/varset diditresist 0 
	/echo ${Dot3} is going, on to next spell! 
	/call cast ${FD} Gem4
	/delay 7s
	/stand on
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Attack
	/delay 15
	:attackstart
	/if (${Target.PctHPs}<=97 && ${Target.PctHPs}>=94) /call Dot1
	/if (${Target.PctHPs}<=75 && ${Target.PctHPs}>=70) /call Dot2
	/if (${Target.PctHPs}<=55 && ${Target.PctHPs}>=50) /call Dot3
	/if (${Target.PctHPs}<=35 && ${Target.PctHPs}>=30) /call Dot1
	/if (${Target.PctHPs}<=25 && ${Target.PctHPs}>=10) /call Nuke1
	/goto :attackstart
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot1_Resist
	/call Dot1
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot2_Resist
	/call Dot2
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Dot3_Resist
	/call Dot3
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub FD_Fail
	/stand on
	/if (${Me.SpellReady[${FD}]}) {
	/call cast ${FD} Gem4
}	
	/doevents
	/delay 5s
	/stand on
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Being_Hit
	/call FD_Fail
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Lich_Off
	/stand on
	/if (!${Me.Buff[Seduction of Saryrn].ID}) {  
	/call cast ${Lich} gem6     
}
	/delay 5s
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~
Sub Guard_Off
	/stand on
	/if (!${Me.Buff[Shadow Guard].ID}) {  
	/call cast ${Guard} gem6     
}
	/delay 5s
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~

Cleric Macro.
Rich (BB code):
#Event GotHit       "#1# #*# YOU for#*#" 
#Event MobDead      "#*#You have slain#*#" 
#Event MobDead      "#*#has been slain by#*#" 
#Event DamageShield "#1# was burned#*#" 
#Event DamageShield "#1# was pierced by#*#" 
#Event DamageShield "#1# was tormented#*#" 
#Event Zoned        "#*#You have entered#*#" 
#Event ImDead       "You have been slain by#*#" 
#Chat  Chat 
#Chat  Tell 
#Chat  Group 

#include spell_routines.inc 
#include wait4rez.inc 
#include buffbeg.inc 
|#include irc.inc 

Sub Main 

|------------READ THIS SECTION AND EDIT IF NEEDED-----------| 

|   /declare MasterList string outer "IRCMASTER" 
|   /declare MasterOnly outer TRUE 

|# Calling IRC Declares and joining channel... 
|   /call IRCDeclares 

|   /declare mychannel            string outer healsl:sl 
   /declare DEBUG                       outer FALSE 
   /declare DEBUG2                      outer FALSE 
   /declare Verbose                     outer FALSE 
   /declare MoKed                       outer FALSE 
   /declare autohealmode         int    outer 3 
   /declare lootleft             int    outer 0 
   /declare healspellrange       int    outer 100 
   /declare patchhealrange       int    outer 200 
   /declare hotspellrange        int    outer 100 
   /declare usegroupheal         int    outer 1 
   /declare grouphealrange       int    outer 70 
   /declare usedivarb            int    outer 1 
   /declare healafterdivarb      int    outer 0 
   /declare announce             int    outer 1 
   /declare autosit              int    outer 1 
   /declare distancetosit        int    outer 40 
   /declare autointerrupt        int    outer 1 
   /declare onlyhealfd           int    outer 1 
   /declare interrupt2healself   int    outer 1 
   /declare interrupt2healselfhp int    outer 50 
   /declare noInvis              int    outer 1 
   /declare defaultstophealpoint int    outer 80 
   /declare healpetmode          int    outer 0 
   /declare pethealpoint         int    outer 65 
   /declare manatohealpet        int    outer 25 
   /declare pethealspell         string outer Complete Healing 
   /declare pethealspellrange    int    outer 100 
   /declare followid             int    outer 
   /declare meleeClasses         string outer "Warrior/Shadow Knight/Paladin" 
   /declare casterClasses        string outer "Cleric/Druid/Enchanter/Wizard/Magician" 
   /declare dpsClasses           string outer "Rogue/Monk/Beastlord/Berserker" 
   /declare canniClasses         string outer "Necromancer/Shaman" 

| Tweak Heals Here - tankhealpoint is for War/Pal/SK other 
| than MT, casterhotpoint and casterpatchpoint refer to 
| wiz/mag/enc/dru, necshmpatchpoint refers to necros and 
| shamans, defaultpatchpoint refers to all other classes.    

   /declare selfhealpoint        int outer 70 
   /declare dacastpoint          int outer 29 
   /declare divarbpoint          int outer 25 
   /declare interrupt2divarb     int outer 12 
   /declare tankhealpoint        int outer 65 
   /declare casterhotpoint       int outer 85 
   /declare casterpatchpoint     int outer 60 
   /declare necshmpatchpoint     int outer 60 
   /declare defaultpatchpoint    int outer 70 

   /declare patchheal            string outer Pious Remedy 
   /declare patchhealgem         int    outer 1 
   /declare healspell            string outer Complete Healing 
   /declare healspellgem         int    outer 2 
   /declare hotspell             string outer Pious Elixir 
   /declare hotspellgem          int    outer 3 
   /declare groupheal            string outer Word of Vivification
   /declare grouphealgem         int    outer 4 
   /declare daspell              string outer Divine Barrier 
   /declare daspellgem           int    outer 5 
   /declare yaulpspell           string outer Yaulp VII 
   /declare yaulpspellgem        int    outer 6 
   /declare mitigationspell      string outer Panoply of Vie 
   /declare mitigationspellgem   int    outer 7 
|   /declare selfbuff             string outer Armor of the Pious 
|   /declare selfbuffgem          int    outer 8 
   /declare grouplonghpbuff      string outer Hand of Conviction 
   /declare grouplonghpbuffgem   int    outer 9 
   /declare nukeone              string outer Reproach 
   /declare nuketwo              string outer Order 
   /declare stunone              string outer Sound of Divinity 
   /declare stuntwo              string outer Shock of Wonder 
   /declare spellhaste           string outer Blessing of Devotion 
   /declare acbuff               string outer Ward of Valiance 
   /declare longhpbuff           string outer Conviction 
   /declare singlesymbuff        string outer Symbol of Balikor 
   /declare groupsymbuff         string outer Balikor's Mark 
   /declare spellhastebuff       string outer Blessing of Devotion 
   /declare rgcspell             string outer Remove Greater Curse 
    
| ############ Self Buff List.    
|   /declare SpellSelfBuff[2] string outer 
|   /varset SpellSelfBuff[1] "${selfbuff}" 
|   /varset SpellSelfBuff[2] "${spellhaste}" 
    
|**---------------------TrickyDA Config---------------------| 
The following are HP buffs cleric will click off, in order, 
to get above 40% HP and avoid low HP aggro. Clr will then 
click off DA and resume duties, beg new buffs, etc. To 
enable, set trickyda to 1, 0 will disable 
|---------------------------------------------------------**| 
   /declare trickyda int outer 1 
   /if (${trickyda}==1) { 
      /declare intcount int outer 0 
      /declare trickybuff[20] string outer 
      /varset trickybuff[1] Virtue 
      /varset trickybuff[2] Hand of Virtue 
      /varset trickybuff[3] Conviction 
      /varset trickybuff[4] Hand of Conviction 
      /varset trickybuff[5] Focus of Soul 
      /varset trickybuff[6] Focus of the Seventh 
      /varset trickybuff[7] Wunshi's Focusing 
      /varset trickybuff[8] Talisman of Wunshi 
      /varset trickybuff[9] Protection of the 9 
      /varset trickybuff[10] Blessing of the Nine 
      /varset trickybuff[11] Steeloak Skin 
      /varset trickybuff[12] Blessing of Steeloak 
      /varset trickybuff[13] Symbol of Kazad 
      /varset trickybuff[14] Kazad`s Mark 
      /varset trickybuff[15] Symbol of Balikor 
      /varset trickybuff[16] Balikor's Mark 
      /varset trickybuff[17] Brell's Stalwart Shield 
      /varset trickybuff[18] Brell's Brawny Bulwark 
      /varset trickybuff[19] Spiritual Vigor 
      /varset trickybuff[20] Spiritual Vitality 
   } 
|-------------------End TrickyDA Config---------------------| 


|------------------------END EDITING------------------------| 

   /declare MovingCamp            outer FALSE 
   /declare Following             outer FALSE 
   /declare StaticCamp            outer FALSE 
   /declare askforbuffs           outer TRUE 
   /declare HomeX          int    outer ${Me.X} 
   /declare HomeY          int    outer ${Me.Y} 
   /declare bbtimer        timer  outer 0 
   /declare sbtimer        timer  outer 0 
   /declare healpct        int    outer 50 
   /declare tanknameid     int    outer 0 
   /declare minorhurt      int    outer 0 
   /declare majorhurt      int    outer 0 
   /declare worsthurtid    int    outer 0 
   /declare worsthp        int    outer 100 
   /declare gmember        int    outer 0 
   /declare worsthurt      string outer NULL 
   /declare worstclass     string outer NULL 
   /declare nohotforua     string outer NoOne 
   /declare nohotforub     string outer NoOne 
   /declare nohotforuc     string outer NoOne 
   /declare nohotforud     string outer NoOne 
   /declare tankname       string outer ${Target} 
   /declare DefaultMT      string outer YOURTANK 
   /declare tankclass      string outer 
   /declare rodwait        int    outer 0 
   /declare pallycount     int    outer 0 
   /declare stophealpoint  int    outer ${defaultstophealpoint} 
   /declare oomspam        int    outer 1 
   /declare lomspam        int    outer 1 
   /declare duckspam       int    outer 0 
   /declare duckfdspam     int    outer 1 
   /declare duckselfspam   int    outer 1 
   /declare nomtspam       int    outer 1 
   /declare ghealhurtcount int    outer 0 
   /declare divarboor      int    outer 0 
   /declare aetime         int    outer 0 
   /declare EpicTimer      timer  outer 0 
   /join ${mychannel} 


/if (!${Target.ID} && ${Spawn[pc ${DefaultMT}].ID}) { 
  /varset tanknameid ${Spawn[pc ${DefaultMT}].ID} 
  /varset tankclass ${Spawn[pc ${DefaultMT}].Class.Name} 
} else { 
    /varset tanknameid ${Target.ID} 
    /varset tankclass ${Target.Class.Name} 
} 


   /if (${Defined[Param0]}) {    
      /varset healpct ${Param0} 
   } else { 
     /echo No Heal% specified, defaulting to 60% 
   } 
    
   /if (!${Defined[Param1]}) {    
      /echo Usage: /mac AFCleric % healspell 
      /echo Example: /mac AFCleric 40 Complete Heal 
      /echo Defaulting to ${healspell} at ${healpct}% 
   } else {    
      /if (!${Defined[Param2]}) { 
         /varset healspell ${Param1} 
      } else /if (!${Defined[Param3]}) { 
         /varset healspell ${Param1} ${Param2} 
      } else /if (!${Defined[Param4]}) { 
         /varset healspell ${Param1} ${Param2} ${Param3} 
      } else { 
         /varset healspell ${Param1} ${Param2} ${Param3} ${Param4} 
      } 
   } 

   /echo AFCleric Active, running in Autohealmode ${autohealmode} 
   /echo Casting ${healspell} on ${tankname} at ${healpct}% HP 
   /if (${autohealmode}==0) /echo ONLY ${tankname} will be healed 
   /if (${autohealmode}==1) /echo ONLY ${tankname} and myself will be healed 
   /if (${autohealmode}==2) /echo ${tankname}, myself and my group will be healed 
   /if (${autohealmode}==3) /echo ${tankname} and myself will be healed before the rest of the group 
   /call BuffBegDeclares 
   /call MemSpells 
   /if (!${InvSlot[charm].Item.Name.Length} && !${InvSlot[chest].Item.Name.Length} && !${InvSlot[head].Item.Name.Length} ) /call Event_ImDead 

:tankwatchloop 
   /if (${Spawn[${tanknameid}].Name.NotEqual[${tankname}]}) /varset tanknameid 0 
   /if (!${Spawn[${tanknameid}].ID}) /if (${Spawn[${tankname}].ID}) { 
      /if (${SpawnCount[${tankname} ${tankclass}]}==1) { 
         /varset tanknameid ${Spawn[${tankname} ${tankclass}].ID} 
         /echo ${Spawn[${tankname} ${tankclass}].Name} is the designated MT and has ID# ${tanknameid} 
      } 
      /if (${SpawnCount[${tankname} ${tankclass}]}>1) { 
         /if (${SpawnCount[pc ${tankname} ${tankclass}]}==1) { 
            /beep 
            /varset tanknameid ${Spawn[pc ${tankname} ${tankclass}].ID} 
            /echo Defaulting to PC ${Spawn[pc ${tankname} ${tankclass}].Name} as MT. If incorrect, please restart macro 
         } else { 
            /beep 
            /echo Need to restart macro to correctly identify the MT 
         } 
      } 
   } 
   /if (${Spawn[${tanknameid}].ID}) /if (${Spawn[${tanknameid}].Type.Equal[Corpse]}) { 
      /if (${SpawnCount[pc ${tankname} ${tankclass}]}==1) { 
         /varset tanknameid ${Spawn[pc ${tankname ${tankclass}}].ID} 
         /echo ${Spawn[pc ${tankname} ${tankclass}].Name} is MT and has ID# ${tanknameid}. If incorrect, please restart macro 
      } 
   } 
   /if ((!${Target.ID})||(${Target.ID}!=${tanknameid})) { 
      /if (${Spawn[${tanknameid}].ID}) /if (${Spawn[${tanknameid}].Type.NotEqual[Corpse]}) { 
         /if (${DEBUG}) /echo Target 1 
         /if (${DEBUG}) /echo Targeting id ${tanknameid}, ${Spawn[${tanknameid}].CleanName} 
         /target id ${tanknameid} 
         /delay 6 ${Target.ID}==${tanknameid} 
      } 
   } 
   /if (!${Spawn[${tanknameid}].ID}) { 
      /if (${nomtspam}==1) { 
         /e Warning No Designated MT is available 
         /timed 300 /varset nomtspam 1 
         /varset nomtspam 0 
      } 
   } 
   /if ((${Me.PctMana}<=20)&&(${announce}==1)&&(${lomspam}==1)) { 
      /g ${Me.PctMana}m 
      /varset lomspam 0 
      /timed 300 /varset lomspam 1 
   } 
   /if ((${Me.PctMana}<=7)&&(${announce}==1)&&(${oomspam}==1)) { 
      /g oom 
      /varset oomspam 0 
      /timed 300 /varset oomspam 1 
      /call MedTime 
   } 
   /if (${GameState.Equal[CHARSELECT]}) /end 
   /if (${Target.ID}==${tanknameid}) { 
      /varcalc stophealpoint ${healpct}*1.1 
      /if (${Target.Distance} <= ${patchhealrange} && ${Target.PctHPs} <= ${healpct}*.7 && ${Target.Type.NotEqual[corpse]}) { 
         /if (${announce}==1) /g Casting "${patchheal}" on %T 
         /call Cast "${patchheal}" gem2 1s CheckHP 
         /delay 15 ${Me.SpellReady[${patchheal}]} 
      } 
      /if (${Target.Distance} <= ${healspellrange} && ${Target.PctHPs}<=${healpct} &&  ${Target.PctHPs} >= ${healpct}*.7) { 
         /if (${announce}==1) /g Casting ${healspell} on %T 
         /call Cast "${healspell}" gem1 1s CheckHP 
         /delay 15 ${Me.SpellReady[${healspell}]} 
      } 
      /varset stophealpoint ${defaultstophealpoint} 
      /doevents 
   } 
   /if ((${autosit}>=1)&&(${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})) { 
      /if ((${Me.PctMana}>98)||(${Me.PctHPs}<=90)) { 
        /if (${DEBUG2}) /echo Stand 4 
        /stand 
      } 
   } 
   /if (${autosit} && ${Me.Sitting} && !${Window[SpellBookWnd].Open}) { 
      /if (${NearestSpawn[NPC].Distance3D} <= ${distancetosit}) { 
        /if (${DEBUG2}) /echo Stand 5 
        /stand 
      } 
   } 
   /if (${autohealmode}==0) { 
      /doevents 
      /goto :tankwatchloop 
   } 
   /if ((${autohealmode}>=1)&&(${Me.PctHPs}<=${selfhealpoint})) /call Healself 
   /if (${autohealmode}>=2) { 
      /if ((${Target.PctHPs}>${healpct})||(${Target.Distance}>${healspellrange})||(${Target.PctHPs}<=1)||(!${Target.ID})||(${Target.ID}!=${tanknameid})) { 
         /call Healgroup 
      } 
   } 
   /if ((${autohealmode}<2)&&(${Me.PctHPs}>${selfhealpoint})&&(${Me.PctMana}<=98)) /call MedTime 
   /doevents 
   /if (!${bbtimer} && ${askforbuffs} && ${NearestSpawn[npc].Distance} > ${distancetosit}) { 
     /call Buffbeg 
     /varset bbtimer 2m 
   } 
   /if (${NearestSpawn[npc].Distance} > ${distancetosit} && !${sbtimer}) /call BuffSelf 
   /goto :tankwatchloop 
/return 
    

Sub Healself 
   /if (${Me.PctHPs}>${selfhealpoint}) /return 
   /if (${Me.CurrentMana} < ${Spell[${patchheal}].Mana}) { 
     /if (${Verbose}) /echo No mana to heal myself, bummer. 
     /return 
   } 
   /varcalc stophealpoint ${selfhealpoint}+5 
   /if (!${Target.ID} || ${Target.PctHPs} >= ${healpct}*1.1 || ${Target.PctHPs} <= 1 || ${Target.ID}!=${tanknameid}) { 
      /if (${Me.PctHPs} <= ${selfhealpoint}  && ${Me.PctHPs} > ${dacastpoint}) { 
         /if (${DEBUG}) /echo Target 2 
         /target myself 
         /delay 6 ${Target.Name.Equal[${Me}]} 
         /if (${Target.Name.Equal[${Me}]}) { 
            /if (${announce}==1) /g Casting ${patchheal} on %T 
            /call Cast "${patchheal}" gem2 1s CheckHP 
            /delay 15 ${Me.SpellReady[${patchheal}]} 
         } 
      } 
      /if (${Me.PctHPs} <= ${dacastpoint} && ${Me.SpellReady[${daspell}]}) { 
         /if (${announce}==1) /g Casting DA!! <<WARNING>> DA!! No Heals for 18 SECONDS 
         :retryda 
         /call Cast "${daspell}" 
         /delay 1 
         /if (${Macro.Return.Equal[CAST_INTERRUPTED]}) /goto :retryda 
         /if ((${trickyda}==1)&&(${Me.Buff[${daspell}].ID})) /call TrickyDA 
         :dawait 
         /if (${Me.Buff[${daspell}].ID}) { 
            /delay 1s !${Me.Buff[${daspell}].ID} 
            /varset stophealpoint ${defaultstophealpoint} 
            /doevents 
            /goto :dawait 
         } 
      }            
   } 
   /if (${Me.PctHPs} <= ${selfhealpoint}*0.7) { 
      /if (${DEBUG}) /echo Target 3 
      /target myself 
      /delay 6 ${Target.Name.Equal[${Me}]} 
      /if (${Target.Name.Equal[${Me}]}) { 
         /if (${announce}==1) /g Casting ${patchheal} on %T 
         /varcalc stophealpoint ${selfhealpoint}+5 
         /call Cast "${patchheal}" gem2 1s CheckHP 
         /delay 15 ${Me.SpellReady[${patchheal}]} 
      } 
   } 
   /varset stophealpoint ${defaultstophealpoint} 
/return 


Sub Healgroup 
   :healgroup 
   /varset worsthurt NULL 
   /varset worsthp 100 
   /varset worstclass NULL 
   /varset minorhurt 0 
   /varset majorhurt 0 
   /varset ghealhurtcount 0 
   /for gmember 0 to ${Group.Members} 
      /if (${onlyhealfd}==0) { 
         /if (${Group.Member[${gmember}].Distance}<=${patchhealrange}) { 
            /if (${Group.Member[${gmember}].PctHPs}<=${worsthp}) { 
               /varset worsthurt ${Group.Member[${gmember}].Name} 
               /varset worsthurtid ${Group.Member[${gmember}].ID} 
               /varset worsthp ${Group.Member[${gmember}].PctHPs} 
               /varset worstclass ${Group.Member[${gmember}].Class.Name} 
            } 
         } 
      } 
      /if (${onlyhealfd}==1) { 
         /if (${Group.Member[${gmember}].Distance}<=${patchhealrange}) { 
            /if ((${Group.Member[${gmember}].Class.Name.NotEqual[Monk]})&&(${Group.Member[${gmember}].Class.Name.NotEqual[Necromancer]})&&(${Group.Member[${gmember}].PctHPs}<=${worsthp})) { 
               /varset worsthurt ${Group.Member[${gmember}].Name} 
               /varset worsthurtid ${Group.Member[${gmember}].ID} 
               /varset worsthp ${Group.Member[${gmember}].PctHPs} 
               /varset worstclass ${Group.Member[${gmember}].Class.Name} 
            } 
            /if ((${Group.Member[${gmember}].Class.Name.Equal[Monk]})||(${Group.Member[${gmember}].Class.Name.Equal[Necromancer]})) { 
               /if ((${Group.Member[${gmember}].State.Equal[feign]})&&(${Group.Member[${gmember}].PctHPs}<=${worsthp})) { 
                  /varset worsthurt ${Group.Member[${gmember}].Name} 
                  /varset worsthurtid ${Group.Member[${gmember}].ID} 
                  /varset worsthp ${Group.Member[${gmember}].PctHPs} 
                  /varset worstclass ${Group.Member[${gmember}].Class.Name} 
               } 
            } 
         } 
      } 
      /if ((${Group.Member[${gmember}].Distance}<=${grouphealrange})&&(${Group.Member[${gmember}].PctHPs}<=85)) /varcalc ghealhurtcount ${ghealhurtcount}+1 
      /if ((${Group.Member[${gmember}].PctHPs}<=85)&&(${Group.Member[${gmember}].PctHPs}>=60)) /varcalc minorhurt ${minorhurt}+1 
      /if ((${Group.Member[${gmember}].PctHPs}<=60)&&(${Group.Member[${gmember}].PctHPs}>=1)) /varcalc majorhurt ${majorhurt}+1 
   /next gmember 
   /if (${autohealmode}==3) { 
      /if ((!${Target.ID})||(${Target.Name.NotEqual[${tankname}]})) /if (${Spawn[${tanknameid}].ID}) { 
         /if (${DEBUG}) /echo Target 4 
         /target id ${tanknameid} 
         /delay 6 ${Target.ID}==${tanknameid} 
         /delay 1 
         /if ((${Target.ID}==${tanknameid})&&(${Target.PctHPs}<=${healpct})&&(${Target.Distance}<=${healspellrange})) /return 
      } 
      /if (${Me.PctHPs}<=${selfhealpoint}) /return 
   } 
   /if ((${majorhurt}==0)&&(${minorhurt}==0)) { 
      /if (${Spawn[${tanknameid}].ID}) { 
         /if (${DEBUG}) /echo Target 5 
         /if (${DEBUG}) /echo Targeting id ${tanknameid}, ${Spawn[${tanknameid}].CleanName} 
         /target id ${tanknameid} 
         /delay 6 ${Target.ID}==${tanknameid} 
         /delay 1 
      } 
      /if (((${Target.ID}==${tanknameid})&&(${Target.PctHPs}>${healpct}))||(!${Spawn[${tanknameid}].ID})||(${Spawn[${tanknameid}].Type.Equal[corpse]})) { 
         /if ((${healpetmode}>0)&&(${Me.PctMana}>=${manatohealpet})) /call HealPet 
         /if (${Me.PctMana}<=98) /call MedTime 
      } 
      /doevents  
      /return 
   } 
   /if (${usedivarb} && ${worsthp} <= ${divarbpoint}) /call Divarbcast 
   /if (${majorhurt}+${minorhurt} >= 3 && ${usegroupheal}==1) { 
      /if (${announce}==1) /g Inc Grp Heal, get close 
      /call Cast "${groupheal}" gem4 1s 
      /delay 15 ${Me.SpellReady[${groupheal}]} 
      /doevents  
      /return 
   } 
   /if (${worsthurtid}==${tanknameid}) /return 
   /if (${worsthurtid}==${Me.ID}) { 
      /call Healself 
      /doevents  
      /return 
   } 
   /if (${meleeClasses.Find[${worstclass}]}) { 
      /if (${worsthp} <= ${tankhealpoint} && ${worsthp} >= ${tankhealpoint}*.7 && ${majorhurt} <= 1 && ${minorhurt} <= 1) { 
         /if (${DEBUG}) /echo Target 6 
         /target id ${worsthurtid} 
         /delay 5 ${Target.ID}==${worsthurtid} 
         /if (!${Target.ID}) /return 
         /if (${Target.ID}!=${worsthurtid}) /return 
         /varcalc stophealpoint ${tankhealpoint}+5 
         /if (${announce}==1) /g Casting ${healspell} on %T 
         /call Cast "${healspell}" gem1 1s CheckHP 
         /delay 15 ${Me.SpellReady[${healspell}]} 
         /varset stophealpoint ${defaultstophealpoint} 
         /doevents  
         /return 
      } 
      /if (${worsthp}<=${tankhealpoint}) { 
         /if (${DEBUG}) /echo Target 7 
         /target id ${worsthurtid} 
         /delay 5 ${Target.ID}==${worsthurtid} 
         /if (!${Target.ID}) /return 
         /if (${Target.ID}!=${worsthurtid}) /return 
         /varcalc stophealpoint ${tankhealpoint}+5 
         /if (${announce}==1) /g Casting ${patchheal} on %T 
         /call Cast "${patchheal}" gem2 1s CheckHP 
         /delay 15 ${Me.SpellReady[${patchheal}]} 
         /varset stophealpoint ${defaultstophealpoint} 
         /doevents  
         /return 
      } 
   } else /if (${casterClasses.Find[${worstclass}]}) { 
      /if ((${worsthp}<=${casterhotpoint})&&(${worsthp}>${casterpatchpoint})) { 
         /if (${worsthurt.Equal[${nohotforua}]} || ${worsthurt.Equal[${nohotforub}]} || ${worsthurt.Equal[${nohotforuc}]} || ${worsthurt.Equal[${nohotforud}]}) /return 
         /if (${nohotforua.Find[NoOne]}) { 
            /if (${DEBUG}) /echo Target 8 
            /target id ${worsthurtid} 
            /delay 5 ${Target.ID}==${worsthurtid} 
            /if (!${Target.ID}) /return 
            /if (${Target.ID}!=${worsthurtid}) /return 
            /varset nohotforua ${Target.Name} 
            /if (${announce}==1) /g Casting ${hotspell} on %T 
            /varcalc stophealpoint ${casterhotpoint}+5 
            /call Cast "${hotspell}" gem3 1s CheckHP 
            /timed 200 /varset nohotforua NoOne 
            /delay 15 ${Me.SpellReady[${hotspell}]} 
         } else /if (${nohotforub.Find[NoOne]}) { 
            /if (${DEBUG}) /echo Target 9 
            /target id ${worsthurtid} 
            /delay 5 ${Target.ID}==${worsthurtid} 
            /if (!${Target.ID}) /return 
            /if (${Target.ID}!=${worsthurtid}) /return 
            /varset nohotforub ${Target.Name} 
            /if (${announce}==1) /g Casting ${hotspell} on %T 
            /varcalc stophealpoint ${casterhotpoint}+5 
            /call Cast "${hotspell}" gem3 1s CheckHP 
            /timed 200 /varset nohotforub NoOne 
            /delay 15 ${Me.SpellReady[${hotspell}]} 
         } else /if (${nohotforub.Find[NoOne]}) { 
            /if (${DEBUG}) /echo Target 10          
            /target id${worsthurtid} 
            /delay 5 ${Target.ID}==${worsthurtid} 
            /if (!${Target.ID}) /return 
            /if (${Target.ID}!=${worsthurtid}) /return 
            /varset nohotforuc ${Target.Name} 
            /if (${announce}==1) /g Casting ${hotspell} on %T 
            /varcalc stophealpoint ${casterhotpoint}+5 
            /call Cast "${hotspell}" gem3 1s CheckHP 
            /timed 200 /varset nohotforuc NoOne 
            /delay 15 ${Me.SpellReady[${hotspell}]} 
         } else /if (${nohotforub.Find[NoOne]}) { 
            /if (${DEBUG}) /echo Target 11 
            /target id ${worsthurtid} 
            /delay 5 ${Target.ID}==${worsthurtid} 
            /if (!${Target.ID}) /return 
            /if (${Target.ID}!=${worsthurtid}) /return 
            /varset nohotforud ${Target.Name} 
            /if (${announce}==1) /g Casting ${hotspell} on %T 
            /varcalc stophealpoint ${casterhotpoint}+5 
            /call Cast "${hotspell}" gem3 1s CheckHP 
            /timed 200 /varset nohotforud NoOne 
            /delay 15 ${Me.SpellReady[${hotspell}]} 
         } 
         /varset stophealpoint ${defaultstophealpoint} 
         /doevents  
         /return 
      } 
      /if ((${worsthp}<=${casterpatchpoint})&&(${worsthp}>=1)) { 
         /if (${DEBUG}) /echo Target 12 
         /target id ${worsthurtid} 
         /delay 5 ${Target.ID}==${worsthurtid} 
         /if (!${Target.ID}) /return 
         /if (${Target.ID}!=${worsthurtid}) /return 
         /if (${announce}==1) /g Casting ${patchheal} on %T 
         /call Cast "${patchheal}" gem2 1s CheckHP 
         /varset stophealpoint ${defaultstophealpoint} 
         /doevents  
         /delay 15 ${Me.SpellReady[${patchheal}]} 
         /return 
      } 
      /varset stophealpoint ${defaultstophealpoint} 
   } else /if (${canniClasses.Find[${worstclass}]}) { 
      /if ((${worsthp}<=${necshmpatchpoint})&&(${worsthp}>=1)) { 
         /if (${DEBUG}) /echo Target 13 
         /target id ${worsthurtid} 
         /delay 5 ${Target.ID}==${worsthurtid} 
         /if (!${Target.ID}) /return 
         /if (${Target.ID}!=${worsthurtid}) /return 
         /varcalc stophealpoint ${necshmpatchpoint}+5 
         /if (${announce}==1) /g Casting ${patchheal} on %T 
         /call Cast "${patchheal}" gem2 1s CheckHP 
         /varset stophealpoint ${defaultstophealpoint} 
         /doevents  
         /delay 15 ${Me.SpellReady[${patchheal}]} 
         /return 
      } 
   } else /if ((${worsthp}<=${defaultpatchpoint})&&(${worsthp}>=1)) { 
      /if (${DEBUG}) /echo Target 14 
      /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (!${Target.ID}) /return 
      /if (${Target.ID}!=${worsthurtid}) /return 
      /if (${announce}==1) /g Casting ${patchheal} on %T 
      /varcalc stophealpoint ${defaultpatchpoint}+5 
      /call Cast "${patchheal}" gem2 1s CheckHP 
      /varset stophealpoint ${defaultstophealpoint} 
      /doevents 
      /delay 15 ${Me.SpellReady[${patchheal}]} 
      /return 
   } 
   /varset stophealpoint ${defaultstophealpoint} 
   /if ((${healpetmode}==2)&&(${Me.PctMana}>${manatohealpet})) /call HealPet 
/return 

Sub Divarbcast 
  /if (${Me.Casting.ID}) /call Interrupt 
  /if (${announce}) /g Inc Divine Arbitration 
  /if (${Me.AltAbilityReady[Divine Arbitration]} && ${Group}-${divarboor} >= 2) { 
    /call Cast "Divine Arbitration" alt 5s 
    /if ((${healafterdivarb})&&(${Me.PctMana}>40)) { 
      /if (${announce}==1) /g Inc Grp Heal, get close 
      /call Cast "${groupheal}" gem4 2s 
      /delay 15 ${Me.SpellReady[${groupheal}]} 
    } 
  } else /if (${FindItem[Harmony of the Soul].ID} && ${Group}-${divarboor} >= 2 && !${EpicTimer}) { 
    /call Cast "Harmony of the Soul" item 5s 
    /if ((${healafterdivarb})&&(${Me.PctMana}>40)) { 
      /if (${announce}) /g Inc Grp Heal, get close 
      /call Cast "${groupheal}" gem4 2s 
      /delay 15 ${Me.SpellReady[${groupheal}]} 
    } 
    /varset EpicTimer 360s 
  } 
  /declare q int local 
  /for q 0 to ${Group} 
    /if (${Group.Member[${q}].PctHPs}<=${DivArbHPs} && ${Me.AltAbilityReady[Bestow Divine Aura]} && ${Group.Member[${q}].ID}!=${tanknameid} && ${Group.Member[${q}].Distance} < 200) { 
      /if (${Me.Casting.ID}) /call Interrupt 
      /target id ${Group.Member[${q}].ID} 
      /delay 1s ${Target.ID}==${Group.Member[${q}].ID} 
      /if (${announce}) /g Bestowing Divine Aura on: ${Target.CleanName} 
      /call Cast "Bestow Divine Aura" alt 5s 
    } 
  /next q 
/return 




Sub HealPet 
   /varset worsthurt NULL 
   /varset worsthp 100 
   /for gmember 0 to ${Group} 
      /if (${Group.Member[${gmember}].Pet.ID}) { 
         /if (${Group.Member[${gmember}].Pet.Distance}<=${pethealspellrange}) { 
            /if ((${Group.Member[${gmember}].Pet.PctHPs}<=${worsthp})&&(${Group.Member[${gmember}].Pet.PctHPs}<=${pethealpoint})) { 
               /varset worsthurt ${Group.Member[${gmember}].Pet.Name} 
               /varset worsthurtid ${Group.Member[${gmember}].Pet.ID} 
               /if (${DEBUG}) /echo Is Worsthurt being assigned here? 
               /varset worsthp ${Group.Member[${gmember}].Pet.PctHPs} 
            } 
         } 
      } 
   /next gmember 
   /if (${worsthurt.Length}) { 
      /if (${DEBUG}) /echo Target 15 
      /if (${DEBUG}) /echo Targeting id ${worsthurtid}, ${Spawn[${worsthurtid}].CleanName} 
      /if (${Spawn[${worsthurtid}].Type.NotEqual[Pet]}) /return 
      /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (!${Target.ID}) /return 
      /if (${Target.ID}!=${worsthurtid}) /return 
      /delay 3 
      /if (${Target.PctHPs} < ${pethealpoint}) { 
         /if (${DEBUG}) /echo Is another toon being selected In here? 
         /if (${announce}==1) /g Casting ${pethealspell} on %T 
         /varcalc stophealpoint ${pethealpoint}+5 
         /call Cast "${pethealspell}" spell 1s CheckHP 
         /varset stophealpoint ${defaultstophealpoint} 
         /delay 15 ${Me.SpellReady[${pethealspell}]} 
      } 
   } 
/return 

Sub MedTime 
   :oomwait 
   /doevents 
   /If ((${FindItem["Rod of Mystical Transvergance"].InvSlot})&&(${Me.PctMana}<=70)&&(${Me.PctHPs}>=98)&&(${rodwait}==0)) { 
      /call Cast "Rod of Mystical Transvergance" item 
      /varset rodwait 1 
      /timed 3000 /varset rodwait 0 
   } 
  /if ((${autosit}>0)&&(${Me.PctMana}<=98)&&(!${Me.Casting.ID})) { 
      /if ((${Bool[${Me.Standing}]})&&(${Me.PctHPs}>90) && !${Following}) { 
             /if ((!${NearestSpawn[1,npc radius ${distancetosit} zradius 30].Distance})&&(!${Me.Buff[${yaulpspell}].ID})&&(!${Me.Moving}) ) { 
               /if (${DEBUG2}) /echo Sit 1 
               /sit on 
             } 
     } 
      /if ((${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})) { 
          /if (${NearestSpawn[1,npc radius ${distancetosit} zradius 30].Distance}) { 
             /if (${DEBUG2}) /echo Stand 1 
             /stand 
          } 
     } 
   } 
   /if ((${Bool[${Me.Standing}]})&&(${autosit}==2)&&(${Me.PctMana}<=98)&&(${Me.PctHPs}>90)&&(!${Me.Casting.ID})&&(!${Me.Buff[${yaulpspell}].ID}) && !${Following}) { 
     /if (${DEBUG2}) /echo Sit 2 
     /sit 
   } 
   /if ((${Bool[${Me.Sitting}]})&&(${autosit}>=1)&&(${Me.PctMana}>98)&&(!${Window[SpellBookWnd].Open})) { 
     /if (${DEBUG2}) /echo Stand 2 
     /stand 
   } 
   /if ((${Bool[${Me.Standing}]})&&(!${Me.Mount.ID})&&(${Me.SpellReady[${yaulpspell}]})&&(!${Me.Buff[${yaulpspell}].ID})) { 
      /if ((!${Me.Buff[Vallon].ID})&&(!${Me.Buff[Spiritual Vigor].ID})&&(!${Me.Buff[Strength of Tunare].ID})) /call Cast "${yaulpspell}" gem8 
   } 
   /if (${Me.PctHPs}<=${selfhealpoint}) /return 
   /if (${Me.PctMana}<=8) /goto :oomwait 
/return 

Sub BuffSelf 
  /declare i int local 1 
  /for i 1 to ${SpellSelfBuff.Size} 
  /if (!${Me.Buff[${SpellSelfBuff[${i}]}].ID}) { 
    /if (${Spell[${SpellSelfBuff[${i}]}].Mana} < ${Me.CurrentMana}) { 
      :targetloop 
      /delay 1 
      /target myself 
      /if (${Target.ID} != ${Me.ID}) /goto :targetloop 
      /call cast ${SpellSelfBuff[${i}]} gem9 5s 
    } 
  } 
  /next i 
  /if ((${Me.Buff[Steeloak Skin].ID} || ${Me.Buff[Blessing of Steeloak].ID}) && ${Me.CurrentMana} > ${Spell[${singlesymbuff}].Mana}) { 
    /target myself 
    /delay 1s ${Target.ID} == ${Me.ID} 
    /call checkCanCast 9 ${singlesymbuff} 
    /call cast ${singlesymbuff} gem9 5s 
  } 
  /if ((${Me.CurrentMana} > ${Spell[${longhpbuff}].Mana}) && (!${Me.Buff[Steeloak Skin].ID} || !${Me.Buff[Blessing of Steeloak].ID}) && (!${Spell[${longhpbuff}].ID} || !${Spell[${grouplonghpbuff}].ID})) { 
    /target myself 
    /delay 1s ${Target.ID} == ${Me.ID} 
    /call checkCanCast 9 ${longhpbuff} 
    /call cast ${longhpbuff} gem9 5s 
  } 
  /varset sbtimer 2m 
/return 

Sub CheckHP 
   /if (!${Window[CastingWindow].Open}) /return 
   /if ((${autointerrupt}>=1)&&(${Target.PctHPs}>=${stophealpoint})) { 
      /if ((${announce}==1)&&(${duckspam}==1)) { 
         /g Ducking heal on %T 
         /e Ducking heal on ${Target.Name} 
         /varset duckspam 0 
         /timed 60 /varset duckspam 1 
      } 
      /call Interrupt 
      /return 
   } 
   /if ((${interrupt2healself}==1)&&(${Target.Name.NotEqual[${Me}]})&&(${Me.PctHPs}<${interrupt2healselfhp})) { 
      /if ((${usedivarb}==1)&&(${Me.PctHPs}<=${divarbpoint})&&(${Me.AltAbilityReady[Divine Arbitration]})) { 
         /call Interrupt 
         /call Divarbcast 
         /return 
      } 
      /if ((${announce}==1)&&(${duckselfspam}==1)) { 
         /g Ducking heal on %T so I can heal my (ChickenShit) self 
         /e Ducking heal on ${Target} so I can heal myself 
         /varset duckselfspam 0 
         /timed 60 /varset duckselfspam 1 
      } 
      /call Interrupt 
      /return 
   } 
   /if (${onlyhealfd}==1) { 
      /if ((${Target.Class.Name.Equal[Necromancer]})||(${Target.Class.Name.Equal[Monk]})) { 
         /if (${Target.State.NotEqual[feign]}) { 
            /if ((${announce}==1)&&(${duckfdspam}==1)) { 
               /g Ducking heal on %T because he isn't staying FD 
               /e Ducking heal on ${Target.Name} because he isn't staying FD 
               /varset duckfdspam 0 
               /timed 40 /varset duckfdspam 1 
            } 
            /call Interrupt 
            /return 
         } 
      } 
   } 
   /if ((${usedivarb}==1)&&(${Target.PctHPs}<=${divarbpoint})&&(${Target.Distance}<=200)&&(${Me.AltAbilityReady[Divine Arbitration]})&&(${castEndTime}>=${interrupt2divarb})) { 
      /for gmember 0 to ${Group} 
         /if (${Target.ID}==${Group.Member[${gmember}].ID}) { 
            /call Interrupt 
            /call Divarbcast 
            /return 
         } 
      /next gmember 
   } 
/return 

Sub TrickyDA 
   /for intcount 1 to 20 
      /if ((${Me.PctHPs}<40)&&(${Me.Buff[${trickybuff[${intcount}]}].ID})) /notify BuffWindow Buff${Math.Calc[${Me.Buff[${trickybuff[${intcount}]}].ID}-1].Int} leftmouseup 
   /next intcount 
   /if (${Me.Buff[${daspell}].ID}) { 
      :waitalittle 
      /delay 1s ${Me.Buff[${daspell}].Duration}<2 
      /if (${Me.Buff[${daspell}].Duration}>=2) /goto :waitalittle 
   } 
/return

Sub FindExactPC(string name) 
   /declare nameid int local 
   /declare counter int local 1 
   :FindNext 
   /if (!${NearestSpawn[${counter}, pc ${name}].ID}) /return NOT_FOUND 
   /varset nameid ${NearestSpawn[${counter}, pc ${name}].ID} 
   /if (${Spawn[${nameid}].CleanName.Equal[${name}]}) { 
      /if (${DEBUG}) /echo Target 16 
      /target id ${nameid} 
      /delay 1s ${Target.ID}==${nameid} 
      /if (${Target.ID}==${nameid}) /return TARGET_SUCCESS 
   } 
   /varcalc counter ${counter}+1 
   /if (${NearestSpawn[${counter}, pc ${name}].ID}) /goto :FindNext 
/return NOT_FOUND 

Sub Event_Chat(string ChatType,string Sender,string ChatText) 
  /if (${MasterOnly}) /if (!${MasterList.Find[${Sender}]} ) /return 
  /if (!${Spawn[${Sender}].ID}) { 
    /e ${Sender} is not in the zone 
    /return 
  } 
  /if (${ChatText.Equal[Follow me]}) { 
    /target ${Sender} 
    /delay 3 
    /varset followid ${Target.ID} 
    /varset Following TRUE 
    /if (${DEBUG}) /echo Target 17 
    /squelch /stick 20 hold 
    /doevents 
  } 
  /if (${ChatText.Equal[Stay Here]}) { 
    /varset FollowTank    FALSE 
    /varset StaticCamp    FALSE 
    /squelch /stick off 
    /timed 50 /face pc ${follname} 
  } 
  /if (${ChatText.Equal[Make Camp]}) { 
    /varset MovingCamp    FALSE 
    /varset Following FALSE 
    /squelch /stick off 
    /varset  HomeX ${Me.X} 
    /varset  HomeY ${Me.Y} 
  } 
  /if (${ChatText.Equal[Gbuff now!]}) { 
      /varset pallycount 0 
      /if (${DEBUG}) /echo Target 18 
      /target myself 
      /call Cast "${acbuff}" gem6 7s 
      /if (${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "Breastplate of Vengeful Fury" item 
      /if (!${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "${spellhastebuff}" gem8 5s 
      /for gmember 1 to ${Group} 
         /if (${DEBUG}) /echo Target 19 
         /target id ${Group.Member[${gmember}].ID} 
         /delay 1s ${Target.ID}==${Group.Member[${gmember}].ID} 
         /if (${Target.ID}==${Group.Member[${gmember}].ID}) { 
            /if (${Target.Class.Name.NotEqual[Paladin]}) /call Cast "${acbuff}" gem5 7s 
            /if (${Target.Class.Name.Equal[Paladin]}) { 
               /call Cast "${longhpbuff}" gem4 10s 
               /varcalc pallycount ${pallycount}+1 
            } 
            /if ((${Target.Class.Name.NotEqual[Warrior]})&&(${Target.Class.Name.NotEqual[Monk]})&&(${Target.Class.Name.NotEqual[Rogue]})&&(${Target.Class.Name.NotEqual[Berserker]})&&(${Target.Class.Name.NotEqual[Bard]})) { 
               /if (${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "Breastplate of Vengeful Fury" item 
               /if (!${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "${spellhastebuff}" gem8 5s 
            } 
         } 
      /next gmember 
      /if (${Group}-${pallycount} >= 2 && ${groupsymbuff.Length}) /call Cast "${groupsymbuff}" gem5 10s 
      /if (${Group}-${pallycount} < 2 || !${groupsymbuff.Length}) { 
         /for gmember 0 to ${Group} 
            /if (${DEBUG}) /echo Target 20 
            /target id ${Group.Member[${gmember}].ID} 
            /delay 1s ${Target.ID}==${Group.Member[${gmember}].ID} 
            /if (${Target.Class.Name.NotEqual[Paladin]}) /call Cast "${singlesymbuff}" gem5 7s 
         /next gmember 
      } 
   }    
   /if (${ChatText.Equal[BoR now!]}) { 
      /if (${DEBUG}) /echo Target 21 
      /target myself 
      /delay 5 ${Target.Name.Equal[${Me}]} 
      /if (${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "Breastplate of Vengeful Fury" item 
      /if (!${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "${spellhastebuff}" gem8 5s 
      /for gmember 1 to ${Group} 
         /if (${DEBUG}) /echo Target 22 
         /target id ${Group.Member[${gmember}].ID} 
         /delay 1s ${Target.ID}==${Group.Member[${gmember}].ID} 
         /if (${Target.ID}==${Group.Member[${gmember}].ID}) { 
            /if ((${Target.Class.Name.NotEqual[Warrior]})&&(${Target.Class.Name.NotEqual[Monk]})&&(${Target.Class.Name.NotEqual[Rogue]})&&(${Target.Class.Name.NotEqual[Berserker]})&&(${Target.Class.Name.NotEqual[Bard]})) { 
               /if (${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "Breastplate of Vengeful Fury" item 
               /if (!${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "${spellhastebuff}" gem8 5s 
            } 
         } 
      /next gmember 
   }    
   /if (${ChatText.Equal[nuke]}) { 
      /if (${Me.PctMana}<30) { 
         /chat #${mychannel} Cleric Mana ${Me.PctMana}%, holding on nukes! 
      } else { 
         /if (${DEBUG}) /echo Assist 1 
         /assist ${Sender} 
         /delay 5 
         /if (${Target.Type.NotEqual[NPC]}) { 
            /if (${DEBUG}) /echo Assist 2 
            /assist ${Sender} 
            /delay 5 ${Target.Type.Equal[NPC]} 
         } 
         /if ((${Target.Type.Equal[NPC]})&&(${Target.PctHPs}<=90)) { 
            /if (${Me.SpellReady[${nukeone}]}) { 
               /if (${announce}==1) /g Casting ${nukeone} on %T 
               /call Cast "${nukeone}" spell 3s 
            } else /if (${Me.SpellReady[${nuketwo}]}) { 
               /if (${announce}==1) /g Casting ${nuketwo} on %T 
               /call Cast "${nuketwo}" spell 3s 
            } else { 
              /chat #${mychannel} nukes not ready 
            } 
            /if (${Me.PctMana}<=60) /chat #${mychannel} FYI Cleric Mana ${Me.PctMana}% 
         } else { 
           /chat #${mychannel} wrong target (${Target.Type} at ${Target.PctHPs}% HP) 
         } 
      } 
   } 
   /if (${ChatText.Equal[stun]}) { 
      /if (${DEBUG}) /echo Assist 3 
      /assist ${Sender} 
      /delay 5 
      /if (${Target.Type.NotEqual[NPC]}) { 
         /if (${DEBUG}) /echo Assist 4 
         /assist ${Sender} 
         /delay 5 ${Target.Type.Equal[NPC]} 
      } 
      /if ((${Target.Type.Equal[NPC]})&&(${Target.PctHPs}<=90)) { 
         /if (${Me.SpellReady[${stunone}]}) { 
            /if (${announce}==1) /g Casting ${stunone} on %T 
            /call Cast "${stunone}" spell 3s 
         } else /if (${Me.SpellReady[${stuntwo}]}) { 
            /if (${announce}==1) /g Casting ${stuntwo} on %T 
            /call Cast "${stuntwo}" spell 3s 
         } else { 
           /chat #${mychannel} stuns not ready 
         } 
      } else { 
        /chat #${mychannel} wrong target (${Target.Type} at ${Target.PctHPs}% HP) 
      } 
   } 
   /if (${ChatText.Equal[buffme]}) { 
      /call FindExactPC ${Sender} 
      /if (${Macro.Return.NotEqual[TARGET_SUCCESS]}) /return 
      /if (${Target.Class.Name.Equal[Paladin]}) { 
         /call Cast "${longhpbuff}" gem4 10s 
         /if (${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "Breastplate of Vengeful Fury" item 
         /if (!${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "${spellhastebuff}" gem8 5s 
         /return 
      } 
      /if ((${Target.Class.Name.NotEqual[Warrior]})&&(${Target.Class.Name.NotEqual[Monk]})&&(${Target.Class.Name.NotEqual[Rogue]})&&(${Target.Class.Name.NotEqual[Berserker]})&&(${Target.Class.Name.NotEqual[Bard]})) { 
         /if (${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "Breastplate of Vengeful Fury" item 
         /if (!${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "${spellhastebuff}" gem8 5s 
      } 
      /memspell 6 "${acbuff}" 
      /call Cast "${acbuff}" gem6 7s 
   } 
   /if ((${ChatText.Equal[patch me]})||(${ChatText.Equal[heal]})||(${ChatText.Equal[heal me]})||(${ChatText.Equal[heal plz]})||(${ChatText.Equal[heal me plz]})||(${ChatText.Equal[need heal]})) { 
      /call FindExactPC ${Sender} 
      /if (${Macro.Return.NotEqual[TARGET_SUCCESS]}) /return 
      /if (${Target.Distance}<=${patchhealrange}) { 
         /if (${announce}==1) /g Casting ${patchheal} on %T 
         /call Cast "${patchheal}" gem2 2s 
         /delay 15 ${Me.SpellReady[${patchheal}]} 
      } else { 
        /tell ${Sender} you're OOR 
      } 
   } 
   /if ((${ChatText.Equal[balikor]})||(${ChatText.Equal[wog]})||(${ChatText.Equal[V]})||(${ChatText.Equal[bor]})||(${ChatText.Equal[rgc]})||(${ChatText.Equal[hot me]})||(${ChatText.Equal[ch me]})||(${ChatText.Equal[pb]})) { 
      /if (${Spawn[pc ${Sender}].Distance}>250) /return 
      /call FindExactPC ${Sender} 
      /if (${Macro.Return.NotEqual[TARGET_SUCCESS]}) /return 
   } 
   /if (${ChatText.Equal[balikor]}) { 
     /memspell 9 "${singlesymbuff}" 
     /delay 7 
     /call Cast "${singlesymbuff}" gem9 7s 
   } 
   /if (${ChatText.Equal[wog]}) /call Cast "${acbuff}" gem6 7s 
   /if (${ChatText.Equal[V]}) /call Cast "${longhpbuff}" gem4 10s 
   /if (${ChatText.Equal[bor]}) { 
      /if (${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "Breastplate of Vengeful Fury" item 
      /if (!${FindItem[Breastplate of Vengeful Fury].ID}) /call Cast "${spellhastebuff}" gem8 5s 
   } 
   /if (${ChatText.Equal[rgc]}) { 
      /if (${FindItem[Blackflame Sphere].ID}) { 
         /call Cast "Blackflame Sphere" item 
      } else /if (${FindItem[Wand of Casual Blessings].ID}) { 
         /call Cast "Wand of Casual Blessings" item 
      } else { 
        /call Cast "${rgcspell}" gem8 5s 
      } 
   } 
   /if (${ChatText.Equal[buff pet]}) { 
      /if (${DEBUG}) /echo Target 23 
      /target ${Spawn[pc ${Sender}].Pet} 
      /delay 8 
      /if (${DEBUG}) /echo Target 24 
      /target ${Spawn[pc ${Sender}].Pet} 
      /call Cast "${acbuff}" gem6 7s 
      /call Cast "${singlesymbuff}" gem5 7s 
   } 
   /if (${ChatText.Equal[da pet]}) { 
      /if (${DEBUG}) /echo Target 25 
      /target ${Spawn[pc ${Sender}].Pet} 
      /delay 6 
      /if (${DEBUG}) /echo Target 26 
      /target ${Spawn[pc ${Sender}].Pet} 
      /if (${Me.AltAbilityReady[39]}) /if (${Target.Name.Equal[${Spawn[pc ${Sender}].Pet.Name}]}) { 
         /call Cast "39" alt 
      } else { 
         /chat #${mychannel} Bestow Divine Aura is not ready, or Target (%T) OOR or wrong target 
      } 
   } 
   /if (${ChatText.Equal[pb]}) /call Cast "Pure Blood" gem6 10s 
   /if (${ChatText.Equal[hot me]}) { 
      /if (${Target.Distance}<=${hotspellrange}) { 
         /if (${announce}==1) /g Casting ${hotspell} on %T 
         /call Cast "${hotspell}" gem2 2s 
         /delay 15 ${Me.SpellReady[${hotspell}]} 
      } else { 
        /tell ${Sender} you're OOR 
      } 
   } 
   /if (${ChatText.Equal[ch me]}) { 
      /if (${Target.Distance}<=100) { 
         /if (${announce}==1) /g Casting Complete Healing on %T 
         /call Cast "Complete Healing" gem2 5s 
         /delay 15 ${Me.SpellReady[${hotspell}]} 
      } else { 
        /tell ${Sender} your OOR 
      } 
   } 
   /if (${ChatText.Equal[mana check]}) /chat #${mychannel} Cleric Mana ${Me.PctMana}% 
   /if (${ChatText.Equal[slowcamp]}) { 
      /if (${DEBUG2}) /echo Sit 3 
      /if (${Me.Standing} && !${Following}) /sit 
      /delay 5m ${Me.PctMana}>=98 
      /camp 
      /end 
   } 
/return 

Sub Event_DamageShield(string Line,string Tormentee) 
  /if (${MoKed} || ${tankname.NotEqual[${Tormentee}]} || ${Spawn[${tanknameid}].PctHPs} < 90) /return 
  /if (${Target.PctHPs} < 75) /return 
  /if (${DEBUG}) /echo Assist 6 
  /assist ${tankname} 
  /delay 3 
  /call Cast "Mark of the Blameless" gem6 5s 
  /varset MoKed TRUE 
/return 

Sub ReturnHome 
  /if (${Following} || ${MovingCamp} || !${StaticCamp}) /return 
  /if (${Me.Sitting}) { 
    /if (${DEBUG2}) /echo Stand 3 
    /stand 
  } 
  /if (${Math.Distance[${HomeY},${HomeX}]}<10) { 
    /keypress forward 
    /keypress back 
    /return 
  } 
  :MoveHome 
  /delay 1 
  /doevents 
  /face fast nolook loc ${HomeY},${HomeX} 
  /if (${Math.Distance[${HomeY},${HomeX}]}>10) /keypress forward hold 
  /call AreWeStuck 
  /if (${Math.Distance[${HomeY},${HomeX}]}<10) { 
    /keypress forward 
    /keypress back 
    /return 
  } 
  /goto :MoveHome 
  /if (${DEBUG}) /echo Target 27 
  /squelch /target ${tankname} 
  /face fast nolook 
  /if (${DEBUG}) /echo Target 28 
  /squelch /target clear 
/return 

Sub AreWeStuck 
   /doevents 
  /declare  StuckXLoc      int local ${Me.X} 
  /declare  StuckYLoc      int local ${Me.Y} 
  /delay 4 
  /if (${StuckXLoc}==${Me.X} && ${StuckYLoc}==${Me.Y}) /call MoveAround 
/return 

Sub MoveAround 
  /doevents 
  /keypress forward 
  /keypress back hold 
  /delay 3 
  /keypress back 
  /if (${Math.Rand[2]}) { 
     /keypress strafe_right hold 
  } else { 
     /keypress strafe_left hold 
  } 
  /delay 10 
  /keypress strafe_right 
  /keypress strafe_left 
  /varset StuckToMob FALSE 
/return 

Sub Event_MobDead 
  /squelch /stick off 
  /keypress forward 
  /keypress back 
  /if (${Math.Distance[${HomeY},${HomeX}]}>25) /call ReturnHome 
/return 

Sub Event_Zoned 
  /varset  HomeX ${Me.X} 
  /varset  HomeY ${Me.Y} 
  /if (${Following}) { 
    /target id ${followid} 
    :targetloop 
    /delay 3 
    /if (${Target.ID} != ${followid}) /goto :targetloop 
    /squelch /stick 20 hold 
  } 
/return 

Sub Event_ImDead 
  /varset Following FALSE 
  /delay 20s 
  /call MemSpells 
  /call Wait4Rez 
/return 

Sub MemSpells 
  /declare gemnum int local 
  /echo Memming spells. Hang on. 
  /if (${Me.Sitting}) /stand 
  /if (${Me.Gem[${patchheal}]} && ${Me.Gem[${patchheal}]}!=${patchhealgem}) { 
    /varset gemnum ${Me.Gem[${patchheal}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${patchhealgem} "${patchheal}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${patchheal}]}) { 
    /memspell ${patchhealgem} "${patchheal}" 
    /delay 25 
  } 

  /if (${Me.Gem[${healspell}]} && ${Me.Gem[${healspell}]}!=${healspellgem}) { 
    /varset gemnum ${Me.Gem[${healspell}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${healspellgem} "${healspell}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${healspell}]}) { 
    /memspell ${healspellgem} "${healspell}" 
    /delay 25 
  } 

  /if (${Me.Gem[${hotspell}]} && ${Me.Gem[${hotspell}]}!=${hotspellgem}) { 
    /varset gemnum ${Me.Gem[${hotspell}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${hotspellgem} "${hotspell}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${hotspell}]}) { 
    /memspell ${hotspellgem} "${hotspell}" 
    /delay 25 
  } 
  
  /if (${Me.Gem[${groupheal}]} && ${Me.Gem[${groupheal}]}!=${grouphealgem}) { 
    /varset gemnum ${Me.Gem[${groupheal}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${grouphealgem} "${groupheal}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${groupheal}]}) { 
    /memspell ${grouphealgem} "${groupheal}" 
    /delay 25 
  } 
  
  /if (${Me.Gem[${daspell}]} && ${Me.Gem[${daspell}]}!=${daspellgem}) { 
    /varset gemnum ${Me.Gem[${daspell}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${daspellgem} "${daspell}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${daspell}]}) { 
    /memspell ${daspellgem} "${daspell}" 
    /delay 25 
  } 

  /if (${Me.Gem[${yaulpspell}]} && ${Me.Gem[${yaulpspell}]}!=${yaulpspellgem}) { 
    /varset gemnum ${Me.Gem[${yaulpspell}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${yaulpspellgem} "${yaulpspell}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${yaulpspell}]}) { 
    /memspell ${yaulpspellgem} "${yaulpspell}" 
    /delay 25 
  } 

  /if (${Me.Gem[${mitigationspell}]} && ${Me.Gem[${mitigationspell}]}!=${mitigationspellgem}) { 
    /varset gemnum ${Me.Gem[${mitigationspell}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${mitigationspellgem} "${mitigationspell}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${mitigationspell}]}) { 
    /memspell ${mitigationspellgem} "${mitigationspell}" 
    /delay 25 
  } 

  /if (${Me.Gem[${selfbuff}]} && ${Me.Gem[${selfbuff}]}!=${selfbuffgem}) { 
    /varset gemnum ${Me.Gem[${selfbuff}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${selfbuffgem} "${selfbuff}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${selfbuff}]}) { 
    /memspell ${selfbuffgem} "${selfbuff}" 
    /delay 25 
  } 

  /if (${Me.Gem[${grouplonghpbuff}]} && ${Me.Gem[${grouplonghpbuff}]}!=${grouplonghpbuffgemgem}) { 
    /varset gemnum ${Me.Gem[${grouplonghpbuff}]} 
    /notify SpellBookWnd SBW_Spell${gemnum} rightmouseup 
    /memspell ${grouplonghpbuffgem} "${grouplonghpbuff}" 
    /delay 25 
  } 
  /if (!${Me.Gem[${grouplonghpbuff}]}) { 
    /memspell ${grouplonghpbuffgem} "${grouplonghpbuff}" 
    /delay 25 
  } 
  /echo Done Memming Spells! 
/return 

Sub checkCanCast(int spellGem,string spellName) 
DEBUG_2 String SpellName: ${spellName} 
DEBUG_1 Entering Sub checkCanCast 
  /if (${Me.SpellReady[${spellName}]}) /return  
  /if (!${Me.Gem[${spellName}]}) { 
    /if (${Stick.Status.Equal[ON]}) /squelch /stick off 
    /delay 3 
    :mem_spell 
    /if (${Cursor.ID}) { 
      /autoinventory 
      /delay 1 
      /goto :mem_spell  
   } 
DEBUG_2 memspell ${spellGem} ${spellName} 
   /memspell ${spellGem} "${spellName}" 
   /delay 3s ${Me.Gem[${spellName}]} 
   /delay 3s ${Me.SpellReady[${spellName}]} 
   /delay 5 
  } 
DEBUG_1 Leaving Sub checkCanCast 
/return 
Sub Event_GotHit(string Line,string Attacker) 
  /if (${Me.AltAbility[Divine Retribution]} && ${Me.AltAbilityReady[Divine Retribution]}) { 
    /call cast "Divine Retribution" alt 
  } 
  /if (${Verbose}) /gsay Help Help!  ${Attacker} is kicking my ass! 
/return

DO NOT LEAVE THIS AFK, THERE ARE STILL ISSUES THAT NEED TO BE WORKED
 
Last edited:
this one works fine, just no buffs atm. Cade and I are working on the buff issue atm. and if you have any problems remove the buff section from the one u have, or recopy the one from here.
 
i would suggest doing the exact same thing, get your pet a temp and go to town. you still need a healer, they can sit out of group if needed just chance heal message to a /tell. change spells and you can also change /keypress 5 to /cast w/e gem your FD is. if u give me a list of your spells I can change the nec mac for you. there are no issues with the cleric mac, hell he does better than 99% of the clerics i have grouped with in any group lol
 
Maybe this will work:

add this to sub main

Rich (BB code):
/declare 		BuffTime	int 	outer 	20

and this to the :loopstart

Rich (BB code):
/call Buffcheck

and last

Rich (BB code):
Sub Buffcheck
/if (${Me.Buff["Shadow Guard"].Duration}<=${BuffTime}) /call cast "Shadow Guard" 
/if (${Me.Buff["Seduction of Saryrn"].Duration}<=${BuffTime}) /call cast "Seduction of Saryrn" 
/if (${Me.Buff["Force Shield"].Duration}<=${BuffTime}) /call cast "Force Shield" 
/return
 
i will try it later, its too early yet. im headed back to bed lol
 
okay, i cant try anything now since it seems sony fixed my free playing bug (staying logged in after the account expires, now they make you go LD) but i will be on later once i get my account resubscribed.
 
bump bump bump. someone else try this lol. i didnt post it so only myself could use it :p
 
thanks for the red cents guys. if you use it and see anything that can be improved then please reply. dont forget to rate the thread for me :)
 
what "hotkey" starts this once you load the macro? I run it and it does nothing
 
you can start it in nedaria's landing by typing /echo you have entered nedaria's landing, or you can manually get the mission and zone in. once you get into the zone (if you got it manually) type /echo you have slain.
 
i imagine that you can do it with any class as long as you have a cleric as well. pet classes are the best to use though do to the fact that most pets have more hp then PC's hehe. except at higher levels i mean hehe.
 
Forgotten Halls Necro Macro

Users who are viewing this thread

Back
Top
Cart