Usage for this macro is as follows: /macro AEHeal <#>
Where # is the approximate # of people within 220 feet of you. Usually raid size minus 4 or 5 is what I notice. If you put in a number that is too large the macro will waste time trying to target up to the number you specified. There was a way to stealth check hp instead of actually targeting them but I found that for some reason it wasn't healing people who needed it and those who didn't need it (who had low hp at some point but had been healed already) were getting healed. So I reverted it back to actually targeting each player.
Now supports autointerupt if player is healed!! Save that Mana!! Thank you fantum409 for the tip!
One issue is if someone is using HOTT and targets your cleric they will see your target changing rapidly. Not nearly as fast as it actually is but definately faster than normal so be aware of this. I usually average about 80 - 90 checks per second, your game framerate seems to have a lot to do with how many checks you make per second. If there is a way to make this more efficient or faster please feel free to do it, all I ask is that you post it so we can all benifit.
One more thing, monks are left out intentionally because where I come from they are usually pulling and healing them can be disasterous.
AEHeal.mac
Code: Select all
| Version 1.4
| AE AutoHeal
| Usage /macro AEHeal <Number of players to check for>
| Example: /macro AEHeal 40
| Will check the closest 40 people to the cleric and heal them apropriately.
| Macro will automatically calculate and echo the number of players check per second, every cycle.
| Looking at the ground (Increasing frame rate) seems to increase number of targets per second drastically.
|
|Known Issues:
| Not healing Shadow Knights at this time.
|
#include spell_routines.inc
Sub Main
/echo AEHeal Macro Activated!
/declare PlayersTarg int outer
/declare Targets int outer
/declare Players int outer
/declare CasterList string outer
/declare TankList string outer
/varset Targets 1
/varset TankList |Warrior|Shadow Knight|Paladin|
/varset CasterList |Necromancer|Wizard|Enchanter|Magician|Rogue|Druid|Cleric|Bard|Shaman|Beastlord|Berserker|Ranger|
:verify
/if (!${Defined[Param0]}) {
/echo You must specify the number of players near you first!
/end
} else {
/varset PlayersTarg ${Param0}
/echo ${PlayersTarg} players will be targeted and healed. Every ${PlayersTarg} players targeted, targets per second will be calculated!
:start
/varset Players ${PlayersTarg}
/target ${Me}
/call ClassCheck
| /echo ${Targets}
/if (${Macro.RunTime}>0) {
/echo Players per second! ${Math.Calc[${Targets}/${Macro.RunTime}]}
}
:TargetCycle
/varcalc Players ${Players}-1
/target PC radius 240 Next
/call ClassCheck
/if (${Players}<1) {
/varcalc Targets ${Targets}+${PlayersTarg}
/goto :start
} else {
/goto :TargetCycle
}
/return
Sub ClassCheck
/if (${CasterList.Find[|${Target.Class}|]}) /call HealcheckCaster
/if (${TankList.Find[|${Target.Class}|]}) /call HealcheckTank
/return
Sub HealcheckCaster
/if (${Target.PctHPs}<79) {
/call Cast "Pious Remedy" spell 2s CheckHP
}
/return
Sub HealcheckTank
/if (${Target.PctHPs}<65 && ${Target.Distance}<120) {
/call Cast "Supernal Light" spell 2s CheckHP
}
/return
Sub CheckHP
/if ( ${Target.PctHPs}>=83 ) /call Interrupt
/return
