#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 7
/declare healspell string outer Complete Healing
/declare healspellgem int outer 8
/declare hotspell string outer Sacred Elixir
/declare hotspellgem int outer 4
/declare groupheal string outer Word of Vivification
/declare grouphealgem int outer 1
/declare daspell string outer Divine Barrier
/declare daspellgem int outer 5
/declare yaulpspell string outer Yaulp VII
/declare yaulpspellgem int outer 2
/declare mitigationspell string outer Aegis of Vie Rk. II
/declare mitigationspellgem int outer 3
/declare selfbuff string outer Armor of the Sacred
/declare selfbuffgem int outer 9
/declare grouplonghpbuff string outer Hand of Tenacity Rk. II
/declare grouplonghpbuffgem int outer 6
/declare nukeone string outer Reproval
/declare nuketwo string outer Chromastrike
/declare stunone string outer Sound of Zeal
/declare stuntwo string outer Silent Decree
/declare spellhaste string outer Blessing of Purpose
/declare acbuff string outer Ward of the Dauntless
/declare longhpbuff string outer Hand of Tenacity Rk II
/declare singlesymbuff string outer Symbol of Elushar
/declare groupsymbuff string outer Elushar's Mark
/declare spellhastebuff string outer Blessing of Purpose
/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 TRUE
/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