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

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

FastHeal 3.3 - Updated 4/6/2014 (1 Viewer)

Joined
Feb 8, 2005
RedCents
8,901¢
FastHeal 3.3 -Outdated Last Updated 4/6/2014

OUTDATED FastHeal 4 Released
**This will remain here for archive purposes.
cooltext1150732256.png

Version 3.3(Released 4/6/2014)
*2.99 Is the last of basic healing. I will be including this at the bottom with NO UPDATES.
*3.00 will be a revamp of healing logic. For basic Healing 2.99 will be sufficiant, and with any major changes, I like to leave the old version.

Requirements:
-MQ2Cast
-MQ2Exchange
-MQ2Rez
-MQ2BuffTool
-Editing Top of Lines of Macro to include spells

Features:
-Gift of Mana Support
-Yaulp / Mount Auto-Cast for Mana Regen
-Group Heals
-Epic Clicks
-AA Usage as a cleric (Burst of Life, Divine Alteration)
-Group and Self Buffs (Unified Credence, Auras, etc...)
-Plugin based casting
-Auto Rez
-Pet Heals
-Basic Tank Buff (5 Min recast)
-Configurable Group / Tank Heal %
-Double Aura
-Splash Heals
-Group HoT Support
-INI File Support
-Timed Heals (Promised Line)
-Double Renewal Spell Support
-Aggro Control
-DA Logic
-DPS Mode (Uses Direct DD instead of Twin-heal nuke / Only uses Quiet Miracle on Self)
-Symbol Text buff (Buffs anyone within 100 units that says symbol)

This has been several months in the making and written from the ground up. Auto rez routine taken and modified from KissAssist, but the rest is all written from scratch. This isn't some Frankenstein healing macro like every other healing macro out there. I put a lot of thought into it, and optimized it for speed. Please post any bugs you run into below. Also, post any ideas for future expansion.

INI File with Tips on setup
Rich (BB code):
[Spells]
healspell=Graceful Remedy
patchheal=Fifteenth Emblem Rk. II
hotspell=Elixir of the Acquittal
groupheal=Word of Reformation Rk. II
promheal=Promised Reformation Rk. II
splashheal=Reforming Splash
yaulpspell=Yaulp XIII Rk. II
healnuke=Virtuous Intervention Rk. II
nukeheal=Virtuous Contravention Rk. II
twinnuke=Glorious Rebuke
dpsnuke=Castigation
bigheal1=Fraught Renewal Rk. II
bigheal2=Fervent Renewal
mountitem=Bracelet of the Severed Hand
epicshield=Aegis of Superior Divinity
[General]
AutoRez=1
healpoint=80
nukehealpoint=70   
grouphealpoint=75
bighealpoint=60       ***Recommend leaving at 60 Will alternate bigheal1 and bigheal2 if bigheal1 is on cooldown (Renewal Line of spells)
pethealpoint=0        ***Set to 0 to disable pet heals
patchhealpoint=45 
clickhealpoint=30
selfhealpoint=75
Manatonuke=40       ***Set to 101 to disable
[Buffs]
SelfBuff=Armor of the Reverent Rk. II
GroupBuff=Unified Hand of Certitude Rk. II
GroupBuffCheck=Blessing of Fervor Rk. II            ****When this buff disappears it will recast GroupBuff
TankBuff=Shining Bastion Rk. II                         ****TankBuff is cast every 5 minutes
aurabuff=Circle of Divinity Rk. II
aurabuff2=Aura of the Reverent Rk. II

Version 3.3 See Below (Timed Heals, Splash, and Group Elixir)
---------------
Version 2.99 View attachment FastHeal.mac (Basic Heal Logic, will not use Promised Heal Line, or Splash heals)
 

Attachments

Last edited:
Re: FastHeal (Best Healing Macro)

Bug Report
-----------

Version 4.0 Features
---------------
-Smart Heal changes... (Ex. Starts queueing for a remedy but tank droped below 60% and needs big heal... switches)
-Removal of Melee portion (Cleric has higher DPS using nukes)
-Error checking
-Named fights burn AA Abilities (Third Spire, Celestial Regen, Healing Frenzy, Celestial Click, Celestial Rapidity, Flurry of Life)
-Support for Divine Interposition Spell-line.
Please post your ideas!

3.0+ is an advanced cleric macro using timed heals, splashes, and group hot (Recommended for 100 Clerics)
2.99 is a basic cleric macro for straight healing.
 
Last edited:
Re: FastHeal (Best Healing Macro)

Version History
--------------
v1.0 Initial Release 9/26/2012

v1.1 Release 10/7/2012
--------------
-Basic Tank Buff (5 min. Recast)
-Fixed Healing Spam
-Mems spells if not loaded
-Death of tank or healer no longer causes spam
-mq2rez added
-Emergency heal % added
-Added Separate heal % for group members
-Aura #2 fixed
-Added Notifications from Kissassist macro to EQBC (AA gain, Task updates, etc...)

v1.11 Release 10/10/2012
--------------
-No longer buffs or rezes while invis
-Fixed double casting of Auras
-Macro now uses AA's, Epic Clicks, Divine Alt on group members. (Was set to Healer and Tank only)

v2.0 Release 12/27/2012
---------------
-Conditional Spell Casts
-Improved Group Healing
-Removal of GroupHealthPct Average Subroutine
-Major revamp of code

v2.9 Release 8/7/2013
---------------
-Group Healing Fixed (Spam bug on Burst of Life)
-Spam on Tank death (Removed all Group.Member and replaced with Spawn)
-Spam on no LOS for Nuke Heals (LOS check implemented)
-Limit Rezes to group and tank (seeing too much spam for corpses on ground.)
-Configurable Tank Buff Line
-Quiet Miracle
-Out of Group support (Still needs testing)

v2.91 Release 8/9/2013
---------------
-Slight edits to Nuke Heals (Detects HP from Extended Target Spawn info)
-Minor fixes on buffs

v2.99 Release 8/11/2013
---------------
-Extended Target Window PCs will be healed
-Nukes have been expanded (Uses Glorious Rebuke on mobs 95+ and Basic Nukes on mobs below that)
-Double Aura fixed

v3.0 Release 8/13/2013
---------------
-Ini Load Files
-Splash Heals based on Average Health of Extended Target PCs (Casts splash around caster)
-Renewal Heals will be replacing the basic Light Healing spam (thank you Sinn for the advice)
-Configurable Quiet Miracle (Ability to toggle the use on anyone low on mana in group)
-Adding Promised Heal Line
-Option to cast Group Elixir Heals
-Various Logic fixes

v3.1 Release 9/19/2013
---------------
-Group heal Tweaks
-Mount Tweaks
-Aggro Checks
-Touch of the Divine Handling
-Quiet Miracle only used on others when mana above 60
-MedTime changes with sit logic
-Buff Spam fix
-Quick Launch when starting macro in combat

v3.2 Release 10/4/2013
---------------
-No more spell memorizing (Macro will no longer rearrange spells or mem spells already memed)
**Note: If you don't memorize the spells listed in INI it will attempt to memorize them in Slot 9
-if HotSpell isn't memed it will no longer attempt to cast group hot
-DPSMode (Casts DD over DD-Twin Heal)
-Fixed Sit/Stand bug under 8% mana

v3.3 Release 4/6/2013
---------------
-Redid targeting logic. Was seeing a lot of problems with mq2cast mis-targeting or casting before target changed. I know did a /target to force the heal to go off to that target.
**Note: this will probably screw up any melee'ing clerics out there, but I just did the melee logic for fun, and you should just use nukes to DPS on your cleric. Sorry for the delay.
 
Last edited:
Re: FastHeal (Best Healing Macro)

OMG you copy cat. I love it, the graphic. Stickied
 
Re: FastHeal (Best Healing Macro)

I would love to see a clicky buff section as well. I need all my clickys to keep mana regen at it's best. I also would like to see a separation of when to heal like healer.mac did. MA 80% others 70% etc. There's also no way that I can see to tell him to use epic at 35% say, or the other aa's. I have no idea when he'll cast them. I tested it for a while though, and it seemed spot on for straight up healing well. I was in a zone where you can use a mount and his mount wasn't being used even though I set it up in the mac. I had spelled it wrong at first, but went back and fixed it, but still after restart didn't want to go on his whirligig flyer control device, Beast Domain is outdoors. The aura seems to be busted as well, I had to manually cast the second aura even though I typed in aura of the pious for aura 2. The questions I have are when GoM fires, what spell does he cast and will there be a section to specify that in the future? I'd really just like him to cast a group heal or his zel light heal. If I think of anything else I'll post it, I don't think I forgot anything. So far it's great at healing like the ol healer mac but this one doesn't bug out like healer did when someone dies or lots of people are low health, so that's going for it at least. I'll test it again when I get time tonight. I just want to make sure he'll do the auras and mount to make sure I'm doing it right.
 
Re: FastHeal (Best Healing Macro)

Nice FEEDBACK Infiniteye. Many things I think just should be in there, I don't think people want to adjust but makes total sense. Right now all the emergency spells DA / AA / Epic fire at 30% life. Very easy to make this configurable. As for group percentage heals, also very easy to add. Not sure where the mount or aura misfiring, as my cleric has been doing it flawlessly, but i'll double check those. I've been using Verdent Leaf and Circle of Divinity, but nothing for aura 2. I'll stop being lazy grab aura 2 for my cleric this weekend and troubleshoot it. Adding these to bug list.
 
Re: FastHeal (Best Healing Macro)

Ok, have all the new features in except for ini support and tank buffs. Buffs are giving me a headache. Gonna test over the weekend and release update. have the spell casting down to the millisecond and no more spam. Overall, looking very good.
 
Re: FastHeal (Best Healing Macro)

Uploaded 1.1, its tested and fixed quite a few bugs. Death of Tank or you no longer mess up mac, and Zoning also doesn't effect it.
 
Re: FastHeal (Best Healing Macro)

Version History

v1.1 Release 10/7/2012
--------------
-Basic Tank Buff (5 min. Recast)
-Fixed Healing Spam
-Mems spells if not loaded
-Death of tank or healer no longer causes spam
-mq2rez added
-Emergency heal % added
-Added Separate heal % for group members
-Aura #2 fixed
-Added Notifications from Kissassist macro to EQBC (AA gain, Task updates, etc...)

Which I stole from zbot. lol
 
Re: FastHeal (Best Healing Macro)

Updated to 1.11 to address some minor issues with Auras, Misc. Group members, and Buff/Rezing while invis.
 
Re: FastHeal (Best Healing Macro)

I was just curious, does this macro utilize the Promised Renewal spell line at all, or do you just click that manually?
 
Re: FastHeal (Best Healing Macro)

I love this macro, much better than the Healer.mac I've used for the last few years.

The aura's tend to go wacky on me. It'll cast the same aura twice sometimes, and no matter what order I put it in, it always happens. Not sure if this is caused by lag or if there is something I'm missing.

When the entire group takes damage, it sometimes freaks out, swapping back and forth non stop between targets and not casting, I have to force the heals.

How do I set up the group buff to work right? I have tried with both solo and group versions of spells, and every single time it spam casts the spell.
 
Re: FastHeal (Best Healing Macro)

I'm still working out the buffing, and already fixed the freak out on multiple group members taking damage. I should release a new version at the start of the new year.
 
Re: FastHeal (Best Healing Macro)

For those eager to try out some of the fixes here is a beta version of the heal changes. I picked up a couple milliseconds by doing conditional statements and forces the use of the correct spell. (Dumbed down version... If your health is super low, it will force a use of Burst of Life instead of skipping it and using a regular heal or group heal for that matter.) Report any issues with it. Still working on Buffs...

P.S. Beta has option to use heal/nukes

Pulled beta, group heal issue again! bah!
 
Last edited:
Re: FastHeal (Best Healing Macro)

Ok feeling pretty good about the changes, let me know the bugs that pop up. Changed a good deal of the code to streamline it.
 
Re: FastHeal 2.0 - Updated 12/27/2012

Nope doesn't utilize it at all, you think I should? How would you like it to function?
 
Re: FastHeal 2.0 - Updated 12/27/2012

the Promised Renewal line of spells can be a big big help when healing...just need to work out timing of it and recast time
 
Re: FastHeal 2.0 - Updated 12/27/2012

Well considering PR line is basically a complete heal and cost little mana and cast time of less than one second, you'll want to set it up to cast in between fast heals,always keeping it on the MA. I always figured it's a free heal.
 
Re: FastHeal 2.0 - Updated 12/27/2012

Not sure why there's an auto sit in there now. Using the current yaulp for any higher level 80 to 100 you should get better mana regen yaulping than sitting during combat. In situations where there are chain pulls you should never be sitting anyway. Even with a mount up, it's not as good mana regen as standing and using yaulp. Don't use the AA version of yaulp either, it's a downgraded crap version of the spell. Sitting cancels yaulp and so does "sitting" on a mount. Can you work in an /autosit=0 type command like healer mac had? I know some out there may want to sit, or are more comfortable using a mount but for serious clerics standing with yaulp on is the only way to go in situations where you are not able to enter a resting state. Thanks for all the great work so far anyhow.
 
Re: FastHeal 2.0 - Updated 12/27/2012

I love this Mac, thank you.
I'm having an issue with it, the last one, I was able to put /stand where /sit was in the med area, and it kept it from sitting (I agree with Infiniteye, Yaulp is the way to go) and did not have any problems with it. However, sicne I updated, I keep getting spammed with "You can't use that command while casting" and I had to put it back to /sit. However, I notice on the one system, the Cleric does not sit at all, even out of combat, but on my other system, using the same set up on Fastheal, the cleric sit's every chance it gets.

If you could work in a way to keep from sitting, that would be awesome.
 
Re: FastHeal 2.0 - Updated 12/27/2012

how can i turn off yaulp i never use always have enchanter.
 
Re: FastHeal 2.0 - Updated 12/27/2012

I believe if you just erase the name of the yaulp spell it won't cast anything. so "/declare yaulpspell string outer " I didn't test it though. I used to do that in the old healer mac when I didn't want him to use the heal nukes and nuke heals. he would just say Memming NULL, and not do them.
 
Re: FastHeal 2.0 - Updated 12/27/2012

Burst of life does not work on anything that isnt the MA and it bugs if some one is low health and just spams it in EQBC and never actually heals really annoying.
 
Re: FastHeal 2.0 - Updated 12/27/2012

Working on a BIG update to this. Just got back from my 6 month break away from ole EQ. Seeing tons of issues in this macro that I will address tomorrow. Beta testing it tonight, and some testing again at work tomorrow. It is looking very promising, and can't wait to share the updates with you all. Updated the bug fixes and future releases to include the things i'm working on.
 
Re: FastHeal 2.0 - Updated 12/27/2012

Ok, Pushed the update. Please post any bugs you may notice. It should be pretty solid, with a lot of bug fixes.
 
Re: FastHeal 2.0 - Updated 12/27/2012

im not sure about anyone else but I don't use a virus protection or firewall , and when I download with exp 10 I get fastheal.mac has a virus couldn't be downloaded....
 
Re: FastHeal 2.0 - Updated 12/27/2012

Its a standard macro file, and should download without any issues. Here is the source if you can't download .mac (macro) files.

Rich (BB code):
#Event  GainSomething   "#*#You have gained|#1#|"
#Event	GoMana		"You have been granted a gift of#*#"
#Event	GoMoff		"Your gift of#*#mana fades."
#Event	Nomount     	"#*#You can not summon a mount#*#"
#Event	Nomount  	"#*#You can only cast this spell in the outdoors#*#"
#Event	Nomount     	"#*#You must have both the horse#*#"
#Event  TaskUpdate      "#*#Your task |#1#| has been updated#*#" 
#Event  Zoned           "You have entered#*#"
#Event  Zoned           "LOADING, PLEASE WAIT#*#"

Sub Main
	| Spell Customization: 
	/declare healspell 	string outer Reverent Light Rk. II
	/declare patchheal 	string outer Fifteenth Emblem Rk. II
	/declare hotspell	string outer Reverent Elixir Rk. II
	/declare groupheal 	string outer Word of Rehabilitation
	/declare yaulpspell string outer Yaulp XII
	/declare healnuke 	string outer Elysian Intervention
	/declare nukeheal 	string outer Celestial Contravention Rk. II
	
	| Options: 
	/declare AutoRez		int outer 1
	/declare healpoint		int outer 80
	/declare grouphealpoint	int outer 75
	/declare pethealpoint	int outer 50  |---Leave at 0 to disable Pet Healing
	/declare patchhealpoint	int outer 45 |---Leave at 45 or below for Emergency Heal Spells
	/declare clickhealpoint	int outer 30 |---When it does Epic Clicks and AA abilities, leave lower than patch
	/declare selfhealpoint	int outer 70
	/declare Manatonuke		int outer 60 |---Set to 101 to disable nuking
	/declare mountitem 		string outer Verdant Hedgerow Leaf
	/declare epicshield 	string outer Aegis of Superior Divinity
	
	| Buffs:
	/declare SelfBuff		string outer Armor of the Zealous
	/declare GroupBuff		string outer Unified Hand of Certitude Rk. II
	/declare GroupBuffCheck	string outer Blessing of Fervor Rk. II
	|--- TankBuff auto recasts every 5 minutes
	/declare TankBuff		string outer Shining Bastion Rk. II
	/declare aurabuff 		string outer Circle of Divinity Rk. II
	/declare aurabuff2 		string outer NULL
	
    | Macro Setup Variables and Stuff
    /declare OutDoors		int outer 1
    /declare healspellrange int outer ${Spell[${healspell}].Range}
    /declare patchhealrange int outer ${Spell[${patchheal}].Range}
    /declare hotspellrange 	int outer ${Spell[${hotspell}].Range}	
    /declare grouphealrange int outer ${Spell[${groupheal}].AERange}
    /declare tankname 		string outer ${Target}
	/declare GoMana 		int outer 0
	| Declare timers for Rez duration spells 
    /declare m int local
    /for m 1 to 5
        /declare RezTimer${m} 	timer outer 0
    /next m
	/declare TankBuffTimer		timer outer 0
	
	/if (${Defined[Param0]}) /varset healpoint ${Param0}
	/echo Casting ${healspell} on ${tankname} at ${healpoint}% HP
	
	/call MemSpells
	/call CheckPlugin MQ2Cast
    /call CheckPlugin MQ2Exchange
	/call CheckPlugin MQ2Rez
	/squelch /rez accept on
	
	| Main Loop
	:targetwatchloop
	
	/doevents
	/if (${Me.Hovering}) /call DeadHealer
	/if (${Me.PctHPs}<=${selfhealpoint}) /call HealSelf
	/if ((${Spawn[${tankname}].ID})&&(!${Spawn[${tankname}].Hovering})) {
		/if (${Spawn[${tankname}].PctHPs}>=1) /call HealTank
		/if ((${Spawn[${tankname}].PctHPs}>${healpoint})||(${Spawn[${tankname}].Distance}>${healspellrange})||(${Spawn[${tankname}].PctHPs}<=1)) /call HealGroup
		/if ((${pethealpoint}>=1)&&((${Spawn[${tankname}].PctHPs}>${healpoint})||(${Spawn[${tankname}].Distance}>${healspellrange})||(${Spawn[${tankname}].PctHPs}<=1))) /call HealPet
		/if ((${Me.PctMana}>=${Manatonuke})&&(${Spawn[${tankname}].PctHPs}>${healpoint})) /call Nukeing
    } else {
		/call HealGroup
		/if (${pethealpoint}>=1) /call HealPet
	}
	/if (${Me.PctMana}<=98) /call MedTime
	/if ((${AutoRez}==1)&&(!${Me.Invis})) /call RezCheck
	/if ((${Me.PctMana}>=50)&&(!${Me.Casting.ID})&&(!${Me.XTarget[1].ID})&&(!${Me.Invis})) /call BuffCheck
	
	/goto :targetwatchloop
	/return

|----------------------------------------------------------------------------
| SUB: SpellQueue
|---------------------------------------------------------------------------- 
Sub SpellQueue(string nextspell,int nextid)
	/if (!${EQBC.Connected} || !${Bool[${Plugin[MQ2EQBC]}]}) /docommand /echo [+o+]${nextspell} =>> ${Spawn[${nextid}]} <<=[+x+]
	/if (${EQBC.Connected}) /docommand /bc [+o+]${nextspell} =>> ${Spawn[${nextid}]} <<=[+x+]
	/delay 3s ${Me.SpellReady[${nextspell}]}
	/if (${Me.SpellReady[${nextspell}]}) /casting "${nextspell}" -targetid|${nextid}
	/delay 1s !${Me.Casting.ID}
/return

|----------------------------------------------------------------------------
| SUB: BurstofLife
|---------------------------------------------------------------------------- 
Sub BurstofLife(int nextid)
	/if (!${EQBC.Connected} || !${Bool[${Plugin[MQ2EQBC]}]}) /docommand /echo [+o+]Burst of Life =>> ${Spawn[${nextid}]} <<=[+x+]
	/if (${EQBC.Connected}) /docommand /bc [+o+]Burst of Life =>> ${Spawn[${nextid}]} <<=[+x+]
	/if (${Me.Casting.ID}) /interrupt
	/delay 5 !${Me.Casting.ID}
	/casting "Burst of Life" alt -targetid|${nextid}
/return

|----------------------------------------------------------------------------
| SUB: Veturika's Perseverance
|---------------------------------------------------------------------------- 
Sub Veturika
	/if (!${EQBC.Connected} || !${Bool[${Plugin[MQ2EQBC]}]}) /docommand /echo [+o+]Veturika's Perseverance =>> ${Spawn[${Me.ID}]} <<=[+x+]
	/if (${EQBC.Connected}) /docommand /bc [+o+]Veturika's Perseverance =>> ${Spawn[${Me.ID}]} <<=[+x+]
	/delay 1s !${Me.Casting.ID}
	/casting "Veturika's Perseverance" alt -targetid|${Me.ID}
/return

|----------------------------------------------------------------------------
| SUB: Quiet Miracle
|---------------------------------------------------------------------------- 
Sub QuietMiracle
	/if (!${EQBC.Connected} || !${Bool[${Plugin[MQ2EQBC]}]}) /docommand /echo [+o+]Quiet Miracle =>> ${Spawn[${Me.ID}]} <<=[+x+]
	/if (${EQBC.Connected}) /docommand /bc [+o+]Quiet Miracle =>> ${Spawn[${Me.ID}]} <<=[+x+]
	/delay 5 !${Me.Casting.ID}
	/casting "Quiet Miracle" alt -targetid|${Me.ID}
/return

|----------------------------------------------------------------------------
| SUB: DivineAlt
|---------------------------------------------------------------------------- 
Sub DivineAlt
	/if (!${EQBC.Connected} || !${Bool[${Plugin[MQ2EQBC]}]}) /docommand /echo [+o+]Divine Arbitration Used on Group[+x+]
	/if (${EQBC.Connected}) /docommand /bc [+o+]Divine Arbitration Used on Group[+x+]
	/if (${Me.Casting.ID}) /interrupt
	/delay 5 !${Me.Casting.ID}
	/casting "Divine Arbitration" alt
/return

|----------------------------------------------------------------------------
| SUB: EpicClick
|---------------------------------------------------------------------------- 
Sub EpicClick
	/if (!${EQBC.Connected} || !${Bool[${Plugin[MQ2EQBC]}]}) /docommand /echo [+o+]Epic Click Used on Group[+x+]
	/if (${EQBC.Connected}) /docommand /bc [+o+]Epic Click Used on Group[+x+]
	/if (${Me.Casting.ID}) /interrupt
	/delay 5 !${Me.Casting.ID}
	/nomodkey /itemnotify ${FindItem[${epicshield}].InvSlot} rightmouseup
/return


|----------------------------------------------------------------------------
| SUB: HealTank
|---------------------------------------------------------------------------- 
Sub HealTank
	/if (${Spawn[${tankname}].Hovering} || ${Spawn[${tankname}].Type.Equal[Corpse]}) /return
	/if ((${Me.AltAbilityReady[Burst of Life]})&&(${Spawn[${tankname}].PctHPs}<=${clickhealpoint})) {
		/call BurstofLife ${Spawn[${tankname}].ID}
	} else /if ((${Spawn[${tankname}].PctHPs}<=${clickhealpoint})&&(${Me.AltAbilityReady[Divine Arbitration]})) {
		/call DivineAlt
	} else /if ((${FindItem[${epicshield}].ID}) && (${Cast.Ready[${epicshield}]}) && (${Spawn[${tankname}].PctHPs}<=${clickhealpoint})) {
		/call EpicClick
	} else /if (!${Me.Casting.ID}&&(${Spawn[${tankname}].Distance}<=${patchhealrange})&&(${Spawn[${tankname}].PctHPs}<${patchhealpoint})&&(${Spawn[${tankname}].PctHPs}>=1)) {
		/call SpellQueue "${patchheal}" ${Spawn[${tankname}].ID}
	} else /if (!${Me.Casting.ID}&&(${Spawn[${tankname}].Distance}<=${healspellrange})&&(${Spawn[${tankname}].PctHPs}<=${healpoint})&&(${Spawn[${tankname}].PctHPs}>=${patchhealpoint})) {
		/call SpellQueue "${healspell}" ${Spawn[${tankname}].ID}
	}
/return

|----------------------------------------------------------------------------
| SUB: HealSelf
|---------------------------------------------------------------------------- 
Sub HealSelf
	/if ((${Me.AltAbilityReady[Divine Peace]})&&(${Me.PctHPs}<=${clickhealpoint})) {
		/if (!${EQBC.Connected} || !${Bool[${Plugin[MQ2EQBC]}]}) /docommand /echo [+o+]Divine Peace =>> ${Spawn[${Me.ID}]} <<=[+x+]
		/if (${EQBC.Connected}) /docommand /bc [+o+]Divine Peace =>> ${Spawn[${Me.ID}]} <<=[+x+]
		/delay 5 !${Me.Casting.ID}
		/casting "Divine Peace" alt
	} else /if ((${Me.AltAbilityReady[Burst of Life]})&&(${Me.PctHPs}<=${clickhealpoint})) {
		/call BurstofLife ${Me.ID}
	} else /if ((${Me.PctHPs}<=${clickhealpoint})&&(${Me.AltAbilityReady[Divine Arbitration]})) {
		/call DivineAlt
	} else /if ((${FindItem[${epicshield}].ID}) && (${Cast.Ready[${epicshield}]}) && (${Me.PctHPs}<=${clickhealpoint})) {
		/call EpicClick
	} else /if (!${Me.Casting.ID} && (${Me.PctHPs}<=${selfhealpoint})) {
		/call SpellQueue "${healspell}" ${Me.ID}
	}
/return

|----------------------------------------------------------------------------
| SUB: HealGroup
|---------------------------------------------------------------------------- 
Sub HealGroup
   :healgroup
   /declare worstmem		int local 0
   /declare worsthurtid		int local 0
   /declare worsthp 		int local 100
   /declare gmember			int local 0
   /declare GroupHealthTl   float   local   .1
   /declare GroupHealthPct  float   local   0
   /declare NotDead         int local 0
   
   /for gmember 0 to ${Group}
		/if (${Spawn[${Group.Member[${gmember}]}].Type.NotEqual[Mercenary]} && (${Spawn[${Group.Member[${gmember}]}].Hovering} || ${Spawn[${Group.Member[${gmember}]}].Type.Equal[Corpse]})) /goto :nextmember
		/if (!${Bool[${Spawn[${Group.Member[${gmember}]}]}]}) /goto :nextmember
		/if (${Group.Member[${gmember}].Distance}<=${healspellrange}) {
            /if ((${Group.Member[${gmember}].PctHPs}<=${worsthp}) && (${Group.Member[${gmember}].PctHPs}>=1)) {
               /varset worsthurtid ${Group.Member[${gmember}].ID}
               /varset worsthp ${Group.Member[${gmember}].PctHPs}
			   /varset worstmem ${gmember}
			   /if (${Group.Member[${gmember}].Distance}<100) { 
                /varcalc GroupHealthTl ${GroupHealthTl}+${Group.Member[${gmember}].PctHPs}
                /varcalc NotDead ${NotDead}+1
                /varcalc GroupHealthPct ${GroupHealthTl}/${NotDead}
				}
            }
         }
      }
   :nextmember
   /next gmember
   /if (${worsthurtid}==${Spawn[${tankname}].ID}) /return
   /if (${worsthurtid}==${Me.ID}) /return
   
   	/if ((${Me.AltAbilityReady[Burst of Life]})&&(${worsthp}<=${clickhealpoint})) {
		/call BurstofLife ${worsthurtid}
	} else /if ((${worsthp}<=${clickhealpoint})&&(${Me.AltAbilityReady[Divine Arbitration]})) { 
		/call DivineAlt
	} else /if ((${FindItem[${epicshield}].ID}) && (${Cast.Ready[${epicshield}]}) && (${worsthp}<=${clickhealpoint})) {
		/call EpicClick
	} else /if ((${GroupHealthPct}<75)&&(${NotDead}>2)) {
		/call SpellQueue "${groupheal}" ${Me.ID}
	} else /if (!${Me.Casting.ID}&&(${worsthp}<=${grouphealpoint})) {
		/call SpellQueue "${healspell}" ${worsthurtid}
	}
         
/return

|----------------------------------------------------------------------------
| SUB: HealPet
|---------------------------------------------------------------------------- 
Sub HealPet
   /declare worsthurtid		int local 0
   /declare worsthp			int local 100
   /declare gmember			int local 0
   /for gmember 0 to ${Group}
      /if (${Group.Member[${gmember}].Pet.ID}) {
         /if (${Group.Member[${gmember}].Pet.Distance}<=${healspellrange}) {
            /if ((${Group.Member[${gmember}].Pet.PctHPs}<=${worsthp})&&(${Group.Member[${gmember}].Pet.PctHPs}<=${pethealpoint})) {
               /varset worsthurtid ${Group.Member[${gmember}].Pet.ID}
               /varset worsthp ${Group.Member[${gmember}].Pet.PctHPs}
            }
         }
      }
   /next gmember
   /if (!${Me.Casting.ID}&&(${worsthp}<=${healpoint})) /call SpellQueue "${healspell}" ${worsthurtid}

/return


|----------------------------------------------------------------------------
| SUB: MedTime
|----------------------------------------------------------------------------
Sub MedTime
   /if ((${Me.AltAbilityReady[Veturika's Perseverance]})&&(${Me.PctMana}<=65)) /call Veturika
   /if ((${Me.AltAbilityReady[Quiet Miracle]})&&(${Me.PctMana}<=50)) /call QuietMiracle
   :oomwait
   /if ((${Me.PctMana}<=98)&&(!${Me.Casting.ID})&&(!${Me.XTarget[1].ID})) {
      /if ((${Me.Standing})&&(${Me.CombatState.NotEqual[COMBAT]})&&(!${Me.Moving})&&(${Stick.Status.Equal[OFF]})) /sit
      /if ((${Me.Sitting})&&(!${Window[SpellBookWnd].Open})&&(${Me.CombatState.Equal[COMBAT]})) /stand
   }
   /if ((${GoMana}==0)&&(${Me.Standing})&&(!${Me.Mount.ID})&&(${Me.SpellReady[${yaulpspell}]})&&(!${Me.Buff[${yaulpspell}].ID})&&(${Spell[${yaulpspell}].Stacks})) /casting "${yaulpspell}"
   /if (${Me.PctHPs}<=${selfhealpoint}) /return
   /if (${Me.PctMana}<=8) /goto :oomwait
   /if (!${Me.Mount.ID} && ${OutDoors} && ${FindItem[${mountitem}].InvSlot} && !${Me.XTarget[1].ID}) {
	/nomodkey /itemnotify ${FindItem[${mountitem}].InvSlot} rightmouseup
	/delay 3s
	}
	
/return

|-------------------------------------------------------------------------------------
| SUB: Rez Check
|-------------------------------------------------------------------------------------
    Sub RezCheck    
    /declare i int local
    /declare j int local
    /declare CorpseCount int local
    /declare RezID int local
	
    /if (!${Me.Hovering}) {
        /for i 0 to ${Group}
        /if ((${Group.Member[${i}].Type.NotEqual[corpse]})&&(!${Group.Member[${i}].Hovering})) /goto :NextChar
            | Check for group member corpses and battle rez
            /if ((${Group.Member[${i}].Type.Equal[corpse]}||(${Group.Member[${i}].Hovering})) && ${RezTimer${i}}==0) {
                /if (${Group.Member[${i}].Distance}<100) {
                    /if (${Target.Distance}<100) {
                        /if (!${Me.Casting.ID} && (${Me.AltAbilityReady[Blessing of Resurrection]})) /casting "Blessing of Resurrection" alt -targetid|${Group.Member[${i}].ID}
						/if (${Macro.Return.Equal[CAST_SUCCESS]}) {
                                /echo BATTLE REZZED =>> ${Group.Member[${i}]} <<=
                                /if (${EQBC.Connected}) /docommand /bc [+o+]BATTLE REZZED =>> ${Group.Member[${i}]} <<=[+x+]
                                /varset RezTimer${i} 3m
                            } else {
                                /varset RezTimer${i} 1m
                            }
                        }
                    }
                }
            :NextChar
        /next i      
    }
/Return

|----------------------------------------------------------------------------
| SUB: BuffCheck
|----------------------------------------------------------------------------
    Sub BuffCheck
        /if (!${Bool[${Me.Buff[${SelfBuff}]}]} &&(!${Me.Casting.ID})) {
			/call SpellQueue "${SelfBuff}" ${Me.ID}
		} else /if (!${Bool[${Me.Buff[${GroupBuffCheck}]}]} &&(!${Me.Casting.ID})) {
			/call SpellQueue "${GroupBuff}" ${Me.ID}
		} else /if ((${TankBuffTimer}==0)&&(!${Me.Casting.ID})&&(${Spell[${healspell}].Range}>${Spawn[${tankname}].Distance})&&(${Spawn[${tankname}].ID})&&(!${Spawn[${tankname}].Hovering})) {
			/call SpellQueue "${TankBuff}" ${Spawn[${tankname}]}.ID}
			/varset TankBuffTimer 5m
		} else /if (${Bool[${aurabuff}]} && !${Me.Aura[1].Length} &&(!${Me.Casting.ID})) {
			/casting "${aurabuff}"
		} else /if (${Bool[${aurabuff2}]} && !${Me.Aura[2].Length} &&(!${Me.Casting.ID})) {
			/casting "${aurabuff2}"
		}
    /return	

|----------------------------------------------------------------------------
| SUB: MemSpells
|----------------------------------------------------------------------------
Sub MemSpells 

   /echo Memming spells. Hang on. 
   /if ( !${Me.Gem[${healspell}]} ) { 
	/echo Memming Spell ${healspell}
	/memorize "${healspell}" 1
	/delay 25 
   } 
   /if ( !${Me.Gem[${patchheal}]} ) { 
	/echo Memming Spell ${patchheal}
      /memorize "${patchheal}" 2
      /delay 25 
   } 
   /if ( !${Me.Gem[${hotspell}]} ) { 
	/echo Memming Spell ${hotspell}
      /memorize "${hotspell}" 3
      /delay 25 
   } 
   /if ( !${Me.Gem[${groupheal}]} ) { 
	/echo Memming Spell ${groupheal}
      /memorize "${groupheal}" 4
      /delay 25
   } 
   /if ( !${Me.Gem[${healnuke}]} ) { 
	/echo Memming Spell ${healnuke}
      /memorize "${healnuke}" 5
      /delay 25 
   } 
   /if ( !${Me.Gem[${nukeheal}]} ) { 
	/echo Memming Spell ${nukeheal}
      /memorize "${nukeheal}" 6
      /delay 25 
   } 
   /if ( !${Me.Gem[${TankBuff}]} ) { 
	/echo Memming Spell ${TankBuff}
      /memorize "${TankBuff}" 7
      /delay 25
   } 
   /if ( !${Me.Gem[${yaulpspell}]} ) { 
	/echo Memming Spell ${yaulpspell}
      /memorize "${yaulpspell}" 8
      /delay 20 
   } 
   /if ( !${Me.Gem[${SelfBuff}]} ) { 
	/echo Memming Spell ${SelfBuff}
      /memorize "${SelfBuff}" 9
      /delay 25
   } 
   /if ( !${Me.Gem[${GroupBuff}]} ) { 
	/echo Memming Spell ${GroupBuff}
      /memorize "${GroupBuff}" 10
      /delay 25 
   } 
   
   /echo Spells are memmed. 
	/if (${Window[SpellBookWnd].Open}) /cleanup
/return 

|----------------------------------------------------------------------------
| SUB: Nuking Sub
|----------------------------------------------------------------------------
Sub Nukeing
	/declare tmob int local
	/declare tmobpct int local
	/assist ${tankname}
	/delay 1s ${Target.Type.Equal[NPC]}
	/varset tmob ${Target.ID}
	/varset tmobpct ${Target.PctHPs}
	/if ((${NearestSpawn[NPC los targetable].Distance}<150)&&(${NearestSpawn[NPC los targetable].ID})&&(${Me.PctHPs}>${selfhealpoint})&&(${tmobpct}<90)) {
	  	/if ((${Me.SpellReady[${healnuke}]})&&(${Target.Distance}<${Spell[${healnuke}].Range})) /call SpellQueue "${healnuke}" ${Spawn[${tankname}].ID}
		/if ((${Me.SpellReady[${nukeheal}]})&&(${Target.Distance}<${Spell[${nukeheal}].Range})) {
		  /assist ${tankname}
		  /delay 1s ${Target.Type.Equal[NPC]}
		  /varset tmob ${Target.ID}
		  /if (${Target.Named} && ${healpoint}<90) /varset healpoint 90
		  /if (!${Target.Named} && ${healpoint}>80) /varset healpoint 80		  
		  /if (${Me.SpellReady[${nukeheal}]}) /call SpellQueue "${nukeheal}" ${tmob}	
		}	
	}
/return


|----------------------------------------------------------------------------
| SUB: Death Sub
|----------------------------------------------------------------------------
Sub DeadHealer
	/echo Dead... waiting on rez
	:WaitOnRez
    /if (!${Me.Hovering}) /return
    /delay 10
    /goto :WaitOnRez
		
/return

|----------------------------------------------------------------------------
| SUB: Check Plugin
|----------------------------------------------------------------------------
    Sub CheckPlugin(string pluginname)
        /if (!${Bool[${Plugin[${pluginname}]}]}) {
            /squelch /plugin ${pluginname}
            /echo ${pluginname} not detected! This macro requires it! Loading ...
        }
    /return	
	
|----------------------------------------------------------------------------
| SUB: Misc Events
|----------------------------------------------------------------------------
Sub Event_Nomount
     /echo This is an indoor zone. Sorry.
     /varset OutDoors 0
/return

Sub Event_GoMana
	/varset GoMana 1
	/timed 180 /varset GoMana 0
	/call Healgroup
/return

Sub Event_GoMoff
/varset GoMana 0
/return

|----------------------------------------------------------------------------
| SUB: Event Zoned
|----------------------------------------------------------------------------
    Sub Event_Zoned
        /echo Just zoned... waiting for Tank
        :wait4tank
		/delay 10
		/if (!${Spawn[${tankname}].ID}) /goto :wait4tank
    /return
|----------------------------------------------------------------------------
| SUB: Event Gain Something - EQBC message 
|----------------------------------------------------------------------------    
    Sub Event_GainSomething(string Line,string text)
        /if (!${EQBC.Connected}) /return
        /if (${Line.Find["ABILITY POINT!"]}) {
            /docommand /bc [+w+]${Me.Name} gained an AA, now has ${Me.AAPoints} unspent[+x+]
        } else /if (${Line.Find[LEVEL]}) {
            /docommand /bc [+w+]${Me.Name} gained a level, now is Level ${Me.Level}[+x+]
        } else /if (${Line.Find[GROUP LEADERSHIP]}) {
            /docommand /bc [+w+]${Me.Name} gained group leadership, now has ${Me.GroupLeaderPoints} unspent[+x+]
        }
    /return 
|----------------------------------------------------------------------------
| SUB: Event Task Update - EQBC message 
|----------------------------------------------------------------------------    
    Sub Event_TaskUpdate(Line,name) 
        /if (${EQBC.Connected}) /docommand /bc [+t+]Task updated...(${name})[+x+]    
    /return
 
Re: FastHeal 2.0 - Updated 12/27/2012

Always used your fastheal for my cleric. Can't wait to give this a try once I get back into eq when life slows down a little.
 
Re: FastHeal 2.91 - Updated 8/9/2013

Updated again with some minor fixes. I'm gonna start ramping up for raid healing. Have a friend request this from me, since he says his clerics in his guild suck... lol!
 
Re: FastHeal 2.91 - Updated 8/9/2013

Will FastHeal use the nuke mob proc next 2 healing spells to twincast, Glorious Censor Line? What about Splash Heals?
 
Re: FastHeal 2.91 - Updated 8/9/2013

No idea, what you mean Sinn69. Can you explain the mechanics of what you want to happen? I haven't tried doing splash heals, but maybe you could fill me in on how a proper cleric plays. I have played too many classes to stay up to date with how clerics should perform in a raid setting.

Right now the Macro does this
-Casts Single Heal on target below certain %
-Casts Group heal when average group health dips below certain %
-Fires Heal AA (Burst of Life, etc...) when targets are in need of emergency heals

I'd love to incorporate everything a "TRUE" cleric does and am positive if it was explained, I could make this macro outperform any human.

- - - Updated - - -

Been messing around with the Glorious Rebuke, and the twinheal is pretty darn cool. Pretty much the entire macro fires off healing spells so quick, that the twinheal is used after a Glorious Rebuke. I'm working on the following Nuke Logic

If my level - 5 is greater than mob level and the mob isn't a named... Spam Castigation (Basic Nuke) in between the heal nuke and nuke heals.
If the mob is a named or within 5 levels of me... Use Glorious rebuke between heal nukes.

So far its working pretty darn good, Cleric is pumping out around 8k Dps pm average. If all goes well for the next day. I'll Post FastHeal 3.0 tomorrow including the new Extended Target Logic for Raid and out of group healing.
 
Re: FastHeal 2.91 - Updated 8/9/2013

I raid with a cleric 3 nights a week and will sometimes use Kissassist to buff while the raid is going. Kiss is awesome. Kiss just can't handle healing more than 8 or 9 PC/Mercs/Pets if set up right, its not built for a cleric to use on Raids in its present form. Saying all that i have not tested FastHeal on a raid or in a group either, But i can explain what i do as a cleric on a raid and in groups if that helps the script to heal fast and accurally to keep PC/Pets/Mercs alive. I use a Level 100 Cleric with 11000 AAs with alot of RoF and VoA raid gear.

Spells and Healing AA's:

Single Target Heal Spells

Graceful Remedy (L96-Cast Time .5s-ReCast 4.75s) Single Target Heal for 7k- My Main Healing spell i cast as soon as its ready to cast. Will cast when MT is about 80

Fraught Renewal (L100- CT 1.5s- RC 30s) Single Target Heal for 15k cures 36 counters of Posion Disease Curse, Big Single Heal it can crit heal for 200k. Will cast when MT is about 60

Fervent Renewal (L95- CT 1.5s- RC 30s) Single Target Heal for 12k cures 34 counters of Posion Disease Curse, Big Single Heal it can crit heal for 200k. Will cast when MT is about 60

Promised Reformation (L98- CT 1.5- RC 15s) Single Target Delayed Heal, Imbues your target with the promise of a great heal in 18 secs (3 ticks). Will cast when MT is about 80

Virtuous Intervention (L98- CT 1.5s- RC 30s) Single Target Heal/Nuke Target's Target for 14k. Will cast when MT is about 70

Virtuous Contravention (L98- CT 1.5s- RC 30s) Single Target NUKE/HEAL Target's Target for 14k. Will cast when MT is about 70

Glorious Rebuke (L99- CT 1s- RC 12s) Single Target NUKE, This spell gives a chance to twincast a heal while doing direct damage to the target. Next 2 Heal Single Target Heals the Cleric cast will Twin!! If the MA is at or near 100% Life i want to get a Twin Nuke in so my next 2 heals spells (Splash and Group Heals are twinable) the cleric cast will fork into 2 heal spells giving 2 chances to land a crit heal.

These are my 6 Single target heals i mem the Remedy, 2 Renewals and Intervention are on a hotkey ie. /cast 1, /cast 2, /cast 3, /cast 4 so if 1 or 2 spells are in cooldown the next spell is ready to cast, i just manually switch targets and keep key mashing til a spell casts.

Combat Spell Buffs

Shining Bastion(99), Rallied Bastion of Vie(100), Aura of the Reverent(100 Aura), Circle of Divinity(80 Aura), Divine Interposation(97) should all be on your tanks, self and/or group.


Group Heal Spells

Elixir of the Acquittall (L100- CT 4.5s- RC 1.5s) Group Heal Over Time(HoT) all within 100 for 6k per tick(6s) for 24s (AA can increase this spells duration). Will cast at the begining of a fight and refreash for the duration of draw out fight or chain pull.

Word of Reformationl (L100- CT 4s- RC 1.5s) Group Heal all within 100 for 11k cures 34 counters of Posion Disease Curse, Big Single Heal it can crit heal for 100k. Will cast when the Group is about 75 or less

AA Heals/Utilities

Burst of Life (AA Class Instant Cast- RC 3m) Single Target Heal AA useable while spells are in cooldown and MA/PC/Pet/Merc is low on HPs.

Beacon of Life (AA Class Instant Cast- RC 3m) Cleric's PBAE Heal AA useable while spells are in cooldown and will AE heal all friendly within range of 50.

Celestial Regeneration (AA Class Instant Cast- RC 15m) TGB and MGB Group Heal Over Time(HoT) AA , 1m Duration, useable while spells are in cooldown and MA/PC/Pet/Merc is low on HPs.

Focused Celestial Regeneration (AA Class Instant Cast- RC 15m) Single Target Hot AA useable while spells are in cooldown and MA/PC/Pet/Merc is low on HPs.

Exquisite Benediction (AA Class Instant Cast- RC 30m) Cleric's HoT Ward AA useable while spells are in cooldown and will AE heal all friendly within range of 50 of the Stationary Ward. Last about 2m. Great for HoT healing alot of Freindlies in one spot.

Quiet Miracle (AA Class Instant Cast- RC 10m) Grants health and mana to the Cleric or a Target, useable while spells are in cooldown. Use when mana level is 50 or lower or you need an InstaHeal. Rank 2 grants 30k mana and heal. Careful not to cast on a Mob or its wasted.

Veturika's Perseverance (AA Class Instant Cast- RC 10m) Grants health and mana to the Cleric useable while spells are in cooldown. Use when mana level is 75 or lower or you need an Insta Self Heal.

Vaulp (AA Class CT .5- RC 12s) Focuses your spiritual energy into a great battle cry, increasing your attack rating, proc chance, attack speed, and mana regeneration for 36 secs (6 ticks). The effects of this spell will fade if you sit down. Saves you a spell slot.

Blessing of Resurrection (AA Class CT 3s- RC 15s) Single Target 96 xp recovery Rez AA useable while spells are in cooldown and on PC corpse's Only.

Divine Arbitration (AA Class CT 2s- RC 3m) Group Health Balance AA useable while spells are in cooldown and MT/PC/Pet/Merc is low on HPs as an emergency.

More to Come just ran out ot time.
 
Last edited:
Re: FastHeal 2.91 - Updated 8/9/2013

Exactamundo

KissAssist is coded for group environment. I don't raid any more. It has been like 6 years since I was in a Raid Guild. I can't code for an environment I am not familiar with. Currently Kiss can watch a MAX of 8 toons to heal MA=1, Group 2-7, XTarget Slot=8

This is some excellent information though thank you for sharing.
 
Re: FastHeal 2.91 - Updated 8/9/2013

think you got these 2 mixed up :) Quiet Miracle can be cast on anyone I believe Veturika's Perseverance is self only.

- - - Updated - - -

I've been looking for a cleric macro that will use the Fraught Renewal lines before the normal heals they dont share timers and are better heals especially with the cures and faster cast time. I setup a KA 100 cleric ini for it but I don't like using it because KA won't interrupt if the person is over the heal % which waste mana.
 
Re: FastHeal 2.91 - Updated 8/9/2013

Man this is great info guys. I literally had no idea that a cleric should heal like this. I'm reworking my macro to use this logic. Also Extended target is working good. So in an optimal raid environment my macro should be able to heal up to 17 players no including splash. My idea for raid healing is using splash when the Average players HP % is below X amount on all players that are in the extended target. This assumes that you line up extended target for tanks / off tanks / rampage tanks.

- - - Updated - - -

I'm gonna look at kissassist for Buffing. Thats the one thing I'm missing from being a complete raid capable macro. My Buff subroutine... is just too simple and doesn't work well for other targets.
 
FastHeal 3.3 - Updated 4/6/2014

Users who are viewing this thread

Back
Top
Cart