• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Please no flaming (1 Viewer)

Joined
Jun 18, 2006
RedCents
60¢
Ok, I am going to be brave and ask a noob question because I know there are folks that use this site that have to be green like me.

Ok, I can load plugins, and run macros, like say slipgear.(not a complete tard)

However, I want to be able to make the best use for my toons, I want to learn how to run a bot macro. I just do not understand how to set the dam things up?? Would someone be will to enlighting us noobs. I have gotten PM's while looking at macro threads, from folks asking how to set them up, so I know I am not alone in this.

Can someone show how to set up a healing bot(for exaple), that something we all need/use. Not asking for a complete how to guide (would be nice LOL) but a simple example on setting up one fo the bot programs.

I have looked and not found any threads on this subject.

Thanks

Red Cent To anyone that can help
 
If im soling and need a box healer, i dont really bother wiht macro's

I just use EQBC and make a set of hotkeys like:

/bc cleric //cast "complete healing"
/be cleric //g Casting complete healing, master.

and make use of the extra verticle hotket bars to set this basic keyset:

[follow me]
[warp to me]
[sit/stand]
[quick heal]
[HoT]
[fade]
[whatever else i need]
[complete heal]

But this is no use if your running fully afk.

for those i would just look around for the various cleric macros.

Each has it own method of changing infoprmation. Read over them and you should be able to figure it out.
 
I would suggest autobot, hands down. There is simpy no other macro that is as robust or stable.

I mean, come one...A_Druid treated the macro like his child. It is now being maintained by our most visible MQ2 Dev, DKAA. That says something in itself.

I'll try to simplify autobot as much as possible; however, the Wiki is very self explanitory.

1. You will want to set up a communication software such as an IRC server or learn to use EQBC.

DKAA will tell you to use EQBC; however, I found using IRC easier. I downloaded a trial version of IRCXPro. It handles enough users for a full bot group....perfect.

1a. Why do I need a communication software?

Well, your IRC server is running locally on your lan. This makes it so that your commands are issued with out having to go out the pipe then back to your machine...they are issued locally thus eliminating the latency between you and SOE. EQBC also uses stuff like mq2netstat and mq2netheal (probably not right references but you get the point) to monitor group health locally on your lan. I'm sure there is more to this and I have over simplified; however, that is my limited understanding.

2. Load MQ2IRC.

when you load the plugin, it gives you very clear instructions on the syntax to join a channel. Remember <channel> in IRC is always preceeded by a #.

so your syntax would look something like this

/iconnect <ip of your IRC server> <port usually 6667> <#channel name you created>(yes you need the # before the channel name) Username(the name of your bot)

so the less verbose....
/iconnect 192.168.1.100 6667 #Bots Imabot

3. Download the Zip from the MQ2 VIP Forums. You become an MQ2 VIP HERE!

Now, you might actually have to compile your own plugin!!!!! <GASP> Yes, I didn't find MQ2Debuffs on this site other than in obsolete compiles so, I compiled it myself. There are many fabulous guides here in Redguides that will explain how to compile your own plugin or you can request that one of our compilers include it in their compile. Your choice.

4. Load all your plugins required by Autobot aka. RaidDruid.mac

The requirements are listed in the Wiki located HERE!

Book mark that page because you will be refering to it often until you understand autobot.

5. Run Autobot (raiddruid.mac) once for the first time.

This will generate your RD_charname.ini for that character you have just run this on. End the macro now and start editing your ini.

6. Tip #1 The first thing to edit in your ini is buffs, selfbuffs and debuff #.

So count up your dots, debuffs, mezzes, roots, snares and buffs and edit their appropriate sections. THEN RUN AUTOBOT AGAIN! The ini will now have a template for each number of items you selected in their respective sections. All you have to do now is fill in the blanks, or actually default text in the ini explaining what to do.

7. Once you have entered your spells in the ini.....

you are done.


It really is that easy.

I've run this on a druid as the only healer in a pick up group with no problems at all. So far, I have automated a druid and enchanter in this manner while playing my main character. You will figure out that there are some hot keys you will want in your tool bars once you get the hang if things.

First thing first though - get yourself up and running. This macro is battle tested in large amounts. It pet heals, keeps buffs on pets, your pet or someone elses, it assist heals, it knows what heal to use on your tank and can be set to use different heals for your other group members....I could go on but.....
 
ok this is NOT AT ALL my macro. forget whom made it. so credit goes to whoever the author is. i am in NO WAY trying to claim this as mine AT ALL!!!

with that being said,
this is what i use when i 3 box. this macro is for a cleric mostly but can be changed for any healing class if you know what yer doing.

first.--- put yer main char name here. (i.e. the one who will be holding agro.)
"char name here" (there is 2 spots with this)
second.--- target your main agroer
third.--- start the macro with the cleric by using.....
/mac healbot supernial healing 70 (substitute "supernial healing with yer heal spell and 70 with what percent to start healing at.)
forth.--- start your macros with all in group.

yer done.

this macro will also do group healing if your healer is grouped, you just need to set it to group healing instead of just target healing. i was once like you also, i just took the time away from EQ to read on how to make macros and whats involved in a macro to know how to alter them to my needs.

don't just wait for what ya need to "pop" up so you can use it. take the time while macroing to read whats going on inside a macro, fiddle with "already made macros" to make them do what you want them to do. if you stumble and fall over something, post what YOU did, and see where it went wrong. let people know what yer trying to accomplish and someone will help ya.

not everyone is a flamer, some people like helping others out. just don't.....
EXPECT EVERYTHING TO BE HAND FED TO YOU.
(which im not saying yer doing, just see alot of it on different boards.)

so without further ado, heres the healer mac i use to AA my ranger with my cleric. (spot excluded to protect my toons :P )


lastly save this macro as "healbot.mac"



Rich (BB code):
#Event GotHit       "#*# YOU for#*#" 
#Event ImDead       "You have been slain by#*#" 

#Chat  Tell 
#Chat  Group 

#include spell_routines.inc 
#include wait4rez.inc 

Sub Main 

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

   /declare MasterList string outer "char name here" 
   /declare MasterOnly outer FALSE 

   /declare spellset             string outer PL 
   /declare patchheal            string outer Pious Remedy 
   /declare patchhealgem         string outer gem1 
   /declare healspell            string outer Complete Healing 
   /declare healspellgem         string outer gem2 
   /declare hotspell             string outer Pious Elixir 
   /declare hotspellgem          string outer gem3 
   /declare groupheal            string outer Word of Replenishment 
   /declare grouphealgem         string outer gem4 
   /declare daspell              string outer Divine Barrier 
   /declare daspellgem           string outer gem5 
   /declare yaulpspell           string outer Yaulp VII 
   /declare yaulpspellgem        string outer gem6 
   /declare mitigationspell      string outer Panoply of Vie 
   /declare mitigationspellgem   string outer gem7 
   /declare selfbuff             string outer Armor of the Pious 
   /declare selfbuffgem          string outer gem8 
   /declare grouplonghpbuff      string outer Virtue 
   /declare grouplonghpbuffgem   string outer gem9 
   /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 
    
   /declare AnnounceChannel      string outer say 
   /declare Verbose                     outer TRUE 
   /declare autohealmode         int    outer 1 
   /declare lootleft             int    outer 0 
   /declare healspellrange       int    outer 120 
   /declare patchhealrange       int    outer 120 
   /declare hotspellrange        int    outer 120 
   /declare groupspellrange      int    outer 100 
   /declare usegroupheal         int    outer 1 
   /declare usedivarb            int    outer 1 
   /declare healafterdivarb      int    outer 0 
   /declare announce             int    outer 1 
   /declare autosit              int    outer 0 
   /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 101 
   /declare healpetmode          int    outer 1 
   /declare pethealpoint         int    outer 50 
   /declare manatohealpet        int    outer 90 
   /declare pethealspell         string outer Pious Remedy 
   /declare pethealspellrange    int    outer 200 
   /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" 
   /declare NoHotID[6]           int    outer 0 

| 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 20 
   /declare tankhealpoint        int outer 65 
   /declare casterhotpoint       int outer 85 
   /declare casterpatchpoint     int outer 80 
   /declare necshmpatchpoint     int outer 75 
   /declare defaultpatchpoint    int outer 80 

| ############ Self Buff List.    
|  /declare SelfBuffRecheck   int    outer 600 
|  /declare SelfBuffTimer     timer  outer 0 

 | /declare SelfBuffTotal     int    outer 4 
|  /declare SelfBuffMax1      int    outer 20 
|  /declare SelfBuff1         string outer Blessing of Devotion 
|  /declare SelfBuffGem1      string outer gem9 
|  /declare SelfBuffIcon1     string outer Blessing of Devotion 
 | /declare SelfBuffMax2      int    outer 20 
|  /declare SelfBuff2         string outer Conviction 
|  /declare SelfBuffGem2      string outer gem9 
|  /declare SelfBuffIcon2     string outer Conviction 
|  /declare SelfBuffMax3      int    outer 20 
|  /declare SelfBuff3         string outer Symbol of Balikor 
|  /declare SelfBuffGem3      string outer gem9 
|  /declare SelfBuffIcon3     string outer Symbol of Balikor 
|  /declare SelfBuffMax4      int    outer 20 
|  /declare SelfBuff4         string outer Armor of the Pious 
|  /declare SelfBuffGem4      string outer gem9 
|  /declare SelfBuffIcon4     string outer Armor of the Pious 
    
|**---------------------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}) { 
      /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---------------------| 

   /declare MovingCamp            outer FALSE 
   /declare Following             outer FALSE 
   /declare FollowName     string outer 
   /declare StaticCamp            outer TRUE 
   /declare askforbuffs           outer TRUE 
   /declare HomeX          int    outer ${Me.X} 
   /declare HomeY          int    outer ${Me.Y} 
   /declare healpct        int    outer 90 
   /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 "char name here" 
   /declare tankclass      string outer 
   /declare rodwait        int    outer 0 
   /declare pallycount     int    outer 0 
   /declare stophealpoint  int    outer ${defaultstophealpoint} 
   /declare oomspam        timer  outer 600 
   /declare duckspam       timer  outer 100 
   /declare duckfdspam     timer  outer 400 
   /declare duckselfspam   int    outer 1 
   /declare nomtspam       timer  outer 300 
   /declare aetime         int    outer 0 
   /declare helpspam       timer  outer 50 
    
  /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 ${healpct}%  
  } 
  /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 
  /if (!${InvSlot[charm].Item.Name.Length} && !${InvSlot[chest].Item.Name.Length} && !${InvSlot[head].Item.Name.Length} ) /call Event_ImDead 
  /memspellset ${spellset} 
  
  :loop 
  /if (${GameState.Equal[CHARSELECT]}) /end 
  /if (!${Spawn[${tanknameid}].ID} || ${Spawn[${tanknameid}].Type.Equal[NPC]}) /call TankCheck 
  /if (!${Target.ID} || ${Target.ID}!=${tanknameid} && ${Spawn[${tanknameid}].Type.NotEqual[Corpse]} && ${Spawn[${tanknameid}].ID} && !${Spawn[${tanknameid}].Type.Equal[NPC]}) { 
    /target id ${tanknameid} 
    /delay 5 ${Target.ID} == ${tanknameid} 
  } 
  /doevents 
  /if (${Me.Invis} || ${Following} || ${Me.Buff[Divine Aura].ID} || ${Me.Buff[Sacred Barrier].ID} || ${Me.Buff[Divine Barrier].ID}) /goto :loop 
  /if (${Me.PctHPs} > ${selfhealpoint} && ${Me.PctMana} < 95) /call MedTime 
  /if (${Target.ID}==${tanknameid} && ${Target.Type.NotEqual[corpse]}) { 
    /if (${Target.Distance} <= ${patchhealrange} && ${Target.PctHPs} <= ${healpct}*.7 && ${Me.SpellReady[${patchheal}]}) { 
      /if (${announce}) /${AnnounceChannel} Casting "${patchheal}" on %tin ${Spell[${patchheal}].CastTime} seconds! 
      /call Cast "${patchheal}" ${patchhealgem} 0 CheckHP 
    }  
    /if (${Target.Distance} <= ${healspellrange} && ${Target.PctHPs}<= ${healpct} && ${Target.PctHPs} >= ${healpct}*.7 && ${Me.SpellReady[${healspell}]}) { 
      /if (${announce}) /${AnnounceChannel} Casting "${healspell}" on %t in ${Spell[${healspell}].CastTime} seconds! 
      /call Cast "${healspell}" ${healspellgem} 0 CheckHP 
      /delay 31s
    } 
  /if (!${Me.Buff[Armor of the Zealot].ID}) { 
      /call cast "Armor of the Zealot"
      /delay 5s 
       
   } 

  /if (!${Me.Buff[Elixir of Clarity IX].ID} && ${FindItem[Distillate of Clarity IX].InvSlot}) { 
      /potionbelt activate 1 
      /delay 3s 
   }
  
  
  
  } 
  /if (!${autohealmode}) /goto :loop 
  /if (${autohealmode} == 1 && ${Me.PctHPs} <= ${selfhealpoint}) { 
    /call Healself 
    /goto :loop 
  } 
  /if (${autohealmode} >= 2) { 
    /if (${Me.PctHPs} <= ${selfhealpoint}) /call Healself 
    /call Healgroup 
  } 
|  /if (${NearestSpawn[npc].Distance} > ${distancetosit} && !${SelfBuffTimer}) /call BuffSelf 
  /goto :loop 
/return 

Sub TankCheck 
  /if (${Spawn[${tanknameid}].Name.NotEqual[${tankname}]}) /varset tanknameid 0 
  /if (!${Spawn[${tanknameid}].ID}) /if (${Spawn[${tankname}].ID}) { 
    /if (${SpawnCount[${tankname} ${tankclass}]}) { 
      /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 (!${Spawn[${tanknameid}].ID} && !${nomtspam}) { 
    /e Warning No Designated MT is available 
    /varset nomtspam 300 
  } 
/return 

Sub Healself 
  /if (${usedivarb} && ${Me.PctHPs} <= ${divarbpoint}) /call Divarbcast 
  /if (${Me.PctHPs} > ${selfhealpoint} || ${Me.Buff[Divine Aura].ID} || ${Me.Buff[Sacred Barrier].ID} || ${Me.Buff[Divine Barrier].ID}) /return 
  /target myself 
  /delay 1s ${Target.ID} == ${Me.ID} 
  /if (${Me.PctHPs} < ${selfhealpoint} && ${Me.PctHPs} > ${dacastpoint}) { 
    /if (${announce}) /${AnnounceChannel} Casting ${patchheal} on %t 
    /call Cast "${patchheal}" ${patchhealgem} 0 
  } 
  /if (${Me.PctHPs} <= ${dacastpoint} && ${Me.AltAbilityReady[Sanctuary]}) { 
    /if (${announce}) /${AnnounceChannel} Sanctuary!  Sanctuary! 
    /call cast "Sanctuary" alt 
    /delay 1s 
    /if (${Me.Buff[Sanctuary].ID}) { 
      /if (${announce}) /${AnnounceChannel} Casting ${patchheal} on %t 
      /call Cast "${patchheal}" ${patchhealgem} 0 
    } 
  } else /if (${Me.AltAbilityReady[Bestow Divine Aura]} && ${Me.PctHPs} <= ${dacastpoint}) { 
    /if (${announce}) /${AnnounceChannel} Bestowing Divine Aura on myself!  NO HEALS FOR 30 SECONDS! 
    /call cast "Bestow Divine Aura" alt 
  } else /if (${Me.SpellReady[${daspell}]} && !${Me.Buff[Divine Aura].ID} && !${Me.Buff[Sacred Barrier].ID} && !${Me.Buff[Divine Barrier].ID}  && ${Me.PctHPs} <= ${dacastpoint}) { 
    /if (${announce}) /${AnnounceChannel} Casting DA!! <<WARNING>> DA!! No Heals for 18 SECONDS 
    :retryda 
    /call Cast "${daspell}" 1s 
    /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} 
      /doevents 
      /goto :dawait 
    } 
  }            
/return 

Sub Healgroup 
  :healgroup 
  /varset worsthurt NULL 
  /varset worsthp 100 
  /varset worstclass NULL 
  /varset minorhurt 0 
  /varset majorhurt 0 
  /for gmember 0 to ${Group.Members} 
    /if (!${onlyhealfd}) { 
      /if (${Group.Member[${gmember}].Distance}<=${patchhealrange} && ${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} 
       } 
    } else { 
      /if (${Group.Member[${gmember}].Distance}<=${patchhealrange} && ${Group.Member[${gmember}].PctHPs}<=${worsthp}) { 
        /if (!${Select[${Group.Member[${gmember}].Class.ShortName},MNK,NEC]}) { 
          /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} 
        } else /if (${Group.Member[${gmember}].State.Equal[feign]}) { 
          /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}].PctHPs} < 80 && ${Group.Member[${gmember}].PctHPs} > 60 && ${Group.Member[${gmember}].Distance} < ${groupspellrange}) /varcalc minorhurt ${minorhurt}+1 
    /if (${Group.Member[${gmember}].PctHPs} < 60 && ${Group.Member[${gmember}].PctHPs} > 1 && ${Group.Member[${gmember}].Distance} < ${groupspellrange}) /varcalc majorhurt ${majorhurt}+1 
  /next gmember 
  /if (${autohealmode}==3) { 
    /if (${Spawn[${tanknameid}].ID} && ${Spawn[${tanknameid}].PctHPs} < ${tankhealpoint} && ${Spawn[${tanknameid}].Distance} < ${healspellrange}) /return 
    /if (${Me.PctHPs} <= ${selfhealpoint}) /return 
  } 
  /if (!${majorhurt} && !${minorhurt}) /return 
  /if (${usedivarb} && ${worsthp} && ${worsthp} <= ${divarbpoint}) /call Divarbcast 
  /if (${majorhurt}+${minorhurt} >= 3 && ${usegroupheal} && ${Me.SpellReady[${groupheal}]}) { 
    /if (${announce}==1) /${AnnounceChannel} Inc Grp Heal, get close 
    /call Cast "${groupheal}" ${grouphealgem} 1s 
    /return 
  } 
 /if ((${meleeClasses.Find[${worstclass}]} || ${dpsClasses.Find[${worstclass}]}) && ${Spawn[${worsthurtid}].ID}) { 
    /if (${worsthp} <= ${tankhealpoint} && ${worsthp} >= ${tankhealpoint}*.7 && ${majorhurt} <= 1 && ${Me.SpellReady[${healspell}]}&& ${Spawn[${worsthurtid}].Distance} < ${healspellrange}) { 
      /squelch /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (${announce}) /${AnnounceChannel} Casting ${patchheal} on %t 
      /call Cast "${patchheal}" ${patchhealgem} 2s CheckHP 
      /delay 10s
      /return 
    } else /if (${worsthp} <= ${defaultpatchpoint} && ${majorhurt} <= 1 && ${Me.SpellReady[${patchheal}]} && ${Spawn[${worsthurtid}].Distance} < ${patchhealrange}) { 
      /squelch /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (${announce}) /${AnnounceChannel} Casting ${patchheal} on %t 
      /call Cast "${patchheal}" ${patchhealgem} 2s CheckHP 
      /return 
    } 
  } else /if (${casterClasses.Find[${worstclass}]} && ${Spawn[${worsthurtid}].ID} && ${worsthurtid} != ${Me.ID}) { 
    /if (${worsthp} < ${casterhotpoint} && ${worsthp} > ${casterpatchpoint} && ${worsthp} && ${Me.SpellReady[${hotspell}]} && ${Spawn[${worsthurtid}].Distance} < ${hotspellrange} && !${NoHotID[${Group.Member[${worsthurt}]}]}) { 
      /squelch /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (${announce}) /${AnnounceChannel} Casting ${hotspell} on %t 
      /call Cast "${hotspell}" ${hotspellgem} 0 CheckHP 
      /delay 13s
      /varset NoHotID[${Group.Member[${worsthurt}]}] ${worsthurtid} 
      /timed 400 NoHotID[${Group.Member[${worsthurt}]}] 0 
      /return 
    } else /if (${worsthp} < ${casterpatchpoint} && ${worsthp} && ${Me.SpellReady[${patchheal}]} && ${Spawn[${worsthurtid}].Distance} < ${patchhealrange}) { 
      /squelch /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (${announce}) /${AnnounceChannel} Casting ${patchheal} on %t 
      /call Cast "${patchheal}" ${patchhealgem} 0 CheckHP 
      /return 
    } 
  } else /if (${canniClasses.Find[${worstclass}]} && ${Me.SpellReady[${patchheal}]} && ${Spawn[${worsthurtid}].ID}&& ${Spawn[${worsthurtid}].Distance} < ${patchhealrange}) { 
    /if (${worsthp} <= ${necshmpatchpoint} && ${worsthp}) { 
      /squelch /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (${announce}) /${AnnounceChannel} Casting ${patchheal} on %t 
      /call Cast "${patchheal}" ${patchhealgem} 0 CheckHP 
      /return 
    } 
  } else /if (${worsthp} <= ${defaultpatchpoint} && ${worsthp} && ${Spawn[${worsthurtid}].ID} && ${Me.SpellReady[${patchheal}]}&& ${Spawn[${worsthurtid}].Distance} < ${patchhealrange}) { 
    /squelch /target id ${worsthurtid} 
    /delay 5 ${Target.ID}==${worsthurtid} 
    /if (${announce}) /${AnnounceChannel} Casting ${patchheal} on %t 
    /call Cast "${patchheal}" ${patchhealgem} 0 CheckHP 
    /return 
  } 
  /if (${Spawn[${tanknameid}].PctHPs} > ${healpct} || !${Spawn[${tanknameid}].ID} || ${Spawn[${tanknameid}].Type.Equal[corpse]} && ${healpetmode} && ${Me.PctMana} > ${manatohealpet}) /call HealPet 
/return 

Sub Divarbcast 
  /if (${Me.Casting.ID}) /call Interrupt 
  /if (${announce}) /${AnnounceChannel} Inc Divine Arbitration / Epic 
  /if (${FindItem[Aegis of Superior Divinity].InvSlot} && !${FindItem[Aegis of Superior Divinity].Timer}) { 
    /call Cast "Aegis of Superior Divinity" item 0 
    /return 
  } else /if (${FindItem[Harmony of the Soul].InvSlot} && !${FindItem[Harmony of the Soul].Timer}) { 
    /call Cast "Harmony of the Soul" item 0 
    /return 
  } else /if (${Me.AltAbilityReady[Divine Arbitration]}) { 
    /call Cast "Divine Arbitration" alt 0 
    /return 
  } 
  /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 
      /squelch /target id ${Group.Member[${q}].ID} 
      /delay 1s ${Target.ID}==${Group.Member[${q}].ID} 
      /if (${announce}) /${AnnounceChannel} Bestowing Divine Aura on: %t 
      /call Cast "Bestow Divine Aura" alt 5s 
    } 
  /next q 
/return 

Sub HealPet 
   /if (${Me.Invis}) /return 
   /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} 
               /varset worsthp ${Group.Member[${gmember}].Pet.PctHPs} 
            } 
         } 
      } 
   /next gmember 
   /if (${worsthurt.Length}) { 
      /if (${Spawn[${worsthurtid}].Type.NotEqual[Pet]}) /return 
      /squelch /target id ${worsthurtid} 
      /delay 5 ${Target.ID}==${worsthurtid} 
      /if (!${Target.ID}) /return 
      /if (${Target.ID}!=${worsthurtid}) /return 
      /delay 3 
      /if (${Target.PctHPs} < ${pethealpoint}) { 
         /if (${announce}==1) /${AnnounceChannel} Casting ${pethealspell} on %t 
         /varcalc stophealpoint ${pethealpoint}+5 
         /call Cast "${pethealspell}" spell 0 CheckHP 
         /delay 13s
         /varset stophealpoint ${defaultstophealpoint} 
         /delay 15 ${Me.SpellReady[${pethealspell}]} 
      } 
   } 
/return 

Sub MedTime 
  /if (${FindItem["Rod of Mystical Transvergance"].InvSlot} && ${Me.PctMana}<=70 && ${Me.PctHPs} > 70 && !${FindItem["Rod of Mystical Transvergance"].Timer}) /call Cast "Rod of Mystical Transvergance" item 
  /if (${autosit} && ${Me.PctMana}<=98 && !${Me.Casting.ID} && ${Me.Standing} && !${Following} && !${NearestSpawn[1,npc radius ${distancetosit} zradius 30].Distance} && !${Me.Buff[${yaulpspell}].ID} && !${Me.Moving}) /sit 
  /if (${Me.Standing} && !${Me.Mount.ID} && ${Me.SpellReady[${yaulpspell}]} && !${Me.Buff[${yaulpspell}].ID} && !${Me.Buff[Spiritual Vigor].ID} && !${Me.Buff[Strength of Tunare].ID} && !${Me.Buff[Spiritual Vitality].ID}) /call Cast "${yaulpspell}" ${yaulpgem} 
  /if (${Me.Sitting} && !${Window[SpellBookWnd].Open} && (${NearestSpawn[1,npc radius ${distancetosit} zradius 30].Distance} || ${Me.PctMana} > 95)) /stand 
   /if ((${Bool[${Me.Standing}]})&&(${Me.SpellReady[${mitigationspell}]})&&(!${Me.Buff[${mitigationspell}].ID})) { 
       /target myself 
       /delay 2 
       /call Cast "${mitigationspell}" gem7 
   } 
|   /if (!${Me.Buff["Armor of the Pious"].ID} ) /call cast "Armor of the Pious" gem8 2s 
|   /if (!${Me.Buff["Aura of Devotion"].ID} ) /call cast "Aura of Devotion" gem9 2s 
|   /if (!${Me.Buff["Form of Protection I"].ID} ) /call cast "Dark Void Shoulders" item 2s 
   /if (${Me.PctHPs}<=${selfhealpoint}) /return 
  /if (${Me.PctMana} < 20 && ${announce} && !${oomspam}) { 
    /${AnnounceChannel} ${Me.PctMana} Mana 
    /varset oomspam 600 
  } 
/return 

Sub BuffSelf 
|  /if (${Me.Invis}) /return 
|  /declare i int local 
|  /for i 1 to ${SelfBuffTotal} 
|    /if (${Spell[${SelfBuffIcon${i}}].Stacks} && ((${SelfBuffGem${i}.Find[gem]} && ${Me.CurrentMana} > ${Spell[SelfBuff${i}].Mana}) || (${SelfBuffGem${i}.Equal[item]} && !${FindItem[${SelfBuff${i}}].Timer}) || (${SelfBuffGem${i}.Equal[alt]} && ${Me.AltAbilityReady[${SelfBuff${i}}]}))) { 
|      /if (${SelfBuffGem${i}.Find[gem]} && ${Me.Gem[${SelfBuff${i}}]} && (!${Me.SpellReady[${SelfBuff${i}}]} || ${Me.CurrentMana} < ${Spell[${SeflBuff${i}}].Mana})) /next i 
|      /squelch /target id ${Me.ID} 
|      /delay 1s ${Target.ID}==${Me.ID} 
|      /if (${Verbose}) /${AnnounceChannel} Buffing myself with ${SelfBuffIcon${i}} 
 |     /call Cast "${SelfBuff${i}}" ${SelfBuffGem${i}} 6s 
|      /squelch /target clear 
|    }    
|  /next i 
|  /varset SelfBuffTimer 10 
/return 

Sub CheckHP 
  /if (${autointerrupt} && ${Target.PctHPs} >= ${stophealpoint} && (${Me.Casting.Name.Equal[${healspell}]} || ${Me.Casting.Name.Equal[${patchheal}]} || ${Me.Casting.Name.Equal[${hotspell}]})) { 
    /if (${announce} && !${duckspam}) /${AnnounceChannel} Ducking heal on %t 
    /if (!${duckspam}) /varset duckspam 100 
    /call Interrupt 
    /return 
  } 
  /if (${interrupt2healself} && ${Me.PctHPs} < ${interrupt2healselfhp}) { 
    /if (${usedivarb} && ${Me.PctHPs} < ${divarbpoint} && ((${FindItem[Aegis of Superior Divinity].InvSlot} && !${FindItem[Aegis of Superior Divinity].Timer}) || (${FindItem[Harmony of the Soul].InvSlot} && !${FindItem[Harmony of the Soul].Timer}) || (${Me.AltAbilityReady[Divine Arbitration]}))) { 
      /call Interrupt 
      /call Divarbcast 
      /return 
    } else { 
      /if (!${duckselfspam}) /docommand /${AnnounceChannel} Ducking heal on %tso I can heal myself 
      /varset duckselfspam 100 
      /call Interrupt 
      /call HealSelf 
      /return 
    } 
  } 
  /if (${onlyhealfd} && ${Select[${Target.Class.ShortName},MNK,NEC]} && ${Target.State.NotEqual[feign]}) { 
    /if (${announce} && !${duckfdspam}) /${AnnounceChannel} Ducking heal on %tbecause they won't stay down! 
    /if (!${duckfdspam}) /varset duckfdspam 400 
    /call Interrupt 
    /return 
  } 
  /if (${Me.Casting.Name.Equal[${hotspell}]} && ${casterClasses.Find[${worstclass}]} && ${Spawn[${worsthurtid}].PctHPs} < ${casterpatchpoint}) { 
    /if (${announce} && !${duckspam}) /${AnnounceChannel} Ducking HoT on %tto patch heal! 
    /if (!${duckfdspam}) /varset duckfdspam 400 
    /call Interrupt 
    /return 
  } 
  /if (${usedivarb} && ${castEndTime}>=${interrupt2divarb} && ((${FindItem[Aegis of Superior Divinity].InvSlot} && !${FindItem[Aegis of Superior Divinity].Timer}) || (${FindItem[Harmony of the Soul].InvSlot} && !${FindItem[Harmony of the Soul].Timer}) || (${Me.AltAbilityReady[Divine Arbitration]}))) { 
    /for gmember 0 to ${Group} 
      /if (${Group.Member[${gmember}].PctHPs} < ${divarbpoint} && ${Group.Member[${gmember}].Distance} < 200 && ${Spawn[${Group.Member[${gmember}].ID}].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}]}) { 
      /squelch /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]}) { 
    /target ${Sender} 
    /delay 3 
    /varset followid ${Target.ID} 
    /varset Following TRUE 
    /varset FollowName ${ChatSender} 
    /squelch /stick 14 hold 
    /doevents 
  } 
  /if (${ChatText.Equal[Stay]}) { 
    /varset Following     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[nuke]}) { 
      /if (${Me.PctMana}<30) { 
         /${AnnounceChannel} Cleric Mana ${Me.PctMana}%, holding on nukes! 
      } else { 
         /assist ${Sender} 
         /delay 5 
         /if (${Target.Type.NotEqual[NPC]}) { 
            /assist ${Sender} 
            /delay 5 ${Target.Type.Equal[NPC]} 
         } 
         /if ((${Target.Type.Equal[NPC]})&&(${Target.PctHPs}<=90)) { 
            /if (${Me.SpellReady[${nukeone}]}) { 
               /if (${announce}==1) /${AnnounceChannel} Casting ${nukeone} on %t 
               /call Cast "${nukeone}" spell 3s 
            } else /if (${Me.SpellReady[${nuketwo}]}) { 
               /if (${announce}==1) /${AnnounceChannel} Casting ${nuketwo} on %t 
               /call Cast "${nuketwo}" spell 3s 
            } else { 
              /${AnnounceChannel} nukes not ready 
            } 
            /if (${Me.PctMana}<=60) /${AnnounceChannel} FYI Cleric Mana ${Me.PctMana}% 
         } else { 
           /${AnnounceChannel} wrong target (${Target.Type} at ${Target.PctHPs}% HP) 
         } 
      } 
   } 
   /if (${ChatText.Equal[stun]}) { 
      /assist ${Sender} 
      /delay 5 
      /if (${Target.Type.NotEqual[NPC]}) { 
         /assist ${Sender} 
         /delay 5 ${Target.Type.Equal[NPC]} 
      } 
      /if ((${Target.Type.Equal[NPC]})&&(${Target.PctHPs}<=90)) { 
         /if (${Me.SpellReady[${stunone}]}) { 
            /if (${announce}==1) /${AnnounceChannel} Casting ${stunone} on %t 
            /call Cast "${stunone}" spell 3s 
         } else /if (${Me.SpellReady[${stuntwo}]}) { 
            /if (${announce}==1) /${AnnounceChannel} Casting ${stuntwo} on %t 
            /call Cast "${stuntwo}" spell 3s 
         } else { 
           /${AnnounceChannel} stuns not ready 
         } 
      } else { 
        /${AnnounceChannel} wrong target (${Target.Type} at ${Target.PctHPs}% HP) 
      } 
   } 
   /if (${ChatText.Equal[wov]}) { 
      /call FindExactPC ${Sender} 
      /if (${Macro.Return.NotEqual[TARGET_SUCCESS]}) /return 
      /if (${announce}) /${AnnounceChannel} Casting ${acbuff} on %t 
      /call Cast "${acbuff}" gem9 0 CheckHP 
   } 
   /if ((${ChatText.Equal[patch]})||(${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}) /${AnnounceChannel} Casting ${patchheal} on %t 
         /call Cast "${patchheal}" ${patchhealgem} 2s 
         /delay 15 ${Me.SpellReady[${patchheal}]} 
      } else { 
        /tell ${Sender} you're out of range 
      } 
   } 
   /if ((${ChatText.Equal[balikor]})||(${ChatText.Equal[conviction]})||(${ChatText.Equal[devotion]})||(${ChatText.Equal[rgc]})||(${ChatText.Equal[hot me]})||(${ChatText.Equal[ch me]})||(${ChatText.Equal[pb]})) { 
      /if (${Spawn[pc ${Sender}].Distance}>200) /return 
      /call FindExactPC ${Sender} 
      /if (${Macro.Return.NotEqual[TARGET_SUCCESS]}) /return 
   } 
   /if (${ChatText.Equal[balikor]}) { 
     /if (${announce}) /${AnnounceChannel} Casting ${singlesymbuff} on %t 
     /call Cast "${singlesymbuff}" gem9 0 CheckHP 
   } 
   /if (!${Me.Buff[Blessed Armor of the Risen].ID}) { 
      /call cast "Blessed Armor of the Risen"
      /delay 5s 
       
   } 

  /if (!${Me.Buff[Elixir of Clarity VIII].ID} && ${FindItem[Distillate of Clarity VIII].InvSlot}) { 
      /potionbelt activate 1 
      /delay 3s 
   }
     
   
   /if (${ChatText.Equal[vict]}) { 
     /if (${announce}) /${AnnounceChannel} Casting ${longhpbuff} on %t 
     /call Cast "${longhpbuff}" gem9 0 CheckHP 
   } 
   /if (${ChatText.Equal[devotion]} || ${ChatText.Find[spell haste]}) { 
      /call Cast "${spellhastebuff}" gem9 0 CheckHP 
   } 
   /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}" gem7 0 CheckHP 
      } 
   } 
    /if ((${ChatText.Equal[rez me]})&&(${Spawn[${Sender}].Type.Find[Corpse]})) { 
    /tell ${Sender} Rezz inc! 
    /target ${Sender}'s Corpse 
    /if (${Target.Type.Equal[Corpse]}) /call cast "Water Sprinkler of Nem Ankh" item 10s 
   } 
   /if (${ChatText.Equal[rez]})  /call FindExactPC ${Sender} { 
   /assist 
   /delay 5 
   /call cast "Water Sprinkler of Nem Ankh" item 5s 
   } 
   /if (${ChatText.Equal[mok]})  /call FindExactPC ${Sender} { 
   /assist 
   /delay 1s 
   /call Cast "Mark of the Blameless" gem9 5s 
   } 
   /if (${ChatText.Equal[heal pet]}) { 
      /target ${Spawn[pc ${Sender}].Pet} 
      /call Cast "${patchheal}" gem1 3s 
   } 
   /if (${ChatText.Equal[virt pet]}) { 
      /target ${Spawn[pc ${Sender}].Pet} 
      /delay 1s 
      /call Cast "Virtue" gem8 5s 
   } 
   /if (${ChatText.Equal[temp pet]}) { 
      /target ${Spawn[pc ${Sender}].Pet} 
      /delay 1s 
      /call Cast "Temperance" gem8 5s 
   } 
   /if (${ChatText.Equal[buff pet]}) { 
      /target ${Spawn[pc ${Sender}].Pet} 
      /delay 1s 
      /call Cast "Conviction" gem8 5s 
   } 
   /if (${ChatText.Equal[pov]}) { 
       /call FindExactPC ${Sender} 
       /call Cast "Panoply of Vie" gem7 5s 
   } 
   /if (${ChatText.Equal[purify]}) { 
      /call FindExactPC ${Sender} 
         /call Cast "41" alt 
} 
   /if (${ChatText.Equal[cure]}) { 
      /call Cast "Resplendent Cure" alt 3s 
} 
  /if (${ChatText.Equal[Gbuff]}) { 
      /target myself 
      /g Doing group buffs 
      /call Cast "Aura of Devotion" gem8 5s 
      /call Cast "Armor of the Pious" gem7 5s 
      /call Cast "Hand of Conviction" gem8 5s 
      /call Cast "Fabled Journeyman's Boots" item 
      /target myself 
      /call Cast "Panoply of Vie" 5s gem9 10s 
      /if (${Me.PctMana}<=55) /g ${Me.PctMana}m Need to med for a moment 
          } 
   /if (${ChatText.Equal[buff him]}) { 
      /call FindExactPC ${Sender} 
      /assist 
      /delay 14 
      /call Cast "Conviction" gem8 7s 
      /delay 5 
      /call Cast "Panoply of Vie" gem7 5s 
          /return 
      } 
   /if (${ChatText.Equal[buff me]}) { 
      /call FindExactPC ${Sender} 
         /call Cast "Conviction" gem8 7s 
         /call Cast "Panoply of Vie" gem7 5s 
          /return 
      } 
   /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} 
      /delay 3 
      /if (${Me.AltAbilityReady[Bestow Divine Aura]} && ${Target.Name.Equal[${Spawn[pc ${Sender}].Pet.Name}]}) { 
         /call Cast "39" alt 
      } else { 
         /${AnnounceChannel} Bestow Divine Aura is not ready, or Target (${Target.CleanName}) OOR or wrong target 
      } 
   } 
   /if (${ChatText.Equal[pb]}) /call Cast "Pure Blood" gem9 10s 
   /if (${ChatText.Equal[hot me]} && !${Me.Invis}) { 
      /if (${Target.Distance}<=${hotspellrange}&&  ${Me.SpellReady[${hotspell}]}) { 
         /if (${announce}==1) /${AnnounceChannel} Casting ${hotspell} on %t 
         /call Cast "${hotspell}" ${patchhealgem} 2s 
      } else { 
        /tell ${Sender} You're out of range. 
      } 
   } 
   /if (${ChatText.Equal[ch me]} && !${Me.Invis} && ${Me.SpellReady[${healspell}]}) { 
      /if (${Target.Distance}<=100) { 
         /if (${announce}==1) /${AnnounceChannel} Casting Complete Healing on %t 
         /call Cast ${healspell} ${healspellgem} 0 CheckHP 
      } else { 
        /tell ${Sender} You're out of range. 
      } 
   } 
   /if (${ChatText.Equal[mana check]}) /${AnnounceChannel} Cleric Mana ${Me.PctMana}% 
/return 

Sub ReturnHome 
  /if (${Following} || ${MovingCamp} || !${StaticCamp}) /return 
  /if (${Me.Sitting}) /stand 
  /if (${Math.Distance[${HomeY},${HomeX}]}<10) { 
    /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 
  /squelch /target ${tankname} 
  /face fast nolook 
  /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 
/return 

Sub Event_ImDead 
  /varset Following FALSE 
  /delay 20s 
  /memspellset ${spellset} 
  /call Wait4Rez 
/return 

Sub Event_GotHit(string line, string attacker) 
  /if (${Me.AltAbility[Divine Retribution]} && ${Me.AltAbilityReady[Divine Retribution]}) /call cast "Divine Retribution" alt 
  /if (!${helpspam}) { 
    /if (${announce}) /${AnnounceChannel} Help Help!  I am being beaten on !! 
    /varset helpspam 100 
  } 
/return
 
Please no flaming

Users who are viewing this thread

Back
Top