|*****************************************************************|
|
| My Cleric Macro
| By
| chrismed
|
| This Macro was written when my
| Cleric was LVL 40. Use what you want
| I hope this helps anyone that needs or
| or wants a striat forward and simple
| Macro for thier cleric.
|
|******************************************************************|
#include Spell_routines.inc
#turbo 40
#chat group
#chat tell
|----------------------------- Events ---------------------------------|
#event buffme "#1# tells the group, 'check buffs'"
#event giveheal "#1# tells the group, 'plz heal'"
#event evac "#1# tells the group, 'EVAC'"
#event helpcommands "#1# tells the group, 'whitelite'"
Sub Main
|------------- Spells ------------|
| 1. Frenzied Strength....Armor of Protection
| 2. Resolution
| 3. Armor of Faith
| 4. Gate.................Symbol Of Naltron
| 5. Word of Healing
| 6. Celestial Remedy
| 7. Superior Healing
| 8. Complete Heal
|---------------------------------|
|----------------------------- MySpells --------------------------------|
/declare AoP string outer Armor of Protection
/declare FastTnkHeal string outer Superior Healing
/declare TempSTR string outer Frenzied Strength
/declare HPsACBuff string outer Resolution
/declare HPBuff string outer Symbol of Naltron
/declare ACBuff string outer Armor of Faith
/declare GateSpell string outer Gate
/declare GrpHeal string outer Word of Healing
/declare HoTHeal string outer Celestial Remedy
/declare SuperHeal string outer Superior Healing
/declare CHeal string outer Complete Heal
|----------------------------- Heal Pcts -------------------------------|
|**Group Heal Pct**|
/declare GrpLowHp int outer 60
|**Heal Over Time Pct**|
/declare HoTMinHP int outer 60
/declare HoTMaxHP int outer 70
|**Direct Heal Pct**|
|Complete Heal|
/declare CHMinHP int outer 40
|Superior Heal|
/declare SprHealHP int outer 50
|---------------------- Interupt Healing Pct ----------------------------|
|**Stop Healing if Target has Already Been Healed Pct**|
/declare StopHealPct int outer 80
|**Stop Complete Heal on Tank to Heal for a Faster Heal**|
/declare StopTankHealPct int outer 25
|---------------------- Each timer for Heal Over time -------------------|
/declare HoTTimer0 timer outer
/declare HoTTimer1 timer outer
/declare HoTTimer2 timer outer
/declare HoTTimer3 timer outer
/declare HoTTimer4 timer outer
/declare HoTTimer5 timer outer
|---------------------------- Buff Timers -------------------------------|
/declare SuperTankHealTimer timer outer
/declare AoPTimer timer outer
/declare HPsACBuffTimer timer outer
/declare HPBuffTimer timer outer
/declare ACBuffTimer timer outer
/declare TempSTRTimer timer outer
|-------------------------- Group Heal Counter --------------------------|
/declare GrpHealCounter int local 0
|---------------------------- Other Declares ----------------------------|
/declare MTank string outer Backbreaker
/declare x int local
|---------- Healing Loop --------------|
:med
/if ((!${Me.Casting.ID}) && (${Me.State.Equal[STAND]}) & (${Me.PctMana}<98)) /sit
/doevents
/delay 10
/if (${Me.PctMana}>10) /goto :grouphealing
/goto :med
:grouphealing
/for x 0 to ${Group}
/if (${Group.Member[${x}].PctHPs}<${GrpLowHp}) /varcalc GrpHealCounter ${GrpHealCounter}+1
/next x
/if (${GrpHealCounter}>=3) /call cast "${GrpHeal}" gem5
/varset GrpHealCounter 0
/goto :healloop
:healloop
/for x 0 to ${Group}
/if (${Select[${Group.Member[${x}].Class.ShortName},CLR,DRU,WIZ,ENC,SHM]} && ${Group.Member[${x}].Type.NotEqual[CORPSE]} && ${Group.Member[${x}].PctHPs}<${SprHealHP}) /call SuperiorHeal ${Group.Member[${x}].CleanName}
/next x
/goto :tankheal
:tankheal
/target ${MTank}
/delay 1s
/if (${Target.Type.NotEqual[CORPSE]} && ${Target.PctHPs}<75 && ${Target.PctHPs}>50 && ${SuperTankHealTimer}==0) /call SuperiorHeal
/varset SuperTankHealTimer 15s
/if (${Target.PctHPs}<45) /call CompleteHeal
/goto :HealOverTime
|------------------ Heal Over Time for Each Group Member --------------|
:HealOverTime
/if (${Select[${Group.Member[0].Class.ShortName},CLR,DRU,WIZ,ENC]} && ${Group.Member[0].Type.NotEqual[CORPSE]} && ${Group.Member[0].PctHPs}>${HoTMinHP} && ${Group.Member[0].PctHPs}<${HoTMaxHP} && ${HoTTimer0}==0) {
/target ${Group.Member[0]}
/g casting ${HoTHeal} on [ %t ]
/call cast "${HoTHeal}" gem6 5s
/g ${HoTHeal} on [ %t ]
/varset HoTTimer0 24s
}
/if (${Select[${Group.Member[1].Class.ShortName},CLR,DRU,WIZ,ENC]} && ${Group.Member[1].Type.NotEqual[CORPSE]} && ${Group.Member[1].PctHPs}>${HoTMinHP} && ${Group.Member[1].PctHPs}<${HoTMaxHP} && ${HoTTimer1}==0) {
/target ${Group.Member[1]}
/g casting ${HoTHeal} on [ %t ]
/call cast "${HoTHeal}" gem6 5s
/g ${HoTHeal} on [ %t ]
/varset HoTTimer1 24s
}
/if (${Select[${Group.Member[2].Class.ShortName},CLR,DRU,WIZ,ENC]} && ${Group.Member[2].Type.NotEqual[CORPSE]} && ${Group.Member[2].PctHPs}>${HoTMinHP} && ${Group.Member[2].PctHPs}<${HoTMaxHP} && ${HoTTimer2}==0) {
/target ${Group.Member[2]}
/g casting ${HoTHeal} on [ %t ]
/call cast "${HoTHeal}" gem6 5s
/g ${HoTHeal} on [ %t ]
/varset HoTTimer2 24s
}
/if (${Select[${Group.Member[3].Class.ShortName},CLR,DRU,WIZ,ENC]} && ${Group.Member[3].Type.NotEqual[CORPSE]} && ${Group.Member[3].PctHPs}>${HoTMinHP} && ${Group.Member[3].PctHPs}<${HoTMaxHP} && ${HoTTimer3}==0) {
/target ${Group.Member[3]}
/g casting ${HoTHeal} on [ %t ]
/call cast "${HoTHeal}" gem6 5s
/g ${HoTHeal} on [ %t ]
/varset HoTTimer3 24s
}
/if (${Select[${Group.Member[4].Class.ShortName},CLR,DRU,WIZ,ENC]} && ${Group.Member[4].Type.NotEqual[CORPSE]} && ${Group.Member[4].PctHPs}>${HoTMinHP} && ${Group.Member[4].PctHPs}<${HoTMaxHP} && ${HoTTimer4}==0) {
/target ${Group.Member[4]}
/g casting ${HoTHeal} on [ %t ]
/call cast "${HoTHeal}" gem6 5s
/g ${HoTHeal} on [ %t ]
/varset HoTTimer4 24s
}
/if (${Select[${Group.Member[5].Class.ShortName},CLR,DRU,WIZ,ENC]} && ${Group.Member[5].Type.NotEqual[CORPSE]} && ${Group.Member[5].PctHPs}>${HoTMinHP} && ${Group.Member[5].PctHPs}<${HoTMaxHP} && ${HoTTimer5}==0) {
/target ${Group.Member[5]}
/g casting ${HoTHeal} on [ %t ]
/call cast "${HoTHeal}" gem6 5s
/g ${HoTHeal} on [ %t ]
/varset HoTTimer5 24s
}
/goto :TankTempSTR
:TankTempSTR
/assist ${MTank}
/delay 1s
/if (${Target.PctHPs}<98 && ${Target.Type.Equal["NPC"]} && ${TempSTRTimer}==0) /call TempTankSTR
/goto :med
/return
|---------------------------- Heal Routines -------------------------|
Sub CompleteHeal(Targ)
/target ${MTank}
/g ${CHeal} in 10 sec on [ %t ]
/call cast "${CHeal}" gem8 5s
/return
Sub SuperiorHeal(Targ)
/target ${Targ}
/g ${SuperHeal} on [ %t ]
/call cast "${SuperHeal}" gem7 4s
/return
|Sub CheckHP
| /if (${Target.PctHPs}>=${StopHealPct}) /call Interrupt
| /return
|Sub CheckTankHP
| /if (${Target.PctHPs}>=${StopHealPct}) /call Interrupt
| /if (${Target.PctHPs}<=${StopTankHealPct} && ${castEndTime}>=20) /call FastTankHeal
|Sub FastTankHeal
| /call Interrupt
| /g Casting ${FastTnkHeal} on [ %t ]
| /call cast "${FastTnkHeal} gem6 4s
| /return
|-------------------- Events and other Routines ------------------|
Sub TempTankSTR
/target ${MTank}
/if (${Tager.ID} && ${Target.Distance}<90) /call cast "${TempSTR}" gem1 3s
/varset TempSTRTimer 3m
/return
Sub Event_buffme(Line,Targ)
/target ${Targ.Right[-2].Left[-1]}
/delay 1s
/g Buffing [ %t ]
/ssm ClrBuffs
/if (${Target.ID} && ${HPsACBuffTimer}==0) {
/call cast "${HPsACBuff}" gem2 4s
/varset HPsACBuffTimer 58m
}
/if (${Target.ID} && ${HPBuffTimer}==0) {
/call cast "${HPBuff}" gem4 4s
/varset HPBuffTimer 40m
}
/if (${Target.ID} && ${ACBuffTimer}==0) {
/call cast "${ACBuff}" gem3 4s
/varset ACBuffTimer 56m
}
/target Whitelite
/if (${Target.ID} && ${AoPTimer}==0) {
/call cast "${AoP}" gem1 3s
/varset AoPTimer 56m
}
/ssm MySpells
/return
Sub Event_evac(Line)
/call cast "${GateSpell}" gem4 5s
/return
Sub Event_giveheal(Line,Targ)
/assist ${Targ.Right[-2].Left[-1]}
/delay 1s
/call cast "${SuperHeal}" gem7 4s
/return
Sub Event_helpcommands(Line)
/g Heal Plz - I will heal you or who you have targeted.
/delay 1s
/g Buff Check - I will buff you
/delay 1s
/g Evac - I will gate the heck outa here!
/return